@manifest-editor/creators 2.2.2-next.0.a82700e → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/iiif-browser-form.lazy-5m6mTOpt.cjs +2 -0
- package/dist/iiif-browser-form.lazy-5m6mTOpt.cjs.map +1 -0
- package/dist/iiif-browser-form.lazy-B3L53hOy.js +2 -0
- package/dist/iiif-browser-form.lazy-B3L53hOy.js.map +1 -0
- package/dist/iiif-browser-output-BZhwClM1.cjs +2 -0
- package/dist/iiif-browser-output-BZhwClM1.cjs.map +1 -0
- package/dist/iiif-browser-output-Dgz2XDZo.js +2 -0
- package/dist/iiif-browser-output-Dgz2XDZo.js.map +1 -0
- package/dist/index.cjs +20 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +188 -7
- package/dist/index.d.cts +19 -27
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +20 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -20
- package/dist/index.js.map +1 -1
- package/package.json +15 -13
- package/dist/iiif-browser-form.lazy-Df2fAM6b.cjs +0 -2
- package/dist/iiif-browser-form.lazy-Df2fAM6b.cjs.map +0 -1
- package/dist/iiif-browser-form.lazy-DtTHoW1Q.js +0 -2
- package/dist/iiif-browser-form.lazy-DtTHoW1Q.js.map +0 -1
- package/dist/iiif-browser-output-DSDX-M6m.js +0 -2
- package/dist/iiif-browser-output-DSDX-M6m.js.map +0 -1
- package/dist/iiif-browser-output-IFaBMvwa.cjs +0 -2
- package/dist/iiif-browser-output-IFaBMvwa.cjs.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./iiif-browser-output-BZhwClM1.cjs");let t=require("@manifest-editor/i18n"),n=require("@manifest-editor/components"),r=require("react"),i=require("react/jsx-runtime"),a=require("@manifest-editor/shell");function o(o){let s=(0,t.useTranslations)(`creators`),{resolveMessage:c}=(0,t.useEditorI18n)(),l=(0,a.useNotebookBrowserPlugins)(),u=(0,r.useMemo)(()=>o.options.initialData||{},[o.options.initialData]),d=(0,a.usePreviewVault)(),{runCreate:f,options:{targetType:p}}=o,m=(0,a.useConfig)().notebook,h=(0,r.useRef)({t:s,resolveMessage:c,targetType:p,notebookConfig:m,reference:u.actionLabelMessage,runCreate:f});h.current={t:s,resolveMessage:c,targetType:p,notebookConfig:m,reference:u.actionLabelMessage,runCreate:f};let g=(0,r.useMemo)(()=>[{type:`callback`,get label(){let{t:e,resolveMessage:t,targetType:n,notebookConfig:r,reference:i}=h.current,a=n===`Canvas`?r?.canvasActionLabel??e(`browser.addToManifest`):e(`browser.select`);return t(i||(n===`Canvas`?r?.canvasActionLabelMessage:void 0),a)},supportedTypes:[`Canvas`,`CanvasList`,`CanvasRegion`,`ImageService`,`ImageServiceRegion`],cb:e=>h.current.runCreate({output:e}),format:{type:`custom`,format:e.r}}],[h]),_=(0,r.useMemo)(()=>({canCropImage:!0,canSelectCanvas:!0,canSelectManifest:!1,canSelectCollection:!1,multiSelect:!0,...u.iiifBrowserOptions?.navigation||{}}),[u]),v=(0,r.useMemo)(()=>({buttonClassName:`bg-me-primary-500 text-white hover:bg-me-primary-600`,homeLink:u.url||(typeof o.config?.defaultCollection==`string`?o.config.defaultCollection:void 0),...u.iiifBrowserOptions?.ui||{}}),[u,o.config]),y=(0,r.useMemo)(()=>{let e=u.iiifBrowserOptions?.history||{};return!u.url||e.initialHistory?.length?e:{...e,restoreFromLocalStorage:!1,saveToLocalStorage:!1,initialHistory:[{url:u.url,resource:null,route:u.url.startsWith(`iiif://`)?u.url.replace(`iiif://`,`/`):`/loading?id=${encodeURIComponent(u.url)}`}]}},[u]);return(0,i.jsx)(a.PreviewVaultBoundary,{children:(0,i.jsx)(n.LocalizedIIIFBrowser,{plugins:[...l,...u.iiifBrowserOptions?.plugins||[]],ui:v,vault:d,className:`iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full`,output:g,navigation:_,customPages:u.iiifBrowserOptions?.customPages||{},history:y})})}exports.default=o;
|
|
2
|
+
//# sourceMappingURL=iiif-browser-form.lazy-5m6mTOpt.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iiif-browser-form.lazy-5m6mTOpt.cjs","names":["useTranslations","useEditorI18n","useNotebookBrowserPlugins","useMemo","usePreviewVault","useConfig","useRef","formatIIIFBrowserOutput","PreviewVaultBoundary","LocalizedIIIFBrowser"],"sources":["../src/ContentResource/IIIFBrowserCreator/iiif-browser-form.lazy.tsx"],"sourcesContent":["import { LocalizedIIIFBrowser } from \"@manifest-editor/components\";\nimport { useEditorI18n, useTranslations, type MessageReference } from \"@manifest-editor/i18n\";\nimport { useConfig, useNotebookBrowserPlugins } from \"@manifest-editor/shell\";\nimport type { CreatorContext } from \"@manifest-editor/creator-api\";\nimport { PreviewVaultBoundary, usePreviewVault } from \"@manifest-editor/shell\";\nimport type { IIIFBrowserProps } from \"iiif-browser\";\nimport { useMemo, useRef } from \"react\";\nimport { formatIIIFBrowserOutput } from \"./iiif-browser-output\";\n\nexport interface IIIFBrowserCreatorInitialData {\n /** Optional UI message; legacy caller labels remain literal fallbacks. */\n actionLabelMessage?: MessageReference;\n url?: string;\n iiifBrowserOptions?: Partial<IIIFBrowserProps>;\n}\n\nexport default function IIIFBrowserCreatorForm(props: CreatorContext) {\n const t = useTranslations(\"creators\");\n const { resolveMessage } = useEditorI18n();\n const notebookPlugins = useNotebookBrowserPlugins();\n const initialData: IIIFBrowserCreatorInitialData = useMemo(() => {\n return props.options.initialData || {};\n }, [props.options.initialData]);\n\n const vault = usePreviewVault();\n const {\n runCreate,\n options: { targetType },\n } = props;\n const notebookConfig = useConfig().notebook;\n const live = useRef({\n t,\n resolveMessage,\n targetType,\n notebookConfig,\n reference: initialData.actionLabelMessage,\n runCreate,\n });\n live.current = {\n t,\n resolveMessage,\n targetType,\n notebookConfig,\n reference: initialData.actionLabelMessage,\n runCreate,\n };\n const output = useMemo(() => {\n return [\n {\n type: \"callback\",\n // Output descriptors live for the browser lifetime. Keep labels reactive without remounting.\n get label() {\n const { t, resolveMessage, targetType, notebookConfig, reference } = live.current;\n const fallback =\n targetType === \"Canvas\"\n ? (notebookConfig?.canvasActionLabel ?? t(\"browser.addToManifest\"))\n : t(\"browser.select\");\n return resolveMessage(\n reference || (targetType === \"Canvas\" ? notebookConfig?.canvasActionLabelMessage : undefined),\n fallback\n );\n },\n supportedTypes: [\"Canvas\", \"CanvasList\", \"CanvasRegion\", \"ImageService\", \"ImageServiceRegion\"],\n cb: (resource) => live.current.runCreate({ output: resource }),\n format: {\n type: \"custom\",\n format: formatIIIFBrowserOutput,\n },\n },\n ] as IIIFBrowserProps[\"output\"];\n }, [live]);\n\n const navigationOptions = useMemo(() => {\n return {\n canCropImage: true,\n canSelectCanvas: true,\n canSelectManifest: false,\n canSelectCollection: false,\n // @todo fix the output so this one works.\n multiSelect: true,\n ...(initialData.iiifBrowserOptions?.navigation || {}),\n } as IIIFBrowserProps[\"navigation\"];\n }, [initialData]);\n\n const uiOptions = useMemo(() => {\n return {\n buttonClassName: \"bg-me-primary-500 text-white hover:bg-me-primary-600\",\n homeLink:\n initialData.url ||\n (typeof props.config?.defaultCollection === \"string\" ? props.config.defaultCollection : undefined),\n ...(initialData.iiifBrowserOptions?.ui || {}),\n } as IIIFBrowserProps[\"ui\"];\n }, [initialData, props.config]);\n const historyOptions = useMemo(() => {\n const history = initialData.iiifBrowserOptions?.history || {};\n if (!initialData.url || history.initialHistory?.length) return history;\n return {\n ...history,\n restoreFromLocalStorage: false,\n saveToLocalStorage: false,\n initialHistory: [\n {\n url: initialData.url,\n resource: null,\n route: initialData.url.startsWith(\"iiif://\")\n ? initialData.url.replace(\"iiif://\", \"/\")\n : `/loading?id=${encodeURIComponent(initialData.url)}`,\n },\n ],\n } as IIIFBrowserProps[\"history\"];\n }, [initialData]);\n\n return (\n <PreviewVaultBoundary>\n <LocalizedIIIFBrowser\n plugins={[...notebookPlugins, ...(initialData.iiifBrowserOptions?.plugins || [])]}\n ui={uiOptions}\n vault={vault}\n className=\"iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full\"\n output={output}\n navigation={navigationOptions}\n customPages={initialData.iiifBrowserOptions?.customPages || {}}\n history={historyOptions}\n />\n </PreviewVaultBoundary>\n );\n}\n"],"mappings":"4NAgBA,SAAwB,EAAuB,EAAuB,CACpE,IAAM,GAAA,EAAIA,EAAAA,gBAAAA,CAAgB,UAAU,EAC9B,CAAE,mBAAA,EAAmBC,EAAAA,cAAAA,CAAc,EACnC,GAAA,EAAkBC,EAAAA,0BAAAA,CAA0B,EAC5C,GAAA,EAA6CC,EAAAA,QAAAA,KAC1C,EAAM,QAAQ,aAAe,CAAC,EACpC,CAAC,EAAM,QAAQ,WAAW,CAAC,EAExB,GAAA,EAAQC,EAAAA,gBAAAA,CAAgB,EACxB,CACJ,YACA,QAAS,CAAE,eACT,EACE,GAAA,EAAiBC,EAAAA,UAAAA,CAAU,CAAC,CAAC,SAC7B,GAAA,EAAOC,EAAAA,OAAAA,CAAO,CAClB,IACA,iBACA,aACA,iBACA,UAAW,EAAY,mBACvB,WACF,CAAC,EACD,EAAK,QAAU,CACb,IACA,iBACA,aACA,iBACA,UAAW,EAAY,mBACvB,WACF,EACA,IAAM,GAAA,EAASH,EAAAA,QAAAA,KACN,CACL,CACE,KAAM,WAEN,IAAI,OAAQ,CACV,GAAM,CAAE,IAAG,iBAAgB,aAAY,iBAAgB,aAAc,EAAK,QACpE,EACJ,IAAe,SACV,GAAgB,mBAAqB,EAAE,uBAAuB,EAC/D,EAAE,gBAAgB,EACxB,OAAO,EACL,IAAc,IAAe,SAAW,GAAgB,yBAA2B,IAAA,IACnF,CACF,CACF,EACA,eAAgB,CAAC,SAAU,aAAc,eAAgB,eAAgB,oBAAoB,EAC7F,GAAK,GAAa,EAAK,QAAQ,UAAU,CAAE,OAAQ,CAAS,CAAC,EAC7D,OAAQ,CACN,KAAM,SACN,OAAQI,EAAAA,CACV,CACF,CACF,EACC,CAAC,CAAI,CAAC,EAEH,GAAA,EAAoBJ,EAAAA,QAAAA,MACjB,CACL,aAAc,GACd,gBAAiB,GACjB,kBAAmB,GACnB,oBAAqB,GAErB,YAAa,GACb,GAAI,EAAY,oBAAoB,YAAc,CAAC,CACrD,GACC,CAAC,CAAW,CAAC,EAEV,GAAA,EAAYA,EAAAA,QAAAA,MACT,CACL,gBAAiB,uDACjB,SACE,EAAY,MACX,OAAO,EAAM,QAAQ,mBAAsB,SAAW,EAAM,OAAO,kBAAoB,IAAA,IAC1F,GAAI,EAAY,oBAAoB,IAAM,CAAC,CAC7C,GACC,CAAC,EAAa,EAAM,MAAM,CAAC,EACxB,GAAA,EAAiBA,EAAAA,QAAAA,KAAc,CACnC,IAAM,EAAU,EAAY,oBAAoB,SAAW,CAAC,EAE5D,MADI,CAAC,EAAY,KAAO,EAAQ,gBAAgB,OAAe,EACxD,CACL,GAAG,EACH,wBAAyB,GACzB,mBAAoB,GACpB,eAAgB,CACd,CACE,IAAK,EAAY,IACjB,SAAU,KACV,MAAO,EAAY,IAAI,WAAW,SAAS,EACvC,EAAY,IAAI,QAAQ,UAAW,GAAG,EACtC,eAAe,mBAAmB,EAAY,GAAG,GACvD,CACF,CACF,CACF,EAAG,CAAC,CAAW,CAAC,EAEhB,OACE,EAAA,EAAA,IAAA,CAACK,EAAAA,qBAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAACC,EAAAA,qBAAD,CACE,QAAS,CAAC,GAAG,EAAiB,GAAI,EAAY,oBAAoB,SAAW,CAAC,CAAE,EAChF,GAAI,EACG,QACP,UAAU,6FACF,SACR,WAAY,EACZ,YAAa,EAAY,oBAAoB,aAAe,CAAC,EAC7D,QAAS,CACV,CAAA,CACmB,CAAA,CAE1B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e}from"./iiif-browser-output-Dgz2XDZo.js";import{useEditorI18n as t,useTranslations as n}from"@manifest-editor/i18n";import{LocalizedIIIFBrowser as r}from"@manifest-editor/components";import{useMemo as i,useRef as a}from"react";import{jsx as o}from"react/jsx-runtime";import{PreviewVaultBoundary as s,useConfig as c,useNotebookBrowserPlugins as l,usePreviewVault as u}from"@manifest-editor/shell";function d(d){let f=n(`creators`),{resolveMessage:p}=t(),m=l(),h=i(()=>d.options.initialData||{},[d.options.initialData]),g=u(),{runCreate:_,options:{targetType:v}}=d,y=c().notebook,b=a({t:f,resolveMessage:p,targetType:v,notebookConfig:y,reference:h.actionLabelMessage,runCreate:_});b.current={t:f,resolveMessage:p,targetType:v,notebookConfig:y,reference:h.actionLabelMessage,runCreate:_};let x=i(()=>[{type:`callback`,get label(){let{t:e,resolveMessage:t,targetType:n,notebookConfig:r,reference:i}=b.current,a=n===`Canvas`?r?.canvasActionLabel??e(`browser.addToManifest`):e(`browser.select`);return t(i||(n===`Canvas`?r?.canvasActionLabelMessage:void 0),a)},supportedTypes:[`Canvas`,`CanvasList`,`CanvasRegion`,`ImageService`,`ImageServiceRegion`],cb:e=>b.current.runCreate({output:e}),format:{type:`custom`,format:e}}],[b]),S=i(()=>({canCropImage:!0,canSelectCanvas:!0,canSelectManifest:!1,canSelectCollection:!1,multiSelect:!0,...h.iiifBrowserOptions?.navigation||{}}),[h]),C=i(()=>({buttonClassName:`bg-me-primary-500 text-white hover:bg-me-primary-600`,homeLink:h.url||(typeof d.config?.defaultCollection==`string`?d.config.defaultCollection:void 0),...h.iiifBrowserOptions?.ui||{}}),[h,d.config]),w=i(()=>{let e=h.iiifBrowserOptions?.history||{};return!h.url||e.initialHistory?.length?e:{...e,restoreFromLocalStorage:!1,saveToLocalStorage:!1,initialHistory:[{url:h.url,resource:null,route:h.url.startsWith(`iiif://`)?h.url.replace(`iiif://`,`/`):`/loading?id=${encodeURIComponent(h.url)}`}]}},[h]);return o(s,{children:o(r,{plugins:[...m,...h.iiifBrowserOptions?.plugins||[]],ui:C,vault:g,className:`iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full`,output:x,navigation:S,customPages:h.iiifBrowserOptions?.customPages||{},history:w})})}export{d as default};
|
|
2
|
+
//# sourceMappingURL=iiif-browser-form.lazy-B3L53hOy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iiif-browser-form.lazy-B3L53hOy.js","names":[],"sources":["../src/ContentResource/IIIFBrowserCreator/iiif-browser-form.lazy.tsx"],"sourcesContent":["import { LocalizedIIIFBrowser } from \"@manifest-editor/components\";\nimport { useEditorI18n, useTranslations, type MessageReference } from \"@manifest-editor/i18n\";\nimport { useConfig, useNotebookBrowserPlugins } from \"@manifest-editor/shell\";\nimport type { CreatorContext } from \"@manifest-editor/creator-api\";\nimport { PreviewVaultBoundary, usePreviewVault } from \"@manifest-editor/shell\";\nimport type { IIIFBrowserProps } from \"iiif-browser\";\nimport { useMemo, useRef } from \"react\";\nimport { formatIIIFBrowserOutput } from \"./iiif-browser-output\";\n\nexport interface IIIFBrowserCreatorInitialData {\n /** Optional UI message; legacy caller labels remain literal fallbacks. */\n actionLabelMessage?: MessageReference;\n url?: string;\n iiifBrowserOptions?: Partial<IIIFBrowserProps>;\n}\n\nexport default function IIIFBrowserCreatorForm(props: CreatorContext) {\n const t = useTranslations(\"creators\");\n const { resolveMessage } = useEditorI18n();\n const notebookPlugins = useNotebookBrowserPlugins();\n const initialData: IIIFBrowserCreatorInitialData = useMemo(() => {\n return props.options.initialData || {};\n }, [props.options.initialData]);\n\n const vault = usePreviewVault();\n const {\n runCreate,\n options: { targetType },\n } = props;\n const notebookConfig = useConfig().notebook;\n const live = useRef({\n t,\n resolveMessage,\n targetType,\n notebookConfig,\n reference: initialData.actionLabelMessage,\n runCreate,\n });\n live.current = {\n t,\n resolveMessage,\n targetType,\n notebookConfig,\n reference: initialData.actionLabelMessage,\n runCreate,\n };\n const output = useMemo(() => {\n return [\n {\n type: \"callback\",\n // Output descriptors live for the browser lifetime. Keep labels reactive without remounting.\n get label() {\n const { t, resolveMessage, targetType, notebookConfig, reference } = live.current;\n const fallback =\n targetType === \"Canvas\"\n ? (notebookConfig?.canvasActionLabel ?? t(\"browser.addToManifest\"))\n : t(\"browser.select\");\n return resolveMessage(\n reference || (targetType === \"Canvas\" ? notebookConfig?.canvasActionLabelMessage : undefined),\n fallback\n );\n },\n supportedTypes: [\"Canvas\", \"CanvasList\", \"CanvasRegion\", \"ImageService\", \"ImageServiceRegion\"],\n cb: (resource) => live.current.runCreate({ output: resource }),\n format: {\n type: \"custom\",\n format: formatIIIFBrowserOutput,\n },\n },\n ] as IIIFBrowserProps[\"output\"];\n }, [live]);\n\n const navigationOptions = useMemo(() => {\n return {\n canCropImage: true,\n canSelectCanvas: true,\n canSelectManifest: false,\n canSelectCollection: false,\n // @todo fix the output so this one works.\n multiSelect: true,\n ...(initialData.iiifBrowserOptions?.navigation || {}),\n } as IIIFBrowserProps[\"navigation\"];\n }, [initialData]);\n\n const uiOptions = useMemo(() => {\n return {\n buttonClassName: \"bg-me-primary-500 text-white hover:bg-me-primary-600\",\n homeLink:\n initialData.url ||\n (typeof props.config?.defaultCollection === \"string\" ? props.config.defaultCollection : undefined),\n ...(initialData.iiifBrowserOptions?.ui || {}),\n } as IIIFBrowserProps[\"ui\"];\n }, [initialData, props.config]);\n const historyOptions = useMemo(() => {\n const history = initialData.iiifBrowserOptions?.history || {};\n if (!initialData.url || history.initialHistory?.length) return history;\n return {\n ...history,\n restoreFromLocalStorage: false,\n saveToLocalStorage: false,\n initialHistory: [\n {\n url: initialData.url,\n resource: null,\n route: initialData.url.startsWith(\"iiif://\")\n ? initialData.url.replace(\"iiif://\", \"/\")\n : `/loading?id=${encodeURIComponent(initialData.url)}`,\n },\n ],\n } as IIIFBrowserProps[\"history\"];\n }, [initialData]);\n\n return (\n <PreviewVaultBoundary>\n <LocalizedIIIFBrowser\n plugins={[...notebookPlugins, ...(initialData.iiifBrowserOptions?.plugins || [])]}\n ui={uiOptions}\n vault={vault}\n className=\"iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full\"\n output={output}\n navigation={navigationOptions}\n customPages={initialData.iiifBrowserOptions?.customPages || {}}\n history={historyOptions}\n />\n </PreviewVaultBoundary>\n );\n}\n"],"mappings":"yZAgBA,SAAwB,EAAuB,EAAuB,CACpE,IAAM,EAAI,EAAgB,UAAU,EAC9B,CAAE,kBAAmB,EAAc,EACnC,EAAkB,EAA0B,EAC5C,EAA6C,MAC1C,EAAM,QAAQ,aAAe,CAAC,EACpC,CAAC,EAAM,QAAQ,WAAW,CAAC,EAExB,EAAQ,EAAgB,EACxB,CACJ,YACA,QAAS,CAAE,eACT,EACE,EAAiB,EAAU,CAAC,CAAC,SAC7B,EAAO,EAAO,CAClB,IACA,iBACA,aACA,iBACA,UAAW,EAAY,mBACvB,WACF,CAAC,EACD,EAAK,QAAU,CACb,IACA,iBACA,aACA,iBACA,UAAW,EAAY,mBACvB,WACF,EACA,IAAM,EAAS,MACN,CACL,CACE,KAAM,WAEN,IAAI,OAAQ,CACV,GAAM,CAAE,IAAG,iBAAgB,aAAY,iBAAgB,aAAc,EAAK,QACpE,EACJ,IAAe,SACV,GAAgB,mBAAqB,EAAE,uBAAuB,EAC/D,EAAE,gBAAgB,EACxB,OAAO,EACL,IAAc,IAAe,SAAW,GAAgB,yBAA2B,IAAA,IACnF,CACF,CACF,EACA,eAAgB,CAAC,SAAU,aAAc,eAAgB,eAAgB,oBAAoB,EAC7F,GAAK,GAAa,EAAK,QAAQ,UAAU,CAAE,OAAQ,CAAS,CAAC,EAC7D,OAAQ,CACN,KAAM,SACN,OAAQ,CACV,CACF,CACF,EACC,CAAC,CAAI,CAAC,EAEH,EAAoB,OACjB,CACL,aAAc,GACd,gBAAiB,GACjB,kBAAmB,GACnB,oBAAqB,GAErB,YAAa,GACb,GAAI,EAAY,oBAAoB,YAAc,CAAC,CACrD,GACC,CAAC,CAAW,CAAC,EAEV,EAAY,OACT,CACL,gBAAiB,uDACjB,SACE,EAAY,MACX,OAAO,EAAM,QAAQ,mBAAsB,SAAW,EAAM,OAAO,kBAAoB,IAAA,IAC1F,GAAI,EAAY,oBAAoB,IAAM,CAAC,CAC7C,GACC,CAAC,EAAa,EAAM,MAAM,CAAC,EACxB,EAAiB,MAAc,CACnC,IAAM,EAAU,EAAY,oBAAoB,SAAW,CAAC,EAE5D,MADI,CAAC,EAAY,KAAO,EAAQ,gBAAgB,OAAe,EACxD,CACL,GAAG,EACH,wBAAyB,GACzB,mBAAoB,GACpB,eAAgB,CACd,CACE,IAAK,EAAY,IACjB,SAAU,KACV,MAAO,EAAY,IAAI,WAAW,SAAS,EACvC,EAAY,IAAI,QAAQ,UAAW,GAAG,EACtC,eAAe,mBAAmB,EAAY,GAAG,GACvD,CACF,CACF,CACF,EAAG,CAAC,CAAW,CAAC,EAEhB,OACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CACE,QAAS,CAAC,GAAG,EAAiB,GAAI,EAAY,oBAAoB,SAAW,CAAC,CAAE,EAChF,GAAI,EACG,QACP,UAAU,6FACF,SACR,WAAY,EACZ,YAAa,EAAY,oBAAoB,aAAe,CAAC,EAC7D,QAAS,CACV,CAAA,CACmB,CAAA,CAE1B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e,t,n){return(Array.isArray(e)?e:[{...e,parent:e.parent??t??void 0}]).map(e=>({resource:n.get(e.id)??e,parent:e.parent,selector:e.selector,rotation:e.rotation}))}function t(e,t){let n=e?.type===`BoxSelector`?[~~e.spatial.x,~~e.spatial.y,~~e.spatial.width,~~e.spatial.height].join(`,`):void 0;if(!(!n&&!t))return{type:`ImageApiSelector`,...n?{region:n}:{},...t?{rotation:`${t}`}:{}}}function n(e,t){let n=Number.isFinite(t)?(t%360+360)%360:0;return n===90||n===270?{width:e.height,height:e.width}:e}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return t}});
|
|
2
|
+
//# sourceMappingURL=iiif-browser-output-BZhwClM1.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iiif-browser-output-BZhwClM1.cjs","names":[],"sources":["../src/ContentResource/IIIFBrowserCreator/iiif-browser-output.ts"],"sourcesContent":["import type { BoxSelector } from \"@iiif/helpers\";\nimport type { IIIFBrowserProps } from \"iiif-browser\";\n\ntype IIIFBrowserCustomFormat = Extract<NonNullable<IIIFBrowserProps[\"output\"]>[number][\"format\"], { type: \"custom\" }>;\n\nexport type IIIFBrowserSelectedItem = Parameters<IIIFBrowserCustomFormat[\"format\"]>[0];\n\nexport interface IIIFBrowserOutputItem {\n resource: any;\n parent: IIIFBrowserSelectedItem[\"parent\"];\n selector: IIIFBrowserSelectedItem[\"selector\"];\n rotation: IIIFBrowserSelectedItem[\"rotation\"];\n}\n\nexport function formatIIIFBrowserOutput(\n resource: IIIFBrowserSelectedItem | IIIFBrowserSelectedItem[],\n parent: IIIFBrowserSelectedItem | null,\n vault: Parameters<IIIFBrowserCustomFormat[\"format\"]>[2]\n): IIIFBrowserOutputItem[] {\n const selectedItems = Array.isArray(resource)\n ? resource\n : [{ ...resource, parent: resource.parent ?? parent ?? undefined }];\n\n return selectedItems.map((item) => ({\n resource: vault.get(item.id) ?? item,\n parent: item.parent,\n selector: item.selector,\n rotation: item.rotation,\n }));\n}\n\nexport function browserImageApiSelector(selector: BoxSelector | undefined, rotation: number | undefined) {\n const region =\n selector?.type === \"BoxSelector\"\n ? [~~selector.spatial.x, ~~selector.spatial.y, ~~selector.spatial.width, ~~selector.spatial.height].join(\",\")\n : undefined;\n\n if (!region && !rotation) return undefined;\n\n return {\n type: \"ImageApiSelector\" as const,\n ...(region ? { region } : {}),\n ...(rotation ? { rotation: `${rotation}` } : {}),\n };\n}\n\nexport function browserTransformDimensions(\n dimensions: { width: number; height: number },\n rotation: number | undefined\n) {\n const angle = Number.isFinite(rotation) ? (((rotation as number) % 360) + 360) % 360 : 0;\n return angle === 90 || angle === 270 ? { width: dimensions.height, height: dimensions.width } : dimensions;\n}\n"],"mappings":"AAcA,SAAgB,EACd,EACA,EACA,EACyB,CAKzB,OAJsB,MAAM,QAAQ,CAAQ,EACxC,EACA,CAAC,CAAE,GAAG,EAAU,OAAQ,EAAS,QAAU,GAAU,IAAA,EAAU,CAAC,EAAA,CAE/C,IAAK,IAAU,CAClC,SAAU,EAAM,IAAI,EAAK,EAAE,GAAK,EAChC,OAAQ,EAAK,OACb,SAAU,EAAK,SACf,SAAU,EAAK,QACjB,EAAE,CACJ,CAEA,SAAgB,EAAwB,EAAmC,EAA8B,CACvG,IAAM,EACJ,GAAU,OAAS,cACf,CAAC,CAAC,CAAC,EAAS,QAAQ,EAAG,CAAC,CAAC,EAAS,QAAQ,EAAG,CAAC,CAAC,EAAS,QAAQ,MAAO,CAAC,CAAC,EAAS,QAAQ,MAAM,CAAC,CAAC,KAAK,GAAG,EAC1G,IAAA,GAEF,MAAC,GAAU,CAAC,GAEhB,MAAO,CACL,KAAM,mBACN,GAAI,EAAS,CAAE,QAAO,EAAI,CAAC,EAC3B,GAAI,EAAW,CAAE,SAAU,GAAG,GAAW,EAAI,CAAC,CAChD,CACF,CAEA,SAAgB,EACd,EACA,EACA,CACA,IAAM,EAAQ,OAAO,SAAS,CAAQ,GAAO,EAAsB,IAAO,KAAO,IAAM,EACvF,OAAO,IAAU,IAAM,IAAU,IAAM,CAAE,MAAO,EAAW,OAAQ,OAAQ,EAAW,KAAM,EAAI,CAClG"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e,t,n){return(Array.isArray(e)?e:[{...e,parent:e.parent??t??void 0}]).map(e=>({resource:n.get(e.id)??e,parent:e.parent,selector:e.selector,rotation:e.rotation}))}function t(e,t){let n=e?.type===`BoxSelector`?[~~e.spatial.x,~~e.spatial.y,~~e.spatial.width,~~e.spatial.height].join(`,`):void 0;if(!(!n&&!t))return{type:`ImageApiSelector`,...n?{region:n}:{},...t?{rotation:`${t}`}:{}}}function n(e,t){let n=Number.isFinite(t)?(t%360+360)%360:0;return n===90||n===270?{width:e.height,height:e.width}:e}export{n,e as r,t};
|
|
2
|
+
//# sourceMappingURL=iiif-browser-output-Dgz2XDZo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iiif-browser-output-Dgz2XDZo.js","names":[],"sources":["../src/ContentResource/IIIFBrowserCreator/iiif-browser-output.ts"],"sourcesContent":["import type { BoxSelector } from \"@iiif/helpers\";\nimport type { IIIFBrowserProps } from \"iiif-browser\";\n\ntype IIIFBrowserCustomFormat = Extract<NonNullable<IIIFBrowserProps[\"output\"]>[number][\"format\"], { type: \"custom\" }>;\n\nexport type IIIFBrowserSelectedItem = Parameters<IIIFBrowserCustomFormat[\"format\"]>[0];\n\nexport interface IIIFBrowserOutputItem {\n resource: any;\n parent: IIIFBrowserSelectedItem[\"parent\"];\n selector: IIIFBrowserSelectedItem[\"selector\"];\n rotation: IIIFBrowserSelectedItem[\"rotation\"];\n}\n\nexport function formatIIIFBrowserOutput(\n resource: IIIFBrowserSelectedItem | IIIFBrowserSelectedItem[],\n parent: IIIFBrowserSelectedItem | null,\n vault: Parameters<IIIFBrowserCustomFormat[\"format\"]>[2]\n): IIIFBrowserOutputItem[] {\n const selectedItems = Array.isArray(resource)\n ? resource\n : [{ ...resource, parent: resource.parent ?? parent ?? undefined }];\n\n return selectedItems.map((item) => ({\n resource: vault.get(item.id) ?? item,\n parent: item.parent,\n selector: item.selector,\n rotation: item.rotation,\n }));\n}\n\nexport function browserImageApiSelector(selector: BoxSelector | undefined, rotation: number | undefined) {\n const region =\n selector?.type === \"BoxSelector\"\n ? [~~selector.spatial.x, ~~selector.spatial.y, ~~selector.spatial.width, ~~selector.spatial.height].join(\",\")\n : undefined;\n\n if (!region && !rotation) return undefined;\n\n return {\n type: \"ImageApiSelector\" as const,\n ...(region ? { region } : {}),\n ...(rotation ? { rotation: `${rotation}` } : {}),\n };\n}\n\nexport function browserTransformDimensions(\n dimensions: { width: number; height: number },\n rotation: number | undefined\n) {\n const angle = Number.isFinite(rotation) ? (((rotation as number) % 360) + 360) % 360 : 0;\n return angle === 90 || angle === 270 ? { width: dimensions.height, height: dimensions.width } : dimensions;\n}\n"],"mappings":"AAcA,SAAgB,EACd,EACA,EACA,EACyB,CAKzB,OAJsB,MAAM,QAAQ,CAAQ,EACxC,EACA,CAAC,CAAE,GAAG,EAAU,OAAQ,EAAS,QAAU,GAAU,IAAA,EAAU,CAAC,EAAA,CAE/C,IAAK,IAAU,CAClC,SAAU,EAAM,IAAI,EAAK,EAAE,GAAK,EAChC,OAAQ,EAAK,OACb,SAAU,EAAK,SACf,SAAU,EAAK,QACjB,EAAE,CACJ,CAEA,SAAgB,EAAwB,EAAmC,EAA8B,CACvG,IAAM,EACJ,GAAU,OAAS,cACf,CAAC,CAAC,CAAC,EAAS,QAAQ,EAAG,CAAC,CAAC,EAAS,QAAQ,EAAG,CAAC,CAAC,EAAS,QAAQ,MAAO,CAAC,CAAC,EAAS,QAAQ,MAAM,CAAC,CAAC,KAAK,GAAG,EAC1G,IAAA,GAEF,MAAC,GAAU,CAAC,GAEhB,MAAO,CACL,KAAM,mBACN,GAAI,EAAS,CAAE,QAAO,EAAI,CAAC,EAC3B,GAAI,EAAW,CAAE,SAAU,GAAG,GAAW,EAAI,CAAC,CAChD,CACF,CAEA,SAAgB,EACd,EACA,EACA,CACA,IAAM,EAAQ,OAAO,SAAS,CAAQ,GAAO,EAAsB,IAAO,KAAO,IAAM,EACvF,OAAO,IAAU,IAAM,IAAU,IAAM,CAAE,MAAO,EAAW,OAAQ,OAAQ,EAAW,KAAM,EAAI,CAClG"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));const l=require("./iiif-browser-output-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));const l=require("./iiif-browser-output-BZhwClM1.cjs");let u=require("@manifest-editor/creator-api"),d=require("@manifest-editor/i18n"),f=require("@iiif/helpers"),p=require("@manifest-editor/components"),m=require("@manifest-editor/editors"),h=require("react");h=c(h,1);let g=require("react/jsx-runtime"),_=require("iiif-browser/digital-collections"),v=require("react-iiif-vault"),y=require("styled-components");y=c(y,1);let b=require("@iiif/parser/image-3"),ee=require("react-error-boundary"),x=require("@manifest-editor/shell"),S=require("@manifest-editor/editor-api");async function C(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:(0,f.getValue)(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 te(e){let t=(0,d.useTranslations)(`editor-api`),n=(0,d.useTranslations)(`creators`),r=e.options.initialData,[i,a]=(0,h.useState)(r.url||``),[o,s]=(0,h.useState)(r.label||{en:[``]}),[c,l]=(0,h.useState)(r.homepage||``),[u,f]=(0,h.useState)(r.logo||``),[_,v]=(0,h.useState)(r.homepageLabel||{en:[``]});return(0,g.jsx)(p.PaddedSidebarContainer,{children:(0,g.jsxs)(`div`,{className:`max-w-xl`,children:[(0,g.jsx)(m.LanguageFieldEditor,{containerId:`label`,focusId:`label_`,label:t(`fields.label`),fields:o,onSave:e=>s(e.toInternationalString())}),(0,g.jsxs)(m.InputContainer,{$fluid:!0,children:[(0,g.jsx)(m.InputLabel,{htmlFor:`provider-logo`,children:t(`fields.logo`)}),(0,g.jsx)(m.Input,{placeholder:`https://example.org/logo.png`,type:`text`,id:`provider-logo`,value:u,onChange:e=>f(e.target.value)})]}),(0,g.jsxs)(m.InputContainer,{$fluid:!0,children:[(0,g.jsx)(m.InputLabel,{htmlFor:`provider-homepage`,children:t(`fields.homepage`)}),(0,g.jsx)(m.Input,{placeholder:`https://example.org/homepage`,type:`text`,id:`provider-homepage`,value:c,onChange:e=>l(e.target.value)})]}),c?(0,g.jsx)(`div`,{children:(0,g.jsx)(m.LanguageFieldEditor,{containerId:`homepageLabel`,focusId:`homepageLabel_`,label:n(`form.homepageLabel`),fields:_,onSave:e=>v(e.toInternationalString())})}):null,(0,g.jsxs)(m.InputContainer,{$fluid:!0,children:[(0,g.jsx)(m.InputLabel,{$margin:!1,htmlFor:`provider-url`,children:n(`form.providerId`)}),(0,g.jsx)(`span`,{className:`text-gray-500 text-sm mb-2`,children:n(`form.providerIdHelp`)}),(0,g.jsx)(m.Input,{placeholder:`https://id.loc.gov/authorities/abc123`,type:`text`,id:`provider-url`,value:i,onChange:e=>a(e.target.value)})]}),(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:i,label:o,homepage:c,homepageLabel:_,logo:u})},children:n(`form.addProvider`)})]})})}const ne=(0,u.defineCreator)({id:`@manifest-editor/provider`,label:`Provider`,labelMessage:{namespace:`editor-api`,key:`fields.provider`},icon:(0,g.jsx)(`svg`,{width:`1em`,height:`1em`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,children:(0,g.jsx)(`path`,{d:`m3 9 9-6 9 6H3ZM3 21h18M5 10v8m5-8v8m4-8v8m5-8v8`})}),summary:`Add the organisation responsible for providing this resource.`,summaryMessage:{namespace:`creators`,key:`definitions.provider.summary`},resourceType:`Agent`,resourceFields:[`id`,`type`,`label`],supports:{parentTypes:[`Manifest`,`Collection`],parentFields:[`provider`],initialData:!0},create:C,render(e){return(0,g.jsx)(te,{...e})}});function w(e){try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`}catch{return!1}}async function T(e,t){if(!w(e))return null;try{return await t.json(e)}catch{return null}}function E(e){let t=e?.type||e?.[`@type`];return t===`sc:Manifest`?`Manifest`:t===`sc:Collection`?`Collection`:t}function re(e){let t=E(e);return e?.protocol===`http://iiif.io/api/image`||t===`ImageService`||typeof t==`string`&&t.startsWith(`ImageService`)}async function ie(e){return w(e)&&await(0,_.isSupportedDigitalCollectionPage)(e)}async function D(e,t){try{return await t.contentType(e)}catch{return``}}function O(e,t){let n=new URL(e).pathname.toLowerCase();return t.some(e=>n.endsWith(e))}const ae=e=>(0,g.jsxs)(`svg`,{...e,viewBox:`4 4 16 16`,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,children:[e.title?(0,g.jsx)(`title`,{children:e.title}):null,(0,g.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,g.jsx)(`path`,{d:`M8 5v14l11-7z`,fill:`currentColor`})]}),oe=e=>(0,g.jsxs)(`svg`,{...e,viewBox:`4 4 16 16`,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,children:[e.title?(0,g.jsx)(`title`,{children:e.title}):null,(0,g.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,g.jsx)(`path`,{fill:`currentColor`,d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`})]}),se=({title:e,...t})=>(0,g.jsxs)(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?(0,g.jsx)(`title`,{children:e}):null,(0,g.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,g.jsx)(`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`})]}),ce=({title:e,...t})=>(0,g.jsxs)(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?(0,g.jsx)(`title`,{children:e}):null,(0,g.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,g.jsx)(`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`})]}),le=({title:e,...t})=>(0,g.jsxs)(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?(0,g.jsx)(`title`,{children:e}):null,(0,g.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,g.jsx)(`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`})]}),ue=y.default.div`
|
|
2
2
|
background: #ededed; // Not in variable.
|
|
3
3
|
display: flex;
|
|
4
4
|
padding: 0.5em;
|
|
5
5
|
align-items: center;
|
|
6
|
-
`,
|
|
6
|
+
`,de=y.default.button`
|
|
7
7
|
cursor: pointer;
|
|
8
8
|
padding: 0.75em 1.5em;
|
|
9
9
|
font-size: 0.938em;
|
|
@@ -14,7 +14,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
|
|
|
14
14
|
display: inline-block;
|
|
15
15
|
vertical-align: top;
|
|
16
16
|
white-space: nowrap;
|
|
17
|
-
`,
|
|
17
|
+
`,fe=(0,y.default)(de)`
|
|
18
18
|
width: 2em;
|
|
19
19
|
height: 2em;
|
|
20
20
|
overflow: hidden;
|
|
@@ -28,17 +28,17 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
|
|
|
28
28
|
&:disabled {
|
|
29
29
|
color: #999;
|
|
30
30
|
}
|
|
31
|
-
`,
|
|
31
|
+
`,pe=y.default.div`
|
|
32
32
|
margin: 0 1em;
|
|
33
33
|
font-size: 0.85em;
|
|
34
34
|
color: #000;
|
|
35
|
-
`,
|
|
35
|
+
`,me=y.default.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
|
-
`,
|
|
41
|
+
`,he=y.default.div`
|
|
42
42
|
background: #d85680;
|
|
43
43
|
height: 6px;
|
|
44
44
|
pointer-events: none;
|
|
@@ -47,7 +47,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
|
|
|
47
47
|
left: 0;
|
|
48
48
|
border-radius: 3px;
|
|
49
49
|
transition: width 200ms;
|
|
50
|
-
`,
|
|
50
|
+
`,ge=y.default.div`
|
|
51
51
|
position: absolute;
|
|
52
52
|
top: 13px;
|
|
53
53
|
left: 0;
|
|
@@ -56,7 +56,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
|
|
|
56
56
|
width: 100%;
|
|
57
57
|
pointer-events: none;
|
|
58
58
|
background: #fff;
|
|
59
|
-
`,
|
|
59
|
+
`,_e=(0,y.default)(de)`
|
|
60
60
|
width: 2em;
|
|
61
61
|
height: 2em;
|
|
62
62
|
overflow: hidden;
|
|
@@ -65,22 +65,22 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
|
|
|
65
65
|
border-radius: 3px;
|
|
66
66
|
padding: 0;
|
|
67
67
|
margin: 0;
|
|
68
|
-
`,
|
|
68
|
+
`,ve=y.default.div`
|
|
69
69
|
display: flex;
|
|
70
70
|
align-items: center;
|
|
71
|
-
`,
|
|
71
|
+
`,ye=y.default.div`
|
|
72
72
|
width: 0;
|
|
73
73
|
overflow: hidden;
|
|
74
74
|
transition: width 500ms;
|
|
75
75
|
color: #4a473f; // Not in colours
|
|
76
76
|
|
|
77
|
-
${e=>e.$isOpen&&
|
|
77
|
+
${e=>e.$isOpen&&y.css`
|
|
78
78
|
width: 150px;
|
|
79
79
|
`}
|
|
80
|
-
`,
|
|
80
|
+
`,be=y.default.input.attrs({type:`range`})`
|
|
81
81
|
width: 120px;
|
|
82
82
|
margin: 0 15px;
|
|
83
|
-
`;function
|
|
83
|
+
`;function xe(e){return(0,g.jsx)(`svg`,{width:`1em`,height:`1em`,viewBox:`0 0 42 42`,xmlns:`http://www.w3.org/2000/svg`,stroke:`currentColor`,...e,children:(0,g.jsxs)(`g`,{transform:`translate(2 2)`,strokeWidth:5,fill:`none`,fillRule:`evenodd`,children:[(0,g.jsx)(`circle`,{strokeOpacity:.5,cx:18,cy:18,r:18}),(0,g.jsx)(`path`,{d:`M36 18c0-9.94-8.06-18-18-18`,children:(0,g.jsx)(`animateTransform`,{attributeName:`transform`,type:`rotate`,from:`0 18 18`,to:`360 18 18`,dur:`1s`,repeatCount:`indefinite`})})]})})}const Se=y.css`
|
|
84
84
|
clip: rect(1px, 1px, 1px, 1px);
|
|
85
85
|
clip-path: inset(50%);
|
|
86
86
|
height: 1px;
|
|
@@ -89,11 +89,11 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
|
|
|
89
89
|
overflow: hidden;
|
|
90
90
|
padding: 0;
|
|
91
91
|
position: absolute;
|
|
92
|
-
`,
|
|
93
|
-
${
|
|
94
|
-
`;function Ee(e){let[t,n]=(0,m.useState)(!1),{progress:r,currentTime:i,element:a}=(0,_.useMediaElements)(),{duration:o,isMuted:s,volume:c,isPlaying:l,playRequested:u}=(0,_.useMediaState)(),{setVolume:d,toggleMute:f,play:p,pause:g,setDurationPercent:v}=(0,_.useMediaActions)(),y=s||c===0?de:c>50?le:ue;return(0,m.useLayoutEffect)(()=>{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)}}},[]),(0,h.jsxs)(fe,{children:[(0,h.jsx)(me,{disabled:u,onClick:()=>{l?g():p()},children:u?(0,h.jsx)(Ce,{stroke:`#999`}):l?(0,h.jsx)(ce,{title:`Pause`}):(0,h.jsx)(se,{title:`Play`})}),(0,h.jsx)(he,{ref:i,children:`0:00`}),(0,h.jsxs)(ge,{onClick:e=>{let{left:t,width:n}=e.currentTarget.getBoundingClientRect(),r=(e.pageX-t)/n;v(r)},children:[(0,h.jsx)(ve,{}),o?(0,h.jsx)(_e,{ref:r}):null]}),(0,h.jsx)(he,{children:(0,_.formatTime)(o)}),(0,h.jsxs)(be,{onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:[(0,h.jsx)(xe,{$isOpen:t,children:(0,h.jsxs)(`span`,{children:[(0,h.jsx)(Te,{htmlFor:`audio-slider`,children:`Change volume`}),(0,h.jsx)(Se,{id:`audio-slider`,role:`slider`,disabled:s,min:`0`,max:`100`,value:c,onChange:e=>d(Number(e.currentTarget.value))})]})}),(0,h.jsx)(ye,{onClick:()=>f(),children:(0,h.jsx)(y,{title:s?`Mute`:`Unmute`})})]})]})}async function D(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:(0,d.getValue)(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 O(e){let[t]=(0,m.useState)(()=>e.options.initialData),[n,r]=(0,m.useState)(t.url||``),[i,a]=(0,m.useState)(t.duration||0),[o,s]=(0,m.useState)(``),[c,l]=(0,m.useState)(t.label||{en:[``]});return(0,m.useEffect)(()=>{if(s(``),a(n===t.url&&t.duration||0),n){let e=n.split(`/`).pop()?.split(`.`).shift();l(n===t.url&&t.label?t.label:{en:[e||``]})}},[n,t]),(0,h.jsxs)(f.PaddedSidebarContainer,{children:[o?(0,h.jsx)(f.ErrorMessage,{children:o}):null,(0,h.jsxs)(p.InputContainer,{$wide:!0,children:[(0,h.jsx)(p.InputLabel,{htmlFor:`audio-url`,children:`URL`}),(0,h.jsx)(p.Input,{type:`text`,id:`audio-url`,value:n,onChange:e=>r(e.target.value)})]}),n&&!o?(0,h.jsx)(`div`,{children:(0,h.jsx)(p.LanguageFieldEditor,{containerId:`label`,focusId:`label_`,label:`Label`,fields:c,onSave:e=>l(e.toInternationalString())},`${n}__${i}`)}):null,n&&!o?(0,h.jsx)(_.CanvasPanel.AudioHTML,{media:{url:n,duration:i,type:`Sound`},children:(0,h.jsx)(Ee,{onError:e=>s(e),onDuration:e=>a(~~e)},`${n}__${i}`)},`${n}__${i}`):null,i&&!o?(0,h.jsxs)(p.FormFieldWrapper,{children:[(0,h.jsx)(p.InputLabel,{htmlFor:`duration`,children:`Duration`}),(0,h.jsx)(p.Input,{type:`number`,id:`duration`,value:i,onChange:e=>a(e.target.valueAsNumber)})]}):null,(0,h.jsx)(f.ActionButton,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:n,duration:i,label:c})},isDisabled:!n||!!o,children:`Add audio`})]})}const De=(0,u.defineCreator)({id:`@manifest-editor/audio-annotation`,create:D,label:`Audio`,summary:`Audio annotation`,icon:(0,h.jsx)(f.AudioIcon,{}),render(e){return(0,h.jsx)(O,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],async supportsResource(e,t){return S(e)&&((await T(e,t)).startsWith(`audio/`)||E(e,[`.mp3`,`.m4a`,`.wav`,`.ogg`]))?{initialData:{url:e}}:!1},supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}});async function Oe(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
|
|
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 Me(e){let[t,n]=(0,y.useAnnotationCreatorState)({key:`bodyValue`,initialValue:e.options.initialData?.body||{en:[``]},requestId:e.options.initialData?.requestId}),r=(0,d.getValue)(t).trim()===``;return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(f.HTMLEditor,{className:`border-none`,value:t.en?.[0]||``,onChange:e=>n({en:[e]})}),(0,h.jsx)(f.ActionButton,{primary:!0,type:`button`,onPress:()=>{e.runCreate({body:t})},isDisabled:r,children:`Create`})]})}const Ne=(0,u.defineCreator)({id:`@manifest-editor/html-annotation`,create:je,label:`HTML`,summary:`HTML annotation`,icon:(0,h.jsx)(f.HTMLIcon,{}),render(e){return(0,h.jsx)(Me,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),k={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=>(0,b.isImageService)(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 x.EditorInstance({vault:t,reference:e}),m=(0,p.centerRectangles)(a,{width:u,height:d},.6);f.annotation.target.setPosition(m)}}},A={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 x.EditorInstance({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 Pe=Object.defineProperty,Fe=(e,t,n)=>t in e?Pe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,j=(e,t,n)=>(Fe(e,typeof t==`symbol`?t:t+``,n),n);function M(e){return e.endsWith(`info.json`)?e:e.endsWith(`/`)?`${e}info.json`:`${e}/info.json`}var Ie=`http://library.stanford.edu/iiif/image-api/compliance.html#level0`,Le=`http://library.stanford.edu/iiif/image-api/compliance.html#level1`,Re=`http://library.stanford.edu/iiif/image-api/compliance.html#level2`,ze=`http://library.stanford.edu/iiif/image-api/conformance.html#level0`,Be=`http://library.stanford.edu/iiif/image-api/conformance.html#level1`,Ve=`http://library.stanford.edu/iiif/image-api/conformance.html#level2`,He=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0`,Ue=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1`,We=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2`,Ge=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0`,Ke=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1`,qe=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2`,Je=`http://iiif.io/api/image/1/level0.json`,Ye=`http://iiif.io/api/image/1/profiles/level0.json`,Xe=`http://iiif.io/api/image/1/level1.json`,Ze=`http://iiif.io/api/image/1/profiles/level1.json`,Qe=`http://iiif.io/api/image/1/level2.json`,$e=`http://iiif.io/api/image/1/profiles/level2.json`,et=`http://iiif.io/api/image/2/level0.json`,tt=`http://iiif.io/api/image/2/profiles/level0.json`,nt=`http://iiif.io/api/image/2/level1.json`,rt=`http://iiif.io/api/image/2/profiles/level1.json`,it=`http://iiif.io/api/image/2/level2.json`,at=`http://iiif.io/api/image/2/profiles/level2.json`,ot=`level0`,st=`level1`,ct=`level2`,lt=`http://iiif.io/api/image/2/level0`,ut=`http://iiif.io/api/image/2/level1`,dt=`http://iiif.io/api/image/2/level2`,ft=[dt,Re,Ve,We,qe,Qe,$e,it,at,ct],pt=[...ft,ut,Le,Be,Ue,Ke,Xe,Ze,nt,rt,st],mt=[lt,ut,dt,Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge,Ke,qe,Je,Ye,Xe,Ze,Qe,$e,et,tt,nt,rt,it,at,ot,st,ct],ht={extraFormats:[`jpg`],extraQualities:[`default`],extraFeatures:[`sizeByWhListed`]},gt={extraFormats:[`jpg`],extraQualities:[`default`],extraFeatures:[`baseUriRedirect`,`cors`,`jsonldMediaType`,`regionByPx`,`regionSquare`,`sizeByWhListed`,`sizeByH`,`sizeByW`,`sizeByWh`]},_t={extraFormats:[`jpg`,`png`],extraQualities:[`default`],extraFeatures:[`baseUriRedirect`,`cors`,`jsonldMediaType`,`regionByPct`,`regionByPx`,`regionSquare`,`rotationBy90s`,`sizeByWhListed`,`sizeByConfinedWh`,`sizeByH`,`sizeByPct`,`sizeByW`,`sizeByWh`]};function vt(e){return ft.indexOf(e)===-1?pt.indexOf(e)===-1?ht:gt:_t}function yt(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=vt(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 bt(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 xt(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 St(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 Ct(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 wt(e,t=``){let{path:n,scheme:r,server:i,prefix:a}=Ct(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:bt(u),size:xt(l),rotation:St(c),quality:p[0],format:p[1]}}function Tt(e){let t=wt(M(e.id));if(t.type!==`info`)throw Error(`Invalid service URL`);let n=yt(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 Et(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 Dt(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 N(e){if(e[`@id`])return e[`@id`];if(e.id)return e.id}function P(e){if(!e||!e.profile||!N(e))return!1;let t=Array.isArray(e.profile)?e.profile:[e.profile];for(let e of t)if(typeof e==`string`&&mt.indexOf(e)!==-1)return!0;return!1}function Ot(e){if(!P(e))return!1;let t=Array.isArray(e.profile)?e.profile:[e.profile];for(let e of t)if(typeof e==`string`){if(pt.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 F(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 I(e){return P(e)?F(0,e)?0:F(1,e)?1:F(2,e)?2:null:null}function kt(e){return(e[`@context`]?Array.isArray(e[`@context`])?e[`@context`]:[e[`@context`]]:[]).indexOf(`http://iiif.io/api/image/3/context.json`)!==-1}function At(e){if(!Ot(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:N(e),type:`variable`,minWidth:0,minHeight:0,maxHeight:r.maxHeight||r.maxWidth,maxWidth:r.maxWidth||r.maxHeight,level:I(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:N(e),type:`variable`,minHeight:0,minWidth:0,maxHeight:n.height||n.width,maxWidth:n.width,level:I(e),version:kt(e)?3:2})}}return t}function jt(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 Mt(e){if(e[`@type`])return e[`@type`];if(e.type)return e.type}function Nt(e){if(typeof e==`string`)return jt(e);let t=Mt(e);if(t!==`Image`&&t!==`sc:Image`)return null;let n=e,r=N(n);return r?r&&n.width&&n.height?{id:r,type:`fixed`,width:n.width,height:n.height,unsafe:!0}:jt(r):null}function Pt(e){return P(e)?(e&&e.sizes?e.sizes:[]).map(t=>({id:N(e),type:`fixed-service`,height:t.height,width:t.width,level:I(e),version:kt(e)?3:2})):[]}function Ft(e){let t=[],n=e.length;for(let r=0;r<n;r++){let n=e[r];if(!n)continue;let i=Pt(n);i.length&&t.push(...i);let a=At(n);a.length&&t.push(...a)}return t}function It(e){let t=e.service?Array.isArray(e.service)?e.service:[e.service]:[],n=t.length,r=[];for(let e=0;e<n;e++)P(t[e])&&r.push(t[e]);return r}function Lt(e,t=!0,n){let r=[],i=Nt(e);if(i===null)return r;let a=e;if(r.push(i),t&&a&&a.width&&a.height){let e=[],t=It(a);for(let r of t){let t={id:N(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(...Ft([r])))}}if(e.length)return r.push(...e),r}return a.service&&r.push(...Ft(a.service)),r}function Rt({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 zt({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 Bt(e){return`${e.mirror?`!`:``}${(e.angle||0)%360}`}function Vt(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,Rt(a),zt(i),Bt(o),`${c}.${s}`].filter(Boolean).join(`/`)}function L(e,t,n){let r=Tt({"@context":e.version===3?`http://iiif.io/api/image/3/context.json`:`http://iiif.io/api/image/2/context.json`,id:M(N(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:Vt(r),type:`fixed`,width:t,height:n||e.height/(e.width||1)*t,unsafe:e.width>t}}function R(e){let t=e.replace(/(https?:\/\/)?(www.)?/i,``);return t.indexOf(`/`)===-1?t:t.split(`/`)[0]}function Ht(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 Ut(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),Ht(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(L(t,r.width,r.height),s)):(i(()=>`Checking for an image from the tile source 3`,2),c(L(t,t.width,t.height),s))),t.type===`variable`&&t.maxWidth&&c(L({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 Wt(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 Gt(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 Kt(e){return F(0,e)}new class{constructor(e={}){j(this,`config`,{verificationsRequired:1,approximateServices:!1,enableFetching:!0,disableThrottling:!1}),j(this,`fetchingCount`,0),j(this,`imageServices`,{}),j(this,`knownImageServers`,{}),this.config=Object.assign(this.config,e)}setConfig(e){Object.assign(this.config,e)}sample(e,t,n=!0){let r=R(N(e)),i=M(N(e)),a=this.knownImageServers[r];return this.imageServices[i]=Object.assign(e,{real:!0}),!a&&e.tiles&&!Kt(e)?(this.knownImageServers[r]={verifications:0,malformed:!1,root:r,preLoaded:n,sampledId:N(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:Et(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=R(N(e)),a=this.knownImageServers[i],o=M(N(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)||Kt(e.source)?null:(this.imageServices[o]||(this.imageServices[o]={"@context":a.result.context,"@id":N(e),id:N(e),protocol:`http://iiif.io/api/image`,tiles:r?.tiles||Wt(e.width,e.height,a.result.sampledTiles),sizes:r?.sizes||Dt(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 Ut(t,[()=>r,()=>i])}async getImageCandidates(e,t=!0){let n=e;if(t&&n&&n.height&&n.width){let e=It(n);for(let t of e){let e={id:N(t),width:t.width?t.width:n.width,height:t.height?t.height:n.height,source:t};await this.loadService(e)}}return Lt(e,t,this)}async verify(e){let t=this.predict(e,!1,!0),n=await this.fetchService(N(e));if(!t)return!1;let r=t.height===n.height&&t.width===n.width&&t[`@context`]===n[`@context`]&&Gt(t.sizes||[],n.sizes||[]);if(r){let t=R(N(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:N(e),n=M(t);if(this.imageServices[n])return!0;let r=this.knownImageServers[R(t)];return!!(r&&!r.malformed&&r.verifications>=this.config.verificationsRequired)}async markAsMalformed(e){return this.knownImageServers[R(N(e))].malformed=!0,this.loadService(e,!0)}async fetchService(e,t=!1){let n=M(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[R(N(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(N(e),t);return this.fetchingCount--,r.real&&this.sample(r,e),r}loadServiceSync(e){let t=M(N(e));return this.imageServices[t]?this.imageServices[t]:this.config.approximateServices?this.predict(e):null}};const z={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=>P(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 B(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 qt(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=B(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 Jt(e,t){let n=B(e.service),r=(0,b.createImageServiceRequest)(n),i=(0,b.imageServiceRequestToString)({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:[qt(n,t.config,t.options.parent?.property===`thumbnail`)]})}function V(e){return e.endsWith(`default.jpg`)?(0,b.imageServiceRequestToString)({...(0,b.parseImageServiceRequest)(e),type:`info`}):(0,b.canonicalServiceUrl)(e)}function H(e){let t=e.options.initialData,n=t.url?V(t.url):``,[r,i]=(0,m.useState)(n||``);return(0,h.jsx)(f.PaddedSidebarContainer,{children:(0,h.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries()),i=r.url;if(i){let t=V(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:[(0,h.jsx)(`div`,{className:`flex gap-2 items-center`,children:(0,h.jsxs)(p.InputContainer,{$wide:!0,children:[(0,h.jsx)(p.InputLabel,{htmlFor:`url`,children:`Link to image service`}),(0,h.jsx)(p.Input,{id:`url`,name:`url`,defaultValue:t.url||``,onPaste:e=>{let t=e.clipboardData.getData(`text/plain`);i(t?V(t):``)},onBlur:e=>i(e.currentTarget.value?V(e.currentTarget.value):``)})]})}),(0,h.jsx)(`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()?(0,h.jsx)(ee.ErrorBoundary,{fallbackRender:()=>(0,h.jsx)(`div`,{children:`Invalid service`}),children:(0,h.jsx)(Yt,{src:r},r)}):(0,h.jsx)(`div`,{className:`text-grey-600`,children:`Preview`})}),(0,h.jsx)(`div`,{children:(0,h.jsx)(f.ActionButton,{primary:!0,large:!0,type:`submit`,isDisabled:!r,children:`Create`})})]})})}function Yt({src:e}){let t=(0,_.useImage)({id:e},{size:{width:512}});return t?(0,h.jsx)(`div`,{className:`h-full`,children:(0,h.jsx)(`img`,{className:`w-full h-full object-contain`,src:t})}):(0,h.jsx)(Ce,{})}async function Xt(e,t){let n={id:t.generateId(`annotation`),type:`Annotation`},r=t.options.targetType,i=await(0,u.creatorHelper)(t,`Annotation`,`body`,`@manifest-editor/image-service-creator`)(e,{parent:{resource:n,property:`body`}});if(r===`Annotation`)return{...n,body:[i],motivation:e.motivation||`painting`,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]}),c;return e.service?.sizes&&(c=await(0,u.creatorHelper)(t,`Canvas`,`thumbnail`,`@manifest-editor/thumbnail-image`)({service:e.service,width:e.thumbnailSize||400})),t.embed({id:r,type:`Canvas`,label:e.label||{en:[`Untitled canvas`]},height:i.resource.height||1e3,width:i.resource.width||1e3,thumbnail:c?[c]:void 0,items:[s]})}}function Zt(e){return(0,h.jsx)(H,{...e})}const U=(0,u.defineCreator)({id:`@manifest-editor/image-service-creator`,configKey:`iiif-image-services`,create:Jt,label:`Image Service`,summary:`Add an image from Image Service`,icon:(0,h.jsx)(f.IIIFLogo,{style:{padding:10}}),tags:[`image`,`image-service`],async supportsResource(e,t){if(!S(e))return!1;let n=V(e);if(!n)return!1;let r=await C(n,t);return ae(r)?{initialData:{url:e,service:r}}:!1},render(e){return(0,h.jsx)(H,{...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`}}}),Qt=(0,u.defineCreator)({id:`@manifest-editor/image-service-annotation`,create:Xt,label:`IIIF Image`,dependencies:[`@manifest-editor/image-service-creator`],summary:`IIIF Image service`,tags:[`image`,`image-service`],icon:(0,h.jsx)(f.IIIFLogo,{style:{padding:10}}),render(e){return(0,h.jsx)(Zt,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supportsResource:U.supportsResource,supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[z,A,k],staticFields:{type:`Annotation`}});async function $t(e,t){if(!e.height||!e.width){let t=await(0,y.getImageDimensions)(e.url);t&&(e.height=t.height,e.width=t.width)}return t.embed({id:e.url,type:`Image`,format:e.format||await(0,y.getFormat)(e.url),height:e.height,width:e.width,service:e.service?Array.isArray(e.service)?e.service:[e.service]:void 0})}function W(e){let t=e.options.initialData;return(0,h.jsx)(f.PaddedSidebarContainer,{children:(0,h.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.url&&e.runCreate({url:r.url})},children:[(0,h.jsxs)(p.InputContainer,{$wide:!0,children:[(0,h.jsx)(p.InputLabel,{htmlFor:`id`,children:`Link to Image`}),(0,h.jsx)(p.Input,{id:`url`,name:`url`,defaultValue:t.url||``})]}),(0,h.jsx)(f.ActionButton,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}async function en(e,t){let n={id:t.generateId(`annotation`),type:`Annotation`},r=t.options.targetType,i=await(0,u.creatorHelper)(t,`Annotation`,`body`,`@manifest-editor/image-url-creator`)(e,{parent:{resource:n,property:`body`}});if(r===`Annotation`)return t.embed({...n,body:[i],motivation:e.motivation||`painting`,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 canvas`]},height:i.resource.height||1e3,width:i.resource.width||1e3,items:[s]})}throw Error(`Unsupported target type`)}function tn(e){return(0,h.jsx)(W,{...e})}const G=(0,u.defineCreator)({id:`@manifest-editor/image-url-creator`,create:$t,label:`Image`,summary:`Image from a URL`,icon:(0,h.jsx)(f.AddImageIcon,{}),tags:[`image`],async supportsResource(e,t){if(!S(e))return!1;let n=V(e);if(n)try{if(ae(await t.json(n)))return!1}catch{}let r=await T(e,t);return r.startsWith(`image/`)||E(e,[`.jpg`,`.jpeg`,`.png`,`.gif`,`.webp`])?{initialData:{url:e,format:r||void 0}}:!1},render(e){return(0,h.jsx)(W,{...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`}}),nn=(0,u.defineCreator)({id:`@manifest-editor/image-url-annotation`,create:en,label:`Image`,dependencies:[`@manifest-editor/image-url-creator`],summary:`Image from URL`,tags:[`image`],icon:(0,h.jsx)(f.AddImageIcon,{}),render(e){return(0,h.jsx)(tn,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supportsResource:G.supportsResource,supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[z,A,k],staticFields:{type:`Annotation`}});async function rn(e,t){let n=[],r=(0,u.creatorHelper)(t,`Annotation`,`body`,`@manifest-editor/image-url-creator`);for(let i of e.images)n.push(await r(i,t.options));return n}function K(e){return(0,h.jsx)(f.PaddedSidebarContainer,{children:(0,h.jsxs)(f.Form.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:[(0,
|
|
98
|
-
`)||``})]}),(0,h.jsx)(f.ActionButton,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}async function an(e,t){let n=[],r=(0,u.creatorHelper)(t,`AnnotationPage`,`items`,`@manifest-editor/image-url-annotation`);for(let i of e.images)n.push(await r(i,t.options));return n}const on=(0,u.defineCreator)({id:`@manifest-editor/image-url-list-annotation`,create:an,label:`List of Images`,dependencies:[`@manifest-editor/image-url-annotation`],summary:`List of Images from URLs`,tags:[`image`],icon:(0,h.jsx)(f.ImageListIcon,{}),render(e){return(0,h.jsx)(K,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[z,A,k],staticFields:{type:`Annotation`}}),sn=(0,u.defineCreator)({id:`@manifest-editor/no-body-annotation`,create:cn,label:`Annotation without body`,summary:`Add an annotation that only has motivation and target`,icon:(0,h.jsx)(f.EmptyCanvasIcon,{}),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 cn(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 ln({media:e,onError:t,duration:n,onDuration:r,onDimensions:i}){let[{element:a,currentTime:o,progress:s},c,l]=(0,_.useSimpleMediaPlayer)({duration:n});return(0,h.jsxs)(_.MediaPlayerProvider,{element:a,state:c,actions:l,currentTime:o,progress:s,children:[(0,h.jsx)(`div`,{style:{maxHeight:400,aspectRatio:`${e.width}/${e.height}`,position:`relative`},children:(0,h.jsx)(_.CanvasPanel.VideoHTML,{element:a,media:e,playPause:l.playPause})}),(0,h.jsx)(Ee,{onError:t,onDuration:r,onDimensions:i})]})}async function un(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:(0,d.getValue)(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:(0,d.getValue)(e.label)?e.label:void 0,duration:e.duration||0,width:e.width,height:e.height,items:[s]})}}function dn(e){let[t]=(0,m.useState)(()=>e.options.initialData),[n,r]=(0,m.useState)(t.url||``),[i,a]=(0,m.useState)(t.duration||0),[o,s]=(0,m.useState)(t.width||0),[c,l]=(0,m.useState)(t.height||0),[u,d]=(0,m.useState)(``),[g,_]=(0,m.useState)(t.label||{en:[``]});return(0,m.useEffect)(()=>{d(``);let e=n===t.url?t:{};if(a(e.duration||0),s(e.width||0),l(e.height||0),n){let e=n.split(`/`).pop()?.split(`.`).shift();_(n===t.url&&t.label?t.label:{en:[e||``]})}},[n,t]),(0,h.jsxs)(f.PaddedSidebarContainer,{children:[u?(0,h.jsx)(f.ErrorMessage,{children:u}):null,(0,h.jsxs)(p.InputContainer,{$wide:!0,children:[(0,h.jsx)(p.InputLabel,{htmlFor:`video-url`,children:`URL`}),(0,h.jsx)(p.Input,{type:`text`,id:`video-url`,value:n,onChange:e=>r(e.target.value)})]}),n&&!u?(0,h.jsx)(`div`,{children:(0,h.jsx)(p.LanguageFieldEditor,{containerId:`label`,focusId:`label_`,label:`Label`,fields:g,onSave:e=>_(e.toInternationalString())},`${n}__${i}`)}):null,n&&!u?(0,h.jsx)(`div`,{className:`mb-4 bg-black`,children:(0,h.jsx)(ln,{duration:i,onDuration:e=>a(e),onError:e=>d(e),media:{url:n,duration:i,height:c,width:o,type:`Video`},onDimensions:(e,t)=>{s(e||0),l(t||0)}})}):null,!u&&(i||o||c)?(0,h.jsx)(p.InputContainer,{$wide:!0,children:(0,h.jsx)(p.DimensionsTriplet,{widthId:`width`,width:o||0,changeWidth:e=>s(e),heightId:`height`,height:c||0,changeHeight:e=>l(e),durationId:`duration`,duration:i||0,changeDuration:e=>a(e)})}):null,(0,h.jsx)(f.ActionButton,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:n,duration:i,label:g,width:o,height:c})},isDisabled:!n||!!u,children:`Add video`})]})}const fn=(0,u.defineCreator)({id:`@manifest-editor/video-annotation`,create:un,label:`Video`,summary:`Video annotation`,icon:(0,h.jsx)(f.VideoIcon,{}),render(e){return(0,h.jsx)(dn,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],async supportsResource(e,t){return S(e)&&((await T(e,t)).startsWith(`video/`)||E(e,[`.mp4`,`.m4v`,`.webm`,`.mov`]))?{initialData:{url:e}}:!1},supports:{onlyPainting:!0,initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),pn=()=>(0,h.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`24px`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,transform:`scale(-1, 1)`,children:(0,h.jsxs)(`g`,{children:[(0,h.jsx)(`rect`,{fill:`none`,height:`24`,width:`24`}),(0,h.jsx)(`path`,{d:`M16,20H2V4h14V20z M18,8h4V4h-4V8z M18,20h4v-4h-4V20z M18,14h4v-4h-4V14z`})]})}),mn=(0,u.defineCreator)({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:(0,h.jsx)(pn,{}),resourceType:`AnnotationPage`,resourceFields:[`id`,`type`,`items`],supports:{parentTypes:[`Manifest`,`Canvas`,`Range`],parentFieldMap:{Manifest:[`annotations`],Canvas:[`items`,`annotations`],Range:[`annotations`]}}}),q=e=>(0,h.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,height:`1em`,width:`1em`,...e,children:[(0,h.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,h.jsx)(`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 hn(e,t){let n=e.url.trim();if(!S(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`,...(0,d.getValue)(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 gn(e){let[t,n]=(0,m.useState)(e.options.initialData?.label||{en:[`Captions in WebVTT format`]});return(0,h.jsx)(f.PaddedSidebarContainer,{children:(0,h.jsxs)(`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:(0,d.getValue)(t)?t:void 0,language:a||void 0})},children:[(0,h.jsx)(`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.`}),(0,h.jsxs)(p.InputContainer,{$wide:!0,children:[(0,h.jsx)(p.InputLabel,{htmlFor:`vtt-url`,children:`WebVTT file URL`}),(0,h.jsx)(p.Input,{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:e.options.initialData?.url||``})]}),(0,h.jsx)(p.LanguageFieldEditor,{focusId:`vtt-label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),(0,h.jsxs)(p.InputContainer,{$wide:!0,children:[(0,h.jsx)(p.InputLabel,{htmlFor:`vtt-language`,children:`Language (BCP 47 code)`}),(0,h.jsx)(p.Input,{id:`vtt-language`,name:`language`,type:`text`,placeholder:`en`,title:`A language code such as en, fr or pt-BR`,defaultValue:e.options.initialData?.language??`en`})]}),(0,h.jsx)(f.ActionButton,{primary:!0,large:!0,type:`submit`,children:`Add captions`})]})})}const _n=(0,u.defineCreator)({id:`@manifest-editor/vtt-annotation-page`,label:`WebVTT captions`,tags:[`captions`],summary:`Link captions to an audio or video canvas`,icon:(0,h.jsx)(q,{}),create:hn,render:e=>(0,h.jsx)(gn,{...e}),resourceType:`AnnotationPage`,resourceFields:[`id`,`type`,`items`],supports:{parentTypes:[`Canvas`],parentFields:[`annotations`],custom:({resource:e},t)=>(0,x.canvasHasAv)(t,e)}}),vn=(0,u.defineCreator)({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:(0,h.jsx)(f.EmptyCanvasIcon,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`,`height`,`width`,`items`],supports:{parentTypes:[`Manifest`],parentFields:[`items`]}});var yn=process.env.NODE_ENV===`production`,J=`Invariant failed`;function Y(e,t){if(!e){if(yn)throw Error(J);var n=typeof t==`function`?t():t,r=n?`${J}: ${n}`:J;throw Error(r)}}const bn=(0,u.defineCreator)({id:`@manifest-editor/internal-canvas`,create:Sn,label:`Internal canvas link`,summary:`Canvas from the same manifest`,icon:(0,h.jsx)(pn,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`],supports:{parentTypes:[`Manifest`],parentFields:[`start`]},render:e=>(0,h.jsx)(xn,{...e})});function xn(e){let{runCreate:t}=e,n=(0,_.useManifest)(),r=(0,_.useVault)(),i=(0,m.useMemo)(()=>({canSelectCanvas:!0,canSelectCollection:!1,canSelectManifest:!1,canCropImage:!1,alwaysShowNavigationArrow:!1,multiSelect:!1}),[]),a=(0,m.useMemo)(()=>[{type:`callback`,cb:e=>t({id:e}),label:`Select canvas`,supportedTypes:[`Canvas`],format:{type:`url`}}],[t]),o=(0,m.useMemo)(()=>({saveToLocalStorage:!1,restoreFromLocalStorage:!1,initialHistory:[{url:n?.id,resource:n?.id,route:`/manifest?id=${encodeURIComponent(n?.id||``)}`,metadata:{type:`Manifest`}}]}),[n?.id]);return Y(n,`Manifest is not loaded`),(0,h.jsx)(_.VaultProvider,{vault:r,children:(0,h.jsx)(te.IIIFBrowser,{vault:r,navigation:i,output:a,history:o})})}async function Sn(e,t){let n=t.vault.get({id:e.id,type:`Canvas`},{skipSelfReturn:!0});return Y(n,`Selected Canvas is not loaded`),t.embed(n)}async function Cn(e,t){return t.embed({id:t.generateId(`html/${e.language}`),language:e.language,type:`TextualBody`,format:`text/html`,value:e.body||``})}function wn(e){let{i18n:t}=(0,y.useConfig)(),[n,r]=(0,m.useState)(e.options.initialData?.body??`<p></p>`),[i,a]=(0,m.useState)(e.options.initialData?.language??t.defaultLanguage);return(0,h.jsxs)(f.PaddedSidebarContainer,{children:[(0,h.jsx)(f.HTMLEditor,{className:`border-none`,value:n,onChange:e=>r(e)}),(0,h.jsx)(f.ActionButton,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({language:i,body:n})},children:`Create`})]})}const Tn=(0,u.defineCreator)({id:`@manifest-editor/html-body-creator`,create:Cn,label:`HTML Body`,summary:`Add HTML annotation body`,icon:(0,h.jsx)(q,{}),render(e){return(0,h.jsx)(wn,{...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 X(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 En(e,t){let n=t.options.targetType,r=e.output,i=[];for(let{resource:a,selector:o,parent:s,rotation:c}of r){let r=a.type,u=new d.Vault;if((n===`Canvas`||n===`Annotation`||n===`ContentResource`)&&r===`Canvas`){let r=a.id,d=s?.type===`Manifest`?s.id:void 0;Y(d,`Could not find Manifest`);let f=u.get({id:d,type:`Manifest`})||await u.loadManifest(d);Y(f,`Manifest not found`);let p=t.config.addManifestMetadataToCanvas!==!1;e.trackManifest?.({requiredStatement:f.requiredStatement,rights:f.rights,...p?{metadata:f.metadata||[]}:{},partOf:[{id:d,type:`Manifest`,label:f.label}]});let m=e=>{if(e.type===`SpecificResource`&&e.source)return{...e,source:m(e.source)};let t=e.type===`Canvas`&&!p?{}:{metadata:f.metadata||[]};return{requiredStatement:f.requiredStatement,rights:f.rights,...t,...e,partOf:[{id:d,type:`Manifest`,label:f.label}]}},h=f.items.find(e=>e.id===r);Y(h,`Canvas not found`);let g=u.get(h),_=l.t(o,c);if(n===`Canvas`&&!_){let e=u.toPresentation3(g);e.label||(e.label={en:[`Untitled canvas`]}),t.vault.loadSync(e.id,m(e)),i.push(t.embed(t.vault.get({id:e.id,type:`Canvas`})));continue}let v=u.get(g.items[0]),y=u.get(v.items[0]);if(n===`Annotation`||n===`Canvas`||n===`ContentResource`){let r=u.toPresentation3(y);r.id=t.generateId(`Annotation`);let a=null,s={width:0,height:0};if(r?.body?.service){let t=r?.body.width,n=r?.body.height;a=(0,b.getImageServices)(r?.body)[0],a&&(!a.width||!a.height)&&(a.width=t,a.height=n),s.width=t,s.height=n,e.trackSize&&e.trackSize(s)}if(_){let u={...r.body},d=``;if(a&&o?.type===`BoxSelector`){let e=a.id||a[`@id`]||``;e&&(u.id=X(e,o.spatial,`max`,c),d=X(e,o.spatial,`512,`,c))}r.body={id:t.generateId(`SpecificResource`,y),type:`SpecificResource`,source:u,selector:_};let f=l.n(o?.type===`BoxSelector`?{width:~~o.spatial.width,height:~~o.spatial.height}:s,c);if(e.trackSize&&e.trackSize(f),n===`ContentResource`){i.push(m(r.body));continue}if(n===`Canvas`){let e=t.generateId(`Canvas`,y);r.target=e;let n=t.generateId(`Page`,y),a=t.embed({id:n,type:`AnnotationPage`,items:[r]}),{width:o,height:s}=f;i.push(t.embed(m({id:e,type:`Canvas`,label:{en:[`Untitled canvas`]},width:o,height:s,thumbnail:d?[t.embed({id:d,type:`Image`,format:`image/jpeg`,width:512,height:Math.round(s/o*512)})]:void 0,items:[a]})));continue}i.push(t.embed(m({...r,target:t.getTarget()})));continue}i.push(t.embed(m({...r,target:t.getTarget()})))}}}return i}const Dn=(0,m.lazy)(()=>Promise.resolve().then(()=>require("./iiif-browser-form.lazy-Df2fAM6b.cjs"))),On=(0,u.defineCreator)({id:`@manifest-editor/iiif-browser-creator`,create:En,label:`IIIF Browser`,summary:`Browse IIIF Resources`,icon:(0,h.jsx)(f.IIIFBrowserIcon,{}),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(0,h.jsx)(Dn,{...e})},hiddenModal:!0,tags:[`image`,`image-service`],async supportsResource(e,t){let n=w(await C(e,t));return n===`Manifest`||n===`Collection`||await oe(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=>(0,b.isImageService)(e)),f=d?.id||d?.[`@id`];if(!f)return;let p=X(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`}])}},z,A,k],staticFields:{}}),kn=(0,u.defineCreator)({id:`@manifest-editor/image-url-list`,label:`Image URL List`,summary:`Image from a list of URLs`,create:rn,icon:(0,h.jsx)(f.ImageListIcon,{}),render(e){return(0,h.jsx)(K,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{parentFields:[`logo`,`body`,`thumbnail`]},staticFields:{type:`Image`}});async function An(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/plain`})}function jn(e){let[t,n]=(0,m.useState)(e.options.initialData?.label||{en:[`View as text`]});return(0,h.jsx)(f.PaddedSidebarContainer,{children:(0,h.jsxs)(`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:[(0,h.jsx)(p.LanguageFieldEditor,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),(0,h.jsxs)(p.InputContainer,{$wide:!0,children:[(0,h.jsx)(p.InputLabel,{htmlFor:`id`,children:`Link to plaintext`}),(0,h.jsx)(p.Input,{id:`url`,name:`url`,defaultValue:e.options.initialData?.url||``})]}),(0,h.jsx)(f.ActionButton,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}const Mn=(0,u.defineCreator)({id:`@manifest-editor/plaintext-creator`,create:An,label:`Plaintext`,summary:`Add link to an plaintext`,icon:(0,h.jsx)(q,{}),render(e){return(0,h.jsx)(jn,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`]},staticFields:{format:`text/plain`}});function Nn(e,t){let n=(0,b.createImageServiceRequest)(B(e));return(0,b.imageServiceRequestToString)({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 Z(e){return e.endsWith(`default.jpg`)?(0,b.imageServiceRequestToString)({...(0,b.parseImageServiceRequest)(e),type:`info`}):(0,b.canonicalServiceUrl)(e)}async function Pn(e,t){let n=B(e.service),r=n.sizes,i=qt(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=Nn(n,o);return t.embed({id:e,type:`Image`,format:`image/jpeg`,width:o.width,height:o.height,service:[i]})}}return null}function Fn(e){let[t,n]=(0,m.useState)(e.options.initialData?.url||``),[r,i]=(0,m.useState)(e.options.initialData?.service||null),[a,o]=(0,m.useState)({width:e.options.initialData?.width||0,height:e.options.initialData?.height||0}),s=(0,m.useMemo)(()=>!r||!a.width||!a.height?null:Nn(r,a),[a,r]);return r?(0,h.jsxs)(f.PaddedSidebarContainer,{children:[(0,h.jsxs)(`div`,{className:`mb-4`,children:[(0,h.jsx)(`div`,{className:`mb-2`,children:r[`@id`]||r.id}),(0,h.jsx)(`div`,{className:`flex gap-2 mb-4`,children:r.sizes?.map(e=>{let t=e.width===a.width;return(0,h.jsxs)(f.ActionButton,{primary:t,isDisabled:t,large:!0,onPress:()=>o(e),children:[e.width,`x`,e.height]},e.width)})}),s?(0,h.jsx)(`img`,{src:s,alt:`preview of selected resource`}):null]}),(0,h.jsx)(f.ActionButton,{primary:!0,large:!0,isDisabled:!s,onPress:()=>{r&&e.runCreate({service:r,width:a.width,height:a.height,thumbnailUrl:s})},children:`Add thumbnail`})]}):(0,h.jsx)(f.PaddedSidebarContainer,{children:(0,h.jsxs)(`form`,{onSubmit:e=>{e.preventDefault();let t=new FormData(e.target),n=Object.fromEntries(t.entries()).url;if(n){let e=Z(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:[(0,h.jsx)(`div`,{className:`flex gap-2 items-center`,children:(0,h.jsxs)(p.InputContainer,{$wide:!0,children:[(0,h.jsx)(p.InputLabel,{htmlFor:`url`,children:`Link to image service`}),(0,h.jsx)(p.Input,{id:`url`,name:`url`,defaultValue:e.options.initialData?.url||``,onPaste:e=>{let t=e.clipboardData.getData(`text/plain`);n(t?Z(t):``)},onBlur:e=>n(e.currentTarget.value?Z(e.currentTarget.value):``)})]})}),(0,h.jsx)(`div`,{children:(0,h.jsx)(f.ActionButton,{primary:!0,large:!0,type:`submit`,isDisabled:!t,children:`Select size`})})]})})}const In=(0,u.defineCreator)({id:`@manifest-editor/thumbnail-image`,configKey:`iiif-image-services`,create:Pn,label:`Thumbnail from service`,summary:`Add thumbnail from an image service`,icon:(0,h.jsx)(f.ScaledImageIcon,{}),render(e){return(0,h.jsx)(Fn,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`format`,`width`,`height`,`service`],supports:{parentFields:[`thumbnail`]}});function Ln(){return(0,h.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`24px`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,children:[(0,h.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,h.jsx)(`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 Rn(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/html`})}function zn(e){let[t,n]=(0,m.useState)(e.options.initialData?.label||{en:[``]});return(0,h.jsx)(f.PaddedSidebarContainer,{children:(0,h.jsxs)(`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:[(0,h.jsx)(p.LanguageFieldEditor,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),(0,h.jsxs)(p.InputContainer,{$wide:!0,children:[(0,h.jsx)(p.InputLabel,{htmlFor:`id`,children:`Link`}),(0,h.jsx)(p.Input,{id:`url`,name:`url`,defaultValue:e.options.initialData?.url||``})]}),(0,h.jsx)(f.ActionButton,{primary:!0,large:!0,type:`submit`,children:`Create link`})]})})}const Bn=(0,u.defineCreator)({id:`@manifest-editor/web-page-creator`,create:Rn,label:`Web page`,summary:`Add link to an external web page`,icon:(0,h.jsx)(Ln,{}),render(e){return(0,h.jsx)(zn,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`,`homepage`]}}),Vn=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function Q(e){let t=(e||``).match(Vn);return t?t[1]:null}function Hn(e){return!!Q(e.youtubeUrl)}function Un(e,t){let n=Q(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 Wn(e,t){let n=Un(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 Gn(e){let t=e.options.initialData;return(0,h.jsx)(f.PaddedSidebarContainer,{children:(0,h.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.youtubeUrl&&e.runCreate({youtubeUrl:r.youtubeUrl})},children:[(0,h.jsxs)(p.InputContainer,{$wide:!0,children:[(0,h.jsx)(p.InputLabel,{htmlFor:`id`,children:`Link to YouTube`}),(0,h.jsx)(p.Input,{id:`youtubeUrl`,name:`youtubeUrl`,defaultValue:t.youtubeUrl||``})]}),(0,h.jsx)(f.ActionButton,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}const Kn=(0,u.defineCreator)({id:`@manifest-editor/youtube`,create:Wn,label:`YouTube`,summary:`Embed YouTube`,icon:(0,h.jsx)(f.YouTubeIcon,{}),resourceType:`ContentResource`,additionalTypes:[`Canvas`,`Annotation`],resourceFields:[`id`,`type`,`service`],supportsResource(e){return Q(e)?{initialData:{youtubeUrl:e}}:!1},render:e=>(0,h.jsx)(Gn,{...e}),supports:{initialData:!0,onlyPainting:!0,parentTypes:[`Annotation`,`Manifest`,`AnnotationPage`],parentFieldMap:{Annotation:[`body`],Manifest:[`items`],AnnotationPage:[`items`]}},staticFields:{type:`Video`}});async function qn(e,t){let n=e.output||[],r=[];for(let e of n){let{resource:n,parent:i,selector:a}=e,o=t.getPreviewVault(),s=(0,d.createThumbnailHelper)(o);if(n.type===`Manifest`){let e=n.id;Y(e,`Could not find Manifest ID`);let i=await o.loadManifest(e),a=await s.getBestThumbnailAtSize(i,{width:256,height:256},!1);Y(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;Y(e,`Could not find Manifest ID`);let i=await o.loadManifest(e);Y(i,`Collection not found`),r.push(t.embed({id:n.id,type:`Collection`,label:i.label}))}}return r}const Jn=(0,m.lazy)(()=>Promise.resolve().then(()=>Yn));var Yn=o({default:()=>$});function $(e){let t=(0,y.usePreviewVault)(),n=(0,m.useMemo)(()=>e.options.initialData||{},[e.options.initialData]),r=(0,m.useMemo)(()=>[{type:`callback`,label:`Select`,supportedTypes:[`Manifest`,`Collection`,`ManifestList`,`CollectionList`,`CollectionItemList`],cb:t=>e.runCreate({output:t}),format:{type:`custom`,format:(e,t,n)=>{let r=Array.isArray(e)?e:[{...e,parent:t}],i=[];for(let e of r)i.push({resource:n.get(e),parent:e.parent,selector:e.selector});return i}}}],[e.runCreate]),i=(0,m.useMemo)(()=>({canCropImage:!1,canSelectCanvas:!1,canSelectManifest:!0,canSelectCollection:!0,multiSelect:!0,...n.iiifBrowserOptions?.navigation||{}}),[n.iiifBrowserOptions?.navigation]),a=(0,m.useMemo)(()=>({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=(0,m.useMemo)(()=>{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(0,h.jsx)(y.PreviewVaultBoundary,{children:(0,h.jsx)(te.IIIFBrowser,{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 Xn=(0,u.defineCreator)({id:`@manifest-editor/manifest-browser-creator`,configKey:`@manifest-editor/iiif-browser-creator`,create:qn,label:`IIIF Browser`,summary:`Browse IIIF Resources`,icon:(0,h.jsx)(f.IIIFBrowserIcon,{}),render(e){return(0,h.jsx)($,{...e})},async supportsResource(e,t){let n=w(await C(e,t));return n===`Manifest`||n===`Collection`||await oe(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 Zn(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 Qn(e){let[t,n]=(0,m.useState)(e.options.initialData?.label||{en:[``]});return(0,h.jsx)(f.PaddedSidebarContainer,{children:(0,h.jsxs)(`form`,{onSubmit:n=>{n.preventDefault(),t&&e.runCreate({type:`Range`,label:t,items:e.options.initialData?.items||[]})},children:[(0,h.jsx)(p.LanguageFieldEditor,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),(0,h.jsx)(f.ActionButton,{primary:!0,type:`submit`,children:`Create range`})]})})}const $n=(0,u.defineCreator)({id:`@manifest-editor/range-with-items`,create:Zn,label:`Range`,summary:`Add a new range`,icon:(0,h.jsx)(f.RangesIcon,{}),render(e){return(0,h.jsx)(Qn,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Range`],parentFields:[`items`]},staticFields:{type:`Range`}});async function er(e,t,n){let r=t.generateId(`range`,n?{id:n,type:`Range`}:void 0);return t.embed({id:r,type:`Range`,label:e.label||{en:[`Table of Contents`]},items:(e.items||[]).map(e=>t.ref(e))})}function tr(e){let[t,n]=(0,m.useState)(e.options.initialData?.label||{en:[``]});return(0,h.jsx)(f.PaddedSidebarContainer,{children:(0,h.jsxs)(`form`,{onSubmit:n=>{n.preventDefault(),t&&e.runCreate({type:`Range`,label:t})},children:[(0,h.jsx)(p.LanguageFieldEditor,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),(0,h.jsx)(f.ActionButton,{primary:!0,type:`submit`,children:`Create range`})]})})}const nr=(0,u.defineCreator)({id:`@manifest-editor/range-top-level`,create:er,label:`Top Level Range`,summary:`Add a new top level range`,icon:(0,h.jsx)(f.RangesIcon,{}),render(e){return(0,h.jsx)(tr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Manifest`],parentFields:[`structures`]},staticFields:{type:`Range`}}),rr=[U,Qt,G,nn,fn,De,Tn,Ne,Kn,On,vn,Mn,Bn,mn,_n,sn,bn,Ae,kn,on,In,nr,$n,ie];exports.CreateAudioAnnotationForm=O,exports.CreateCaptionedImageAnnotation=ke,exports.CreateHTMLAnnotation=Me,exports.CreateHTMLBodyForm=wn,exports.CreateImageServerForm=H,exports.CreateImageServiceAnnotationForm=Zt,exports.CreateImageUrlAnnotationForm=tn,exports.CreateImageUrlForm=W,exports.CreateImageUrlListForm=K,exports.CreatePlaintextForm=jn,exports.CreateProviderForm=re,exports.CreateThumbnailForm=Fn,exports.CreateVideoAnnotationForm=dn,exports.CreateVttAnnotationPageForm=gn,exports.CreateWebPageForm=zn,exports.IIIFBrowserCreatorForm=Dn,exports.ManifestBrowserCreatorForm=Jn,exports.RangeWithItemsCreatorForm=Qn,exports.TopLevelRangeCreatorForm=tr,exports.YouTubeForm=Gn,exports.allCreators=rr,exports.audioAnnotation=De,exports.captionedImageAnnotation=Ae,exports.createAudioAnnotation=D,exports.createCaptionedImageAnnotation=Oe,exports.createFromIIIFBrowserOutput=En,exports.createFromManifestBrowserOutput=qn,exports.createHtmlAnnotation=je,exports.createHtmlBody=Cn,exports.createImageServer=Jt,exports.createImageServiceAnnotation=Xt,exports.createImageUrl=$t,exports.createImageUrlAnnotation=en,exports.createImageUrlList=rn,exports.createImageUrlListAnnotation=an,exports.createNoBodyAnnotation=cn,exports.createPlaintext=An,exports.createProvider=ne,exports.createRangeTopLevel=er,exports.createRangeWithItems=Zn,exports.createThumbnail=Pn,exports.createVideoAnnotation=un,exports.createVttAnnotationPage=hn,exports.createWebPage=Rn,exports.createYoutubeBody=Wn,exports.createYoutubeBodyResource=Un,exports.croppedRegion=X,exports.emptyAnnotationPage=mn,exports.emptyCanvas=vn,exports.getCanonicalUrl=V,exports.getYouTubeId=Q,exports.htmlAnnotation=Ne,exports.htmlBodyCreator=Tn,exports.iiifBrowserCreator=On,exports.imageServiceAnnotation=Qt,exports.imageServiceCreator=U,exports.imageUrlAnnotation=nn,exports.imageUrlCreator=G,exports.imageUrlListAnnotation=on,exports.imageUrlListCreator=kn,exports.internalCanvas=bn,exports.manifestBrowserCreator=Xn,exports.noBodyAnnotation=sn,exports.plaintextCreator=Mn,exports.providerCreator=ie,exports.rangeTopLevel=nr,exports.rangeWithItems=$n,exports.validateYouTube=Hn,exports.videoAnnotation=fn,exports.vttAnnotationPage=_n,exports.webPageCreator=Bn,exports.youTubeBodyCreator=Kn;
|
|
92
|
+
`,Ce=y.default.label`
|
|
93
|
+
${Se}
|
|
94
|
+
`;function we(e){let t=(0,d.useTranslations)(`ui`),n=(0,h.useId)(),r=(0,h.useRef)(e);r.current=e;let i=(0,h.useRef)(t);i.current=t;let[a,o]=(0,h.useState)(!1),{progress:s,currentTime:c,element:l}=(0,v.useMediaElements)(),{duration:u,isMuted:f,volume:p,isPlaying:m,playRequested:_}=(0,v.useMediaState)(),{setVolume:y,toggleMute:b,play:ee,pause:x,setDurationPercent:S}=(0,v.useMediaActions)(),C=f||p===0?le:p>50?se:ce;return(0,h.useLayoutEffect)(()=>{if(l.current){let e=l.current;if(e.error&&r.current.onError){r.current.onError(e.error?.message||i.current(`media.unknownError`));return}let t=()=>{r.current.onError&&r.current.onError(e.error?.message||i.current(`media.unknownError`))},n=()=>{e.duration&&r.current.onDuration&&r.current.onDuration(e.duration),r.current.onDimensions&&e instanceof HTMLVideoElement&&r.current.onDimensions(e.videoWidth,e.videoHeight)};return e.addEventListener(`loadedmetadata`,n),e.addEventListener(`error`,t),()=>{e.removeEventListener(`loadedmetadata`,n),e.removeEventListener(`error`,t)}}},[l]),(0,g.jsxs)(ue,{children:[(0,g.jsx)(fe,{"aria-label":t(_?`loading.title`:m?`media.pause`:`media.play`),disabled:_,onClick:()=>{m?x():ee()},children:_?(0,g.jsx)(xe,{stroke:`#999`}):m?(0,g.jsx)(oe,{title:t(`media.pause`)}):(0,g.jsx)(ae,{title:t(`media.play`)})}),(0,g.jsx)(pe,{ref:c,children:`0:00`}),(0,g.jsxs)(me,{"aria-label":t(`media.seek`),title:t(`media.seek`),onClick:e=>{let{left:t,width:n}=e.currentTarget.getBoundingClientRect(),r=(e.pageX-t)/n;S(r)},children:[(0,g.jsx)(ge,{}),u?(0,g.jsx)(he,{ref:s}):null]}),(0,g.jsx)(pe,{children:(0,v.formatTime)(u)}),(0,g.jsxs)(ve,{onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),children:[(0,g.jsx)(ye,{$isOpen:a,children:(0,g.jsxs)(`span`,{children:[(0,g.jsx)(Ce,{htmlFor:n,children:t(`media.changeVolume`)}),(0,g.jsx)(be,{id:n,disabled:f,min:`0`,max:`100`,value:p,onChange:e=>y(Number(e.currentTarget.value))})]})}),(0,g.jsx)(_e,{"aria-label":t(f?`media.unmute`:`media.mute`),onClick:()=>b(),children:(0,g.jsx)(C,{title:t(f?`media.unmute`:`media.mute`)})})]})]})}async function Te(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:(0,f.getValue)(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 Ee(e){let t=(0,d.useTranslations)(`editor-api`),n=(0,d.useTranslations)(`creators`),[r]=(0,h.useState)(()=>e.options.initialData),[i,a]=(0,h.useState)(r.url||``),[o,s]=(0,h.useState)(r.duration||0),[c,l]=(0,h.useState)(``),[u,f]=(0,h.useState)(r.label||{en:[``]});return(0,h.useEffect)(()=>{if(l(``),s(i===r.url&&r.duration||0),i){let e=i.split(`/`).pop()?.split(`.`).shift();f(i===r.url&&r.label?r.label:{en:[e||``]})}},[i,r]),(0,g.jsxs)(p.PaddedSidebarContainer,{children:[c?(0,g.jsxs)(p.ErrorMessage,{children:[(0,g.jsx)(`div`,{role:`alert`,children:n(`errors.media`)}),(0,g.jsxs)(`details`,{children:[(0,g.jsx)(`summary`,{children:n(`errors.details`)}),c]})]}):null,(0,g.jsxs)(m.InputContainer,{$wide:!0,children:[(0,g.jsx)(m.InputLabel,{htmlFor:`audio-url`,children:n(`form.audioUrl`)}),(0,g.jsx)(m.Input,{type:`url`,placeholder:`https://example.org/audio.mp3`,id:`audio-url`,value:i,onChange:e=>a(e.target.value)})]}),i&&!c?(0,g.jsx)(`div`,{children:(0,g.jsx)(m.LanguageFieldEditor,{containerId:`label`,focusId:`label_`,label:t(`fields.label`),fields:u,onSave:e=>f(e.toInternationalString())},`${i}__${o}`)}):null,i&&!c?(0,g.jsx)(v.CanvasPanel.AudioHTML,{media:{url:i,duration:o,type:`Sound`},children:(0,g.jsx)(we,{onError:e=>l(e),onDuration:e=>s(~~e)},`${i}__${o}`)},`${i}__${o}`):null,o&&!c?(0,g.jsxs)(m.FormFieldWrapper,{children:[(0,g.jsx)(m.InputLabel,{htmlFor:`duration`,children:t(`fields.duration`)}),(0,g.jsx)(m.Input,{type:`number`,id:`duration`,value:o,onChange:e=>s(e.target.valueAsNumber)})]}):null,(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:i,duration:o,label:u})},isDisabled:!i||!!c,children:n(`form.addAudio`)})]})}const De=(0,u.defineCreator)({id:`@manifest-editor/audio-annotation`,create:Te,label:`Audio`,labelMessage:{namespace:`creators`,key:`definitions.audio.label`},summary:`Add audio from a direct audio-file link.`,summaryMessage:{namespace:`creators`,key:`definitions.audio.summary`},icon:(0,g.jsx)(p.AudioIcon,{}),render(e){return(0,g.jsx)(Ee,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],async supportsResource(e,t){return w(e)&&((await D(e,t)).startsWith(`audio/`)||O(e,[`.mp3`,`.m4a`,`.wav`,`.ogg`]))?{initialData:{url:e}}:!1},supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}});function Oe(){let[e,t]=(0,h.useState)(!1),[n,r]=(0,h.useState)(!1);async function i(e,n){t(!0),r(!1);try{let t=e();if(!t)throw Error(`Invalid image service request`);let r=await fetch(t);if(!r.ok)throw Error(`Could not load the image service`);n(await r.json())}catch{r(!0)}finally{t(!1)}}return{load:i,loading:e,failed:n}}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 ke(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 Ae(e,t){let n=k(e.service),r=(0,b.createImageServiceRequest)(n),i=(0,b.imageServiceRequestToString)({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:[ke(n,t.config,t.options.parent?.property===`thumbnail`)]})}function A(e){return e.endsWith(`default.jpg`)?(0,b.imageServiceRequestToString)({...(0,b.parseImageServiceRequest)(e),type:`info`}):(0,b.canonicalServiceUrl)(e)}function j(e){let t=(0,d.useTranslations)(`creators`),n=(0,d.useTranslations)(`common`),r=e.options.initialData,i=r.url?A(r.url):``,[a,o]=(0,h.useState)(i||``),{load:s,loading:c,failed:l}=Oe();return(0,g.jsx)(p.PaddedSidebarContainer,{children:(0,g.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries()),i=r.url;i&&s(()=>A(i),t=>{e.runCreate({url:r.url,service:t})})},"aria-busy":c,children:[l?(0,g.jsx)(`div`,{role:`alert`,children:t(`errors.service`)}):null,c?(0,g.jsx)(`output`,{children:n(`status.loading`)}):null,(0,g.jsx)(`div`,{className:`flex gap-2 items-center`,children:(0,g.jsxs)(m.InputContainer,{$wide:!0,children:[(0,g.jsx)(m.InputLabel,{htmlFor:`url`,children:t(`form.serviceUrl`)}),(0,g.jsx)(m.Input,{id:`url`,name:`url`,defaultValue:r.url||``,onPaste:e=>{let t=e.clipboardData.getData(`text/plain`);o(t?A(t):``)},onBlur:e=>o(e.currentTarget.value?A(e.currentTarget.value):``)})]})}),(0,g.jsx)(`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:a.trim()?(0,g.jsx)(ee.ErrorBoundary,{fallbackRender:()=>(0,g.jsx)(`div`,{children:t(`form.invalidService`)}),children:(0,g.jsx)(je,{src:a},a)}):(0,g.jsx)(`div`,{className:`text-grey-600`,children:n(`actions.preview`)})}),(0,g.jsx)(`div`,{children:(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,type:`submit`,isDisabled:!a||c,children:n(`actions.create`)})})]})})}function je({src:e}){let t=(0,d.useTranslations)(`creators`),n=(0,d.useTranslations)(`common`),r=(0,v.useImage)({id:e},{size:{width:512}});return r?(0,g.jsx)(`div`,{className:`h-full`,children:(0,g.jsx)(`img`,{className:`w-full h-full object-contain`,src:r,alt:t(`image.previewAlt`)})}):(0,g.jsx)(`output`,{"aria-label":n(`status.loading`),children:(0,g.jsx)(xe,{})})}async function Me(e,t){if(!e.height||!e.width){let t=await(0,x.getImageDimensions)(e.url);t&&(e.height=t.height,e.width=t.width)}return t.embed({id:e.url,type:`Image`,format:e.format||await(0,x.getFormat)(e.url),height:e.height,width:e.width,service:e.service?Array.isArray(e.service)?e.service:[e.service]:void 0})}function M(e){let t=(0,d.useTranslations)(`creators`),n=(0,d.useTranslations)(`common`),r=e.options.initialData;return(0,g.jsx)(p.PaddedSidebarContainer,{children:(0,g.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.url&&e.runCreate({url:r.url})},children:[(0,g.jsxs)(m.InputContainer,{$wide:!0,children:[(0,g.jsx)(m.InputLabel,{htmlFor:`url`,children:t(`form.imageUrl`)}),(0,g.jsx)(m.Input,{type:`url`,id:`url`,name:`url`,defaultValue:r.url||``})]}),(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,type:`submit`,children:n(`actions.create`)})]})})}const N=(0,u.defineCreator)({id:`@manifest-editor/image-url-creator`,create:Me,label:`Image`,labelMessage:{namespace:`creators`,key:`definitions.imageUrl.label`},summary:`Add an image using a direct image-file link.`,summaryMessage:{namespace:`creators`,key:`definitions.imageUrl.summary`},icon:(0,g.jsx)(p.AddImageIcon,{}),tags:[`image`],async supportsResource(e,t){if(!w(e))return!1;let n=A(e);if(n)try{if(re(await t.json(n)))return!1}catch{}let r=await D(e,t);return r.startsWith(`image/`)||O(e,[`.jpg`,`.jpeg`,`.png`,`.gif`,`.webp`])?{initialData:{url:e,format:r||void 0}}:!1},render(e){return(0,g.jsx)(M,{...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`}});async function Ne(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 Pe(e){return e.trim().startsWith(`<`)?new DOMParser().parseFromString(e,`text/html`).body.textContent||``:e}function Fe(e){let t=(0,d.useTranslations)(`creators`),n=(0,d.useTranslations)(`common`),[r,i]=(0,x.useAnnotationCreatorState)({key:`bodyValue`,initialValue:e.options.initialData?.body||{en:[``]},requestId:e.options.initialData?.requestId}),a=(0,h.useId)();return(0,g.jsxs)(`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})},className:`flex flex-col gap-3`,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(m.InputLabel,{htmlFor:`${a}-url`,children:t(`image.fromUrl`)}),(0,g.jsx)(m.Input,{id:`${a}-url`,name:`url`,type:`url`,required:!0,defaultValue:e.options.initialData?.imageUrl||``,placeholder:`https://example.org/image.jpg`})]}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(m.InputLabel,{htmlFor:`${a}-caption`,children:t(`form.caption`)}),(0,g.jsx)(m.Input,{id:`${a}-caption`,name:`caption`,placeholder:t(`form.describeImage`),onChange:e=>i({en:[e.target.value]}),value:Pe(r.en?.[0]||``)})]}),(0,g.jsx)(`div`,{className:`flex justify-end`,children:(0,g.jsx)(p.ActionButton,{primary:!0,type:`submit`,children:n(`actions.create`)})})]})}const Ie=(0,u.defineCreator)({id:`@manifest-editor/captioned-image-annotation`,create:Ne,label:`Captioned image`,labelMessage:{namespace:`creators`,key:`definitions.captionedImage.label`},summary:`Add an image from a direct link and write its caption.`,summaryMessage:{namespace:`creators`,key:`definitions.captionedImage.summary`},icon:(0,g.jsx)(p.AddImageIcon,{}),async supportsResource(e,t,n){return await N.supportsResource(e,t,n)?{initialData:{imageUrl:e}}:!1},render(e){return(0,g.jsx)(Fe,{...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 Le(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 Re(e){let t=(0,d.useTranslations)(`common`),[n,r]=(0,x.useAnnotationCreatorState)({key:`bodyValue`,initialValue:e.options.initialData?.body||{en:[``]},requestId:e.options.initialData?.requestId}),i=(0,f.getValue)(n).trim()===``;return(0,g.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,g.jsx)(p.HTMLEditor,{value:n.en?.[0]||``,onChange:e=>r({en:[e]})}),(0,g.jsx)(`div`,{className:`flex justify-end`,children:(0,g.jsx)(p.ActionButton,{primary:!0,type:`button`,onPress:()=>{e.runCreate({body:n})},isDisabled:i,children:t(`actions.create`)})})]})}const ze=(0,u.defineCreator)({id:`@manifest-editor/html-annotation`,create:Le,label:`HTML`,labelMessage:{namespace:`creators`,key:`definitions.html.label`},summary:`Write formatted text to display on a canvas.`,summaryMessage:{namespace:`creators`,key:`definitions.html.summary`},icon:(0,g.jsx)(p.HTMLIcon,{}),render(e){return(0,g.jsx)(Re,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),P={canvasInteraction:!0,spatial:!0,async run(e,{vault:t,options:n}){if(e&&e.type===`Annotation`&&n.targetType===`Annotation`){let n=t.get(e),r=n.target;if(!(r&&r.source?.type===`Canvas`))return;let i=r.source,a=t.get(i);if(!a.items)return;let o=t.get(a.items[0]);if(!o||o.items.length<2&&!a.behavior.includes(`multi-image`))return;let s=t.get(n.body)[0],c=n.body[0]?.selector,l=(s.service||[]).find(e=>(0,b.isImageService)(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 S.EditorInstance({vault:t,reference:e}),p=(0,m.centerRectangles)(a,{width:u,height:d},.6);f.annotation.target.setPosition(p)}}},F={canvasInteraction:!0,spatial:!0,async run(e,{vault:t,options:n}){if(e&&e.type===`Annotation`&&n.targetType===`Annotation`){let n=t.get(e),r=n.target;if(!(r&&r.source?.type===`Canvas`))return;let i=r.source,a=t.get(i);if(!a.items||a.behavior.includes(`multi-image`))return;let o=t.get(a.items[0]);if(!o||o.items.length>1)return;let s=t.get(n.body);if(s.length!==1)return;let c=s[0],l=n.body[0]?.selector,u=(c.service||[])[0],d=u?.width||c.width,f=u?.height||c.height,p=c.duration||u?.duration;if(l&&(l.type===`iiif:ImageApiSelector`||l.type===`ImageApiSelector`)&&l.region){let[e,t,n,r]=l.region.split(`,`);d=Number(n)||d,f=Number(r)||f}let m=new S.EditorInstance({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 Be=Object.defineProperty,Ve=(e,t,n)=>t in e?Be(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,I=(e,t,n)=>(Ve(e,typeof t==`symbol`?t:t+``,n),n);function L(e){return e.endsWith(`info.json`)?e:e.endsWith(`/`)?`${e}info.json`:`${e}/info.json`}var He=`http://library.stanford.edu/iiif/image-api/compliance.html#level0`,Ue=`http://library.stanford.edu/iiif/image-api/compliance.html#level1`,We=`http://library.stanford.edu/iiif/image-api/compliance.html#level2`,Ge=`http://library.stanford.edu/iiif/image-api/conformance.html#level0`,Ke=`http://library.stanford.edu/iiif/image-api/conformance.html#level1`,qe=`http://library.stanford.edu/iiif/image-api/conformance.html#level2`,Je=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0`,Ye=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1`,Xe=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2`,Ze=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0`,Qe=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1`,$e=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2`,et=`http://iiif.io/api/image/1/level0.json`,tt=`http://iiif.io/api/image/1/profiles/level0.json`,nt=`http://iiif.io/api/image/1/level1.json`,rt=`http://iiif.io/api/image/1/profiles/level1.json`,it=`http://iiif.io/api/image/1/level2.json`,at=`http://iiif.io/api/image/1/profiles/level2.json`,ot=`http://iiif.io/api/image/2/level0.json`,st=`http://iiif.io/api/image/2/profiles/level0.json`,ct=`http://iiif.io/api/image/2/level1.json`,lt=`http://iiif.io/api/image/2/profiles/level1.json`,ut=`http://iiif.io/api/image/2/level2.json`,dt=`http://iiif.io/api/image/2/profiles/level2.json`,ft=`level0`,pt=`level1`,mt=`level2`,ht=`http://iiif.io/api/image/2/level0`,gt=`http://iiif.io/api/image/2/level1`,_t=`http://iiif.io/api/image/2/level2`,vt=[_t,We,qe,Xe,$e,it,at,ut,dt,mt],yt=[...vt,gt,Ue,Ke,Ye,Qe,nt,rt,ct,lt,pt],bt=[ht,gt,_t,He,Ue,We,Ge,Ke,qe,Je,Ye,Xe,Ze,Qe,$e,et,tt,nt,rt,it,at,ot,st,ct,lt,ut,dt,ft,pt,mt],xt={extraFormats:[`jpg`],extraQualities:[`default`],extraFeatures:[`sizeByWhListed`]},St={extraFormats:[`jpg`],extraQualities:[`default`],extraFeatures:[`baseUriRedirect`,`cors`,`jsonldMediaType`,`regionByPx`,`regionSquare`,`sizeByWhListed`,`sizeByH`,`sizeByW`,`sizeByWh`]},Ct={extraFormats:[`jpg`,`png`],extraQualities:[`default`],extraFeatures:[`baseUriRedirect`,`cors`,`jsonldMediaType`,`regionByPct`,`regionByPx`,`regionSquare`,`rotationBy90s`,`sizeByWhListed`,`sizeByConfinedWh`,`sizeByH`,`sizeByPct`,`sizeByW`,`sizeByWh`]};function wt(e){return vt.indexOf(e)===-1?yt.indexOf(e)===-1?xt:St:Ct}function Tt(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=wt(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 Et(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 Dt(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 Ot(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 kt(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 At(e,t=``){let{path:n,scheme:r,server:i,prefix:a}=kt(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:Et(u),size:Dt(l),rotation:Ot(c),quality:p[0],format:p[1]}}function jt(e){let t=At(L(e.id));if(t.type!==`info`)throw Error(`Invalid service URL`);let n=Tt(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 Mt(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 Nt(e,t,n){let r=n.length,i=[];for(let a=0;a<r;a++){let r=n[a];r&&i.push({width:Math.floor(e/r),height:Math.floor(t/r)})}return i}function R(e){if(e[`@id`])return e[`@id`];if(e.id)return e.id}function z(e){if(!e||!e.profile||!R(e))return!1;let t=Array.isArray(e.profile)?e.profile:[e.profile];for(let e of t)if(typeof e==`string`&&bt.indexOf(e)!==-1)return!0;return!1}function Pt(e){if(!z(e))return!1;let t=Array.isArray(e.profile)?e.profile:[e.profile];for(let e of t)if(typeof e==`string`){if(yt.indexOf(e)!==-1)return!0}else{let t=[...e.supports||[],...e.extraFeatures||[]];if(t.indexOf(`regionByPx`)!==-1&&(t.indexOf(`sizeByW`)!==-1||t.indexOf(`sizeByWh`)!==-1))return!0}return!1}function B(e,t){if(t&&t.profile){let n=t.profile;if(n){let t=Array.isArray(n)?n:[n];return t.includes(`level${e}`)||t.includes(`http://iiif.io/api/image/2/level${e}.json`)||t.includes(`http://iiif.io/api/image/1/level${e}.json`)||t.includes(`http://iiif.io/api/image/1/profiles/level${e}.json`)}}return!1}function V(e){return z(e)?B(0,e)?0:B(1,e)?1:B(2,e)?2:null:null}function Ft(e){return(e[`@context`]?Array.isArray(e[`@context`])?e[`@context`]:[e[`@context`]]:[]).indexOf(`http://iiif.io/api/image/3/context.json`)!==-1}function It(e){if(!Pt(e))return[];let t=[],n=Array.isArray(e.profile)?e.profile:[e.profile],r=n.length;for(let t=0;t<r;t++){let r=n[t];if(r&&typeof r!=`string`&&(r.maxHeight||r.maxWidth))return[{id:R(e),type:`variable`,minWidth:0,minHeight:0,maxHeight:r.maxHeight||r.maxWidth,maxWidth:r.maxWidth||r.maxHeight,level:V(e),version:e[`@context`]===`http://iiif.io/api/image/3/context.json`?3:2}]}if(e.tiles){let n=e.tiles.length;for(let r=0;r<n;r++){let n=e.tiles[r];n&&(n.height||n.width)&&t.push({id:R(e),type:`variable`,minHeight:0,minWidth:0,maxHeight:n.height||n.width,maxWidth:n.width,level:V(e),version:Ft(e)?3:2})}}return t}function Lt(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 Rt(e){if(e[`@type`])return e[`@type`];if(e.type)return e.type}function zt(e){if(typeof e==`string`)return Lt(e);let t=Rt(e);if(t!==`Image`&&t!==`sc:Image`)return null;let n=e,r=R(n);return r?r&&n.width&&n.height?{id:r,type:`fixed`,width:n.width,height:n.height,unsafe:!0}:Lt(r):null}function Bt(e){return z(e)?(e&&e.sizes?e.sizes:[]).map(t=>({id:R(e),type:`fixed-service`,height:t.height,width:t.width,level:V(e),version:Ft(e)?3:2})):[]}function Vt(e){let t=[],n=e.length;for(let r=0;r<n;r++){let n=e[r];if(!n)continue;let i=Bt(n);i.length&&t.push(...i);let a=It(n);a.length&&t.push(...a)}return t}function Ht(e){let t=e.service?Array.isArray(e.service)?e.service:[e.service]:[],n=t.length,r=[];for(let e=0;e<n;e++)z(t[e])&&r.push(t[e]);return r}function Ut(e,t=!0,n){let r=[],i=zt(e);if(i===null)return r;let a=e;if(r.push(i),t&&a&&a.width&&a.height){let e=[],t=Ht(a);for(let r of t){let t={id:R(r),width:a.width,height:a.height};if(n.canLoadSync(t)){let r=n.loadServiceSync(t);r&&(r.height||(r.height=a.height),r.width||(r.width=a.width),e.push(...Vt([r])))}}if(e.length)return r.push(...e),r}return a.service&&r.push(...Vt(a.service)),r}function Wt({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 Gt({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 Kt(e){return`${e.mirror?`!`:``}${(e.angle||0)%360}`}function qt(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,Wt(a),Gt(i),Kt(o),`${c}.${s}`].filter(Boolean).join(`/`)}function H(e,t,n){let r=jt({"@context":e.version===3?`http://iiif.io/api/image/3/context.json`:`http://iiif.io/api/image/2/context.json`,id:L(R(e)),profile:e.level===null||typeof e.level>`u`?`level0`:`level${e.level}`,type:e.version===3?`ImageService3`:`ImageService2`});if(r.type!==`image`)throw Error(`Invalid service`);return r.size.max=!1,r.size.width=t,r.size.height=n,{id:qt(r),type:`fixed`,width:t,height:n||e.height/(e.width||1)*t,unsafe:e.width>t}}function U(e){let t=e.replace(/(https?:\/\/)?(www.)?/i,``);return t.indexOf(`/`)===-1?t:t.split(`/`)[0]}function Jt(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 Yt(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),Jt(r,t,e)){if(r.preferFixedSize&&e.unsafe){i(()=>`We found an image that was marked as unsafe, but it was the best size. (${e.id})`,4),o.push(e);return}r.returnAllOptions&&t&&o.push(t),i(()=>`We found a new image that was the best size. (${e.id})`,4),s=e}else r.returnAllOptions&&o.push(e)};i(()=>`The input shows we have ${t.length} list(s) of candidates to choose from.`);let l=t.length;for(let e=0;e<l;e++){let n=t[e]();i(()=>`Candidate group ${e}: ${JSON.stringify(n,null,2)}`,1);let o=n.length;i(()=>`Checking candidate list number ${e} and found ${o} potential ways of creating image(s)`,1);for(let e=0;e<o;e++){let t=n[e];i(()=>`-> Checking candidate ${e}`,1),t.type===`unknown`&&r.atAnyCost&&(i(()=>`We've found an unknown image type, adding this to the "last resort" list`,2),a.push(t)),t.type===`fixed`&&(t.unsafe?(i(()=>`We've found an unsafe fixed image type, adding this to the "last resort" list`,2),a.push(t)):(i(()=>`We've found a fixed size image, checking if it matches the request`,2),c(t,s))),t.type===`fixed-service`&&(r.unsafeImageService?(i(()=>`Checking for an image from the tile source, without calculating the right height and width (unsafeImageService)`,2),c(H(t,r.width,r.height),s)):(i(()=>`Checking for an image from the tile source 3`,2),c(H(t,t.width,t.height),s))),t.type===`variable`&&t.maxWidth&&c(H({id:t.id,type:`fixed-service`,width:t.maxWidth,height:t.maxWidth,level:t.level,version:t.version},t.maxWidth),s)}if(s&&!r.returnAllOptions){if(s.unsafe||r.allowUnsafe)continue;i(()=>`We found a match in choice list number ${e}, no searching any more`);break}}return r.atAnyCost&&o.length===0?(i(()=>s?`We found an image! ${s.id} of type ${s.type}`:`We found no images, but "atAnyCost" is set, so returning that`),{best:s||a[0]||null,fallback:a.slice(1),log:n}):r.returnAllOptions?(i(()=>`Returning all options that we have found`),{best:(r.atAnyCost?s||o[0]||a[0]:s||o[0])||null,fallback:[...o,...a],log:n}):(i(()=>`Returning the best image that we found, and a fallback`),{best:s||o[0]||null,fallback:s?o:o.slice(1),log:n})}function Xt(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 Zt(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 Qt(e){return B(0,e)}new class{constructor(e={}){I(this,`config`,{verificationsRequired:1,approximateServices:!1,enableFetching:!0,disableThrottling:!1}),I(this,`fetchingCount`,0),I(this,`imageServices`,{}),I(this,`knownImageServers`,{}),this.config=Object.assign(this.config,e)}setConfig(e){Object.assign(this.config,e)}sample(e,t,n=!0){let r=U(R(e)),i=L(R(e)),a=this.knownImageServers[r];return this.imageServices[i]=Object.assign(e,{real:!0}),!a&&e.tiles&&!Qt(e)?(this.knownImageServers[r]={verifications:0,malformed:!1,root:r,preLoaded:n,sampledId:R(e),verified:!1,server:null,result:{context:e[`@context`]||[],sampledProfile:e.profile,resourceServiceRatio:t&&e.height?t.height/e.height:1,sampledSizes:e.sizes||[],sizeRatios:Mt(e.width,e.height,e.sizes||[]),sampledTiles:e.tiles||[]}},!0):this.verify(e)}preLoad(e,t=!0){this.knownImageServers[e.root]=e,t&&(this.knownImageServers[e.root].malformed=!1,this.knownImageServers[e.root].verifications=this.config.verificationsRequired)}predict(e,t=!1,n=!1){let r=e?.source,i=U(R(e)),a=this.knownImageServers[i],o=L(R(e));return this.imageServices[o]?this.imageServices[o]||null:!this.config.approximateServices||!a||!a.result||!(r?.height||e.height)||!(r?.width||e.width)||!n&&(a.malformed||a.verifications<this.config.verificationsRequired)||Qt(e.source)?null:(this.imageServices[o]||(this.imageServices[o]={"@context":a.result.context,"@id":R(e),id:R(e),protocol:`http://iiif.io/api/image`,tiles:r?.tiles||Xt(e.width,e.height,a.result.sampledTiles),sizes:r?.sizes||Nt(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 Yt(t,[()=>r,()=>i])}async getImageCandidates(e,t=!0){let n=e;if(t&&n&&n.height&&n.width){let e=Ht(n);for(let t of e){let e={id:R(t),width:t.width?t.width:n.width,height:t.height?t.height:n.height,source:t};await this.loadService(e)}}return Ut(e,t,this)}async verify(e){let t=this.predict(e,!1,!0),n=await this.fetchService(R(e));if(!t)return!1;let r=t.height===n.height&&t.width===n.width&&t[`@context`]===n[`@context`]&&Zt(t.sizes||[],n.sizes||[]);if(r){let t=U(R(e)),n=this.knownImageServers[t];n&&(n.verifications+=1,n.verifications>=this.config.verificationsRequired&&(n.verified=!0))}return r}canLoadSync(e){let t=typeof e==`string`?e:R(e),n=L(t);if(this.imageServices[n])return!0;let r=this.knownImageServers[U(t)];return!!(r&&!r.malformed&&r.verifications>=this.config.verificationsRequired)}async markAsMalformed(e){return this.knownImageServers[U(R(e))].malformed=!0,this.loadService(e,!0)}async fetchService(e,t=!1){let n=L(e),r=this.imageServices[n];if(r&&(!t||r.real))return r;if(!this.config.enableFetching)throw Error(`Fetching is not enabled`);let i=await this.fetch(n).then(e=>e.json());return!i.id&&i[`@id`]&&(i.id=i[`@id`]),i.id!==e&&(i.id=e,i[`@id`]&&(i[`@id`]=e)),this.imageServices[n]=Object.assign(i,{real:!0}),this.imageServices[n]}async fetch(e,t){return fetch(e,t)}async loadService(e,t=!1){if(!this.config.disableThrottling){let e=!0;for(;e;)if(this.fetchingCount>=this.config.verificationsRequired)await new Promise(e=>setTimeout(e,500));else{e=!1;break}}let n=this.knownImageServers[U(R(e))];if(n&&!n.malformed&&!t){await n.result;let t=this.loadServiceSync(e);if(t)return t}this.fetchingCount++;let r=await this.fetchService(R(e),t);return this.fetchingCount--,r.real&&this.sample(r,e),r}loadServiceSync(e){let t=L(R(e));return this.imageServices[t]?this.imageServices[t]:this.config.approximateServices?this.predict(e):null}};const W={canvasInteraction:!0,spatial:!0,async run(e,{vault:t,options:n}){if(e&&e.type===`Annotation`&&n.targetType===`Annotation`){let n=t.get(e),r=n.target;if(!(r&&r.source?.type===`Canvas`))return;let i=r.source,a=t.get(i);if(!a.items||a.behavior.includes(`multi-image`)||!t.get(a.items[0]))return;let o=Array.isArray(n.body)?n.body[0]:n.body;if(o.type===`SpecificResource`&&o.selector)return;let s=t.get(n.body)[0],c=(s.service||[]).find(e=>z(e));c&&c.width&&c.height&&(c.width!==s.width&&t.modifyEntityField({id:s.id,type:`ContentResource`},`width`,c.width),c.height!==s.height&&t.modifyEntityField({id:s.id,type:`ContentResource`},`height`,c.height))}}};async function $t(e,t){let n={id:t.generateId(`annotation`),type:`Annotation`},r=t.options.targetType,i=await(0,u.creatorHelper)(t,`Annotation`,`body`,`@manifest-editor/image-service-creator`)(e,{parent:{resource:n,property:`body`}});if(r===`Annotation`)return{...n,body:[i],motivation:e.motivation||`painting`,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]}),c;return e.service?.sizes&&(c=await(0,u.creatorHelper)(t,`Canvas`,`thumbnail`,`@manifest-editor/thumbnail-image`)({service:e.service,width:e.thumbnailSize||400})),t.embed({id:r,type:`Canvas`,label:e.label||{en:[`Untitled canvas`]},height:i.resource.height||1e3,width:i.resource.width||1e3,thumbnail:c?[c]:void 0,items:[s]})}}function en(e){return(0,g.jsx)(j,{...e})}const G=(0,u.defineCreator)({id:`@manifest-editor/image-service-creator`,configKey:`iiif-image-services`,create:Ae,label:`IIIF image`,labelMessage:{namespace:`creators`,key:`definitions.service.label`},summary:`Add a zoomable image using an IIIF image service or info.json link.`,summaryMessage:{namespace:`creators`,key:`definitions.service.summary`},icon:(0,g.jsx)(p.IIIFLogo,{}),tags:[`image`,`image-service`],async supportsResource(e,t){if(!w(e))return!1;let n=A(e);if(!n)return!1;let r=await T(n,t);return re(r)?{initialData:{url:e,service:r}}:!1},render(e){return(0,g.jsx)(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`}}}),tn=(0,u.defineCreator)({id:`@manifest-editor/image-service-annotation`,create:$t,label:`IIIF image`,labelMessage:{namespace:`creators`,key:`definitions.service.label`},dependencies:[`@manifest-editor/image-service-creator`],summary:`Add a zoomable image using an IIIF image service or info.json link.`,summaryMessage:{namespace:`creators`,key:`definitions.service.summary`},tags:[`image`,`image-service`],icon:(0,g.jsx)(p.IIIFLogo,{}),render(e){return(0,g.jsx)(en,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supportsResource:G.supportsResource,supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[W,F,P],staticFields:{type:`Annotation`}});async function nn(e,t){let n={id:t.generateId(`annotation`),type:`Annotation`},r=t.options.targetType,i=await(0,u.creatorHelper)(t,`Annotation`,`body`,`@manifest-editor/image-url-creator`)(e,{parent:{resource:n,property:`body`}});if(r===`Annotation`)return t.embed({...n,body:[i],motivation:e.motivation||`painting`,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 canvas`]},height:i.resource.height||1e3,width:i.resource.width||1e3,items:[s]})}throw Error(`Unsupported target type`)}function rn(e){return(0,g.jsx)(M,{...e})}const an=(0,u.defineCreator)({id:`@manifest-editor/image-url-annotation`,create:nn,label:`Image`,labelMessage:{namespace:`creators`,key:`definitions.imageUrl.label`},dependencies:[`@manifest-editor/image-url-creator`],summary:`Add an image using a direct image-file link.`,summaryMessage:{namespace:`creators`,key:`definitions.imageUrl.summary`},tags:[`image`],icon:(0,g.jsx)(p.AddImageIcon,{}),render(e){return(0,g.jsx)(rn,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supportsResource:N.supportsResource,supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[W,F,P],staticFields:{type:`Annotation`}});async function on(e,t){let n=[],r=(0,u.creatorHelper)(t,`Annotation`,`body`,`@manifest-editor/image-url-creator`);for(let i of e.images)n.push(await r(i,t.options));return n}function K(e){let t=(0,d.useTranslations)(`creators`),n=(0,d.useTranslations)(`common`);return(0,g.jsx)(p.PaddedSidebarContainer,{children:(0,g.jsxs)(p.Form.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:[(0,g.jsxs)(p.Form.InputContainer,{className:`mb-4`,children:[(0,g.jsx)(p.Form.Label,{children:t(`form.urlList`)}),(0,g.jsx)(p.Form.TextArea,{"aria-label":t(`form.urlList`),name:`urls`,rows:`10`,defaultValue:e.options.initialData?.images?.map(e=>e.url).join(`
|
|
98
|
+
`)||``})]}),(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,type:`submit`,children:n(`actions.create`)})]})})}async function sn(e,t){let n=[],r=(0,u.creatorHelper)(t,`AnnotationPage`,`items`,`@manifest-editor/image-url-annotation`);for(let i of e.images)n.push(await r(i,t.options));return n}const cn=(0,u.defineCreator)({id:`@manifest-editor/image-url-list-annotation`,create:sn,label:`Multiple images`,labelMessage:{namespace:`creators`,key:`definitions.imageList.label`},dependencies:[`@manifest-editor/image-url-annotation`],summary:`Add several images using one direct image link per line.`,summaryMessage:{namespace:`creators`,key:`definitions.imageList.summary`},tags:[`image`],icon:(0,g.jsx)(p.ImageListIcon,{}),render(e){return(0,g.jsx)(K,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[W,F,P],staticFields:{type:`Annotation`}}),ln=(0,u.defineCreator)({id:`@manifest-editor/no-body-annotation`,create:un,label:`Highlight`,labelMessage:{namespace:`creators`,key:`definitions.highlight.label`},summary:`Mark a region of the canvas without adding any content.`,summaryMessage:{namespace:`creators`,key:`definitions.highlight.summary`},icon:(0,g.jsx)(p.EmptyCanvasIcon,{}),resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`target`],supports:{initialData:!0,parentTypes:[`AnnotationPage`],parentFields:[`items`],disallowPainting:!0},actionButton:`Create highlight`,actionButtonMessage:{namespace:`creators`,key:`definitions.highlight.create`},sideEffects:[],staticFields:{type:`Annotation`}});function un(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 dn({media:e,onError:t,duration:n,onDuration:r,onDimensions:i}){let[{element:a,currentTime:o,progress:s},c,l]=(0,v.useSimpleMediaPlayer)({duration:n});return(0,g.jsxs)(v.MediaPlayerProvider,{element:a,state:c,actions:l,currentTime:o,progress:s,children:[(0,g.jsx)(`div`,{style:{maxHeight:400,aspectRatio:`${e.width}/${e.height}`,position:`relative`},children:(0,g.jsx)(v.CanvasPanel.VideoHTML,{element:a,media:e,playPause:l.playPause})}),(0,g.jsx)(we,{onError:t,onDuration:r,onDimensions:i})]})}async function fn(e,t){let n={id:t.generateId(`annotation`),type:`Annotation`},r=t.options.targetType,i=t.embed({id:e.url,type:`Video`,format:`video/mp4`,width:e.width,height:e.height,duration:e.duration||0});if(r===`Annotation`)return t.embed({...n,label:(0,f.getValue)(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:(0,f.getValue)(e.label)?e.label:void 0,duration:e.duration||0,width:e.width,height:e.height,items:[s]})}}function pn(e){let t=(0,d.useTranslations)(`editor-api`),n=(0,d.useTranslations)(`creators`),[r]=(0,h.useState)(()=>e.options.initialData),[i,a]=(0,h.useState)(r.url||``),[o,s]=(0,h.useState)(r.duration||0),[c,l]=(0,h.useState)(r.width||0),[u,f]=(0,h.useState)(r.height||0),[_,v]=(0,h.useState)(``),[y,b]=(0,h.useState)(r.label||{en:[``]});return(0,h.useEffect)(()=>{v(``);let e=i===r.url?r:{};if(s(e.duration||0),l(e.width||0),f(e.height||0),i){let e=i.split(`/`).pop()?.split(`.`).shift();b(i===r.url&&r.label?r.label:{en:[e||``]})}},[i,r]),(0,g.jsxs)(p.PaddedSidebarContainer,{children:[_?(0,g.jsxs)(p.ErrorMessage,{children:[(0,g.jsx)(`div`,{role:`alert`,children:n(`errors.media`)}),(0,g.jsxs)(`details`,{children:[(0,g.jsx)(`summary`,{children:n(`errors.details`)}),_]})]}):null,(0,g.jsxs)(m.InputContainer,{$wide:!0,children:[(0,g.jsx)(m.InputLabel,{htmlFor:`video-url`,children:n(`form.videoUrl`)}),(0,g.jsx)(m.Input,{type:`url`,placeholder:`https://example.org/video.mp4`,id:`video-url`,value:i,onChange:e=>a(e.target.value)})]}),i&&!_?(0,g.jsx)(`div`,{children:(0,g.jsx)(m.LanguageFieldEditor,{containerId:`label`,focusId:`label_`,label:t(`fields.label`),fields:y,onSave:e=>b(e.toInternationalString())},`${i}__${o}`)}):null,i&&!_?(0,g.jsx)(`div`,{className:`mb-4 bg-black`,children:(0,g.jsx)(dn,{duration:o,onDuration:e=>s(e),onError:e=>v(e),media:{url:i,duration:o,height:u,width:c,type:`Video`},onDimensions:(e,t)=>{l(e||0),f(t||0)}})}):null,!_&&(o||c||u)?(0,g.jsx)(m.InputContainer,{$wide:!0,children:(0,g.jsx)(m.DimensionsTriplet,{widthId:`width`,width:c||0,changeWidth:e=>l(e),heightId:`height`,height:u||0,changeHeight:e=>f(e),durationId:`duration`,duration:o||0,changeDuration:e=>s(e)})}):null,(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:i,duration:o,label:y,width:c,height:u})},isDisabled:!i||!!_,children:n(`form.addVideo`)})]})}const mn=(0,u.defineCreator)({id:`@manifest-editor/video-annotation`,create:fn,label:`Video`,labelMessage:{namespace:`creators`,key:`definitions.video.label`},summary:`Add video from a direct video-file link. Use YouTube for YouTube videos.`,summaryMessage:{namespace:`creators`,key:`definitions.video.summary`},icon:(0,g.jsx)(p.VideoIcon,{}),render(e){return(0,g.jsx)(pn,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],async supportsResource(e,t){return w(e)&&((await D(e,t)).startsWith(`video/`)||O(e,[`.mp4`,`.m4v`,`.webm`,`.mov`]))?{initialData:{url:e}}:!1},supports:{onlyPainting:!0,initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),hn=()=>(0,g.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`24px`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,transform:`scale(-1, 1)`,children:(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`rect`,{fill:`none`,height:`24`,width:`24`}),(0,g.jsx)(`path`,{d:`M16,20H2V4h14V20z M18,8h4V4h-4V8z M18,20h4v-4h-4V20z M18,14h4v-4h-4V14z`})]})}),gn=(0,u.defineCreator)({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`,labelMessage:{namespace:`creators`,key:`definitions.annotationPage.label`},summary:`Create an empty page to organise annotations.`,summaryMessage:{namespace:`creators`,key:`definitions.annotationPage.summary`},icon:(0,g.jsx)(hn,{}),resourceType:`AnnotationPage`,resourceFields:[`id`,`type`,`items`],supports:{parentTypes:[`Manifest`,`Canvas`,`Range`],parentFieldMap:{Manifest:[`annotations`],Canvas:[`items`,`annotations`],Range:[`annotations`]}}});function q(e){if(!(e instanceof Error))return;let t={"Enter an absolute HTTP or HTTPS URL for the WebVTT file.":`vttUrl`,"WebVTT captions must belong to a Canvas.":`vttCanvas`,"Could not load the image service":`service`,"Could not find Manifest":`manifest`,"Could not find Manifest ID":`manifest`,"Manifest not found":`manifest`,"Collection not found":`collection`,"Canvas not found":`canvas`},n=Object.hasOwn(t,e.message)?t[e.message]:void 0;return n?{code:n,message:{namespace:`creators`,key:`errors.${n}`}}:void 0}const _n=e=>(0,g.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,height:`1em`,width:`1em`,...e,children:[(0,g.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,g.jsx)(`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 vn(e,t){let n=e.url.trim();if(!w(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`,...(0,f.getValue)(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 yn(e){let t=(0,d.useTranslations)(`editor-api`),n=(0,d.useTranslations)(`creators`),[r,i]=(0,h.useState)(e.options.initialData?.label||{en:[`Captions in WebVTT format`]});return(0,g.jsx)(p.PaddedSidebarContainer,{children:(0,g.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.currentTarget),i=String(n.get(`url`)||``).trim(),a=String(n.get(`language`)||``).trim();e.runCreate({url:i,label:(0,f.getValue)(r)?r:void 0,language:a||void 0})},children:[(0,g.jsx)(`p`,{id:`vtt-help`,className:`mb-4 text-sm text-gray-600`,children:n(`form.vttHelp`)}),(0,g.jsxs)(m.InputContainer,{$wide:!0,children:[(0,g.jsx)(m.InputLabel,{htmlFor:`vtt-url`,children:n(`form.vttUrl`)}),(0,g.jsx)(m.Input,{id:`vtt-url`,name:`url`,type:`url`,required:!0,placeholder:`https://example.org/captions.vtt`,pattern:`https?://.+`,title:n(`form.absoluteUrl`),"aria-describedby":`vtt-help`,defaultValue:e.options.initialData?.url||``})]}),(0,g.jsx)(m.LanguageFieldEditor,{focusId:`vtt-label`,label:t(`fields.label`),fields:r,onSave:e=>i(e.toInternationalString())}),(0,g.jsxs)(m.InputContainer,{$wide:!0,children:[(0,g.jsx)(m.InputLabel,{htmlFor:`vtt-language`,children:n(`form.languageCode`)}),(0,g.jsx)(m.Input,{id:`vtt-language`,name:`language`,type:`text`,placeholder:`en`,title:n(`form.languageCodeHelp`),defaultValue:e.options.initialData?.language??`en`})]}),(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,type:`submit`,children:n(`form.addCaptions`)})]})})}const bn=(0,u.defineCreator)({validationErrorMessage:q,id:`@manifest-editor/vtt-annotation-page`,label:`WebVTT captions`,labelMessage:{namespace:`creators`,key:`definitions.vtt.label`},tags:[`captions`],summary:`Add subtitles or captions from a WebVTT file to an audio or video canvas.`,summaryMessage:{namespace:`creators`,key:`definitions.vtt.summary`},icon:(0,g.jsx)(_n,{}),create:vn,render:e=>(0,g.jsx)(yn,{...e}),resourceType:`AnnotationPage`,resourceFields:[`id`,`type`,`items`],supports:{parentTypes:[`Canvas`],parentFields:[`annotations`],custom:({resource:e},t)=>(0,S.canvasHasAv)(t,e)}}),xn=(0,u.defineCreator)({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:[]}),i=t.embed({id:n,type:`Canvas`,label:e.label||{en:[``]},height:e.height||2e3,width:e.width||3e3,items:[r]}),a=S.canvasLayouts.find(t=>t.id===e.layoutId);return a&&(i.meta[S.CANVAS_LAYOUT_META]={state:(0,S.createCanvasLayoutState)(a)}),i},render:e=>(0,g.jsx)(m.CanvasLayoutForm,{runCreate:e.runCreate}),label:`Empty canvas`,labelMessage:{namespace:`creators`,key:`definitions.emptyCanvas.label`},summary:`Start with an image layout or a blank canvas`,summaryMessage:{namespace:`creators`,key:`definitions.emptyCanvas.summary`},icon:(0,g.jsx)(p.EmptyCanvasIcon,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`,`height`,`width`,`items`],supports:{parentTypes:[`Manifest`],parentFields:[`items`]}});var Sn=process.env.NODE_ENV===`production`,J=`Invariant failed`;function Y(e,t){if(!e){if(Sn)throw Error(J);var n=typeof t==`function`?t():t,r=n?`${J}: ${n}`:J;throw Error(r)}}const Cn=(0,u.defineCreator)({id:`@manifest-editor/internal-canvas`,create:Tn,label:`Existing canvas`,labelMessage:{namespace:`creators`,key:`definitions.internalCanvas.label`},summary:`Choose a canvas from this manifest.`,summaryMessage:{namespace:`creators`,key:`definitions.internalCanvas.summary`},icon:(0,g.jsx)(hn,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`],supports:{parentTypes:[`Manifest`],parentFields:[`start`]},render:e=>(0,g.jsx)(wn,{...e})});function wn(e){let t=(0,d.useTranslations)(`creators`),n=(0,x.useNotebookBrowserPlugins)(),{runCreate:r}=e,i=(0,h.useRef)({t,runCreate:r});i.current={t,runCreate:r};let a=(0,v.useManifest)(),o=(0,v.useVault)(),s=(0,h.useMemo)(()=>({canSelectCanvas:!0,canSelectCollection:!1,canSelectManifest:!1,canCropImage:!1,alwaysShowNavigationArrow:!1,multiSelect:!1}),[]),c=(0,h.useMemo)(()=>[{type:`callback`,cb:e=>i.current.runCreate({id:e}),get label(){return i.current.t(`browser.selectCanvas`)},supportedTypes:[`Canvas`],format:{type:`url`}}],[i]),l=(0,h.useMemo)(()=>({saveToLocalStorage:!1,restoreFromLocalStorage:!1,initialHistory:[{url:a?.id,resource:a?.id,route:`/manifest?id=${encodeURIComponent(a?.id||``)}`,metadata:{type:`Manifest`}}]}),[a?.id]);return Y(a,`Manifest is not loaded`),(0,g.jsx)(v.VaultProvider,{vault:o,children:(0,g.jsx)(p.LocalizedIIIFBrowser,{plugins:n,vault:o,navigation:s,output:c,history:l})})}async function Tn(e,t){let n=t.vault.get({id:e.id,type:`Canvas`},{skipSelfReturn:!0});return Y(n,`Selected Canvas is not loaded`),t.embed(n)}async function En(e,t){return t.embed({id:t.generateId(`html/${e.language}`),language:e.language,type:`TextualBody`,format:`text/html`,value:e.body||``})}function Dn(e){let t=(0,d.useTranslations)(`common`),{i18n:n}=(0,x.useConfig)(),[r,i]=(0,h.useState)(e.options.initialData?.body??`<p></p>`),[a,o]=(0,h.useState)(e.options.initialData?.language??n.defaultLanguage);return(0,g.jsxs)(p.PaddedSidebarContainer,{children:[(0,g.jsx)(p.HTMLEditor,{value:r,onChange:e=>i(e)}),(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({language:a,body:r})},children:t(`actions.create`)})]})}const On=(0,u.defineCreator)({id:`@manifest-editor/html-body-creator`,create:En,label:`Formatted text`,labelMessage:{namespace:`creators`,key:`definitions.htmlBody.label`},summary:`Write formatted text as the content of an annotation.`,summaryMessage:{namespace:`creators`,key:`definitions.htmlBody.summary`},icon:(0,g.jsx)(p.TextIcon,{}),render(e){return(0,g.jsx)(Dn,{...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 X(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 kn(e,t){let n=t.options.targetType,r=e.output,i=[];for(let{resource:a,selector:o,parent:s,rotation:c}of r){let r=a.type,u=new f.Vault;if((0,b.isImageService)(a)||r===`ImageService`){let r=(0,b.isImageService)(a)?a:await fetch((0,b.canonicalServiceUrl)(a.id)).then(e=>{if(!e.ok)throw Error(`Could not load the image service`);return e.json()}),s=await t.create(`@manifest-editor/image-service-creator`,{url:a.id,service:r},{targetType:`ContentResource`}),u=l.n(o?.type===`BoxSelector`?{width:Math.floor(o.spatial.width),height:Math.floor(o.spatial.height)}:{width:r.width,height:r.height},c);e.trackSize?.(u);let d=l.t(o,c);if(d&&(s=t.embed({type:`SpecificResource`,source:s,selector:d})),n===`ContentResource`){i.push(s);continue}let f=n===`Canvas`?t.generateId(`Canvas`):void 0,p=t.embed({id:t.generateId(`Annotation`),type:`Annotation`,motivation:`painting`,body:s,target:f??t.getTarget()});i.push(n===`Canvas`?t.embed({id:f,type:`Canvas`,label:a.label||{en:[`Untitled canvas`]},...u,items:[t.embed({id:t.generateId(`AnnotationPage`),type:`AnnotationPage`,items:[p]})]}):p);continue}if((n===`Canvas`||n===`Annotation`||n===`ContentResource`)&&r===`Canvas`){let r=a.id,d=s?.type===`Manifest`?s.id:void 0;Y(d,`Could not find Manifest`);let f=u.get({id:d,type:`Manifest`})||await u.loadManifest(d);Y(f,`Manifest not found`);let p=t.config.addManifestMetadataToCanvas!==!1;e.trackManifest?.({requiredStatement:f.requiredStatement,rights:f.rights,...p?{metadata:f.metadata||[]}:{},partOf:[{id:d,type:`Manifest`,label:f.label}]});let m=e=>{if(e.type===`SpecificResource`&&e.source)return{...e,source:m(e.source)};let t=e.type===`Canvas`&&!p?{}:{metadata:f.metadata||[]};return{requiredStatement:f.requiredStatement,rights:f.rights,...t,...e,partOf:[{id:d,type:`Manifest`,label:f.label}]}},h=f.items.find(e=>e.id===r);Y(h,`Canvas not found`);let g=u.get(h),_=l.t(o,c);if(n===`Canvas`&&!_){let e=u.toPresentation3(g);e.label||(e.label={en:[`Untitled canvas`]}),t.vault.loadSync(e.id,m(e)),i.push(t.embed(t.vault.get({id:e.id,type:`Canvas`})));continue}let v=u.get(g.items[0]),y=u.get(v.items[0]);if(n===`Annotation`||n===`Canvas`||n===`ContentResource`){let r=u.toPresentation3(y);r.id=t.generateId(`Annotation`);let a=null,s={width:0,height:0};if(r?.body?.service){let t=r?.body.width,n=r?.body.height;a=(0,b.getImageServices)(r?.body)[0],a&&(!a.width||!a.height)&&(a.width=t,a.height=n),s.width=t,s.height=n,e.trackSize&&e.trackSize(s)}if(_){let u={...r.body},d=``;if(a&&o?.type===`BoxSelector`){let e=a.id||a[`@id`]||``;e&&(u.id=X(e,o.spatial,`max`,c),d=X(e,o.spatial,`512,`,c))}r.body={id:t.generateId(`SpecificResource`,y),type:`SpecificResource`,source:u,selector:_};let f=l.n(o?.type===`BoxSelector`?{width:~~o.spatial.width,height:~~o.spatial.height}:s,c);if(e.trackSize&&e.trackSize(f),n===`ContentResource`){i.push(m(r.body));continue}if(n===`Canvas`){let e=t.generateId(`Canvas`,y);r.target=e;let n=t.generateId(`Page`,y),a=t.embed({id:n,type:`AnnotationPage`,items:[r]}),{width:o,height:s}=f;i.push(t.embed(m({id:e,type:`Canvas`,label:{en:[`Untitled canvas`]},width:o,height:s,thumbnail:d?[t.embed({id:d,type:`Image`,format:`image/jpeg`,width:512,height:Math.round(s/o*512)})]:void 0,items:[a]})));continue}i.push(t.embed(m({...r,target:t.getTarget()})));continue}i.push(t.embed(m({...r,target:t.getTarget()})))}}}return i}const An=(0,h.lazy)(()=>Promise.resolve().then(()=>require("./iiif-browser-form.lazy-5m6mTOpt.cjs"))),jn=(0,u.defineCreator)({validationErrorMessage:q,id:`@manifest-editor/iiif-browser-creator`,create:kn,label:`Browse IIIF content`,labelMessage:{namespace:`creators`,key:`definitions.browser.label`},hideSummary:!0,summary:`Browse an IIIF manifest, collection, or supported collection webpage and choose content to add.`,summaryMessage:{namespace:`creators`,key:`definitions.browser.summary`},icon:(0,g.jsx)(p.IIIFBrowserIcon,{}),configuration:{fields:[{id:`addManifestMetadataToCanvas`,type:`checkbox`,label:`Add manifest metadata to imported canvases`,labelMessage:{namespace:`creators`,key:`definitions.browser.copyMetadata`},summary:`Copies metadata from the source Manifest when the IIIF Browser creates a Canvas.`,summaryMessage:{namespace:`creators`,key:`definitions.browser.copyMetadataHelp`},defaultValue:!0}]},render(e){return(0,g.jsx)(An,{...e})},hiddenModal:!0,tags:[`image`,`image-service`],async supportsResource(e,t){let n=E(await T(e,t));return n===`Manifest`||n===`Collection`||await ie(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=>(0,b.isImageService)(e)),f=d?.id||d?.[`@id`];if(!f)return;let p=X(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`}])}},W,F,P],staticFields:{}}),Mn=(0,u.defineCreator)({id:`@manifest-editor/image-url-list`,label:`Multiple images`,labelMessage:{namespace:`creators`,key:`definitions.imageList.label`},summary:`Add several images using one direct image link per line.`,summaryMessage:{namespace:`creators`,key:`definitions.imageList.summary`},create:on,icon:(0,g.jsx)(p.ImageListIcon,{}),render(e){return(0,g.jsx)(K,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{parentFields:[`logo`,`body`,`thumbnail`]},staticFields:{type:`Image`}});async function Nn(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/plain`})}function Pn(e){let t=(0,d.useTranslations)(`editor-api`),n=(0,d.useTranslations)(`creators`),r=(0,d.useTranslations)(`common`),[i,a]=(0,h.useState)(e.options.initialData?.label||{en:[`View as text`]});return(0,g.jsx)(p.PaddedSidebarContainer,{children:(0,g.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.url&&e.runCreate({url:r.url,label:i})},children:[(0,g.jsx)(m.LanguageFieldEditor,{focusId:`label`,label:t(`fields.label`),fields:i,onSave:e=>a(e.toInternationalString())}),(0,g.jsxs)(m.InputContainer,{$wide:!0,children:[(0,g.jsx)(m.InputLabel,{htmlFor:`url`,children:n(`form.textUrl`)}),(0,g.jsx)(m.Input,{type:`url`,id:`url`,name:`url`,defaultValue:e.options.initialData?.url||``})]}),(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,type:`submit`,children:r(`actions.create`)})]})})}const Fn=(0,u.defineCreator)({id:`@manifest-editor/plaintext-creator`,create:Nn,label:`Plain text link`,labelMessage:{namespace:`creators`,key:`definitions.plaintext.label`},summary:`Link to an external plain-text file.`,summaryMessage:{namespace:`creators`,key:`definitions.plaintext.summary`},icon:(0,g.jsx)(_n,{}),async supportsResource(e,t){return w(e)&&((await D(e,t)).startsWith(`text/plain`)||O(e,[`.txt`]))?{initialData:{url:e}}:!1},render(e){return(0,g.jsx)(Pn,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{initialData:!0,parentFields:[`seeAlso`,`rendering`]},staticFields:{format:`text/plain`}});function In(e,t){let n=(0,b.createImageServiceRequest)(k(e));return(0,b.imageServiceRequestToString)({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 Z(e){return e.endsWith(`default.jpg`)?(0,b.imageServiceRequestToString)({...(0,b.parseImageServiceRequest)(e),type:`info`}):(0,b.canonicalServiceUrl)(e)}async function Ln(e,t){let n=k(e.service),r=n.sizes,i=ke(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=In(n,o);return t.embed({id:e,type:`Image`,format:`image/jpeg`,width:o.width,height:o.height,service:[i]})}}return null}function Rn(e){let t=(0,d.useTranslations)(`creators`),n=(0,d.useTranslations)(`common`),{locale:r}=(0,d.useEditorI18n)(),[i,a]=(0,h.useState)(e.options.initialData?.url||``),[o,s]=(0,h.useState)(e.options.initialData?.service||null),[c,l]=(0,h.useState)({width:e.options.initialData?.width||0,height:e.options.initialData?.height||0}),u=(0,h.useMemo)(()=>!o||!c.width||!c.height?null:In(o,c),[c,o]),{load:f,loading:_,failed:v}=Oe();return o?(0,g.jsxs)(p.PaddedSidebarContainer,{children:[(0,g.jsxs)(`div`,{className:`mb-4`,children:[(0,g.jsx)(`div`,{className:`mb-2`,children:o[`@id`]||o.id}),(0,g.jsx)(`div`,{className:`flex gap-2 mb-4`,children:o.sizes?.map(e=>{let n=e.width===c.width;return(0,g.jsx)(p.ActionButton,{primary:n,isDisabled:n,large:!0,onPress:()=>l(e),children:t(`form.dimensions`,{width:new Intl.NumberFormat(r).format(e.width),height:e.height===void 0?``:new Intl.NumberFormat(r).format(e.height)})},e.width)})}),u?(0,g.jsx)(`img`,{src:u,alt:t(`image.previewAlt`)}):null]}),(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,isDisabled:!u,onPress:()=>{o&&e.runCreate({service:o,width:c.width,height:c.height,thumbnailUrl:u})},children:t(`form.addThumbnail`)})]}):(0,g.jsx)(p.PaddedSidebarContainer,{children:(0,g.jsxs)(`form`,{onSubmit:e=>{e.preventDefault();let t=new FormData(e.target),n=Object.fromEntries(t.entries()).url;n&&f(()=>Z(n),e=>{s(e);let t=e.sizes?.[0];t&&l(t)})},"aria-busy":_,children:[v?(0,g.jsx)(`div`,{role:`alert`,children:t(`errors.service`)}):null,_?(0,g.jsx)(`output`,{children:n(`status.loading`)}):null,(0,g.jsx)(`div`,{className:`flex gap-2 items-center`,children:(0,g.jsxs)(m.InputContainer,{$wide:!0,children:[(0,g.jsx)(m.InputLabel,{htmlFor:`url`,children:t(`form.serviceUrl`)}),(0,g.jsx)(m.Input,{id:`url`,name:`url`,defaultValue:e.options.initialData?.url||``,onPaste:e=>{let t=e.clipboardData.getData(`text/plain`);a(t?Z(t):``)},onBlur:e=>a(e.currentTarget.value?Z(e.currentTarget.value):``)})]})}),(0,g.jsx)(`div`,{children:(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,type:`submit`,isDisabled:!i||_,children:t(`form.selectSize`)})})]})})}const zn=(0,u.defineCreator)({id:`@manifest-editor/thumbnail-image`,configKey:`iiif-image-services`,create:Ln,label:`IIIF thumbnail`,labelMessage:{namespace:`creators`,key:`definitions.thumbnail.label`},summary:`Create a thumbnail from an IIIF image service.`,summaryMessage:{namespace:`creators`,key:`definitions.thumbnail.summary`},icon:(0,g.jsx)(p.ScaledImageIcon,{}),async supportsResource(e,t,n){let r=await G.supportsResource(e,t,n);if(typeof r!=`object`)return!1;let i=r.initialData?.service?.sizes?.[0];return i?{initialData:{...r.initialData,width:i.width,height:i.height}}:!1},render(e){return(0,g.jsx)(Rn,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`format`,`width`,`height`,`service`],supports:{initialData:!0,parentFields:[`thumbnail`]}});function Bn(){return(0,g.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`24px`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,children:[(0,g.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,g.jsx)(`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 Vn(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/html`})}function Q(e){let t=(0,d.useTranslations)(`editor-api`),n=(0,d.useTranslations)(`creators`),[r,i]=(0,h.useState)(e.options.initialData?.label||{en:[``]});return(0,g.jsx)(p.PaddedSidebarContainer,{children:(0,g.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),i=Object.fromEntries(n.entries());i.url&&e.runCreate({url:i.url,label:r})},children:[(0,g.jsx)(m.LanguageFieldEditor,{focusId:`label`,label:t(`fields.label`),fields:r,onSave:e=>i(e.toInternationalString())}),(0,g.jsxs)(m.InputContainer,{$wide:!0,children:[(0,g.jsx)(m.InputLabel,{htmlFor:`url`,children:n(`form.link`)}),(0,g.jsx)(m.Input,{type:`url`,id:`url`,name:`url`,defaultValue:e.options.initialData?.url||``})]}),(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,type:`submit`,children:n(`form.createLink`)})]})})}const Hn=(0,u.defineCreator)({id:`@manifest-editor/web-page-creator`,create:Vn,label:`Web page`,labelMessage:{namespace:`creators`,key:`definitions.webpage.label`},summary:`Link to an external webpage.`,summaryMessage:{namespace:`creators`,key:`definitions.webpage.summary`},icon:(0,g.jsx)(Bn,{}),async supportsResource(e,t){if(!w(e))return!1;let n=await D(e,t);return n.startsWith(`text/html`)||n.startsWith(`application/xhtml+xml`)?{initialData:{url:e}}:!1},render(e){return(0,g.jsx)(Q,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{initialData:!0,parentFields:[`seeAlso`,`rendering`,`homepage`]}}),Un=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function $(e){let t=(e||``).match(Un);return t?t[1]:null}function Wn(e){return!!$(e.youtubeUrl)}function Gn(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 Kn(e,t){let n=Gn(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 qn(e){let t=(0,d.useTranslations)(`creators`),n=(0,d.useTranslations)(`common`),r=e.options.initialData;return(0,g.jsx)(p.PaddedSidebarContainer,{children:(0,g.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.youtubeUrl&&e.runCreate({youtubeUrl:r.youtubeUrl})},children:[(0,g.jsxs)(m.InputContainer,{$wide:!0,children:[(0,g.jsx)(m.InputLabel,{htmlFor:`youtubeUrl`,children:t(`form.youtubeUrl`)}),(0,g.jsx)(m.Input,{type:`url`,id:`youtubeUrl`,name:`youtubeUrl`,defaultValue:r.youtubeUrl||``})]}),(0,g.jsx)(p.ActionButton,{primary:!0,large:!0,type:`submit`,children:n(`actions.create`)})]})})}const Jn=(0,u.defineCreator)({id:`@manifest-editor/youtube`,create:Kn,label:`YouTube`,labelMessage:{namespace:`creators`,key:`definitions.youtube.label`},summary:`Embed a video using its YouTube link.`,summaryMessage:{namespace:`creators`,key:`definitions.youtube.summary`},icon:(0,g.jsx)(p.YouTubeIcon,{}),resourceType:`ContentResource`,additionalTypes:[`Canvas`,`Annotation`],resourceFields:[`id`,`type`,`service`],supportsResource(e){return $(e)?{initialData:{youtubeUrl:e}}:!1},render:e=>(0,g.jsx)(qn,{...e}),supports:{initialData:!0,onlyPainting:!0,parentTypes:[`Annotation`,`Manifest`,`AnnotationPage`],parentFieldMap:{Annotation:[`body`],Manifest:[`items`],AnnotationPage:[`items`]}},staticFields:{type:`Video`}});async function Yn(e,t){let n=e.output||[],r=[];for(let e of n){let{resource:n,parent:i,selector:a}=e,o=t.getPreviewVault(),s=(0,f.createThumbnailHelper)(o);if(n.type===`Manifest`){let e=n.id;Y(e,`Could not find Manifest ID`);let i=await o.loadManifest(e),a=await s.getBestThumbnailAtSize(i,{width:256,height:256},!1);Y(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;Y(e,`Could not find Manifest ID`);let i=await o.loadManifest(e);Y(i,`Collection not found`),r.push(t.embed({id:n.id,type:`Collection`,label:i.label}))}}return r}const Xn=(0,h.lazy)(()=>Promise.resolve().then(()=>Zn));var Zn=o({default:()=>Qn});function Qn(e){let t=(0,d.useTranslations)(`creators`),{resolveMessage:n}=(0,d.useEditorI18n)(),r=(0,x.useNotebookBrowserPlugins)(),i=(0,x.usePreviewVault)(),a=(0,h.useMemo)(()=>e.options.initialData||{},[e.options.initialData]),{runCreate:o}=e,s=(0,h.useRef)({t,resolveMessage:n,reference:a.actionLabelMessage,runCreate:o});s.current={t,resolveMessage:n,reference:a.actionLabelMessage,runCreate:o};let c=(0,h.useMemo)(()=>[{type:`callback`,get label(){let{t:e,resolveMessage:t,reference:n}=s.current;return t(n,e(`browser.select`))},supportedTypes:[`Manifest`,`Collection`,`ManifestList`,`CollectionList`,`CollectionItemList`],cb:e=>s.current.runCreate({output:e}),format:{type:`custom`,format:(e,t,n)=>{let r=Array.isArray(e)?e:[{...e,parent:t}],i=[];for(let e of r)i.push({resource:n.get(e),parent:e.parent,selector:e.selector});return i}}}],[s]),l=(0,h.useMemo)(()=>({canCropImage:!1,canSelectCanvas:!1,canSelectManifest:!0,canSelectCollection:!0,multiSelect:!0,...a.iiifBrowserOptions?.navigation||{}}),[a.iiifBrowserOptions?.navigation]),u=(0,h.useMemo)(()=>({buttonClassName:`bg-me-primary-500 text-white hover:bg-me-primary-600`,homeLink:a.url||(typeof e.config?.defaultCollection==`string`?e.config.defaultCollection:void 0),...a.iiifBrowserOptions?.ui||{}}),[a,e.config]),f=(0,h.useMemo)(()=>{let e=a.iiifBrowserOptions?.history||{};return a.url?{...e,restoreFromLocalStorage:!1,saveToLocalStorage:!1,initialHistory:[{url:a.url,resource:null,route:a.url.startsWith(`iiif://`)?a.url.replace(`iiif://`,`/`):`/loading?id=${encodeURIComponent(a.url)}`}]}:e},[a]);return(0,g.jsx)(x.PreviewVaultBoundary,{children:(0,g.jsx)(p.LocalizedIIIFBrowser,{plugins:[...r,...a.iiifBrowserOptions?.plugins||[]],ui:u,vault:i,className:`iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full`,output:c,navigation:l,customPages:a.iiifBrowserOptions?.customPages||{},history:f})})}const $n=(0,u.defineCreator)({validationErrorMessage:q,id:`@manifest-editor/manifest-browser-creator`,configKey:`@manifest-editor/iiif-browser-creator`,create:Yn,label:`Browse IIIF content`,labelMessage:{namespace:`creators`,key:`definitions.browser.label`},hideSummary:!0,summary:`Browse IIIF manifests and collections to choose a resource to add.`,summaryMessage:{namespace:`creators`,key:`definitions.manifestBrowser.summary`},icon:(0,g.jsx)(p.IIIFBrowserIcon,{}),render(e){return(0,g.jsx)(Qn,{...e})},async supportsResource(e,t){let n=E(await T(e,t));return n===`Manifest`||n===`Collection`||await ie(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 er(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 tr(e){let t=(0,d.useTranslations)(`editor-api`),n=(0,d.useTranslations)(`creators`),[r,i]=(0,h.useState)(e.options.initialData?.label||{en:[``]});return(0,g.jsx)(p.PaddedSidebarContainer,{children:(0,g.jsxs)(`form`,{onSubmit:t=>{t.preventDefault(),r&&e.runCreate({type:`Range`,label:r,items:e.options.initialData?.items||[]})},children:[(0,g.jsx)(m.LanguageFieldEditor,{focusId:`label`,label:t(`fields.label`),fields:r,onSave:e=>i(e.toInternationalString())}),(0,g.jsx)(p.ActionButton,{primary:!0,type:`submit`,children:n(`form.createRange`)})]})})}const nr=(0,u.defineCreator)({id:`@manifest-editor/range-with-items`,create:er,label:`Range`,labelMessage:{namespace:`editor-api`,key:`resources.range`},summary:`Group canvases or other ranges into a section.`,summaryMessage:{namespace:`creators`,key:`definitions.range.summary`},icon:(0,g.jsx)(p.RangesIcon,{}),render(e){return(0,g.jsx)(tr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Range`],parentFields:[`items`]},staticFields:{type:`Range`}});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:[`Table of Contents`]},items:(e.items||[]).map(e=>t.ref(e))})}function ir(e){let t=(0,d.useTranslations)(`editor-api`),n=(0,d.useTranslations)(`creators`),[r,i]=(0,h.useState)(e.options.initialData?.label||{en:[``]});return(0,g.jsx)(p.PaddedSidebarContainer,{children:(0,g.jsxs)(`form`,{onSubmit:t=>{t.preventDefault(),r&&e.runCreate({type:`Range`,label:r})},children:[(0,g.jsx)(m.LanguageFieldEditor,{focusId:`label`,label:t(`fields.label`),fields:r,onSave:e=>i(e.toInternationalString())}),(0,g.jsx)(p.ActionButton,{primary:!0,type:`submit`,children:n(`form.createRange`)})]})})}const ar=(0,u.defineCreator)({id:`@manifest-editor/range-top-level`,create:rr,label:`Table of contents`,labelMessage:{namespace:`creators`,key:`definitions.contents.label`},summary:`Create a top-level range to organise the manifest’s contents.`,summaryMessage:{namespace:`creators`,key:`definitions.contents.summary`},icon:(0,g.jsx)(p.RangesIcon,{}),render(e){return(0,g.jsx)(ir,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Manifest`],parentFields:[`structures`]},staticFields:{type:`Range`}}),or=[G,tn,N,an,mn,De,On,ze,Jn,jn,xn,Fn,Hn,gn,bn,ln,Cn,Ie,Mn,cn,zn,ar,nr,ne];exports.CreateAudioAnnotationForm=Ee,exports.CreateCaptionedImageAnnotation=Fe,exports.CreateHTMLAnnotation=Re,exports.CreateHTMLBodyForm=Dn,exports.CreateImageServerForm=j,exports.CreateImageServiceAnnotationForm=en,exports.CreateImageUrlAnnotationForm=rn,exports.CreateImageUrlForm=M,exports.CreateImageUrlListForm=K,exports.CreatePlaintextForm=Pn,exports.CreateProviderForm=te,exports.CreateThumbnailForm=Rn,exports.CreateVideoAnnotationForm=pn,exports.CreateVttAnnotationPageForm=yn,exports.CreateWebPageForm=Q,exports.IIIFBrowserCreatorForm=An,exports.ManifestBrowserCreatorForm=Xn,exports.RangeWithItemsCreatorForm=tr,exports.TopLevelRangeCreatorForm=ir,exports.YouTubeForm=qn,exports.allCreators=or,exports.audioAnnotation=De,exports.captionedImageAnnotation=Ie,exports.createAudioAnnotation=Te,exports.createCaptionedImageAnnotation=Ne,exports.createFromIIIFBrowserOutput=kn,exports.createFromManifestBrowserOutput=Yn,exports.createHtmlAnnotation=Le,exports.createHtmlBody=En,exports.createImageServer=Ae,exports.createImageServiceAnnotation=$t,exports.createImageUrl=Me,exports.createImageUrlAnnotation=nn,exports.createImageUrlList=on,exports.createImageUrlListAnnotation=sn,exports.createNoBodyAnnotation=un,exports.createPlaintext=Nn,exports.createProvider=C,exports.createRangeTopLevel=rr,exports.createRangeWithItems=er,exports.createThumbnail=Ln,exports.createVideoAnnotation=fn,exports.createVttAnnotationPage=vn,exports.createWebPage=Vn,exports.createYoutubeBody=Kn,exports.createYoutubeBodyResource=Gn,exports.croppedRegion=X,exports.emptyAnnotationPage=gn,exports.emptyCanvas=xn,exports.getCanonicalUrl=A,exports.getYouTubeId=$,exports.htmlAnnotation=ze,exports.htmlBodyCreator=On,exports.iiifBrowserCreator=jn,exports.imageServiceAnnotation=tn,exports.imageServiceCreator=G,exports.imageUrlAnnotation=an,exports.imageUrlCreator=N,exports.imageUrlListAnnotation=cn,exports.imageUrlListCreator=Mn,exports.internalCanvas=Cn,exports.manifestBrowserCreator=$n,exports.noBodyAnnotation=ln,exports.plaintextCreator=Fn,exports.providerCreator=ne,exports.rangeTopLevel=ar,exports.rangeWithItems=nr,exports.validateYouTube=Wn,exports.videoAnnotation=mn,exports.vttAnnotationPage=bn,exports.webPageCreator=Hn,exports.youTubeBodyCreator=Jn;
|
|
99
99
|
//# sourceMappingURL=index.cjs.map
|