@triiiceratops/plugin-pdf-export 1.0.0-rc.3 → 1.0.0-rc.4

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/iife.js CHANGED
@@ -2,7 +2,7 @@
2
2
  \r\f \v\uFEFF`];function I0(t,e,r){var n=t==null?"":""+t;if(e&&(n=n?n+" "+e:e),r){for(var i in r)if(r[i])n=n?n+" "+i:i;else if(n.length)for(var o=i.length,a=0;(a=n.indexOf(i,a))>=0;){var s=a+o;(a===0||Bu.includes(n[a-1]))&&(s===n.length||Bu.includes(n[s]))?n=(a===0?"":n.substring(0,a))+n.substring(s+1):a=s}}return n===""?null:n}function Mu(t,e=!1){var r=e?" !important;":";",n="";for(var i in t){var o=t[i];o!=null&&o!==""&&(n+=" "+i+": "+o+r)}return n}function Qa(t){return t[0]!=="-"||t[1]!=="-"?t.toLowerCase():t}function N0(t,e){if(e){var r="",n,i;if(Array.isArray(e)?(n=e[0],i=e[1]):n=e,t){t=String(t).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var o=!1,a=0,s=!1,l=[];n&&l.push(...Object.keys(n).map(Qa)),i&&l.push(...Object.keys(i).map(Qa));var u=0,f=-1;const w=t.length;for(var c=0;c<w;c++){var h=t[c];if(s?h==="/"&&t[c-1]==="*"&&(s=!1):o?o===h&&(o=!1):h==="/"&&t[c+1]==="*"?s=!0:h==='"'||h==="'"?o=h:h==="("?a++:h===")"&&a--,!s&&o===!1&&a===0){if(h===":"&&f===-1)f=c;else if(h===";"||c===w-1){if(f!==-1){var v=Qa(t.substring(u,f).trim());if(!l.includes(v)){h!==";"&&c++;var p=t.substring(u,c).trim();r+=" "+p+";"}}u=c+1,f=-1}}}}return n&&(r+=Mu(n)),i&&(r+=Mu(i,!0)),r=r.trim(),r===""?null:r}return t==null?null:String(t)}function Di(t,e,r,n,i,o){var a=t.__className;if(a!==r||a===void 0){var s=I0(r,n,o);s==null?t.removeAttribute("class"):e?t.className=s:t.setAttribute("class",s),t.__className=r}else if(o&&i!==o)for(var l in o){var u=!!o[l];(i==null||u!==!!i[l])&&t.classList.toggle(l,u)}return o}function $a(t,e={},r,n){for(var i in r){var o=r[i];e[i]!==o&&(r[i]==null?t.style.removeProperty(i):t.style.setProperty(i,o,n))}}function es(t,e,r,n){var i=t.__style;if(i!==e){var o=N0(e,n);o==null?t.removeAttribute("style"):t.style.cssText=o,t.__style=e}else n&&(Array.isArray(n)?($a(t,r?.[0],n[0]),$a(t,r?.[1],n[1],"important")):$a(t,r,n));return n}function zo(t,e,r=!1){if(t.multiple){if(e==null)return;if(!Oa(e))return Nh();for(var n of t.options)n.selected=e.includes(Oi(n));return}for(n of t.options){var i=Oi(n);if($h(i,e)){n.selected=!0;return}}(!r||e!==void 0)&&(t.selectedIndex=-1)}function ju(t){var e=new MutationObserver(()=>{zo(t,t.__value)});e.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),su(()=>{e.disconnect()})}function B0(t,e,r=e){var n=new WeakSet,i=!0;i0(t,"change",o=>{var a=o?"[selected]":":checked",s;if(t.multiple)s=[].map.call(t.querySelectorAll(a),Oi);else{var l=t.querySelector(a)??t.querySelector("option:not([disabled])");s=l&&Oi(l)}r(s),Ye!==null&&n.add(Ye)}),Oo(()=>{var o=e();if(t===document.activeElement){var a=Po??Ye;if(n.has(a))return}if(zo(t,o,i),i&&o===void 0){var s=t.querySelector(":checked");s!==null&&(o=Oi(s),r(o))}t.__value=o,i=!1}),ju(t)}function Oi(t){return"__value"in t?t.__value:t.value}const Xn=Symbol("class"),Ii=Symbol("style"),zu=Symbol("is custom element"),Uu=Symbol("is html");function M0(t,e){e?t.hasAttribute("selected")||t.setAttribute("selected",""):t.removeAttribute("selected")}function vr(t,e,r,n){var i=qu(t);i[e]!==(i[e]=r)&&(e==="loading"&&(t[fh]=r),r==null?t.removeAttribute(e):typeof r!="string"&&Wu(t).includes(e)?t[e]=r:t.setAttribute(e,r))}function j0(t,e,r,n,i=!1,o=!1){var a=qu(t),s=a[zu],l=!a[Uu],u=e||{},f=t.tagName==="OPTION";for(var c in e)c in r||(r[c]=null);r.class?r.class=O0(r.class):(n||r[Xn])&&(r.class=null),r[Ii]&&(r.style??=null);var h=Wu(t);for(const C in r){let R=r[C];if(f&&C==="value"&&R==null){t.value=t.__value="",u[C]=R;continue}if(C==="class"){var v=t.namespaceURI==="http://www.w3.org/1999/xhtml";Di(t,v,R,n,e?.[Xn],r[Xn]),u[C]=R,u[Xn]=r[Xn];continue}if(C==="style"){es(t,R,e?.[Ii],r[Ii]),u[C]=R,u[Ii]=r[Ii];continue}var p=u[C];if(!(R===p&&!(R===void 0&&t.hasAttribute(C)))){u[C]=R;var w=C[0]+C[1];if(w!=="$$")if(w==="on"){const D={},T="$$"+C;let k=C.slice(2);var b=p0(k);if(h0(k)&&(k=k.slice(0,-7),D.capture=!0),!b&&p){if(R!=null)continue;t.removeEventListener(k,u[T],D),u[T]=null}if(R!=null)if(b)t[`__${k}`]=R,Tu([k]);else{let M=function(L){u[C].call(this,L)};u[T]=x0(k,t,M,D)}else b&&(t[`__${k}`]=void 0)}else if(C==="style")vr(t,C,R);else if(C==="autofocus")r0(t,!!R);else if(!s&&(C==="__value"||C==="value"&&R!=null))t.value=t.__value=R;else if(C==="selected"&&f)M0(t,R);else{var x=C;l||(x=y0(x));var E=x==="defaultValue"||x==="defaultChecked";if(R==null&&!s&&!E)if(a[C]=null,x==="value"||x==="checked"){let D=t;const T=e===void 0;if(x==="value"){let k=D.defaultValue;D.removeAttribute(x),D.defaultValue=k,D.value=D.__value=T?k:null}else{let k=D.defaultChecked;D.removeAttribute(x),D.defaultChecked=k,D.checked=T?k:!1}}else t.removeAttribute(C);else E||h.includes(x)&&(s||typeof R!="string")?(t[x]=R,x in a&&(a[x]=pt)):typeof R!="function"&&vr(t,x,R)}}}return u}function Vu(t,e,r=[],n=[],i=[],o,a=!1,s=!1){Zl(i,r,n,l=>{var u=void 0,f={},c=t.nodeName==="SELECT",h=!1;if(cu(()=>{var p=e(...l.map(O)),w=j0(t,u,p,o,a,s);h&&c&&"value"in p&&zo(t,p.value);for(let x of Object.getOwnPropertySymbols(f))p[x]||gt(f[x]);for(let x of Object.getOwnPropertySymbols(p)){var b=p[x];x.description===Ih&&(!u||b!==u[x])&&(f[x]&&gt(f[x]),f[x]=Dt(()=>R0(t,()=>b))),w[x]=b}u=w}),c){var v=t;Oo(()=>{zo(v,u.value,!0),ju(v)})}h=!0})}function qu(t){return t.__attributes??={[zu]:t.nodeName.includes("-"),[Uu]:t.namespaceURI===Oh}}var Lu=new Map;function Wu(t){var e=t.getAttribute("is")||t.nodeName,r=Lu.get(e);if(r)return r;Lu.set(e,r=[]);for(var n,i=t,o=Element.prototype;o!==i;){n=ih(i);for(var a in n)n[a].set&&r.push(a);i=Il(i)}return r}function Ku(t,e){return t===e||t?.[mn]===e}function Uo(t={},e,r,n){return Oo(()=>{var i,o;return fu(()=>{i=o,o=[],Ha(()=>{t!==r(...o)&&(e(t,...o),i&&Ku(r(...i),t)&&e(null,...i))})}),()=>{bn(()=>{o&&Ku(r(...o),t)&&e(null,...o)})}}),t}let Vo=!1;function z0(t){var e=Vo;try{return Vo=!1,[t(),Vo]}finally{Vo=e}}const U0={get(t,e){if(!t.exclude.includes(e))return t.props[e]},set(t,e){return!1},getOwnPropertyDescriptor(t,e){if(!t.exclude.includes(e)&&e in t.props)return{enumerable:!0,configurable:!0,value:t.props[e]}},has(t,e){return t.exclude.includes(e)?!1:e in t.props},ownKeys(t){return Reflect.ownKeys(t.props).filter(e=>!t.exclude.includes(e))}};function Gu(t,e,r){return new Proxy({props:t,exclude:e},U0)}function It(t,e,r,n){var i=(r&Ph)!==0,o=(r&Th)!==0,a=n,s=!0,l=()=>(s&&(s=!1,a=o?Ha(n):n),a),u;if(i){var f=mn in t||uh in t;u=Un(t,e)?.set??(f&&e in t?E=>t[e]=E:void 0)}var c,h=!1;i?[c,h]=z0(()=>t[e]):c=t[e],c===void 0&&n!==void 0&&(c=l(),u&&(yh(),u(c)));var v;if(v=()=>{var E=t[e];return E===void 0?l():(s=!0,E)},(r&Eh)===0)return v;if(u){var p=t.$$legacy;return(function(E,C){return arguments.length>0?((!C||p||h)&&u(C?v():E),E):v()})}var w=!1,b=((r&Ah)!==0?Ro:_l)(()=>(w=!1,v()));i&&O(b);var x=Ze;return(function(E,C){if(arguments.length>0){const R=C?O(b):i?er(E):E;return Ae(b,R),w=!0,a!==void 0&&(a=R),E}return kn&&w||(x.f&Br)!==0?b.v:O(b)})}const V0=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z-.]+))?(?:\+[0-9A-Za-z-.]+)?$/;function qo(t){const e=V0.exec(t.trim());if(!e)return null;const[,r,n,i,o]=e,a=o?o.split(".").map(s=>/^\d+$/.test(s)?Number(s):s):[];return{major:Number(r),minor:Number(n),patch:Number(i),prerelease:a}}function q0(t,e){return t.major-e.major||t.minor-e.minor||t.patch-e.patch}function L0(t,e){if(t.prerelease.length===0&&e.prerelease.length===0)return 0;if(t.prerelease.length===0)return 1;if(e.prerelease.length===0)return-1;const r=Math.max(t.prerelease.length,e.prerelease.length);for(let n=0;n<r;n++){const i=t.prerelease[n],o=e.prerelease[n];if(i===void 0)return-1;if(o===void 0)return 1;if(i===o)continue;const a=typeof i=="number",s=typeof o=="number";return a&&s?i<o?-1:1:a?-1:s?1:String(i)<String(o)?-1:1}return 0}function W0(t,e){return q0(t,e)||L0(t,e)}function K0(t){return t.major>0?{major:t.major+1,minor:0,patch:0,prerelease:[]}:t.minor>0?{major:0,minor:t.minor+1,patch:0,prerelease:[]}:{major:0,minor:0,patch:t.patch+1,prerelease:[]}}function G0(t){if(t===""||t==="*"||t==="x"||t==="X")return[];let e;if(e=/^\^\s*(.+)$/.exec(t)){const r=qo(e[1]??"");return r?[{op:">=",ver:r},{op:"<",ver:K0(r)}]:null}if(e=/^~\s*(.+)$/.exec(t)){const r=qo(e[1]??"");return r?[{op:">=",ver:r},{op:"<",ver:{major:r.major,minor:r.minor+1,patch:0,prerelease:[]}}]:null}if(e=/^(>=|<=|>|<|=)?\s*(.+)$/.exec(t)){const r=qo(e[2]??"");return r?[{op:e[1]??"=",ver:r}]:null}return null}function H0(t,e){const r=W0(t,e.ver);switch(e.op){case"<":return r<0;case"<=":return r<=0;case">":return r>0;case">=":return r>=0;case"=":return r===0}}function X0(t,e){const r=e.trim();if(r===""||r==="*"||r==="x")return!0;const n=r.split(/\s+/).filter(Boolean);for(const i of n){const o=G0(i);if(o===null||!o.every(a=>H0(t,a)))return!1}return!0}function Hu(t,e){const r=qo(t);if(!r)return!1;const n=e.split("||").map(i=>i.trim()).filter(i=>i.length>0);return n.length===0?!0:n.some(i=>X0(r,i))}class ts extends Error{code="PLUGIN_INCOMPATIBLE";pluginName;pluginVersion;reasons;constructor(e,r,n){super(Z0(e,r,n)),this.name="PluginCompatibilityError",this.pluginName=e,this.pluginVersion=r,this.reasons=n,Object.setPrototypeOf(this,ts.prototype)}}function Z0(t,e,r){const n=r.map(i=>` - ${i.message}`).join(`
3
3
  `);return`Plugin "${t}"@${e} cannot activate — incompatible with this viewer:
4
4
  ${n}
5
- Update the plugin or the core viewer so their declared ranges and capabilities overlap.`}function _0(t,e){const r=[];Hu(e.coreVersion,t.coreRange)||r.push({kind:"core",required:t.coreRange,actual:e.coreVersion,message:`requires core ${t.coreRange} but this viewer is core ${e.coreVersion}`}),Hu(e.pluginApiVersion,t.pluginApiRange)||r.push({kind:"pluginApi",required:t.pluginApiRange,actual:e.pluginApiVersion,message:`requires plugin API ${t.pluginApiRange} but this viewer provides plugin API ${e.pluginApiVersion}`});const n=new Set(e.capabilities);for(const i of t.requiredCapabilities)n.has(i)||r.push({kind:"capability",required:i,actual:e.capabilities.join(", ")||"(none)",message:`requires capability "${i}" which this viewer does not provide (has: ${e.capabilities.join(", ")||"none"})`});return r}function Y0(t,e){const r=_0(t,e);if(r.length>0)throw new ts(t.name,t.version,r)}function J0(t,e={}){let r=0,n=!1;const i=new Set,o=t.subscribe(()=>{r++;for(const s of[...i])s()},e.onListenerError);return{selectors:{select(s,l=Object.is){let u=-1,f;const c=()=>(u!==r&&(f=s(t),u=r),f);return{get:c,subscribe(h){if(n)return()=>{};let v=c();const p=()=>{let w;try{w=c()}catch(b){e.onProjectionError?.(b);return}l(v,w)||(v=w,h(w))};return i.add(p),()=>{i.delete(p)}}}}},dispose(){n||(n=!0,i.clear(),o())}}}const Zn=()=>{};function Q0(){return{install(t,e){return Zn}}}function $0(){return{current:"en",t(t,e){return t},subscribe(t){return Zn}}}function ev(){return{renderIcon(t,e){return Zn}}}function tv(t){return{id:t??"",isOpen:!0,target:"panel",open:Zn,close:Zn,toggle:Zn}}function rv(t){const e=new Set;return{service:{install(r,n){const i=t.install(r,n);let o=!1;const a=()=>{o||(o=!0,e.delete(a),i())};return e.add(a),a}},releaseAll(){for(const r of[...e])r();e.clear()}}}function nv(t){const e=new Set;return{service:{get current(){return t.current},t(r,n){return t.t(r,n)},subscribe(r){const n=t.subscribe(r);let i=!1;const o=()=>{i||(i=!0,e.delete(o),n())};return e.add(o),o}},releaseAll(){for(const r of[...e])r();e.clear()}}}const iv={deactivate(){}};function ov(t,e){const r=e.reportError;let n,i,o,a;try{Y0(t,e),n=J0(e.viewerState,{onProjectionError:r?h=>r({phase:"command",error:h}):void 0,onListenerError:r?h=>r({phase:"subscription",error:h}):void 0}),i=rv(e.styles??Q0()),o=nv(e.locale??$0()),a={viewerState:e.viewerState,selectors:n.selectors,surface:e.surface??tv(t.uiId??t.name),styles:i.service,locale:o.service,ui:e.ui??ev()}}catch(h){if(n?.dispose(),i?.releaseAll(),o?.releaseAll(),r)return r({phase:"setup",error:h}),iv;throw h}const s=[],l=i,u=o,f=n;try{const h=t.view.mount(e.container,a);typeof h=="function"&&s.push(h)}catch(h){if(!r)throw l.releaseAll(),u.releaseAll(),f.dispose(),h;r({phase:"mount",error:h})}s.push(()=>l.releaseAll()),s.push(()=>u.releaseAll()),s.push(()=>f.dispose());let c=!1;return{deactivate(){if(!c){c=!0;for(let h=s.length-1;h>=0;h--)try{s[h]?.()}catch(v){r?r({phase:"cleanup",error:v}):console.error(`[triiiceratops] Plugin "${t.name}" cleanup threw during deactivation; teardown continues.`,v)}s.length=0}}}}const av="triiiceratops-plugin";function sv(t){const e={name:t.name,uiId:t.uiId,version:t.version,coreRange:t.coreRange,pluginApiRange:t.pluginApiRange,requiredCapabilities:t.requiredCapabilities??[],icon:t.icon,target:t.target??"panel",dismiss:t.dismiss,catalog:t.catalog,view:t.view};return{kind:av,...e,activate(r){return ov(e,r)}}}class lv extends Error{name="SvgIconError";constructor(e){super(`svgIcon: ${e}`)}}const uv="0 0 24 24";function En(t,e){if(!t)throw new lv(e)}const fv=/<svg\b[^>]*>/i;function cv(t){En(typeof t=="string","expected an SVG string.");const e=t.trim();En(e.length>0,"received an empty string.");const r=fv.exec(e);En(r!==null,"the markup must contain an <svg> root element."),En(!/<script[\s/>]/i.test(e),"<script> elements are not allowed in plugin icons."),En(!/<foreignObject[\s/>]/i.test(e),"<foreignObject> is not allowed in plugin icons."),En(!/\son[a-z]+\s*=/i.test(e),"on* event-handler attributes (e.g. onload, onclick) are not allowed in plugin icons.");for(const s of e.matchAll(/(?:xlink:)?href\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+))/gi)){const l=(s[1]??s[2]??s[3]??"").trim();En(l.startsWith("#"),`external href/xlink:href URLs are not allowed in plugin icons (found "${l}"); only internal "#id" references are.`)}const n=r[0],i=/\bviewBox\s*=\s*(?:"([^"]*)"|'([^']*)')/i.exec(n);let o=(i?.[1]??i?.[2])?.trim();if(!o){const s=/\bwidth\s*=\s*(?:"([^"]*)"|'([^']*)')/i.exec(n),l=/\bheight\s*=\s*(?:"([^"]*)"|'([^']*)')/i.exec(n),u=parseFloat(s?.[1]??s?.[2]??""),f=parseFloat(l?.[1]??l?.[2]??"");o=Number.isFinite(u)&&Number.isFinite(f)?`0 0 ${u} ${f}`:uv}let a="";if(!/\/\s*>$/.test(n)){const s=r.index+n.length,l=e.lastIndexOf("</svg>");a=(l>=s?e.slice(s,l):e.slice(s)).trim()}return{kind:"svg",inner:a,viewBox:o}}function dv(t,e){return{STYLES:t,STYLE_ID:e}}function hv(t,e,r,n,i){const o={pluginName:e,pluginVersion:r,phase:"command",error:n,retry:i};t.dispatchEvent(new CustomEvent("pluginerror",{detail:o,bubbles:!0,composed:!0}))}const vv=".btn.svelte-sgoebi{display:inline-flex;flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;cursor:pointer;text-align:center;vertical-align:middle;user-select:none;-webkit-user-select:none;touch-action:manipulation;font-weight:600;height:var(--size);padding-inline:var(--btn-p);font-size:var(--fontsize, .875rem);color:var(--btn-fg);background-color:var(--btn-bg);border-width:var(--tri-border);border-style:solid;border-color:var(--btn-border);border-start-start-radius:var(--join-ss, var(--tri-radius-buttons));border-start-end-radius:var(--join-se, var(--tri-radius-buttons));border-end-end-radius:var(--join-ee, var(--tri-radius-buttons));border-end-start-radius:var(--join-es, var(--tri-radius-buttons));outline-offset:2px;outline-color:var(--btn-color, var(--tri-content));text-shadow:0 .5px oklch(100% 0 0 / calc(var(--tri-depth) * .15));box-shadow:0 .5px 0 .5px oklch(100% 0 0 / calc(var(--tri-depth) * 6%)) inset,var(--btn-shadow);transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);--size: calc(var(--tri-size-field, .25rem) * 10);--btn-bg: var(--btn-color, var(--tri-toolbar-bg));--btn-fg: var(--tri-content);--btn-p: 1rem;--btn-border: color-mix( in oklab, var(--btn-bg), #000 calc(var(--tri-depth) * 5%) );--btn-shadow: 0 3px 2px -2px color-mix( in oklab, var(--btn-bg) calc(var(--tri-depth) * 30%), #0000 ), 0 4px 3px -2px color-mix( in oklab, var(--btn-bg) calc(var(--tri-depth) * 30%), #0000 )}@media(hover:hover){.btn.svelte-sgoebi:hover{--btn-bg: color-mix( in oklab, var(--btn-color, var(--tri-toolbar-bg)), #000 7% )}}.btn.svelte-sgoebi:focus-visible{isolation:isolate;outline-width:2px;outline-style:solid}.btn.svelte-sgoebi:active:not(.active){--btn-bg: color-mix( in oklab, var(--btn-color, var(--tri-toolbar-bg)), #000 5% );--btn-border: color-mix( in oklab, var(--btn-color, var(--tri-toolbar-bg)), #000 7% );--btn-shadow: 0 0 0 0 oklch(0% 0 0 / 0), 0 0 0 0 oklch(0% 0 0 / 0);translate:0 .5px}.btn.active.svelte-sgoebi{--btn-bg: color-mix( in oklab, var(--btn-color, var(--tri-toolbar-bg)), #000 7% )}.btn.svelte-sgoebi:disabled,.btn[disabled].svelte-sgoebi{pointer-events:none;--btn-border: #0000;--btn-fg: color-mix(in oklch, var(--tri-content) 20%, #0000)}.btn.svelte-sgoebi:disabled:not(.ghost):not(.outline),.btn[disabled].svelte-sgoebi:not(.ghost):not(.outline){background-color:color-mix(in oklab,var(--tri-content) 10%,transparent);box-shadow:none}.circle.svelte-sgoebi{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.square.svelte-sgoebi{width:var(--size);height:var(--size);padding-inline:0}.ghost.svelte-sgoebi{--btn-bg: transparent;--btn-border: transparent;--btn-fg: var(--btn-color-text, var(--btn-color, var(--tri-content)));box-shadow:none;text-shadow:none}@media(hover:hover){.ghost.svelte-sgoebi:hover{--btn-bg: color-mix(in oklab, var(--tri-content) 10%, transparent)}}.ghost.svelte-sgoebi:active:not(.active),.ghost.active.svelte-sgoebi{--btn-bg: color-mix(in oklab, var(--tri-content) 10%, transparent);--btn-border: transparent}.outline.svelte-sgoebi:not(:hover):not(:active):not(:focus-visible):not(.active):not(:disabled):not([disabled]){--btn-bg: transparent;--btn-fg: var(--btn-color-text, var(--btn-color, var(--tri-content)));--btn-border: var(--btn-color, var(--tri-content));box-shadow:none;text-shadow:none}.select-wrapper.svelte-1hwvamm{display:inline-flex;width:clamp(3rem,20rem,100%);max-width:100%}.native-select.svelte-1hwvamm{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;pointer-events:none}.select.svelte-1hwvamm{border:var(--tri-border) solid var(--input-color);appearance:none;background-color:var(--tri-input-bg);vertical-align:middle;width:100%;height:var(--size);touch-action:manipulation;white-space:nowrap;box-shadow:0 1px color-mix(in oklab,var(--input-color) calc(var(--tri-depth) * 10%),#0000) inset,0 -1px oklch(100% 0 0 / calc(var(--tri-depth) * .1)) inset;--input-color: color-mix(in oklab, var(--tri-content) 20%, #0000);--size: calc(var(--tri-size-field, .25rem) * 10);background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss, var(--tri-radius-buttons));border-start-end-radius:var(--join-se, var(--tri-radius-buttons));border-end-end-radius:var(--join-ee, var(--tri-radius-buttons));border-end-start-radius:var(--join-es, var(--tri-radius-buttons));align-items:center;gap:.375rem;padding-inline:.75rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative;cursor:pointer;color:inherit;text-align:start}.select-label.svelte-1hwvamm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-label.placeholder.svelte-1hwvamm{color:color-mix(in oklab,var(--tri-content) 55%,transparent)}.select.svelte-1hwvamm:hover:not(:disabled){--input-color: color-mix(in oklab, var(--tri-content) 40%, #0000)}.select.svelte-1hwvamm:focus-visible,.select.open.svelte-1hwvamm{--input-color: var(--tri-content);box-shadow:0 1px color-mix(in oklab,var(--input-color) calc(var(--tri-depth) * 10%),#0000);outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate;z-index:1}.select.svelte-1hwvamm:is(:where(.svelte-1hwvamm):disabled,[disabled]:where(.svelte-1hwvamm)){cursor:not-allowed;border-color:var(--tri-panel-bg);background-color:var(--tri-panel-bg);color:color-mix(in oklab,var(--tri-content) 40%,transparent)}.ghost.svelte-1hwvamm{box-shadow:none;background-color:#0000;border-color:#0000;transition:background-color .2s}.ghost.svelte-1hwvamm:hover:not(:disabled){background-color:color-mix(in oklab,var(--tri-content) 8%,transparent)}.ghost.svelte-1hwvamm:focus-visible,.ghost.open.svelte-1hwvamm{background-color:var(--tri-input-bg);color:var(--tri-content)}.listbox.svelte-1hwvamm{position:fixed;inset:auto;margin:0;padding:.1875rem;border:var(--tri-border) solid color-mix(in oklab,var(--tri-content) 20%,#0000);background-color:var(--tri-input-bg);color:var(--tri-content);border-radius:var(--tri-radius-buttons);box-shadow:0 8px 24px oklch(0 0 0 / calc(.12 + var(--tri-depth) * .06));max-height:16rem;overflow-y:auto;min-width:8rem;z-index:1}.listbox.svelte-1hwvamm:not(:popover-open){display:none}.option.svelte-1hwvamm{padding:.25rem .5rem;border-radius:calc(var(--tri-radius-buttons) * .6);cursor:pointer;font-size:.8125rem;line-height:1.3;white-space:nowrap;color:inherit}.option.active.svelte-1hwvamm{background-color:color-mix(in oklab,var(--tri-content) 12%,#0000)}.option.selected.svelte-1hwvamm{background-color:color-mix(in oklab,var(--tri-color-primary) 90%,#0000);color:var(--tri-color-primary-content)}.option.selected.active.svelte-1hwvamm{background-color:var(--tri-color-primary)}.option[aria-disabled=true].svelte-1hwvamm{opacity:.5;cursor:not-allowed;color:color-mix(in oklab,var(--tri-content) 55%,transparent)}\n",pv={en:{pdf_export_title:"PDF Export",pdf_export_close:"Close PDF Export",pdf_export_description:"Export a flat range of canvases as one PDF page per canvas.",pdf_export_start_canvas:"Start canvas",pdf_export_start_canvas_placeholder:"Select a start canvas",pdf_export_end_canvas:"End canvas",pdf_export_end_canvas_placeholder:"Select an end canvas",pdf_export_selected_canvases:"Selected canvases",pdf_export_exporting:"Exporting...",pdf_export_download:"Download PDF",pdf_export_disabled_no_manifest:"Load a manifest to export canvases.",pdf_export_disabled_no_canvases:"No canvases are available to export.",pdf_export_disabled_invalid_range:"Select a valid start and end canvas to export.",pdf_export_progress_preparing:"Preparing export...",pdf_export_progress_cover_sheet:"Preparing cover sheet...",pdf_export_progress_canvas:"Exporting {current} of {total}: {label}",pdf_export_progress_download:"Preparing download: {filename}",pdf_export_result_downloaded:"Downloaded {count} canvas(es) as {filename}.",pdf_export_result_partial:"Downloaded {exportedCount} canvas(es). Skipped {failedCount}.",pdf_export_error_failed:"Unable to export PDF. Check the browser console for details.",pdf_export_error_not_available:"PDF export is not available for this item because the image source does not allow direct browser download access.",pdf_export_error_no_canvases:"No canvases available to export.",pdf_export_error_no_canvases_exported:"Unable to export any canvases to PDF."},de:{pdf_export_title:"PDF-Export",pdf_export_close:"PDF-Export schließen",pdf_export_description:"Exportieren Sie einen zusammenhängenden Canvas-Bereich als PDF mit einer Seite pro Canvas.",pdf_export_start_canvas:"Start-Canvas",pdf_export_start_canvas_placeholder:"Start-Canvas auswählen",pdf_export_end_canvas:"End-Canvas",pdf_export_end_canvas_placeholder:"End-Canvas auswählen",pdf_export_selected_canvases:"Ausgewählte Canvases",pdf_export_exporting:"Export läuft...",pdf_export_download:"PDF herunterladen",pdf_export_disabled_no_manifest:"Laden Sie ein Manifest, um Canvases zu exportieren.",pdf_export_disabled_no_canvases:"Es sind keine Canvases zum Export verfügbar.",pdf_export_disabled_invalid_range:"Wählen Sie einen gültigen Start- und End-Canvas für den Export aus.",pdf_export_progress_preparing:"Export wird vorbereitet...",pdf_export_progress_cover_sheet:"Deckblatt wird vorbereitet...",pdf_export_progress_canvas:"Exportiere {current} von {total}: {label}",pdf_export_progress_download:"Download wird vorbereitet: {filename}",pdf_export_result_downloaded:"{count} Canvas(es) als {filename} heruntergeladen.",pdf_export_result_partial:"{exportedCount} Canvas(es) heruntergeladen. {failedCount} übersprungen.",pdf_export_error_failed:"PDF konnte nicht exportiert werden. Details finden Sie in der Browser-Konsole.",pdf_export_error_not_available:"Der PDF-Export ist für dieses Objekt nicht verfügbar, weil die Bildquelle keinen direkten Download im Browser erlaubt.",pdf_export_error_no_canvases:"Keine Canvases zum Export verfügbar.",pdf_export_error_no_canvases_exported:"Es konnten keine Canvases als PDF exportiert werden."}},Xu=Symbol("triiiceratops:plugin-pdf-export"),Zu="0 0 256 256",gv=cv(`<svg viewBox="${Zu}"><path d="M224,152a8,8,0,0,1-8,8H192v16h16a8,8,0,0,1,0,16H192v16a8,8,0,0,1-16,0V152a8,8,0,0,1,8-8h32A8,8,0,0,1,224,152ZM92,172a28,28,0,0,1-28,28H56v8a8,8,0,0,1-16,0V152a8,8,0,0,1,8-8H64A28,28,0,0,1,92,172Zm-16,0a12,12,0,0,0-12-12H56v24h8A12,12,0,0,0,76,172Zm88,8a36,36,0,0,1-36,36H112a8,8,0,0,1-8-8V152a8,8,0,0,1,8-8h16A36,36,0,0,1,164,180Zm-16,0a20,20,0,0,0-20-20h-8v40h8A20,20,0,0,0,148,180ZM40,112V40A16,16,0,0,1,56,24h96a8,8,0,0,1,5.66,2.34l56,56A8,8,0,0,1,216,88v24a8,8,0,0,1-16,0V96H152a8,8,0,0,1-8-8V40H56v72a8,8,0,0,1-16,0ZM160,80h28.69L160,51.31Z"/></svg>`),_u={viewBox:Zu,download:'<path d="M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z"/>'},yv="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(yv);var mv=nr("<button><!></button>");function bv(t,e){let r=It(e,"variant",3,"default"),n=It(e,"size",3,"md"),i=It(e,"circle",3,!1),o=It(e,"square",3,!1),a=It(e,"ghost",3,!1),s=It(e,"outline",3,!1),l=It(e,"active",3,!1),u=It(e,"class",3,""),f=It(e,"style",3,""),c=Gu(e,["$$slots","$$events","$$legacy","variant","size","circle","square","ghost","outline","active","class","style","children"]);const h={default:"",primary:"--btn-color:var(--tri-color-primary);--btn-color-text:var(--tri-color-primary-text);--btn-fg:var(--tri-color-primary-content);",neutral:"--btn-color:var(--tri-color-neutral);--btn-fg:var(--tri-color-neutral-content);",success:"--btn-color:var(--tri-color-success);--btn-fg:var(--tri-color-success-content);",warning:"--btn-color:var(--tri-color-warning);--btn-fg:var(--tri-color-warning-content);",error:"--btn-color:var(--tri-color-error);--btn-fg:var(--tri-color-error-content);"},v={xs:"--fontsize:0.6875rem;--btn-p:0.5rem;--size:calc(var(--tri-size-field,0.25rem)*6);",sm:"--fontsize:0.75rem;--btn-p:0.75rem;--size:calc(var(--tri-size-field,0.25rem)*8);",md:"--fontsize:0.875rem;--btn-p:1rem;--size:calc(var(--tri-size-field,0.25rem)*10);",lg:"--fontsize:1.125rem;--btn-p:1.25rem;--size:calc(var(--tri-size-field,0.25rem)*12);"};let p=ft(()=>`${v[n()]}${h[r()]}${f()}`);var w=mv();Vu(w,()=>({class:`btn ${u()??""}`,style:O(p),...c,[Xn]:{circle:i(),square:o(),ghost:a(),outline:s(),active:l()}}),void 0,void 0,void 0,"svelte-sgoebi");var b=Ne(w);Iu(b,()=>e.children??Bl),Xt(t,w)}let xv=0;var wv=nr('<div role="option"> </div>'),Sv=nr('<div><select><!></select> <button type="button" role="combobox" aria-haspopup="listbox"><span> </span></button> <div role="listbox" class="listbox svelte-1hwvamm" popover="manual" tabindex="-1"></div></div>');function Yu(t,e){za(e,!0);let r=It(e,"value",15),n=It(e,"size",3,"md"),i=It(e,"ghost",3,!1),o=It(e,"class",3,""),a=It(e,"style",3,""),s=Gu(e,["$$slots","$$events","$$legacy","value","size","ghost","class","style","children"]);const l={xs:"calc(var(--tri-size-field,0.25rem)*6)",sm:"calc(var(--tri-size-field,0.25rem)*8)",md:"calc(var(--tri-size-field,0.25rem)*10)",lg:"calc(var(--tri-size-field,0.25rem)*12)"};let u=ft(()=>`--size:${l[n()]};${a()}`);const f=`tri-listbox-${xv++}`;let c=Qe(null),h=Qe(null),v=Qe(null),p=Qe(er([])),w=Qe(!1),b=Qe(-1),x=ft(()=>!!e.disabled),E=ft(()=>r()==null?"":String(r())),C=ft(()=>O(p).find(Y=>Y.value===O(E))??O(p)[0]);function R(){O(c)&&Ae(p,Array.from(O(c).querySelectorAll("option")).map(Y=>({value:Y.value,label:(Y.textContent??"").trim(),disabled:Y.disabled})),!0)}lu(()=>{if(!O(c))return;R();const Y=new MutationObserver(()=>R());return Y.observe(O(c),{childList:!0,subtree:!0,characterData:!0,attributes:!0}),()=>Y.disconnect()});function D(Y){const Q=O(p)[Y];!O(c)||!Q||Q.disabled||(O(c).value=Q.value,O(c).dispatchEvent(new Event("input",{bubbles:!0})),O(c).dispatchEvent(new Event("change",{bubbles:!0})),q())}function T(){if(!O(h)||!O(v))return;const Y=O(h).getBoundingClientRect();O(v).style.minWidth=`${Y.width}px`,O(v).style.left=`${Y.left}px`;const Q=O(v).offsetHeight,ke=window.innerHeight-Y.bottom;ke<Q&&Y.top>ke?O(v).style.top=`${Math.max(4,Y.top-Q-4)}px`:O(v).style.top=`${Y.bottom+4}px`}function k(){O(v)?.children[O(b)]?.scrollIntoView({block:"nearest"})}function M(Y){const Q=Y.composedPath();O(h)&&Q.includes(O(h))||O(v)&&Q.includes(O(v))||q()}function L(){O(x)||O(w)||!O(v)||(Ae(w,!0),O(v).showPopover(),T(),Ae(b,O(p).findIndex(Y=>Y.value===O(E)),!0),O(b)<0&&Ae(b,O(p).findIndex(Y=>!Y.disabled),!0),k(),window.addEventListener("scroll",T,!0),window.addEventListener("resize",T),document.addEventListener("pointerdown",M,!0))}function q(){O(w)&&(Ae(w,!1),O(v)?.hidePopover(),window.removeEventListener("scroll",T,!0),window.removeEventListener("resize",T),document.removeEventListener("pointerdown",M,!0),O(h)?.focus())}function H(){O(w)?q():L()}function X(Y){if(!O(p).length)return;let Q=O(b);for(let ke=0;ke<O(p).length;ke++)if(Q=(Q+Y+O(p).length)%O(p).length,!O(p)[Q]?.disabled){Ae(b,Q,!0),k();return}}function z(Y){const Q=Y==="start"?O(p).map((ke,ze)=>ze):O(p).map((ke,ze)=>O(p).length-1-ze);for(const ke of Q)if(!O(p)[ke]?.disabled){Ae(b,ke,!0),k();return}}let te="",re;function $(Y){te+=Y.toLowerCase(),clearTimeout(re),re=setTimeout(()=>te="",600);const Q=O(p).findIndex(ke=>!ke.disabled&&ke.label.toLowerCase().startsWith(te));Q>=0&&(Ae(b,Q,!0),k())}function ee(Y){if(!O(x)){if(!O(w)){["ArrowDown","ArrowUp","Enter"," "].includes(Y.key)&&(Y.preventDefault(),L());return}switch(Y.key){case"ArrowDown":Y.preventDefault(),X(1);break;case"ArrowUp":Y.preventDefault(),X(-1);break;case"Home":Y.preventDefault(),z("start");break;case"End":Y.preventDefault(),z("end");break;case"Enter":case" ":Y.preventDefault(),O(b)>=0&&D(O(b));break;case"Escape":Y.preventDefault(),q();break;case"Tab":q();break;default:Y.key.length===1&&!Y.metaKey&&!Y.ctrlKey&&$(Y.key)}}}var be=Sv(),ue=Ne(be);Vu(ue,()=>({class:"native-select",tabindex:"-1","aria-hidden":"true",...s}),void 0,void 0,void 0,"svelte-1hwvamm");var Me=Ne(ue);Iu(Me,()=>e.children??Bl),Uo(ue,Y=>Ae(c,Y),()=>O(c));var ve=bt(ue,2);let Fe;ve.__click=H,ve.__keydown=ee;var je=Ne(ve);let De;var Xe=Ne(je);Uo(ve,Y=>Ae(h,Y),()=>O(h));var Ce=bt(ve,2);Ja(Ce,23,()=>O(p),(Y,Q)=>Y.value+"\0"+Q,(Y,Q,ke)=>{var ze=wv();let et;ze.__click=()=>D(O(ke)),ze.__pointermove=()=>Ae(b,O(ke),!0);var Pe=Ne(ze);Gt(()=>{vr(ze,"id",`${f}-opt-${O(ke)??""}`),et=Di(ze,1,"option svelte-1hwvamm",null,et,{active:O(ke)===O(b),selected:O(Q).value===O(E)}),vr(ze,"aria-selected",O(Q).value===O(E)),vr(ze,"aria-disabled",O(Q).disabled),wt(Pe,O(Q).label)}),Xt(Y,ze)}),Uo(Ce,Y=>Ae(v,Y),()=>O(v)),Gt(()=>{Di(be,1,`select-wrapper ${o()??""}`,"svelte-1hwvamm"),es(be,a()),Fe=Di(ve,1,"select svelte-1hwvamm",null,Fe,{ghost:i(),open:O(w)}),es(ve,O(u)),ve.disabled=O(x),vr(ve,"aria-expanded",O(w)),vr(ve,"aria-controls",f),vr(ve,"aria-activedescendant",O(w)&&O(b)>=0?`${f}-opt-${O(b)}`:void 0),vr(ve,"aria-label",s["aria-label"]),De=Di(je,1,"select-label svelte-1hwvamm",null,De,{placeholder:O(C)?.disabled}),wt(Xe,O(C)?.label??""),vr(Ce,"id",f)}),B0(ue,r),Xt(t,be),Ua()}Tu(["click","keydown","pointermove"]);function _n(t){var e,r;return t?.id||t?.["@id"]||((e=t?.__jsonld)==null?void 0:e.id)||((r=t?.__jsonld)==null?void 0:r["@id"])||(typeof t?.getId=="function"?t.getId():null)||null}function Ju(t){return _n(t)||(typeof t?.getCanvasId=="function"?t.getCanvasId():null)||(typeof t?.getId=="function"?t.getId():null)||""}function Lo(t,e){if(!t)return"";if(typeof t=="string")return t;if(typeof t=="object"&&!Array.isArray(t)){const r=t;if("@value"in r){const o=r["@value"];return Array.isArray(o)&&o.length>0?String(o[0]):o===void 0?"":String(o)}const n=Object.keys(r),i=o=>{const a=r[o];if(a!==void 0)return Array.isArray(a)&&a.length>0?String(a[0]):String(a)};for(const o of["en","none"]){const a=i(o);if(a!==void 0)return a}return n.length>0?i(n[0])??"":""}if(Array.isArray(t)&&t.length>0){if(typeof t[0]=="string")return t[0];const r=t,n=a=>a?.value??a?._value,i=(a=>r.find(s=>s.locale===a||s._locale===a||s.language===a))("en");{const a=n(i);if(a)return a}const o=r.find(a=>!a.locale&&!a._locale&&!a.language);{const a=n(o);if(a)return a}return n(r[0])??""}return String(t)}function Qu(t,e){var r,n;const i=e===void 0?"Untitled canvas":`Canvas ${e+1}`;try{const a=(r=t.getLabel)==null?void 0:r.call(t);if(Array.isArray(a)&&a.length>0)return Lo(a)||i}catch{}const o=t.label||((n=t.__jsonld)==null?void 0:n.label);if(o){const a=Lo(o);if(a)return a}return i}function rs(t){if(!t)return null;const e=t.match(/xywh=(?:pixel:)?([\d.]+),([\d.]+),([\d.]+),([\d.]+)/);return e?[Number(e[1]),Number(e[2]),Number(e[3]),Number(e[4])]:null}function $u(t){const[e]=t.split("#");return e||null}function Wo(t){if(!t)return null;if(typeof t=="string")return t;if(Array.isArray(t)){for(const r of t){const n=Wo(r);if(n)return n}return null}if(typeof t!="object")return null;const e=t;return typeof e.id=="string"?e.id:typeof e["@id"]=="string"?e["@id"]:e.source?Wo(e.source):null}function ns(t){if(!t)return[];if(Array.isArray(t))return t.flatMap(r=>ns(r));if(typeof t!="object")return[];const e=t;return e.item?ns(e.item):[e]}function Fv(t){const e=t.find(n=>n?.type==="FragmentSelector"&&typeof n?.value=="string"&&n.value.includes("xywh="));if(e)return rs(e.value);const r=t.find(n=>typeof n?.value=="string"&&n.value.includes("xywh="));return r?rs(r.value):null}function is(t){if(!t)return[];if(Array.isArray(t))return t.flatMap(i=>is(i));const e=Wo(t),r=typeof t=="object"&&t&&"selector"in t?ns(t.selector):[],n=Fv(r)||(e?rs(e):null);return[{raw:t,targetId:e,canvasId:e?$u(e):null,selectors:r,xywh:n}]}function ef(t){return t.endsWith("/info.json")?t.slice(0,-10):t}function Yn(t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:null}function Cv(t){const e=t?.__jsonld||t;return{width:Yn(t?.width)||Yn(e?.width)||(typeof t?.getWidth=="function"?Yn(t.getWidth()):null),height:Yn(t?.height)||Yn(e?.height)||(typeof t?.getHeight=="function"?Yn(t.getHeight()):null)}}function tf(t){const e=t?.__jsonld||t;return e?.type==="SpecificResource"&&e!=null&&e.source?e.source:null}function kv(t,e){return e?.type==="Choice"||e?.type==="oa:Choice"||!!t&&!Array.isArray(t)&&(t.type==="Choice"||t.type==="oa:Choice")}function rf(t,e){return e&&(e.items||e.item)?e.items||e.item:Array.isArray(t)?t:t&&(t.items||t.item)?t.items||t.item:[]}function Av({body:t,rawBody:e,canvasId:r,getSelectedChoice:n}){const i=Array.isArray(t)?t:rf(t,null),o=rf(null,e),a=n?.(r);if(a){const s=i.find(u=>_n(u)===a);if(s)return s;const l=o.findIndex(u=>_n(u)===a);if(l>=0)return i[l]||o[l]}return i[0]||o[0]||null}function Ev(t){var e;let r=((e=t.getImages)==null?void 0:e.call(t))||[];return(!r||!r.length)&&t.getContent&&(r=t.getContent()),r||[]}function Pv(t){var e,r;const n=t?.width||((e=t?.__jsonld)==null?void 0:e.width)||(typeof t?.getWidth=="function"?t.getWidth():null),i=t?.height||((r=t?.__jsonld)==null?void 0:r.height)||(typeof t?.getHeight=="function"?t.getHeight():null);return typeof n!="number"||typeof i!="number"?null:{width:n,height:i}}function Tv(t){var e,r;const n=(r=is(t?.target||((e=t?.__jsonld)==null?void 0:e.target)).find(i=>i.xywh))==null?void 0:r.xywh;return n?{x:n[0],y:n[1],width:n[2],height:n[3]}:null}function Rv(t,e){if(typeof t!="string"||!t.trim())return null;const r=t.trim(),n=r.startsWith("pct:"),i=(n?r.slice(4):r).split(",").map(o=>Number(o.trim()));return i.length!==4||i.some(o=>!Number.isFinite(o)||o<0)?null:n?typeof e.width!="number"||typeof e.height!="number"?null:{x:i[0]/100*e.width,y:i[1]/100*e.height,width:i[2]/100*e.width,height:i[3]/100*e.height}:{x:i[0],y:i[1],width:i[2],height:i[3]}}function Dv(t,e){var r;const n=t?.__jsonld||t;return Rv(((r=n?.selector)==null?void 0:r.type)==="ImageApiSelector"?n.selector.region:null,e)}function Ov(t){return[t.x,t.y,t.width,t.height].map(e=>Math.round(e)).join(",")}function Iv(t){const e=t?.__jsonld||t,r=tf(t);return!!(t&&(t.id||t["@id"]||e!=null&&e.service||r||e!=null&&e.id||e!=null&&e["@id"]))}function Nv(t,e,r){var n;let i=t.getResource?t.getResource():null;if(!i&&t.getBody){const o=t.getBody(),a=((n=t.__jsonld)==null?void 0:n.body)||t.body;kv(o,a)?i=Av({body:o,rawBody:a,canvasId:e,getSelectedChoice:r}):Array.isArray(o)&&o.length>0?i=o[0]:o&&(i=o)}if(i&&!Iv(i)&&(i=null),!i){const o=t.__jsonld||t;if(o.body){let a=o.body;if(a.type==="Choice"||a.type==="oa:Choice"){const s=a.items||a.item||[],l=r?.(e);a=(l?s.find(u=>_n(u)===l):null)||s[0]||null}i=Array.isArray(a)?a[0]:a}}return i}function nf(t){return typeof t=="string"?/^https?:\/\/iiif\.io\/api\/image\//.test(t)||t==="level0"||t==="level1"||t==="level2":Array.isArray(t)?t.some(e=>nf(e)):!1}function Bv(t){return typeof t=="string"?t||null:Array.isArray(t)&&t.find(e=>typeof e=="string")||null}function Mv(t){let e=[];const r=t?.__jsonld||t;return r!=null&&r.service&&(e=Array.isArray(r.service)?r.service:[r.service]),!e.length&&t!=null&&t.getServices&&(e=t.getServices()),e.length&&e.find(n=>{const i=n.getType?n.getType():n.type||n["@type"]||"",o=n.getProfile?n.getProfile():n.profile||"";return i==="ImageService1"||i==="ImageService2"||i==="ImageService3"||nf(o)})||null}function jv(t,e){var r,n;for(const i of[t,e]){if(!i)continue;try{const a=(r=i.getLabel)==null?void 0:r.call(i);if(Array.isArray(a)&&a.length>0){const s=Lo(a);if(s)return s}}catch{}const o=i.label||((n=i.__jsonld)==null?void 0:n.label);if(o){const a=Lo(o);if(a)return a}}return null}function zv(t){const e=Mv(t),r=_n(e),n=e?e.getProfile?e.getProfile():e.profile||"":null;return{serviceId:r?ef(r):null,serviceProfile:Bv(n)}}function Uv(t){if(!t||!t.includes("/iiif/"))return null;const e=t.split("/"),r=e.findIndex(n=>n==="full"||/^\d+,\d+,\d+,\d+$/.test(n));return r>0?e.slice(0,r).join("/"):null}function Vv(t,e={}){return of(t,e)[0]||null}function of(t,e={}){const r=Ju(t);if(!r)return[];const n=Pv(t);if(!n)return[];const i=Ev(t);return i.length?i.map(o=>{const a=Nv(o,r,e.getSelectedChoice),s=tf(a)||a;if(!s)return null;const l=_n(s),u=Cv(s),f=zv(s),c=f.serviceId||Uv(l),h=Tv(o),v=Dv(a,u);return{canvasId:r,annotation:o,resource:s,resourceId:l,label:jv(s,o),canvasWidth:n.width,canvasHeight:n.height,resourceWidth:v?.width||u.width,resourceHeight:v?.height||u.height,serviceId:c,serviceProfile:f.serviceProfile,imageApiRegion:v,x:h?h.x/n.width:0,y:h?h.y/n.width:0,width:h?h.width/n.width:1}}).filter(o=>o!==null):[]}function os(t,e={width:1600}){const r=ef(t),n=e.region||"full",i=e.quality||"default",o=e.format||"jpg",a=typeof e.width=="number"?Math.max(1,Math.round(e.width)):null,s=typeof e.height=="number"?Math.max(1,Math.round(e.height)):null,l=e.size||(a?`${a},`:`,${s||1600}`);return`${r}/${n}/${l}/0/${i}.${o}`}function qv(t){return typeof t=="string"?t:Array.isArray(t)&&typeof t[0]=="string"?t[0]:null}function Lv(t){const e=qv(t);return e?e==="level0"||e.endsWith("/level0.json")||e.endsWith("#level0"):!1}function Wv(t,e,r,n){const i=Math.max(1,Math.round(t.width*e*n)),o=t.resourceWidth&&t.resourceHeight?t.resourceHeight/t.resourceWidth:r/e;return{x:Math.round(t.x*e*n),y:Math.round(t.y*r*n),width:i,height:Math.max(1,Math.round(i*o))}}function Kv(t,e){const r=URL.createObjectURL(t),n=document.createElement("a");n.href=r,n.download=e,document.body.appendChild(n),n.click(),n.remove(),URL.revokeObjectURL(r)}async function Gv(t){const e=URL.createObjectURL(t);try{return await new Promise((r,n)=>{const i=new Image;i.onload=()=>r(i),i.onerror=()=>n(new Error("Unable to decode image for export.")),i.src=e})}finally{URL.revokeObjectURL(e)}}async function Hv(t,e,r,n="image/png"){const i=document.createElement("canvas");i.width=Math.max(1,Math.round(e)),i.height=Math.max(1,Math.round(r));const o=i.getContext("2d");if(!o)throw new Error("Unable to create a canvas for image export.");for(const a of t){const s=await Gv(a.blob);o.drawImage(s,a.x,a.y,a.width,a.height)}return new Promise((a,s)=>{i.toBlob(l=>{if(l){a(l);return}s(new Error("Unable to export composed image."))},n)})}function Xv(t,e={}){if(Lv(t.serviceProfile))return t.resourceId??null;if(t.serviceId){const r=t.imageApiRegion?Ov(t.imageApiRegion):void 0,n=!!(e.width||e.height);return os(t.serviceId,{region:r,size:n?void 0:"max",width:e.width,height:e.height})}return t.resourceId??null}const Zv={debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{}};function _v(t){return t.id||t["@id"]||(typeof t.getId=="function"?t.getId():"")}function Yv(t){const e=sf(t),r=[];for(const i of is(e)){for(const o of i.selectors){const a=ep(o);if(a){const l=tp(a);l&&r.push(l)}const s=Jv(o);s&&r.push(s)}i.xywh&&r.push({type:"RECTANGLE",x:i.xywh[0],y:i.xywh[1],w:i.xywh[2],h:i.xywh[3]})}if(r.length>0)return r;const n=uf(t);return n?[n]:[]}function Jv(t){const e=t?.item||t;if(e?.type!=="PointSelector")return null;const r=Number(e.x),n=Number(e.y);return!Number.isFinite(r)||!Number.isFinite(n)?null:{type:"POINT",x:r,y:n}}function af(t){const e=t?.__triiiceratopsCanvas;return!e||typeof e!="object"?null:e}function sf(t){var e,r;return((e=t?.__jsonld)==null?void 0:e.on)||((r=t?.__jsonld)==null?void 0:r.target)||t?.target||t?.on||(typeof t?.getTarget=="function"?t.getTarget():null)}function lf(t){const e=Wo(t);return e?$u(e)||e:null}function as(t){return t?Array.isArray(t)?t.some(as):typeof t=="string"?t.includes("#"):t.selector?!0:!!(t.source&&as(t.source)):!1}function uf(t){const e=af(t);if(!(e!=null&&e.id)||!e.width||!e.height)return null;const r=t.target||t.on;return as(r)||lf(r)!==e.id?null:{type:"RECTANGLE",x:0,y:0,w:e.width,h:e.height}}function Qv(t){return uf(t)!==null}function $v(t,e){if(e)return"canvas";const r=t?.__triiiceratopsAnnotationOrigin;if(r==="user")return"canvas";if(r==="manifest")return"image";const n=af(t),i=lf(sf(t));return n!=null&&n.id&&i===n.id?"canvas":"image"}function ep(t){var e;if(!t)return null;const r=t.selector||t;if(Array.isArray(r)){const n=r.find(i=>i.type==="SvgSelector");return n&&n.value?n.value:null}return r?.type==="SvgSelector"&&r.value?r.value:((e=r?.item)==null?void 0:e.type)==="SvgSelector"&&r.item.value?r.item.value:null}function tp(t){try{const e=new DOMParser().parseFromString(t,"image/svg+xml");if(e.documentElement.nodeName==="parsererror")return Zv.warn("Failed to parse SVG selector:",t),null;const r=[],n=e.querySelectorAll("polygon");for(const s of n){const l=s.getAttribute("points");if(l){const u=rp(l);r.push(...u)}}const i=e.querySelectorAll("path");for(const s of i){const l=s.getAttribute("d");if(l){const u=np(l);r.push(...u)}}const o=e.querySelectorAll("circle");for(const s of o){const l=parseFloat(s.getAttribute("cx")||"0"),u=parseFloat(s.getAttribute("cy")||"0"),f=parseFloat(s.getAttribute("r")||"0"),c=ip(l,u,f);r.push(...c)}const a=e.querySelectorAll("rect");for(const s of a){const l=parseFloat(s.getAttribute("x")||"0"),u=parseFloat(s.getAttribute("y")||"0"),f=parseFloat(s.getAttribute("width")||"0"),c=parseFloat(s.getAttribute("height")||"0");r.push([l,u],[l+f,u],[l+f,u+c],[l,u+c])}return r.length===0?null:{type:"POLYGON",points:r}}catch{return null}}function rp(t){const e=[],r=t.trim().split(/\s+/);for(const n of r){const[i,o]=n.split(",").map(a=>parseFloat(a));!isNaN(i)&&!isNaN(o)&&e.push([i,o])}return e}function np(t){const e=[],r=/[ML]\s*([\d.]+)[,\s]+([\d.]+)/g;let n;for(;(n=r.exec(t))!==null;){const i=parseFloat(n[1]),o=parseFloat(n[2]);!isNaN(i)&&!isNaN(o)&&e.push([i,o])}return e}function ip(t,e,r,n=8){const i=[];for(let o=0;o<n;o++){const a=o/n*Math.PI*2,s=t+r*Math.cos(a),l=e+r*Math.sin(a);i.push([s,l])}return i}function op(t){const e=[];if(typeof t.getBody=="function"){const r=t.getBody();if(r){const n=Array.isArray(r)?r:[r];for(const i of n){const o=i.getValue?i.getValue():"";if(o){const a=i.getFormat?i.getFormat():"",s=i.getPurpose?i.getPurpose():void 0;e.push({value:o,isHtml:a==="text/html"||a==="application/html",purpose:s,format:a})}}}}else{const r=n=>{const i=n.chars||n.value||n["cnt:chars"]||"";if(i){const o=n.format==="text/html"||n.type==="TextualBody";e.push({value:i,isHtml:o,purpose:n.purpose,format:n.format})}};t.resource?(Array.isArray(t.resource)?t.resource:[t.resource]).forEach(r):t.body&&(Array.isArray(t.body)?t.body:[t.body]).forEach(r)}if(e.length===0){let r="";typeof t.getLabel=="function"?r=t.getLabel()||"":t.label&&(r=Array.isArray(t.label)?t.label.join(" "):t.label),r&&e.push({value:r,isHtml:!1,purpose:"commenting"})}return e.length===0&&e.push({value:"Annotation",isHtml:!1,purpose:"commenting"}),e}function ap(t,e){return`${t}::${e}`}function sp(t,e,r){const n=_v(t)||`anno-${e}`,i=Yv(t),o=Qv(t),a=$v(t,o);if(!i.length)return[];const s=op(t);return i.map((l,u)=>({id:n,renderId:ap(n,u),sourceAnnotationId:n,geometryIndex:u,geometry:l,coordinateSpace:a,isFullCanvasTarget:o,body:s,isSearchHit:r}))}function lp(t,e,r=!1){return sp(t,e,r)[0]??null}function up(t){return t.endsWith("/info.json")?t.slice(0,-10):t}function ff(t,e){let r="";try{if(r=t!=null&&t.getProfile?t.getProfile():t?.profile||"",typeof r=="object"&&r){const a=r;r=a.value||a.id||a["@id"]||JSON.stringify(a)}}catch{}const n=String(r??"").toLowerCase(),i=n.includes("level0")||n.includes("level-0"),o=up(t?.id||t?.["@id"]||"");return!i&&o?`${o}/full/${e},/0/default.jpg`:""}function fp(t,e=200){var r;if(!t)return"";const n=Array.isArray(t)?t[0]:t;if(!n)return"";if(typeof n=="string")return n;const i=n.__jsonld||n,o=i!=null&&i.service?Array.isArray(i.service)?i.service:[i.service]:((r=n?.getServices)==null?void 0:r.call(n))||[];for(const a of o){const s=ff(a,e);if(s)return s}return i?.id||i?.["@id"]||""}function cp(t,e=200){var r,n;let i="";try{if(t.getThumbnail){const o=t.getThumbnail();o&&(i=fp(o,e))}}catch{}if(i)return i;try{let o=((r=t.getImages)==null?void 0:r.call(t))||[];if((!o||!o.length)&&t.getContent&&(o=t.getContent()),o&&o.length>0){const a=o[0];let s=a.getResource?a.getResource():null;if(!s&&a.getBody){const l=a.getBody(),u=((n=a.__jsonld)==null?void 0:n.body)||a.body;if(u?.type==="Choice"||u?.type==="oa:Choice"||l&&!Array.isArray(l)&&(l.type==="Choice"||l.type==="oa:Choice")){let f=[];Array.isArray(l)?f=l:l&&(l.items||l.item)?f=l.items||l.item:u&&(u.items||u.item)&&(f=u.items||u.item),f.length>0&&(s=f[0])}else Array.isArray(l)&&l.length>0?s=l[0]:l&&(s=l)}if(s&&!s.id&&!s.__jsonld&&(!s.getServices||s.getServices().length===0)&&(s=null),!s){const l=a.__jsonld||a;if(l.body){let u=l.body;(u.type==="Choice"||u.type==="oa:Choice")&&(u=(u.items||u.item||[])[0]||null),s=Array.isArray(u)?u[0]:u}}if(s){const l=(()=>{let u=[];if(s.getServices&&(u=s.getServices()),!u||u.length===0){const f=s.__jsonld||s;f.service&&(u=Array.isArray(f.service)?f.service:[f.service])}return u})();if(l.length>0){const u=ff(l[0],e);if(u)return u}if(i=s.id||s["@id"]||s.__jsonld&&(s.__jsonld.id||s.__jsonld["@id"])||"",!i){let u=null;if(a.__jsonld&&a.__jsonld.body?u=a.__jsonld.body:a.body&&(u=a.body),u){let f=Array.isArray(u)?u[0]:u;(f.type==="Choice"||f.type==="oa:Choice")&&(f=(f.items||f.item||[])[0]||f),i=f.id||f["@id"]||""}}}}}catch{}return i}/*! *****************************************************************************
5
+ Update the plugin or the core viewer so their declared ranges and capabilities overlap.`}function _0(t,e){const r=[];Hu(e.coreVersion,t.coreRange)||r.push({kind:"core",required:t.coreRange,actual:e.coreVersion,message:`requires core ${t.coreRange} but this viewer is core ${e.coreVersion}`}),Hu(e.pluginApiVersion,t.pluginApiRange)||r.push({kind:"pluginApi",required:t.pluginApiRange,actual:e.pluginApiVersion,message:`requires plugin API ${t.pluginApiRange} but this viewer provides plugin API ${e.pluginApiVersion}`});const n=new Set(e.capabilities);for(const i of t.requiredCapabilities)n.has(i)||r.push({kind:"capability",required:i,actual:e.capabilities.join(", ")||"(none)",message:`requires capability "${i}" which this viewer does not provide (has: ${e.capabilities.join(", ")||"none"})`});return r}function Y0(t,e){const r=_0(t,e);if(r.length>0)throw new ts(t.name,t.version,r)}function J0(t,e={}){let r=0,n=!1;const i=new Set,o=t.subscribe(()=>{r++;for(const s of[...i])s()},e.onListenerError);return{selectors:{select(s,l=Object.is){let u=-1,f;const c=()=>(u!==r&&(f=s(t),u=r),f);return{get:c,subscribe(h){if(n)return()=>{};let v=c();const p=()=>{let w;try{w=c()}catch(b){e.onProjectionError?.(b);return}l(v,w)||(v=w,h(w))};return i.add(p),()=>{i.delete(p)}}}}},dispose(){n||(n=!0,i.clear(),o())}}}const Zn=()=>{};function Q0(){return{install(t,e){return Zn}}}function $0(){return{current:"en",t(t,e){return t},subscribe(t){return Zn}}}function ev(){return{renderIcon(t,e){return Zn}}}function tv(t){return{id:t??"",isOpen:!0,target:"panel",open:Zn,close:Zn,toggle:Zn}}function rv(t){const e=new Set;return{service:{install(r,n){const i=t.install(r,n);let o=!1;const a=()=>{o||(o=!0,e.delete(a),i())};return e.add(a),a}},releaseAll(){for(const r of[...e])r();e.clear()}}}function nv(t){const e=new Set;return{service:{get current(){return t.current},t(r,n){return t.t(r,n)},subscribe(r){const n=t.subscribe(r);let i=!1;const o=()=>{i||(i=!0,e.delete(o),n())};return e.add(o),o}},releaseAll(){for(const r of[...e])r();e.clear()}}}const iv={deactivate(){}};function ov(t,e){const r=e.reportError;let n,i,o,a;try{Y0(t,e),n=J0(e.viewerState,{onProjectionError:r?h=>r({phase:"command",error:h}):void 0,onListenerError:r?h=>r({phase:"subscription",error:h}):void 0}),i=rv(e.styles??Q0()),o=nv(e.locale??$0()),a={viewerState:e.viewerState,selectors:n.selectors,surface:e.surface??tv(t.uiId??t.name),styles:i.service,locale:o.service,ui:e.ui??ev()}}catch(h){if(n?.dispose(),i?.releaseAll(),o?.releaseAll(),r)return r({phase:"setup",error:h}),iv;throw h}const s=[],l=i,u=o,f=n;try{const h=t.view.mount(e.container,a);typeof h=="function"&&s.push(h)}catch(h){if(!r)throw l.releaseAll(),u.releaseAll(),f.dispose(),h;r({phase:"mount",error:h})}s.push(()=>l.releaseAll()),s.push(()=>u.releaseAll()),s.push(()=>f.dispose());let c=!1;return{deactivate(){if(!c){c=!0;for(let h=s.length-1;h>=0;h--)try{s[h]?.()}catch(v){r?r({phase:"cleanup",error:v}):console.error(`[triiiceratops] Plugin "${t.name}" cleanup threw during deactivation; teardown continues.`,v)}s.length=0}}}}const av="triiiceratops-plugin";function sv(t){const e={name:t.name,title:t.title,uiId:t.uiId,version:t.version,coreRange:t.coreRange,pluginApiRange:t.pluginApiRange,requiredCapabilities:t.requiredCapabilities??[],icon:t.icon,target:t.target??"panel",dismiss:t.dismiss,catalog:t.catalog,view:t.view};return{kind:av,...e,activate(r){return ov(e,r)}}}class lv extends Error{name="SvgIconError";constructor(e){super(`svgIcon: ${e}`)}}const uv="0 0 24 24";function En(t,e){if(!t)throw new lv(e)}const fv=/<svg\b[^>]*>/i;function cv(t){En(typeof t=="string","expected an SVG string.");const e=t.trim();En(e.length>0,"received an empty string.");const r=fv.exec(e);En(r!==null,"the markup must contain an <svg> root element."),En(!/<script[\s/>]/i.test(e),"<script> elements are not allowed in plugin icons."),En(!/<foreignObject[\s/>]/i.test(e),"<foreignObject> is not allowed in plugin icons."),En(!/\son[a-z]+\s*=/i.test(e),"on* event-handler attributes (e.g. onload, onclick) are not allowed in plugin icons.");for(const s of e.matchAll(/(?:xlink:)?href\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+))/gi)){const l=(s[1]??s[2]??s[3]??"").trim();En(l.startsWith("#"),`external href/xlink:href URLs are not allowed in plugin icons (found "${l}"); only internal "#id" references are.`)}const n=r[0],i=/\bviewBox\s*=\s*(?:"([^"]*)"|'([^']*)')/i.exec(n);let o=(i?.[1]??i?.[2])?.trim();if(!o){const s=/\bwidth\s*=\s*(?:"([^"]*)"|'([^']*)')/i.exec(n),l=/\bheight\s*=\s*(?:"([^"]*)"|'([^']*)')/i.exec(n),u=parseFloat(s?.[1]??s?.[2]??""),f=parseFloat(l?.[1]??l?.[2]??"");o=Number.isFinite(u)&&Number.isFinite(f)?`0 0 ${u} ${f}`:uv}let a="";if(!/\/\s*>$/.test(n)){const s=r.index+n.length,l=e.lastIndexOf("</svg>");a=(l>=s?e.slice(s,l):e.slice(s)).trim()}return{kind:"svg",inner:a,viewBox:o}}function dv(t,e){return{STYLES:t,STYLE_ID:e}}function hv(t,e,r,n,i){const o={pluginName:e,pluginVersion:r,phase:"command",error:n,retry:i};t.dispatchEvent(new CustomEvent("pluginerror",{detail:o,bubbles:!0,composed:!0}))}const vv=".btn.svelte-sgoebi{display:inline-flex;flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;cursor:pointer;text-align:center;vertical-align:middle;user-select:none;-webkit-user-select:none;touch-action:manipulation;font-weight:600;height:var(--size);padding-inline:var(--btn-p);font-size:var(--fontsize, .875rem);color:var(--btn-fg);background-color:var(--btn-bg);border-width:var(--tri-border);border-style:solid;border-color:var(--btn-border);border-start-start-radius:var(--join-ss, var(--tri-radius-buttons));border-start-end-radius:var(--join-se, var(--tri-radius-buttons));border-end-end-radius:var(--join-ee, var(--tri-radius-buttons));border-end-start-radius:var(--join-es, var(--tri-radius-buttons));outline-offset:2px;outline-color:var(--btn-color, var(--tri-content));text-shadow:0 .5px oklch(100% 0 0 / calc(var(--tri-depth) * .15));box-shadow:0 .5px 0 .5px oklch(100% 0 0 / calc(var(--tri-depth) * 6%)) inset,var(--btn-shadow);transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);--size: calc(var(--tri-size-field, .25rem) * 10);--btn-bg: var(--btn-color, var(--tri-toolbar-bg));--btn-fg: var(--tri-content);--btn-p: 1rem;--btn-border: color-mix( in oklab, var(--btn-bg), #000 calc(var(--tri-depth) * 5%) );--btn-shadow: 0 3px 2px -2px color-mix( in oklab, var(--btn-bg) calc(var(--tri-depth) * 30%), #0000 ), 0 4px 3px -2px color-mix( in oklab, var(--btn-bg) calc(var(--tri-depth) * 30%), #0000 )}@media(hover:hover){.btn.svelte-sgoebi:hover{--btn-bg: color-mix( in oklab, var(--btn-color, var(--tri-toolbar-bg)), #000 7% )}}.btn.svelte-sgoebi:focus-visible{isolation:isolate;outline-width:2px;outline-style:solid}.btn.svelte-sgoebi:active:not(.active){--btn-bg: color-mix( in oklab, var(--btn-color, var(--tri-toolbar-bg)), #000 5% );--btn-border: color-mix( in oklab, var(--btn-color, var(--tri-toolbar-bg)), #000 7% );--btn-shadow: 0 0 0 0 oklch(0% 0 0 / 0), 0 0 0 0 oklch(0% 0 0 / 0);translate:0 .5px}.btn.active.svelte-sgoebi{--btn-bg: color-mix( in oklab, var(--btn-color, var(--tri-toolbar-bg)), #000 7% )}.btn.svelte-sgoebi:disabled,.btn[disabled].svelte-sgoebi{pointer-events:none;--btn-border: #0000;--btn-fg: color-mix(in oklch, var(--tri-content) 20%, #0000)}.btn.svelte-sgoebi:disabled:not(.ghost):not(.outline),.btn[disabled].svelte-sgoebi:not(.ghost):not(.outline){background-color:color-mix(in oklab,var(--tri-content) 10%,transparent);box-shadow:none}.circle.svelte-sgoebi{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.square.svelte-sgoebi{width:var(--size);height:var(--size);padding-inline:0}.ghost.svelte-sgoebi{--btn-bg: transparent;--btn-border: transparent;--btn-fg: var(--btn-color-text, var(--btn-color, var(--tri-content)));box-shadow:none;text-shadow:none}@media(hover:hover){.ghost.svelte-sgoebi:hover{--btn-bg: color-mix(in oklab, var(--tri-content) 10%, transparent)}}.ghost.svelte-sgoebi:active:not(.active),.ghost.active.svelte-sgoebi{--btn-bg: color-mix(in oklab, var(--tri-content) 10%, transparent);--btn-border: transparent}.outline.svelte-sgoebi:not(:hover):not(:active):not(:focus-visible):not(.active):not(:disabled):not([disabled]){--btn-bg: transparent;--btn-fg: var(--btn-color-text, var(--btn-color, var(--tri-content)));--btn-border: var(--btn-color, var(--tri-content));box-shadow:none;text-shadow:none}.select-wrapper.svelte-1hwvamm{display:inline-flex;width:clamp(3rem,20rem,100%);max-width:100%}.native-select.svelte-1hwvamm{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;pointer-events:none}.select.svelte-1hwvamm{border:var(--tri-border) solid var(--input-color);appearance:none;background-color:var(--tri-input-bg);vertical-align:middle;width:100%;height:var(--size);touch-action:manipulation;white-space:nowrap;box-shadow:0 1px color-mix(in oklab,var(--input-color) calc(var(--tri-depth) * 10%),#0000) inset,0 -1px oklch(100% 0 0 / calc(var(--tri-depth) * .1)) inset;--input-color: color-mix(in oklab, var(--tri-content) 20%, #0000);--size: calc(var(--tri-size-field, .25rem) * 10);background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss, var(--tri-radius-buttons));border-start-end-radius:var(--join-se, var(--tri-radius-buttons));border-end-end-radius:var(--join-ee, var(--tri-radius-buttons));border-end-start-radius:var(--join-es, var(--tri-radius-buttons));align-items:center;gap:.375rem;padding-inline:.75rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative;cursor:pointer;color:inherit;text-align:start}.select-label.svelte-1hwvamm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-label.placeholder.svelte-1hwvamm{color:color-mix(in oklab,var(--tri-content) 55%,transparent)}.select.svelte-1hwvamm:hover:not(:disabled){--input-color: color-mix(in oklab, var(--tri-content) 40%, #0000)}.select.svelte-1hwvamm:focus-visible,.select.open.svelte-1hwvamm{--input-color: var(--tri-content);box-shadow:0 1px color-mix(in oklab,var(--input-color) calc(var(--tri-depth) * 10%),#0000);outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate;z-index:1}.select.svelte-1hwvamm:is(:where(.svelte-1hwvamm):disabled,[disabled]:where(.svelte-1hwvamm)){cursor:not-allowed;border-color:var(--tri-panel-bg);background-color:var(--tri-panel-bg);color:color-mix(in oklab,var(--tri-content) 40%,transparent)}.ghost.svelte-1hwvamm{box-shadow:none;background-color:#0000;border-color:#0000;transition:background-color .2s}.ghost.svelte-1hwvamm:hover:not(:disabled){background-color:color-mix(in oklab,var(--tri-content) 8%,transparent)}.ghost.svelte-1hwvamm:focus-visible,.ghost.open.svelte-1hwvamm{background-color:var(--tri-input-bg);color:var(--tri-content)}.listbox.svelte-1hwvamm{position:fixed;inset:auto;margin:0;padding:.1875rem;border:var(--tri-border) solid color-mix(in oklab,var(--tri-content) 20%,#0000);background-color:var(--tri-input-bg);color:var(--tri-content);border-radius:var(--tri-radius-buttons);box-shadow:0 8px 24px oklch(0 0 0 / calc(.12 + var(--tri-depth) * .06));max-height:16rem;overflow-y:auto;min-width:8rem;z-index:1}.listbox.svelte-1hwvamm:not(:popover-open){display:none}.option.svelte-1hwvamm{padding:.25rem .5rem;border-radius:calc(var(--tri-radius-buttons) * .6);cursor:pointer;font-size:.8125rem;line-height:1.3;white-space:nowrap;color:inherit}.option.active.svelte-1hwvamm{background-color:color-mix(in oklab,var(--tri-content) 12%,#0000)}.option.selected.svelte-1hwvamm{background-color:color-mix(in oklab,var(--tri-color-primary) 90%,#0000);color:var(--tri-color-primary-content)}.option.selected.active.svelte-1hwvamm{background-color:var(--tri-color-primary)}.option[aria-disabled=true].svelte-1hwvamm{opacity:.5;cursor:not-allowed;color:color-mix(in oklab,var(--tri-content) 55%,transparent)}\n",pv={en:{pdf_export_title:"PDF Export",pdf_export_close:"Close PDF Export",pdf_export_description:"Export a flat range of canvases as one PDF page per canvas.",pdf_export_start_canvas:"Start canvas",pdf_export_start_canvas_placeholder:"Select a start canvas",pdf_export_end_canvas:"End canvas",pdf_export_end_canvas_placeholder:"Select an end canvas",pdf_export_selected_canvases:"Selected canvases",pdf_export_exporting:"Exporting...",pdf_export_download:"Download PDF",pdf_export_disabled_no_manifest:"Load a manifest to export canvases.",pdf_export_disabled_no_canvases:"No canvases are available to export.",pdf_export_disabled_invalid_range:"Select a valid start and end canvas to export.",pdf_export_progress_preparing:"Preparing export...",pdf_export_progress_cover_sheet:"Preparing cover sheet...",pdf_export_progress_canvas:"Exporting {current} of {total}: {label}",pdf_export_progress_download:"Preparing download: {filename}",pdf_export_result_downloaded:"Downloaded {count} canvas(es) as {filename}.",pdf_export_result_partial:"Downloaded {exportedCount} canvas(es). Skipped {failedCount}.",pdf_export_error_failed:"Unable to export PDF. Check the browser console for details.",pdf_export_error_not_available:"PDF export is not available for this item because the image source does not allow direct browser download access.",pdf_export_error_no_canvases:"No canvases available to export.",pdf_export_error_no_canvases_exported:"Unable to export any canvases to PDF."},de:{pdf_export_title:"PDF-Export",pdf_export_close:"PDF-Export schließen",pdf_export_description:"Exportieren Sie einen zusammenhängenden Canvas-Bereich als PDF mit einer Seite pro Canvas.",pdf_export_start_canvas:"Start-Canvas",pdf_export_start_canvas_placeholder:"Start-Canvas auswählen",pdf_export_end_canvas:"End-Canvas",pdf_export_end_canvas_placeholder:"End-Canvas auswählen",pdf_export_selected_canvases:"Ausgewählte Canvases",pdf_export_exporting:"Export läuft...",pdf_export_download:"PDF herunterladen",pdf_export_disabled_no_manifest:"Laden Sie ein Manifest, um Canvases zu exportieren.",pdf_export_disabled_no_canvases:"Es sind keine Canvases zum Export verfügbar.",pdf_export_disabled_invalid_range:"Wählen Sie einen gültigen Start- und End-Canvas für den Export aus.",pdf_export_progress_preparing:"Export wird vorbereitet...",pdf_export_progress_cover_sheet:"Deckblatt wird vorbereitet...",pdf_export_progress_canvas:"Exportiere {current} von {total}: {label}",pdf_export_progress_download:"Download wird vorbereitet: {filename}",pdf_export_result_downloaded:"{count} Canvas(es) als {filename} heruntergeladen.",pdf_export_result_partial:"{exportedCount} Canvas(es) heruntergeladen. {failedCount} übersprungen.",pdf_export_error_failed:"PDF konnte nicht exportiert werden. Details finden Sie in der Browser-Konsole.",pdf_export_error_not_available:"Der PDF-Export ist für dieses Objekt nicht verfügbar, weil die Bildquelle keinen direkten Download im Browser erlaubt.",pdf_export_error_no_canvases:"Keine Canvases zum Export verfügbar.",pdf_export_error_no_canvases_exported:"Es konnten keine Canvases als PDF exportiert werden."}},Xu=Symbol("triiiceratops:plugin-pdf-export"),Zu="0 0 256 256",gv=cv(`<svg viewBox="${Zu}"><path d="M224,152a8,8,0,0,1-8,8H192v16h16a8,8,0,0,1,0,16H192v16a8,8,0,0,1-16,0V152a8,8,0,0,1,8-8h32A8,8,0,0,1,224,152ZM92,172a28,28,0,0,1-28,28H56v8a8,8,0,0,1-16,0V152a8,8,0,0,1,8-8H64A28,28,0,0,1,92,172Zm-16,0a12,12,0,0,0-12-12H56v24h8A12,12,0,0,0,76,172Zm88,8a36,36,0,0,1-36,36H112a8,8,0,0,1-8-8V152a8,8,0,0,1,8-8h16A36,36,0,0,1,164,180Zm-16,0a20,20,0,0,0-20-20h-8v40h8A20,20,0,0,0,148,180ZM40,112V40A16,16,0,0,1,56,24h96a8,8,0,0,1,5.66,2.34l56,56A8,8,0,0,1,216,88v24a8,8,0,0,1-16,0V96H152a8,8,0,0,1-8-8V40H56v72a8,8,0,0,1-16,0ZM160,80h28.69L160,51.31Z"/></svg>`),_u={viewBox:Zu,download:'<path d="M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z"/>'},yv="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(yv);var mv=nr("<button><!></button>");function bv(t,e){let r=It(e,"variant",3,"default"),n=It(e,"size",3,"md"),i=It(e,"circle",3,!1),o=It(e,"square",3,!1),a=It(e,"ghost",3,!1),s=It(e,"outline",3,!1),l=It(e,"active",3,!1),u=It(e,"class",3,""),f=It(e,"style",3,""),c=Gu(e,["$$slots","$$events","$$legacy","variant","size","circle","square","ghost","outline","active","class","style","children"]);const h={default:"",primary:"--btn-color:var(--tri-color-primary);--btn-color-text:var(--tri-color-primary-text);--btn-fg:var(--tri-color-primary-content);",neutral:"--btn-color:var(--tri-color-neutral);--btn-fg:var(--tri-color-neutral-content);",success:"--btn-color:var(--tri-color-success);--btn-fg:var(--tri-color-success-content);",warning:"--btn-color:var(--tri-color-warning);--btn-fg:var(--tri-color-warning-content);",error:"--btn-color:var(--tri-color-error);--btn-fg:var(--tri-color-error-content);"},v={xs:"--fontsize:0.6875rem;--btn-p:0.5rem;--size:calc(var(--tri-size-field,0.25rem)*6);",sm:"--fontsize:0.75rem;--btn-p:0.75rem;--size:calc(var(--tri-size-field,0.25rem)*8);",md:"--fontsize:0.875rem;--btn-p:1rem;--size:calc(var(--tri-size-field,0.25rem)*10);",lg:"--fontsize:1.125rem;--btn-p:1.25rem;--size:calc(var(--tri-size-field,0.25rem)*12);"};let p=ft(()=>`${v[n()]}${h[r()]}${f()}`);var w=mv();Vu(w,()=>({class:`btn ${u()??""}`,style:O(p),...c,[Xn]:{circle:i(),square:o(),ghost:a(),outline:s(),active:l()}}),void 0,void 0,void 0,"svelte-sgoebi");var b=Ne(w);Iu(b,()=>e.children??Bl),Xt(t,w)}let xv=0;var wv=nr('<div role="option"> </div>'),Sv=nr('<div><select><!></select> <button type="button" role="combobox" aria-haspopup="listbox"><span> </span></button> <div role="listbox" class="listbox svelte-1hwvamm" popover="manual" tabindex="-1"></div></div>');function Yu(t,e){za(e,!0);let r=It(e,"value",15),n=It(e,"size",3,"md"),i=It(e,"ghost",3,!1),o=It(e,"class",3,""),a=It(e,"style",3,""),s=Gu(e,["$$slots","$$events","$$legacy","value","size","ghost","class","style","children"]);const l={xs:"calc(var(--tri-size-field,0.25rem)*6)",sm:"calc(var(--tri-size-field,0.25rem)*8)",md:"calc(var(--tri-size-field,0.25rem)*10)",lg:"calc(var(--tri-size-field,0.25rem)*12)"};let u=ft(()=>`--size:${l[n()]};${a()}`);const f=`tri-listbox-${xv++}`;let c=Qe(null),h=Qe(null),v=Qe(null),p=Qe(er([])),w=Qe(!1),b=Qe(-1),x=ft(()=>!!e.disabled),E=ft(()=>r()==null?"":String(r())),C=ft(()=>O(p).find(Y=>Y.value===O(E))??O(p)[0]);function R(){O(c)&&Ae(p,Array.from(O(c).querySelectorAll("option")).map(Y=>({value:Y.value,label:(Y.textContent??"").trim(),disabled:Y.disabled})),!0)}lu(()=>{if(!O(c))return;R();const Y=new MutationObserver(()=>R());return Y.observe(O(c),{childList:!0,subtree:!0,characterData:!0,attributes:!0}),()=>Y.disconnect()});function D(Y){const Q=O(p)[Y];!O(c)||!Q||Q.disabled||(O(c).value=Q.value,O(c).dispatchEvent(new Event("input",{bubbles:!0})),O(c).dispatchEvent(new Event("change",{bubbles:!0})),q())}function T(){if(!O(h)||!O(v))return;const Y=O(h).getBoundingClientRect();O(v).style.minWidth=`${Y.width}px`,O(v).style.left=`${Y.left}px`;const Q=O(v).offsetHeight,ke=window.innerHeight-Y.bottom;ke<Q&&Y.top>ke?O(v).style.top=`${Math.max(4,Y.top-Q-4)}px`:O(v).style.top=`${Y.bottom+4}px`}function k(){O(v)?.children[O(b)]?.scrollIntoView({block:"nearest"})}function M(Y){const Q=Y.composedPath();O(h)&&Q.includes(O(h))||O(v)&&Q.includes(O(v))||q()}function L(){O(x)||O(w)||!O(v)||(Ae(w,!0),O(v).showPopover(),T(),Ae(b,O(p).findIndex(Y=>Y.value===O(E)),!0),O(b)<0&&Ae(b,O(p).findIndex(Y=>!Y.disabled),!0),k(),window.addEventListener("scroll",T,!0),window.addEventListener("resize",T),document.addEventListener("pointerdown",M,!0))}function q(){O(w)&&(Ae(w,!1),O(v)?.hidePopover(),window.removeEventListener("scroll",T,!0),window.removeEventListener("resize",T),document.removeEventListener("pointerdown",M,!0),O(h)?.focus())}function H(){O(w)?q():L()}function X(Y){if(!O(p).length)return;let Q=O(b);for(let ke=0;ke<O(p).length;ke++)if(Q=(Q+Y+O(p).length)%O(p).length,!O(p)[Q]?.disabled){Ae(b,Q,!0),k();return}}function z(Y){const Q=Y==="start"?O(p).map((ke,ze)=>ze):O(p).map((ke,ze)=>O(p).length-1-ze);for(const ke of Q)if(!O(p)[ke]?.disabled){Ae(b,ke,!0),k();return}}let te="",re;function $(Y){te+=Y.toLowerCase(),clearTimeout(re),re=setTimeout(()=>te="",600);const Q=O(p).findIndex(ke=>!ke.disabled&&ke.label.toLowerCase().startsWith(te));Q>=0&&(Ae(b,Q,!0),k())}function ee(Y){if(!O(x)){if(!O(w)){["ArrowDown","ArrowUp","Enter"," "].includes(Y.key)&&(Y.preventDefault(),L());return}switch(Y.key){case"ArrowDown":Y.preventDefault(),X(1);break;case"ArrowUp":Y.preventDefault(),X(-1);break;case"Home":Y.preventDefault(),z("start");break;case"End":Y.preventDefault(),z("end");break;case"Enter":case" ":Y.preventDefault(),O(b)>=0&&D(O(b));break;case"Escape":Y.preventDefault(),q();break;case"Tab":q();break;default:Y.key.length===1&&!Y.metaKey&&!Y.ctrlKey&&$(Y.key)}}}var be=Sv(),ue=Ne(be);Vu(ue,()=>({class:"native-select",tabindex:"-1","aria-hidden":"true",...s}),void 0,void 0,void 0,"svelte-1hwvamm");var Me=Ne(ue);Iu(Me,()=>e.children??Bl),Uo(ue,Y=>Ae(c,Y),()=>O(c));var ve=bt(ue,2);let Fe;ve.__click=H,ve.__keydown=ee;var je=Ne(ve);let De;var Xe=Ne(je);Uo(ve,Y=>Ae(h,Y),()=>O(h));var Ce=bt(ve,2);Ja(Ce,23,()=>O(p),(Y,Q)=>Y.value+"\0"+Q,(Y,Q,ke)=>{var ze=wv();let et;ze.__click=()=>D(O(ke)),ze.__pointermove=()=>Ae(b,O(ke),!0);var Pe=Ne(ze);Gt(()=>{vr(ze,"id",`${f}-opt-${O(ke)??""}`),et=Di(ze,1,"option svelte-1hwvamm",null,et,{active:O(ke)===O(b),selected:O(Q).value===O(E)}),vr(ze,"aria-selected",O(Q).value===O(E)),vr(ze,"aria-disabled",O(Q).disabled),wt(Pe,O(Q).label)}),Xt(Y,ze)}),Uo(Ce,Y=>Ae(v,Y),()=>O(v)),Gt(()=>{Di(be,1,`select-wrapper ${o()??""}`,"svelte-1hwvamm"),es(be,a()),Fe=Di(ve,1,"select svelte-1hwvamm",null,Fe,{ghost:i(),open:O(w)}),es(ve,O(u)),ve.disabled=O(x),vr(ve,"aria-expanded",O(w)),vr(ve,"aria-controls",f),vr(ve,"aria-activedescendant",O(w)&&O(b)>=0?`${f}-opt-${O(b)}`:void 0),vr(ve,"aria-label",s["aria-label"]),De=Di(je,1,"select-label svelte-1hwvamm",null,De,{placeholder:O(C)?.disabled}),wt(Xe,O(C)?.label??""),vr(Ce,"id",f)}),B0(ue,r),Xt(t,be),Ua()}Tu(["click","keydown","pointermove"]);function _n(t){var e,r;return t?.id||t?.["@id"]||((e=t?.__jsonld)==null?void 0:e.id)||((r=t?.__jsonld)==null?void 0:r["@id"])||(typeof t?.getId=="function"?t.getId():null)||null}function Ju(t){return _n(t)||(typeof t?.getCanvasId=="function"?t.getCanvasId():null)||(typeof t?.getId=="function"?t.getId():null)||""}function Lo(t,e){if(!t)return"";if(typeof t=="string")return t;if(typeof t=="object"&&!Array.isArray(t)){const r=t;if("@value"in r){const o=r["@value"];return Array.isArray(o)&&o.length>0?String(o[0]):o===void 0?"":String(o)}const n=Object.keys(r),i=o=>{const a=r[o];if(a!==void 0)return Array.isArray(a)&&a.length>0?String(a[0]):String(a)};for(const o of["en","none"]){const a=i(o);if(a!==void 0)return a}return n.length>0?i(n[0])??"":""}if(Array.isArray(t)&&t.length>0){if(typeof t[0]=="string")return t[0];const r=t,n=a=>a?.value??a?._value,i=(a=>r.find(s=>s.locale===a||s._locale===a||s.language===a))("en");{const a=n(i);if(a)return a}const o=r.find(a=>!a.locale&&!a._locale&&!a.language);{const a=n(o);if(a)return a}return n(r[0])??""}return String(t)}function Qu(t,e){var r,n;const i=e===void 0?"Untitled canvas":`Canvas ${e+1}`;try{const a=(r=t.getLabel)==null?void 0:r.call(t);if(Array.isArray(a)&&a.length>0)return Lo(a)||i}catch{}const o=t.label||((n=t.__jsonld)==null?void 0:n.label);if(o){const a=Lo(o);if(a)return a}return i}function rs(t){if(!t)return null;const e=t.match(/xywh=(?:pixel:)?([\d.]+),([\d.]+),([\d.]+),([\d.]+)/);return e?[Number(e[1]),Number(e[2]),Number(e[3]),Number(e[4])]:null}function $u(t){const[e]=t.split("#");return e||null}function Wo(t){if(!t)return null;if(typeof t=="string")return t;if(Array.isArray(t)){for(const r of t){const n=Wo(r);if(n)return n}return null}if(typeof t!="object")return null;const e=t;return typeof e.id=="string"?e.id:typeof e["@id"]=="string"?e["@id"]:e.source?Wo(e.source):null}function ns(t){if(!t)return[];if(Array.isArray(t))return t.flatMap(r=>ns(r));if(typeof t!="object")return[];const e=t;return e.item?ns(e.item):[e]}function Fv(t){const e=t.find(n=>n?.type==="FragmentSelector"&&typeof n?.value=="string"&&n.value.includes("xywh="));if(e)return rs(e.value);const r=t.find(n=>typeof n?.value=="string"&&n.value.includes("xywh="));return r?rs(r.value):null}function is(t){if(!t)return[];if(Array.isArray(t))return t.flatMap(i=>is(i));const e=Wo(t),r=typeof t=="object"&&t&&"selector"in t?ns(t.selector):[],n=Fv(r)||(e?rs(e):null);return[{raw:t,targetId:e,canvasId:e?$u(e):null,selectors:r,xywh:n}]}function ef(t){return t.endsWith("/info.json")?t.slice(0,-10):t}function Yn(t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:null}function Cv(t){const e=t?.__jsonld||t;return{width:Yn(t?.width)||Yn(e?.width)||(typeof t?.getWidth=="function"?Yn(t.getWidth()):null),height:Yn(t?.height)||Yn(e?.height)||(typeof t?.getHeight=="function"?Yn(t.getHeight()):null)}}function tf(t){const e=t?.__jsonld||t;return e?.type==="SpecificResource"&&e!=null&&e.source?e.source:null}function kv(t,e){return e?.type==="Choice"||e?.type==="oa:Choice"||!!t&&!Array.isArray(t)&&(t.type==="Choice"||t.type==="oa:Choice")}function rf(t,e){return e&&(e.items||e.item)?e.items||e.item:Array.isArray(t)?t:t&&(t.items||t.item)?t.items||t.item:[]}function Av({body:t,rawBody:e,canvasId:r,getSelectedChoice:n}){const i=Array.isArray(t)?t:rf(t,null),o=rf(null,e),a=n?.(r);if(a){const s=i.find(u=>_n(u)===a);if(s)return s;const l=o.findIndex(u=>_n(u)===a);if(l>=0)return i[l]||o[l]}return i[0]||o[0]||null}function Ev(t){var e;let r=((e=t.getImages)==null?void 0:e.call(t))||[];return(!r||!r.length)&&t.getContent&&(r=t.getContent()),r||[]}function Pv(t){var e,r;const n=t?.width||((e=t?.__jsonld)==null?void 0:e.width)||(typeof t?.getWidth=="function"?t.getWidth():null),i=t?.height||((r=t?.__jsonld)==null?void 0:r.height)||(typeof t?.getHeight=="function"?t.getHeight():null);return typeof n!="number"||typeof i!="number"?null:{width:n,height:i}}function Tv(t){var e,r;const n=(r=is(t?.target||((e=t?.__jsonld)==null?void 0:e.target)).find(i=>i.xywh))==null?void 0:r.xywh;return n?{x:n[0],y:n[1],width:n[2],height:n[3]}:null}function Rv(t,e){if(typeof t!="string"||!t.trim())return null;const r=t.trim(),n=r.startsWith("pct:"),i=(n?r.slice(4):r).split(",").map(o=>Number(o.trim()));return i.length!==4||i.some(o=>!Number.isFinite(o)||o<0)?null:n?typeof e.width!="number"||typeof e.height!="number"?null:{x:i[0]/100*e.width,y:i[1]/100*e.height,width:i[2]/100*e.width,height:i[3]/100*e.height}:{x:i[0],y:i[1],width:i[2],height:i[3]}}function Dv(t,e){var r;const n=t?.__jsonld||t;return Rv(((r=n?.selector)==null?void 0:r.type)==="ImageApiSelector"?n.selector.region:null,e)}function Ov(t){return[t.x,t.y,t.width,t.height].map(e=>Math.round(e)).join(",")}function Iv(t){const e=t?.__jsonld||t,r=tf(t);return!!(t&&(t.id||t["@id"]||e!=null&&e.service||r||e!=null&&e.id||e!=null&&e["@id"]))}function Nv(t,e,r){var n;let i=t.getResource?t.getResource():null;if(!i&&t.getBody){const o=t.getBody(),a=((n=t.__jsonld)==null?void 0:n.body)||t.body;kv(o,a)?i=Av({body:o,rawBody:a,canvasId:e,getSelectedChoice:r}):Array.isArray(o)&&o.length>0?i=o[0]:o&&(i=o)}if(i&&!Iv(i)&&(i=null),!i){const o=t.__jsonld||t;if(o.body){let a=o.body;if(a.type==="Choice"||a.type==="oa:Choice"){const s=a.items||a.item||[],l=r?.(e);a=(l?s.find(u=>_n(u)===l):null)||s[0]||null}i=Array.isArray(a)?a[0]:a}}return i}function nf(t){return typeof t=="string"?/^https?:\/\/iiif\.io\/api\/image\//.test(t)||t==="level0"||t==="level1"||t==="level2":Array.isArray(t)?t.some(e=>nf(e)):!1}function Bv(t){return typeof t=="string"?t||null:Array.isArray(t)&&t.find(e=>typeof e=="string")||null}function Mv(t){let e=[];const r=t?.__jsonld||t;return r!=null&&r.service&&(e=Array.isArray(r.service)?r.service:[r.service]),!e.length&&t!=null&&t.getServices&&(e=t.getServices()),e.length&&e.find(n=>{const i=n.getType?n.getType():n.type||n["@type"]||"",o=n.getProfile?n.getProfile():n.profile||"";return i==="ImageService1"||i==="ImageService2"||i==="ImageService3"||nf(o)})||null}function jv(t,e){var r,n;for(const i of[t,e]){if(!i)continue;try{const a=(r=i.getLabel)==null?void 0:r.call(i);if(Array.isArray(a)&&a.length>0){const s=Lo(a);if(s)return s}}catch{}const o=i.label||((n=i.__jsonld)==null?void 0:n.label);if(o){const a=Lo(o);if(a)return a}}return null}function zv(t){const e=Mv(t),r=_n(e),n=e?e.getProfile?e.getProfile():e.profile||"":null;return{serviceId:r?ef(r):null,serviceProfile:Bv(n)}}function Uv(t){if(!t||!t.includes("/iiif/"))return null;const e=t.split("/"),r=e.findIndex(n=>n==="full"||/^\d+,\d+,\d+,\d+$/.test(n));return r>0?e.slice(0,r).join("/"):null}function Vv(t,e={}){return of(t,e)[0]||null}function of(t,e={}){const r=Ju(t);if(!r)return[];const n=Pv(t);if(!n)return[];const i=Ev(t);return i.length?i.map(o=>{const a=Nv(o,r,e.getSelectedChoice),s=tf(a)||a;if(!s)return null;const l=_n(s),u=Cv(s),f=zv(s),c=f.serviceId||Uv(l),h=Tv(o),v=Dv(a,u);return{canvasId:r,annotation:o,resource:s,resourceId:l,label:jv(s,o),canvasWidth:n.width,canvasHeight:n.height,resourceWidth:v?.width||u.width,resourceHeight:v?.height||u.height,serviceId:c,serviceProfile:f.serviceProfile,imageApiRegion:v,x:h?h.x/n.width:0,y:h?h.y/n.width:0,width:h?h.width/n.width:1}}).filter(o=>o!==null):[]}function os(t,e={width:1600}){const r=ef(t),n=e.region||"full",i=e.quality||"default",o=e.format||"jpg",a=typeof e.width=="number"?Math.max(1,Math.round(e.width)):null,s=typeof e.height=="number"?Math.max(1,Math.round(e.height)):null,l=e.size||(a?`${a},`:`,${s||1600}`);return`${r}/${n}/${l}/0/${i}.${o}`}function qv(t){return typeof t=="string"?t:Array.isArray(t)&&typeof t[0]=="string"?t[0]:null}function Lv(t){const e=qv(t);return e?e==="level0"||e.endsWith("/level0.json")||e.endsWith("#level0"):!1}function Wv(t,e,r,n){const i=Math.max(1,Math.round(t.width*e*n)),o=t.resourceWidth&&t.resourceHeight?t.resourceHeight/t.resourceWidth:r/e;return{x:Math.round(t.x*e*n),y:Math.round(t.y*r*n),width:i,height:Math.max(1,Math.round(i*o))}}function Kv(t,e){const r=URL.createObjectURL(t),n=document.createElement("a");n.href=r,n.download=e,document.body.appendChild(n),n.click(),n.remove(),URL.revokeObjectURL(r)}async function Gv(t){const e=URL.createObjectURL(t);try{return await new Promise((r,n)=>{const i=new Image;i.onload=()=>r(i),i.onerror=()=>n(new Error("Unable to decode image for export.")),i.src=e})}finally{URL.revokeObjectURL(e)}}async function Hv(t,e,r,n="image/png"){const i=document.createElement("canvas");i.width=Math.max(1,Math.round(e)),i.height=Math.max(1,Math.round(r));const o=i.getContext("2d");if(!o)throw new Error("Unable to create a canvas for image export.");for(const a of t){const s=await Gv(a.blob);o.drawImage(s,a.x,a.y,a.width,a.height)}return new Promise((a,s)=>{i.toBlob(l=>{if(l){a(l);return}s(new Error("Unable to export composed image."))},n)})}function Xv(t,e={}){if(Lv(t.serviceProfile))return t.resourceId??null;if(t.serviceId){const r=t.imageApiRegion?Ov(t.imageApiRegion):void 0,n=!!(e.width||e.height);return os(t.serviceId,{region:r,size:n?void 0:"max",width:e.width,height:e.height})}return t.resourceId??null}const Zv={debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{}};function _v(t){return t.id||t["@id"]||(typeof t.getId=="function"?t.getId():"")}function Yv(t){const e=sf(t),r=[];for(const i of is(e)){for(const o of i.selectors){const a=ep(o);if(a){const l=tp(a);l&&r.push(l)}const s=Jv(o);s&&r.push(s)}i.xywh&&r.push({type:"RECTANGLE",x:i.xywh[0],y:i.xywh[1],w:i.xywh[2],h:i.xywh[3]})}if(r.length>0)return r;const n=uf(t);return n?[n]:[]}function Jv(t){const e=t?.item||t;if(e?.type!=="PointSelector")return null;const r=Number(e.x),n=Number(e.y);return!Number.isFinite(r)||!Number.isFinite(n)?null:{type:"POINT",x:r,y:n}}function af(t){const e=t?.__triiiceratopsCanvas;return!e||typeof e!="object"?null:e}function sf(t){var e,r;return((e=t?.__jsonld)==null?void 0:e.on)||((r=t?.__jsonld)==null?void 0:r.target)||t?.target||t?.on||(typeof t?.getTarget=="function"?t.getTarget():null)}function lf(t){const e=Wo(t);return e?$u(e)||e:null}function as(t){return t?Array.isArray(t)?t.some(as):typeof t=="string"?t.includes("#"):t.selector?!0:!!(t.source&&as(t.source)):!1}function uf(t){const e=af(t);if(!(e!=null&&e.id)||!e.width||!e.height)return null;const r=t.target||t.on;return as(r)||lf(r)!==e.id?null:{type:"RECTANGLE",x:0,y:0,w:e.width,h:e.height}}function Qv(t){return uf(t)!==null}function $v(t,e){if(e)return"canvas";const r=t?.__triiiceratopsAnnotationOrigin;if(r==="user")return"canvas";if(r==="manifest")return"image";const n=af(t),i=lf(sf(t));return n!=null&&n.id&&i===n.id?"canvas":"image"}function ep(t){var e;if(!t)return null;const r=t.selector||t;if(Array.isArray(r)){const n=r.find(i=>i.type==="SvgSelector");return n&&n.value?n.value:null}return r?.type==="SvgSelector"&&r.value?r.value:((e=r?.item)==null?void 0:e.type)==="SvgSelector"&&r.item.value?r.item.value:null}function tp(t){try{const e=new DOMParser().parseFromString(t,"image/svg+xml");if(e.documentElement.nodeName==="parsererror")return Zv.warn("Failed to parse SVG selector:",t),null;const r=[],n=e.querySelectorAll("polygon");for(const s of n){const l=s.getAttribute("points");if(l){const u=rp(l);r.push(...u)}}const i=e.querySelectorAll("path");for(const s of i){const l=s.getAttribute("d");if(l){const u=np(l);r.push(...u)}}const o=e.querySelectorAll("circle");for(const s of o){const l=parseFloat(s.getAttribute("cx")||"0"),u=parseFloat(s.getAttribute("cy")||"0"),f=parseFloat(s.getAttribute("r")||"0"),c=ip(l,u,f);r.push(...c)}const a=e.querySelectorAll("rect");for(const s of a){const l=parseFloat(s.getAttribute("x")||"0"),u=parseFloat(s.getAttribute("y")||"0"),f=parseFloat(s.getAttribute("width")||"0"),c=parseFloat(s.getAttribute("height")||"0");r.push([l,u],[l+f,u],[l+f,u+c],[l,u+c])}return r.length===0?null:{type:"POLYGON",points:r}}catch{return null}}function rp(t){const e=[],r=t.trim().split(/\s+/);for(const n of r){const[i,o]=n.split(",").map(a=>parseFloat(a));!isNaN(i)&&!isNaN(o)&&e.push([i,o])}return e}function np(t){const e=[],r=/[ML]\s*([\d.]+)[,\s]+([\d.]+)/g;let n;for(;(n=r.exec(t))!==null;){const i=parseFloat(n[1]),o=parseFloat(n[2]);!isNaN(i)&&!isNaN(o)&&e.push([i,o])}return e}function ip(t,e,r,n=8){const i=[];for(let o=0;o<n;o++){const a=o/n*Math.PI*2,s=t+r*Math.cos(a),l=e+r*Math.sin(a);i.push([s,l])}return i}function op(t){const e=[];if(typeof t.getBody=="function"){const r=t.getBody();if(r){const n=Array.isArray(r)?r:[r];for(const i of n){const o=i.getValue?i.getValue():"";if(o){const a=i.getFormat?i.getFormat():"",s=i.getPurpose?i.getPurpose():void 0;e.push({value:o,isHtml:a==="text/html"||a==="application/html",purpose:s,format:a})}}}}else{const r=n=>{const i=n.chars||n.value||n["cnt:chars"]||"";if(i){const o=n.format==="text/html"||n.type==="TextualBody";e.push({value:i,isHtml:o,purpose:n.purpose,format:n.format})}};t.resource?(Array.isArray(t.resource)?t.resource:[t.resource]).forEach(r):t.body&&(Array.isArray(t.body)?t.body:[t.body]).forEach(r)}if(e.length===0){let r="";typeof t.getLabel=="function"?r=t.getLabel()||"":t.label&&(r=Array.isArray(t.label)?t.label.join(" "):t.label),r&&e.push({value:r,isHtml:!1,purpose:"commenting"})}return e.length===0&&e.push({value:"Annotation",isHtml:!1,purpose:"commenting"}),e}function ap(t,e){return`${t}::${e}`}function sp(t,e,r){const n=_v(t)||`anno-${e}`,i=Yv(t),o=Qv(t),a=$v(t,o);if(!i.length)return[];const s=op(t);return i.map((l,u)=>({id:n,renderId:ap(n,u),sourceAnnotationId:n,geometryIndex:u,geometry:l,coordinateSpace:a,isFullCanvasTarget:o,body:s,isSearchHit:r}))}function lp(t,e,r=!1){return sp(t,e,r)[0]??null}function up(t){return t.endsWith("/info.json")?t.slice(0,-10):t}function ff(t,e){let r="";try{if(r=t!=null&&t.getProfile?t.getProfile():t?.profile||"",typeof r=="object"&&r){const a=r;r=a.value||a.id||a["@id"]||JSON.stringify(a)}}catch{}const n=String(r??"").toLowerCase(),i=n.includes("level0")||n.includes("level-0"),o=up(t?.id||t?.["@id"]||"");return!i&&o?`${o}/full/${e},/0/default.jpg`:""}function fp(t,e=200){var r;if(!t)return"";const n=Array.isArray(t)?t[0]:t;if(!n)return"";if(typeof n=="string")return n;const i=n.__jsonld||n,o=i!=null&&i.service?Array.isArray(i.service)?i.service:[i.service]:((r=n?.getServices)==null?void 0:r.call(n))||[];for(const a of o){const s=ff(a,e);if(s)return s}return i?.id||i?.["@id"]||""}function cp(t,e=200){var r,n;let i="";try{if(t.getThumbnail){const o=t.getThumbnail();o&&(i=fp(o,e))}}catch{}if(i)return i;try{let o=((r=t.getImages)==null?void 0:r.call(t))||[];if((!o||!o.length)&&t.getContent&&(o=t.getContent()),o&&o.length>0){const a=o[0];let s=a.getResource?a.getResource():null;if(!s&&a.getBody){const l=a.getBody(),u=((n=a.__jsonld)==null?void 0:n.body)||a.body;if(u?.type==="Choice"||u?.type==="oa:Choice"||l&&!Array.isArray(l)&&(l.type==="Choice"||l.type==="oa:Choice")){let f=[];Array.isArray(l)?f=l:l&&(l.items||l.item)?f=l.items||l.item:u&&(u.items||u.item)&&(f=u.items||u.item),f.length>0&&(s=f[0])}else Array.isArray(l)&&l.length>0?s=l[0]:l&&(s=l)}if(s&&!s.id&&!s.__jsonld&&(!s.getServices||s.getServices().length===0)&&(s=null),!s){const l=a.__jsonld||a;if(l.body){let u=l.body;(u.type==="Choice"||u.type==="oa:Choice")&&(u=(u.items||u.item||[])[0]||null),s=Array.isArray(u)?u[0]:u}}if(s){const l=(()=>{let u=[];if(s.getServices&&(u=s.getServices()),!u||u.length===0){const f=s.__jsonld||s;f.service&&(u=Array.isArray(f.service)?f.service:[f.service])}return u})();if(l.length>0){const u=ff(l[0],e);if(u)return u}if(i=s.id||s["@id"]||s.__jsonld&&(s.__jsonld.id||s.__jsonld["@id"])||"",!i){let u=null;if(a.__jsonld&&a.__jsonld.body?u=a.__jsonld.body:a.body&&(u=a.body),u){let f=Array.isArray(u)?u[0]:u;(f.type==="Choice"||f.type==="oa:Choice")&&(f=(f.items||f.item||[])[0]||f),i=f.id||f["@id"]||""}}}}}catch{}return i}/*! *****************************************************************************
6
6
  Copyright (c) Microsoft Corporation.
7
7
 
8
8
  Permission to use, copy, modify, and/or distribute this software for any
@@ -157,4 +157,4 @@ end`},jc=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];re
157
157
  height: 1.125rem;
158
158
  fill: currentColor;
159
159
  }
160
- `,"panel"),wy="@triiiceratops/plugin-pdf-export",Sy="1.0.0-rc.0";function Fy(t){return{mount(e,r){const n=r.styles.install(by,xy),i=r.styles.install(vv,"bundled"),o=F0(my,{target:e,context:new Map([[Xu,{context:r,config:t}]])});return()=>{k0(o),i(),n()}}}}function Cy(t={}){return sv({name:wy,uiId:"pdf-export",version:Sy,coreRange:">=1.0.0-rc.0",pluginApiRange:"^1.0.0",requiredCapabilities:["osd@5"],icon:gv,target:"panel",catalog:pv,view:Fy(t)})}const ky=Cy();function Ay(){const t=new Map;return{register(e){const r=t.get(e.name);if(!r){t.set(e.name,e);return}r.version!==e.version&&console.warn(`[triiiceratops] Ignoring plugin "${e.name}" version ${e.version}: version ${r.version} is already registered on this page and wins (first registration wins).`)},get(e){return t.get(e)},has(e){return t.has(e)},list(){return[...t.values()]}}}function Ey(t){(window.Triiiceratops??={coreVersion:"",pluginApiVersion:"",capabilities:[],plugins:Ay()}).plugins.register(t)}Ey(ky)})();
160
+ `,"panel"),wy="@triiiceratops/plugin-pdf-export",Sy="1.0.0-rc.0";function Fy(t){return{mount(e,r){const n=r.styles.install(by,xy),i=r.styles.install(vv,"bundled"),o=F0(my,{target:e,context:new Map([[Xu,{context:r,config:t}]])});return()=>{k0(o),i(),n()}}}}function Cy(t={}){return sv({name:wy,title:"pdf_export_title",uiId:"pdf-export",version:Sy,coreRange:">=1.0.0-rc.0",pluginApiRange:"^1.0.0",requiredCapabilities:["osd@5"],icon:gv,target:"panel",catalog:pv,view:Fy(t)})}const ky=Cy();function Ay(){const t=new Map;return{register(e){const r=t.get(e.name);if(!r){t.set(e.name,e);return}r.version!==e.version&&console.warn(`[triiiceratops] Ignoring plugin "${e.name}" version ${e.version}: version ${r.version} is already registered on this page and wins (first registration wins).`)},get(e){return t.get(e)},has(e){return t.has(e)},list(){return[...t.values()]}}}function Ey(t){(window.Triiiceratops??={coreVersion:"",pluginApiVersion:"",capabilities:[],plugins:Ay()}).plugins.register(t)}Ey(ky)})();
package/dist/index.js CHANGED
@@ -4080,6 +4080,7 @@ function Eo(e) {
4080
4080
  function So(e = {}) {
4081
4081
  return wi({
4082
4082
  name: xo,
4083
+ title: "pdf_export_title",
4083
4084
  uiId: "pdf-export",
4084
4085
  version: yo,
4085
4086
  coreRange: ">=1.0.0-rc.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@triiiceratops/plugin-pdf-export",
3
- "version": "1.0.0-rc.3",
3
+ "version": "1.0.0-rc.4",
4
4
  "type": "module",
5
5
  "description": "PDF export plugin for the triiiceratops IIIF viewer, authored on @triiiceratops/plugin-sdk. Owns its own pdf-lib dependency.",
6
6
  "license": "MIT",
@@ -49,21 +49,21 @@
49
49
  "lint:fix": "eslint . --fix --max-warnings 0"
50
50
  },
51
51
  "peerDependencies": {
52
- "triiiceratops": "^1.0.0-rc.28",
53
- "@triiiceratops/plugin-sdk": "^1.0.0-rc.4"
52
+ "triiiceratops": "^1.0.0-rc.29",
53
+ "@triiiceratops/plugin-sdk": "^1.0.0-rc.5"
54
54
  },
55
55
  "dependencies": {
56
56
  "pdf-lib": "^1.17.1"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@sveltejs/vite-plugin-svelte": "^6.2.1",
60
- "@triiiceratops/plugin-sdk": "1.0.0-rc.4",
60
+ "@triiiceratops/plugin-sdk": "1.0.0-rc.5",
61
61
  "@triiiceratops/ui": "0.0.0",
62
62
  "@vitest/coverage-v8": "4.0.15",
63
63
  "happy-dom": "^20.0.11",
64
64
  "svelte": "5.45.5",
65
65
  "svelte-check": "^4.3.4",
66
- "triiiceratops": "1.0.0-rc.28",
66
+ "triiiceratops": "1.0.0-rc.29",
67
67
  "typescript": "~5.9.3",
68
68
  "vite": "^6.0.0",
69
69
  "vitest": "^4.0.15"