@embedpdf/plugin-annotation 2.9.1 → 2.10.1

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 (77) hide show
  1. package/dist/index.cjs +1 -1
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +3086 -2654
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/actions.d.ts +25 -6
  6. package/dist/lib/annotation-plugin.d.ts +16 -12
  7. package/dist/lib/handlers/index.d.ts +1 -0
  8. package/dist/lib/handlers/link.handler.d.ts +3 -0
  9. package/dist/lib/handlers/types.d.ts +9 -1
  10. package/dist/lib/helpers.d.ts +12 -5
  11. package/dist/lib/index.d.ts +4 -0
  12. package/dist/lib/reducer.d.ts +1 -1
  13. package/dist/lib/tools/default-tools.d.ts +147 -301
  14. package/dist/lib/tools/tools-utils.d.ts +448 -22
  15. package/dist/lib/tools/types.d.ts +35 -2
  16. package/dist/lib/types.d.ts +105 -24
  17. package/dist/preact/index.cjs +1 -1
  18. package/dist/preact/index.cjs.map +1 -1
  19. package/dist/preact/index.js +192 -87
  20. package/dist/preact/index.js.map +1 -1
  21. package/dist/react/index.cjs +1 -1
  22. package/dist/react/index.cjs.map +1 -1
  23. package/dist/react/index.js +192 -87
  24. package/dist/react/index.js.map +1 -1
  25. package/dist/shared/components/annotation-navigation-handler.d.ts +1 -0
  26. package/dist/shared/components/annotations/link-locked.d.ts +3 -0
  27. package/dist/shared/components/annotations/stamp.d.ts +1 -1
  28. package/dist/shared/components/preview-renderer.d.ts +4 -3
  29. package/dist/shared/components/types.d.ts +21 -4
  30. package/dist/shared/hooks/index.d.ts +1 -0
  31. package/dist/shared/hooks/use-annotation.d.ts +2 -2
  32. package/dist/shared/hooks/use-ios-zoom-prevention.d.ts +16 -0
  33. package/dist/shared-preact/components/annotation-navigation-handler.d.ts +1 -0
  34. package/dist/shared-preact/components/annotations/link-locked.d.ts +3 -0
  35. package/dist/shared-preact/components/annotations/stamp.d.ts +1 -1
  36. package/dist/shared-preact/components/preview-renderer.d.ts +4 -3
  37. package/dist/shared-preact/components/types.d.ts +21 -4
  38. package/dist/shared-preact/hooks/index.d.ts +1 -0
  39. package/dist/shared-preact/hooks/use-annotation.d.ts +2 -2
  40. package/dist/shared-preact/hooks/use-ios-zoom-prevention.d.ts +15 -0
  41. package/dist/shared-react/components/annotation-navigation-handler.d.ts +1 -0
  42. package/dist/shared-react/components/annotations/link-locked.d.ts +3 -0
  43. package/dist/shared-react/components/annotations/stamp.d.ts +1 -1
  44. package/dist/shared-react/components/preview-renderer.d.ts +4 -3
  45. package/dist/shared-react/components/types.d.ts +21 -4
  46. package/dist/shared-react/hooks/index.d.ts +1 -0
  47. package/dist/shared-react/hooks/use-annotation.d.ts +2 -2
  48. package/dist/shared-react/hooks/use-ios-zoom-prevention.d.ts +16 -0
  49. package/dist/svelte/components/AnnotationNavigationHandler.svelte.d.ts +3 -0
  50. package/dist/svelte/components/PreviewRenderer.svelte.d.ts +3 -2
  51. package/dist/svelte/components/annotations/LinkLockedMode.svelte.d.ts +5 -0
  52. package/dist/svelte/components/annotations/LinkPreview.svelte.d.ts +10 -0
  53. package/dist/svelte/components/annotations/Stamp.svelte.d.ts +1 -1
  54. package/dist/svelte/context/renderer-registry.svelte.d.ts +1 -1
  55. package/dist/svelte/context/types.d.ts +20 -3
  56. package/dist/svelte/hooks/index.d.ts +1 -0
  57. package/dist/svelte/hooks/use-annotation.svelte.d.ts +1 -1
  58. package/dist/svelte/hooks/use-ios-zoom-prevention.svelte.d.ts +6 -0
  59. package/dist/svelte/index.cjs +1 -1
  60. package/dist/svelte/index.cjs.map +1 -1
  61. package/dist/svelte/index.js +401 -228
  62. package/dist/svelte/index.js.map +1 -1
  63. package/dist/vue/components/annotation-navigation-handler.vue.d.ts +3 -0
  64. package/dist/vue/components/annotations/link-locked.vue.d.ts +5 -0
  65. package/dist/vue/components/annotations/link-preview.vue.d.ts +10 -0
  66. package/dist/vue/components/annotations/stamp.vue.d.ts +2 -2
  67. package/dist/vue/components/preview-renderer.vue.d.ts +3 -2
  68. package/dist/vue/context/renderer-registry.d.ts +1 -1
  69. package/dist/vue/context/types.d.ts +20 -3
  70. package/dist/vue/hooks/index.d.ts +1 -0
  71. package/dist/vue/hooks/use-annotation.d.ts +24 -2
  72. package/dist/vue/hooks/use-ios-zoom-prevention.d.ts +7 -0
  73. package/dist/vue/index.cjs +1 -1
  74. package/dist/vue/index.cjs.map +1 -1
  75. package/dist/vue/index.js +402 -262
  76. package/dist/vue/index.js.map +1 -1
  77. package/package.json +12 -10
@@ -1,10 +1,10 @@
1
1
  import { createPluginPackage } from "@embedpdf/core";
2
- import { AnnotationPlugin, initialDocumentState, generateCloudyRectanglePath, generateCloudyEllipsePath, patching, generateCloudyPolygonPath, getAnnotationsByPageIndex, getSelectedAnnotationIds, resolveInteractionProp, AnnotationPluginPackage as AnnotationPluginPackage$1 } from "@embedpdf/plugin-annotation";
2
+ import { AnnotationPlugin, initialDocumentState, generateCloudyRectanglePath, generateCloudyEllipsePath, patching, generateCloudyPolygonPath, LockModeType, getAnnotationsByPageIndex, getSelectedAnnotationIds, resolveInteractionProp, getAnnotationCategories, hasLockedFlag, isCategoryLocked, AnnotationPluginPackage as AnnotationPluginPackage$1 } from "@embedpdf/plugin-annotation";
3
3
  export * from "@embedpdf/plugin-annotation";
4
4
  import "svelte/internal/disclose-version";
5
5
  import * as $ from "svelte/internal/client";
6
6
  import { setContext, getContext, untrack } from "svelte";
7
- import { useCapability, usePlugin, useDocumentPermissions, useDocumentState } from "@embedpdf/core/svelte";
7
+ import { usePlugin, useCapability, useDocumentPermissions, useDocumentState } from "@embedpdf/core/svelte";
8
8
  import { getCounterRotation } from "@embedpdf/utils";
9
9
  import { useInteractionHandles, deepToRaw, doublePress, CounterRotate } from "@embedpdf/utils/svelte";
10
10
  import { inferRotationCenterFromRects, boundingRectOrEmpty, PdfAnnotationBorderStyle, PdfVerticalAlignment, standardFontCssProperties, textAlignmentToCss, ignore, PdfErrorCode, getContrastStrokeColor, PdfBlendMode, PdfAnnotationSubtype, blendModeToCss } from "@embedpdf/models";
@@ -55,7 +55,10 @@ function createRenderer(entry) {
55
55
  isDraggable: entry.isDraggable,
56
56
  onDoubleClick: entry.onDoubleClick,
57
57
  selectOverride: entry.selectOverride,
58
- hideSelectionMenu: entry.hideSelectionMenu
58
+ hideSelectionMenu: entry.hideSelectionMenu,
59
+ renderPreview: entry.renderPreview,
60
+ hiddenWhenLocked: entry.hiddenWhenLocked,
61
+ renderLocked: entry.renderLocked
59
62
  };
60
63
  }
61
64
  function RendererRegistryProvider($$anchor, $$props) {
@@ -96,6 +99,66 @@ const useAnnotation = (getDocumentId) => {
96
99
  }
97
100
  };
98
101
  };
102
+ const MIN_IOS_FOCUS_FONT_PX = 16;
103
+ function detectIOS() {
104
+ try {
105
+ const nav = navigator;
106
+ return /iPad|iPhone|iPod/.test(navigator.userAgent) || navigator.platform === "MacIntel" && (nav == null ? void 0 : nav.maxTouchPoints) > 1;
107
+ } catch {
108
+ return false;
109
+ }
110
+ }
111
+ let _isIOS;
112
+ function getIsIOS() {
113
+ if (_isIOS === void 0) {
114
+ _isIOS = detectIOS();
115
+ }
116
+ return _isIOS;
117
+ }
118
+ function useIOSZoomPrevention(getComputedFontPx, getActive) {
119
+ const isIOS = getIsIOS();
120
+ const needsComp = $.derived(() => {
121
+ const px = getComputedFontPx();
122
+ return isIOS && getActive() && px > 0 && px < MIN_IOS_FOCUS_FONT_PX;
123
+ });
124
+ const adjustedFontPx = $.derived(() => $.get(needsComp) ? MIN_IOS_FOCUS_FONT_PX : getComputedFontPx());
125
+ const scaleComp = $.derived(() => $.get(needsComp) ? getComputedFontPx() / MIN_IOS_FOCUS_FONT_PX : 1);
126
+ const wrapperStyle = $.derived(() => {
127
+ if (!$.get(needsComp)) return "";
128
+ const s = $.get(scaleComp);
129
+ return `width: ${100 / s}%; height: ${100 / s}%; transform: scale(${s}); transform-origin: top left;`;
130
+ });
131
+ return {
132
+ get needsComp() {
133
+ return $.get(needsComp);
134
+ },
135
+ get adjustedFontPx() {
136
+ return $.get(adjustedFontPx);
137
+ },
138
+ get scaleComp() {
139
+ return $.get(scaleComp);
140
+ },
141
+ get wrapperStyle() {
142
+ return $.get(wrapperStyle);
143
+ }
144
+ };
145
+ }
146
+ function AnnotationNavigationHandler($$anchor, $$props) {
147
+ $.push($$props, true);
148
+ const { plugin } = useAnnotationPlugin();
149
+ const { provides } = useAnnotationCapability();
150
+ $.user_effect(() => {
151
+ const p = provides;
152
+ const pl = plugin;
153
+ if (!p || !pl) return;
154
+ return p.onNavigate((event) => {
155
+ if (event.result.outcome === "uri" && pl.config.autoOpenLinks !== false) {
156
+ window.open(event.result.uri, "_blank", "noopener,noreferrer");
157
+ }
158
+ });
159
+ });
160
+ $.pop();
161
+ }
99
162
  var root_1$f = $.from_html(`<img alt="" draggable="false"/>`);
100
163
  function AppearanceImage($$anchor, $$props) {
101
164
  $.push($$props, true);
@@ -145,7 +208,7 @@ var root_7$1 = $.from_html(`<div style="display: contents;"><!> <div><svg viewBo
145
208
  var root_12 = $.from_html(`<div></div>`);
146
209
  var root_16 = $.from_html(`<div></div>`);
147
210
  var root_23 = $.from_html(`<div><div> </div></div>`);
148
- var root$e = $.from_html(`<div data-no-interaction=""><div><div><!> <!></div></div> <div><!> <!> <div><!> <!></div></div> <!> <!></div>`);
211
+ var root$g = $.from_html(`<div data-no-interaction=""><div><div><!> <!></div></div> <div><!> <!> <div><!> <!></div></div> <!> <!></div>`);
149
212
  function AnnotationContainer($$anchor, $$props) {
150
213
  $.push($$props, true);
151
214
  let isEditing = $.prop($$props, "isEditing", 3, false), isMultiSelected = $.prop($$props, "isMultiSelected", 3, false), isRotatable = $.prop($$props, "isRotatable", 3, true), lockAspectRatio = $.prop($$props, "lockAspectRatio", 3, false), propsClass = $.prop($$props, "class", 3, ""), outlineOffset = $.prop($$props, "outlineOffset", 3, 1), zIndex = $.prop($$props, "zIndex", 3, 1), restProps = $.rest_props($$props, [
@@ -504,7 +567,7 @@ function AnnotationContainer($$anchor, $$props) {
504
567
  }
505
568
  };
506
569
  }
507
- var div = root$e();
570
+ var div = root$g();
508
571
  var div_1 = $.child(div);
509
572
  let styles;
510
573
  var div_2 = $.child(div_1);
@@ -1670,6 +1733,48 @@ function GroupSelectionBox($$anchor, $$props) {
1670
1733
  $.pop();
1671
1734
  }
1672
1735
  $.delegate(["pointermove"]);
1736
+ var root$f = $.from_html(`<div role="link" tabindex="-1"></div>`);
1737
+ function LinkLockedMode($$anchor, $$props) {
1738
+ $.push($$props, true);
1739
+ const { provides } = useAnnotationCapability();
1740
+ function handleClick() {
1741
+ const target = $$props.annotation.object.target;
1742
+ if (!target || !provides) return;
1743
+ provides.forDocument($$props.documentId).navigateTarget(target);
1744
+ }
1745
+ var div = root$f();
1746
+ div.__click = handleClick;
1747
+ div.__keydown = (e) => {
1748
+ if (e.key === "Enter") handleClick();
1749
+ };
1750
+ $.set_style(div, "", {}, {
1751
+ width: "100%",
1752
+ height: "100%",
1753
+ cursor: "pointer",
1754
+ "pointer-events": "auto"
1755
+ });
1756
+ $.append($$anchor, div);
1757
+ $.pop();
1758
+ }
1759
+ $.delegate(["click", "keydown"]);
1760
+ var root$e = $.from_html(`<div></div>`);
1761
+ function LinkPreview($$anchor, $$props) {
1762
+ $.push($$props, true);
1763
+ var div = root$e();
1764
+ let styles;
1765
+ $.template_effect(() => styles = $.set_style(div, "", styles, {
1766
+ position: "absolute",
1767
+ left: "0",
1768
+ top: "0",
1769
+ width: `${$$props.bounds.size.width * $$props.scale}px`,
1770
+ height: `${$$props.bounds.size.height * $$props.scale}px`,
1771
+ "border-bottom": `${$$props.data.strokeWidth * $$props.scale}px solid ${$$props.data.strokeColor ?? ""}`,
1772
+ "background-color": "rgba(0, 0, 255, 0.05)",
1773
+ "box-sizing": "border-box"
1774
+ }));
1775
+ $.append($$anchor, div);
1776
+ $.pop();
1777
+ }
1673
1778
  var root_1$d = $.from_svg(`<path fill="none" stroke="transparent"></path>`);
1674
1779
  var root_3$4 = $.from_svg(`<path fill="none"></path>`);
1675
1780
  var root$d = $.from_svg(`<svg><!><!></svg>`);
@@ -1705,8 +1810,8 @@ function Ink($$anchor, $$props) {
1705
1810
  $.set_attribute(path, "d", $.get(d));
1706
1811
  $.set_attribute(path, "stroke-width", $.get(hitStrokeWidth));
1707
1812
  styles_1 = $.set_style(path, "", styles_1, {
1708
- cursor: $$props.isSelected ? "move" : "pointer",
1709
- "pointer-events": $$props.isSelected ? "none" : "visibleStroke",
1813
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default",
1814
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected ? "none" : "visibleStroke",
1710
1815
  "stroke-linecap": "round",
1711
1816
  "stroke-linejoin": "round"
1712
1817
  });
@@ -1825,8 +1930,8 @@ function Square($$anchor, $$props) {
1825
1930
  $.set_attribute(path, "d", $.get(cloudyPath).path);
1826
1931
  $.set_attribute(path, "stroke-width", $.get(hitStrokeWidth));
1827
1932
  styles_1 = $.set_style(path, "", styles_1, {
1828
- cursor: $$props.isSelected ? "move" : "pointer",
1829
- "pointer-events": $$props.isSelected ? "none" : color() === "transparent" ? "visibleStroke" : "visible"
1933
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default",
1934
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected ? "none" : color() === "transparent" ? "visibleStroke" : "visible"
1830
1935
  });
1831
1936
  });
1832
1937
  $.append($$anchor2, path);
@@ -1845,8 +1950,8 @@ function Square($$anchor, $$props) {
1845
1950
  $.set_attribute(rect_1, "height", $.get(height));
1846
1951
  $.set_attribute(rect_1, "stroke-width", $.get(hitStrokeWidth));
1847
1952
  styles_2 = $.set_style(rect_1, "", styles_2, {
1848
- cursor: $$props.isSelected ? "move" : "pointer",
1849
- "pointer-events": $$props.isSelected ? "none" : color() === "transparent" ? "visibleStroke" : "visible"
1953
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default",
1954
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected ? "none" : color() === "transparent" ? "visibleStroke" : "visible"
1850
1955
  });
1851
1956
  });
1852
1957
  $.append($$anchor2, rect_1);
@@ -1978,7 +2083,7 @@ function Circle($$anchor, $$props) {
1978
2083
  let svgWidth = $.derived(() => $.get(width) * $$props.scale);
1979
2084
  let svgHeight = $.derived(() => $.get(height) * $$props.scale);
1980
2085
  let hitStrokeWidth = $.derived(() => Math.max($$props.strokeWidth, MIN_HIT_AREA_SCREEN_PX / $$props.scale));
1981
- let peValue = $.derived(() => $$props.isSelected ? "none" : color() === "transparent" ? "visibleStroke" : "visible");
2086
+ let peValue = $.derived(() => !$$props.onClick ? "none" : $$props.isSelected ? "none" : color() === "transparent" ? "visibleStroke" : "visible");
1982
2087
  var svg = root$b();
1983
2088
  let styles;
1984
2089
  var node = $.child(svg);
@@ -1994,7 +2099,9 @@ function Circle($$anchor, $$props) {
1994
2099
  $.set_attribute(path, "d", $.get(cloudyPath).path);
1995
2100
  $.set_attribute(path, "stroke-width", $.get(hitStrokeWidth));
1996
2101
  $.set_attribute(path, "pointer-events", $.get(peValue));
1997
- styles_1 = $.set_style(path, "", styles_1, { cursor: $$props.isSelected ? "move" : "pointer" });
2102
+ styles_1 = $.set_style(path, "", styles_1, {
2103
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default"
2104
+ });
1998
2105
  });
1999
2106
  $.append($$anchor2, path);
2000
2107
  };
@@ -2012,7 +2119,9 @@ function Circle($$anchor, $$props) {
2012
2119
  $.set_attribute(ellipse, "ry", $.get(ry));
2013
2120
  $.set_attribute(ellipse, "stroke-width", $.get(hitStrokeWidth));
2014
2121
  $.set_attribute(ellipse, "pointer-events", $.get(peValue));
2015
- styles_2 = $.set_style(ellipse, "", styles_2, { cursor: $$props.isSelected ? "move" : "pointer" });
2122
+ styles_2 = $.set_style(ellipse, "", styles_2, {
2123
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default"
2124
+ });
2016
2125
  });
2017
2126
  $.append($$anchor2, ellipse);
2018
2127
  };
@@ -2158,8 +2267,8 @@ function Line($$anchor, $$props) {
2158
2267
  $.set_attribute(path, "transform", $.get(endings).start.transform);
2159
2268
  $.set_attribute(path, "stroke-width", $.get(hitStrokeWidth));
2160
2269
  styles_2 = $.set_style(path, "", styles_2, {
2161
- cursor: $$props.isSelected ? "move" : "pointer",
2162
- "pointer-events": $$props.isSelected ? "none" : $.get(endings).start.filled ? "visible" : "visibleStroke",
2270
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default",
2271
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected ? "none" : $.get(endings).start.filled ? "visible" : "visibleStroke",
2163
2272
  "stroke-linecap": "butt"
2164
2273
  });
2165
2274
  });
@@ -2183,8 +2292,8 @@ function Line($$anchor, $$props) {
2183
2292
  $.set_attribute(path_1, "transform", $.get(endings).end.transform);
2184
2293
  $.set_attribute(path_1, "stroke-width", $.get(hitStrokeWidth));
2185
2294
  styles_3 = $.set_style(path_1, "", styles_3, {
2186
- cursor: $$props.isSelected ? "move" : "pointer",
2187
- "pointer-events": $$props.isSelected ? "none" : $.get(endings).end.filled ? "visible" : "visibleStroke",
2295
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default",
2296
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected ? "none" : $.get(endings).end.filled ? "visible" : "visibleStroke",
2188
2297
  "stroke-linecap": "butt"
2189
2298
  });
2190
2299
  });
@@ -2278,8 +2387,8 @@ function Line($$anchor, $$props) {
2278
2387
  $.set_attribute(line, "y2", $.get(y2));
2279
2388
  $.set_attribute(line, "stroke-width", $.get(hitStrokeWidth));
2280
2389
  styles_1 = $.set_style(line, "", styles_1, {
2281
- cursor: $$props.isSelected ? "move" : "pointer",
2282
- "pointer-events": $$props.isSelected ? "none" : "visibleStroke",
2390
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default",
2391
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected ? "none" : "visibleStroke",
2283
2392
  "stroke-linecap": "butt"
2284
2393
  });
2285
2394
  });
@@ -2358,8 +2467,8 @@ function Polyline($$anchor, $$props) {
2358
2467
  $.set_attribute(path_1, "transform", $.get(endings).start.transform);
2359
2468
  $.set_attribute(path_1, "stroke-width", $.get(hitStrokeWidth));
2360
2469
  styles_2 = $.set_style(path_1, "", styles_2, {
2361
- cursor: $$props.isSelected ? "move" : "pointer",
2362
- "pointer-events": $$props.isSelected ? "none" : $.get(endings).start.filled ? "visible" : "visibleStroke",
2470
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default",
2471
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected ? "none" : $.get(endings).start.filled ? "visible" : "visibleStroke",
2363
2472
  "stroke-linecap": "butt"
2364
2473
  });
2365
2474
  });
@@ -2383,8 +2492,8 @@ function Polyline($$anchor, $$props) {
2383
2492
  $.set_attribute(path_2, "transform", $.get(endings).end.transform);
2384
2493
  $.set_attribute(path_2, "stroke-width", $.get(hitStrokeWidth));
2385
2494
  styles_3 = $.set_style(path_2, "", styles_3, {
2386
- cursor: $$props.isSelected ? "move" : "pointer",
2387
- "pointer-events": $$props.isSelected ? "none" : $.get(endings).end.filled ? "visible" : "visibleStroke",
2495
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default",
2496
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected ? "none" : $.get(endings).end.filled ? "visible" : "visibleStroke",
2388
2497
  "stroke-linecap": "butt"
2389
2498
  });
2390
2499
  });
@@ -2474,8 +2583,8 @@ function Polyline($$anchor, $$props) {
2474
2583
  $.set_attribute(path, "d", $.get(pathData));
2475
2584
  $.set_attribute(path, "stroke-width", $.get(hitStrokeWidth));
2476
2585
  styles_1 = $.set_style(path, "", styles_1, {
2477
- cursor: $$props.isSelected ? "move" : "pointer",
2478
- "pointer-events": $$props.isSelected ? "none" : "visibleStroke",
2586
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default",
2587
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected ? "none" : "visibleStroke",
2479
2588
  "stroke-linecap": "butt",
2480
2589
  "stroke-linejoin": "miter"
2481
2590
  });
@@ -2641,8 +2750,8 @@ function Polygon($$anchor, $$props) {
2641
2750
  $.set_attribute(path, "d", $.get(isCloudy) && $.get(cloudyPath) ? $.get(cloudyPath).path : $.get(pathData));
2642
2751
  $.set_attribute(path, "stroke-width", $.get(hitStrokeWidth));
2643
2752
  styles_1 = $.set_style(path, "", styles_1, {
2644
- cursor: $$props.isSelected ? "move" : "pointer",
2645
- "pointer-events": $$props.isSelected ? "none" : color() === "transparent" ? "visibleStroke" : "visible",
2753
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default",
2754
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected ? "none" : color() === "transparent" ? "visibleStroke" : "visible",
2646
2755
  "stroke-linecap": "butt",
2647
2756
  "stroke-linejoin": "miter"
2648
2757
  });
@@ -2674,7 +2783,6 @@ function FreeText($$anchor, $$props) {
2674
2783
  const annotationCapability = useAnnotationCapability();
2675
2784
  const annotationProvides = $.derived(() => annotationCapability.provides ? annotationCapability.provides.forDocument($$props.documentId) : null);
2676
2785
  let editorRef = null;
2677
- let isIOS = $.state(false);
2678
2786
  let editingRef = false;
2679
2787
  $.user_effect(() => {
2680
2788
  var _a, _b, _c;
@@ -2693,27 +2801,14 @@ function FreeText($$anchor, $$props) {
2693
2801
  selection.removeAllRanges();
2694
2802
  selection.addRange(range);
2695
2803
  });
2696
- $.user_pre_effect(() => {
2697
- try {
2698
- const nav = navigator;
2699
- const ios = /iPad|iPhone|iPod/.test(navigator.userAgent) || navigator.platform === "MacIntel" && (nav == null ? void 0 : nav.maxTouchPoints) > 1;
2700
- $.set(isIOS, ios, true);
2701
- } catch {
2702
- $.set(isIOS, false);
2703
- }
2704
- });
2705
2804
  function handleBlur() {
2706
2805
  if (!editingRef) return;
2707
2806
  editingRef = false;
2708
2807
  if (!$.get(annotationProvides) || !editorRef) return;
2709
2808
  $.get(annotationProvides).updateAnnotation($$props.pageIndex, $$props.annotation.object.id, { contents: editorRef.innerText.replace(/\u00A0/g, " ") });
2710
2809
  }
2711
- const computedFontPx = $.derived(() => $$props.annotation.object.fontSize * $$props.scale);
2712
- const MIN_IOS_FOCUS_FONT_PX = 16;
2713
- const needsComp = $.derived(() => $.get(isIOS) && $$props.isEditing && $.get(computedFontPx) > 0 && $.get(computedFontPx) < MIN_IOS_FOCUS_FONT_PX);
2714
- const adjustedFontPx = $.derived(() => $.get(needsComp) ? MIN_IOS_FOCUS_FONT_PX : $.get(computedFontPx));
2715
- const scaleComp = $.derived(() => $.get(needsComp) ? $.get(computedFontPx) / MIN_IOS_FOCUS_FONT_PX : 1);
2716
- const invScalePercent = $.derived(() => $.get(needsComp) ? 100 / $.get(scaleComp) : 100);
2810
+ const ios = useIOSZoomPrevention(() => $$props.annotation.object.fontSize * $$props.scale, () => $$props.isEditing);
2811
+ const invScalePercent = $.derived(() => ios.needsComp ? 100 / ios.scaleComp : 100);
2717
2812
  const outerW = $.derived(() => $$props.annotation.object.rect.size.width * $$props.scale);
2718
2813
  const outerH = $.derived(() => $$props.annotation.object.rect.size.height * $$props.scale);
2719
2814
  const justify = $.derived(() => $$props.annotation.object.verticalAlign === PdfVerticalAlignment.Top ? "flex-start" : $$props.annotation.object.verticalAlign === PdfVerticalAlignment.Middle ? "center" : "flex-end");
@@ -2739,7 +2834,7 @@ function FreeText($$anchor, $$props) {
2739
2834
  height: `${$.get(outerH)}px`,
2740
2835
  "z-index": 2,
2741
2836
  cursor: $$props.isSelected && !$$props.isEditing ? "move" : "default",
2742
- "pointer-events": $$props.isSelected && !$$props.isEditing ? "none" : "auto",
2837
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected && !$$props.isEditing ? "none" : "auto",
2743
2838
  opacity: appearanceActive() ? 0 : 1
2744
2839
  });
2745
2840
  $.set_attribute(span, "contenteditable", $$props.isEditing);
@@ -2752,20 +2847,20 @@ function FreeText($$anchor, $$props) {
2752
2847
  "flex-direction": "column",
2753
2848
  "justify-content": $.get(justify),
2754
2849
  color: $$props.annotation.object.fontColor,
2755
- "font-size": `${$.get(adjustedFontPx)}px`,
2850
+ "font-size": `${ios.adjustedFontPx}px`,
2756
2851
  "font-family": $.get(fontCss).fontFamily,
2757
2852
  "font-weight": $.get(fontCss).fontWeight,
2758
2853
  "font-style": $.get(fontCss).fontStyle,
2759
2854
  "text-align": textAlignmentToCss($$props.annotation.object.textAlign),
2760
2855
  "background-color": $$props.annotation.object.color ?? $$props.annotation.object.backgroundColor,
2761
2856
  opacity: $$props.annotation.object.opacity,
2762
- width: $.get(needsComp) ? `${$.get(invScalePercent)}%` : "100%",
2763
- height: $.get(needsComp) ? `${$.get(invScalePercent)}%` : "100%",
2857
+ width: ios.needsComp ? `${$.get(invScalePercent)}%` : "100%",
2858
+ height: ios.needsComp ? `${$.get(invScalePercent)}%` : "100%",
2764
2859
  "line-height": "1.18",
2765
2860
  overflow: "hidden",
2766
- cursor: $$props.isEditing ? "text" : "pointer",
2861
+ cursor: $$props.isEditing ? "text" : $$props.onClick ? "pointer" : "default",
2767
2862
  outline: "none",
2768
- transform: $.get(needsComp) ? `scale(${$.get(scaleComp)})` : void 0,
2863
+ transform: ios.needsComp ? `scale(${ios.scaleComp})` : void 0,
2769
2864
  "transform-origin": "top left"
2770
2865
  })
2771
2866
  ]
@@ -2923,8 +3018,8 @@ function Stamp($$anchor, $$props) {
2923
3018
  });
2924
3019
  $.reset(div);
2925
3020
  $.template_effect(() => styles = $.set_style(div, "position: absolute; width: 100%; height: 100%; z-index: 2;", styles, {
2926
- "pointer-events": $$props.isSelected ? "none" : "auto",
2927
- cursor: "pointer"
3021
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected ? "none" : "auto",
3022
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default"
2928
3023
  }));
2929
3024
  $.append($$anchor, div);
2930
3025
  $.pop();
@@ -2970,8 +3065,8 @@ function Link($$anchor, $$props) {
2970
3065
  return void 0;
2971
3066
  });
2972
3067
  const isUnderline = $.derived(() => strokeStyle() === PdfAnnotationBorderStyle.UNDERLINE);
2973
- const hitAreaCursor = $.derived(() => hasIRT() ? "default" : $$props.isSelected ? "move" : "pointer");
2974
- const hitAreaPointerEvents = $.derived(() => hasIRT() ? "none" : $$props.isSelected ? "none" : "visible");
3068
+ const hitAreaCursor = $.derived(() => hasIRT() || !$$props.onClick ? "default" : $$props.isSelected ? "move" : "pointer");
3069
+ const hitAreaPointerEvents = $.derived(() => hasIRT() || !$$props.onClick ? "none" : $$props.isSelected ? "none" : "visible");
2975
3070
  var svg = root$5();
2976
3071
  let styles;
2977
3072
  var rect_1 = $.child(svg);
@@ -3405,8 +3500,10 @@ function Caret($$anchor, $$props) {
3405
3500
  "z-index": "2"
3406
3501
  });
3407
3502
  $.set_attribute(path_1, "d", $.get(path));
3408
- $.set_attribute(path_1, "pointer-events", $$props.isSelected ? "none" : "visible");
3409
- styles_1 = $.set_style(path_1, "", styles_1, { cursor: $$props.isSelected ? "move" : "pointer" });
3503
+ $.set_attribute(path_1, "pointer-events", !$$props.onClick ? "none" : $$props.isSelected ? "none" : "visible");
3504
+ styles_1 = $.set_style(path_1, "", styles_1, {
3505
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default"
3506
+ });
3410
3507
  });
3411
3508
  $.append($$anchor, svg);
3412
3509
  $.pop();
@@ -3469,8 +3566,8 @@ function Text($$anchor, $$props) {
3469
3566
  position: "absolute",
3470
3567
  inset: "0",
3471
3568
  "z-index": "2",
3472
- "pointer-events": $$props.isSelected ? "none" : "auto",
3473
- cursor: $$props.isSelected ? "move" : "pointer"
3569
+ "pointer-events": !$$props.onClick ? "none" : $$props.isSelected ? "none" : "auto",
3570
+ cursor: $$props.isSelected ? "move" : $$props.onClick ? "pointer" : "default"
3474
3571
  }));
3475
3572
  $.append($$anchor, div);
3476
3573
  $.pop();
@@ -3612,7 +3709,8 @@ const builtInRenderers = [
3612
3709
  id: "link",
3613
3710
  matches: (a) => a.type === PdfAnnotationSubtype.LINK,
3614
3711
  component: LinkRenderer,
3615
- interactionDefaults: { isDraggable: false, isResizable: false, isRotatable: false },
3712
+ renderPreview: LinkPreview,
3713
+ interactionDefaults: { isDraggable: true, isResizable: true, isRotatable: false },
3616
3714
  useAppearanceStream: false,
3617
3715
  selectOverride: (e, annotation, helpers) => {
3618
3716
  e.stopPropagation();
@@ -3628,7 +3726,8 @@ const builtInRenderers = [
3628
3726
  }
3629
3727
  helpers.selectAnnotation(helpers.pageIndex, annotation.object.id);
3630
3728
  },
3631
- hideSelectionMenu: (a) => !!a.inReplyToId
3729
+ hideSelectionMenu: (a) => !!a.inReplyToId,
3730
+ renderLocked: LinkLockedMode
3632
3731
  })
3633
3732
  ];
3634
3733
  var root$2 = $.from_html(`<!> <!>`, 1);
@@ -3642,6 +3741,7 @@ function Annotations($$anchor, $$props) {
3642
3741
  let allSelectedIds = $.state($.proxy([]));
3643
3742
  let editingId = $.state(null);
3644
3743
  let appearanceMap = $.state($.proxy({}));
3744
+ let lockedMode = $.state($.proxy({ type: LockModeType.None }));
3645
3745
  let prevScale = $$props.scale;
3646
3746
  const annotationProvides = $.derived(() => annotationCapability.provides ? annotationCapability.provides.forDocument($$props.documentId) : null);
3647
3747
  const isMultiSelected = $.derived(() => $.get(allSelectedIds).length > 1);
@@ -3668,9 +3768,11 @@ function Annotations($$anchor, $$props) {
3668
3768
  const currentState = $.get(annotationProvides).getState();
3669
3769
  $.set(annotations, getAnnotationsByPageIndex(currentState, $$props.pageIndex), true);
3670
3770
  $.set(allSelectedIds, getSelectedAnnotationIds(currentState), true);
3771
+ $.set(lockedMode, currentState.locked, true);
3671
3772
  const off = $.get(annotationProvides).onStateChange((state) => {
3672
3773
  $.set(annotations, getAnnotationsByPageIndex(state, $$props.pageIndex), true);
3673
3774
  $.set(allSelectedIds, getSelectedAnnotationIds(state), true);
3775
+ $.set(lockedMode, state.locked, true);
3674
3776
  });
3675
3777
  return () => off == null ? void 0 : off();
3676
3778
  });
@@ -3780,174 +3882,195 @@ function Annotations($$anchor, $$props) {
3780
3882
  var fragment_1 = $.comment();
3781
3883
  var node_1 = $.first_child(fragment_1);
3782
3884
  {
3783
- var consequent = ($$anchor3) => {
3784
- const isSelected = $.derived(() => $.get(allSelectedIds).includes($.get(annotation).object.id));
3785
- const isEditing = $.derived(() => $.get(editingId) === $.get(annotation).object.id);
3885
+ var consequent_1 = ($$anchor3) => {
3786
3886
  const tool = $.derived(() => {
3787
3887
  var _a;
3788
- return (_a = $.get(annotationProvides)) == null ? void 0 : _a.findToolForAnnotation($.get(annotation).object);
3789
- });
3790
- const defaults = $.derived(() => $.get(renderer).interactionDefaults);
3791
- const resolvedDraggable = $.derived(() => {
3792
- var _a, _b;
3793
- return resolveInteractionProp((_a = $.get(tool)) == null ? void 0 : _a.interaction.isDraggable, $.get(annotation).object, ((_b = $.get(defaults)) == null ? void 0 : _b.isDraggable) ?? true);
3888
+ return ((_a = $.get(annotationProvides)) == null ? void 0 : _a.findToolForAnnotation($.get(annotation).object)) ?? null;
3794
3889
  });
3795
- const finalDraggable = $.derived(() => $.get(renderer).isDraggable ? $.get(renderer).isDraggable($.get(resolvedDraggable), { isEditing: $.get(isEditing) }) : $.get(resolvedDraggable));
3796
- const useAP = $.derived(() => {
3797
- var _a, _b;
3798
- return ((_b = (_a = $.get(tool)) == null ? void 0 : _a.behavior) == null ? void 0 : _b.useAppearanceStream) ?? $.get(renderer).useAppearanceStream ?? true;
3799
- });
3800
- const selectHelpers = $.derived(() => ({
3801
- defaultSelect: handleClick,
3802
- selectAnnotation: (pi, id) => {
3803
- var _a;
3804
- return (_a = $.get(annotationProvides)) == null ? void 0 : _a.selectAnnotation(pi, id);
3805
- },
3806
- clearSelection: () => {
3807
- var _a;
3808
- return (_a = selectionCapability.provides) == null ? void 0 : _a.clear();
3809
- },
3810
- allAnnotations: $.get(annotations),
3811
- pageIndex: $$props.pageIndex
3812
- }));
3813
- const onSelect = $.derived(() => $.get(renderer).selectOverride ? (e) => $.get(renderer).selectOverride(e, $.get(annotation), $.get(selectHelpers)) : (e) => handleClick(e, $.get(annotation)));
3814
- const RendererComponent = $.derived(() => $.get(renderer).component);
3890
+ const categories = $.derived(() => getAnnotationCategories($.get(tool)));
3891
+ const locked = $.derived(() => hasLockedFlag($.get(annotation).object) || isCategoryLocked($.get(categories), $.get(lockedMode)));
3892
+ var fragment_2 = $.comment();
3893
+ var node_2 = $.first_child(fragment_2);
3815
3894
  {
3816
- const children = ($$anchor4, currentObject = $.noop, $$arg1) => {
3817
- let appearanceActive = () => $$arg1 == null ? void 0 : $$arg1().appearanceActive;
3818
- var fragment_3 = $.comment();
3819
- var node_2 = $.first_child(fragment_3);
3820
- $.component(node_2, () => $.get(RendererComponent), ($$anchor5, RendererComponent_1) => {
3821
- RendererComponent_1($$anchor5, {
3822
- get annotation() {
3823
- return $.get(annotation);
3824
- },
3825
- get currentObject() {
3826
- return currentObject();
3827
- },
3828
- get isSelected() {
3829
- return $.get(isSelected);
3830
- },
3831
- get isEditing() {
3832
- return $.get(isEditing);
3833
- },
3834
- get scale() {
3835
- return $$props.scale;
3836
- },
3837
- get pageIndex() {
3838
- return $$props.pageIndex;
3839
- },
3840
- get documentId() {
3841
- return $$props.documentId;
3842
- },
3843
- get onClick() {
3844
- return $.get(onSelect);
3845
- },
3846
- get appearanceActive() {
3847
- return appearanceActive();
3895
+ var consequent = ($$anchor4) => {
3896
+ const hasRenderLocked = $.derived(() => $.get(locked) && !!$.get(renderer).renderLocked);
3897
+ const isSelected = $.derived(() => $.get(locked) ? false : $.get(allSelectedIds).includes($.get(annotation).object.id));
3898
+ const isEditing = $.derived(() => $.get(locked) ? false : $.get(editingId) === $.get(annotation).object.id);
3899
+ const defaults = $.derived(() => $.get(renderer).interactionDefaults);
3900
+ const resolvedDraggable = $.derived(() => {
3901
+ var _a, _b;
3902
+ return resolveInteractionProp((_a = $.get(tool)) == null ? void 0 : _a.interaction.isDraggable, $.get(annotation).object, ((_b = $.get(defaults)) == null ? void 0 : _b.isDraggable) ?? true);
3903
+ });
3904
+ const finalDraggable = $.derived(() => $.get(locked) ? false : $.get(renderer).isDraggable ? $.get(renderer).isDraggable($.get(resolvedDraggable), { isEditing: $.get(isEditing) }) : $.get(resolvedDraggable));
3905
+ const useAP = $.derived(() => {
3906
+ var _a, _b;
3907
+ return ((_b = (_a = $.get(tool)) == null ? void 0 : _a.behavior) == null ? void 0 : _b.useAppearanceStream) ?? $.get(renderer).useAppearanceStream ?? true;
3908
+ });
3909
+ const appearance = $.derived(() => $.get(hasRenderLocked) ? void 0 : $.get(useAP) ? getAppearanceForAnnotation($.get(annotation)) : void 0);
3910
+ const selectHelpers = $.derived(() => ({
3911
+ defaultSelect: handleClick,
3912
+ selectAnnotation: (pi, id) => {
3913
+ var _a;
3914
+ return (_a = $.get(annotationProvides)) == null ? void 0 : _a.selectAnnotation(pi, id);
3915
+ },
3916
+ clearSelection: () => {
3917
+ var _a;
3918
+ return (_a = selectionCapability.provides) == null ? void 0 : _a.clear();
3919
+ },
3920
+ allAnnotations: $.get(annotations),
3921
+ pageIndex: $$props.pageIndex
3922
+ }));
3923
+ const noopSelect = $.derived(() => (e) => {
3924
+ e.stopPropagation();
3925
+ });
3926
+ const onSelect = $.derived(() => $.get(locked) ? $.get(noopSelect) : $.get(renderer).selectOverride ? (e) => $.get(renderer).selectOverride(e, $.get(annotation), $.get(selectHelpers)) : (e) => handleClick(e, $.get(annotation)));
3927
+ const RendererComponent = $.derived(() => $.get(hasRenderLocked) ? $.get(renderer).renderLocked : $.get(renderer).component);
3928
+ {
3929
+ const children = ($$anchor5, currentObject = $.noop, $$arg1) => {
3930
+ let appearanceActive = () => $$arg1 == null ? void 0 : $$arg1().appearanceActive;
3931
+ var fragment_4 = $.comment();
3932
+ var node_3 = $.first_child(fragment_4);
3933
+ {
3934
+ let $02 = $.derived(() => $.get(locked) ? void 0 : $.get(onSelect));
3935
+ $.component(node_3, () => $.get(RendererComponent), ($$anchor6, RendererComponent_1) => {
3936
+ RendererComponent_1($$anchor6, {
3937
+ get annotation() {
3938
+ return $.get(annotation);
3939
+ },
3940
+ get currentObject() {
3941
+ return currentObject();
3942
+ },
3943
+ get isSelected() {
3944
+ return $.get(isSelected);
3945
+ },
3946
+ get isEditing() {
3947
+ return $.get(isEditing);
3948
+ },
3949
+ get scale() {
3950
+ return $$props.scale;
3951
+ },
3952
+ get pageIndex() {
3953
+ return $$props.pageIndex;
3954
+ },
3955
+ get documentId() {
3956
+ return $$props.documentId;
3957
+ },
3958
+ get onClick() {
3959
+ return $.get($02);
3960
+ },
3961
+ get appearanceActive() {
3962
+ return appearanceActive();
3963
+ }
3964
+ });
3965
+ });
3848
3966
  }
3967
+ $.append($$anchor5, fragment_4);
3968
+ };
3969
+ let $0 = $.derived(() => $.get(locked) ? false : $.get(isMultiSelected));
3970
+ let $1 = $.derived(() => {
3971
+ var _a, _b;
3972
+ return $.get(locked) ? false : resolveInteractionProp((_a = $.get(tool)) == null ? void 0 : _a.interaction.isResizable, $.get(annotation).object, ((_b = $.get(defaults)) == null ? void 0 : _b.isResizable) ?? false);
3849
3973
  });
3850
- });
3851
- $.append($$anchor4, fragment_3);
3974
+ let $2 = $.derived(() => {
3975
+ var _a, _b;
3976
+ return resolveInteractionProp((_a = $.get(tool)) == null ? void 0 : _a.interaction.lockAspectRatio, $.get(annotation).object, ((_b = $.get(defaults)) == null ? void 0 : _b.lockAspectRatio) ?? false);
3977
+ });
3978
+ let $3 = $.derived(() => {
3979
+ var _a, _b;
3980
+ return $.get(locked) ? false : resolveInteractionProp((_a = $.get(tool)) == null ? void 0 : _a.interaction.isRotatable, $.get(annotation).object, ((_b = $.get(defaults)) == null ? void 0 : _b.isRotatable) ?? false);
3981
+ });
3982
+ let $4 = $.derived(() => $.get(locked) ? void 0 : $.get(renderer).vertexConfig);
3983
+ let $5 = $.derived(() => {
3984
+ var _a, _b;
3985
+ return $.get(locked) ? void 0 : ((_b = (_a = $.get(renderer)).hideSelectionMenu) == null ? void 0 : _b.call(_a, $.get(annotation).object)) ? void 0 : $.get(isMultiSelected) ? void 0 : $$props.selectionMenu;
3986
+ });
3987
+ let $6 = $.derived(() => {
3988
+ var _a, _b;
3989
+ return $.get(locked) ? void 0 : ((_b = (_a = $.get(renderer)).hideSelectionMenu) == null ? void 0 : _b.call(_a, $.get(annotation).object)) ? void 0 : $.get(isMultiSelected) ? void 0 : $$props.selectionMenuSnippet;
3990
+ });
3991
+ let $7 = $.derived(() => $.get(locked) ? void 0 : $.get(renderer).onDoubleClick ? (e) => {
3992
+ e.stopPropagation();
3993
+ $.get(renderer).onDoubleClick($.get(annotation).object.id, setEditingId);
3994
+ } : void 0);
3995
+ let $8 = $.derived(() => blendModeToCss($.get(annotation).object.blendMode ?? $.get(renderer).defaultBlendMode ?? PdfBlendMode.Normal));
3996
+ let $9 = $.derived(() => {
3997
+ var _a, _b;
3998
+ return (_b = (_a = $.get(renderer)).containerStyle) == null ? void 0 : _b.call(_a, $.get(annotation).object);
3999
+ });
4000
+ AnnotationContainer($$anchor4, $.spread_props(
4001
+ {
4002
+ get trackedAnnotation() {
4003
+ return $.get(annotation);
4004
+ },
4005
+ get isSelected() {
4006
+ return $.get(isSelected);
4007
+ },
4008
+ get isEditing() {
4009
+ return $.get(isEditing);
4010
+ },
4011
+ get isMultiSelected() {
4012
+ return $.get($0);
4013
+ },
4014
+ get isDraggable() {
4015
+ return $.get(finalDraggable);
4016
+ },
4017
+ get isResizable() {
4018
+ return $.get($1);
4019
+ },
4020
+ get lockAspectRatio() {
4021
+ return $.get($2);
4022
+ },
4023
+ get isRotatable() {
4024
+ return $.get($3);
4025
+ },
4026
+ get vertexConfig() {
4027
+ return $.get($4);
4028
+ },
4029
+ get selectionMenu() {
4030
+ return $.get($5);
4031
+ },
4032
+ get selectionMenuSnippet() {
4033
+ return $.get($6);
4034
+ },
4035
+ get onSelect() {
4036
+ return $.get(onSelect);
4037
+ },
4038
+ get onDoubleClick() {
4039
+ return $.get($7);
4040
+ },
4041
+ get zIndex() {
4042
+ return $.get(renderer).zIndex;
4043
+ },
4044
+ get blendMode() {
4045
+ return $.get($8);
4046
+ },
4047
+ get style() {
4048
+ return $.get($9);
4049
+ },
4050
+ get appearance() {
4051
+ return $.get(appearance);
4052
+ }
4053
+ },
4054
+ () => annotationsProps,
4055
+ { children, $$slots: { default: true } }
4056
+ ));
4057
+ }
3852
4058
  };
3853
- let $0 = $.derived(() => {
3854
- var _a, _b;
3855
- return resolveInteractionProp((_a = $.get(tool)) == null ? void 0 : _a.interaction.isResizable, $.get(annotation).object, ((_b = $.get(defaults)) == null ? void 0 : _b.isResizable) ?? false);
4059
+ $.if(node_2, ($$render) => {
4060
+ if (!($.get(locked) && $.get(renderer).hiddenWhenLocked)) $$render(consequent);
3856
4061
  });
3857
- let $1 = $.derived(() => {
3858
- var _a, _b;
3859
- return resolveInteractionProp((_a = $.get(tool)) == null ? void 0 : _a.interaction.lockAspectRatio, $.get(annotation).object, ((_b = $.get(defaults)) == null ? void 0 : _b.lockAspectRatio) ?? false);
3860
- });
3861
- let $2 = $.derived(() => {
3862
- var _a, _b;
3863
- return resolveInteractionProp((_a = $.get(tool)) == null ? void 0 : _a.interaction.isRotatable, $.get(annotation).object, ((_b = $.get(defaults)) == null ? void 0 : _b.isRotatable) ?? false);
3864
- });
3865
- let $3 = $.derived(() => {
3866
- var _a, _b;
3867
- return ((_b = (_a = $.get(renderer)).hideSelectionMenu) == null ? void 0 : _b.call(_a, $.get(annotation).object)) ? void 0 : $.get(isMultiSelected) ? void 0 : $$props.selectionMenu;
3868
- });
3869
- let $4 = $.derived(() => {
3870
- var _a, _b;
3871
- return ((_b = (_a = $.get(renderer)).hideSelectionMenu) == null ? void 0 : _b.call(_a, $.get(annotation).object)) ? void 0 : $.get(isMultiSelected) ? void 0 : $$props.selectionMenuSnippet;
3872
- });
3873
- let $5 = $.derived(() => $.get(renderer).onDoubleClick ? (e) => {
3874
- e.stopPropagation();
3875
- $.get(renderer).onDoubleClick($.get(annotation).object.id, setEditingId);
3876
- } : void 0);
3877
- let $6 = $.derived(() => blendModeToCss($.get(annotation).object.blendMode ?? $.get(renderer).defaultBlendMode ?? PdfBlendMode.Normal));
3878
- let $7 = $.derived(() => {
3879
- var _a, _b;
3880
- return (_b = (_a = $.get(renderer)).containerStyle) == null ? void 0 : _b.call(_a, $.get(annotation).object);
3881
- });
3882
- let $8 = $.derived(() => $.get(useAP) ? getAppearanceForAnnotation($.get(annotation)) : void 0);
3883
- AnnotationContainer($$anchor3, $.spread_props(
3884
- {
3885
- get trackedAnnotation() {
3886
- return $.get(annotation);
3887
- },
3888
- get isSelected() {
3889
- return $.get(isSelected);
3890
- },
3891
- get isEditing() {
3892
- return $.get(isEditing);
3893
- },
3894
- get isMultiSelected() {
3895
- return $.get(isMultiSelected);
3896
- },
3897
- get isDraggable() {
3898
- return $.get(finalDraggable);
3899
- },
3900
- get isResizable() {
3901
- return $.get($0);
3902
- },
3903
- get lockAspectRatio() {
3904
- return $.get($1);
3905
- },
3906
- get isRotatable() {
3907
- return $.get($2);
3908
- },
3909
- get vertexConfig() {
3910
- return $.get(renderer).vertexConfig;
3911
- },
3912
- get selectionMenu() {
3913
- return $.get($3);
3914
- },
3915
- get selectionMenuSnippet() {
3916
- return $.get($4);
3917
- },
3918
- get onSelect() {
3919
- return $.get(onSelect);
3920
- },
3921
- get onDoubleClick() {
3922
- return $.get($5);
3923
- },
3924
- get zIndex() {
3925
- return $.get(renderer).zIndex;
3926
- },
3927
- get blendMode() {
3928
- return $.get($6);
3929
- },
3930
- get style() {
3931
- return $.get($7);
3932
- },
3933
- get appearance() {
3934
- return $.get($8);
3935
- }
3936
- },
3937
- () => annotationsProps,
3938
- { children, $$slots: { default: true } }
3939
- ));
3940
4062
  }
4063
+ $.append($$anchor3, fragment_2);
3941
4064
  };
3942
4065
  $.if(node_1, ($$render) => {
3943
- if ($.get(renderer)) $$render(consequent);
4066
+ if ($.get(renderer)) $$render(consequent_1);
3944
4067
  });
3945
4068
  }
3946
4069
  $.append($$anchor2, fragment_1);
3947
4070
  });
3948
- var node_3 = $.sibling(node, 2);
4071
+ var node_4 = $.sibling(node, 2);
3949
4072
  {
3950
- var consequent_1 = ($$anchor2) => {
4073
+ var consequent_2 = ($$anchor2) => {
3951
4074
  {
3952
4075
  let $0 = $.derived(() => $$props.groupSelectionOutline ?? $$props.selectionOutline);
3953
4076
  GroupSelectionBox($$anchor2, {
@@ -4005,8 +4128,8 @@ function Annotations($$anchor, $$props) {
4005
4128
  });
4006
4129
  }
4007
4130
  };
4008
- $.if(node_3, ($$render) => {
4009
- if ($.get(allSelectedOnSamePage) && $.get(selectedAnnotationsOnPage).length >= 2) $$render(consequent_1);
4131
+ $.if(node_4, ($$render) => {
4132
+ if ($.get(allSelectedOnSamePage) && $.get(selectedAnnotationsOnPage).length >= 2) $$render(consequent_2);
4010
4133
  });
4011
4134
  }
4012
4135
  $.append($$anchor, fragment);
@@ -4265,8 +4388,10 @@ var root_7 = $.from_html(`<div><!></div>`);
4265
4388
  var root_9 = $.from_html(`<div><!></div>`);
4266
4389
  var root_11 = $.from_html(`<div><!></div>`);
4267
4390
  var root_13 = $.from_html(`<div><div></div></div>`);
4391
+ var root_15 = $.from_html(`<div><!></div>`);
4268
4392
  function PreviewRenderer($$anchor, $$props) {
4269
4393
  $.push($$props, true);
4394
+ const registry = getRendererRegistry();
4270
4395
  const bounds = $.derived(() => $$props.preview.bounds);
4271
4396
  const style = $.derived(() => ({
4272
4397
  left: $.get(bounds).origin.x * $$props.scale,
@@ -4302,7 +4427,7 @@ function PreviewRenderer($$anchor, $$props) {
4302
4427
  }));
4303
4428
  $.append($$anchor2, div);
4304
4429
  };
4305
- var alternate_5 = ($$anchor2) => {
4430
+ var alternate_6 = ($$anchor2) => {
4306
4431
  var fragment_1 = $.comment();
4307
4432
  var node_2 = $.first_child(fragment_1);
4308
4433
  {
@@ -4331,7 +4456,7 @@ function PreviewRenderer($$anchor, $$props) {
4331
4456
  }));
4332
4457
  $.append($$anchor3, div_1);
4333
4458
  };
4334
- var alternate_4 = ($$anchor3) => {
4459
+ var alternate_5 = ($$anchor3) => {
4335
4460
  var fragment_2 = $.comment();
4336
4461
  var node_4 = $.first_child(fragment_2);
4337
4462
  {
@@ -4360,7 +4485,7 @@ function PreviewRenderer($$anchor, $$props) {
4360
4485
  }));
4361
4486
  $.append($$anchor4, div_2);
4362
4487
  };
4363
- var alternate_3 = ($$anchor4) => {
4488
+ var alternate_4 = ($$anchor4) => {
4364
4489
  var fragment_3 = $.comment();
4365
4490
  var node_6 = $.first_child(fragment_3);
4366
4491
  {
@@ -4389,7 +4514,7 @@ function PreviewRenderer($$anchor, $$props) {
4389
4514
  }));
4390
4515
  $.append($$anchor5, div_3);
4391
4516
  };
4392
- var alternate_2 = ($$anchor5) => {
4517
+ var alternate_3 = ($$anchor5) => {
4393
4518
  var fragment_4 = $.comment();
4394
4519
  var node_8 = $.first_child(fragment_4);
4395
4520
  {
@@ -4418,7 +4543,7 @@ function PreviewRenderer($$anchor, $$props) {
4418
4543
  }));
4419
4544
  $.append($$anchor6, div_4);
4420
4545
  };
4421
- var alternate_1 = ($$anchor6) => {
4546
+ var alternate_2 = ($$anchor6) => {
4422
4547
  var fragment_5 = $.comment();
4423
4548
  var node_10 = $.first_child(fragment_5);
4424
4549
  {
@@ -4450,7 +4575,7 @@ function PreviewRenderer($$anchor, $$props) {
4450
4575
  ]);
4451
4576
  $.append($$anchor7, div_5);
4452
4577
  };
4453
- var alternate = ($$anchor7) => {
4578
+ var alternate_1 = ($$anchor7) => {
4454
4579
  var fragment_6 = $.comment();
4455
4580
  var node_12 = $.first_child(fragment_6);
4456
4581
  {
@@ -4479,10 +4604,53 @@ function PreviewRenderer($$anchor, $$props) {
4479
4604
  });
4480
4605
  $.append($$anchor8, div_6);
4481
4606
  };
4607
+ var alternate = ($$anchor8) => {
4608
+ const match = $.derived(() => registry == null ? void 0 : registry.getAll().find((r) => r.id === $$props.toolId && r.renderPreview));
4609
+ var fragment_7 = $.comment();
4610
+ var node_13 = $.first_child(fragment_7);
4611
+ {
4612
+ var consequent_7 = ($$anchor9) => {
4613
+ const PreviewComponent = $.derived(() => $.get(match).renderPreview);
4614
+ var div_8 = root_15();
4615
+ let styles_8;
4616
+ var node_14 = $.child(div_8);
4617
+ $.component(node_14, () => $.get(PreviewComponent), ($$anchor10, PreviewComponent_1) => {
4618
+ PreviewComponent_1($$anchor10, {
4619
+ get data() {
4620
+ return $$props.preview.data;
4621
+ },
4622
+ get bounds() {
4623
+ return $$props.preview.bounds;
4624
+ },
4625
+ get scale() {
4626
+ return $$props.scale;
4627
+ }
4628
+ });
4629
+ });
4630
+ $.reset(div_8);
4631
+ $.template_effect(() => styles_8 = $.set_style(div_8, "", styles_8, {
4632
+ position: "absolute",
4633
+ left: `${$.get(style).left ?? ""}px`,
4634
+ top: `${$.get(style).top ?? ""}px`,
4635
+ width: `${$.get(style).width ?? ""}px`,
4636
+ height: `${$.get(style).height ?? ""}px`,
4637
+ "pointer-events": "none",
4638
+ "z-index": "10"
4639
+ }));
4640
+ $.append($$anchor9, div_8);
4641
+ };
4642
+ $.if(node_13, ($$render) => {
4643
+ var _a;
4644
+ if ((_a = $.get(match)) == null ? void 0 : _a.renderPreview) $$render(consequent_7);
4645
+ });
4646
+ }
4647
+ $.append($$anchor8, fragment_7);
4648
+ };
4482
4649
  $.if(
4483
4650
  node_12,
4484
4651
  ($$render) => {
4485
4652
  if ($$props.preview.type === PdfAnnotationSubtype.FREETEXT) $$render(consequent_6);
4653
+ else $$render(alternate, false);
4486
4654
  },
4487
4655
  true
4488
4656
  );
@@ -4493,7 +4661,7 @@ function PreviewRenderer($$anchor, $$props) {
4493
4661
  node_10,
4494
4662
  ($$render) => {
4495
4663
  if ($$props.preview.type === PdfAnnotationSubtype.INK) $$render(consequent_5);
4496
- else $$render(alternate, false);
4664
+ else $$render(alternate_1, false);
4497
4665
  },
4498
4666
  true
4499
4667
  );
@@ -4504,7 +4672,7 @@ function PreviewRenderer($$anchor, $$props) {
4504
4672
  node_8,
4505
4673
  ($$render) => {
4506
4674
  if ($$props.preview.type === PdfAnnotationSubtype.LINE) $$render(consequent_4);
4507
- else $$render(alternate_1, false);
4675
+ else $$render(alternate_2, false);
4508
4676
  },
4509
4677
  true
4510
4678
  );
@@ -4515,7 +4683,7 @@ function PreviewRenderer($$anchor, $$props) {
4515
4683
  node_6,
4516
4684
  ($$render) => {
4517
4685
  if ($$props.preview.type === PdfAnnotationSubtype.POLYLINE) $$render(consequent_3);
4518
- else $$render(alternate_2, false);
4686
+ else $$render(alternate_3, false);
4519
4687
  },
4520
4688
  true
4521
4689
  );
@@ -4526,7 +4694,7 @@ function PreviewRenderer($$anchor, $$props) {
4526
4694
  node_4,
4527
4695
  ($$render) => {
4528
4696
  if ($$props.preview.type === PdfAnnotationSubtype.POLYGON) $$render(consequent_2);
4529
- else $$render(alternate_3, false);
4697
+ else $$render(alternate_4, false);
4530
4698
  },
4531
4699
  true
4532
4700
  );
@@ -4537,7 +4705,7 @@ function PreviewRenderer($$anchor, $$props) {
4537
4705
  node_2,
4538
4706
  ($$render) => {
4539
4707
  if ($$props.preview.type === PdfAnnotationSubtype.SQUARE) $$render(consequent_1);
4540
- else $$render(alternate_4, false);
4708
+ else $$render(alternate_5, false);
4541
4709
  },
4542
4710
  true
4543
4711
  );
@@ -4546,7 +4714,7 @@ function PreviewRenderer($$anchor, $$props) {
4546
4714
  };
4547
4715
  $.if(node, ($$render) => {
4548
4716
  if ($$props.preview.type === PdfAnnotationSubtype.CIRCLE) $$render(consequent);
4549
- else $$render(alternate_5, false);
4717
+ else $$render(alternate_6, false);
4550
4718
  });
4551
4719
  }
4552
4720
  $.append($$anchor, fragment);
@@ -4622,8 +4790,12 @@ function AnnotationPaintLayer($$anchor, $$props) {
4622
4790
  var node = $.sibling(canvas_1, 2);
4623
4791
  $.each(node, 17, () => Array.from($.get(previews).entries()), ([toolId, preview]) => toolId, ($$anchor2, $$item) => {
4624
4792
  var $$array = $.derived(() => $.to_array($.get($$item), 2));
4793
+ let toolId = () => $.get($$array)[0];
4625
4794
  let preview = () => $.get($$array)[1];
4626
4795
  PreviewRenderer($$anchor2, {
4796
+ get toolId() {
4797
+ return toolId();
4798
+ },
4627
4799
  get preview() {
4628
4800
  return preview();
4629
4801
  },
@@ -4785,7 +4957,7 @@ function AnnotationLayer($$anchor, $$props) {
4785
4957
  $.append($$anchor, div);
4786
4958
  $.pop();
4787
4959
  }
4788
- const AnnotationPluginPackage = createPluginPackage(AnnotationPluginPackage$1).addWrapper(RendererRegistryProvider).build();
4960
+ const AnnotationPluginPackage = createPluginPackage(AnnotationPluginPackage$1).addWrapper(RendererRegistryProvider).addUtility(AnnotationNavigationHandler).build();
4789
4961
  export {
4790
4962
  AnnotationContainer,
4791
4963
  AnnotationLayer,
@@ -4817,6 +4989,7 @@ export {
4817
4989
  provideRendererRegistry,
4818
4990
  useAnnotation,
4819
4991
  useAnnotationCapability,
4820
- useAnnotationPlugin
4992
+ useAnnotationPlugin,
4993
+ useIOSZoomPrevention
4821
4994
  };
4822
4995
  //# sourceMappingURL=index.js.map