@annotorious/annotorious 3.0.0-rc.3 → 3.0.0-rc.31

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.
Files changed (93) hide show
  1. package/dist/Annotorious.d.ts +10 -7
  2. package/dist/Annotorious.d.ts.map +1 -1
  3. package/dist/AnnotoriousOpts.d.ts +8 -6
  4. package/dist/AnnotoriousOpts.d.ts.map +1 -1
  5. package/dist/annotation/SVGAnnotationLayerPointerEvent.d.ts +4 -2
  6. package/dist/annotation/SVGAnnotationLayerPointerEvent.d.ts.map +1 -1
  7. package/dist/annotation/editors/Handle.svelte.d.ts +1 -0
  8. package/dist/annotation/editors/editorsRegistry.d.ts +4 -3
  9. package/dist/annotation/editors/editorsRegistry.d.ts.map +1 -1
  10. package/dist/annotation/editors/index.d.ts +1 -1
  11. package/dist/annotation/editors/index.d.ts.map +1 -1
  12. package/dist/annotation/tools/DrawingToolConfig.d.ts +2 -1
  13. package/dist/annotation/tools/drawingToolsRegistry.d.ts +5 -4
  14. package/dist/annotation/tools/drawingToolsRegistry.d.ts.map +1 -1
  15. package/dist/annotation/utils/responsive.d.ts +1 -1
  16. package/dist/annotation/utils/styling.d.ts +4 -3
  17. package/dist/annotation/utils/styling.d.ts.map +1 -1
  18. package/dist/annotation/utils/touch.d.ts.map +1 -1
  19. package/dist/annotorious.css +1 -1
  20. package/dist/annotorious.es.js +2540 -2178
  21. package/dist/annotorious.es.js.map +1 -1
  22. package/dist/annotorious.js +1 -1
  23. package/dist/annotorious.js.map +1 -1
  24. package/dist/index.d.ts +1 -7
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/keyboardCommands.d.ts +3 -2
  27. package/dist/keyboardCommands.d.ts.map +1 -1
  28. package/dist/model/core/ImageAnnotation.d.ts +3 -2
  29. package/dist/model/core/Shape.d.ts +2 -1
  30. package/dist/model/core/ellipse/Ellipse.d.ts +2 -1
  31. package/dist/model/core/polygon/Polygon.d.ts +2 -1
  32. package/dist/model/core/rectangle/Rectangle.d.ts +2 -1
  33. package/dist/model/core/rectangle/rectangleUtils.d.ts +3 -2
  34. package/dist/model/core/shapeUtils.d.ts +3 -5
  35. package/dist/model/core/shapeUtils.d.ts.map +1 -1
  36. package/dist/model/w3c/W3CImageAnnotation.d.ts +12 -0
  37. package/dist/model/w3c/W3CImageAnnotation.d.ts.map +1 -0
  38. package/dist/model/w3c/W3CImageFormatAdapter.d.ts +12 -6
  39. package/dist/model/w3c/W3CImageFormatAdapter.d.ts.map +1 -1
  40. package/dist/model/w3c/fragment/FragmentSelector.d.ts +3 -3
  41. package/dist/model/w3c/fragment/FragmentSelector.d.ts.map +1 -1
  42. package/dist/model/w3c/index.d.ts +1 -0
  43. package/dist/model/w3c/index.d.ts.map +1 -1
  44. package/dist/model/w3c/svg/SVG.d.ts.map +1 -1
  45. package/dist/model/w3c/svg/SVGSelector.d.ts +3 -3
  46. package/dist/model/w3c/svg/SVGSelector.d.ts.map +1 -1
  47. package/dist/state/ImageAnnotationStore.d.ts +3 -2
  48. package/dist/state/ImageAnnotatorState.d.ts +5 -4
  49. package/dist/state/ImageAnnotatorState.d.ts.map +1 -1
  50. package/dist/state/spatialTree.d.ts +3 -2
  51. package/dist/state/spatialTree.d.ts.map +1 -1
  52. package/dist/themes/smart/setTheme.d.ts +4 -1
  53. package/dist/themes/smart/setTheme.d.ts.map +1 -1
  54. package/package.json +16 -16
  55. package/src/Annotorious.css +9 -5
  56. package/src/Annotorious.ts +52 -36
  57. package/src/AnnotoriousOpts.ts +16 -15
  58. package/src/annotation/SVGAnnotationLayer.svelte +71 -36
  59. package/src/annotation/SVGAnnotationLayerPointerEvent.ts +2 -3
  60. package/src/annotation/Transform.ts +1 -1
  61. package/src/annotation/editors/Editor.svelte +10 -11
  62. package/src/annotation/editors/EditorMount.svelte +3 -3
  63. package/src/annotation/editors/Handle.svelte +66 -0
  64. package/src/annotation/editors/editorsRegistry.ts +2 -2
  65. package/src/annotation/editors/index.ts +2 -2
  66. package/src/annotation/editors/polygon/PolygonEditor.svelte +16 -16
  67. package/src/annotation/editors/rectangle/RectangleEditor.svelte +46 -43
  68. package/src/annotation/shapes/Ellipse.svelte +3 -3
  69. package/src/annotation/shapes/Polygon.svelte +3 -3
  70. package/src/annotation/shapes/Rectangle.svelte +3 -3
  71. package/src/annotation/tools/ToolMount.svelte +3 -3
  72. package/src/annotation/tools/drawingToolsRegistry.ts +2 -1
  73. package/src/annotation/tools/polygon/RubberbandPolygon.svelte +40 -13
  74. package/src/annotation/tools/rectangle/RubberbandRectangle.svelte +27 -11
  75. package/src/annotation/utils/responsive.ts +1 -1
  76. package/src/annotation/utils/styling.ts +5 -2
  77. package/src/annotation/utils/touch.ts +4 -1
  78. package/src/index.ts +22 -16
  79. package/src/keyboardCommands.ts +11 -7
  80. package/src/model/w3c/W3CImageAnnotation.ts +17 -0
  81. package/src/model/w3c/W3CImageFormatAdapter.ts +79 -31
  82. package/src/model/w3c/fragment/FragmentSelector.ts +5 -6
  83. package/src/model/w3c/index.ts +1 -0
  84. package/src/model/w3c/svg/SVG.ts +1 -2
  85. package/src/model/w3c/svg/SVGSelector.ts +11 -13
  86. package/src/state/ImageAnnotatorState.ts +4 -5
  87. package/src/state/spatialTree.ts +13 -6
  88. package/src/themes/dark/index.css +2 -2
  89. package/src/themes/light/index.css +2 -2
  90. package/src/themes/smart/setTheme.ts +10 -6
  91. package/dist/annotation/editors/Handle.d.ts +0 -14
  92. package/dist/annotation/editors/Handle.d.ts.map +0 -1
  93. package/src/annotation/editors/Handle.ts +0 -21
@@ -1,2 +1,2 @@
1
- (function(S,F){typeof exports=="object"&&typeof module<"u"?F(exports):typeof define=="function"&&define.amd?define(["exports"],F):(S=typeof globalThis<"u"?globalThis:S||self,F(S.Annotorious={}))})(this,function(S){"use strict";function F(){}function kn(e,t){for(const n in t)e[n]=t[n];return e}function mt(e){return e()}function gt(){return Object.create(null)}function le(e){e.forEach(mt)}function W(e){return typeof e=="function"}function x(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}function In(e){return Object.keys(e).length===0}function pt(e,...t){if(e==null)return F;const n=e.subscribe(...t);return n.unsubscribe?()=>n.unsubscribe():n}function _t(e,t,n){e.$$.on_destroy.push(pt(t,n))}function Bn(e,t,n,o){if(e){const i=yt(e,t,n,o);return e[0](i)}}function yt(e,t,n,o){return e[1]&&o?kn(n.ctx.slice(),e[1](o(t))):n.ctx}function Pn(e,t,n,o){if(e[2]&&o){const i=e[2](o(n));if(t.dirty===void 0)return i;if(typeof i=="object"){const s=[],r=Math.max(t.dirty.length,i.length);for(let a=0;a<r;a+=1)s[a]=t.dirty[a]|i[a];return s}return t.dirty|i}return t.dirty}function Rn(e,t,n,o,i,s){if(i){const r=yt(t,n,o,s);e.p(r,i)}}function Yn(e){if(e.ctx.length>32){const t=[],n=e.ctx.length/32;for(let o=0;o<n;o++)t[o]=-1;return t}return-1}function ue(e,t){e.appendChild(t)}function C(e,t,n){e.insertBefore(t,n||null)}function v(e){e.parentNode&&e.parentNode.removeChild(e)}function Ke(e,t){for(let n=0;n<e.length;n+=1)e[n]&&e[n].d(t)}function P(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function wt(e){return document.createTextNode(e)}function oe(){return wt(" ")}function ae(){return wt("")}function q(e,t,n,o){return e.addEventListener(t,n,o),()=>e.removeEventListener(t,n,o)}function u(e,t,n){n==null?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function Dn(e){return Array.from(e.childNodes)}function bt(e,t,n){e.classList[n?"add":"remove"](t)}function Xn(e,t,{bubbles:n=!1,cancelable:o=!1}={}){const i=document.createEvent("CustomEvent");return i.initCustomEvent(e,n,o,t),i}let Le;function Oe(e){Le=e}function Et(){if(!Le)throw new Error("Function called outside component initialization");return Le}function ve(e){Et().$$.on_mount.push(e)}function ye(){const e=Et();return(t,n,{cancelable:o=!1}={})=>{const i=e.$$.callbacks[t];if(i){const s=Xn(t,n,{cancelable:o});return i.slice().forEach(r=>{r.call(e,s)}),!s.defaultPrevented}return!0}}function we(e,t){const n=e.$$.callbacks[t.type];n&&n.slice().forEach(o=>o.call(this,t))}const be=[],Re=[];let Ee=[];const At=[],Un=Promise.resolve();let Je=!1;function Nn(){Je||(Je=!0,Un.then(St))}function Ze(e){Ee.push(e)}const Qe=new Set;let Ae=0;function St(){if(Ae!==0)return;const e=Le;do{try{for(;Ae<be.length;){const t=be[Ae];Ae++,Oe(t),Gn(t.$$)}}catch(t){throw be.length=0,Ae=0,t}for(Oe(null),be.length=0,Ae=0;Re.length;)Re.pop()();for(let t=0;t<Ee.length;t+=1){const n=Ee[t];Qe.has(n)||(Qe.add(n),n())}Ee.length=0}while(be.length);for(;At.length;)At.pop()();Je=!1,Qe.clear(),Oe(e)}function Gn(e){if(e.fragment!==null){e.update(),le(e.before_update);const t=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,t),e.after_update.forEach(Ze)}}function Fn(e){const t=[],n=[];Ee.forEach(o=>e.indexOf(o)===-1?t.push(o):n.push(o)),n.forEach(o=>o()),Ee=t}const Ye=new Set;let me;function ce(){me={r:0,c:[],p:me}}function fe(){me.r||le(me.c),me=me.p}function Y(e,t){e&&e.i&&(Ye.delete(e),e.i(t))}function U(e,t,n,o){if(e&&e.o){if(Ye.has(e))return;Ye.add(e),me.c.push(()=>{Ye.delete(e),o&&(n&&e.d(1),o())}),e.o(t)}else o&&o()}function ge(e){e&&e.c()}function de(e,t,n,o){const{fragment:i,after_update:s}=e.$$;i&&i.m(t,n),o||Ze(()=>{const r=e.$$.on_mount.map(mt).filter(W);e.$$.on_destroy?e.$$.on_destroy.push(...r):le(r),e.$$.on_mount=[]}),s.forEach(Ze)}function he(e,t){const n=e.$$;n.fragment!==null&&(Fn(n.after_update),le(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function Hn(e,t){e.$$.dirty[0]===-1&&(be.push(e),Nn(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<<t%31}function ie(e,t,n,o,i,s,r,a=[-1]){const l=Le;Oe(e);const d=e.$$={fragment:null,ctx:[],props:s,update:F,not_equal:i,bound:gt(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(t.context||(l?l.$$.context:[])),callbacks:gt(),dirty:a,skip_bound:!1,root:t.target||l.$$.root};r&&r(d.root);let m=!1;if(d.ctx=n?n(e,t.props||{},(c,f,...h)=>{const p=h.length?h[0]:f;return d.ctx&&i(d.ctx[c],d.ctx[c]=p)&&(!d.skip_bound&&d.bound[c]&&d.bound[c](p),m&&Hn(e,c)),f}):[],d.update(),m=!0,le(d.before_update),d.fragment=o?o(d.ctx):!1,t.target){if(t.hydrate){const c=Dn(t.target);d.fragment&&d.fragment.l(c),c.forEach(v)}else d.fragment&&d.fragment.c();t.intro&&Y(e.$$.fragment),de(e,t.target,t.anchor,t.customElement),St()}Oe(l)}class se{$destroy(){he(this,1),this.$destroy=F}$on(t,n){if(!W(n))return F;const o=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return o.push(n),()=>{const i=o.indexOf(n);i!==-1&&o.splice(i,1)}}$set(t){this.$$set&&!In(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}}var z=(e=>(e.ELLIPSE="ELLIPSE",e.POLYGON="POLYGON",e.RECTANGLE="RECTANGLE",e))(z||{});const xe={},De=(e,t)=>xe[e]=t,Xe=e=>xe[e.type].area(e),Tt=(e,t,n)=>xe[e.type].intersects(e,t,n),Ce=e=>{let t=1/0,n=1/0,o=-1/0,i=-1/0;return e.forEach(([s,r])=>{t=Math.min(t,s),n=Math.min(n,r),o=Math.max(o,s),i=Math.max(i,r)}),{minX:t,minY:n,maxX:o,maxY:i}},zn={area:e=>Math.PI*e.geometry.rx*e.geometry.ry,intersects:(e,t,n)=>{const{cx:o,cy:i,rx:s,ry:r}=e.geometry,a=0,l=Math.cos(a),d=Math.sin(a),m=t-o,c=n-i,f=l*m+d*c,h=d*m-l*c;return f*f/(s*s)+h*h/(r*r)<=1}};De(z.ELLIPSE,zn);const Vn={area:e=>{const{points:t}=e.geometry;let n=0,o=t.length-1;for(let i=0;i<t.length;i++)n+=(t[o][0]+t[i][0])*(t[o][1]-t[i][1]),o=i;return Math.abs(.5*n)},intersects:(e,t,n)=>{const{points:o}=e.geometry;let i=!1;for(let s=0,r=o.length-1;s<o.length;r=s++){const a=o[s][0],l=o[s][1],d=o[r][0],m=o[r][1];l>n!=m>n&&t<(d-a)*(n-l)/(m-l)+a&&(i=!i)}return i}};De(z.POLYGON,Vn);const Mt={area:e=>e.geometry.w*e.geometry.h,intersects:(e,t,n)=>t>=e.geometry.x&&t<=e.geometry.x+e.geometry.w&&n>=e.geometry.y&&n<=e.geometry.y+e.geometry.h};De(z.RECTANGLE,Mt);const Lt=(e,t=!1)=>{const n=typeof e=="string"?e:e.value,o=/^(xywh)=(pixel|percent)?:?(.+?),(.+?),(.+?),(.+)*/g,i=[...n.matchAll(o)][0],[s,r,a,l,d,m,c]=i;if(r!=="xywh")throw new Error("Unsupported MediaFragment: "+n);if(a&&a!=="pixel")throw new Error(`Unsupported MediaFragment unit: ${a}`);const[f,h,p,g]=[l,d,m,c].map(parseFloat);return{type:z.RECTANGLE,geometry:{x:f,y:h,w:p,h:g,bounds:{minX:f,minY:t?h-g:h,maxX:f+p,maxY:t?h:h+g}}}},Ot=e=>{const{x:t,y:n,w:o,h:i}=e;return{type:"FragmentSelector",conformsTo:"http://www.w3.org/TR/media-frags/",value:`xywh=pixel:${t},${n},${o},${i}`}},vt="http://www.w3.org/2000/svg",Ct=e=>{const t=o=>{Array.from(o.attributes).forEach(i=>{i.name.startsWith("on")&&o.removeAttribute(i.name)})},n=e.getElementsByTagName("script");return Array.from(n).reverse().forEach(o=>o.parentNode.removeChild(o)),Array.from(e.querySelectorAll("*")).forEach(t),e},jn=e=>{const o=new XMLSerializer().serializeToString(e.documentElement).replace("<svg>",`<svg xmlns="${vt}">`);return new DOMParser().parseFromString(o,"image/svg+xml").documentElement},Wn=e=>{const n=new DOMParser().parseFromString(e,"image/svg+xml"),o=n.lookupPrefix(vt),i=n.lookupNamespaceURI(null);return o||i?Ct(n).firstChild:Ct(jn(n)).firstChild},qn=e=>{const[t,n,o]=e.match(/(<polygon points=["|'])([^("|')]*)/)||[];if(!o)return;const i=o.split(" ").map(s=>s.split(",").map(parseFloat));return{type:z.POLYGON,geometry:{points:i,bounds:Ce(i)}}},Kn=e=>{const t=Wn(e),n=parseFloat(t.getAttribute("cx")),o=parseFloat(t.getAttribute("cy")),i=parseFloat(t.getAttribute("rx")),s=parseFloat(t.getAttribute("ry")),r={minX:n-i,minY:o-s,maxX:n+i,maxY:o+s};return{type:z.ELLIPSE,geometry:{cx:n,cy:o,rx:i,ry:s,bounds:r}}},kt=e=>{const t=typeof e=="string"?e:e.value;if(t.includes("<polygon points="))return qn(t);if(t.includes("<ellipse "))return Kn(t)},It=e=>{let t;if(e.type===z.POLYGON){const n=e.geometry,{points:o}=n;t=`<svg><polygon points="${o.map(i=>i.join(",")).join(" ")}" /></svg>`}else if(e.type===z.ELLIPSE){const n=e.geometry;t=`<svg><ellipse cx="${n.cx}" cy="${n.cy}" rx="${n.rx}" ry="${n.ry}" /></svg>`}if(t)return{type:"SvgSelector",value:t};throw`Unsupported shape type: ${e.type}`};let Ue;const Jn=new Uint8Array(16);function Zn(){if(!Ue&&(Ue=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ue))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ue(Jn)}const K=[];for(let e=0;e<256;++e)K.push((e+256).toString(16).slice(1));function Qn(e,t=0){return K[e[t+0]]+K[e[t+1]]+K[e[t+2]]+K[e[t+3]]+"-"+K[e[t+4]]+K[e[t+5]]+"-"+K[e[t+6]]+K[e[t+7]]+"-"+K[e[t+8]]+K[e[t+9]]+"-"+K[e[t+10]]+K[e[t+11]]+K[e[t+12]]+K[e[t+13]]+K[e[t+14]]+K[e[t+15]]}const Bt={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function $e(e,t,n){if(Bt.randomUUID&&!t&&!e)return Bt.randomUUID();e=e||{};const o=e.random||(e.rng||Zn)();if(o[6]=o[6]&15|64,o[8]=o[8]&63|128,t){n=n||0;for(let i=0;i<16;++i)t[n+i]=o[i];return t}return Qn(o)}var Pt=Object.prototype.hasOwnProperty;function pe(e,t){var n,o;if(e===t)return!0;if(e&&t&&(n=e.constructor)===t.constructor){if(n===Date)return e.getTime()===t.getTime();if(n===RegExp)return e.toString()===t.toString();if(n===Array){if((o=e.length)===t.length)for(;o--&&pe(e[o],t[o]););return o===-1}if(!n||typeof e=="object"){o=0;for(n in e)if(Pt.call(e,n)&&++o&&!Pt.call(t,n)||!(n in t)||!pe(e[n],t[n]))return!1;return Object.keys(t).length===o}}return e!==e&&t!==t}const Se=[];function Ne(e,t=F){let n;const o=new Set;function i(a){if(x(e,a)&&(e=a,n)){const l=!Se.length;for(const d of o)d[1](),Se.push(d,e);if(l){for(let d=0;d<Se.length;d+=2)Se[d][0](Se[d+1]);Se.length=0}}}function s(a){i(a(e))}function r(a,l=F){const d=[a,l];return o.add(d),o.size===1&&(n=t(i)||F),a(e),()=>{o.delete(d),o.size===0&&n&&(n(),n=null)}}return{set:i,update:s,subscribe:r}}const xn=e=>{const{subscribe:t,set:n}=Ne(null);let o=null;return t(i=>o=i),e.observe(({changes:i})=>{if(o){i.deleted.some(a=>a.id===o)&&n(null);const r=i.updated.find(({oldValue:a})=>a.id===o);r&&n(r.newValue.id)}}),{get current(){return o},subscribe:t,set:n}};var et=(e=>(e.EDIT="EDIT",e.SELECT="SELECT",e.NONE="NONE",e))(et||{});const tt={selected:[]},$n=(e,t="EDIT")=>{const{subscribe:n,set:o}=Ne(tt);let i=tt;n(c=>i=c);const s=()=>o(tt),r=()=>{var c;return((c=i.selected)==null?void 0:c.length)===0},a=c=>{if(i.selected.length===0)return!1;const f=typeof c=="string"?c:c.id;return i.selected.some(h=>h.id===f)},l=(c,f)=>{const h=e.getAnnotation(c);if(h){const p=eo(h,t);o(p==="EDIT"?{selected:[{id:c,editable:!0}],pointerEvent:f}:p==="SELECT"?{selected:[{id:c}],pointerEvent:f}:{selected:[],pointerEvent:f})}else console.warn("Invalid selection: "+c)},d=(c,f=!0)=>{const h=Array.isArray(c)?c:[c],p=h.map(g=>e.getAnnotation(g)).filter(g=>g);o({selected:p.map(({id:g})=>({id:g,editable:f}))}),p.length!==h.length&&console.warn("Invalid selection",c)},m=c=>{if(i.selected.length===0)return!1;const{selected:f}=i;f.filter(({id:p})=>c.includes(p)).length>0&&o({selected:f.filter(({id:p})=>!c.includes(p))})};return e.observe(({changes:c})=>m(c.deleted.map(f=>f.id))),{clear:s,clickSelect:l,get selected(){return i?[...i.selected]:null},get pointerEvent(){return i?i.pointerEvent:null},isEmpty:r,isSelected:a,setSelected:d,subscribe:n}},eo=(e,t)=>typeof t=="function"?t(e)||"EDIT":t||"EDIT",to=e=>{const{creator:t,updatedBy:n}=e.target,o=e.bodies.reduce((i,s)=>[...i,s.creator,s.updatedBy],[]);return[t,n,...o].filter(i=>i)},no=(e,t,n,o)=>({id:$e(),annotation:e.id,created:n||new Date,creator:o,...t}),oo=(e,t)=>{const n=new Set(e.bodies.map(o=>o.id));return t.bodies.filter(o=>!n.has(o.id))},io=(e,t)=>{const n=new Set(t.bodies.map(o=>o.id));return e.bodies.filter(o=>!n.has(o.id))},so=(e,t)=>t.bodies.map(n=>{const o=e.bodies.find(i=>i.id===n.id);return{newBody:n,oldBody:o&&!pe(o,n)?o:void 0}}).filter(({oldBody:n})=>n),ro=(e,t)=>!pe(e.target,t.target),nt=(e,t)=>{const n=oo(e,t),o=io(e,t),i=so(e,t);return{oldValue:e,newValue:t,bodiesCreated:n.length>0?n:void 0,bodiesDeleted:o.length>0?o:void 0,bodiesUpdated:i.length>0?i:void 0,targetUpdated:ro(e,t)?{oldTarget:e.target,newTarget:t.target}:void 0}};var H=(e=>(e.LOCAL="LOCAL",e.REMOTE="REMOTE",e))(H||{});const lo=(e,t)=>{var s,r;const{changes:n,origin:o}=t;if(!(!e.options.origin||e.options.origin===o))return!1;if(e.options.ignore){const{ignore:a}=e.options,l=m=>(m==null?void 0:m.length)>0;if(!(l(n.created)||l(n.deleted))){const m=(s=n.updated)==null?void 0:s.some(f=>l(f.bodiesCreated)||l(f.bodiesDeleted)||l(f.bodiesUpdated)),c=(r=n.updated)==null?void 0:r.some(f=>f.targetUpdated);if(a==="BODY_ONLY"&&m&&!c||a==="TARGET_ONLY"&&c&&!m)return!1}}if(e.options.annotations){const a=new Set([...n.created.map(d=>d.id),...n.deleted.map(d=>d.id),...n.updated.map(({oldValue:d})=>d.id)]);return!!(Array.isArray(e.options.annotations)?e.options.annotations:[e.options.annotations]).find(d=>a.has(d))}else return!0},ao=(e,t)=>{const n=new Set((e.created||[]).map(c=>c.id)),o=new Set((e.updated||[]).map(({newValue:c})=>c.id)),i=new Set((t.created||[]).map(c=>c.id)),s=new Set((t.deleted||[]).map(c=>c.id)),r=new Set((t.updated||[]).map(({oldValue:c})=>c.id)),a=new Set((t.updated||[]).filter(({oldValue:c})=>n.has(c.id)||o.has(c.id)).map(({oldValue:c})=>c.id)),l=[...(e.created||[]).filter(c=>!s.has(c.id)).map(c=>r.has(c.id)?t.updated.find(({oldValue:f})=>f.id===c.id).newValue:c),...t.created||[]],d=[...(e.deleted||[]).filter(c=>!i.has(c.id)),...(t.deleted||[]).filter(c=>!n.has(c.id))],m=[...(e.updated||[]).filter(({newValue:c})=>!s.has(c.id)).map(c=>{const{oldValue:f,newValue:h}=c;if(r.has(h.id)){const p=t.updated.find(g=>g.oldValue.id===h.id).newValue;return nt(f,p)}else return c}),...(t.updated||[]).filter(({oldValue:c})=>!a.has(c.id))];return{created:l,deleted:d,updated:m}},co=e=>e.id!==void 0,fo=()=>{const e=new Map,t=new Map,n=[],o=(y,b={})=>n.push({onChange:y,options:b}),i=y=>{const b=n.findIndex(E=>E.onChange==y);b>-1&&n.splice(b,1)},s=(y,b)=>{const E={origin:y,changes:{created:b.created||[],updated:b.updated||[],deleted:b.deleted||[]},state:[...e.values()]};n.forEach(A=>{lo(A,E)&&A.onChange(E)})},r=(y,b=H.LOCAL)=>{if(e.get(y.id))throw Error(`Cannot add annotation ${y.id} - exists already`);e.set(y.id,y),y.bodies.forEach(A=>t.set(A.id,y.id)),s(b,{created:[y]})},a=(y,b)=>{const E=typeof y=="string"?b:y,A=typeof y=="string"?y:y.id,k=e.get(A);if(k){const G=nt(k,E);return A===E.id?e.set(A,E):(e.delete(A),e.set(E.id,E)),k.bodies.forEach($=>t.delete($.id)),E.bodies.forEach($=>t.set($.id,E.id)),G}else console.warn(`Cannot update annotation ${A} - does not exist`)},l=(y,b=H.LOCAL,E=H.LOCAL)=>{const A=co(b)?E:b,k=a(y,b);k&&s(A,{updated:[k]})},d=(y,b=H.LOCAL)=>{const E=y.reduce((A,k)=>{const G=a(k);return G?[...A,G]:A},[]);E.length>0&&s(b,{updated:E})},m=(y,b=H.LOCAL)=>{const E=e.get(y.annotation);if(E){const A={...E,bodies:[...E.bodies,y]};e.set(E.id,A),t.set(y.id,A.id),s(b,{updated:[{oldValue:E,newValue:A,bodiesCreated:[y]}]})}else console.warn(`Attempt to add body to missing annotation: ${y.annotation}`)},c=()=>[...e.values()],f=(y=H.LOCAL)=>{const b=[...e.values()];e.clear(),t.clear(),s(y,{deleted:b})},h=(y,b=!0,E=H.LOCAL)=>{if(b){const A=[...e.values()];e.clear(),t.clear(),y.forEach(k=>{e.set(k.id,k),k.bodies.forEach(G=>t.set(G.id,k.id))}),s(E,{created:y,deleted:A})}else{const A=y.reduce((k,G)=>{const $=e.get(G.id);return $?[...k,$]:k},[]);if(A.length>0)throw Error(`Bulk insert would overwrite the following annotations: ${A.map(k=>k.id).join(", ")}`);y.forEach(k=>{e.set(k.id,k),k.bodies.forEach(G=>t.set(G.id,k.id))}),s(E,{created:y})}},p=y=>{const b=typeof y=="string"?y:y.id,E=e.get(b);if(E)return e.delete(b),E.bodies.forEach(A=>t.delete(A.id)),E;console.warn(`Attempt to delete missing annotation: ${b}`)},g=(y,b=H.LOCAL)=>{const E=p(y);E&&s(b,{deleted:[E]})},w=(y,b=H.LOCAL)=>{const E=y.reduce((A,k)=>{const G=p(k);return G?[...A,G]:A},[]);E.length>0&&s(b,{deleted:E})},T=(y,b=H.LOCAL)=>{const E=e.get(y.annotation);if(E){const A=E.bodies.find(k=>k.id===y.id);if(A){t.delete(A.id);const k={...E,bodies:E.bodies.filter($=>$.id!==y.id)};e.set(E.id,k),s(b,{updated:[{oldValue:E,newValue:k,bodiesDeleted:[A]}]})}else console.warn(`Attempt to delete missing body ${y.id} from annotation ${y.annotation}`)}else console.warn(`Attempt to delete body from missing annotation ${y.annotation}`)},_=y=>{const b=e.get(y);return b?{...b}:void 0},L=y=>{const b=t.get(y);if(b){const A=_(b).bodies.find(k=>k.id===y);if(A)return A;console.error(`Store integrity error: body ${y} in index, but not in annotation`)}else console.warn(`Attempt to retrieve missing body: ${y}`)},N=(y,b)=>{if(y.annotation!==b.annotation)throw"Annotation integrity violation: annotation ID must be the same when updating bodies";const E=e.get(y.annotation);if(E){const A=E.bodies.find(G=>G.id===y.id),k={...E,bodies:E.bodies.map(G=>G.id===A.id?b:G)};return e.set(E.id,k),A.id!==b.id&&(t.delete(A.id),t.set(b.id,k.id)),{oldValue:E,newValue:k,bodiesUpdated:[{oldBody:A,newBody:b}]}}else console.warn(`Attempt to add body to missing annotation ${y.annotation}`)},D=(y,b,E=H.LOCAL)=>{const A=N(y,b);s(E,{updated:[A]})},j=(y,b=H.LOCAL)=>{const E=y.map(A=>N({id:A.id,annotation:A.annotation},A));s(b,{updated:E})},Z=y=>{const b=e.get(y.annotation);if(b){const E={...b,target:{...b.target,...y}};return e.set(b.id,E),{oldValue:b,newValue:E,targetUpdated:{oldTarget:b.target,newTarget:y}}}else console.warn(`Attempt to update target on missing annotation: ${y.annotation}`)};return{addAnnotation:r,addBody:m,all:c,bulkAddAnnotation:h,bulkDeleteAnnotation:w,bulkUpdateAnnotation:d,bulkUpdateBodies:j,bulkUpdateTargets:(y,b=H.LOCAL)=>{const E=y.map(Z).filter(A=>A);E.length>0&&s(b,{updated:E})},clear:f,deleteAnnotation:g,deleteBody:T,getAnnotation:_,getBody:L,observe:o,unobserve:i,updateAnnotation:l,updateBody:D,updateTarget:(y,b=H.LOCAL)=>{const E=Z(y);E&&s(b,{updated:[E]})}}},uo=e=>({...e,subscribe:n=>{const o=i=>n(i.state);return e.observe(o),n(e.all()),()=>e.unobserve(o)}}),ho=250,mo=e=>{const t=[];let n=-1,o=!1,i=0;const s=g=>{if(!o){const{changes:w}=g,T=performance.now();if(T-i>ho)t.splice(n+1),t.push(w),n=t.length-1;else{const _=t.length-1;t[_]=ao(t[_],w)}i=T}o=!1};e.observe(s,{origin:H.LOCAL});const r=g=>(g==null?void 0:g.length)>0&&e.bulkDeleteAnnotation(g),a=g=>(g==null?void 0:g.length)>0&&e.bulkAddAnnotation(g,!1),l=g=>(g==null?void 0:g.length)>0&&e.bulkUpdateAnnotation(g.map(({oldValue:w})=>w)),d=g=>(g==null?void 0:g.length)>0&&e.bulkUpdateAnnotation(g.map(({newValue:w})=>w)),m=g=>(g==null?void 0:g.length)>0&&e.bulkAddAnnotation(g,!1),c=g=>(g==null?void 0:g.length)>0&&e.bulkDeleteAnnotation(g);return{destroy:()=>e.unobserve(s),redo:()=>{if(t.length-1>n){o=!0;const{created:g,updated:w,deleted:T}=t[n+1];a(g),d(w),c(T),n+=1}},undo:()=>{if(n>-1){o=!0;const{created:g,updated:w,deleted:T}=t[n];r(g),l(w),m(T),n-=1}}}},go=()=>{const{subscribe:e,set:t}=Ne([]);return{subscribe:e,set:t}},po=(e,t,n,o,i,s)=>{const r=new Map;let a=[],l,d;const m=(p,g)=>{r.has(p)?r.get(p).push(g):r.set(p,[g])},c=(p,g)=>{const w=r.get(p);w&&w.indexOf(g)>0&&w.splice(w.indexOf(g),1)},f=(p,g,w)=>{r.has(p)&&setTimeout(()=>{r.get(p).forEach(T=>{if(i){const _=Array.isArray(g)?g.map(N=>i.serialize(N)):i.serialize(g),L=w?w instanceof PointerEvent?w:i.serialize(w):void 0;T(_,L)}else T(g,w)})},1)},h=()=>{const{selected:p}=t,g=p.map(({id:w})=>e.getAnnotation(w));g.forEach(w=>{const T=a.find(_=>_.id===w.id);(!T||!pe(T,w))&&f("updateAnnotation",w,T)}),a=a.map(w=>{const T=g.find(({id:_})=>_===w.id);return T||w})};return t.subscribe(({selected:p})=>{if(!(a.length===0&&p.length===0)){if(a.length===0&&p.length>0)a=p.map(({id:g})=>e.getAnnotation(g));else if(a.length>0&&p.length===0)a.forEach(g=>{const w=e.getAnnotation(g.id);w&&!pe(w,g)&&f("updateAnnotation",w,g)}),a=[];else{const g=new Set(a.map(_=>_.id)),w=new Set(p.map(({id:_})=>_));a.filter(_=>!w.has(_.id)).forEach(_=>{const L=e.getAnnotation(_.id);L&&!pe(L,_)&&f("updateAnnotation",L,_)}),a=[...a.filter(_=>w.has(_.id)),...p.filter(({id:_})=>!g.has(_)).map(({id:_})=>e.getAnnotation(_))]}f("selectionChanged",a)}}),n.subscribe(p=>{!l&&p?f("mouseEnterAnnotation",e.getAnnotation(p)):l&&!p?f("mouseLeaveAnnotation",e.getAnnotation(l)):l&&p&&(f("mouseLeaveAnnotation",e.getAnnotation(l)),f("mouseEnterAnnotation",e.getAnnotation(p))),l=p}),o==null||o.subscribe(p=>f("viewportIntersect",p.map(e.getAnnotation))),e.observe(p=>{s&&(d&&clearTimeout(d),d=setTimeout(h,1e3));const{created:g,deleted:w}=p.changes;g.forEach(_=>f("createAnnotation",_)),w.forEach(_=>f("deleteAnnotation",_)),p.changes.updated.filter(_=>[..._.bodiesCreated||[],..._.bodiesDeleted||[],..._.bodiesUpdated||[]].length>0).forEach(({oldValue:_,newValue:L})=>{const N=a.find(D=>D.id===_.id)||_;a=a.map(D=>D.id===_.id?L:D),f("updateAnnotation",L,N)})},{origin:H.LOCAL}),e.observe(p=>{if(a){const g=new Set(a.map(T=>T.id)),w=p.changes.updated.filter(({newValue:T})=>g.has(T.id)).map(({newValue:T})=>T);w.length>0&&(a=a.map(T=>{const _=w.find(L=>L.id===T.id);return _||T}))}},{origin:H.REMOTE}),{on:m,off:c,emit:f}},_o=e=>t=>t.map(n=>e.serialize(n)),Rt=e=>t=>t.reduce((n,o)=>{const{parsed:i,error:s}=e.parse(o);return s?{parsed:n.parsed,failed:[...n.failed,o]}:{parsed:[...n.parsed,i],failed:n.failed}},{parsed:[],failed:[]}),Yt=(e,t,n)=>{const o=c=>{if(n){const{parsed:f,error:h}=n.parse(c);f?e.addAnnotation(f,H.REMOTE):console.error(h)}else e.addAnnotation(c,H.REMOTE)},i=()=>e.clear(),s=c=>{const f=e.getAnnotation(c);return n&&f?n.serialize(f):f},r=()=>n?e.all().map(n.serialize):e.all(),a=c=>fetch(c).then(f=>f.json()).then(f=>(d(f),f)),l=c=>{if(typeof c=="string"){const f=e.getAnnotation(c);return e.deleteAnnotation(c),n?n.serialize(f):f}else{const f=n?n.parse(c).parsed:c;return e.deleteAnnotation(f),c}},d=c=>{if(n){const{parsed:f,failed:h}=Rt(n)(c);h.length>0&&console.warn(`Discarded ${h.length} invalid annotations`,h),e.bulkAddAnnotation(f,!0,H.REMOTE)}else e.bulkAddAnnotation(c,!0,H.REMOTE)},m=c=>{if(n){const f=n.parse(c).parsed,h=n.serialize(e.getAnnotation(f.id));return e.updateAnnotation(f),h}else{const f=e.getAnnotation(c.id);return e.updateAnnotation(c),f}};return{addAnnotation:o,clearAnnotations:i,getAnnotationById:s,getAnnotations:r,loadAnnotations:a,redo:t.redo,removeAnnotation:l,setAnnotations:d,undo:t.undo,updateAnnotation:m}};let yo=e=>crypto.getRandomValues(new Uint8Array(e)),wo=(e,t,n)=>{let o=(2<<Math.log(e.length-1)/Math.LN2)-1,i=-~(1.6*o*t/e.length);return(s=t)=>{let r="";for(;;){let a=n(i),l=i;for(;l--;)if(r+=e[a[l]&o]||"",r.length===s)return r}}},bo=(e,t=21)=>wo(e,t,yo),Eo=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce((t,n)=>(n&=63,n<36?t+=n.toString(36):n<62?t+=(n-26).toString(36).toUpperCase():n>62?t+="-":t+="_",t),"");const Dt=()=>({isGuest:!0,id:bo("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_",20)()}),Ao=e=>{const t=JSON.stringify(e);let n=0;for(let o=0,i=t.length;o<i;o++){let s=t.charCodeAt(o);n=(n<<5)-n+s,n|=0}return`${n}`},Xt=(e,t)=>(Array.isArray(e)?e:[e]).map(n=>{const{id:o,type:i,purpose:s,value:r,created:a,creator:l,...d}=n;return{id:o||`temp-${Ao(n)}`,annotation:t,type:i,purpose:s,value:r,created:a,creator:l?typeof l=="object"?{...l}:l:void 0,...d}}),Ut=e=>e.map(t=>{var o;const n={...t};return delete n.annotation,(o=n.id)!=null&&o.startsWith("temp-")&&delete n.id,n}),So=["#ff7c00","#1ac938","#e8000b","#8b2be2","#9f4800","#f14cc1","#ffc400","#00d7ff","#023eff"],Nt=()=>{const e=[...So];return{assignRandomColor:()=>{const o=Math.floor(Math.random()*e.length),i=e[o];return e.splice(o,1),i},releaseColor:o=>e.push(o)}},Gt=()=>{const e=Nt();return{addUser:(o,i)=>{const s=e.assignRandomColor();return{label:i.name||i.id,avatar:i.avatar,color:s}},removeUser:o=>e.releaseColor(o.appearance.color)}};let To=()=>({emit(e,...t){let n=this.events[e]||[];for(let o=0,i=n.length;o<i;o++)n[o](...t)},events:{},on(e,t){var n;return(n=this.events[e])!=null&&n.push(t)||(this.events[e]=[t]),()=>{var o;this.events[e]=(o=this.events[e])==null?void 0:o.filter(i=>t!==i)}}});const Mo=(e,t)=>e.every(n=>e.includes(n))&&t.every(n=>e.includes(n)),Lo=Eo(),Oo=(e=Gt())=>{const t=To(),n=new Map,o=new Map,i=(c,f)=>{if(n.has(c)){console.warn("Attempt to add user that is already present",c,f);return}const h=e.addUser(c,f);n.set(c,{...f,presenceKey:c,appearance:h})},s=c=>{const f=n.get(c);if(!f){console.warn("Attempt to remove user that is not present",c);return}e.removeUser(f),n.delete(c)},r=c=>{const f=new Set(c.map(g=>g.presenceKey)),h=c.filter(({presenceKey:g})=>!n.has(g)),p=Array.from(n.values()).filter(g=>!f.has(g.presenceKey));h.forEach(({presenceKey:g,user:w})=>i(g,w)),p.forEach(g=>{const{presenceKey:w}=g;o.has(w)&&t.emit("selectionChange",g,null),s(w)}),(h.length>0||p.length>0)&&t.emit("presence",d())},a=(c,f)=>{const h=n.get(c);if(!h){console.warn("Activity notification from user that is not present");return}const p=o.get(c);(!p||!Mo(p,f))&&(o.set(c,f),t.emit("selectionChange",h,f))},l=(c,f)=>{const h=n.get(c);if(!h){console.warn("Selection change for user that is not present",c);return}f?o.set(c,f):o.delete(c),t.emit("selectionChange",h,f)},d=()=>[...Array.from(n.values())];return{getPresentUsers:d,notifyActivity:a,on:(c,f)=>t.on(c,f),syncUsers:r,updateSelection:l}},vo=(e,t=!1)=>({parse:i=>Ft(i,t),serialize:i=>Ht(i,e)}),Ft=(e,t=!1)=>{const n=e.id||$e(),{body:o,...i}=e,s=Xt(o,n),r=Array.isArray(e.target)?e.target[0]:e.target,a=Array.isArray(r.selector)?r.selector[0]:r.selector,l=a.type==="FragmentSelector"?Lt(a,t):a.type==="SvgSelector"?kt(a):void 0;return l?{parsed:{...i,id:n,bodies:s,target:{annotation:n,selector:l}}}:{error:Error(`Unknown selector type: ${l.type}`)}},Ht=(e,t)=>{const n=e.target.selector,o=n.type==z.RECTANGLE?Ot(n.geometry):It(n);return{...e,"@context":"http://www.w3.org/ns/anno.jsonld",id:e.id,type:"Annotation",body:Ut(e.bodies),target:{source:t,selector:o}}};function zt(e,t,n){const o=e.slice();return o[11]=t[n],o[13]=n,o}function Vt(e){let t,n,o,i,s;return{c(){t=P("rect"),u(t,"class","a9s-corner-handle"),u(t,"x",n=e[11][0]-e[3]/2),u(t,"y",o=e[11][1]-e[3]/2),u(t,"height",e[3]),u(t,"width",e[3])},m(r,a){C(r,t,a),i||(s=q(t,"pointerdown",function(){W(e[10](O(e[13])))&&e[10](O(e[13])).apply(this,arguments)}),i=!0)},p(r,a){e=r,a&24&&n!==(n=e[11][0]-e[3]/2)&&u(t,"x",n),a&24&&o!==(o=e[11][1]-e[3]/2)&&u(t,"y",o),a&8&&u(t,"height",e[3]),a&8&&u(t,"width",e[3])},d(r){r&&v(t),i=!1,s()}}}function Co(e){let t,n,o,i,s,r,a,l,d,m,c=e[4].points,f=[];for(let h=0;h<c.length;h+=1)f[h]=Vt(zt(e,c,h));return{c(){t=P("polygon"),i=oe(),s=P("polygon"),a=oe();for(let h=0;h<f.length;h+=1)f[h].c();l=ae(),u(t,"class","a9s-outer"),u(t,"style",n=e[1]?"display:none;":void 0),u(t,"points",o=e[4].points.map(jt).join(" ")),u(s,"class","a9s-inner a9s-shape-handle"),u(s,"style",e[1]),u(s,"points",r=e[4].points.map(Wt).join(" "))},m(h,p){C(h,t,p),C(h,i,p),C(h,s,p),C(h,a,p);for(let g=0;g<f.length;g+=1)f[g]&&f[g].m(h,p);C(h,l,p),d||(m=[q(t,"pointerdown",function(){W(e[10](O.SHAPE))&&e[10](O.SHAPE).apply(this,arguments)}),q(s,"pointerdown",function(){W(e[10](O.SHAPE))&&e[10](O.SHAPE).apply(this,arguments)})],d=!0)},p(h,p){if(e=h,p&2&&n!==(n=e[1]?"display:none;":void 0)&&u(t,"style",n),p&16&&o!==(o=e[4].points.map(jt).join(" "))&&u(t,"points",o),p&2&&u(s,"style",e[1]),p&16&&r!==(r=e[4].points.map(Wt).join(" "))&&u(s,"points",r),p&1048){c=e[4].points;let g;for(g=0;g<c.length;g+=1){const w=zt(e,c,g);f[g]?f[g].p(w,p):(f[g]=Vt(w),f[g].c(),f[g].m(l.parentNode,l))}for(;g<f.length;g+=1)f[g].d(1);f.length=c.length}},d(h){h&&v(t),h&&v(i),h&&v(s),h&&v(a),Ke(f,h),h&&v(l),d=!1,le(m)}}}function ko(e){let t,n;return t=new it({props:{shape:e[0],transform:e[2],editor:e[5],$$slots:{default:[Co,({grab:o})=>({10:o}),({grab:o})=>o?1024:0]},$$scope:{ctx:e}}}),t.$on("change",e[7]),t.$on("grab",e[8]),t.$on("release",e[9]),{c(){ge(t.$$.fragment)},m(o,i){de(t,o,i),n=!0},p(o,[i]){const s={};i&1&&(s.shape=o[0]),i&4&&(s.transform=o[2]),i&17434&&(s.$$scope={dirty:i,ctx:o}),t.$set(s)},i(o){n||(Y(t.$$.fragment,o),n=!0)},o(o){U(t.$$.fragment,o),n=!1},d(o){he(t,o)}}}const jt=e=>e.join(","),Wt=e=>e.join(",");function Io(e,t,n){let o,i,{shape:s}=t,{computedStyle:r=void 0}=t,{transform:a}=t,{viewportScale:l=1}=t;const d=(h,p,g)=>{let w;p===O.SHAPE?w=h.geometry.points.map(([_,L])=>[_+g[0],L+g[1]]):w=h.geometry.points.map(([_,L],N)=>p===O(N)?[_+g[0],L+g[1]]:[_,L]);const T=Ce(w);return{...h,geometry:{points:w,bounds:T}}};function m(h){we.call(this,e,h)}function c(h){we.call(this,e,h)}function f(h){we.call(this,e,h)}return e.$$set=h=>{"shape"in h&&n(0,s=h.shape),"computedStyle"in h&&n(1,r=h.computedStyle),"transform"in h&&n(2,a=h.transform),"viewportScale"in h&&n(6,l=h.viewportScale)},e.$$.update=()=>{e.$$.dirty&1&&n(4,o=s.geometry),e.$$.dirty&64&&n(3,i=10/l)},[s,r,a,i,o,d,l,m,c,f]}class qt extends se{constructor(t){super(),ie(this,t,Io,ko,x,{shape:0,computedStyle:1,transform:2,viewportScale:6})}}function Bo(e){let t,n,o,i,s,r,a,l,d,m,c,f,h,p,g,w,T,_,L,N,D,j,Z,X,R,y,b,E,A,k,G,$,Pe,ee,I,Q,V,J,re,_e,ut,te,Ve,je,dt,ne,We,qe,ht,Cn;return{c(){t=P("rect"),a=oe(),l=P("rect"),h=oe(),p=P("rect"),_=oe(),L=P("rect"),Z=oe(),X=P("rect"),E=oe(),A=P("rect"),Pe=oe(),ee=P("rect"),V=oe(),J=P("rect"),ut=oe(),te=P("rect"),dt=oe(),ne=P("rect"),u(t,"class","a9s-outer"),u(t,"style",n=e[1]?"display:none;":void 0),u(t,"x",o=e[4].x),u(t,"y",i=e[4].y),u(t,"width",s=e[4].w),u(t,"height",r=e[4].h),u(l,"class","a9s-inner a9s-shape-handle"),u(l,"style",e[1]),u(l,"x",d=e[4].x),u(l,"y",m=e[4].y),u(l,"width",c=e[4].w),u(l,"height",f=e[4].h),u(p,"class","a9s-edge-handle a9s-edge-handle-top"),u(p,"x",g=e[4].x),u(p,"y",w=e[4].y),u(p,"height",1),u(p,"width",T=e[4].w),u(L,"class","a9s-edge-handle a9s-edge-handle-right"),u(L,"x",N=e[4].x+e[4].w),u(L,"y",D=e[4].y),u(L,"height",j=e[4].h),u(L,"width",1),u(X,"class","a9s-edge-handle a9s-edge-handle-bottom"),u(X,"x",R=e[4].x),u(X,"y",y=e[4].y+e[4].h),u(X,"height",1),u(X,"width",b=e[4].w),u(A,"class","a9s-edge-handle a9s-edge-handle-left"),u(A,"x",k=e[4].x),u(A,"y",G=e[4].y),u(A,"height",$=e[4].h),u(A,"width",1),u(ee,"class","a9s-corner-handle a9s-corner-handle-topleft"),u(ee,"x",I=e[4].x-e[3]/2),u(ee,"y",Q=e[4].y-e[3]/2),u(ee,"height",e[3]),u(ee,"width",e[3]),u(J,"class","a9s-corner-handle a9s-corner-handle-topright"),u(J,"x",re=e[4].x+e[4].w-e[3]/2),u(J,"y",_e=e[4].y-e[3]/2),u(J,"height",e[3]),u(J,"width",e[3]),u(te,"class","a9s-corner-handle a9s-corner-handle-bottomright"),u(te,"x",Ve=e[4].x+e[4].w-e[3]/2),u(te,"y",je=e[4].y+e[4].h-e[3]/2),u(te,"height",e[3]),u(te,"width",e[3]),u(ne,"class","a9s-corner-handle a9s-corner-handle-bottomleft"),u(ne,"x",We=e[4].x-e[3]/2),u(ne,"y",qe=e[4].y+e[4].h-e[3]/2),u(ne,"height",e[3]),u(ne,"width",e[3])},m(B,M){C(B,t,M),C(B,a,M),C(B,l,M),C(B,h,M),C(B,p,M),C(B,_,M),C(B,L,M),C(B,Z,M),C(B,X,M),C(B,E,M),C(B,A,M),C(B,Pe,M),C(B,ee,M),C(B,V,M),C(B,J,M),C(B,ut,M),C(B,te,M),C(B,dt,M),C(B,ne,M),ht||(Cn=[q(t,"pointerdown",function(){W(e[10](O.SHAPE))&&e[10](O.SHAPE).apply(this,arguments)}),q(l,"pointerdown",function(){W(e[10](O.SHAPE))&&e[10](O.SHAPE).apply(this,arguments)}),q(p,"pointerdown",function(){W(e[10](O.TOP))&&e[10](O.TOP).apply(this,arguments)}),q(L,"pointerdown",function(){W(e[10](O.RIGHT))&&e[10](O.RIGHT).apply(this,arguments)}),q(X,"pointerdown",function(){W(e[10](O.BOTTOM))&&e[10](O.BOTTOM).apply(this,arguments)}),q(A,"pointerdown",function(){W(e[10](O.LEFT))&&e[10](O.LEFT).apply(this,arguments)}),q(ee,"pointerdown",function(){W(e[10](O.TOP_LEFT))&&e[10](O.TOP_LEFT).apply(this,arguments)}),q(J,"pointerdown",function(){W(e[10](O.TOP_RIGHT))&&e[10](O.TOP_RIGHT).apply(this,arguments)}),q(te,"pointerdown",function(){W(e[10](O.BOTTOM_RIGHT))&&e[10](O.BOTTOM_RIGHT).apply(this,arguments)}),q(ne,"pointerdown",function(){W(e[10](O.BOTTOM_LEFT))&&e[10](O.BOTTOM_LEFT).apply(this,arguments)})],ht=!0)},p(B,M){e=B,M&2&&n!==(n=e[1]?"display:none;":void 0)&&u(t,"style",n),M&16&&o!==(o=e[4].x)&&u(t,"x",o),M&16&&i!==(i=e[4].y)&&u(t,"y",i),M&16&&s!==(s=e[4].w)&&u(t,"width",s),M&16&&r!==(r=e[4].h)&&u(t,"height",r),M&2&&u(l,"style",e[1]),M&16&&d!==(d=e[4].x)&&u(l,"x",d),M&16&&m!==(m=e[4].y)&&u(l,"y",m),M&16&&c!==(c=e[4].w)&&u(l,"width",c),M&16&&f!==(f=e[4].h)&&u(l,"height",f),M&16&&g!==(g=e[4].x)&&u(p,"x",g),M&16&&w!==(w=e[4].y)&&u(p,"y",w),M&16&&T!==(T=e[4].w)&&u(p,"width",T),M&16&&N!==(N=e[4].x+e[4].w)&&u(L,"x",N),M&16&&D!==(D=e[4].y)&&u(L,"y",D),M&16&&j!==(j=e[4].h)&&u(L,"height",j),M&16&&R!==(R=e[4].x)&&u(X,"x",R),M&16&&y!==(y=e[4].y+e[4].h)&&u(X,"y",y),M&16&&b!==(b=e[4].w)&&u(X,"width",b),M&16&&k!==(k=e[4].x)&&u(A,"x",k),M&16&&G!==(G=e[4].y)&&u(A,"y",G),M&16&&$!==($=e[4].h)&&u(A,"height",$),M&24&&I!==(I=e[4].x-e[3]/2)&&u(ee,"x",I),M&24&&Q!==(Q=e[4].y-e[3]/2)&&u(ee,"y",Q),M&8&&u(ee,"height",e[3]),M&8&&u(ee,"width",e[3]),M&24&&re!==(re=e[4].x+e[4].w-e[3]/2)&&u(J,"x",re),M&24&&_e!==(_e=e[4].y-e[3]/2)&&u(J,"y",_e),M&8&&u(J,"height",e[3]),M&8&&u(J,"width",e[3]),M&24&&Ve!==(Ve=e[4].x+e[4].w-e[3]/2)&&u(te,"x",Ve),M&24&&je!==(je=e[4].y+e[4].h-e[3]/2)&&u(te,"y",je),M&8&&u(te,"height",e[3]),M&8&&u(te,"width",e[3]),M&24&&We!==(We=e[4].x-e[3]/2)&&u(ne,"x",We),M&24&&qe!==(qe=e[4].y+e[4].h-e[3]/2)&&u(ne,"y",qe),M&8&&u(ne,"height",e[3]),M&8&&u(ne,"width",e[3])},d(B){B&&v(t),B&&v(a),B&&v(l),B&&v(h),B&&v(p),B&&v(_),B&&v(L),B&&v(Z),B&&v(X),B&&v(E),B&&v(A),B&&v(Pe),B&&v(ee),B&&v(V),B&&v(J),B&&v(ut),B&&v(te),B&&v(dt),B&&v(ne),ht=!1,le(Cn)}}}function Po(e){let t,n;return t=new it({props:{shape:e[0],transform:e[2],editor:e[5],$$slots:{default:[Bo,({grab:o})=>({10:o}),({grab:o})=>o?1024:0]},$$scope:{ctx:e}}}),t.$on("grab",e[7]),t.$on("change",e[8]),t.$on("release",e[9]),{c(){ge(t.$$.fragment)},m(o,i){de(t,o,i),n=!0},p(o,[i]){const s={};i&1&&(s.shape=o[0]),i&4&&(s.transform=o[2]),i&3098&&(s.$$scope={dirty:i,ctx:o}),t.$set(s)},i(o){n||(Y(t.$$.fragment,o),n=!0)},o(o){U(t.$$.fragment,o),n=!1},d(o){he(t,o)}}}function Ro(e,t,n){let o,i,{shape:s}=t,{computedStyle:r=void 0}=t,{transform:a}=t,{viewportScale:l=1}=t;const d=(h,p,g)=>{const w=h.geometry.bounds;let[T,_]=[w.minX,w.minY],[L,N]=[w.maxX,w.maxY];const[D,j]=g;if(p===O.SHAPE)T+=D,L+=D,_+=j,N+=j;else{switch(p){case O.TOP:case O.TOP_LEFT:case O.TOP_RIGHT:{_+=j;break}case O.BOTTOM:case O.BOTTOM_LEFT:case O.BOTTOM_RIGHT:{N+=j;break}}switch(p){case O.LEFT:case O.TOP_LEFT:case O.BOTTOM_LEFT:{T+=D;break}case O.RIGHT:case O.TOP_RIGHT:case O.BOTTOM_RIGHT:{L+=D;break}}}const Z=Math.min(T,L),X=Math.min(_,N),R=Math.abs(L-T),y=Math.abs(N-_);return{...h,geometry:{x:Z,y:X,w:R,h:y,bounds:{minX:Z,minY:X,maxX:Z+R,maxY:X+y}}}};function m(h){we.call(this,e,h)}function c(h){we.call(this,e,h)}function f(h){we.call(this,e,h)}return e.$$set=h=>{"shape"in h&&n(0,s=h.shape),"computedStyle"in h&&n(1,r=h.computedStyle),"transform"in h&&n(2,a=h.transform),"viewportScale"in h&&n(6,l=h.viewportScale)},e.$$.update=()=>{e.$$.dirty&1&&n(4,o=s.geometry),e.$$.dirty&64&&n(3,i=10/l)},[s,r,a,i,o,d,l,m,c,f]}class Kt extends se{constructor(t){super(),ie(this,t,Ro,Po,x,{shape:0,computedStyle:1,transform:2,viewportScale:6})}}const Jt=new Map([[z.RECTANGLE,Kt],[z.POLYGON,qt]]),ot=e=>Jt.get(e.type),Zt=(e,t)=>Jt.set(e,t),O=e=>`HANDLE-${e}`;O.SHAPE="SHAPE",O.TOP="TOP",O.RIGHT="RIGHT",O.BOTTOM="BOTTOM",O.LEFT="LEFT",O.TOP_LEFT="TOP_LEFT",O.TOP_RIGHT="TOP_RIGHT",O.BOTTOM_RIGHT="BOTTOM_RIGHT",O.BOTTOM_LEFT="BOTTOM_LEFT";const Yo=e=>({}),Qt=e=>({grab:e[0]});function Do(e){let t,n,o,i;const s=e[7].default,r=Bn(s,e,e[6],Qt);return{c(){t=P("g"),r&&r.c(),u(t,"class","a9s-annotation selected")},m(a,l){C(a,t,l),r&&r.m(t,null),n=!0,o||(i=[q(t,"pointerup",e[2]),q(t,"pointermove",e[1])],o=!0)},p(a,[l]){r&&r.p&&(!n||l&64)&&Rn(r,s,a,a[6],n?Pn(s,a[6],l,Yo):Yn(a[6]),Qt)},i(a){n||(Y(r,a),n=!0)},o(a){U(r,a),n=!1},d(a){a&&v(t),r&&r.d(a),o=!1,le(i)}}}function Xo(e,t,n){let{$$slots:o={},$$scope:i}=t;const s=ye();let{shape:r}=t,{editor:a}=t,{transform:l}=t,d=null,m,c=null;const f=g=>w=>{d=g,m=l.elementToImage(w.offsetX,w.offsetY),c=r,w.target.setPointerCapture(w.pointerId),s("grab")},h=g=>{if(d){const[w,T]=l.elementToImage(g.offsetX,g.offsetY),_=[w-m[0],T-m[1]];n(3,r=a(c,d,_)),s("change",r)}},p=g=>{g.target.releasePointerCapture(g.pointerId),d=null,c=r,s("release")};return e.$$set=g=>{"shape"in g&&n(3,r=g.shape),"editor"in g&&n(4,a=g.editor),"transform"in g&&n(5,l=g.transform),"$$scope"in g&&n(6,i=g.$$scope)},[f,h,p,r,a,l,i,o]}class it extends se{constructor(t){super(),ie(this,t,Xo,Do,x,{shape:3,editor:4,transform:5})}}const Ge=(e,t)=>{const n=typeof t=="function"?t(e):t;if(n){const{fill:o,fillOpacity:i}=n;let s="";return o&&(s+=`fill:${o};stroke:${o};`),s+=`fill-opacity:${i||"0.25"};`,s}};function Uo(e,t,n){let o;const i=ye();let{annotation:s}=t,{editor:r}=t,{style:a=void 0}=t,{target:l}=t,{transform:d}=t,{viewportScale:m}=t,c;return ve(()=>(n(6,c=new r({target:l,props:{shape:s.target.selector,computedStyle:o,transform:d,viewportScale:m}})),c.$on("change",f=>{c.$$set({shape:f.detail}),i("change",f.detail)}),c.$on("grab",f=>i("grab",f.detail)),c.$on("release",f=>i("release",f.detail)),()=>{c.$destroy()})),e.$$set=f=>{"annotation"in f&&n(0,s=f.annotation),"editor"in f&&n(1,r=f.editor),"style"in f&&n(2,a=f.style),"target"in f&&n(3,l=f.target),"transform"in f&&n(4,d=f.transform),"viewportScale"in f&&n(5,m=f.viewportScale)},e.$$.update=()=>{e.$$.dirty&5&&(o=Ge(s,a)),e.$$.dirty&65&&s&&(c==null||c.$set({shape:s.target.selector})),e.$$.dirty&80&&c&&c.$set({transform:d}),e.$$.dirty&96&&c&&c.$set({viewportScale:m})},[s,r,a,l,d,m,c]}class xt extends se{constructor(t){super(),ie(this,t,Uo,null,x,{annotation:0,editor:1,style:2,target:3,transform:4,viewportScale:5})}}function No(e,t,n){const o=ye();let{drawingMode:i}=t,{target:s}=t,{tool:r}=t,{transform:a}=t,{viewportScale:l}=t,d;return ve(()=>{const m=s.closest("svg"),c=[],f=(h,p,g)=>{m.addEventListener(h,p,g),c.push(()=>m.removeEventListener(h,p,g))};return n(5,d=new r({target:s,props:{addEventListener:f,drawingMode:i,transform:a,viewportScale:l}})),d.$on("create",h=>o("create",h.detail)),()=>{c.forEach(h=>h()),d.$destroy()}}),e.$$set=m=>{"drawingMode"in m&&n(0,i=m.drawingMode),"target"in m&&n(1,s=m.target),"tool"in m&&n(2,r=m.tool),"transform"in m&&n(3,a=m.transform),"viewportScale"in m&&n(4,l=m.viewportScale)},e.$$.update=()=>{e.$$.dirty&40&&d&&d.$set({transform:a}),e.$$.dirty&48&&d&&d.$set({viewportScale:l})},[i,s,r,a,l,d]}class $t extends se{constructor(t){super(),ie(this,t,No,null,x,{drawingMode:0,target:1,tool:2,transform:3,viewportScale:4})}}function en(e){let t,n;return{c(){t=P("rect"),n=P("rect"),u(t,"class","a9s-outer"),u(t,"x",e[1]),u(t,"y",e[2]),u(t,"width",e[3]),u(t,"height",e[4]),u(n,"class","a9s-inner"),u(n,"x",e[1]),u(n,"y",e[2]),u(n,"width",e[3]),u(n,"height",e[4])},m(o,i){C(o,t,i),C(o,n,i)},p(o,i){i&2&&u(t,"x",o[1]),i&4&&u(t,"y",o[2]),i&8&&u(t,"width",o[3]),i&16&&u(t,"height",o[4]),i&2&&u(n,"x",o[1]),i&4&&u(n,"y",o[2]),i&8&&u(n,"width",o[3]),i&16&&u(n,"height",o[4])},d(o){o&&v(t),o&&v(n)}}}function Go(e){let t,n=e[0]&&en(e);return{c(){t=P("g"),n&&n.c(),u(t,"class","a9s-annotation a9s-rubberband")},m(o,i){C(o,t,i),n&&n.m(t,null)},p(o,[i]){o[0]?n?n.p(o,i):(n=en(o),n.c(),n.m(t,null)):n&&(n.d(1),n=null)},i:F,o:F,d(o){o&&v(t),n&&n.d()}}}function Fo(e,t,n){const o=ye();let{addEventListener:i}=t,{drawingMode:s}=t,{transform:r}=t,a,l,d,m,c,f,h;const p=_=>{a=performance.now(),s==="drag"&&(n(0,l=r.elementToImage(_.offsetX,_.offsetY)),d=l,n(1,m=l[0]),n(2,c=l[1]),n(3,f=1),n(4,h=1))},g=_=>{l&&(d=r.elementToImage(_.offsetX,_.offsetY),n(1,m=Math.min(d[0],l[0])),n(2,c=Math.min(d[1],l[1])),n(3,f=Math.abs(d[0]-l[0])),n(4,h=Math.abs(d[1]-l[1])))},w=_=>{const L=performance.now()-a;if(s==="click"){if(L>300)return;_.stopPropagation(),l?T():(n(0,l=r.elementToImage(_.offsetX,_.offsetY)),d=l,n(1,m=l[0]),n(2,c=l[1]),n(3,f=1),n(4,h=1))}else l&&(L>300||f*h>100?(_.stopPropagation(),T()):(n(0,l=null),d=null))},T=()=>{if(f*h>15){const _={type:z.RECTANGLE,geometry:{bounds:{minX:m,minY:c,maxX:m+f,maxY:c+h},x:m,y:c,w:f,h}};o("create",_)}n(0,l=null),d=null};return ve(()=>{i("pointerdown",p),i("pointermove",g),i("pointerup",w,!0)}),e.$$set=_=>{"addEventListener"in _&&n(5,i=_.addEventListener),"drawingMode"in _&&n(6,s=_.drawingMode),"transform"in _&&n(7,r=_.transform)},[l,m,c,f,h,i,s,r]}class tn extends se{constructor(t){super(),ie(this,t,Fo,Go,x,{addEventListener:5,drawingMode:6,transform:7})}}const Fe=(e,t)=>{const n=Math.abs(t[0]-e[0]),o=Math.abs(t[1]-e[1]);return Math.sqrt(Math.pow(n,2)+Math.pow(o,2))},Ho=(e,t)=>{const{naturalWidth:n,naturalHeight:o}=e;if(!n&&!o){const{width:i,height:s}=e;t.setAttribute("viewBox",`0 0 ${i} ${s}`),e.addEventListener("load",r=>{const a=r.target;t.setAttribute("viewBox",`0 0 ${a.naturalWidth} ${a.naturalHeight}`)})}else t.setAttribute("viewBox",`0 0 ${n} ${o}`)},nn=(e,t)=>{Ho(e,t);const{subscribe:n,set:o}=Ne(1);let i;return window.ResizeObserver&&(i=new ResizeObserver(()=>{const r=t.getBoundingClientRect(),{width:a,height:l}=t.viewBox.baseVal,d=Math.max(r.width/a,r.height/l);o(d)}),i.observe(t.parentElement)),{destroy:()=>{i&&i.disconnect()},subscribe:n}},zo="ontouchstart"in window||navigator.maxTouchPoints>0;function st(e){const t=e.slice(),n=(t[2]?t[0]:[...t[0],t[1]]).map(o=>o.join(",")).join(" ");return t[15]=n,t}function on(e){let t,n,o,i,s,r=e[2]&&sn(e);return{c(){t=P("polygon"),o=P("polygon"),r&&r.c(),s=ae(),u(t,"class","a9s-outer"),u(t,"points",n=e[15]),u(o,"class","a9s-inner"),u(o,"points",i=e[15])},m(a,l){C(a,t,l),C(a,o,l),r&&r.m(a,l),C(a,s,l)},p(a,l){l&7&&n!==(n=a[15])&&u(t,"points",n),l&7&&i!==(i=a[15])&&u(o,"points",i),a[2]?r?r.p(a,l):(r=sn(a),r.c(),r.m(s.parentNode,s)):r&&(r.d(1),r=null)},d(a){a&&v(t),a&&v(o),r&&r.d(a),a&&v(s)}}}function sn(e){let t,n,o;return{c(){t=P("rect"),u(t,"class","a9s-corner-handle"),u(t,"x",n=e[0][0][0]-e[3]/2),u(t,"y",o=e[0][0][1]-e[3]/2),u(t,"height",e[3]),u(t,"width",e[3])},m(i,s){C(i,t,s)},p(i,s){s&9&&n!==(n=i[0][0][0]-i[3]/2)&&u(t,"x",n),s&9&&o!==(o=i[0][0][1]-i[3]/2)&&u(t,"y",o),s&8&&u(t,"height",i[3]),s&8&&u(t,"width",i[3])},d(i){i&&v(t)}}}function Vo(e){let t,n=e[1]&&on(st(e));return{c(){t=P("g"),n&&n.c(),u(t,"class","a9s-annotation a9s-rubberband")},m(o,i){C(o,t,i),n&&n.m(t,null)},p(o,[i]){o[1]?n?n.p(st(o),i):(n=on(st(o)),n.c(),n.m(t,null)):n&&(n.d(1),n=null)},i:F,o:F,d(o){o&&v(t),n&&n.d()}}}const jo=20;function Wo(e,t,n){let o;const i=ye();let{addEventListener:s}=t,{drawingMode:r}=t,{transform:a}=t,{viewportScale:l=1}=t,d,m=[],c=null,f=!1;const h=_=>{if(d={..._},r==="drag"&&m.length===0){const L=a.elementToImage(_.offsetX,_.offsetY);m.push(L),n(1,c=L)}},p=_=>{if(m.length>0&&(n(1,c=a.elementToImage(_.offsetX,_.offsetY)),m.length>2)){const L=Fe(c,m[0])*l;n(2,f=L<jo)}},g=_=>{if(r==="click"){const L=_.timeStamp-d.timeStamp,N=Fe([d.offsetX,d.offsetY],[_.offsetX,_.offsetY]);if(L>300||N>15)return;if(f)T();else if(m.length===0){const D=a.elementToImage(_.offsetX,_.offsetY);m.push(D),n(1,c=D)}else m.push(c)}else{if(m.length===1&&Fe(m[0],c)<=4){n(0,m=[]),n(1,c=null);return}_.stopImmediatePropagation(),f?T():m.push(c)}},w=()=>{const _=[...m,c],L={type:z.POLYGON,geometry:{bounds:Ce(_),points:_}};Xe(L)>4&&(n(0,m=[]),n(1,c=null),i("create",L))},T=()=>{const _={type:z.POLYGON,geometry:{bounds:Ce(m),points:[...m]}};n(0,m=[]),n(1,c=null),i("create",_)};return ve(()=>{s("pointerdown",h,!0),s("pointermove",p),s("pointerup",g,!0),s("dblclick",w,!0)}),e.$$set=_=>{"addEventListener"in _&&n(4,s=_.addEventListener),"drawingMode"in _&&n(5,r=_.drawingMode),"transform"in _&&n(6,a=_.transform),"viewportScale"in _&&n(7,l=_.viewportScale)},e.$$.update=()=>{e.$$.dirty&128&&n(3,o=10/l)},[m,c,f,o,s,r,a,l]}class qo extends se{constructor(t){super(),ie(this,t,Wo,Vo,x,{addEventListener:4,drawingMode:5,transform:6,viewportScale:7})}}const rt=new Map([["rectangle",{tool:tn}],["polygon",{tool:qo}]]),rn=()=>[...rt.keys()],lt=e=>rt.get(e),ln=(e,t,n)=>rt.set(e,{tool:t,opts:n});function Ko(e){let t,n,o,i,s;return{c(){t=P("g"),n=P("ellipse"),i=P("ellipse"),u(n,"class","a9s-outer"),u(n,"style",o=e[1]?"display:none;":void 0),u(n,"cx",e[2]),u(n,"cy",e[3]),u(n,"rx",e[4]),u(n,"ry",e[5]),u(i,"class","a9s-inner"),u(i,"style",e[1]),u(i,"cx",e[2]),u(i,"cy",e[3]),u(i,"rx",e[4]),u(i,"ry",e[5]),u(t,"data-id",s=e[0].id)},m(r,a){C(r,t,a),ue(t,n),ue(t,i)},p(r,[a]){a&2&&o!==(o=r[1]?"display:none;":void 0)&&u(n,"style",o),a&2&&u(i,"style",r[1]),a&1&&s!==(s=r[0].id)&&u(t,"data-id",s)},i:F,o:F,d(r){r&&v(t)}}}function Jo(e,t,n){let o,{annotation:i}=t,{geom:s}=t,{style:r=void 0}=t;const{cx:a,cy:l,rx:d,ry:m}=s;return e.$$set=c=>{"annotation"in c&&n(0,i=c.annotation),"geom"in c&&n(6,s=c.geom),"style"in c&&n(7,r=c.style)},e.$$.update=()=>{e.$$.dirty&129&&n(1,o=Ge(i,r))},[i,o,a,l,d,m,s,r]}class Zo extends se{constructor(t){super(),ie(this,t,Jo,Ko,x,{annotation:0,geom:6,style:7})}}function Qo(e){let t,n,o,i,s;return{c(){t=P("g"),n=P("polygon"),i=P("polygon"),u(n,"class","a9s-outer"),u(n,"style",o=e[1]?"display:none;":void 0),u(n,"points",e[2].map(xo).join(" ")),u(i,"class","a9s-inner"),u(i,"style",e[1]),u(i,"points",e[2].map($o).join(" ")),u(t,"data-id",s=e[0].id)},m(r,a){C(r,t,a),ue(t,n),ue(t,i)},p(r,[a]){a&2&&o!==(o=r[1]?"display:none;":void 0)&&u(n,"style",o),a&2&&u(i,"style",r[1]),a&1&&s!==(s=r[0].id)&&u(t,"data-id",s)},i:F,o:F,d(r){r&&v(t)}}}const xo=e=>e.join(","),$o=e=>e.join(",");function ei(e,t,n){let o,{annotation:i}=t,{geom:s}=t,{style:r=void 0}=t;const{points:a}=s;return e.$$set=l=>{"annotation"in l&&n(0,i=l.annotation),"geom"in l&&n(3,s=l.geom),"style"in l&&n(4,r=l.style)},e.$$.update=()=>{e.$$.dirty&17&&n(1,o=Ge(i,r))},[i,o,a,s,r]}class ti extends se{constructor(t){super(),ie(this,t,ei,Qo,x,{annotation:0,geom:3,style:4})}}function ni(e){let t,n,o,i,s;return{c(){t=P("g"),n=P("rect"),i=P("rect"),u(n,"class","a9s-outer"),u(n,"style",o=e[5]?"display:none;":void 0),u(n,"x",e[4]),u(n,"y",e[3]),u(n,"width",e[2]),u(n,"height",e[1]),u(i,"class","a9s-inner"),u(i,"style",e[5]),u(i,"x",e[4]),u(i,"y",e[3]),u(i,"width",e[2]),u(i,"height",e[1]),u(t,"data-id",s=e[0].id)},m(r,a){C(r,t,a),ue(t,n),ue(t,i)},p(r,[a]){a&32&&o!==(o=r[5]?"display:none;":void 0)&&u(n,"style",o),a&16&&u(n,"x",r[4]),a&8&&u(n,"y",r[3]),a&4&&u(n,"width",r[2]),a&2&&u(n,"height",r[1]),a&32&&u(i,"style",r[5]),a&16&&u(i,"x",r[4]),a&8&&u(i,"y",r[3]),a&4&&u(i,"width",r[2]),a&2&&u(i,"height",r[1]),a&1&&s!==(s=r[0].id)&&u(t,"data-id",s)},i:F,o:F,d(r){r&&v(t)}}}function oi(e,t,n){let o,i,s,r,a,{annotation:l}=t,{geom:d}=t,{style:m=void 0}=t;return e.$$set=c=>{"annotation"in c&&n(0,l=c.annotation),"geom"in c&&n(6,d=c.geom),"style"in c&&n(7,m=c.style)},e.$$.update=()=>{e.$$.dirty&129&&n(5,o=Ge(l,m)),e.$$.dirty&64&&n(4,{x:i,y:s,w:r,h:a}=d,i,(n(3,s),n(6,d)),(n(2,r),n(6,d)),(n(1,a),n(6,d)))},[l,a,r,s,i,o,d,m]}class ii extends se{constructor(t){super(),ie(this,t,oi,ni,x,{annotation:0,geom:6,style:7})}}const si={elementToImage:(e,t)=>[e,t]},an=e=>({elementToImage:(t,n)=>{const o=e.getBoundingClientRect(),i=e.createSVGPoint();i.x=t+o.x,i.y=n+o.y;const{x:s,y:r}=i.matrixTransform(e.getScreenCTM().inverse());return[s,r]}}),ri=250,cn=(e,t)=>{const n=ye();let o;return{onPointerDown:()=>o=performance.now(),onPointerUp:r=>{if(performance.now()-o<ri){const{x:l,y:d}=li(r,e),m=t.getAt(l,d);m?n("click",{originalEvent:r,annotation:m}):n("click",{originalEvent:r})}}}},li=(e,t)=>{const n=t.createSVGPoint(),o=t.getBoundingClientRect(),i=e.clientX-o.x,s=e.clientY-o.y,{left:r,top:a}=t.getBoundingClientRect();return n.x=i+r,n.y=s+a,n.matrixTransform(t.getScreenCTM().inverse())};function fn(e,t,n){const o=e.slice();return o[28]=t[n],o}function un(e,t,n){const o=e.slice();return o[31]=t[n],o}function at(e){const t=e.slice(),n=t[31].target.selector;return t[34]=n,t}function dn(e){let t=e[31].id,n,o,i=hn(e);return{c(){i.c(),n=ae()},m(s,r){i.m(s,r),C(s,n,r),o=!0},p(s,r){r[0]&4096&&x(t,t=s[31].id)?(ce(),U(i,1,1,F),fe(),i=hn(s),i.c(),Y(i,1),i.m(n.parentNode,n)):i.p(s,r)},i(s){o||(Y(i),o=!0)},o(s){U(i),o=!1},d(s){s&&v(n),i.d(s)}}}function ai(e){let t,n;return t=new ti({props:{annotation:e[31],geom:e[34].geometry,style:e[1]}}),{c(){ge(t.$$.fragment)},m(o,i){de(t,o,i),n=!0},p(o,i){const s={};i[0]&4096&&(s.annotation=o[31]),i[0]&4096&&(s.geom=o[34].geometry),i[0]&2&&(s.style=o[1]),t.$set(s)},i(o){n||(Y(t.$$.fragment,o),n=!0)},o(o){U(t.$$.fragment,o),n=!1},d(o){he(t,o)}}}function ci(e){let t,n;return t=new ii({props:{annotation:e[31],geom:e[34].geometry,style:e[1]}}),{c(){ge(t.$$.fragment)},m(o,i){de(t,o,i),n=!0},p(o,i){const s={};i[0]&4096&&(s.annotation=o[31]),i[0]&4096&&(s.geom=o[34].geometry),i[0]&2&&(s.style=o[1]),t.$set(s)},i(o){n||(Y(t.$$.fragment,o),n=!0)},o(o){U(t.$$.fragment,o),n=!1},d(o){he(t,o)}}}function fi(e){let t,n;return t=new Zo({props:{annotation:e[31],geom:e[34].geometry,style:e[1]}}),{c(){ge(t.$$.fragment)},m(o,i){de(t,o,i),n=!0},p(o,i){const s={};i[0]&4096&&(s.annotation=o[31]),i[0]&4096&&(s.geom=o[34].geometry),i[0]&2&&(s.style=o[1]),t.$set(s)},i(o){n||(Y(t.$$.fragment,o),n=!0)},o(o){U(t.$$.fragment,o),n=!1},d(o){he(t,o)}}}function hn(e){let t,n,o,i;const s=[fi,ci,ai],r=[];function a(l,d){return l[34].type===z.ELLIPSE?0:l[34].type===z.RECTANGLE?1:l[34].type===z.POLYGON?2:-1}return~(t=a(e))&&(n=r[t]=s[t](e)),{c(){n&&n.c(),o=ae()},m(l,d){~t&&r[t].m(l,d),C(l,o,d),i=!0},p(l,d){let m=t;t=a(l),t===m?~t&&r[t].p(l,d):(n&&(ce(),U(r[m],1,1,()=>{r[m]=null}),fe()),~t?(n=r[t],n?n.p(l,d):(n=r[t]=s[t](l),n.c()),Y(n,1),n.m(o.parentNode,o)):n=null)},i(l){i||(Y(n),i=!0)},o(l){U(n),i=!1},d(l){~t&&r[t].d(l),l&&v(o)}}}function mn(e){let t=!e[7](e[31]),n,o,i=t&&dn(at(e));return{c(){i&&i.c(),n=ae()},m(s,r){i&&i.m(s,r),C(s,n,r),o=!0},p(s,r){r[0]&4224&&(t=!s[7](s[31])),t?i?(i.p(at(s),r),r[0]&4224&&Y(i,1)):(i=dn(at(s)),i.c(),Y(i,1),i.m(n.parentNode,n)):i&&(ce(),U(i,1,1,()=>{i=null}),fe())},i(s){o||(Y(i),o=!0)},o(s){U(i),o=!1},d(s){i&&i.d(s),s&&v(n)}}}function gn(e){let t,n,o,i;const s=[di,ui],r=[];function a(l,d){return l[6]?0:l[2]&&l[0]?1:-1}return~(t=a(e))&&(n=r[t]=s[t](e)),{c(){n&&n.c(),o=ae()},m(l,d){~t&&r[t].m(l,d),C(l,o,d),i=!0},p(l,d){let m=t;t=a(l),t===m?~t&&r[t].p(l,d):(n&&(ce(),U(r[m],1,1,()=>{r[m]=null}),fe()),~t?(n=r[t],n?n.p(l,d):(n=r[t]=s[t](l),n.c()),Y(n,1),n.m(o.parentNode,o)):n=null)},i(l){i||(Y(n),i=!0)},o(l){U(n),i=!1},d(l){~t&&r[t].d(l),l&&v(o)}}}function ui(e){let t=e[2],n,o,i=pn(e);return{c(){i.c(),n=ae()},m(s,r){i.m(s,r),C(s,n,r),o=!0},p(s,r){r[0]&4&&x(t,t=s[2])?(ce(),U(i,1,1,F),fe(),i=pn(s),i.c(),Y(i,1),i.m(n.parentNode,n)):i.p(s,r)},i(s){o||(Y(i),o=!0)},o(s){U(i),o=!1},d(s){s&&v(n),i.d(s)}}}function di(e){let t,n,o=e[6],i=[];for(let r=0;r<o.length;r+=1)i[r]=yn(fn(e,o,r));const s=r=>U(i[r],1,1,()=>{i[r]=null});return{c(){for(let r=0;r<i.length;r+=1)i[r].c();t=ae()},m(r,a){for(let l=0;l<i.length;l+=1)i[l]&&i[l].m(r,a);C(r,t,a),n=!0},p(r,a){if(a[0]&140370){o=r[6];let l;for(l=0;l<o.length;l+=1){const d=fn(r,o,l);i[l]?(i[l].p(d,a),Y(i[l],1)):(i[l]=yn(d),i[l].c(),Y(i[l],1),i[l].m(t.parentNode,t))}for(ce(),l=o.length;l<i.length;l+=1)s(l);fe()}},i(r){if(!n){for(let a=0;a<o.length;a+=1)Y(i[a]);n=!0}},o(r){i=i.filter(Boolean);for(let a=0;a<i.length;a+=1)U(i[a]);n=!1},d(r){Ke(i,r),r&&v(t)}}}function pn(e){let t,n;return t=new $t({props:{target:e[4],tool:e[2],drawingMode:e[11],transform:e[10],viewportScale:e[13]}}),t.$on("create",e[16]),{c(){ge(t.$$.fragment)},m(o,i){de(t,o,i),n=!0},p(o,i){const s={};i[0]&16&&(s.target=o[4]),i[0]&4&&(s.tool=o[2]),i[0]&2048&&(s.drawingMode=o[11]),i[0]&1024&&(s.transform=o[10]),i[0]&8192&&(s.viewportScale=o[13]),t.$set(s)},i(o){n||(Y(t.$$.fragment,o),n=!0)},o(o){U(t.$$.fragment,o),n=!1},d(o){he(t,o)}}}function _n(e){let t,n;return t=new xt({props:{target:e[4],editor:ot(e[28].target.selector),annotation:e[28],style:e[1],transform:e[10],viewportScale:e[13]}}),t.$on("change",function(){W(e[17](e[28]))&&e[17](e[28]).apply(this,arguments)}),{c(){ge(t.$$.fragment)},m(o,i){de(t,o,i),n=!0},p(o,i){e=o;const s={};i[0]&16&&(s.target=e[4]),i[0]&64&&(s.editor=ot(e[28].target.selector)),i[0]&64&&(s.annotation=e[28]),i[0]&2&&(s.style=e[1]),i[0]&1024&&(s.transform=e[10]),i[0]&8192&&(s.viewportScale=e[13]),t.$set(s)},i(o){n||(Y(t.$$.fragment,o),n=!0)},o(o){U(t.$$.fragment,o),n=!1},d(o){he(t,o)}}}function yn(e){let t=e[28].id,n,o,i=_n(e);return{c(){i.c(),n=ae()},m(s,r){i.m(s,r),C(s,n,r),o=!0},p(s,r){r[0]&64&&x(t,t=s[28].id)?(ce(),U(i,1,1,F),fe(),i=_n(s),i.c(),Y(i,1),i.m(n.parentNode,n)):i.p(s,r)},i(s){o||(Y(i),o=!0)},o(s){U(i),o=!1},d(s){s&&v(n),i.d(s)}}}function hi(e){let t,n,o,i,s,r,a=e[12],l=[];for(let c=0;c<a.length;c+=1)l[c]=mn(un(e,a,c));const d=c=>U(l[c],1,1,()=>{l[c]=null});let m=e[4]&&gn(e);return{c(){t=P("svg"),n=P("g");for(let c=0;c<l.length;c+=1)l[c].c();o=P("g"),m&&m.c(),u(o,"class","drawing"),u(t,"class","a9s-annotationlayer"),bt(t,"drawing",e[2])},m(c,f){C(c,t,f),ue(t,n);for(let h=0;h<l.length;h+=1)l[h]&&l[h].m(n,null);ue(t,o),m&&m.m(o,null),e[24](o),e[25](t),i=!0,s||(r=[q(t,"pointerup",function(){W(e[8])&&e[8].apply(this,arguments)}),q(t,"pointerdown",function(){W(e[9])&&e[9].apply(this,arguments)})],s=!0)},p(c,f){if(e=c,f[0]&4226){a=e[12];let h;for(h=0;h<a.length;h+=1){const p=un(e,a,h);l[h]?(l[h].p(p,f),Y(l[h],1)):(l[h]=mn(p),l[h].c(),Y(l[h],1),l[h].m(n,null))}for(ce(),h=a.length;h<l.length;h+=1)d(h);fe()}e[4]?m?(m.p(e,f),f[0]&16&&Y(m,1)):(m=gn(e),m.c(),Y(m,1),m.m(o,null)):m&&(ce(),U(m,1,1,()=>{m=null}),fe()),(!i||f[0]&4)&&bt(t,"drawing",e[2])},i(c){if(!i){for(let f=0;f<a.length;f+=1)Y(l[f]);Y(m),i=!0}},o(c){l=l.filter(Boolean);for(let f=0;f<l.length;f+=1)U(l[f]);U(m),i=!1},d(c){c&&v(t),Ke(l,c),m&&m.d(),e[24](null),e[25](null),s=!1,le(r)}}}function mi(e,t,n){let o,i,s,r,a,l,d,m,c=F,f=()=>(c(),c=pt(R,I=>n(13,m=I)),R);e.$$.on_destroy.push(()=>c());let{drawingEnabled:h}=t,{image:p}=t,{preferredDrawingMode:g}=t,{state:w}=t,{style:T=void 0}=t,{tool:_,opts:L}=lt("rectangle"),{tool:N=_,opts:D=L}=t,{user:j}=t,Z,X,R;ve(()=>f(n(5,R=nn(p,X))));const{selection:y,store:b}=w;_t(e,y,I=>n(23,l=I)),_t(e,b,I=>n(12,d=I));let E=null,A=null;const k=I=>{b.unobserve(E);const Q=I.filter(({editable:V})=>V).map(({id:V})=>V);Q.length>0?(n(6,A=Q.map(V=>b.getAnnotation(V))),E=V=>{const{updated:J}=V.changes;n(6,A=J.map(re=>re.newValue))},b.observe(E,{annotations:Q})):n(6,A=null)},G=I=>{const Q=$e(),V={id:Q,bodies:[],target:{annotation:Q,selector:I.detail,creator:j,created:new Date}};b.addAnnotation(V),y.setSelected(V.id)},$=I=>Q=>{var _e;const{target:V}=I,J=10*60*1e3,re=((_e=V.creator)==null?void 0:_e.id)!==j.id||!V.created||new Date().getTime()-V.created.getTime()>J;b.updateTarget({...V,selector:Q.detail,created:re?V.created:new Date,updated:re?new Date:null,updatedBy:re?j:null})};function Pe(I){Re[I?"unshift":"push"](()=>{Z=I,n(4,Z)})}function ee(I){Re[I?"unshift":"push"](()=>{X=I,n(3,X)})}return e.$$set=I=>{"drawingEnabled"in I&&n(0,h=I.drawingEnabled),"image"in I&&n(18,p=I.image),"preferredDrawingMode"in I&&n(19,g=I.preferredDrawingMode),"state"in I&&n(20,w=I.state),"style"in I&&n(1,T=I.style),"tool"in I&&n(2,N=I.tool),"opts"in I&&n(21,D=I.opts),"user"in I&&n(22,j=I.user)},e.$$.update=()=>{e.$$.dirty[0]&2621440&&n(11,o=(D==null?void 0:D.drawingMode)||g),e.$$.dirty[0]&8&&n(10,i=an(X)),e.$$.dirty[0]&8&&n(9,{onPointerDown:s,onPointerUp:r}=cn(X,b),s,(n(8,r),n(3,X))),e.$$.dirty[0]&8388608&&n(7,a=I=>l.selected.find(Q=>Q.id===I.id&&Q.editable)),e.$$.dirty[0]&8388608&&k(l.selected)},[h,T,N,X,Z,R,A,a,r,s,i,o,d,m,y,b,G,$,p,g,w,D,j,l,Pe,ee]}class wn extends se{constructor(t){super(),ie(this,t,mi,hi,x,{drawingEnabled:0,image:18,preferredDrawingMode:19,state:20,style:1,tool:2,opts:21,user:22},null,[-1,-1])}}function gi(e,t,n,o,i){bn(e,t,n||0,o||e.length-1,i||pi)}function bn(e,t,n,o,i){for(;o>n;){if(o-n>600){var s=o-n+1,r=t-n+1,a=Math.log(s),l=.5*Math.exp(2*a/3),d=.5*Math.sqrt(a*l*(s-l)/s)*(r-s/2<0?-1:1),m=Math.max(n,Math.floor(t-r*l/s+d)),c=Math.min(o,Math.floor(t+(s-r)*l/s+d));bn(e,t,m,c,i)}var f=e[t],h=n,p=o;for(ke(e,n,t),i(e[o],f)>0&&ke(e,n,o);h<p;){for(ke(e,h,p),h++,p--;i(e[h],f)<0;)h++;for(;i(e[p],f)>0;)p--}i(e[n],f)===0?ke(e,n,p):(p++,ke(e,p,o)),p<=t&&(n=p+1),t<=p&&(o=p-1)}}function ke(e,t,n){var o=e[t];e[t]=e[n],e[n]=o}function pi(e,t){return e<t?-1:e>t?1:0}class _i{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(t){let n=this.data;const o=[];if(!ze(t,n))return o;const i=this.toBBox,s=[];for(;n;){for(let r=0;r<n.children.length;r++){const a=n.children[r],l=n.leaf?i(a):a;ze(t,l)&&(n.leaf?o.push(a):ft(t,l)?this._all(a,o):s.push(a))}n=s.pop()}return o}collides(t){let n=this.data;if(!ze(t,n))return!1;const o=[];for(;n;){for(let i=0;i<n.children.length;i++){const s=n.children[i],r=n.leaf?this.toBBox(s):s;if(ze(t,r)){if(n.leaf||ft(t,r))return!0;o.push(s)}}n=o.pop()}return!1}load(t){if(!(t&&t.length))return this;if(t.length<this._minEntries){for(let o=0;o<t.length;o++)this.insert(t[o]);return this}let n=this._build(t.slice(),0,t.length-1,0);if(!this.data.children.length)this.data=n;else if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){const o=this.data;this.data=n,n=o}this._insert(n,this.data.height-n.height-1,!0)}return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=Me([]),this}remove(t,n){if(!t)return this;let o=this.data;const i=this.toBBox(t),s=[],r=[];let a,l,d;for(;o||s.length;){if(o||(o=s.pop(),l=s[s.length-1],a=r.pop(),d=!0),o.leaf){const m=yi(t,o.children,n);if(m!==-1)return o.children.splice(m,1),s.push(o),this._condense(s),this}!d&&!o.leaf&&ft(o,i)?(s.push(o),r.push(a),a=0,l=o,o=o.children[0]):l?(a++,o=l.children[a],d=!1):o=null}return this}toBBox(t){return t}compareMinX(t,n){return t.minX-n.minX}compareMinY(t,n){return t.minY-n.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,n){const o=[];for(;t;)t.leaf?n.push(...t.children):o.push(...t.children),t=o.pop();return n}_build(t,n,o,i){const s=o-n+1;let r=this._maxEntries,a;if(s<=r)return a=Me(t.slice(n,o+1)),Te(a,this.toBBox),a;i||(i=Math.ceil(Math.log(s)/Math.log(r)),r=Math.ceil(s/Math.pow(r,i-1))),a=Me([]),a.leaf=!1,a.height=i;const l=Math.ceil(s/r),d=l*Math.ceil(Math.sqrt(r));En(t,n,o,d,this.compareMinX);for(let m=n;m<=o;m+=d){const c=Math.min(m+d-1,o);En(t,m,c,l,this.compareMinY);for(let f=m;f<=c;f+=l){const h=Math.min(f+l-1,c);a.children.push(this._build(t,f,h,i-1))}}return Te(a,this.toBBox),a}_chooseSubtree(t,n,o,i){for(;i.push(n),!(n.leaf||i.length-1===o);){let s=1/0,r=1/0,a;for(let l=0;l<n.children.length;l++){const d=n.children[l],m=ct(d),c=Ei(t,d)-m;c<r?(r=c,s=m<s?m:s,a=d):c===r&&m<s&&(s=m,a=d)}n=a||n.children[0]}return n}_insert(t,n,o){const i=o?t:this.toBBox(t),s=[],r=this._chooseSubtree(i,this.data,n,s);for(r.children.push(t),Be(r,i);n>=0&&s[n].children.length>this._maxEntries;)this._split(s,n),n--;this._adjustParentBBoxes(i,s,n)}_split(t,n){const o=t[n],i=o.children.length,s=this._minEntries;this._chooseSplitAxis(o,s,i);const r=this._chooseSplitIndex(o,s,i),a=Me(o.children.splice(r,o.children.length-r));a.height=o.height,a.leaf=o.leaf,Te(o,this.toBBox),Te(a,this.toBBox),n?t[n-1].children.push(a):this._splitRoot(o,a)}_splitRoot(t,n){this.data=Me([t,n]),this.data.height=t.height+1,this.data.leaf=!1,Te(this.data,this.toBBox)}_chooseSplitIndex(t,n,o){let i,s=1/0,r=1/0;for(let a=n;a<=o-n;a++){const l=Ie(t,0,a,this.toBBox),d=Ie(t,a,o,this.toBBox),m=Ai(l,d),c=ct(l)+ct(d);m<s?(s=m,i=a,r=c<r?c:r):m===s&&c<r&&(r=c,i=a)}return i||o-n}_chooseSplitAxis(t,n,o){const i=t.leaf?this.compareMinX:wi,s=t.leaf?this.compareMinY:bi,r=this._allDistMargin(t,n,o,i),a=this._allDistMargin(t,n,o,s);r<a&&t.children.sort(i)}_allDistMargin(t,n,o,i){t.children.sort(i);const s=this.toBBox,r=Ie(t,0,n,s),a=Ie(t,o-n,o,s);let l=He(r)+He(a);for(let d=n;d<o-n;d++){const m=t.children[d];Be(r,t.leaf?s(m):m),l+=He(r)}for(let d=o-n-1;d>=n;d--){const m=t.children[d];Be(a,t.leaf?s(m):m),l+=He(a)}return l}_adjustParentBBoxes(t,n,o){for(let i=o;i>=0;i--)Be(n[i],t)}_condense(t){for(let n=t.length-1,o;n>=0;n--)t[n].children.length===0?n>0?(o=t[n-1].children,o.splice(o.indexOf(t[n]),1)):this.clear():Te(t[n],this.toBBox)}}function yi(e,t,n){if(!n)return t.indexOf(e);for(let o=0;o<t.length;o++)if(n(e,t[o]))return o;return-1}function Te(e,t){Ie(e,0,e.children.length,t,e)}function Ie(e,t,n,o,i){i||(i=Me(null)),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(let s=t;s<n;s++){const r=e.children[s];Be(i,e.leaf?o(r):r)}return i}function Be(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function wi(e,t){return e.minX-t.minX}function bi(e,t){return e.minY-t.minY}function ct(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function He(e){return e.maxX-e.minX+(e.maxY-e.minY)}function Ei(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function Ai(e,t){const n=Math.max(e.minX,t.minX),o=Math.max(e.minY,t.minY),i=Math.min(e.maxX,t.maxX),s=Math.min(e.maxY,t.maxY);return Math.max(0,i-n)*Math.max(0,s-o)}function ft(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function ze(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function Me(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function En(e,t,n,o,i){const s=[t,n];for(;s.length;){if(n=s.pop(),t=s.pop(),n-t<=o)continue;const r=t+Math.ceil((n-t)/o/2)*o;gi(e,r,t,n,i),s.push(t,r,r,n)}}const Si=()=>{const e=new _i,t=new Map,n=()=>[...t.values()],o=()=>{e.clear(),t.clear()},i=c=>{const{minX:f,minY:h,maxX:p,maxY:g}=c.selector.geometry.bounds,w={minX:f,minY:h,maxX:p,maxY:g,target:c};e.insert(w),t.set(c.annotation,w)},s=c=>{const f=t.get(c.annotation);e.remove(f),t.delete(c.annotation)};return{all:n,clear:o,getAt:(c,f)=>{const p=e.search({minX:c,minY:f,maxX:c,maxY:f}).map(g=>g.target).filter(g=>g.selector.type===z.RECTANGLE||Tt(g.selector,c,f));if(p.length>0)return p.sort((g,w)=>Xe(g.selector)-Xe(w.selector)),p[0]},getIntersecting:(c,f,h,p)=>e.search({minX:c,minY:f,maxX:c+h,maxY:f+p}).map(g=>g.target),insert:i,remove:s,set:(c,f=!0)=>{f&&o();const h=c.map(p=>{const{minX:g,minY:w,maxX:T,maxY:_}=p.selector.geometry.bounds;return{minX:g,minY:w,maxX:T,maxY:_,target:p}});h.forEach(p=>t.set(p.target.annotation,p)),e.load(h)},size:()=>e.all().length,update:(c,f)=>{s(c),i(f)}}},An=e=>{const t=fo(),n=Si(),o=$n(t,e.pointerSelectAction),i=xn(t),s=go();return t.observe(({changes:l})=>{n.set(l.created.map(d=>d.target),!1),l.deleted.forEach(d=>n.remove(d.target)),l.updated.forEach(({oldValue:d,newValue:m})=>n.update(d.target,m.target))}),{store:{...t,getAt:(l,d)=>{const m=n.getAt(l,d);return m?t.getAnnotation(m.annotation):void 0},getIntersecting:(l,d,m,c)=>n.getIntersecting(l,d,m,c).map(f=>t.getAnnotation(f.annotation))},selection:o,hover:i,viewport:s}},Sn=e=>{const t=An(e);return{...t,store:uo(t.store)}},Tn=e=>{let t,n;if(e.nodeName==="CANVAS")t=e,n=t.getContext("2d",{willReadFrequently:!0});else{const i=e;t=document.createElement("canvas"),t.width=i.width,t.height=i.height,n=t.getContext("2d",{willReadFrequently:!0}),n.drawImage(i,0,0,i.width,i.height)}let o=0;for(let i=1;i<10;i++)for(let s=1;s<10;s++){const r=Math.round(s*t.width/10),a=Math.round(i*t.height/10),l=n.getImageData(r,a,1,1).data,d=(.299*l[0]+.587*l[1]+.114*l[2])/255;o+=d}return o/81},Mn=(e,t)=>{const n=Tn(e),o=n>.6?"dark":"light";console.log(`[Annotorious] Image brightness: ${n.toFixed(1)}. Setting ${o} theme.`),t.setAttribute("data-theme",o)},Ln=e=>({...e,drawingEnabled:e.drawingEnabled===void 0?!0:e.drawingEnabled,drawingMode:e.drawingMode||"drag",pointerSelectAction:e.pointerSelectAction||et.EDIT}),On=navigator.userAgent.indexOf("Mac OS X")!==-1,vn=(e,t)=>{const n=t||document,o=r=>{r.key==="Z"&&r.ctrlKey?e.undo():r.key==="Y"&&r.ctrlKey&&e.redo()},i=r=>{r.key==="z"&&r.metaKey&&(r.shiftKey?e.redo():e.undo())},s=()=>{On?n.removeEventListener("keydown",i):n.removeEventListener("keydown",o)};return On?n.addEventListener("keydown",i):n.addEventListener("keydown",o),{destroy:s}},Li="",Oi="",vi="",Ti=(e,t={})=>{if(!e)throw"Missing argument: image";const n=typeof e=="string"?document.getElementById(e):e,o=Ln(t),i=Sn(o),{hover:s,selection:r,store:a}=i,l=po(a,r,s,void 0,o.adapter,o.autoSave),d=mo(a),m=document.createElement("DIV");m.style.position="relative",m.style.display="inline-block",n.style.display="block",n.parentNode.insertBefore(m,n),m.appendChild(n);const c=vn(d);let f=Dt();Mn(n,m);const h=new wn({target:m,props:{drawingEnabled:o.drawingEnabled,image:n,preferredDrawingMode:o.drawingMode,state:i,style:o.style,user:f}});h.$on("click",R=>{const{originalEvent:y,annotation:b}=R.detail;b?r.clickSelect(b.id,y):r.isEmpty()||r.clear()});const p=Yt(a,d,o.adapter),g=()=>{h.$destroy(),m.parentNode.insertBefore(n,m),m.parentNode.removeChild(m),c.destroy(),d.destroy()},w=()=>f,T=(R,y,b)=>ln(R,y,b),_=(R,y)=>Zt(R,y),L=R=>{const{tool:y,opts:b}=lt(R);h.$set({tool:y,opts:b})},N=R=>h.$set({drawingEnabled:R}),D=R=>{console.warn("Filter not implemented yet")},j=R=>{R?r.setSelected(R):r.clear()},Z=R=>h.$set({style:R}),X=R=>{f=R,h.$set({user:R})};return{...p,destroy:g,getUser:w,listDrawingTools:rn,on:l.on,off:l.off,registerDrawingTool:T,registerShapeEditor:_,setDrawingEnabled:N,setDrawingTool:L,setFilter:D,setSelected:j,setStyle:Z,setUser:X,state:i}};S.Editor=it,S.EditorMount=xt,S.Handle=O,S.IdentityTransform=si,S.Origin=H,S.PRESENCE_KEY=Lo,S.PointerSelectAction=et,S.PolygonEditor=qt,S.RectangleEditor=Kt,S.RectangleUtil=Mt,S.RubberbandRectangle=tn,S.SVGAnnotationLayer=wn,S.ShapeType=z,S.ToolMount=$t,S.W3CImageFormat=vo,S.addEventListeners=cn,S.boundsFromPoints=Ce,S.computeArea=Xe,S.createAnonymousGuest=Dt,S.createBaseAnnotator=Yt,S.createBody=no,S.createDefaultAppearenceProvider=Gt,S.createImageAnnotator=Ti,S.createImageAnnotatorState=An,S.createPresenceState=Oo,S.createSVGTransform=an,S.createSvelteImageAnnotatorState=Sn,S.defaultColorProvider=Nt,S.diffAnnotations=nt,S.distance=Fe,S.enableResponsive=nn,S.fillDefaults=Ln,S.getContributors=to,S.getEditor=ot,S.getTool=lt,S.initKeyboardCommands=vn,S.intersects=Tt,S.isTouch=zo,S.listDrawingTools=rn,S.parseAll=Rt,S.parseFragmentSelector=Lt,S.parseSVGSelector=kt,S.parseW3CBodies=Xt,S.parseW3CImageAnnotation=Ft,S.registerEditor=Zt,S.registerShapeUtil=De,S.registerTool=ln,S.sampleBrightness=Tn,S.serializeAll=_o,S.serializeFragmentSelector=Ot,S.serializeSVGSelector=It,S.serializeW3CBodies=Ut,S.serializeW3CImageAnnotation=Ht,S.setTheme=Mn,Object.defineProperty(S,Symbol.toStringTag,{value:"Module"})});
1
+ (function(L,X){typeof exports=="object"&&typeof module<"u"?X(exports):typeof define=="function"&&define.amd?define(["exports"],X):(L=typeof globalThis<"u"?globalThis:L||self,X(L.Annotorious={}))})(this,function(L){"use strict";var Xi=Object.defineProperty;var Ni=(L,X,ge)=>X in L?Xi(L,X,{enumerable:!0,configurable:!0,writable:!0,value:ge}):L[X]=ge;var bt=(L,X,ge)=>Ni(L,typeof X!="symbol"?X+"":X,ge);function X(){}function ge(e,t){for(const n in t)e[n]=t[n];return e}function Et(e){return e()}function At(){return Object.create(null)}function ae(e){e.forEach(Et)}function K(e){return typeof e=="function"}function Q(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}function Rn(e){return Object.keys(e).length===0}function St(e,...t){if(e==null){for(const o of t)o(void 0);return X}const n=e.subscribe(...t);return n.unsubscribe?()=>n.unsubscribe():n}function $e(e,t,n){e.$$.on_destroy.push(St(t,n))}function Xn(e,t,n,o){if(e){const i=Tt(e,t,n,o);return e[0](i)}}function Tt(e,t,n,o){return e[1]&&o?ge(n.ctx.slice(),e[1](o(t))):n.ctx}function Nn(e,t,n,o){if(e[2]&&o){const i=e[2](o(n));if(t.dirty===void 0)return i;if(typeof i=="object"){const s=[],r=Math.max(t.dirty.length,i.length);for(let l=0;l<r;l+=1)s[l]=t.dirty[l]|i[l];return s}return t.dirty|i}return t.dirty}function Un(e,t,n,o,i,s){if(i){const r=Tt(t,n,o,s);e.p(r,i)}}function Vn(e){if(e.ctx.length>32){const t=[],n=e.ctx.length/32;for(let o=0;o<n;o++)t[o]=-1;return t}return-1}function vt(e){const t={};for(const n in e)n[0]!=="$"&&(t[n]=e[n]);return t}function Ue(e){return e??""}const Gn=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global;function ce(e,t){e.appendChild(t)}function B(e,t,n){e.insertBefore(t,n||null)}function I(e){e.parentNode&&e.parentNode.removeChild(e)}function et(e,t){for(let n=0;n<e.length;n+=1)e[n]&&e[n].d(t)}function U(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function Mt(e){return document.createTextNode(e)}function ie(){return Mt(" ")}function se(){return Mt("")}function W(e,t,n,o){return e.addEventListener(t,n,o),()=>e.removeEventListener(t,n,o)}function u(e,t,n){n==null?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function zn(e){return Array.from(e.childNodes)}function me(e,t,n){e.classList.toggle(t,!!n)}function Fn(e,t,{bubbles:n=!1,cancelable:o=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:o})}let Ie;function Oe(e){Ie=e}function Lt(){if(!Ie)throw new Error("Function called outside component initialization");return Ie}function Be(e){Lt().$$.on_mount.push(e)}function we(){const e=Lt();return(t,n,{cancelable:o=!1}={})=>{const i=e.$$.callbacks[t];if(i){const s=Fn(t,n,{cancelable:o});return i.slice().forEach(r=>{r.call(e,s)}),!s.defaultPrevented}return!0}}function he(e,t){const n=e.$$.callbacks[t.type];n&&n.slice().forEach(o=>o.call(this,t))}const be=[],Ve=[];let Ee=[];const kt=[],Hn=Promise.resolve();let tt=!1;function jn(){tt||(tt=!0,Hn.then(It))}function nt(e){Ee.push(e)}const ot=new Set;let Ae=0;function It(){if(Ae!==0)return;const e=Ie;do{try{for(;Ae<be.length;){const t=be[Ae];Ae++,Oe(t),Wn(t.$$)}}catch(t){throw be.length=0,Ae=0,t}for(Oe(null),be.length=0,Ae=0;Ve.length;)Ve.pop()();for(let t=0;t<Ee.length;t+=1){const n=Ee[t];ot.has(n)||(ot.add(n),n())}Ee.length=0}while(be.length);for(;kt.length;)kt.pop()();tt=!1,ot.clear(),Oe(e)}function Wn(e){if(e.fragment!==null){e.update(),ae(e.before_update);const t=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,t),e.after_update.forEach(nt)}}function qn(e){const t=[],n=[];Ee.forEach(o=>e.indexOf(o)===-1?t.push(o):n.push(o)),n.forEach(o=>o()),Ee=t}const Ge=new Set;let ye;function re(){ye={r:0,c:[],p:ye}}function le(){ye.r||ae(ye.c),ye=ye.p}function P(e,t){e&&e.i&&(Ge.delete(e),e.i(t))}function N(e,t,n,o){if(e&&e.o){if(Ge.has(e))return;Ge.add(e),ye.c.push(()=>{Ge.delete(e),o&&(n&&e.d(1),o())}),e.o(t)}else o&&o()}function Se(e){return(e==null?void 0:e.length)!==void 0?e:Array.from(e)}function te(e){e&&e.c()}function Z(e,t,n){const{fragment:o,after_update:i}=e.$$;o&&o.m(t,n),nt(()=>{const s=e.$$.on_mount.map(Et).filter(K);e.$$.on_destroy?e.$$.on_destroy.push(...s):ae(s),e.$$.on_mount=[]}),i.forEach(nt)}function x(e,t){const n=e.$$;n.fragment!==null&&(qn(n.after_update),ae(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function Kn(e,t){e.$$.dirty[0]===-1&&(be.push(e),jn(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<<t%31}function ne(e,t,n,o,i,s,r=null,l=[-1]){const a=Ie;Oe(e);const c=e.$$={fragment:null,ctx:[],props:s,update:X,not_equal:i,bound:At(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(t.context||(a?a.$$.context:[])),callbacks:At(),dirty:l,skip_bound:!1,root:t.target||a.$$.root};r&&r(c.root);let d=!1;if(c.ctx=n?n(e,t.props||{},(f,g,...h)=>{const m=h.length?h[0]:g;return c.ctx&&i(c.ctx[f],c.ctx[f]=m)&&(!c.skip_bound&&c.bound[f]&&c.bound[f](m),d&&Kn(e,f)),g}):[],c.update(),d=!0,ae(c.before_update),c.fragment=o?o(c.ctx):!1,t.target){if(t.hydrate){const f=zn(t.target);c.fragment&&c.fragment.l(f),f.forEach(I)}else c.fragment&&c.fragment.c();t.intro&&P(e.$$.fragment),Z(e,t.target,t.anchor),It()}Oe(a)}class oe{constructor(){bt(this,"$$");bt(this,"$$set")}$destroy(){x(this,1),this.$destroy=X}$on(t,n){if(!K(n))return X;const o=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return o.push(n),()=>{const i=o.indexOf(n);i!==-1&&o.splice(i,1)}}$set(t){this.$$set&&!Rn(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}}const Jn="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Jn);var q=(e=>(e.ELLIPSE="ELLIPSE",e.POLYGON="POLYGON",e.RECTANGLE="RECTANGLE",e))(q||{});const it={},ze=(e,t)=>it[e]=t,Fe=e=>it[e.type].area(e),Ot=(e,t,n)=>it[e.type].intersects(e,t,n),Pe=e=>{let t=1/0,n=1/0,o=-1/0,i=-1/0;return e.forEach(([s,r])=>{t=Math.min(t,s),n=Math.min(n,r),o=Math.max(o,s),i=Math.max(i,r)}),{minX:t,minY:n,maxX:o,maxY:i}},Qn={area:e=>Math.PI*e.geometry.rx*e.geometry.ry,intersects:(e,t,n)=>{const{cx:o,cy:i,rx:s,ry:r}=e.geometry,l=0,a=Math.cos(l),c=Math.sin(l),d=t-o,f=n-i,g=a*d+c*f,h=c*d-a*f;return g*g/(s*s)+h*h/(r*r)<=1}};ze(q.ELLIPSE,Qn);const Zn={area:e=>{const{points:t}=e.geometry;let n=0,o=t.length-1;for(let i=0;i<t.length;i++)n+=(t[o][0]+t[i][0])*(t[o][1]-t[i][1]),o=i;return Math.abs(.5*n)},intersects:(e,t,n)=>{const{points:o}=e.geometry;let i=!1;for(let s=0,r=o.length-1;s<o.length;r=s++){const l=o[s][0],a=o[s][1],c=o[r][0],d=o[r][1];a>n!=d>n&&t<(c-l)*(n-a)/(d-a)+l&&(i=!i)}return i}};ze(q.POLYGON,Zn);const Bt={area:e=>e.geometry.w*e.geometry.h,intersects:(e,t,n)=>t>=e.geometry.x&&t<=e.geometry.x+e.geometry.w&&n>=e.geometry.y&&n<=e.geometry.y+e.geometry.h};ze(q.RECTANGLE,Bt);const Pt=(e,t=!1)=>{const n=typeof e=="string"?e:e.value,o=/^(xywh)=(pixel|percent)?:?(.+?),(.+?),(.+?),(.+)*/g,i=[...n.matchAll(o)][0],[s,r,l,a,c,d,f]=i;if(r!=="xywh")throw new Error("Unsupported MediaFragment: "+n);if(l&&l!=="pixel")throw new Error(`Unsupported MediaFragment unit: ${l}`);const[g,h,m,y]=[a,c,d,f].map(parseFloat);return{type:q.RECTANGLE,geometry:{x:g,y:h,w:m,h:y,bounds:{minX:g,minY:t?h-y:h,maxX:g+m,maxY:t?h:h+y}}}},Yt=e=>{const{x:t,y:n,w:o,h:i}=e;return{type:"FragmentSelector",conformsTo:"http://www.w3.org/TR/media-frags/",value:`xywh=pixel:${t},${n},${o},${i}`}},Dt="http://www.w3.org/2000/svg",Ct=e=>{const t=o=>{Array.from(o.attributes).forEach(i=>{i.name.startsWith("on")&&o.removeAttribute(i.name)})},n=e.getElementsByTagName("script");return Array.from(n).reverse().forEach(o=>o.parentNode.removeChild(o)),Array.from(e.querySelectorAll("*")).forEach(t),e},xn=e=>{const o=new XMLSerializer().serializeToString(e.documentElement).replace("<svg>",`<svg xmlns="${Dt}">`);return new DOMParser().parseFromString(o,"image/svg+xml").documentElement},$n=e=>{const n=new DOMParser().parseFromString(e,"image/svg+xml"),o=n.lookupPrefix(Dt),i=n.lookupNamespaceURI(null);return o||i?Ct(n).firstChild:Ct(xn(n)).firstChild},eo=e=>{const[t,n,o]=e.match(/(<polygon points=["|'])([^("|')]*)/)||[],i=o.split(" ").map(s=>s.split(",").map(parseFloat));return{type:q.POLYGON,geometry:{points:i,bounds:Pe(i)}}},to=e=>{const t=$n(e),n=parseFloat(t.getAttribute("cx")),o=parseFloat(t.getAttribute("cy")),i=parseFloat(t.getAttribute("rx")),s=parseFloat(t.getAttribute("ry")),r={minX:n-i,minY:o-s,maxX:n+i,maxY:o+s};return{type:q.ELLIPSE,geometry:{cx:n,cy:o,rx:i,ry:s,bounds:r}}},Rt=e=>{const t=typeof e=="string"?e:e.value;if(t.includes("<polygon points="))return eo(t);if(t.includes("<ellipse "))return to(t);throw"Unsupported SVG shape: "+t},Xt=e=>{let t;if(e.type===q.POLYGON){const n=e.geometry,{points:o}=n;t=`<svg><polygon points="${o.map(i=>i.join(",")).join(" ")}" /></svg>`}else if(e.type===q.ELLIPSE){const n=e.geometry;t=`<svg><ellipse cx="${n.cx}" cy="${n.cy}" rx="${n.rx}" ry="${n.ry}" /></svg>`}if(t)return{type:"SvgSelector",value:t};throw`Unsupported shape type: ${e.type}`};for(var J=[],st=0;st<256;++st)J.push((st+256).toString(16).slice(1));function no(e,t=0){return(J[e[t+0]]+J[e[t+1]]+J[e[t+2]]+J[e[t+3]]+"-"+J[e[t+4]]+J[e[t+5]]+"-"+J[e[t+6]]+J[e[t+7]]+"-"+J[e[t+8]]+J[e[t+9]]+"-"+J[e[t+10]]+J[e[t+11]]+J[e[t+12]]+J[e[t+13]]+J[e[t+14]]+J[e[t+15]]).toLowerCase()}var He,oo=new Uint8Array(16);function io(){if(!He&&(He=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!He))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return He(oo)}var so=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const Nt={randomUUID:so};function Ut(e,t,n){if(Nt.randomUUID&&!t&&!e)return Nt.randomUUID();e=e||{};var o=e.random||(e.rng||io)();return o[6]=o[6]&15|64,o[8]=o[8]&63|128,no(o)}var Vt=Object.prototype.hasOwnProperty;function _e(e,t){var n,o;if(e===t)return!0;if(e&&t&&(n=e.constructor)===t.constructor){if(n===Date)return e.getTime()===t.getTime();if(n===RegExp)return e.toString()===t.toString();if(n===Array){if((o=e.length)===t.length)for(;o--&&_e(e[o],t[o]););return o===-1}if(!n||typeof e=="object"){o=0;for(n in e)if(Vt.call(e,n)&&++o&&!Vt.call(t,n)||!(n in t)||!_e(e[n],t[n]))return!1;return Object.keys(t).length===o}}return e!==e&&t!==t}function rt(){}function ro(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}const Te=[];function lt(e,t=rt){let n;const o=new Set;function i(l){if(ro(e,l)&&(e=l,n)){const a=!Te.length;for(const c of o)c[1](),Te.push(c,e);if(a){for(let c=0;c<Te.length;c+=2)Te[c][0](Te[c+1]);Te.length=0}}}function s(l){i(l(e))}function r(l,a=rt){const c=[l,a];return o.add(c),o.size===1&&(n=t(i,s)||rt),l(e),()=>{o.delete(c),o.size===0&&n&&(n(),n=null)}}return{set:i,update:s,subscribe:r}}const lo=e=>{const{subscribe:t,set:n}=lt();let o;return t(i=>o=i),e.observe(({changes:i})=>{if(o){(i.deleted||[]).some(r=>r.id===o)&&n(void 0);const s=(i.updated||[]).find(({oldValue:r})=>r.id===o);s&&n(s.newValue.id)}}),{get current(){return o},subscribe:t,set:n}};var Gt=(e=>(e.EDIT="EDIT",e.SELECT="SELECT",e.NONE="NONE",e))(Gt||{});const at={selected:[]},ao=(e,t="EDIT")=>{const{subscribe:n,set:o}=lt(at);let i=t,s=at;n(h=>s=h);const r=()=>o(at),l=()=>{var h;return((h=s.selected)==null?void 0:h.length)===0},a=h=>{if(l())return!1;const m=typeof h=="string"?h:h.id;return s.selected.some(y=>y.id===m)},c=(h,m)=>{const y=e.getAnnotation(h);if(!y){console.warn("Invalid selection: "+h);return}switch(zt(y,i)){case"EDIT":o({selected:[{id:h,editable:!0}],event:m});break;case"SELECT":o({selected:[{id:h}],event:m});break;default:o({selected:[],event:m})}},d=(h,m)=>{const y=Array.isArray(h)?h:[h],T=y.map(p=>e.getAnnotation(p)).filter(p=>!!p);o({selected:T.map(p=>{const w=m===void 0?zt(p,i)==="EDIT":m;return{id:p.id,editable:w}})}),T.length!==y.length&&console.warn("Invalid selection",h)},f=h=>{if(l())return!1;const{selected:m}=s;m.some(({id:y})=>h.includes(y))&&o({selected:m.filter(({id:y})=>!h.includes(y))})},g=h=>i=h;return e.observe(({changes:h})=>f((h.deleted||[]).map(m=>m.id))),{get event(){return s?s.event:null},get selected(){return s?[...s.selected]:null},clear:r,isEmpty:l,isSelected:a,setSelected:d,setUserSelectAction:g,subscribe:n,userSelect:c}},zt=(e,t)=>typeof t=="function"?t(e):t||"EDIT";for(var co=[],ct=0;ct<256;++ct)co.push((ct+256).toString(16).slice(1));typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const fo=(e,t)=>{const n=new Set(e.bodies.map(o=>o.id));return t.bodies.filter(o=>!n.has(o.id))},uo=(e,t)=>{const n=new Set(t.bodies.map(o=>o.id));return e.bodies.filter(o=>!n.has(o.id))},ho=(e,t)=>t.bodies.map(n=>{const o=e.bodies.find(i=>i.id===n.id);return{newBody:n,oldBody:o&&!_e(o,n)?o:void 0}}).filter(({oldBody:n})=>n).map(({oldBody:n,newBody:o})=>({oldBody:n,newBody:o})),go=(e,t)=>!_e(e.target,t.target),Ft=(e,t)=>{const n=fo(e,t),o=uo(e,t),i=ho(e,t);return{oldValue:e,newValue:t,bodiesCreated:n.length>0?n:void 0,bodiesDeleted:o.length>0?o:void 0,bodiesUpdated:i.length>0?i:void 0,targetUpdated:go(e,t)?{oldTarget:e.target,newTarget:t.target}:void 0}};var H=(e=>(e.LOCAL="LOCAL",e.REMOTE="REMOTE",e))(H||{});const mo=(e,t)=>{var n,o;const{changes:i,origin:s}=t;if(!(!e.options.origin||e.options.origin===s))return!1;if(e.options.ignore){const{ignore:r}=e.options,l=a=>a&&a.length>0;if(!(l(i.created)||l(i.deleted))){const a=(n=i.updated)==null?void 0:n.some(d=>l(d.bodiesCreated)||l(d.bodiesDeleted)||l(d.bodiesUpdated)),c=(o=i.updated)==null?void 0:o.some(d=>d.targetUpdated);if(r==="BODY_ONLY"&&a&&!c||r==="TARGET_ONLY"&&c&&!a)return!1}}if(e.options.annotations){const r=new Set([...(i.created||[]).map(l=>l.id),...(i.deleted||[]).map(l=>l.id),...(i.updated||[]).map(({oldValue:l})=>l.id)]);return!!(Array.isArray(e.options.annotations)?e.options.annotations:[e.options.annotations]).find(l=>r.has(l))}else return!0},po=(e,t)=>{const n=new Set((e.created||[]).map(f=>f.id)),o=new Set((e.updated||[]).map(({newValue:f})=>f.id)),i=new Set((t.created||[]).map(f=>f.id)),s=new Set((t.deleted||[]).map(f=>f.id)),r=new Set((t.updated||[]).map(({oldValue:f})=>f.id)),l=new Set((t.updated||[]).filter(({oldValue:f})=>n.has(f.id)||o.has(f.id)).map(({oldValue:f})=>f.id)),a=[...(e.created||[]).filter(f=>!s.has(f.id)).map(f=>r.has(f.id)?t.updated.find(({oldValue:g})=>g.id===f.id).newValue:f),...t.created||[]],c=[...(e.deleted||[]).filter(f=>!i.has(f.id)),...(t.deleted||[]).filter(f=>!n.has(f.id))],d=[...(e.updated||[]).filter(({newValue:f})=>!s.has(f.id)).map(f=>{const{oldValue:g,newValue:h}=f;if(r.has(h.id)){const m=t.updated.find(y=>y.oldValue.id===h.id).newValue;return Ft(g,m)}else return f}),...(t.updated||[]).filter(({oldValue:f})=>!l.has(f.id))];return{created:a,deleted:c,updated:d}},yo=e=>e.id!==void 0,_o=()=>{const e=new Map,t=new Map,n=[],o=(E,A={})=>n.push({onChange:E,options:A}),i=E=>{const A=n.findIndex(S=>S.onChange==E);A>-1&&n.splice(A,1)},s=(E,A)=>{const S={origin:E,changes:{created:A.created||[],updated:A.updated||[],deleted:A.deleted||[]},state:[...e.values()]};n.forEach(v=>{mo(v,S)&&v.onChange(S)})},r=(E,A=H.LOCAL)=>{if(e.get(E.id))throw Error(`Cannot add annotation ${E.id} - exists already`);e.set(E.id,E),E.bodies.forEach(S=>t.set(S.id,E.id)),s(A,{created:[E]})},l=(E,A)=>{const S=typeof E=="string"?A:E,v=typeof E=="string"?E:E.id,C=e.get(v);if(C){const G=Ft(C,S);return v===S.id?e.set(v,S):(e.delete(v),e.set(S.id,S)),C.bodies.forEach($=>t.delete($.id)),S.bodies.forEach($=>t.set($.id,S.id)),G}else console.warn(`Cannot update annotation ${v} - does not exist`)},a=(E,A=H.LOCAL,S=H.LOCAL)=>{const v=yo(A)?S:A,C=l(E,A);C&&s(v,{updated:[C]})},c=(E,A=H.LOCAL)=>{const S=E.reduce((v,C)=>{const G=l(C);return G?[...v,G]:v},[]);S.length>0&&s(A,{updated:S})},d=(E,A=H.LOCAL)=>{const S=e.get(E.annotation);if(S){const v={...S,bodies:[...S.bodies,E]};e.set(S.id,v),t.set(E.id,v.id),s(A,{updated:[{oldValue:S,newValue:v,bodiesCreated:[E]}]})}else console.warn(`Attempt to add body to missing annotation: ${E.annotation}`)},f=()=>[...e.values()],g=(E=H.LOCAL)=>{const A=[...e.values()];e.clear(),t.clear(),s(E,{deleted:A})},h=(E,A=!0,S=H.LOCAL)=>{if(A){const v=[...e.values()];e.clear(),t.clear(),E.forEach(C=>{e.set(C.id,C),C.bodies.forEach(G=>t.set(G.id,C.id))}),s(S,{created:E,deleted:v})}else{const v=E.reduce((C,G)=>{const $=e.get(G.id);return $?[...C,$]:C},[]);if(v.length>0)throw Error(`Bulk insert would overwrite the following annotations: ${v.map(C=>C.id).join(", ")}`);E.forEach(C=>{e.set(C.id,C),C.bodies.forEach(G=>t.set(G.id,C.id))}),s(S,{created:E})}},m=E=>{const A=typeof E=="string"?E:E.id,S=e.get(A);if(S)return e.delete(A),S.bodies.forEach(v=>t.delete(v.id)),S;console.warn(`Attempt to delete missing annotation: ${A}`)},y=(E,A=H.LOCAL)=>{const S=m(E);S&&s(A,{deleted:[S]})},T=(E,A=H.LOCAL)=>{const S=E.reduce((v,C)=>{const G=m(C);return G?[...v,G]:v},[]);S.length>0&&s(A,{deleted:S})},p=E=>{const A=e.get(E.annotation);if(A){const S=A.bodies.find(v=>v.id===E.id);if(S){t.delete(S.id);const v={...A,bodies:A.bodies.filter(C=>C.id!==E.id)};return e.set(A.id,v),{oldValue:A,newValue:v,bodiesDeleted:[S]}}else console.warn(`Attempt to delete missing body ${E.id} from annotation ${E.annotation}`)}else console.warn(`Attempt to delete body from missing annotation ${E.annotation}`)},w=(E,A=H.LOCAL)=>{const S=p(E);S&&s(A,{updated:[S]})},_=(E,A=H.LOCAL)=>{const S=E.map(v=>p(v)).filter(Boolean);S.length>0&&s(A,{updated:S})},b=E=>{const A=e.get(E);return A?{...A}:void 0},Y=E=>{const A=t.get(E);if(A){const S=b(A).bodies.find(v=>v.id===E);if(S)return S;console.error(`Store integrity error: body ${E} in index, but not in annotation`)}else console.warn(`Attempt to retrieve missing body: ${E}`)},V=(E,A)=>{if(E.annotation!==A.annotation)throw"Annotation integrity violation: annotation ID must be the same when updating bodies";const S=e.get(E.annotation);if(S){const v=S.bodies.find(G=>G.id===E.id),C={...S,bodies:S.bodies.map(G=>G.id===v.id?A:G)};return e.set(S.id,C),v.id!==A.id&&(t.delete(v.id),t.set(A.id,C.id)),{oldValue:S,newValue:C,bodiesUpdated:[{oldBody:v,newBody:A}]}}else console.warn(`Attempt to add body to missing annotation ${E.annotation}`)},z=(E,A,S=H.LOCAL)=>{const v=V(E,A);v&&s(S,{updated:[v]})},F=(E,A=H.LOCAL)=>{const S=E.map(v=>V({id:v.id,annotation:v.annotation},v)).filter(Boolean);s(A,{updated:S})},D=E=>{const A=e.get(E.annotation);if(A){const S={...A,target:{...A.target,...E}};return e.set(A.id,S),{oldValue:A,newValue:S,targetUpdated:{oldTarget:A.target,newTarget:E}}}else console.warn(`Attempt to update target on missing annotation: ${E.annotation}`)};return{addAnnotation:r,addBody:d,all:f,bulkAddAnnotation:h,bulkDeleteAnnotation:T,bulkDeleteBodies:_,bulkUpdateAnnotation:c,bulkUpdateBodies:F,bulkUpdateTargets:(E,A=H.LOCAL)=>{const S=E.map(v=>D(v)).filter(Boolean);S.length>0&&s(A,{updated:S})},clear:g,deleteAnnotation:y,deleteBody:w,getAnnotation:b,getBody:Y,observe:o,unobserve:i,updateAnnotation:a,updateBody:z,updateTarget:(E,A=H.LOCAL)=>{const S=D(E);S&&s(A,{updated:[S]})}}},wo=e=>({...e,subscribe:t=>{const n=o=>t(o.state);return e.observe(n),t(e.all()),()=>e.unobserve(n)}});let bo=()=>({emit(e,...t){for(let n=0,o=this.events[e]||[],i=o.length;n<i;n++)o[n](...t)},events:{},on(e,t){var n;return((n=this.events)[e]||(n[e]=[])).push(t),()=>{var o;this.events[e]=(o=this.events[e])==null?void 0:o.filter(i=>t!==i)}}});const Eo=250,Ao=e=>{const t=bo(),n=[];let o=-1,i=!1,s=0;const r=h=>{if(!i){const{changes:m}=h,y=performance.now();if(y-s>Eo)n.splice(o+1),n.push(m),o=n.length-1;else{const T=n.length-1;n[T]=po(n[T],m)}s=y}i=!1};e.observe(r,{origin:H.LOCAL});const l=h=>h&&h.length>0&&e.bulkDeleteAnnotation(h),a=h=>h&&h.length>0&&e.bulkAddAnnotation(h,!1),c=h=>h&&h.length>0&&e.bulkUpdateAnnotation(h.map(({oldValue:m})=>m)),d=h=>h&&h.length>0&&e.bulkUpdateAnnotation(h.map(({newValue:m})=>m)),f=h=>h&&h.length>0&&e.bulkAddAnnotation(h,!1),g=h=>h&&h.length>0&&e.bulkDeleteAnnotation(h);return{canRedo:()=>n.length-1>o,canUndo:()=>o>-1,destroy:()=>e.unobserve(r),on:(h,m)=>t.on(h,m),redo:()=>{if(n.length-1>o){i=!0;const{created:h,updated:m,deleted:y}=n[o+1];a(h),d(m),g(y),t.emit("redo",n[o+1]),o+=1}},undo:()=>{if(o>-1){i=!0;const{created:h,updated:m,deleted:y}=n[o];l(h),c(m),f(y),t.emit("undo",n[o]),o-=1}}}},So=()=>{const{subscribe:e,set:t}=lt([]);return{subscribe:e,set:t}},To=(e,t,n,o)=>{const{store:i,selection:s,hover:r,viewport:l}=e,a=new Map;let c=[],d,f;const g=(p,w)=>{a.has(p)?a.get(p).push(w):a.set(p,[w])},h=(p,w)=>{const _=a.get(p);if(_){const b=_.indexOf(w);b!==-1&&_.splice(b,1)}},m=(p,w,_)=>{a.has(p)&&setTimeout(()=>{a.get(p).forEach(b=>{if(n){const Y=Array.isArray(w)?w.map(z=>n.serialize(z)):n.serialize(w),V=_?_ instanceof PointerEvent?_:n.serialize(_):void 0;b(Y,V)}else b(w,_)})},1)},y=()=>{const{selected:p}=s,w=(p||[]).map(({id:_})=>i.getAnnotation(_));w.forEach(_=>{const b=c.find(Y=>Y.id===_.id);(!b||!_e(b,_))&&m("updateAnnotation",_,b)}),c=c.map(_=>w.find(({id:Y})=>Y===_.id)||_)};s.subscribe(({selected:p})=>{if(!(c.length===0&&p.length===0)){if(c.length===0&&p.length>0)c=p.map(({id:w})=>i.getAnnotation(w));else if(c.length>0&&p.length===0)c.forEach(w=>{const _=i.getAnnotation(w.id);_&&!_e(_,w)&&m("updateAnnotation",_,w)}),c=[];else{const w=new Set(c.map(b=>b.id)),_=new Set(p.map(({id:b})=>b));c.filter(b=>!_.has(b.id)).forEach(b=>{const Y=i.getAnnotation(b.id);Y&&!_e(Y,b)&&m("updateAnnotation",Y,b)}),c=[...c.filter(b=>_.has(b.id)),...p.filter(({id:b})=>!w.has(b)).map(({id:b})=>i.getAnnotation(b))]}m("selectionChanged",c)}}),r.subscribe(p=>{!d&&p?m("mouseEnterAnnotation",i.getAnnotation(p)):d&&!p?m("mouseLeaveAnnotation",i.getAnnotation(d)):d&&p&&(m("mouseLeaveAnnotation",i.getAnnotation(d)),m("mouseEnterAnnotation",i.getAnnotation(p))),d=p}),l==null||l.subscribe(p=>m("viewportIntersect",p.map(w=>i.getAnnotation(w)))),i.observe(p=>{o&&(f&&clearTimeout(f),f=setTimeout(y,1e3));const{created:w,deleted:_}=p.changes;(w||[]).forEach(b=>m("createAnnotation",b)),(_||[]).forEach(b=>m("deleteAnnotation",b)),(p.changes.updated||[]).filter(b=>[...b.bodiesCreated||[],...b.bodiesDeleted||[],...b.bodiesUpdated||[]].length>0).forEach(({oldValue:b,newValue:Y})=>{const V=c.find(z=>z.id===b.id)||b;c=c.map(z=>z.id===b.id?Y:z),m("updateAnnotation",Y,V)})},{origin:H.LOCAL}),i.observe(p=>{if(c){const w=new Set(c.map(b=>b.id)),_=(p.changes.updated||[]).filter(({newValue:b})=>w.has(b.id)).map(({newValue:b})=>b);_.length>0&&(c=c.map(b=>_.find(V=>V.id===b.id)||b))}},{origin:H.REMOTE});const T=p=>w=>{const{updated:_}=w;p?(_||[]).forEach(b=>m("updateAnnotation",b.oldValue,b.newValue)):(_||[]).forEach(b=>m("updateAnnotation",b.newValue,b.oldValue))};return t.on("undo",T(!0)),t.on("redo",T(!1)),{on:g,off:h,emit:m}},vo=e=>t=>t.reduce((n,o)=>{const{parsed:i,error:s}=e.parse(o);return s?{parsed:n.parsed,failed:[...n.failed,o]}:i?{parsed:[...n.parsed,i],failed:n.failed}:{...n}},{parsed:[],failed:[]}),Mo=(e,t,n)=>{const{store:o,selection:i}=e,s=p=>{if(n){const{parsed:w,error:_}=n.parse(p);w?o.addAnnotation(w,H.REMOTE):console.error(_)}else o.addAnnotation(p,H.REMOTE)},r=()=>i.clear(),l=()=>o.clear(),a=p=>{const w=o.getAnnotation(p);return n&&w?n.serialize(w):w},c=()=>n?o.all().map(n.serialize):o.all(),d=()=>{var p;const w=(((p=i.selected)==null?void 0:p.map(_=>_.id))||[]).map(_=>o.getAnnotation(_)).filter(Boolean);return n?w.map(n.serialize):w},f=(p,w=!0)=>fetch(p).then(_=>_.json()).then(_=>(h(_,w),_)),g=p=>{if(typeof p=="string"){const w=o.getAnnotation(p);if(o.deleteAnnotation(p),w)return n?n.serialize(w):w}else{const w=n?n.parse(p).parsed:p;if(w)return o.deleteAnnotation(w),p}},h=(p,w=!0)=>{if(n){const{parsed:_,failed:b}=vo(n)(p);b.length>0&&console.warn(`Discarded ${b.length} invalid annotations`,b),o.bulkAddAnnotation(_,w,H.REMOTE)}else o.bulkAddAnnotation(p,w,H.REMOTE)},m=(p,w)=>{p?i.setSelected(p,w):i.clear()},y=p=>{i.clear(),i.setUserSelectAction(p)},T=p=>{if(n){const w=n.parse(p).parsed,_=n.serialize(o.getAnnotation(w.id));return o.updateAnnotation(w),_}else{const w=o.getAnnotation(p.id);return o.updateAnnotation(p),w}};return{addAnnotation:s,cancelSelected:r,canRedo:t.canRedo,canUndo:t.canUndo,clearAnnotations:l,getAnnotationById:a,getAnnotations:c,getSelected:d,loadAnnotations:f,redo:t.redo,removeAnnotation:g,setAnnotations:h,setSelected:m,setUserSelectAction:y,undo:t.undo,updateAnnotation:T}},Lo="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let ko=e=>crypto.getRandomValues(new Uint8Array(e)),Io=(e,t,n)=>{let o=(2<<Math.log(e.length-1)/Math.LN2)-1,i=-~(1.6*o*t/e.length);return(s=t)=>{let r="";for(;;){let l=n(i),a=i;for(;a--;)if(r+=e[l[a]&o]||"",r.length===s)return r}}},Oo=(e,t=21)=>Io(e,t,ko),Bo=(e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e));for(;e--;)t+=Lo[n[e]&63];return t};const Po=()=>({isGuest:!0,id:Oo("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_",20)()}),Yo=e=>{const t=JSON.stringify(e);let n=0;for(let o=0,i=t.length;o<i;o++){let s=t.charCodeAt(o);n=(n<<5)-n+s,n|=0}return`${n}`},Ht=e=>e?typeof e=="object"?{...e}:e:void 0,Do=(e,t)=>(Array.isArray(e)?e:[e]).map(n=>{const{id:o,type:i,purpose:s,value:r,created:l,modified:a,creator:c,...d}=n;return{id:o||`temp-${Yo(n)}`,annotation:t,type:i,purpose:s,value:r,creator:Ht(c),created:l?new Date(l):void 0,updated:a?new Date(a):void 0,...d}}),Co=e=>e.map(t=>{var n;const{annotation:o,created:i,updated:s,...r}=t,l={...r,created:i==null?void 0:i.toISOString(),modified:s==null?void 0:s.toISOString()};return(n=l.id)!=null&&n.startsWith("temp-")&&delete l.id,l});Bo();const Ro=(e,t={strict:!0,invertY:!1})=>({parse:i=>jt(i,t),serialize:i=>Wt(i,e,t)}),jt=(e,t)=>{const n=e.id||Ut(),{creator:o,created:i,modified:s,body:r,...l}=e,a=Do(r||[],n),c=Array.isArray(e.target)?e.target[0]:e.target,d=Array.isArray(c.selector)?c.selector[0]:c.selector,f=(d==null?void 0:d.type)==="FragmentSelector"?Pt(d,t.invertY):(d==null?void 0:d.type)==="SvgSelector"?Rt(d):void 0;return f||!t.strict?{parsed:{...l,id:n,bodies:a,target:{created:i?new Date(i):void 0,creator:Ht(o),updated:s?new Date(s):void 0,...Array.isArray(l.target)?l.target[0]:l.target,annotation:n,selector:f||d}}}:{error:Error(`Invalid selector: ${JSON.stringify(d)}`)}},Wt=(e,t,n)=>{const{selector:o,creator:i,created:s,updated:r,updatedBy:l,...a}=e.target;let c;try{c=o.type==q.RECTANGLE?Yt(o.geometry):Xt(o)}catch(f){if(n.strict)throw f;c=o}const d={...e,"@context":"http://www.w3.org/ns/anno.jsonld",id:e.id,type:"Annotation",body:Co(e.bodies),created:s==null?void 0:s.toISOString(),creator:i,modified:r==null?void 0:r.toISOString(),target:{...a,source:t,selector:c}};return delete d.bodies,"annotation"in d.target&&delete d.target.annotation,d};function qt(e,t,n){const o=e.slice();return o[10]=t[n],o[12]=n,o}function Kt(e){let t,n;return t=new Me({props:{x:e[10][0],y:e[10][1],scale:e[3]}}),t.$on("pointerdown",function(){K(e[9](`HANDLE-${e[12]}`))&&e[9](`HANDLE-${e[12]}`).apply(this,arguments)}),{c(){te(t.$$.fragment)},m(o,i){Z(t,o,i),n=!0},p(o,i){e=o;const s={};i&16&&(s.x=e[10][0]),i&16&&(s.y=e[10][1]),i&8&&(s.scale=e[3]),t.$set(s)},i(o){n||(P(t.$$.fragment,o),n=!0)},o(o){N(t.$$.fragment,o),n=!1},d(o){x(t,o)}}}function Xo(e){let t,n,o,i,s,r,l,a,c,d,f,g=Se(e[4].points),h=[];for(let y=0;y<g.length;y+=1)h[y]=Kt(qt(e,g,y));const m=y=>N(h[y],1,1,()=>{h[y]=null});return{c(){t=U("polygon"),i=ie(),s=U("polygon"),l=ie();for(let y=0;y<h.length;y+=1)h[y].c();a=se(),u(t,"class","a9s-outer"),u(t,"style",n=e[1]?"display:none;":void 0),u(t,"points",o=e[4].points.map(Jt).join(" ")),u(s,"class","a9s-inner a9s-shape-handle"),u(s,"style",e[1]),u(s,"points",r=e[4].points.map(Qt).join(" "))},m(y,T){B(y,t,T),B(y,i,T),B(y,s,T),B(y,l,T);for(let p=0;p<h.length;p+=1)h[p]&&h[p].m(y,T);B(y,a,T),c=!0,d||(f=[W(t,"pointerdown",function(){K(e[9]("SHAPE"))&&e[9]("SHAPE").apply(this,arguments)}),W(s,"pointerdown",function(){K(e[9]("SHAPE"))&&e[9]("SHAPE").apply(this,arguments)})],d=!0)},p(y,T){if(e=y,(!c||T&2&&n!==(n=e[1]?"display:none;":void 0))&&u(t,"style",n),(!c||T&16&&o!==(o=e[4].points.map(Jt).join(" ")))&&u(t,"points",o),(!c||T&2)&&u(s,"style",e[1]),(!c||T&16&&r!==(r=e[4].points.map(Qt).join(" ")))&&u(s,"points",r),T&536){g=Se(e[4].points);let p;for(p=0;p<g.length;p+=1){const w=qt(e,g,p);h[p]?(h[p].p(w,T),P(h[p],1)):(h[p]=Kt(w),h[p].c(),P(h[p],1),h[p].m(a.parentNode,a))}for(re(),p=g.length;p<h.length;p+=1)m(p);le()}},i(y){if(!c){for(let T=0;T<g.length;T+=1)P(h[T]);c=!0}},o(y){h=h.filter(Boolean);for(let T=0;T<h.length;T+=1)N(h[T]);c=!1},d(y){y&&(I(t),I(i),I(s),I(l),I(a)),et(h,y),d=!1,ae(f)}}}function No(e){let t,n;return t=new dt({props:{shape:e[0],transform:e[2],editor:e[5],$$slots:{default:[Xo,({grab:o})=>({9:o}),({grab:o})=>o?512:0]},$$scope:{ctx:e}}}),t.$on("change",e[6]),t.$on("grab",e[7]),t.$on("release",e[8]),{c(){te(t.$$.fragment)},m(o,i){Z(t,o,i),n=!0},p(o,[i]){const s={};i&1&&(s.shape=o[0]),i&4&&(s.transform=o[2]),i&8730&&(s.$$scope={dirty:i,ctx:o}),t.$set(s)},i(o){n||(P(t.$$.fragment,o),n=!0)},o(o){N(t.$$.fragment,o),n=!1},d(o){x(t,o)}}}const Jt=e=>e.join(","),Qt=e=>e.join(",");function Uo(e,t,n){let o,{shape:i}=t,{computedStyle:s}=t,{transform:r}=t,{viewportScale:l=1}=t;const a=(g,h,m)=>{let y;const T=g.geometry;h==="SHAPE"?y=T.points.map(([w,_])=>[w+m[0],_+m[1]]):y=T.points.map(([w,_],b)=>h===`HANDLE-${b}`?[w+m[0],_+m[1]]:[w,_]);const p=Pe(y);return{...g,geometry:{points:y,bounds:p}}};function c(g){he.call(this,e,g)}function d(g){he.call(this,e,g)}function f(g){he.call(this,e,g)}return e.$$set=g=>{"shape"in g&&n(0,i=g.shape),"computedStyle"in g&&n(1,s=g.computedStyle),"transform"in g&&n(2,r=g.transform),"viewportScale"in g&&n(3,l=g.viewportScale)},e.$$.update=()=>{e.$$.dirty&1&&n(4,o=i.geometry)},[i,s,r,l,o,a,c,d,f]}class Zt extends oe{constructor(t){super(),ne(this,t,Uo,No,Q,{shape:0,computedStyle:1,transform:2,viewportScale:3})}}const je=(e,t)=>{const n=Math.abs(t[0]-e[0]),o=Math.abs(t[1]-e[1]);return Math.sqrt(Math.pow(n,2)+Math.pow(o,2))},ve=[];function Vo(e,t=X){let n;const o=new Set;function i(l){if(Q(e,l)&&(e=l,n)){const a=!ve.length;for(const c of o)c[1](),ve.push(c,e);if(a){for(let c=0;c<ve.length;c+=2)ve[c][0](ve[c+1]);ve.length=0}}}function s(l){i(l(e))}function r(l,a=X){const c=[l,a];return o.add(c),o.size===1&&(n=t(i,s)||X),l(e),()=>{o.delete(c),o.size===0&&n&&(n(),n=null)}}return{set:i,update:s,subscribe:r}}const Go=(e,t)=>{const{naturalWidth:n,naturalHeight:o}=e;if(!n&&!o){const{width:i,height:s}=e;t.setAttribute("viewBox",`0 0 ${i} ${s}`),e.addEventListener("load",r=>{const l=r.target;t.setAttribute("viewBox",`0 0 ${l.naturalWidth} ${l.naturalHeight}`)})}else t.setAttribute("viewBox",`0 0 ${n} ${o}`)},xt=(e,t)=>{Go(e,t);const{subscribe:n,set:o}=Vo(1);let i;return window.ResizeObserver&&(i=new ResizeObserver(()=>{const r=t.getBoundingClientRect(),{width:l,height:a}=t.viewBox.baseVal,c=Math.max(r.width/l,r.height/a);o(c)}),i.observe(t.parentElement)),{destroy:()=>{i&&i.disconnect()},subscribe:n}},$t="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0;function zo(e){let t,n,o,i,s,r;return{c(){t=U("rect"),u(t,"class",n=Ue(`a9s-handle ${e[8].class||""}`.trim())+" svelte-1sgkh33"),u(t,"x",o=e[0]-e[5]/2),u(t,"y",i=e[1]-e[5]/2),u(t,"width",e[5]),u(t,"height",e[5])},m(l,a){B(l,t,a),s||(r=W(t,"pointerdown",e[11]),s=!0)},p(l,a){a&256&&n!==(n=Ue(`a9s-handle ${l[8].class||""}`.trim())+" svelte-1sgkh33")&&u(t,"class",n),a&33&&o!==(o=l[0]-l[5]/2)&&u(t,"x",o),a&34&&i!==(i=l[1]-l[5]/2)&&u(t,"y",i),a&32&&u(t,"width",l[5]),a&32&&u(t,"height",l[5])},d(l){l&&I(t),s=!1,r()}}}function Fo(e){let t,n,o,i,s,r,l,a,c;return{c(){t=U("g"),n=U("circle"),i=U("rect"),u(n,"cx",e[0]),u(n,"cy",e[1]),u(n,"r",o=e[3]/e[2]),u(n,"class","a9s-touch-halo svelte-1sgkh33"),me(n,"touched",e[4]),u(i,"class",s=Ue(`a9s-handle ${e[8].class||""}`.trim())+" svelte-1sgkh33"),u(i,"x",r=e[0]-e[5]/2),u(i,"y",l=e[1]-e[5]/2),u(i,"width",e[5]),u(i,"height",e[5]),u(t,"class","a9s-touch-handle")},m(d,f){B(d,t,f),ce(t,n),ce(t,i),a||(c=[W(n,"pointerdown",e[10]),W(n,"pointerdown",e[6]),W(n,"pointerup",e[7]),W(i,"pointerdown",e[9]),W(i,"pointerdown",e[6]),W(i,"pointerup",e[7])],a=!0)},p(d,f){f&1&&u(n,"cx",d[0]),f&2&&u(n,"cy",d[1]),f&12&&o!==(o=d[3]/d[2])&&u(n,"r",o),f&16&&me(n,"touched",d[4]),f&256&&s!==(s=Ue(`a9s-handle ${d[8].class||""}`.trim())+" svelte-1sgkh33")&&u(i,"class",s),f&33&&r!==(r=d[0]-d[5]/2)&&u(i,"x",r),f&34&&l!==(l=d[1]-d[5]/2)&&u(i,"y",l),f&32&&u(i,"width",d[5]),f&32&&u(i,"height",d[5])},d(d){d&&I(t),a=!1,ae(c)}}}function Ho(e){let t;function n(s,r){return $t?Fo:zo}let i=n()(e);return{c(){i.c(),t=se()},m(s,r){i.m(s,r),B(s,t,r)},p(s,[r]){i.p(s,r)},i:X,o:X,d(s){s&&I(t),i.d(s)}}}function jo(e,t,n){let o,{x:i}=t,{y:s}=t,{scale:r}=t,{radius:l=30}=t,a=!1;const c=m=>{m.pointerType==="touch"&&n(4,a=!0)},d=()=>n(4,a=!1);function f(m){he.call(this,e,m)}function g(m){he.call(this,e,m)}function h(m){he.call(this,e,m)}return e.$$set=m=>{n(8,t=ge(ge({},t),vt(m))),"x"in m&&n(0,i=m.x),"y"in m&&n(1,s=m.y),"scale"in m&&n(2,r=m.scale),"radius"in m&&n(3,l=m.radius)},e.$$.update=()=>{e.$$.dirty&4&&n(5,o=10/r)},t=vt(t),[i,s,r,l,a,o,c,d,t,f,g,h]}class Me extends oe{constructor(t){super(),ne(this,t,jo,Ho,Q,{x:0,y:1,scale:2,radius:3})}}function Wo(e){let t,n,o,i,s,r,l,a,c,d,f,g,h,m,y,T,p,w,_,b,Y,V,z,F,D,E,A,S,v,C,G,$,Re,de,Xe,fe,Ne,ue,k,j,O,ee,pe;return de=new Me({props:{class:"a9s-corner-handle-topleft",x:e[4].x,y:e[4].y,scale:e[3]}}),de.$on("pointerdown",function(){K(e[9]("TOP_LEFT"))&&e[9]("TOP_LEFT").apply(this,arguments)}),fe=new Me({props:{class:"a9s-corner-handle-topright",x:e[4].x+e[4].w,y:e[4].y,scale:e[3]}}),fe.$on("pointerdown",function(){K(e[9]("TOP_RIGHT"))&&e[9]("TOP_RIGHT").apply(this,arguments)}),ue=new Me({props:{class:"a9s-corner-handle-bottomright",x:e[4].x+e[4].w,y:e[4].y+e[4].h,scale:e[3]}}),ue.$on("pointerdown",function(){K(e[9]("BOTTOM_RIGHT"))&&e[9]("BOTTOM_RIGHT").apply(this,arguments)}),j=new Me({props:{class:"a9s-corner-handle-bottomleft",x:e[4].x,y:e[4].y+e[4].h,scale:e[3]}}),j.$on("pointerdown",function(){K(e[9]("BOTTOM_LEFT"))&&e[9]("BOTTOM_LEFT").apply(this,arguments)}),{c(){t=U("rect"),l=ie(),a=U("rect"),h=ie(),m=U("rect"),w=ie(),_=U("rect"),z=ie(),F=U("rect"),S=ie(),v=U("rect"),Re=ie(),te(de.$$.fragment),Xe=ie(),te(fe.$$.fragment),Ne=ie(),te(ue.$$.fragment),k=ie(),te(j.$$.fragment),u(t,"class","a9s-outer"),u(t,"style",n=e[1]?"display:none;":void 0),u(t,"x",o=e[4].x),u(t,"y",i=e[4].y),u(t,"width",s=e[4].w),u(t,"height",r=e[4].h),u(a,"class","a9s-inner a9s-shape-handle"),u(a,"style",e[1]),u(a,"x",c=e[4].x),u(a,"y",d=e[4].y),u(a,"width",f=e[4].w),u(a,"height",g=e[4].h),u(m,"class","a9s-edge-handle a9s-edge-handle-top"),u(m,"x",y=e[4].x),u(m,"y",T=e[4].y),u(m,"height",1),u(m,"width",p=e[4].w),u(_,"class","a9s-edge-handle a9s-edge-handle-right"),u(_,"x",b=e[4].x+e[4].w),u(_,"y",Y=e[4].y),u(_,"height",V=e[4].h),u(_,"width",1),u(F,"class","a9s-edge-handle a9s-edge-handle-bottom"),u(F,"x",D=e[4].x),u(F,"y",E=e[4].y+e[4].h),u(F,"height",1),u(F,"width",A=e[4].w),u(v,"class","a9s-edge-handle a9s-edge-handle-left"),u(v,"x",C=e[4].x),u(v,"y",G=e[4].y),u(v,"height",$=e[4].h),u(v,"width",1)},m(R,M){B(R,t,M),B(R,l,M),B(R,a,M),B(R,h,M),B(R,m,M),B(R,w,M),B(R,_,M),B(R,z,M),B(R,F,M),B(R,S,M),B(R,v,M),B(R,Re,M),Z(de,R,M),B(R,Xe,M),Z(fe,R,M),B(R,Ne,M),Z(ue,R,M),B(R,k,M),Z(j,R,M),O=!0,ee||(pe=[W(t,"pointerdown",function(){K(e[9]("SHAPE"))&&e[9]("SHAPE").apply(this,arguments)}),W(a,"pointerdown",function(){K(e[9]("SHAPE"))&&e[9]("SHAPE").apply(this,arguments)}),W(m,"pointerdown",function(){K(e[9]("TOP"))&&e[9]("TOP").apply(this,arguments)}),W(_,"pointerdown",function(){K(e[9]("RIGHT"))&&e[9]("RIGHT").apply(this,arguments)}),W(F,"pointerdown",function(){K(e[9]("BOTTOM"))&&e[9]("BOTTOM").apply(this,arguments)}),W(v,"pointerdown",function(){K(e[9]("LEFT"))&&e[9]("LEFT").apply(this,arguments)})],ee=!0)},p(R,M){e=R,(!O||M&2&&n!==(n=e[1]?"display:none;":void 0))&&u(t,"style",n),(!O||M&16&&o!==(o=e[4].x))&&u(t,"x",o),(!O||M&16&&i!==(i=e[4].y))&&u(t,"y",i),(!O||M&16&&s!==(s=e[4].w))&&u(t,"width",s),(!O||M&16&&r!==(r=e[4].h))&&u(t,"height",r),(!O||M&2)&&u(a,"style",e[1]),(!O||M&16&&c!==(c=e[4].x))&&u(a,"x",c),(!O||M&16&&d!==(d=e[4].y))&&u(a,"y",d),(!O||M&16&&f!==(f=e[4].w))&&u(a,"width",f),(!O||M&16&&g!==(g=e[4].h))&&u(a,"height",g),(!O||M&16&&y!==(y=e[4].x))&&u(m,"x",y),(!O||M&16&&T!==(T=e[4].y))&&u(m,"y",T),(!O||M&16&&p!==(p=e[4].w))&&u(m,"width",p),(!O||M&16&&b!==(b=e[4].x+e[4].w))&&u(_,"x",b),(!O||M&16&&Y!==(Y=e[4].y))&&u(_,"y",Y),(!O||M&16&&V!==(V=e[4].h))&&u(_,"height",V),(!O||M&16&&D!==(D=e[4].x))&&u(F,"x",D),(!O||M&16&&E!==(E=e[4].y+e[4].h))&&u(F,"y",E),(!O||M&16&&A!==(A=e[4].w))&&u(F,"width",A),(!O||M&16&&C!==(C=e[4].x))&&u(v,"x",C),(!O||M&16&&G!==(G=e[4].y))&&u(v,"y",G),(!O||M&16&&$!==($=e[4].h))&&u(v,"height",$);const Je={};M&16&&(Je.x=e[4].x),M&16&&(Je.y=e[4].y),M&8&&(Je.scale=e[3]),de.$set(Je);const Qe={};M&16&&(Qe.x=e[4].x+e[4].w),M&16&&(Qe.y=e[4].y),M&8&&(Qe.scale=e[3]),fe.$set(Qe);const Ze={};M&16&&(Ze.x=e[4].x+e[4].w),M&16&&(Ze.y=e[4].y+e[4].h),M&8&&(Ze.scale=e[3]),ue.$set(Ze);const xe={};M&16&&(xe.x=e[4].x),M&16&&(xe.y=e[4].y+e[4].h),M&8&&(xe.scale=e[3]),j.$set(xe)},i(R){O||(P(de.$$.fragment,R),P(fe.$$.fragment,R),P(ue.$$.fragment,R),P(j.$$.fragment,R),O=!0)},o(R){N(de.$$.fragment,R),N(fe.$$.fragment,R),N(ue.$$.fragment,R),N(j.$$.fragment,R),O=!1},d(R){R&&(I(t),I(l),I(a),I(h),I(m),I(w),I(_),I(z),I(F),I(S),I(v),I(Re),I(Xe),I(Ne),I(k)),x(de,R),x(fe,R),x(ue,R),x(j,R),ee=!1,ae(pe)}}}function qo(e){let t,n;return t=new dt({props:{shape:e[0],transform:e[2],editor:e[5],$$slots:{default:[Wo,({grab:o})=>({9:o}),({grab:o})=>o?512:0]},$$scope:{ctx:e}}}),t.$on("grab",e[6]),t.$on("change",e[7]),t.$on("release",e[8]),{c(){te(t.$$.fragment)},m(o,i){Z(t,o,i),n=!0},p(o,[i]){const s={};i&1&&(s.shape=o[0]),i&4&&(s.transform=o[2]),i&1562&&(s.$$scope={dirty:i,ctx:o}),t.$set(s)},i(o){n||(P(t.$$.fragment,o),n=!0)},o(o){N(t.$$.fragment,o),n=!1},d(o){x(t,o)}}}function Ko(e,t,n){let o,{shape:i}=t,{computedStyle:s}=t,{transform:r}=t,{viewportScale:l=1}=t;const a=(g,h,m)=>{const y=g.geometry.bounds;let[T,p]=[y.minX,y.minY],[w,_]=[y.maxX,y.maxY];const[b,Y]=m;if(h==="SHAPE")T+=b,w+=b,p+=Y,_+=Y;else{switch(h){case"TOP":case"TOP_LEFT":case"TOP_RIGHT":{p+=Y;break}case"BOTTOM":case"BOTTOM_LEFT":case"BOTTOM_RIGHT":{_+=Y;break}}switch(h){case"LEFT":case"TOP_LEFT":case"BOTTOM_LEFT":{T+=b;break}case"RIGHT":case"TOP_RIGHT":case"BOTTOM_RIGHT":{w+=b;break}}}const V=Math.min(T,w),z=Math.min(p,_),F=Math.abs(w-T),D=Math.abs(_-p);return{...g,geometry:{x:V,y:z,w:F,h:D,bounds:{minX:V,minY:z,maxX:V+F,maxY:z+D}}}};function c(g){he.call(this,e,g)}function d(g){he.call(this,e,g)}function f(g){he.call(this,e,g)}return e.$$set=g=>{"shape"in g&&n(0,i=g.shape),"computedStyle"in g&&n(1,s=g.computedStyle),"transform"in g&&n(2,r=g.transform),"viewportScale"in g&&n(3,l=g.viewportScale)},e.$$.update=()=>{e.$$.dirty&1&&n(4,o=i.geometry)},[i,s,r,l,o,a,c,d,f]}class en extends oe{constructor(t){super(),ne(this,t,Ko,qo,Q,{shape:0,computedStyle:1,transform:2,viewportScale:3})}}const tn=new Map([[q.RECTANGLE,en],[q.POLYGON,Zt]]),nn=e=>tn.get(e.type),on=(e,t)=>tn.set(e,t),Jo=e=>({}),sn=e=>({grab:e[0]});function Qo(e){let t,n,o,i;const s=e[7].default,r=Xn(s,e,e[6],sn);return{c(){t=U("g"),r&&r.c(),u(t,"class","a9s-annotation selected")},m(l,a){B(l,t,a),r&&r.m(t,null),n=!0,o||(i=[W(t,"pointerup",e[2]),W(t,"pointermove",e[1])],o=!0)},p(l,[a]){r&&r.p&&(!n||a&64)&&Un(r,s,l,l[6],n?Nn(s,l[6],a,Jo):Vn(l[6]),sn)},i(l){n||(P(r,l),n=!0)},o(l){N(r,l),n=!1},d(l){l&&I(t),r&&r.d(l),o=!1,ae(i)}}}function Zo(e,t,n){let{$$slots:o={},$$scope:i}=t;const s=we();let{shape:r}=t,{editor:l}=t,{transform:a}=t,c,d,f;const g=y=>T=>{c=y,d=a.elementToImage(T.offsetX,T.offsetY),f=r,T.target.setPointerCapture(T.pointerId),s("grab",T)},h=y=>{if(c){const[T,p]=a.elementToImage(y.offsetX,y.offsetY),w=[T-d[0],p-d[1]];n(3,r=l(f,c,w)),s("change",r)}},m=y=>{y.target.releasePointerCapture(y.pointerId),c=void 0,f=r,s("release",y)};return e.$$set=y=>{"shape"in y&&n(3,r=y.shape),"editor"in y&&n(4,l=y.editor),"transform"in y&&n(5,a=y.transform),"$$scope"in y&&n(6,i=y.$$scope)},[g,h,m,r,l,a,i,o]}class dt extends oe{constructor(t){super(),ne(this,t,Zo,Qo,Q,{shape:3,editor:4,transform:5})}}const We=(e,t)=>{const n=typeof t=="function"?t(e):t;if(n){const{fill:o,fillOpacity:i}=n;let s="";return o&&(s+=`fill:${o};stroke:${o};`),s+=`fill-opacity:${i||"0.25"};`,s}};function xo(e,t,n){let o;const i=we();let{annotation:s}=t,{editor:r}=t,{style:l}=t,{target:a}=t,{transform:c}=t,{viewportScale:d}=t,f;return Be(()=>(n(6,f=new r({target:a,props:{shape:s.target.selector,computedStyle:o,transform:c,viewportScale:d}})),f.$on("change",g=>{f.$$set({shape:g.detail}),i("change",g.detail)}),f.$on("grab",g=>i("grab",g.detail)),f.$on("release",g=>i("release",g.detail)),()=>{f.$destroy()})),e.$$set=g=>{"annotation"in g&&n(0,s=g.annotation),"editor"in g&&n(1,r=g.editor),"style"in g&&n(2,l=g.style),"target"in g&&n(3,a=g.target),"transform"in g&&n(4,c=g.transform),"viewportScale"in g&&n(5,d=g.viewportScale)},e.$$.update=()=>{e.$$.dirty&5&&(o=We(s,l)),e.$$.dirty&65&&s&&(f==null||f.$set({shape:s.target.selector})),e.$$.dirty&80&&f&&f.$set({transform:c}),e.$$.dirty&96&&f&&f.$set({viewportScale:d})},[s,r,l,a,c,d,f]}class rn extends oe{constructor(t){super(),ne(this,t,xo,null,Q,{annotation:0,editor:1,style:2,target:3,transform:4,viewportScale:5})}}function $o(e,t,n){const o=we();let{drawingMode:i}=t,{target:s}=t,{tool:r}=t,{transform:l}=t,{viewportScale:a}=t,c;return Be(()=>{const d=s.closest("svg"),f=[],g=(h,m,y)=>{d==null||d.addEventListener(h,m,y),f.push(()=>d==null?void 0:d.removeEventListener(h,m,y))};return n(5,c=new r({target:s,props:{addEventListener:g,drawingMode:i,transform:l,viewportScale:a}})),c.$on("create",h=>o("create",h.detail)),()=>{f.forEach(h=>h()),c.$destroy()}}),e.$$set=d=>{"drawingMode"in d&&n(0,i=d.drawingMode),"target"in d&&n(1,s=d.target),"tool"in d&&n(2,r=d.tool),"transform"in d&&n(3,l=d.transform),"viewportScale"in d&&n(4,a=d.viewportScale)},e.$$.update=()=>{e.$$.dirty&40&&c&&c.$set({transform:l}),e.$$.dirty&48&&c&&c.$set({viewportScale:a})},[i,s,r,l,a,c]}class ln extends oe{constructor(t){super(),ne(this,t,$o,null,Q,{drawingMode:0,target:1,tool:2,transform:3,viewportScale:4})}}function an(e){let t,n;return{c(){t=U("rect"),n=U("rect"),u(t,"class","a9s-outer"),u(t,"x",e[1]),u(t,"y",e[2]),u(t,"width",e[3]),u(t,"height",e[4]),u(n,"class","a9s-inner"),u(n,"x",e[1]),u(n,"y",e[2]),u(n,"width",e[3]),u(n,"height",e[4])},m(o,i){B(o,t,i),B(o,n,i)},p(o,i){i&2&&u(t,"x",o[1]),i&4&&u(t,"y",o[2]),i&8&&u(t,"width",o[3]),i&16&&u(t,"height",o[4]),i&2&&u(n,"x",o[1]),i&4&&u(n,"y",o[2]),i&8&&u(n,"width",o[3]),i&16&&u(n,"height",o[4])},d(o){o&&(I(t),I(n))}}}function ei(e){let t,n=e[0]&&an(e);return{c(){t=U("g"),n&&n.c(),u(t,"class","a9s-annotation a9s-rubberband")},m(o,i){B(o,t,i),n&&n.m(t,null)},p(o,[i]){o[0]?n?n.p(o,i):(n=an(o),n.c(),n.m(t,null)):n&&(n.d(1),n=null)},i:X,o:X,d(o){o&&I(t),n&&n.d()}}}function ti(e,t,n){const o=we();let{addEventListener:i}=t,{drawingMode:s}=t,{transform:r}=t,l,a,c,d,f,g,h;const m=w=>{const _=w;l=performance.now(),s==="drag"&&(n(0,a=r.elementToImage(_.offsetX,_.offsetY)),c=a,n(1,d=a[0]),n(2,f=a[1]),n(3,g=1),n(4,h=1))},y=w=>{const _=w;a&&(c=r.elementToImage(_.offsetX,_.offsetY),n(1,d=Math.min(c[0],a[0])),n(2,f=Math.min(c[1],a[1])),n(3,g=Math.abs(c[0]-a[0])),n(4,h=Math.abs(c[1]-a[1])))},T=w=>{const _=w,b=performance.now()-l;if(s==="click"){if(b>300)return;a?p():(n(0,a=r.elementToImage(_.offsetX,_.offsetY)),c=a,n(1,d=a[0]),n(2,f=a[1]),n(3,g=1),n(4,h=1))}else a&&(b>300||g*h>100?(_.stopPropagation(),p()):(n(0,a=void 0),c=void 0))},p=()=>{if(g*h>15){const w={type:q.RECTANGLE,geometry:{bounds:{minX:d,minY:f,maxX:d+g,maxY:f+h},x:d,y:f,w:g,h}};o("create",w)}n(0,a=void 0),c=void 0};return Be(()=>{i("pointerdown",m),i("pointermove",y),i("pointerup",T,!0)}),e.$$set=w=>{"addEventListener"in w&&n(5,i=w.addEventListener),"drawingMode"in w&&n(6,s=w.drawingMode),"transform"in w&&n(7,r=w.transform)},[a,d,f,g,h,i,s,r]}class cn extends oe{constructor(t){super(),ne(this,t,ti,ei,Q,{addEventListener:5,drawingMode:6,transform:7})}}function ft(e){const t=e.slice(),n=(t[2]?t[0]:[...t[0],t[1]]).map(o=>o.join(",")).join(" ");return t[16]=n,t}function dn(e){let t,n,o,i,s,r=e[2]&&fn(e);return{c(){t=U("polygon"),o=U("polygon"),r&&r.c(),s=se(),u(t,"class","a9s-outer"),u(t,"points",n=e[16]),u(o,"class","a9s-inner"),u(o,"points",i=e[16])},m(l,a){B(l,t,a),B(l,o,a),r&&r.m(l,a),B(l,s,a)},p(l,a){a&7&&n!==(n=l[16])&&u(t,"points",n),a&7&&i!==(i=l[16])&&u(o,"points",i),l[2]?r?r.p(l,a):(r=fn(l),r.c(),r.m(s.parentNode,s)):r&&(r.d(1),r=null)},d(l){l&&(I(t),I(o),I(s)),r&&r.d(l)}}}function fn(e){let t,n,o;return{c(){t=U("rect"),u(t,"class","a9s-corner-handle"),u(t,"x",n=e[0][0][0]-e[3]/2),u(t,"y",o=e[0][0][1]-e[3]/2),u(t,"height",e[3]),u(t,"width",e[3])},m(i,s){B(i,t,s)},p(i,s){s&9&&n!==(n=i[0][0][0]-i[3]/2)&&u(t,"x",n),s&9&&o!==(o=i[0][0][1]-i[3]/2)&&u(t,"y",o),s&8&&u(t,"height",i[3]),s&8&&u(t,"width",i[3])},d(i){i&&I(t)}}}function ni(e){let t,n=e[1]&&dn(ft(e));return{c(){t=U("g"),n&&n.c(),u(t,"class","a9s-annotation a9s-rubberband")},m(o,i){B(o,t,i),n&&n.m(t,null)},p(o,[i]){o[1]?n?n.p(ft(o),i):(n=dn(ft(o)),n.c(),n.m(t,null)):n&&(n.d(1),n=null)},i:X,o:X,d(o){o&&I(t),n&&n.d()}}}const oi=20,ii=1500;function si(e,t,n){let o;const i=we();let{addEventListener:s}=t,{drawingMode:r}=t,{transform:l}=t,{viewportScale:a=1}=t,c,d=[],f,g,h=!1;const m=_=>{const b=_,{timeStamp:Y,offsetX:V,offsetY:z}=b;if(c={timeStamp:Y,offsetX:V,offsetY:z},r==="drag"&&d.length===0){const F=l.elementToImage(b.offsetX,b.offsetY);d.push(F),n(1,f=F)}},y=_=>{const b=_;if(g&&clearTimeout(g),d.length>0){if(n(1,f=l.elementToImage(b.offsetX,b.offsetY)),d.length>2){const Y=je(f,d[0])*a;n(2,h=Y<oi)}b.pointerType==="touch"&&(g=setTimeout(()=>{p()},ii))}},T=_=>{const b=_;if(g&&clearTimeout(g),r==="click"){const Y=b.timeStamp-c.timeStamp,V=je([c.offsetX,c.offsetY],[b.offsetX,b.offsetY]);if(Y>300||V>15)return;if(h)w();else if(d.length===0){const z=l.elementToImage(b.offsetX,b.offsetY);d.push(z),n(1,f=z)}else d.push(f)}else{if(d.length===1&&je(d[0],f)<=4){n(0,d=[]),n(1,f=void 0);return}b.stopImmediatePropagation(),h?w():d.push(f)}},p=()=>{if(!f)return;const _=[...d,f],b={type:q.POLYGON,geometry:{bounds:Pe(_),points:_}};Fe(b)>4&&(n(0,d=[]),n(1,f=void 0),i("create",b))},w=()=>{const _={type:q.POLYGON,geometry:{bounds:Pe(d),points:[...d]}};n(0,d=[]),n(1,f=void 0),i("create",_)};return Be(()=>{s("pointerdown",m,!0),s("pointermove",y),s("pointerup",T,!0),s("dblclick",p,!0)}),e.$$set=_=>{"addEventListener"in _&&n(4,s=_.addEventListener),"drawingMode"in _&&n(5,r=_.drawingMode),"transform"in _&&n(6,l=_.transform),"viewportScale"in _&&n(7,a=_.viewportScale)},e.$$.update=()=>{e.$$.dirty&128&&n(3,o=10/a)},[d,f,h,o,s,r,l,a]}class ri extends oe{constructor(t){super(),ne(this,t,si,ni,Q,{addEventListener:4,drawingMode:5,transform:6,viewportScale:7})}}const ut=new Map([["rectangle",{tool:cn}],["polygon",{tool:ri}]]),ht=()=>[...ut.keys()],gt=e=>ut.get(e),un=(e,t,n)=>ut.set(e,{tool:t,opts:n});function li(e){let t,n,o,i,s;return{c(){t=U("g"),n=U("ellipse"),i=U("ellipse"),u(n,"class","a9s-outer"),u(n,"style",o=e[1]?"display:none;":void 0),u(n,"cx",e[2]),u(n,"cy",e[3]),u(n,"rx",e[4]),u(n,"ry",e[5]),u(i,"class","a9s-inner"),u(i,"style",e[1]),u(i,"cx",e[2]),u(i,"cy",e[3]),u(i,"rx",e[4]),u(i,"ry",e[5]),u(t,"data-id",s=e[0].id)},m(r,l){B(r,t,l),ce(t,n),ce(t,i)},p(r,[l]){l&2&&o!==(o=r[1]?"display:none;":void 0)&&u(n,"style",o),l&2&&u(i,"style",r[1]),l&1&&s!==(s=r[0].id)&&u(t,"data-id",s)},i:X,o:X,d(r){r&&I(t)}}}function ai(e,t,n){let o,{annotation:i}=t,{geom:s}=t,{style:r}=t;const{cx:l,cy:a,rx:c,ry:d}=s;return e.$$set=f=>{"annotation"in f&&n(0,i=f.annotation),"geom"in f&&n(6,s=f.geom),"style"in f&&n(7,r=f.style)},e.$$.update=()=>{e.$$.dirty&129&&n(1,o=We(i,r))},[i,o,l,a,c,d,s,r]}class ci extends oe{constructor(t){super(),ne(this,t,ai,li,Q,{annotation:0,geom:6,style:7})}}function di(e){let t,n,o,i,s;return{c(){t=U("g"),n=U("polygon"),i=U("polygon"),u(n,"class","a9s-outer"),u(n,"style",o=e[1]?"display:none;":void 0),u(n,"points",e[2].map(fi).join(" ")),u(i,"class","a9s-inner"),u(i,"style",e[1]),u(i,"points",e[2].map(ui).join(" ")),u(t,"data-id",s=e[0].id)},m(r,l){B(r,t,l),ce(t,n),ce(t,i)},p(r,[l]){l&2&&o!==(o=r[1]?"display:none;":void 0)&&u(n,"style",o),l&2&&u(i,"style",r[1]),l&1&&s!==(s=r[0].id)&&u(t,"data-id",s)},i:X,o:X,d(r){r&&I(t)}}}const fi=e=>e.join(","),ui=e=>e.join(",");function hi(e,t,n){let o,{annotation:i}=t,{geom:s}=t,{style:r}=t;const{points:l}=s;return e.$$set=a=>{"annotation"in a&&n(0,i=a.annotation),"geom"in a&&n(3,s=a.geom),"style"in a&&n(4,r=a.style)},e.$$.update=()=>{e.$$.dirty&17&&n(1,o=We(i,r))},[i,o,l,s,r]}class gi extends oe{constructor(t){super(),ne(this,t,hi,di,Q,{annotation:0,geom:3,style:4})}}function mi(e){let t,n,o,i,s;return{c(){t=U("g"),n=U("rect"),i=U("rect"),u(n,"class","a9s-outer"),u(n,"style",o=e[5]?"display:none;":void 0),u(n,"x",e[4]),u(n,"y",e[3]),u(n,"width",e[2]),u(n,"height",e[1]),u(i,"class","a9s-inner"),u(i,"style",e[5]),u(i,"x",e[4]),u(i,"y",e[3]),u(i,"width",e[2]),u(i,"height",e[1]),u(t,"data-id",s=e[0].id)},m(r,l){B(r,t,l),ce(t,n),ce(t,i)},p(r,[l]){l&32&&o!==(o=r[5]?"display:none;":void 0)&&u(n,"style",o),l&16&&u(n,"x",r[4]),l&8&&u(n,"y",r[3]),l&4&&u(n,"width",r[2]),l&2&&u(n,"height",r[1]),l&32&&u(i,"style",r[5]),l&16&&u(i,"x",r[4]),l&8&&u(i,"y",r[3]),l&4&&u(i,"width",r[2]),l&2&&u(i,"height",r[1]),l&1&&s!==(s=r[0].id)&&u(t,"data-id",s)},i:X,o:X,d(r){r&&I(t)}}}function pi(e,t,n){let o,i,s,r,l,{annotation:a}=t,{geom:c}=t,{style:d}=t;return e.$$set=f=>{"annotation"in f&&n(0,a=f.annotation),"geom"in f&&n(6,c=f.geom),"style"in f&&n(7,d=f.style)},e.$$.update=()=>{e.$$.dirty&129&&n(5,o=We(a,d)),e.$$.dirty&64&&n(4,{x:i,y:s,w:r,h:l}=c,i,(n(3,s),n(6,c)),(n(2,r),n(6,c)),(n(1,l),n(6,c)))},[a,l,r,s,i,o,c,d]}class yi extends oe{constructor(t){super(),ne(this,t,pi,mi,Q,{annotation:0,geom:6,style:7})}}const _i={elementToImage:(e,t)=>[e,t]},hn=e=>({elementToImage:(t,n)=>{const o=e.getBoundingClientRect(),i=e.createSVGPoint();i.x=t+o.x,i.y=n+o.y;const{x:s,y:r}=i.matrixTransform(e.getScreenCTM().inverse());return[s,r]}}),wi=250,gn=(e,t)=>{const n=we();let o;return{onPointerDown:()=>o=performance.now(),onPointerUp:r=>{if(performance.now()-o<wi){const{x:a,y:c}=mt(r,e),d=t.getAt(a,c);d?n("click",{originalEvent:r,annotation:d}):n("click",{originalEvent:r})}}}},mt=(e,t)=>{const n=t.createSVGPoint(),o=t.getBoundingClientRect(),i=e.clientX-o.x,s=e.clientY-o.y,{left:r,top:l}=t.getBoundingClientRect();return n.x=i+r,n.y=s+l,n.matrixTransform(t.getScreenCTM().inverse())},{Boolean:mn}=Gn;function pn(e,t,n){const o=e.slice();o[34]=t[n];const i=o[23](o[34].target.selector);return o[35]=i,o}function yn(e,t,n){const o=e.slice();return o[38]=t[n],o}function pt(e){const t=e.slice(),n=t[38].target.selector;return t[41]=n,t}function _n(e){let t=e[38].id,n,o,i=wn(e);return{c(){i.c(),n=se()},m(s,r){i.m(s,r),B(s,n,r),o=!0},p(s,r){r[0]&32768&&Q(t,t=s[38].id)?(re(),N(i,1,1,X),le(),i=wn(s),i.c(),P(i,1),i.m(n.parentNode,n)):i.p(s,r)},i(s){o||(P(i),o=!0)},o(s){N(i),o=!1},d(s){s&&I(n),i.d(s)}}}function bi(e){let t,n;return t=new gi({props:{annotation:e[38],geom:e[41].geometry,style:e[1]}}),{c(){te(t.$$.fragment)},m(o,i){Z(t,o,i),n=!0},p(o,i){const s={};i[0]&32768&&(s.annotation=o[38]),i[0]&32768&&(s.geom=o[41].geometry),i[0]&2&&(s.style=o[1]),t.$set(s)},i(o){n||(P(t.$$.fragment,o),n=!0)},o(o){N(t.$$.fragment,o),n=!1},d(o){x(t,o)}}}function Ei(e){let t,n;return t=new yi({props:{annotation:e[38],geom:e[41].geometry,style:e[1]}}),{c(){te(t.$$.fragment)},m(o,i){Z(t,o,i),n=!0},p(o,i){const s={};i[0]&32768&&(s.annotation=o[38]),i[0]&32768&&(s.geom=o[41].geometry),i[0]&2&&(s.style=o[1]),t.$set(s)},i(o){n||(P(t.$$.fragment,o),n=!0)},o(o){N(t.$$.fragment,o),n=!1},d(o){x(t,o)}}}function Ai(e){var o;let t,n;return t=new ci({props:{annotation:e[38],geom:(o=e[41])==null?void 0:o.geometry,style:e[1]}}),{c(){te(t.$$.fragment)},m(i,s){Z(t,i,s),n=!0},p(i,s){var l;const r={};s[0]&32768&&(r.annotation=i[38]),s[0]&32768&&(r.geom=(l=i[41])==null?void 0:l.geometry),s[0]&2&&(r.style=i[1]),t.$set(r)},i(i){n||(P(t.$$.fragment,i),n=!0)},o(i){N(t.$$.fragment,i),n=!1},d(i){x(t,i)}}}function wn(e){let t,n,o,i;const s=[Ai,Ei,bi],r=[];function l(a,c){var d,f,g;return((d=a[41])==null?void 0:d.type)===q.ELLIPSE?0:((f=a[41])==null?void 0:f.type)===q.RECTANGLE?1:((g=a[41])==null?void 0:g.type)===q.POLYGON?2:-1}return~(t=l(e))&&(n=r[t]=s[t](e)),{c(){n&&n.c(),o=se()},m(a,c){~t&&r[t].m(a,c),B(a,o,c),i=!0},p(a,c){let d=t;t=l(a),t===d?~t&&r[t].p(a,c):(n&&(re(),N(r[d],1,1,()=>{r[d]=null}),le()),~t?(n=r[t],n?n.p(a,c):(n=r[t]=s[t](a),n.c()),P(n,1),n.m(o.parentNode,o)):n=null)},i(a){i||(P(n),i=!0)},o(a){N(n),i=!1},d(a){a&&I(o),~t&&r[t].d(a)}}}function bn(e){let t=!e[8](e[38]),n,o,i=t&&_n(pt(e));return{c(){i&&i.c(),n=se()},m(s,r){i&&i.m(s,r),B(s,n,r),o=!0},p(s,r){r[0]&33024&&(t=!s[8](s[38])),t?i?(i.p(pt(s),r),r[0]&33024&&P(i,1)):(i=_n(pt(s)),i.c(),P(i,1),i.m(n.parentNode,n)):i&&(re(),N(i,1,1,()=>{i=null}),le())},i(s){o||(P(i),o=!0)},o(s){N(i),o=!1},d(s){s&&I(n),i&&i.d(s)}}}function En(e){let t,n,o,i;const s=[Ti,Si],r=[];function l(a,c){return a[7]?0:a[13]&&a[0]?1:-1}return~(t=l(e))&&(n=r[t]=s[t](e)),{c(){n&&n.c(),o=se()},m(a,c){~t&&r[t].m(a,c),B(a,o,c),i=!0},p(a,c){let d=t;t=l(a),t===d?~t&&r[t].p(a,c):(n&&(re(),N(r[d],1,1,()=>{r[d]=null}),le()),~t?(n=r[t],n?n.p(a,c):(n=r[t]=s[t](a),n.c()),P(n,1),n.m(o.parentNode,o)):n=null)},i(a){i||(P(n),i=!0)},o(a){N(n),i=!1},d(a){a&&I(o),~t&&r[t].d(a)}}}function Si(e){let t=e[2],n,o,i=An(e);return{c(){i.c(),n=se()},m(s,r){i.m(s,r),B(s,n,r),o=!0},p(s,r){r[0]&4&&Q(t,t=s[2])?(re(),N(i,1,1,X),le(),i=An(s),i.c(),P(i,1),i.m(n.parentNode,n)):i.p(s,r)},i(s){o||(P(i),o=!0)},o(s){N(i),o=!1},d(s){s&&I(n),i.d(s)}}}function Ti(e){let t,n,o=Se(e[7]),i=[];for(let r=0;r<o.length;r+=1)i[r]=vn(pn(e,o,r));const s=r=>N(i[r],1,1,()=>{i[r]=null});return{c(){for(let r=0;r<i.length;r+=1)i[r].c();t=se()},m(r,l){for(let a=0;a<i.length;a+=1)i[a]&&i[a].m(r,l);B(r,t,l),n=!0},p(r,l){if(l[0]&10553506){o=Se(r[7]);let a;for(a=0;a<o.length;a+=1){const c=pn(r,o,a);i[a]?(i[a].p(c,l),P(i[a],1)):(i[a]=vn(c),i[a].c(),P(i[a],1),i[a].m(t.parentNode,t))}for(re(),a=o.length;a<i.length;a+=1)s(a);le()}},i(r){if(!n){for(let l=0;l<o.length;l+=1)P(i[l]);n=!0}},o(r){i=i.filter(mn);for(let l=0;l<i.length;l+=1)N(i[l]);n=!1},d(r){r&&I(t),et(i,r)}}}function An(e){let t,n;return t=new ln({props:{target:e[5],tool:e[13],drawingMode:e[12],transform:e[11],viewportScale:e[16]}}),t.$on("create",e[20]),{c(){te(t.$$.fragment)},m(o,i){Z(t,o,i),n=!0},p(o,i){const s={};i[0]&32&&(s.target=o[5]),i[0]&8192&&(s.tool=o[13]),i[0]&4096&&(s.drawingMode=o[12]),i[0]&2048&&(s.transform=o[11]),i[0]&65536&&(s.viewportScale=o[16]),t.$set(s)},i(o){n||(P(t.$$.fragment,o),n=!0)},o(o){N(t.$$.fragment,o),n=!1},d(o){x(t,o)}}}function Sn(e){let t=e[34].id,n,o,i=Tn(e);return{c(){i.c(),n=se()},m(s,r){i.m(s,r),B(s,n,r),o=!0},p(s,r){r[0]&128&&Q(t,t=s[34].id)?(re(),N(i,1,1,X),le(),i=Tn(s),i.c(),P(i,1),i.m(n.parentNode,n)):i.p(s,r)},i(s){o||(P(i),o=!0)},o(s){N(i),o=!1},d(s){s&&I(n),i.d(s)}}}function Tn(e){let t,n;return t=new rn({props:{target:e[5],editor:e[23](e[34].target.selector),annotation:e[34],style:e[1],transform:e[11],viewportScale:e[16]}}),t.$on("change",function(){K(e[21](e[34]))&&e[21](e[34]).apply(this,arguments)}),{c(){te(t.$$.fragment)},m(o,i){Z(t,o,i),n=!0},p(o,i){e=o;const s={};i[0]&32&&(s.target=e[5]),i[0]&128&&(s.editor=e[23](e[34].target.selector)),i[0]&128&&(s.annotation=e[34]),i[0]&2&&(s.style=e[1]),i[0]&2048&&(s.transform=e[11]),i[0]&65536&&(s.viewportScale=e[16]),t.$set(s)},i(o){n||(P(t.$$.fragment,o),n=!0)},o(o){N(t.$$.fragment,o),n=!1},d(o){x(t,o)}}}function vn(e){let t,n,o=e[35]&&Sn(e);return{c(){o&&o.c(),t=se()},m(i,s){o&&o.m(i,s),B(i,t,s),n=!0},p(i,s){i[35]?o?(o.p(i,s),s[0]&128&&P(o,1)):(o=Sn(i),o.c(),P(o,1),o.m(t.parentNode,t)):o&&(re(),N(o,1,1,()=>{o=null}),le())},i(i){n||(P(o),n=!0)},o(i){N(o),n=!1},d(i){i&&I(t),o&&o.d(i)}}}function vi(e){let t,n,o,i,s,r,l=Se(e[15]),a=[];for(let f=0;f<l.length;f+=1)a[f]=bn(yn(e,l,f));const c=f=>N(a[f],1,1,()=>{a[f]=null});let d=e[5]&&En(e);return{c(){t=U("svg"),n=U("g");for(let f=0;f<a.length;f+=1)a[f].c();o=U("g"),d&&d.c(),u(o,"class","drawing"),u(t,"class","a9s-annotationlayer"),me(t,"drawing",e[13]),me(t,"hidden",!e[3]),me(t,"hover",e[14])},m(f,g){B(f,t,g),ce(t,n);for(let h=0;h<a.length;h+=1)a[h]&&a[h].m(n,null);ce(t,o),d&&d.m(o,null),e[30](o),e[31](t),i=!0,s||(r=[W(t,"pointerup",function(){K(e[9])&&e[9].apply(this,arguments)}),W(t,"pointerdown",function(){K(e[10])&&e[10].apply(this,arguments)}),W(t,"pointermove",e[22])],s=!0)},p(f,g){if(e=f,g[0]&33026){l=Se(e[15]);let h;for(h=0;h<l.length;h+=1){const m=yn(e,l,h);a[h]?(a[h].p(m,g),P(a[h],1)):(a[h]=bn(m),a[h].c(),P(a[h],1),a[h].m(n,null))}for(re(),h=l.length;h<a.length;h+=1)c(h);le()}e[5]?d?(d.p(e,g),g[0]&32&&P(d,1)):(d=En(e),d.c(),P(d,1),d.m(o,null)):d&&(re(),N(d,1,1,()=>{d=null}),le()),(!i||g[0]&8192)&&me(t,"drawing",e[13]),(!i||g[0]&8)&&me(t,"hidden",!e[3]),(!i||g[0]&16384)&&me(t,"hover",e[14])},i(f){if(!i){for(let g=0;g<l.length;g+=1)P(a[g]);P(d),i=!0}},o(f){a=a.filter(mn);for(let g=0;g<a.length;g+=1)N(a[g]);N(d),i=!1},d(f){f&&I(t),et(a,f),d&&d.d(),e[30](null),e[31](null),s=!1,ae(r)}}}function Mi(e,t,n){let o,i,s,r,l,a,c,d,f,g,h,m=X,y=()=>(m(),m=St(E,k=>n(16,h=k)),E);e.$$.on_destroy.push(()=>m());let{drawingEnabled:T}=t,{image:p}=t,{preferredDrawingMode:w}=t,{state:_}=t,{style:b=void 0}=t,{toolName:Y=ht()[0]}=t,{user:V}=t,{visible:z=!0}=t,F,D,E;Be(()=>y(n(6,E=xt(p,D))));const{hover:A,selection:S,store:v}=_;$e(e,A,k=>n(14,d=k)),$e(e,S,k=>n(29,f=k)),$e(e,v,k=>n(15,g=k));let C,G;const $=k=>{C&&v.unobserve(C);const j=k.filter(({editable:O})=>O).map(({id:O})=>O);j.length>0?(n(7,G=j.map(O=>v.getAnnotation(O)).filter(Boolean)),C=O=>{const{updated:ee}=O.changes;n(7,G=ee==null?void 0:ee.map(pe=>pe.newValue))},v.observe(C,{annotations:j})):n(7,G=void 0)},Re=k=>{const j=Ut(),O={id:j,bodies:[],target:{annotation:j,selector:k.detail,creator:V,created:new Date}};v.addAnnotation(O),S.setSelected(O.id)},de=k=>j=>{var R;const{target:O}=k,ee=10*60*1e3,pe=((R=O.creator)==null?void 0:R.id)!==V.id||!O.created||new Date().getTime()-O.created.getTime()>ee;v.updateTarget({...O,selector:j.detail,created:pe?O.created:new Date,updated:pe?new Date:void 0,updatedBy:pe?V:void 0})},Xe=k=>{const{x:j,y:O}=mt(k,D),ee=v.getAt(j,O);ee?d!==ee.id&&A.set(ee.id):A.set(void 0)},fe=k=>nn(k);function Ne(k){Ve[k?"unshift":"push"](()=>{F=k,n(5,F)})}function ue(k){Ve[k?"unshift":"push"](()=>{D=k,n(4,D)})}return e.$$set=k=>{"drawingEnabled"in k&&n(0,T=k.drawingEnabled),"image"in k&&n(24,p=k.image),"preferredDrawingMode"in k&&n(25,w=k.preferredDrawingMode),"state"in k&&n(26,_=k.state),"style"in k&&n(1,b=k.style),"toolName"in k&&n(2,Y=k.toolName),"user"in k&&n(27,V=k.user),"visible"in k&&n(3,z=k.visible)},e.$$.update=()=>{e.$$.dirty[0]&4&&n(13,{tool:o,opts:i}=gt(Y)||{tool:void 0,opts:void 0},o,(n(28,i),n(2,Y))),e.$$.dirty[0]&301989888&&n(12,s=(i==null?void 0:i.drawingMode)||w),e.$$.dirty[0]&16&&n(11,r=hn(D)),e.$$.dirty[0]&16&&n(10,{onPointerDown:l,onPointerUp:a}=gn(D,v),l,(n(9,a),n(4,D))),e.$$.dirty[0]&536870912&&n(8,c=k=>f.selected.find(j=>j.id===k.id&&j.editable)),e.$$.dirty[0]&536870912&&$(f.selected)},[T,b,Y,z,D,F,E,G,c,a,l,r,s,o,d,g,h,A,S,v,Re,de,Xe,fe,p,w,_,V,i,f,Ne,ue]}class Mn extends oe{constructor(t){super(),ne(this,t,Mi,vi,Q,{drawingEnabled:0,image:24,preferredDrawingMode:25,state:26,style:1,toolName:2,user:27,visible:3},null,[-1,-1])}}function Li(e,t,n,o,i){Ln(e,t,n||0,o||e.length-1,i||ki)}function Ln(e,t,n,o,i){for(;o>n;){if(o-n>600){var s=o-n+1,r=t-n+1,l=Math.log(s),a=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*a*(s-a)/s)*(r-s/2<0?-1:1),d=Math.max(n,Math.floor(t-r*a/s+c)),f=Math.min(o,Math.floor(t+(s-r)*a/s+c));Ln(e,t,d,f,i)}var g=e[t],h=n,m=o;for(Ye(e,n,t),i(e[o],g)>0&&Ye(e,n,o);h<m;){for(Ye(e,h,m),h++,m--;i(e[h],g)<0;)h++;for(;i(e[m],g)>0;)m--}i(e[n],g)===0?Ye(e,n,m):(m++,Ye(e,m,o)),m<=t&&(n=m+1),t<=m&&(o=m-1)}}function Ye(e,t,n){var o=e[t];e[t]=e[n],e[n]=o}function ki(e,t){return e<t?-1:e>t?1:0}class Ii{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(t){let n=this.data;const o=[];if(!Ke(t,n))return o;const i=this.toBBox,s=[];for(;n;){for(let r=0;r<n.children.length;r++){const l=n.children[r],a=n.leaf?i(l):l;Ke(t,a)&&(n.leaf?o.push(l):_t(t,a)?this._all(l,o):s.push(l))}n=s.pop()}return o}collides(t){let n=this.data;if(!Ke(t,n))return!1;const o=[];for(;n;){for(let i=0;i<n.children.length;i++){const s=n.children[i],r=n.leaf?this.toBBox(s):s;if(Ke(t,r)){if(n.leaf||_t(t,r))return!0;o.push(s)}}n=o.pop()}return!1}load(t){if(!(t&&t.length))return this;if(t.length<this._minEntries){for(let o=0;o<t.length;o++)this.insert(t[o]);return this}let n=this._build(t.slice(),0,t.length-1,0);if(!this.data.children.length)this.data=n;else if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){const o=this.data;this.data=n,n=o}this._insert(n,this.data.height-n.height-1,!0)}return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=ke([]),this}remove(t,n){if(!t)return this;let o=this.data;const i=this.toBBox(t),s=[],r=[];let l,a,c;for(;o||s.length;){if(o||(o=s.pop(),a=s[s.length-1],l=r.pop(),c=!0),o.leaf){const d=Oi(t,o.children,n);if(d!==-1)return o.children.splice(d,1),s.push(o),this._condense(s),this}!c&&!o.leaf&&_t(o,i)?(s.push(o),r.push(l),l=0,a=o,o=o.children[0]):a?(l++,o=a.children[l],c=!1):o=null}return this}toBBox(t){return t}compareMinX(t,n){return t.minX-n.minX}compareMinY(t,n){return t.minY-n.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,n){const o=[];for(;t;)t.leaf?n.push(...t.children):o.push(...t.children),t=o.pop();return n}_build(t,n,o,i){const s=o-n+1;let r=this._maxEntries,l;if(s<=r)return l=ke(t.slice(n,o+1)),Le(l,this.toBBox),l;i||(i=Math.ceil(Math.log(s)/Math.log(r)),r=Math.ceil(s/Math.pow(r,i-1))),l=ke([]),l.leaf=!1,l.height=i;const a=Math.ceil(s/r),c=a*Math.ceil(Math.sqrt(r));kn(t,n,o,c,this.compareMinX);for(let d=n;d<=o;d+=c){const f=Math.min(d+c-1,o);kn(t,d,f,a,this.compareMinY);for(let g=d;g<=f;g+=a){const h=Math.min(g+a-1,f);l.children.push(this._build(t,g,h,i-1))}}return Le(l,this.toBBox),l}_chooseSubtree(t,n,o,i){for(;i.push(n),!(n.leaf||i.length-1===o);){let s=1/0,r=1/0,l;for(let a=0;a<n.children.length;a++){const c=n.children[a],d=yt(c),f=Yi(t,c)-d;f<r?(r=f,s=d<s?d:s,l=c):f===r&&d<s&&(s=d,l=c)}n=l||n.children[0]}return n}_insert(t,n,o){const i=o?t:this.toBBox(t),s=[],r=this._chooseSubtree(i,this.data,n,s);for(r.children.push(t),Ce(r,i);n>=0&&s[n].children.length>this._maxEntries;)this._split(s,n),n--;this._adjustParentBBoxes(i,s,n)}_split(t,n){const o=t[n],i=o.children.length,s=this._minEntries;this._chooseSplitAxis(o,s,i);const r=this._chooseSplitIndex(o,s,i),l=ke(o.children.splice(r,o.children.length-r));l.height=o.height,l.leaf=o.leaf,Le(o,this.toBBox),Le(l,this.toBBox),n?t[n-1].children.push(l):this._splitRoot(o,l)}_splitRoot(t,n){this.data=ke([t,n]),this.data.height=t.height+1,this.data.leaf=!1,Le(this.data,this.toBBox)}_chooseSplitIndex(t,n,o){let i,s=1/0,r=1/0;for(let l=n;l<=o-n;l++){const a=De(t,0,l,this.toBBox),c=De(t,l,o,this.toBBox),d=Di(a,c),f=yt(a)+yt(c);d<s?(s=d,i=l,r=f<r?f:r):d===s&&f<r&&(r=f,i=l)}return i||o-n}_chooseSplitAxis(t,n,o){const i=t.leaf?this.compareMinX:Bi,s=t.leaf?this.compareMinY:Pi,r=this._allDistMargin(t,n,o,i),l=this._allDistMargin(t,n,o,s);r<l&&t.children.sort(i)}_allDistMargin(t,n,o,i){t.children.sort(i);const s=this.toBBox,r=De(t,0,n,s),l=De(t,o-n,o,s);let a=qe(r)+qe(l);for(let c=n;c<o-n;c++){const d=t.children[c];Ce(r,t.leaf?s(d):d),a+=qe(r)}for(let c=o-n-1;c>=n;c--){const d=t.children[c];Ce(l,t.leaf?s(d):d),a+=qe(l)}return a}_adjustParentBBoxes(t,n,o){for(let i=o;i>=0;i--)Ce(n[i],t)}_condense(t){for(let n=t.length-1,o;n>=0;n--)t[n].children.length===0?n>0?(o=t[n-1].children,o.splice(o.indexOf(t[n]),1)):this.clear():Le(t[n],this.toBBox)}}function Oi(e,t,n){if(!n)return t.indexOf(e);for(let o=0;o<t.length;o++)if(n(e,t[o]))return o;return-1}function Le(e,t){De(e,0,e.children.length,t,e)}function De(e,t,n,o,i){i||(i=ke(null)),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(let s=t;s<n;s++){const r=e.children[s];Ce(i,e.leaf?o(r):r)}return i}function Ce(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function Bi(e,t){return e.minX-t.minX}function Pi(e,t){return e.minY-t.minY}function yt(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function qe(e){return e.maxX-e.minX+(e.maxY-e.minY)}function Yi(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function Di(e,t){const n=Math.max(e.minX,t.minX),o=Math.max(e.minY,t.minY),i=Math.min(e.maxX,t.maxX),s=Math.min(e.maxY,t.maxY);return Math.max(0,i-n)*Math.max(0,s-o)}function _t(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function Ke(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function ke(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function kn(e,t,n,o,i){const s=[t,n];for(;s.length;){if(n=s.pop(),t=s.pop(),n-t<=o)continue;const r=t+Math.ceil((n-t)/o/2)*o;Li(e,r,t,n,i),s.push(t,r,r,n)}}const Ci=()=>{const e=new Ii,t=new Map,n=()=>[...t.values()],o=()=>{e.clear(),t.clear()},i=f=>{const{minX:g,minY:h,maxX:m,maxY:y}=f.selector.geometry.bounds,T={minX:g,minY:h,maxX:m,maxY:y,target:f};e.insert(T),t.set(f.annotation,T)},s=f=>{const g=t.get(f.annotation);g&&e.remove(g),t.delete(f.annotation)};return{all:n,clear:o,getAt:(f,g)=>{const m=e.search({minX:f,minY:g,maxX:f,maxY:g}).map(y=>y.target).filter(y=>y.selector.type===q.RECTANGLE||Ot(y.selector,f,g));if(m.length>0)return m.sort((y,T)=>Fe(y.selector)-Fe(T.selector)),m[0]},getIntersecting:(f,g,h,m)=>e.search({minX:f,minY:g,maxX:f+h,maxY:g+m}).map(y=>y.target),insert:i,remove:s,set:(f,g=!0)=>{g&&o();const h=f.reduce((m,y)=>{var T,p;if((p=(T=y.selector)==null?void 0:T.geometry)!=null&&p.bounds){const{minX:w,minY:_,maxX:b,maxY:Y}=y.selector.geometry.bounds;return[...m,{minX:w,minY:_,maxX:b,maxY:Y,target:y}]}else return m},[]);h.forEach(m=>t.set(m.target.annotation,m)),e.load(h)},size:()=>e.all().length,update:(f,g)=>{s(f),i(g)}}},In=e=>{const t=_o(),n=Ci(),o=ao(t,e.userSelectAction),i=lo(t),s=So();return t.observe(({changes:a})=>{n.set((a.created||[]).map(c=>c.target),!1),(a.deleted||[]).forEach(c=>n.remove(c.target)),(a.updated||[]).forEach(({oldValue:c,newValue:d})=>n.update(c.target,d.target))}),{store:{...t,getAt:(a,c)=>{const d=n.getAt(a,c);return d?t.getAnnotation(d.annotation):void 0},getIntersecting:(a,c,d,f)=>n.getIntersecting(a,c,d,f).map(g=>t.getAnnotation(g.annotation))},selection:o,hover:i,viewport:s}},On=e=>{const t=In(e);return{...t,store:wo(t.store)}},Bn=e=>{let t,n;if(e.nodeName==="CANVAS")t=e,n=t.getContext("2d",{willReadFrequently:!0});else{const i=e;t=document.createElement("canvas"),t.width=i.width,t.height=i.height,n=t.getContext("2d",{willReadFrequently:!0}),n.drawImage(i,0,0,i.width,i.height)}let o=0;for(let i=1;i<10;i++)for(let s=1;s<10;s++){const r=Math.round(s*t.width/10),l=Math.round(i*t.height/10),a=n.getImageData(r,l,1,1).data,c=(.299*a[0]+.587*a[1]+.114*a[2])/255;o+=c}return o/81},Pn=e=>{const t=Bn(e),n=t>.6?"dark":"light";return console.log(`[Annotorious] Image brightness: ${t.toFixed(1)}. Setting ${n} theme.`),n},wt=(e,t,n)=>t.setAttribute("data-theme",n==="auto"?Pn(e):n),Yn=(e,t)=>({...e,drawingEnabled:e.drawingEnabled===void 0?t.drawingEnabled:e.drawingEnabled,drawingMode:e.drawingMode||t.drawingMode,userSelectAction:e.userSelectAction||t.userSelectAction,theme:e.theme||t.theme}),Dn=navigator.userAgent.indexOf("Mac OS X")!==-1,Cn=(e,t)=>{const n=t||document,o=r=>{const l=r;l.key==="z"&&l.ctrlKey?e.undo():l.key==="y"&&l.ctrlKey&&e.redo()},i=r=>{const l=r;l.key==="z"&&l.metaKey&&(l.shiftKey?e.redo():e.undo())},s=()=>{Dn?n.removeEventListener("keydown",i):n.removeEventListener("keydown",o)};return Dn?n.addEventListener("keydown",i):n.addEventListener("keydown",o),{destroy:s}},Ri=(e,t={})=>{if(!e)throw"Missing argument: image";const n=typeof e=="string"?document.getElementById(e):e,o=Yn(t,{drawingEnabled:!0,drawingMode:"drag",userSelectAction:Gt.EDIT,theme:"light"}),i=On(o),{selection:s,store:r}=i,l=Ao(r),a=To(i,l,o.adapter,o.autoSave),c=document.createElement("DIV");c.style.position="relative",c.style.display="inline-block",n.style.display="block",n.parentNode.insertBefore(c,n),c.appendChild(n);const d=Cn(l);let f=Po();wt(n,c,o.theme);const g=new Mn({target:c,props:{drawingEnabled:!!o.drawingEnabled,image:n,preferredDrawingMode:o.drawingMode,state:i,style:o.style,user:f}});g.$on("click",D=>{const{originalEvent:E,annotation:A}=D.detail;A?s.userSelect(A.id,E):s.isEmpty()||s.clear()});const h=Mo(i,l,o.adapter),m=()=>{g.$destroy(),c.parentNode.insertBefore(n,c),c.parentNode.removeChild(c),d.destroy(),l.destroy()},y=()=>f,T=(D,E,A)=>un(D,E,A),p=(D,E)=>on(D,E),w=D=>{if(!gt(D))throw`No drawing tool named ${D}`;g.$set({toolName:D})},_=D=>g.$set({drawingEnabled:D}),b=D=>{console.warn("Filter not implemented yet")},Y=D=>g.$set({style:D}),V=D=>wt(n,c,D),z=D=>{f=D,g.$set({user:D})},F=D=>g.$set({visible:D});return{...h,destroy:m,getUser:y,listDrawingTools:ht,on:a.on,off:a.off,registerDrawingTool:T,registerShapeEditor:p,setDrawingEnabled:_,setDrawingTool:w,setFilter:b,setStyle:Y,setTheme:V,setUser:z,setVisible:F,element:c,state:i}};L.Editor=dt,L.EditorMount=rn,L.Handle=Me,L.IdentityTransform=_i,L.PolygonEditor=Zt,L.RectangleEditor=en,L.RectangleUtil=Bt,L.RubberbandRectangle=cn,L.SVGAnnotationLayer=Mn,L.ShapeType=q,L.ToolMount=ln,L.W3CImageFormat=Ro,L.addEventListeners=gn,L.boundsFromPoints=Pe,L.computeArea=Fe,L.createImageAnnotator=Ri,L.createImageAnnotatorState=In,L.createSVGTransform=hn,L.createSvelteImageAnnotatorState=On,L.detectTheme=Pn,L.distance=je,L.enableResponsive=xt,L.fillDefaults=Yn,L.getEditor=nn,L.getSVGPoint=mt,L.getTool=gt,L.initKeyboardCommands=Cn,L.intersects=Ot,L.isTouch=$t,L.listDrawingTools=ht,L.parseFragmentSelector=Pt,L.parseSVGSelector=Rt,L.parseW3CImageAnnotation=jt,L.registerEditor=on,L.registerShapeUtil=ze,L.registerTool=un,L.sampleBrightness=Bn,L.serializeFragmentSelector=Yt,L.serializeSVGSelector=Xt,L.serializeW3CImageAnnotation=Wt,L.setTheme=wt,Object.defineProperty(L,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=annotorious.js.map