@annotorious/svelte 3.0.0-rc.21 → 3.0.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/annotorious-svelte.es.js +14 -17
  2. package/dist/annotorious-svelte.es.js.map +1 -1
  3. package/dist/annotorious-svelte.es10.js +119 -23
  4. package/dist/annotorious-svelte.es10.js.map +1 -1
  5. package/dist/annotorious-svelte.es11.js +2 -111
  6. package/dist/annotorious-svelte.es11.js.map +1 -1
  7. package/dist/annotorious-svelte.es12.js +19 -2
  8. package/dist/annotorious-svelte.es12.js.map +1 -1
  9. package/dist/annotorious-svelte.es13.js +4 -2
  10. package/dist/annotorious-svelte.es13.js.map +1 -1
  11. package/dist/annotorious-svelte.es14.js +6 -27434
  12. package/dist/annotorious-svelte.es14.js.map +1 -1
  13. package/dist/annotorious-svelte.es15.js +6 -119
  14. package/dist/annotorious-svelte.es15.js.map +1 -1
  15. package/dist/annotorious-svelte.es2.js +25 -30
  16. package/dist/annotorious-svelte.es2.js.map +1 -1
  17. package/dist/annotorious-svelte.es3.js +2 -95
  18. package/dist/annotorious-svelte.es3.js.map +1 -1
  19. package/dist/annotorious-svelte.es4.js +8 -4238
  20. package/dist/annotorious-svelte.es4.js.map +1 -1
  21. package/dist/annotorious-svelte.es5.js +1263 -86
  22. package/dist/annotorious-svelte.es5.js.map +1 -1
  23. package/dist/annotorious-svelte.es6.js +86 -104
  24. package/dist/annotorious-svelte.es6.js.map +1 -1
  25. package/dist/annotorious-svelte.es7.js +118 -92
  26. package/dist/annotorious-svelte.es7.js.map +1 -1
  27. package/dist/annotorious-svelte.es8.js +303 -31
  28. package/dist/annotorious-svelte.es8.js.map +1 -1
  29. package/dist/annotorious-svelte.es9.js +20115 -21
  30. package/dist/annotorious-svelte.es9.js.map +1 -1
  31. package/dist/index.d.ts +8 -11
  32. package/dist/index.d.ts.map +1 -1
  33. package/package.json +11 -22
  34. package/src/index.ts +21 -40
  35. package/vite.config.js +0 -1
  36. package/dist/annotorious-svelte.es16.js +0 -2
  37. package/dist/annotorious-svelte.es16.js.map +0 -1
  38. package/dist/annotorious-svelte.es17.js +0 -59
  39. package/dist/annotorious-svelte.es17.js.map +0 -1
  40. /package/dist/{annotorious-svelte.css → style.css} +0 -0
@@ -1,130 +1,112 @@
1
- import { safe_not_equal as H, noop as v, component_subscribe as I, action_destroyer as T, is_function as X, run_all as Y } from "./annotorious-svelte.es7.js";
2
- import { empty as q, insert as P, detach as S, element as x, text as G, attr as L, append as R, listen as _, set_data as U } from "./annotorious-svelte.es8.js";
3
- import { onMount as z } from "./annotorious-svelte.es10.js";
4
- import { SvelteComponent as B, init as F } from "./annotorious-svelte.es11.js";
5
- import "./annotorious-svelte.es12.js";
6
- import { draggable as J } from "./annotorious-svelte.es15.js";
7
- import b from "openseadragon";
8
- import "./annotorious-svelte.es16.js";
9
- function w(n) {
10
- let o, e = (
11
- /*$selection*/
12
- n[0].selected.map(y).join(", ") + ""
13
- ), t, s, r, d;
1
+ import { SvelteComponent as g, init as b, safe_not_equal as h, empty as k, insert as w, transition_in as l, transition_out as c, check_outros as A, detach as O, create_slot as v, update_slot_base as C, get_all_dirty_from_scope as T, get_slot_changes as q, group_outros as y, setContext as m } from "./annotorious-svelte.es8.js";
2
+ import { toSvelteStore as D } from "@annotorious/core";
3
+ import { createOSDAnnotator as N } from "./annotorious-svelte.es9.js";
4
+ function d(s) {
5
+ let n;
6
+ const o = (
7
+ /*#slots*/
8
+ s[4].default
9
+ ), t = v(
10
+ o,
11
+ s,
12
+ /*$$scope*/
13
+ s[3],
14
+ null
15
+ );
14
16
  return {
15
17
  c() {
16
- o = x("div"), t = G(e), L(o, "class", "a9s-popup a9s-osd-popup svelte-1xuxeat");
18
+ t && t.c();
19
+ },
20
+ m(e, i) {
21
+ t && t.m(e, i), n = !0;
17
22
  },
18
- m(a, l) {
19
- P(a, o, l), R(o, t), r || (d = [
20
- T(s = J.call(null, o, {
21
- position: { x: (
22
- /*left*/
23
- n[1]
24
- ), y: (
25
- /*top*/
26
- n[2]
27
- ) }
28
- })),
29
- _(
23
+ p(e, i) {
24
+ t && t.p && (!n || i & /*$$scope*/
25
+ 8) && C(
26
+ t,
27
+ o,
28
+ e,
29
+ /*$$scope*/
30
+ e[3],
31
+ n ? q(
30
32
  o,
31
- "neodrag:start",
32
- /*onDragStart*/
33
- n[4]
33
+ /*$$scope*/
34
+ e[3],
35
+ i,
36
+ null
37
+ ) : T(
38
+ /*$$scope*/
39
+ e[3]
34
40
  ),
35
- _(
36
- o,
37
- "neodrag:end",
38
- /*onDragEnd*/
39
- n[5]
40
- )
41
- ], r = !0);
41
+ null
42
+ );
43
+ },
44
+ i(e) {
45
+ n || (l(t, e), n = !0);
42
46
  },
43
- p(a, l) {
44
- l & /*$selection*/
45
- 1 && e !== (e = /*$selection*/
46
- a[0].selected.map(y).join(", ") + "") && U(t, e), s && X(s.update) && l & /*left, top*/
47
- 6 && s.update.call(null, {
48
- position: { x: (
49
- /*left*/
50
- a[1]
51
- ), y: (
52
- /*top*/
53
- a[2]
54
- ) }
55
- });
47
+ o(e) {
48
+ c(t, e), n = !1;
56
49
  },
57
- d(a) {
58
- a && S(o), r = !1, Y(d);
50
+ d(e) {
51
+ t && t.d(e);
59
52
  }
60
53
  };
61
54
  }
62
- function K(n) {
63
- let o, e = (
64
- /*$selection*/
65
- n[0] && w(n)
55
+ function j(s) {
56
+ let n, o, t = (
57
+ /*viewer*/
58
+ s[0] && d(s)
66
59
  );
67
60
  return {
68
61
  c() {
69
- e && e.c(), o = q();
62
+ t && t.c(), n = k();
70
63
  },
71
- m(t, s) {
72
- e && e.m(t, s), P(t, o, s);
64
+ m(e, i) {
65
+ t && t.m(e, i), w(e, n, i), o = !0;
73
66
  },
74
- p(t, [s]) {
75
- /*$selection*/
76
- t[0] ? e ? e.p(t, s) : (e = w(t), e.c(), e.m(o.parentNode, o)) : e && (e.d(1), e = null);
67
+ p(e, [i]) {
68
+ /*viewer*/
69
+ e[0] ? t ? (t.p(e, i), i & /*viewer*/
70
+ 1 && l(t, 1)) : (t = d(e), t.c(), l(t, 1), t.m(n.parentNode, n)) : t && (y(), c(t, 1, 1, () => {
71
+ t = null;
72
+ }), A());
77
73
  },
78
- i: v,
79
- o: v,
80
- d(t) {
81
- t && S(o), e && e.d(t);
74
+ i(e) {
75
+ o || (l(t), o = !0);
76
+ },
77
+ o(e) {
78
+ c(t), o = !1;
79
+ },
80
+ d(e) {
81
+ t && t.d(e), e && O(n);
82
82
  }
83
83
  };
84
84
  }
85
- const y = (n) => n.id;
86
- function Q(n, o, e) {
87
- let t, { state: s } = o, { viewer: r } = o, d, a, l = !1, p;
88
- const { selection: m, store: u } = s;
89
- I(n, m, (i) => e(0, t = i));
90
- const g = (i) => {
91
- var c;
92
- return ((c = i.selected) == null ? void 0 : c.length) > 0;
93
- }, E = () => {
94
- l = !0, r.setMouseNavEnabled(!1);
95
- }, D = () => {
96
- r.setMouseNavEnabled(!0);
97
- }, N = () => {
98
- p && u.unobserve(p), g(t) && (l = !1, f(t), p = (i) => {
99
- l || f(t);
100
- }, u.observe(p, {
101
- annotations: t.selected.map((i) => i.id)
102
- }));
103
- }, f = (i) => {
104
- const c = i.selected[0].id, h = u.getAnnotation(c), { minX: k, minY: C, maxX: M, maxY: O } = h.target.selector.geometry.bounds, V = 14, j = r.viewport.imageToViewerElementCoordinates(new b.Point(k, C)), A = r.viewport.imageToViewerElementCoordinates(new b.Point(M, O));
105
- e(1, d = A.x + V), e(2, a = j.y);
85
+ function z(s, n, o) {
86
+ let { $$slots: t = {}, $$scope: e } = n, { viewer: i } = n, { opts: f = {} } = n, { anno: a = void 0 } = n;
87
+ const S = (r) => {
88
+ if (r) {
89
+ const u = N(r, f), p = D(u.state.store), _ = {
90
+ ...u,
91
+ state: { ...u.state, store: p }
92
+ };
93
+ m("anno", _), m("viewer", r), o(1, a = _);
94
+ }
106
95
  };
107
- return z(() => {
108
- const i = () => {
109
- g(t) && !l && f(t);
110
- };
111
- return r.addHandler("update-viewport", i), () => {
112
- r.removeHandler("update-viewport", i);
113
- };
114
- }), n.$$set = (i) => {
115
- "state" in i && e(6, s = i.state), "viewer" in i && e(7, r = i.viewer);
116
- }, n.$$.update = () => {
117
- n.$$.dirty & /*$selection*/
118
- 1 && N();
119
- }, [t, d, a, m, E, D, s, r];
96
+ return s.$$set = (r) => {
97
+ "viewer" in r && o(0, i = r.viewer), "opts" in r && o(2, f = r.opts), "anno" in r && o(1, a = r.anno), "$$scope" in r && o(3, e = r.$$scope);
98
+ }, s.$$.update = () => {
99
+ s.$$.dirty & /*viewer*/
100
+ 1 && S(i);
101
+ }, [i, a, f, e, t];
120
102
  }
121
- class W extends B {
122
- constructor(o) {
123
- super(), F(this, o, Q, K, H, { state: 6, viewer: 7 });
103
+ class B extends g {
104
+ constructor(n) {
105
+ super(), b(this, n, z, j, h, { viewer: 0, opts: 2, anno: 1 });
124
106
  }
125
107
  }
126
- const re = W;
108
+ const H = B;
127
109
  export {
128
- re as default
110
+ H as default
129
111
  };
130
112
  //# sourceMappingURL=annotorious-svelte.es6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"annotorious-svelte.es6.js","sources":["../src/osd/OpenSeadragonPopup.svelte"],"sourcesContent":["<script lang=\"ts\">\n import { onMount } from 'svelte';\n import { draggable } from '@neodrag/svelte';\n import OpenSeadragon from 'openseadragon';\n import type { Selection, StoreChangeEvent, SvelteAnnotatorState } from '@annotorious/core';\n import type { ImageAnnotation } from '@annotorious/annotorious';\n\n export let state: SvelteAnnotatorState<ImageAnnotation>;\n\n export let viewer: OpenSeadragon.Viewer;\n\n let left: number;\n\n let top: number;\n\n let dragged = false;\n\n let storeObserver: (event: StoreChangeEvent<ImageAnnotation>) => void;\n\n const { selection, store } = state; \n\n const isSelected = (selection: Selection) => selection.selected?.length > 0;\n\n const onDragStart = () => {\n dragged = true;\n viewer.setMouseNavEnabled(false);\n }\n\n const onDragEnd = () => {\n viewer.setMouseNavEnabled(true);\n }\n\n $: $selection, onSelect();\n\n const onSelect = () => {\n if (storeObserver)\n store.unobserve(storeObserver);\n\n if (isSelected($selection)) {\n dragged = false;\n\n setPosition($selection);\n\n storeObserver = (event: StoreChangeEvent<ImageAnnotation>) => {\n if (!dragged)\n setPosition($selection);\n }\n\n store.observe(storeObserver, { annotations: $selection.selected.map(s => s.id) });\n }\n }\n\n const setPosition = (selection: Selection) => {\n // Note: this demo popup only supports a single selection\n const selectedId = selection.selected[0].id;\n const annotation = store.getAnnotation(selectedId);\n\n const { minX, minY, maxX, maxY } = annotation.target.selector.geometry.bounds;\n\n const PADDING = 14;\n\n const topLeft = viewer.viewport.imageToViewerElementCoordinates(new OpenSeadragon.Point(minX, minY));\n const bottomRight = viewer.viewport.imageToViewerElementCoordinates(new OpenSeadragon.Point(maxX, maxY));\n\n // [left, top] = defaultStrategy(annotation, lastPointerDown);\n left = bottomRight.x + PADDING;\n top = topLeft.y;\n }\n\n onMount(() => {\n const onUpdateViewport = () => {\n if (isSelected($selection) && !dragged)\n setPosition($selection);\n }\n\n viewer.addHandler('update-viewport', onUpdateViewport);\n\n return () => {\n viewer.removeHandler('update-viewport', onUpdateViewport);\n }\n });\n</script>\n\n{#if $selection}\n <div \n class=\"a9s-popup a9s-osd-popup\"\n use:draggable={{ position: { x: left, y: top }}}\n on:neodrag:start={onDragStart}\n on:neodrag:end={onDragEnd}>\n {$selection.selected.map(s => s.id).join(', ')}\n </div>\n{/if}\n\n<style>\n .a9s-osd-popup {\n background-color: #fff;\n border: 1px solid #a2a2a2;\n height: 250px;\n position: absolute;\n width: 400px;\n z-index: 1;\n }\n</style>"],"names":["t_value","ctx","func","insert","target","div","anchor","dirty","set_data","create_if_block","s","state","$$props","viewer","left","top","dragged","storeObserver","selection","store","isSelected","_a","onDragStart","onDragEnd","onSelect","$selection","setPosition","event","selectedId","annotation","minX","minY","maxX","maxY","PADDING","topLeft","OpenSeadragon","bottomRight","$$invalidate","onMount","onUpdateViewport"],"mappings":";;;;;;;;;SAyFKA;AAAA;AAAA,IAAAC,KAAW,SAAS,IAAeC,CAAA,EAAA,KAAK,IAAI,IAAA;AAAA;;;;;;AAL/C,MAAAC,EAMKC,GAAAC,GAAAC,CAAA;;UAJc,YAAY;AAAA;AAAA,YAAGL,EAAM,CAAA;AAAA,aAAA;AAAA;AAAA,YAAGA,EAAG,CAAA;AAAA,YAAA;AAAA;;;;;UAC1BA,EAAW,CAAA;AAAA,QAAA;AAAA;;;;UACbA,EAAS,CAAA;AAAA,QAAA;AAAA;;;AACxB,MAAAM;AAAA,MAAA,KAAAP,OAAAA;AAAA,MAAAC,KAAW,SAAS,IAAeC,CAAA,EAAA,KAAK,IAAI,IAAA,OAAAM,EAAA,GAAAR,CAAA;;QAH5B,YAAY;AAAA;AAAA,UAAGC,EAAM,CAAA;AAAA,WAAA;AAAA;AAAA,UAAGA,EAAG,CAAA;AAAA,UAAA;AAAA;;;;;;;;;;IAH3CA,EAAU,CAAA,KAAAQ,EAAAR,CAAA;AAAA;;;;;;;;;;MAAVA,EAAU,CAAA;;;;;;;;;UAMc,CAAAS,MAAKA,EAAE;;WAlFvB,OAAAC,EAA4C,IAAAC,KAE5C,QAAAC,EAA4B,IAAAD,GAEnCE,GAEAC,GAEAC,IAAU,IAEVC;UAEI,WAAAC,GAAW,OAAAC,EAAK,IAAKR;;QAEvBS,IAAc,CAAAF,MAAyB;;AAAA,aAAAG,IAAAH,EAAU,aAAV,gBAAAG,EAAoB,UAAS;AAAA,KAEpEC,IAAW,MAAA;AACf,IAAAN,IAAU,IACVH,EAAO,mBAAmB,EAAK;AAAA,KAG3BU,IAAS,MAAA;AACb,IAAAV,EAAO,mBAAmB,EAAI;AAAA,KAK1BW,IAAQ,MAAA;AACR,IAAAP,KACFE,EAAM,UAAUF,CAAa,GAE3BG,EAAWK,CAAU,MACvBT,IAAU,IAEVU,EAAYD,CAAU,GAEtBR,IAAiB,CAAAU,MAAwC;MAClDX,KACHU,EAAYD,CAAU;AAAA,OAG1BN,EAAM,QAAQF,GAAa;AAAA,MAAI,aAAaQ,EAAW,SAAS,IAAI,CAAAf,MAAKA,EAAE,EAAE;AAAA;KAI3EgB,IAAe,CAAAR,MAAoB;AAEjC,UAAAU,IAAaV,EAAU,SAAS,CAAC,EAAE,IACnCW,IAAaV,EAAM,cAAcS,CAAU,GAEzC,EAAA,MAAAE,GAAM,MAAAC,GAAM,MAAAC,GAAM,MAAAC,EAAI,IAAKJ,EAAW,OAAO,SAAS,SAAS,QAEjEK,IAAU,IAEVC,IAAUtB,EAAO,SAAS,gCAAoC,IAAAuB,EAAc,MAAMN,GAAMC,CAAI,CAAA,GAC5FM,IAAcxB,EAAO,SAAS,gCAAoC,IAAAuB,EAAc,MAAMJ,GAAMC,CAAI,CAAA;AAGtG,IAAAK,EAAA,GAAAxB,IAAOuB,EAAY,IAAIH,CAAO,QAC9BnB,IAAMoB,EAAQ,CAAC;AAAA;AAGjB,SAAAI,EAAO,MAAA;UACCC,IAAgB,MAAA;AAChB,MAAApB,EAAWK,CAAU,KAAA,CAAMT,KAC7BU,EAAYD,CAAU;AAAA;AAG1B,WAAAZ,EAAO,WAAW,mBAAmB2B,CAAgB;AAGnD,MAAA3B,EAAO,cAAc,mBAAmB2B,CAAgB;AAAA;;;;;SA9C7ChB,EAAQ;AAAA;;;;;;;;"}
1
+ {"version":3,"file":"annotorious-svelte.es6.js","sources":["../src/osd/OpenSeadragonAnnotator.svelte"],"sourcesContent":["<script lang=\"ts\">\n import { setContext } from 'svelte';\n import { SvelteAnnotator, SvelteAnnotatorState, toSvelteStore } from '@annotorious/core';\n import { createOSDAnnotator, ImageAnnotation } from '@annotorious/openseadragon';\n import type OpenSeadragon from 'openseadragon';\n\n /** props **/\n export let viewer: OpenSeadragon.Viewer;\n export let opts = {};\n export let anno: SvelteAnnotator<ImageAnnotation> = undefined;\n\n $: init(viewer);\n\n const init = (viewer: OpenSeadragon.Viewer) => {\n if (viewer) {\n const annotator = createOSDAnnotator(viewer, opts);\n\n // Wrap the store for Svelte reactivity\n const svelteStore = toSvelteStore(annotator.state.store);\n\n const shim = {\n ...annotator,\n state: {\n ...annotator.state,\n store: svelteStore\n } as SvelteAnnotatorState<ImageAnnotation>\n } as SvelteAnnotator<ImageAnnotation>\n\n setContext('anno', shim);\n setContext('viewer', viewer);\n\n anno = shim;\n }\n }\n</script>\n\n{#if viewer}\n <slot />\n{/if}\n"],"names":["ctx","create_if_block","viewer","$$props","opts","anno","init","annotator","createOSDAnnotator","svelteStore","toSvelteStore","shim","setContext","$$invalidate"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoCKA,EAAM,CAAA,KAAAC,EAAAD,CAAA;AAAA;;;;;;;;;;MAANA,EAAM,CAAA;;;;;;;;;;;;;;;;;6CA7BE,QAAAE,EAA4B,IAAAC,KAC5B,MAAAC,IAAI,GAAA,IAAAD,GACJ,EAAA,MAAAE,IAAyC,OAAS,IAAAF;AAIvD,QAAAG,IAAQ,CAAAJ,MAA4B;QACpCA,GAAM;AACF,YAAAK,IAAYC,EAAmBN,GAAQE,CAAI,GAG3CK,IAAcC,EAAcH,EAAU,MAAM,KAAK,GAEjDI,IAAI;AAAA,WACLJ;AAAA,QACH,YACKA,EAAU,OACb,OAAOE,EAAA;AAAA;AAIX,MAAAG,EAAW,QAAQD,CAAI,GACvBC,EAAW,UAAUV,CAAM,GAE3BW,EAAA,GAAAR,IAAOM,CAAI;AAAA;;;;;;SApBZL,EAAKJ,CAAM;AAAA;;;;;;;;"}
@@ -1,100 +1,126 @@
1
- function i() {
1
+ import { SvelteComponent as H, init as I, safe_not_equal as T, empty as X, insert as P, noop as v, detach as S, component_subscribe as Y, onMount as q, element as x, text as G, attr as L, append as R, action_destroyer as U, listen as _, set_data as z, is_function as B, run_all as F } from "./annotorious-svelte.es8.js";
2
+ import { draggable as J } from "./annotorious-svelte.es10.js";
3
+ import b from "openseadragon";
4
+ import "./annotorious-svelte.es11.js";
5
+ function w(n) {
6
+ let o, e = (
7
+ /*$selection*/
8
+ n[0].selected.map(y).join(", ") + ""
9
+ ), t, s, a, d;
10
+ return {
11
+ c() {
12
+ o = x("div"), t = G(e), L(o, "class", "a9s-popup a9s-osd-popup svelte-1xuxeat");
13
+ },
14
+ m(r, l) {
15
+ P(r, o, l), R(o, t), a || (d = [
16
+ U(s = J.call(null, o, {
17
+ position: { x: (
18
+ /*left*/
19
+ n[1]
20
+ ), y: (
21
+ /*top*/
22
+ n[2]
23
+ ) }
24
+ })),
25
+ _(
26
+ o,
27
+ "neodrag:start",
28
+ /*onDragStart*/
29
+ n[4]
30
+ ),
31
+ _(
32
+ o,
33
+ "neodrag:end",
34
+ /*onDragEnd*/
35
+ n[5]
36
+ )
37
+ ], a = !0);
38
+ },
39
+ p(r, l) {
40
+ l & /*$selection*/
41
+ 1 && e !== (e = /*$selection*/
42
+ r[0].selected.map(y).join(", ") + "") && z(t, e), s && B(s.update) && l & /*left, top*/
43
+ 6 && s.update.call(null, {
44
+ position: { x: (
45
+ /*left*/
46
+ r[1]
47
+ ), y: (
48
+ /*top*/
49
+ r[2]
50
+ ) }
51
+ });
52
+ },
53
+ d(r) {
54
+ r && S(o), a = !1, F(d);
55
+ }
56
+ };
2
57
  }
3
- function l(t, n) {
4
- for (const e in n)
5
- t[e] = n[e];
6
- return (
7
- /** @type {T & S} */
8
- t
58
+ function K(n) {
59
+ let o, e = (
60
+ /*$selection*/
61
+ n[0] && w(n)
9
62
  );
10
- }
11
- function _(t) {
12
- return t();
13
- }
14
- function d() {
15
- return /* @__PURE__ */ Object.create(null);
16
- }
17
- function g(t) {
18
- t.forEach(_);
19
- }
20
- function y(t) {
21
- return typeof t == "function";
22
- }
23
- function h(t, n) {
24
- return t != t ? n == n : t !== n || t && typeof t == "object" || typeof t == "function";
25
- }
26
- function x(t) {
27
- return Object.keys(t).length === 0;
28
- }
29
- function b(t, ...n) {
30
- if (t == null) {
31
- for (const r of n)
32
- r(void 0);
33
- return i;
34
- }
35
- const e = t.subscribe(...n);
36
- return e.unsubscribe ? () => e.unsubscribe() : e;
37
- }
38
- function a(t, n, e) {
39
- t.$$.on_destroy.push(b(n, e));
40
- }
41
- function p(t, n, e, r) {
42
- if (t) {
43
- const u = s(t, n, e, r);
44
- return t[0](u);
45
- }
46
- }
47
- function s(t, n, e, r) {
48
- return t[1] && r ? l(e.ctx.slice(), t[1](r(n))) : e.ctx;
49
- }
50
- function j(t, n, e, r) {
51
- if (t[2] && r) {
52
- const u = t[2](r(e));
53
- if (n.dirty === void 0)
54
- return u;
55
- if (typeof u == "object") {
56
- const c = [], f = Math.max(n.dirty.length, u.length);
57
- for (let o = 0; o < f; o += 1)
58
- c[o] = n.dirty[o] | u[o];
59
- return c;
63
+ return {
64
+ c() {
65
+ e && e.c(), o = X();
66
+ },
67
+ m(t, s) {
68
+ e && e.m(t, s), P(t, o, s);
69
+ },
70
+ p(t, [s]) {
71
+ /*$selection*/
72
+ t[0] ? e ? e.p(t, s) : (e = w(t), e.c(), e.m(o.parentNode, o)) : e && (e.d(1), e = null);
73
+ },
74
+ i: v,
75
+ o: v,
76
+ d(t) {
77
+ e && e.d(t), t && S(o);
60
78
  }
61
- return n.dirty | u;
79
+ };
80
+ }
81
+ const y = (n) => n.id;
82
+ function Q(n, o, e) {
83
+ let t, { state: s } = o, { viewer: a } = o, d, r, l = !1, c;
84
+ const { selection: m, store: u } = s;
85
+ Y(n, m, (i) => e(0, t = i));
86
+ const g = (i) => {
87
+ var p;
88
+ return ((p = i.selected) == null ? void 0 : p.length) > 0;
89
+ }, E = () => {
90
+ l = !0, a.setMouseNavEnabled(!1);
91
+ }, D = () => {
92
+ a.setMouseNavEnabled(!0);
93
+ }, N = () => {
94
+ c && u.unobserve(c), g(t) && (l = !1, f(t), c = (i) => {
95
+ l || f(t);
96
+ }, u.observe(c, {
97
+ annotations: t.selected.map((i) => i.id)
98
+ }));
99
+ }, f = (i) => {
100
+ const p = i.selected[0].id, h = u.getAnnotation(p), { minX: k, minY: C, maxX: M, maxY: O } = h.target.selector.geometry.bounds, V = 14, j = a.viewport.imageToViewerElementCoordinates(new b.Point(k, C)), A = a.viewport.imageToViewerElementCoordinates(new b.Point(M, O));
101
+ e(1, d = A.x + V), e(2, r = j.y);
102
+ };
103
+ return q(() => {
104
+ const i = () => {
105
+ g(t) && !l && f(t);
106
+ };
107
+ return a.addHandler("update-viewport", i), () => {
108
+ a.removeHandler("update-viewport", i);
109
+ };
110
+ }), n.$$set = (i) => {
111
+ "state" in i && e(6, s = i.state), "viewer" in i && e(7, a = i.viewer);
112
+ }, n.$$.update = () => {
113
+ n.$$.dirty & /*$selection*/
114
+ 1 && N();
115
+ }, [t, d, r, m, E, D, s, a];
116
+ }
117
+ class W extends H {
118
+ constructor(o) {
119
+ super(), I(this, o, Q, K, T, { state: 6, viewer: 7 });
62
120
  }
63
- return n.dirty;
64
- }
65
- function m(t, n, e, r, u, c) {
66
- if (u) {
67
- const f = s(n, e, r, c);
68
- t.p(f, u);
69
- }
70
- }
71
- function k(t) {
72
- if (t.ctx.length > 32) {
73
- const n = [], e = t.ctx.length / 32;
74
- for (let r = 0; r < e; r++)
75
- n[r] = -1;
76
- return n;
77
- }
78
- return -1;
79
- }
80
- function O(t) {
81
- return t && y(t.destroy) ? t.destroy : i;
82
121
  }
122
+ const oe = W;
83
123
  export {
84
- O as action_destroyer,
85
- l as assign,
86
- d as blank_object,
87
- a as component_subscribe,
88
- p as create_slot,
89
- k as get_all_dirty_from_scope,
90
- j as get_slot_changes,
91
- x as is_empty,
92
- y as is_function,
93
- i as noop,
94
- _ as run,
95
- g as run_all,
96
- h as safe_not_equal,
97
- b as subscribe,
98
- m as update_slot_base
124
+ oe as default
99
125
  };
100
126
  //# sourceMappingURL=annotorious-svelte.es7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"annotorious-svelte.es7.js","sources":["../../../node_modules/svelte/src/runtime/internal/utils.js"],"sourcesContent":["/** @returns {void} */\nexport function noop() {}\n\nexport const identity = (x) => x;\n\n/**\n * @template T\n * @template S\n * @param {T} tar\n * @param {S} src\n * @returns {T & S}\n */\nexport function assign(tar, src) {\n\t// @ts-ignore\n\tfor (const k in src) tar[k] = src[k];\n\treturn /** @type {T & S} */ (tar);\n}\n\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\n/**\n * @param {any} value\n * @returns {value is PromiseLike<any>}\n */\nexport function is_promise(value) {\n\treturn (\n\t\t!!value &&\n\t\t(typeof value === 'object' || typeof value === 'function') &&\n\t\ttypeof (/** @type {any} */ (value).then) === 'function'\n\t);\n}\n\n/** @returns {void} */\nexport function add_location(element, file, line, column, char) {\n\telement.__svelte_meta = {\n\t\tloc: { file, line, column, char }\n\t};\n}\n\nexport function run(fn) {\n\treturn fn();\n}\n\nexport function blank_object() {\n\treturn Object.create(null);\n}\n\n/**\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function run_all(fns) {\n\tfns.forEach(run);\n}\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nexport function is_function(thing) {\n\treturn typeof thing === 'function';\n}\n\n/** @returns {boolean} */\nexport function safe_not_equal(a, b) {\n\treturn a != a ? b == b : a !== b || (a && typeof a === 'object') || typeof a === 'function';\n}\n\nlet src_url_equal_anchor;\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nexport function src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\tif (!src_url_equal_anchor) {\n\t\tsrc_url_equal_anchor = document.createElement('a');\n\t}\n\t// This is actually faster than doing URL(..).href\n\tsrc_url_equal_anchor.href = url;\n\treturn element_src === src_url_equal_anchor.href;\n}\n\n/** @param {string} srcset */\nfunction split_srcset(srcset) {\n\treturn srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));\n}\n\n/**\n * @param {HTMLSourceElement | HTMLImageElement} element_srcset\n * @param {string | undefined | null} srcset\n * @returns {boolean}\n */\nexport function srcset_url_equal(element_srcset, srcset) {\n\tconst element_urls = split_srcset(element_srcset.srcset);\n\tconst urls = split_srcset(srcset || '');\n\n\treturn (\n\t\turls.length === element_urls.length &&\n\t\turls.every(\n\t\t\t([url, width], i) =>\n\t\t\t\twidth === element_urls[i][1] &&\n\t\t\t\t// We need to test both ways because Vite will create an a full URL with\n\t\t\t\t// `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the\n\t\t\t\t// relative URLs inside srcset are not automatically resolved to absolute URLs by\n\t\t\t\t// browsers (in contrast to img.src). This means both SSR and DOM code could\n\t\t\t\t// contain relative or absolute URLs.\n\t\t\t\t(src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))\n\t\t)\n\t);\n}\n\n/** @returns {boolean} */\nexport function not_equal(a, b) {\n\treturn a != a ? b == b : a !== b;\n}\n\n/** @returns {boolean} */\nexport function is_empty(obj) {\n\treturn Object.keys(obj).length === 0;\n}\n\n/** @returns {void} */\nexport function validate_store(store, name) {\n\tif (store != null && typeof store.subscribe !== 'function') {\n\t\tthrow new Error(`'${name}' is not a store with a 'subscribe' method`);\n\t}\n}\n\nexport function subscribe(store, ...callbacks) {\n\tif (store == null) {\n\t\tfor (const callback of callbacks) {\n\t\t\tcallback(undefined);\n\t\t}\n\t\treturn noop;\n\t}\n\tconst unsub = store.subscribe(...callbacks);\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n *\n * https://svelte.dev/docs/svelte-store#get\n * @template T\n * @param {import('../store/public.js').Readable<T>} store\n * @returns {T}\n */\nexport function get_store_value(store) {\n\tlet value;\n\tsubscribe(store, (_) => (value = _))();\n\treturn value;\n}\n\n/** @returns {void} */\nexport function component_subscribe(component, store, callback) {\n\tcomponent.$$.on_destroy.push(subscribe(store, callback));\n}\n\nexport function create_slot(definition, ctx, $$scope, fn) {\n\tif (definition) {\n\t\tconst slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n\t\treturn definition[0](slot_ctx);\n\t}\n}\n\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n\treturn definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;\n}\n\nexport function get_slot_changes(definition, $$scope, dirty, fn) {\n\tif (definition[2] && fn) {\n\t\tconst lets = definition[2](fn(dirty));\n\t\tif ($$scope.dirty === undefined) {\n\t\t\treturn lets;\n\t\t}\n\t\tif (typeof lets === 'object') {\n\t\t\tconst merged = [];\n\t\t\tconst len = Math.max($$scope.dirty.length, lets.length);\n\t\t\tfor (let i = 0; i < len; i += 1) {\n\t\t\t\tmerged[i] = $$scope.dirty[i] | lets[i];\n\t\t\t}\n\t\t\treturn merged;\n\t\t}\n\t\treturn $$scope.dirty | lets;\n\t}\n\treturn $$scope.dirty;\n}\n\n/** @returns {void} */\nexport function update_slot_base(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tslot_changes,\n\tget_slot_context_fn\n) {\n\tif (slot_changes) {\n\t\tconst slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n\t\tslot.p(slot_context, slot_changes);\n\t}\n}\n\n/** @returns {void} */\nexport function update_slot(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tdirty,\n\tget_slot_changes_fn,\n\tget_slot_context_fn\n) {\n\tconst slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n\tupdate_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\n\n/** @returns {any[] | -1} */\nexport function get_all_dirty_from_scope($$scope) {\n\tif ($$scope.ctx.length > 32) {\n\t\tconst dirty = [];\n\t\tconst length = $$scope.ctx.length / 32;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tdirty[i] = -1;\n\t\t}\n\t\treturn dirty;\n\t}\n\treturn -1;\n}\n\n/** @returns {{}} */\nexport function exclude_internal_props(props) {\n\tconst result = {};\n\tfor (const k in props) if (k[0] !== '$') result[k] = props[k];\n\treturn result;\n}\n\n/** @returns {{}} */\nexport function compute_rest_props(props, keys) {\n\tconst rest = {};\n\tkeys = new Set(keys);\n\tfor (const k in props) if (!keys.has(k) && k[0] !== '$') rest[k] = props[k];\n\treturn rest;\n}\n\n/** @returns {{}} */\nexport function compute_slots(slots) {\n\tconst result = {};\n\tfor (const key in slots) {\n\t\tresult[key] = true;\n\t}\n\treturn result;\n}\n\n/** @returns {(this: any, ...args: any[]) => void} */\nexport function once(fn) {\n\tlet ran = false;\n\treturn function (...args) {\n\t\tif (ran) return;\n\t\tran = true;\n\t\tfn.call(this, ...args);\n\t};\n}\n\nexport function null_to_empty(value) {\n\treturn value == null ? '' : value;\n}\n\nexport function set_store_value(store, ret, value) {\n\tstore.set(value);\n\treturn ret;\n}\n\nexport const has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\n\nexport function action_destroyer(action_result) {\n\treturn action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\n/** @param {number | string} value\n * @returns {[number, string]}\n */\nexport function split_css_unit(value) {\n\tconst split = typeof value === 'string' && value.match(/^\\s*(-?[\\d.]+)([^\\s]*)\\s*$/);\n\treturn split ? [parseFloat(split[1]), split[2] || 'px'] : [/** @type {number} */ (value), 'px'];\n}\n\nexport const contenteditable_truthy_values = ['', true, 1, 'true', 'contenteditable'];\n"],"names":["noop","assign","tar","src","k","run","fn","blank_object","run_all","fns","is_function","thing","safe_not_equal","a","b","is_empty","obj","subscribe","store","callbacks","callback","unsub","component_subscribe","component","create_slot","definition","ctx","$$scope","slot_ctx","get_slot_context","get_slot_changes","dirty","lets","merged","len","i","update_slot_base","slot","slot_definition","slot_changes","get_slot_context_fn","slot_context","get_all_dirty_from_scope","length","action_destroyer","action_result"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"annotorious-svelte.es7.js","sources":["../src/osd/OpenSeadragonPopup.svelte"],"sourcesContent":["<script lang=\"ts\">\n import { onMount } from 'svelte';\n import { draggable } from '@neodrag/svelte';\n import OpenSeadragon from 'openseadragon';\n import type { Selection, StoreChangeEvent, SvelteAnnotatorState } from '@annotorious/core';\n import type { ImageAnnotation } from '@annotorious/annotorious';\n\n export let state: SvelteAnnotatorState<ImageAnnotation>;\n\n export let viewer: OpenSeadragon.Viewer;\n\n let left: number;\n\n let top: number;\n\n let dragged = false;\n\n let storeObserver: (event: StoreChangeEvent<ImageAnnotation>) => void;\n\n const { selection, store } = state; \n\n const isSelected = (selection: Selection) => selection.selected?.length > 0;\n\n const onDragStart = () => {\n dragged = true;\n viewer.setMouseNavEnabled(false);\n }\n\n const onDragEnd = () => {\n viewer.setMouseNavEnabled(true);\n }\n\n $: $selection, onSelect();\n\n const onSelect = () => {\n if (storeObserver)\n store.unobserve(storeObserver);\n\n if (isSelected($selection)) {\n dragged = false;\n\n setPosition($selection);\n\n storeObserver = (event: StoreChangeEvent<ImageAnnotation>) => {\n if (!dragged)\n setPosition($selection);\n }\n\n store.observe(storeObserver, { annotations: $selection.selected.map(s => s.id) });\n }\n }\n\n const setPosition = (selection: Selection) => {\n // Note: this demo popup only supports a single selection\n const selectedId = selection.selected[0].id;\n const annotation = store.getAnnotation(selectedId);\n\n const { minX, minY, maxX, maxY } = annotation.target.selector.geometry.bounds;\n\n const PADDING = 14;\n\n const topLeft = viewer.viewport.imageToViewerElementCoordinates(new OpenSeadragon.Point(minX, minY));\n const bottomRight = viewer.viewport.imageToViewerElementCoordinates(new OpenSeadragon.Point(maxX, maxY));\n\n // [left, top] = defaultStrategy(annotation, lastPointerDown);\n left = bottomRight.x + PADDING;\n top = topLeft.y;\n }\n\n onMount(() => {\n const onUpdateViewport = () => {\n if (isSelected($selection) && !dragged)\n setPosition($selection);\n }\n\n viewer.addHandler('update-viewport', onUpdateViewport);\n\n return () => {\n viewer.removeHandler('update-viewport', onUpdateViewport);\n }\n });\n</script>\n\n{#if $selection}\n <div \n class=\"a9s-popup a9s-osd-popup\"\n use:draggable={{ position: { x: left, y: top }}}\n on:neodrag:start={onDragStart}\n on:neodrag:end={onDragEnd}>\n {$selection.selected.map(s => s.id).join(', ')}\n </div>\n{/if}\n\n<style>\n .a9s-osd-popup {\n background-color: #fff;\n border: 1px solid #a2a2a2;\n height: 250px;\n position: absolute;\n width: 400px;\n z-index: 1;\n }\n</style>"],"names":["t_value","ctx","func","insert","target","div","anchor","dirty","set_data","create_if_block","s","state","$$props","viewer","left","top","dragged","storeObserver","selection","store","isSelected","_a","onDragStart","onDragEnd","onSelect","$selection","setPosition","event","selectedId","annotation","minX","minY","maxX","maxY","PADDING","topLeft","OpenSeadragon","bottomRight","$$invalidate","onMount","onUpdateViewport"],"mappings":";;;;;SAyFKA;AAAA;AAAA,IAAAC,KAAW,SAAS,IAAeC,CAAA,EAAA,KAAK,IAAI,IAAA;AAAA;;;;;;AAL/C,MAAAC,EAMKC,GAAAC,GAAAC,CAAA;;UAJc,YAAY;AAAA;AAAA,YAAGL,EAAM,CAAA;AAAA,aAAA;AAAA;AAAA,YAAGA,EAAG,CAAA;AAAA,YAAA;AAAA;;;;;UAC1BA,EAAW,CAAA;AAAA,QAAA;AAAA;;;;UACbA,EAAS,CAAA;AAAA,QAAA;AAAA;;;AACxB,MAAAM;AAAA,MAAA,KAAAP,OAAAA;AAAA,MAAAC,KAAW,SAAS,IAAeC,CAAA,EAAA,KAAK,IAAI,IAAA,OAAAM,EAAA,GAAAR,CAAA;;QAH5B,YAAY;AAAA;AAAA,UAAGC,EAAM,CAAA;AAAA,WAAA;AAAA;AAAA,UAAGA,EAAG,CAAA;AAAA,UAAA;AAAA;;;;;;;;;;IAH3CA,EAAU,CAAA,KAAAQ,EAAAR,CAAA;AAAA;;;;;;;;;;MAAVA,EAAU,CAAA;;;;;;;;;UAMc,CAAAS,MAAKA,EAAE;;WAlFvB,OAAAC,EAA4C,IAAAC,KAE5C,QAAAC,EAA4B,IAAAD,GAEnCE,GAEAC,GAEAC,IAAU,IAEVC;UAEI,WAAAC,GAAW,OAAAC,EAAK,IAAKR;;QAEvBS,IAAc,CAAAF,MAAyB;;AAAA,aAAAG,IAAAH,EAAU,aAAV,gBAAAG,EAAoB,UAAS;AAAA,KAEpEC,IAAW,MAAA;AACf,IAAAN,IAAU,IACVH,EAAO,mBAAmB,EAAK;AAAA,KAG3BU,IAAS,MAAA;AACb,IAAAV,EAAO,mBAAmB,EAAI;AAAA,KAK1BW,IAAQ,MAAA;AACR,IAAAP,KACFE,EAAM,UAAUF,CAAa,GAE3BG,EAAWK,CAAU,MACvBT,IAAU,IAEVU,EAAYD,CAAU,GAEtBR,IAAiB,CAAAU,MAAwC;MAClDX,KACHU,EAAYD,CAAU;AAAA,OAG1BN,EAAM,QAAQF,GAAa;AAAA,MAAI,aAAaQ,EAAW,SAAS,IAAI,CAAAf,MAAKA,EAAE,EAAE;AAAA;KAI3EgB,IAAe,CAAAR,MAAoB;AAEjC,UAAAU,IAAaV,EAAU,SAAS,CAAC,EAAE,IACnCW,IAAaV,EAAM,cAAcS,CAAU,GAEzC,EAAA,MAAAE,GAAM,MAAAC,GAAM,MAAAC,GAAM,MAAAC,EAAI,IAAKJ,EAAW,OAAO,SAAS,SAAS,QAEjEK,IAAU,IAEVC,IAAUtB,EAAO,SAAS,gCAAoC,IAAAuB,EAAc,MAAMN,GAAMC,CAAI,CAAA,GAC5FM,IAAcxB,EAAO,SAAS,gCAAoC,IAAAuB,EAAc,MAAMJ,GAAMC,CAAI,CAAA;AAGtG,IAAAK,EAAA,GAAAxB,IAAOuB,EAAY,IAAIH,CAAO,QAC9BnB,IAAMoB,EAAQ,CAAC;AAAA;AAGjB,SAAAI,EAAO,MAAA;UACCC,IAAgB,MAAA;AAChB,MAAApB,EAAWK,CAAU,KAAA,CAAMT,KAC7BU,EAAYD,CAAU;AAAA;AAG1B,WAAAZ,EAAO,WAAW,mBAAmB2B,CAAgB;AAGnD,MAAA3B,EAAO,cAAc,mBAAmB2B,CAAgB;AAAA;;;;;SA9C7ChB,EAAQ;AAAA;;;;;;;;"}