@arbidocs/blocks 0.5.123 → 0.5.125

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 (192) hide show
  1. package/dist/{ClippingMediaViewer-IEIBT74X.cjs → ClippingMediaViewer-ZFEX5A3U.cjs} +11 -10
  2. package/dist/ClippingMediaViewer-ZFEX5A3U.cjs.map +1 -0
  3. package/dist/{ClippingPdfViewer-OGYLMVCE.cjs → ClippingPdfViewer-3LRTEPHV.cjs} +45 -11
  4. package/dist/ClippingPdfViewer-3LRTEPHV.cjs.map +1 -0
  5. package/dist/ConnectedCallDock-XJOYVVAH.cjs +6 -6
  6. package/dist/ConnectedCallRoom-CUDYAPQK.cjs +6 -6
  7. package/dist/{ConnectedNativeDocxComparison-QKHCYD6W.cjs → ConnectedNativeDocxComparison-7QQ55JIO.cjs} +13 -13
  8. package/dist/{ConnectedNativeDocxComparison-QKHCYD6W.cjs.map → ConnectedNativeDocxComparison-7QQ55JIO.cjs.map} +1 -1
  9. package/dist/{ConnectedPresentation-5DOJ35XL.cjs → ConnectedPresentation-L32JPRFI.cjs} +30 -156
  10. package/dist/ConnectedPresentation-L32JPRFI.cjs.map +1 -0
  11. package/dist/{ConnectedProductionSetDialog-LHB4VQWC.cjs → ConnectedProductionSetDialog-4EAY6KAZ.cjs} +3 -3
  12. package/dist/{ConnectedProductionSetDialog-LHB4VQWC.cjs.map → ConnectedProductionSetDialog-4EAY6KAZ.cjs.map} +1 -1
  13. package/dist/{ConnectedSlidesTab-7YMEDGUU.cjs → ConnectedSlidesTab-P7GGNUTO.cjs} +31 -29
  14. package/dist/ConnectedSlidesTab-P7GGNUTO.cjs.map +1 -0
  15. package/dist/{ConnectedStreamedWordArtifact-AG62232A.cjs → ConnectedStreamedWordArtifact-7NJ3N52V.cjs} +13 -13
  16. package/dist/{ConnectedStreamedWordArtifact-AG62232A.cjs.map → ConnectedStreamedWordArtifact-7NJ3N52V.cjs.map} +1 -1
  17. package/dist/{DocumentReviewCard-M53XFLI2.cjs → DocumentReviewCard-BFPOFQXI.cjs} +16 -16
  18. package/dist/{DocumentReviewCard-M53XFLI2.cjs.map → DocumentReviewCard-BFPOFQXI.cjs.map} +1 -1
  19. package/dist/{FilesViewerDialog-2QCCRWF2.cjs → FilesViewerDialog-MHUVEZ7M.cjs} +35 -32
  20. package/dist/FilesViewerDialog-MHUVEZ7M.cjs.map +1 -0
  21. package/dist/{NativeDocxEditor-2LQY2CTV.cjs → NativeDocxEditor-SIRYPMBN.cjs} +6 -6
  22. package/dist/{NativeDocxEditor-2LQY2CTV.cjs.map → NativeDocxEditor-SIRYPMBN.cjs.map} +1 -1
  23. package/dist/SpotlightStrip-ED22UYTM.cjs +398 -0
  24. package/dist/SpotlightStrip-ED22UYTM.cjs.map +1 -0
  25. package/dist/{WorkspaceTableView-3XYAV4BV.cjs → WorkspaceTableView-MIFYXV3G.cjs} +8 -8
  26. package/dist/{WorkspaceTableView-3XYAV4BV.cjs.map → WorkspaceTableView-MIFYXV3G.cjs.map} +1 -1
  27. package/dist/agents/index.cjs +216 -216
  28. package/dist/ai-IEIR7SC2.cjs +3 -3
  29. package/dist/auth/index.cjs +1 -1
  30. package/dist/calls/index.cjs +2 -2
  31. package/dist/chat/index.cjs +6 -6
  32. package/dist/{chunk-GNZAH6UI.cjs → chunk-2K6IMIVL.cjs} +3 -3
  33. package/dist/{chunk-GNZAH6UI.cjs.map → chunk-2K6IMIVL.cjs.map} +1 -1
  34. package/dist/{chunk-NQML7IUC.cjs → chunk-3UP32FM3.cjs} +6 -6
  35. package/dist/{chunk-NQML7IUC.cjs.map → chunk-3UP32FM3.cjs.map} +1 -1
  36. package/dist/chunk-3ZZZO4F7.cjs +145 -0
  37. package/dist/chunk-3ZZZO4F7.cjs.map +1 -0
  38. package/dist/{chunk-L4CIFLCU.cjs → chunk-4LP5MJGQ.cjs} +4 -4
  39. package/dist/{chunk-L4CIFLCU.cjs.map → chunk-4LP5MJGQ.cjs.map} +1 -1
  40. package/dist/{chunk-JD2HX2BR.cjs → chunk-6JMW3IJ2.cjs} +152 -155
  41. package/dist/chunk-6JMW3IJ2.cjs.map +1 -0
  42. package/dist/{chunk-WV7BCGCK.cjs → chunk-7RJZIPLE.cjs} +33 -33
  43. package/dist/{chunk-WV7BCGCK.cjs.map → chunk-7RJZIPLE.cjs.map} +1 -1
  44. package/dist/{chunk-WFMWKPGY.cjs → chunk-ADPRIBSH.cjs} +9 -33
  45. package/dist/chunk-ADPRIBSH.cjs.map +1 -0
  46. package/dist/{chunk-7NLO7ASW.cjs → chunk-AISYXX4M.cjs} +4 -4
  47. package/dist/{chunk-7NLO7ASW.cjs.map → chunk-AISYXX4M.cjs.map} +1 -1
  48. package/dist/{chunk-5QERK4PK.cjs → chunk-AS6QZETU.cjs} +35 -35
  49. package/dist/{chunk-5QERK4PK.cjs.map → chunk-AS6QZETU.cjs.map} +1 -1
  50. package/dist/{chunk-V6MW7B4B.cjs → chunk-B3R62764.cjs} +6 -6
  51. package/dist/{chunk-V6MW7B4B.cjs.map → chunk-B3R62764.cjs.map} +1 -1
  52. package/dist/{chunk-VKH3BEZE.cjs → chunk-BLIO3B7Z.cjs} +3 -3
  53. package/dist/{chunk-VKH3BEZE.cjs.map → chunk-BLIO3B7Z.cjs.map} +1 -1
  54. package/dist/{chunk-46P7IDBX.cjs → chunk-CQ2RJYE2.cjs} +4 -4
  55. package/dist/chunk-CQ2RJYE2.cjs.map +1 -0
  56. package/dist/{chunk-MXBXZXXQ.cjs → chunk-ENOPKX7E.cjs} +3 -3
  57. package/dist/{chunk-MXBXZXXQ.cjs.map → chunk-ENOPKX7E.cjs.map} +1 -1
  58. package/dist/{chunk-2CSLFAGF.cjs → chunk-GAMRVB3I.cjs} +4 -3
  59. package/dist/chunk-GAMRVB3I.cjs.map +1 -0
  60. package/dist/chunk-IRGRMJPP.cjs +18 -0
  61. package/dist/{chunk-SDRYSLOX.cjs.map → chunk-IRGRMJPP.cjs.map} +1 -1
  62. package/dist/{chunk-ADDQKZ5I.cjs → chunk-J3FFSEKO.cjs} +4 -4
  63. package/dist/{chunk-ADDQKZ5I.cjs.map → chunk-J3FFSEKO.cjs.map} +1 -1
  64. package/dist/chunk-JITYC4OS.cjs +66 -0
  65. package/dist/chunk-JITYC4OS.cjs.map +1 -0
  66. package/dist/chunk-JY7UUZQG.cjs +1513 -0
  67. package/dist/chunk-JY7UUZQG.cjs.map +1 -0
  68. package/dist/{chunk-ALK3PUUB.cjs → chunk-L6HTZIBD.cjs} +3 -3
  69. package/dist/{chunk-ALK3PUUB.cjs.map → chunk-L6HTZIBD.cjs.map} +1 -1
  70. package/dist/chunk-MVXHTAJ4.cjs +111 -0
  71. package/dist/chunk-MVXHTAJ4.cjs.map +1 -0
  72. package/dist/{chunk-OHHKBURG.cjs → chunk-OGK377NL.cjs} +33 -33
  73. package/dist/{chunk-OHHKBURG.cjs.map → chunk-OGK377NL.cjs.map} +1 -1
  74. package/dist/{chunk-T73BHNQX.cjs → chunk-OHWHYVKG.cjs} +3 -3
  75. package/dist/{chunk-T73BHNQX.cjs.map → chunk-OHWHYVKG.cjs.map} +1 -1
  76. package/dist/{chunk-4TTX6ZNS.cjs → chunk-ORNLCBNE.cjs} +24 -2
  77. package/dist/chunk-ORNLCBNE.cjs.map +1 -0
  78. package/dist/{chunk-MLA2BJ2Y.cjs → chunk-PSB64T43.cjs} +28 -28
  79. package/dist/{chunk-MLA2BJ2Y.cjs.map → chunk-PSB64T43.cjs.map} +1 -1
  80. package/dist/{chunk-COD5ENHK.cjs → chunk-PVJ5ODDB.cjs} +4 -4
  81. package/dist/{chunk-COD5ENHK.cjs.map → chunk-PVJ5ODDB.cjs.map} +1 -1
  82. package/dist/{chunk-7557LDAN.cjs → chunk-PWBRE7JA.cjs} +5 -5
  83. package/dist/{chunk-7557LDAN.cjs.map → chunk-PWBRE7JA.cjs.map} +1 -1
  84. package/dist/{chunk-7PN3YENO.cjs → chunk-QIK7E6VF.cjs} +4 -4
  85. package/dist/{chunk-7PN3YENO.cjs.map → chunk-QIK7E6VF.cjs.map} +1 -1
  86. package/dist/{chunk-DWMWEALB.cjs → chunk-TSFNLY3K.cjs} +143 -1634
  87. package/dist/chunk-TSFNLY3K.cjs.map +1 -0
  88. package/dist/{chunk-YGBHY67W.cjs → chunk-UA7HOLAZ.cjs} +5 -5
  89. package/dist/{chunk-YGBHY67W.cjs.map → chunk-UA7HOLAZ.cjs.map} +1 -1
  90. package/dist/{chunk-KXIRVKCJ.cjs → chunk-UUENH4BJ.cjs} +3 -3
  91. package/dist/{chunk-KXIRVKCJ.cjs.map → chunk-UUENH4BJ.cjs.map} +1 -1
  92. package/dist/chunk-WVZLAAIZ.cjs +31 -0
  93. package/dist/chunk-WVZLAAIZ.cjs.map +1 -0
  94. package/dist/{chunk-E3L5DB5F.cjs → chunk-YOEP3I4V.cjs} +5 -5
  95. package/dist/{chunk-E3L5DB5F.cjs.map → chunk-YOEP3I4V.cjs.map} +1 -1
  96. package/dist/{chunk-SNPK3R3O.cjs → chunk-YVO6Z5BS.cjs} +10 -10
  97. package/dist/{chunk-SNPK3R3O.cjs.map → chunk-YVO6Z5BS.cjs.map} +1 -1
  98. package/dist/chunk-ZZZITHGK.cjs +119 -0
  99. package/dist/chunk-ZZZITHGK.cjs.map +1 -0
  100. package/dist/connect/docx.cjs +17 -17
  101. package/dist/connect/index.cjs +994 -994
  102. package/dist/connect/viewer.cjs +28 -25
  103. package/dist/connection/presentation/ClippingMediaViewer.js +3 -3
  104. package/dist/connection/presentation/ClippingMediaViewer.js.map +2 -2
  105. package/dist/connection/presentation/ClippingPdfViewer.d.ts +4 -3
  106. package/dist/connection/presentation/ClippingPdfViewer.js +48 -9
  107. package/dist/connection/presentation/ClippingPdfViewer.js.map +2 -2
  108. package/dist/connection/presentation/SpotlightLayer.d.ts +5 -0
  109. package/dist/connection/presentation/SpotlightLayer.js +19 -0
  110. package/dist/connection/presentation/SpotlightLayer.js.map +7 -0
  111. package/dist/connection/presentation/SpotlightStrip.d.ts +10 -0
  112. package/dist/connection/presentation/SpotlightStrip.js +237 -0
  113. package/dist/connection/presentation/SpotlightStrip.js.map +7 -0
  114. package/dist/connection/presentation/useViewerClipping.d.ts +4 -3
  115. package/dist/connection/presentation/useViewerClipping.js +8 -4
  116. package/dist/connection/presentation/useViewerClipping.js.map +2 -2
  117. package/dist/connection/viewer/ConnectedDocumentViewer.js +1 -1
  118. package/dist/connection/viewer/ConnectedDocumentViewer.js.map +2 -2
  119. package/dist/connection/viewer/VersionDropdown.js +1 -1
  120. package/dist/connection/viewer/VersionDropdown.js.map +1 -1
  121. package/dist/connection/viewer/ViewerPdfPane.js +2 -0
  122. package/dist/connection/viewer/ViewerPdfPane.js.map +2 -2
  123. package/dist/connection/viewer/pdf/passageHighlights.d.ts +5 -0
  124. package/dist/connection/viewer/pdf/passageHighlights.js +14 -1
  125. package/dist/connection/viewer/pdf/passageHighlights.js.map +2 -2
  126. package/dist/connection/viewer/pdf/usePassageTextFallback.d.ts +12 -0
  127. package/dist/connection/viewer/pdf/usePassageTextFallback.js +30 -0
  128. package/dist/connection/viewer/pdf/usePassageTextFallback.js.map +7 -0
  129. package/dist/connection/viewer/pdf/usePdfPassageHighlights.js +2 -11
  130. package/dist/connection/viewer/pdf/usePdfPassageHighlights.js.map +2 -2
  131. package/dist/connection/viewer/useCleanView.d.ts +3 -1
  132. package/dist/connection/viewer/useCleanView.js +6 -3
  133. package/dist/connection/viewer/useCleanView.js.map +2 -2
  134. package/dist/connection/viewer/useViewerTabs.js +13 -1
  135. package/dist/connection/viewer/useViewerTabs.js.map +2 -2
  136. package/dist/document-tools/DocumentToolButtons.js +1 -1
  137. package/dist/document-tools/DocumentToolButtons.js.map +1 -1
  138. package/dist/document-tools/index.cjs +20 -20
  139. package/dist/docx/DocxCommandMenu.js +2 -1
  140. package/dist/docx/DocxCommandMenu.js.map +2 -2
  141. package/dist/docx/index.cjs +38 -38
  142. package/dist/embed/index.cjs +20 -20
  143. package/dist/facts/index.cjs +64 -64
  144. package/dist/files/index.cjs +223 -223
  145. package/dist/index.cjs +521 -521
  146. package/dist/presentation/ClipCaptureOverlay.d.ts +7 -3
  147. package/dist/presentation/ClipCaptureOverlay.js +43 -14
  148. package/dist/presentation/ClipCaptureOverlay.js.map +2 -2
  149. package/dist/presentation/PresentControls.d.ts +8 -0
  150. package/dist/presentation/PresentControls.js +1 -0
  151. package/dist/presentation/PresentControls.js.map +2 -2
  152. package/dist/presentation/PresentationStage.d.ts +10 -2
  153. package/dist/presentation/PresentationStage.js +6 -3
  154. package/dist/presentation/PresentationStage.js.map +2 -2
  155. package/dist/presentation/PresenterView.js +1 -22
  156. package/dist/presentation/PresenterView.js.map +2 -2
  157. package/dist/presentation/SpotlightView.d.ts +19 -0
  158. package/dist/presentation/SpotlightView.js +180 -0
  159. package/dist/presentation/SpotlightView.js.map +7 -0
  160. package/dist/presentation/passage-clip.d.ts +17 -0
  161. package/dist/presentation/passage-clip.js +25 -0
  162. package/dist/presentation/passage-clip.js.map +7 -0
  163. package/dist/presentation/spotlight.d.ts +58 -0
  164. package/dist/presentation/spotlight.js +110 -0
  165. package/dist/presentation/spotlight.js.map +7 -0
  166. package/dist/presentation/store.d.ts +5 -0
  167. package/dist/presentation/store.js +19 -0
  168. package/dist/presentation/store.js.map +2 -2
  169. package/dist/presentation/usePointerActive.d.ts +2 -0
  170. package/dist/presentation/usePointerActive.js +28 -0
  171. package/dist/presentation/usePointerActive.js.map +7 -0
  172. package/dist/settings/index.cjs +146 -146
  173. package/dist/site/index.cjs +6 -6
  174. package/dist/studio/index.cjs +9 -9
  175. package/dist/styles.css +1 -1
  176. package/dist/workflow-canvas/index.cjs +35 -35
  177. package/node_modules/@arbidocs/coedit/package.json +1 -1
  178. package/package.json +5 -5
  179. package/dist/ClippingMediaViewer-IEIBT74X.cjs.map +0 -1
  180. package/dist/ClippingPdfViewer-OGYLMVCE.cjs.map +0 -1
  181. package/dist/ConnectedPresentation-5DOJ35XL.cjs.map +0 -1
  182. package/dist/ConnectedSlidesTab-7YMEDGUU.cjs.map +0 -1
  183. package/dist/FilesViewerDialog-2QCCRWF2.cjs.map +0 -1
  184. package/dist/chunk-2CSLFAGF.cjs.map +0 -1
  185. package/dist/chunk-46P7IDBX.cjs.map +0 -1
  186. package/dist/chunk-4TTX6ZNS.cjs.map +0 -1
  187. package/dist/chunk-DWMWEALB.cjs.map +0 -1
  188. package/dist/chunk-JD2HX2BR.cjs.map +0 -1
  189. package/dist/chunk-SDRYSLOX.cjs +0 -18
  190. package/dist/chunk-WFMWKPGY.cjs.map +0 -1
  191. package/dist/chunk-XK4TVJKD.cjs +0 -73
  192. package/dist/chunk-XK4TVJKD.cjs.map +0 -1
@@ -0,0 +1,119 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var react = require('react');
5
+ var annotations = require('@arbidocs/react/annotations');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ // src/presentation/passage-clip.ts
9
+ var PASSAGE_MARGIN_X = 0.015;
10
+ var PASSAGE_MARGIN_Y = 8e-3;
11
+ function passageClipRect([x0, y0, x1, y1]) {
12
+ const left = Math.max(0, x0 - PASSAGE_MARGIN_X);
13
+ const top = Math.max(0, y0 - PASSAGE_MARGIN_Y);
14
+ const right = Math.min(1, x1 + PASSAGE_MARGIN_X);
15
+ const bottom = Math.min(1, y1 + PASSAGE_MARGIN_Y);
16
+ return { x: left, y: top, w: right - left, h: bottom - top };
17
+ }
18
+ function passageAt(passages, x, y) {
19
+ let best = null;
20
+ for (const passage of passages) {
21
+ const inside = x >= passage.x && x <= passage.x + passage.w && y >= passage.y && y <= passage.y + passage.h;
22
+ if (inside && (!best || passage.w * passage.h < best.w * best.h)) best = passage;
23
+ }
24
+ return best;
25
+ }
26
+ var MIN_CLIP_FRACTION = 0.02;
27
+ var percent = (rect) => ({
28
+ left: `${rect.x * 100}%`,
29
+ top: `${rect.y * 100}%`,
30
+ width: `${rect.w * 100}%`,
31
+ height: `${rect.h * 100}%`
32
+ });
33
+ function ClipCaptureOverlay({ page, passages = [], onCapture }) {
34
+ const start = react.useRef(null);
35
+ const [draft, setDraft] = react.useState(null);
36
+ const [hovered, setHovered] = react.useState(null);
37
+ const point = (event, box) => ({
38
+ x: event.clientX - box.left,
39
+ y: event.clientY - box.top
40
+ });
41
+ const passageUnder = (event, box) => {
42
+ if (!passages.length || !box.width || !box.height) return null;
43
+ const p = point(event, box);
44
+ return passageAt(passages, p.x / box.width, p.y / box.height);
45
+ };
46
+ const onPointerDown = (event) => {
47
+ if (event.button !== 0) return;
48
+ event.preventDefault();
49
+ event.currentTarget.setPointerCapture?.(event.pointerId);
50
+ const box = event.currentTarget.getBoundingClientRect();
51
+ start.current = { ...point(event, box), box };
52
+ setDraft(null);
53
+ };
54
+ const onPointerMove = (event) => {
55
+ const s = start.current;
56
+ if (!s) {
57
+ const next = passageUnder(event, event.currentTarget.getBoundingClientRect());
58
+ if (next !== hovered) setHovered(next);
59
+ return;
60
+ }
61
+ const p = point(event, s.box);
62
+ setDraft({ x: s.x, y: s.y, width: p.x - s.x, height: p.y - s.y });
63
+ };
64
+ const onPointerUp = (event) => {
65
+ const s = start.current;
66
+ start.current = null;
67
+ setDraft(null);
68
+ if (!s) return;
69
+ const p = point(event, s.box);
70
+ const size = { width: s.box.width, height: s.box.height };
71
+ const dragged = annotations.toNorm({ x: s.x, y: s.y, width: p.x - s.x, height: p.y - s.y }, size);
72
+ const rect = dragged.w < MIN_CLIP_FRACTION || dragged.h < MIN_CLIP_FRACTION ? passageUnder(event, s.box) : dragged;
73
+ if (!rect) return;
74
+ onCapture({ page, rect, aspect: rect.w * size.width / (rect.h * size.height) });
75
+ };
76
+ const shown = draft && {
77
+ left: Math.min(draft.x, draft.x + draft.width),
78
+ top: Math.min(draft.y, draft.y + draft.height),
79
+ width: Math.abs(draft.width),
80
+ height: Math.abs(draft.height)
81
+ };
82
+ return /* @__PURE__ */ jsxRuntime.jsxs(
83
+ "div",
84
+ {
85
+ className: "absolute inset-0 z-20 cursor-crosshair touch-none select-none",
86
+ onPointerDown,
87
+ onPointerMove,
88
+ onPointerUp,
89
+ onPointerLeave: () => setHovered(null),
90
+ onPointerCancel: () => {
91
+ start.current = null;
92
+ setDraft(null);
93
+ },
94
+ "data-testid": `clip-capture-${page}`,
95
+ children: [
96
+ hovered && !draft && /* @__PURE__ */ jsxRuntime.jsx(
97
+ "div",
98
+ {
99
+ className: "pointer-events-none absolute rounded-sm bg-ai-soft/40 ring-2 ring-ai-accent",
100
+ style: percent(hovered),
101
+ "data-testid": "clip-passage-outline"
102
+ }
103
+ ),
104
+ shown && /* @__PURE__ */ jsxRuntime.jsx(
105
+ "div",
106
+ {
107
+ className: "pointer-events-none absolute border-2 border-dashed border-primary bg-primary/10",
108
+ style: shown
109
+ }
110
+ )
111
+ ]
112
+ }
113
+ );
114
+ }
115
+
116
+ exports.ClipCaptureOverlay = ClipCaptureOverlay;
117
+ exports.passageClipRect = passageClipRect;
118
+ //# sourceMappingURL=chunk-ZZZITHGK.cjs.map
119
+ //# sourceMappingURL=chunk-ZZZITHGK.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/presentation/passage-clip.ts","../src/presentation/ClipCaptureOverlay.tsx"],"names":["useRef","useState","toNorm","jsxs","jsx"],"mappings":"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","file":"chunk-ZZZITHGK.cjs","sourcesContent":["/**\n * Clipping a passage with one click: the parser places each passage on its page (`page_bbox`,\n * fractions of the page), so in clip mode the passage under the pointer is outlined and a click\n * clips exactly its box, with a little room around it — the same room the server leaves when it\n * clips a passage for a slide (`PASSAGE_MARGIN_X` / `_Y` in its presentation tool).\n */\n\nimport type { Rect } from './model'\n\n/** Room kept around a clipped passage, as fractions of the page's width and height. */\nexport const PASSAGE_MARGIN_X = 0.015\nexport const PASSAGE_MARGIN_Y = 0.008\n\n/** A passage's box `[x0, y0, x1, y1]` as the area to clip: with its margin, kept on the page. */\nexport function passageClipRect([x0, y0, x1, y1]: readonly [number, number, number, number]): Rect {\n const left = Math.max(0, x0 - PASSAGE_MARGIN_X)\n const top = Math.max(0, y0 - PASSAGE_MARGIN_Y)\n const right = Math.min(1, x1 + PASSAGE_MARGIN_X)\n const bottom = Math.min(1, y1 + PASSAGE_MARGIN_Y)\n return { x: left, y: top, w: right - left, h: bottom - top }\n}\n\n/**\n * The passage at a point of the page (fractions), if any: the smallest one holding it, so a\n * caption inside a figure's box wins over the figure.\n */\nexport function passageAt(passages: readonly Rect[], x: number, y: number): Rect | null {\n let best: Rect | null = null\n for (const passage of passages) {\n const inside =\n x >= passage.x && x <= passage.x + passage.w && y >= passage.y && y <= passage.y + passage.h\n if (inside && (!best || passage.w * passage.h < best.w * best.h)) best = passage\n }\n return best\n}\n","/**\n * Over a page while clipping. A click on a passage clips exactly that passage (the parser placed it\n * on the page; it is outlined under the pointer); a drag clips any rectangle (a figure, a scan, a\n * page with no passages). Either way the area is kept as fractions of the page (`toNorm`), so it\n * does not depend on the zoom it was taken at.\n */\n\nimport { useRef, useState, type PointerEvent as ReactPointerEvent } from 'react'\nimport { toNorm, type PixelRect } from '@arbidocs/react/annotations'\nimport type { Rect } from './model'\nimport { passageAt } from './passage-clip'\n\n/** Smaller than this (a fraction of the page, either side) is a click, not a dragged clip. */\nconst MIN_CLIP_FRACTION = 0.02\n\nexport interface ClipCaptureOverlayProps {\n page: number\n /** The page's passages, as the areas a click clips (page fractions, margin included). */\n passages?: readonly Rect[]\n onCapture: (capture: { page: number; rect: Rect; aspect: number }) => void\n}\n\nconst percent = (rect: Rect) => ({\n left: `${rect.x * 100}%`,\n top: `${rect.y * 100}%`,\n width: `${rect.w * 100}%`,\n height: `${rect.h * 100}%`,\n})\n\nexport function ClipCaptureOverlay({ page, passages = [], onCapture }: ClipCaptureOverlayProps) {\n const start = useRef<{ x: number; y: number; box: DOMRect } | null>(null)\n const [draft, setDraft] = useState<PixelRect | null>(null)\n const [hovered, setHovered] = useState<Rect | null>(null)\n\n const point = (event: ReactPointerEvent, box: DOMRect) => ({\n x: event.clientX - box.left,\n y: event.clientY - box.top,\n })\n /** The passage under the pointer, if any. */\n const passageUnder = (event: ReactPointerEvent, box: DOMRect) => {\n if (!passages.length || !box.width || !box.height) return null\n const p = point(event, box)\n return passageAt(passages, p.x / box.width, p.y / box.height)\n }\n\n const onPointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n if (event.button !== 0) return\n event.preventDefault()\n event.currentTarget.setPointerCapture?.(event.pointerId)\n const box = event.currentTarget.getBoundingClientRect()\n start.current = { ...point(event, box), box }\n setDraft(null)\n }\n\n const onPointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n const s = start.current\n if (!s) {\n const next = passageUnder(event, event.currentTarget.getBoundingClientRect())\n if (next !== hovered) setHovered(next)\n return\n }\n const p = point(event, s.box)\n setDraft({ x: s.x, y: s.y, width: p.x - s.x, height: p.y - s.y })\n }\n\n const onPointerUp = (event: ReactPointerEvent) => {\n const s = start.current\n start.current = null\n setDraft(null)\n if (!s) return\n const p = point(event, s.box)\n const size = { width: s.box.width, height: s.box.height }\n const dragged = toNorm({ x: s.x, y: s.y, width: p.x - s.x, height: p.y - s.y }, size)\n // A click: the passage under it, if there is one.\n const rect =\n dragged.w < MIN_CLIP_FRACTION || dragged.h < MIN_CLIP_FRACTION\n ? passageUnder(event, s.box)\n : dragged\n if (!rect) return\n onCapture({ page, rect, aspect: (rect.w * size.width) / (rect.h * size.height) })\n }\n\n const shown = draft && {\n left: Math.min(draft.x, draft.x + draft.width),\n top: Math.min(draft.y, draft.y + draft.height),\n width: Math.abs(draft.width),\n height: Math.abs(draft.height),\n }\n\n return (\n <div\n className=\"absolute inset-0 z-20 cursor-crosshair touch-none select-none\"\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerLeave={() => setHovered(null)}\n onPointerCancel={() => {\n start.current = null\n setDraft(null)\n }}\n data-testid={`clip-capture-${page}`}\n >\n {/* The passage a click would clip, exactly as it would be clipped. */}\n {hovered && !draft && (\n <div\n className=\"pointer-events-none absolute rounded-sm bg-ai-soft/40 ring-2 ring-ai-accent\"\n style={percent(hovered)}\n data-testid=\"clip-passage-outline\"\n />\n )}\n {shown && (\n <div\n className=\"pointer-events-none absolute border-2 border-dashed border-primary bg-primary/10\"\n style={shown}\n />\n )}\n </div>\n )\n}\n"]}
@@ -1,34 +1,34 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkSDRYSLOX_cjs = require('../chunk-SDRYSLOX.cjs');
5
- var chunkV6MW7B4B_cjs = require('../chunk-V6MW7B4B.cjs');
6
- require('../chunk-YGBHY67W.cjs');
7
- require('../chunk-COD5ENHK.cjs');
8
- require('../chunk-2CSLFAGF.cjs');
4
+ var chunkIRGRMJPP_cjs = require('../chunk-IRGRMJPP.cjs');
5
+ var chunkB3R62764_cjs = require('../chunk-B3R62764.cjs');
6
+ require('../chunk-UA7HOLAZ.cjs');
7
+ require('../chunk-PVJ5ODDB.cjs');
8
+ require('../chunk-GAMRVB3I.cjs');
9
9
  require('../chunk-GA5ZO4YA.cjs');
10
10
  require('../chunk-VG5XNE4H.cjs');
11
11
  require('../chunk-DDWLMYRO.cjs');
12
- var chunk7557LDAN_cjs = require('../chunk-7557LDAN.cjs');
12
+ var chunkPWBRE7JA_cjs = require('../chunk-PWBRE7JA.cjs');
13
13
  require('../chunk-4ONPEVTP.cjs');
14
14
  require('../chunk-V3KLUWQQ.cjs');
15
+ require('../chunk-ZESMRGDV.cjs');
15
16
  require('../chunk-P5AQYC4D.cjs');
16
17
  require('../chunk-WAV762GP.cjs');
17
- require('../chunk-ZESMRGDV.cjs');
18
18
  require('../chunk-UKOYN2WD.cjs');
19
19
  require('../chunk-RC25WMVB.cjs');
20
- require('../chunk-VKH3BEZE.cjs');
20
+ require('../chunk-BLIO3B7Z.cjs');
21
21
  require('../chunk-JJZOL5MG.cjs');
22
22
  require('../chunk-3YEXZX4H.cjs');
23
23
  require('../chunk-4PA6VCCR.cjs');
24
24
  require('../chunk-WXUU3COI.cjs');
25
25
  require('../chunk-AHDJXIUB.cjs');
26
- require('../chunk-YVCOQHCE.cjs');
27
26
  require('../chunk-RL2HI6NP.cjs');
28
27
  require('../chunk-6UZC4XVV.cjs');
28
+ require('../chunk-YVCOQHCE.cjs');
29
29
  require('../chunk-JV5TVUOU.cjs');
30
- require('../chunk-ZVEW3JBT.cjs');
31
30
  require('../chunk-VZOOGA47.cjs');
31
+ require('../chunk-ZVEW3JBT.cjs');
32
32
  require('../chunk-HQDR43JC.cjs');
33
33
  require('../chunk-JR2YSBD5.cjs');
34
34
  require('../chunk-3YZKDCWY.cjs');
@@ -36,37 +36,37 @@ require('../chunk-SJSGSHIT.cjs');
36
36
  require('../chunk-ZW6FPIFC.cjs');
37
37
  require('../chunk-75BNMCUX.cjs');
38
38
  require('../chunk-QGVOT7E4.cjs');
39
+ require('../chunk-IPSHAMO2.cjs');
39
40
  require('../chunk-QRAQZTJE.cjs');
40
41
  require('../chunk-UDSHVNU3.cjs');
41
- require('../chunk-IPSHAMO2.cjs');
42
42
  require('../chunk-PPCATBOY.cjs');
43
+ require('../chunk-LJJJ6CYH.cjs');
43
44
  require('../chunk-TKHCIHE2.cjs');
44
45
  require('../chunk-JDFBEGQO.cjs');
45
46
  require('../chunk-ULWRNGGE.cjs');
46
- require('../chunk-LJJJ6CYH.cjs');
47
47
  require('../chunk-PLIF5CUV.cjs');
48
48
  var react = require('react');
49
49
 
50
50
  function useConnectedMailWordEditor() {
51
- const adapter = chunk7557LDAN_cjs.useConnectedNativeDocxAdapter();
51
+ const adapter = chunkPWBRE7JA_cjs.useConnectedNativeDocxAdapter();
52
52
  return react.useMemo(() => ({ adapter }), [adapter]);
53
53
  }
54
54
 
55
55
  Object.defineProperty(exports, "ConnectedStreamedWordArtifact", {
56
56
  enumerable: true,
57
- get: function () { return chunkSDRYSLOX_cjs.ConnectedStreamedWordArtifact; }
57
+ get: function () { return chunkIRGRMJPP_cjs.ConnectedStreamedWordArtifact; }
58
58
  });
59
59
  Object.defineProperty(exports, "ConnectedNativeDocxComparison", {
60
60
  enumerable: true,
61
- get: function () { return chunkV6MW7B4B_cjs.ConnectedNativeDocxComparison; }
61
+ get: function () { return chunkB3R62764_cjs.ConnectedNativeDocxComparison; }
62
62
  });
63
63
  Object.defineProperty(exports, "ConnectedNativeDocxEditor", {
64
64
  enumerable: true,
65
- get: function () { return chunk7557LDAN_cjs.ConnectedNativeDocxEditor; }
65
+ get: function () { return chunkPWBRE7JA_cjs.ConnectedNativeDocxEditor; }
66
66
  });
67
67
  Object.defineProperty(exports, "useConnectedNativeDocxAdapter", {
68
68
  enumerable: true,
69
- get: function () { return chunk7557LDAN_cjs.useConnectedNativeDocxAdapter; }
69
+ get: function () { return chunkPWBRE7JA_cjs.useConnectedNativeDocxAdapter; }
70
70
  });
71
71
  exports.useConnectedMailWordEditor = useConnectedMailWordEditor;
72
72
  //# sourceMappingURL=docx.cjs.map