@arbidocs/blocks 0.5.122 → 0.5.124

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 (124) 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/{ConnectedPresentation-AU25OW25.cjs → ConnectedPresentation-OV2KBOLK.cjs} +27 -153
  6. package/dist/ConnectedPresentation-OV2KBOLK.cjs.map +1 -0
  7. package/dist/{ConnectedSlidesTab-I75LKKN7.cjs → ConnectedSlidesTab-LUAGZ6FD.cjs} +60 -36
  8. package/dist/ConnectedSlidesTab-LUAGZ6FD.cjs.map +1 -0
  9. package/dist/{FilesViewerDialog-4352KIOG.cjs → FilesViewerDialog-JWKNJLWG.cjs} +10 -7
  10. package/dist/FilesViewerDialog-JWKNJLWG.cjs.map +1 -0
  11. package/dist/SpotlightStrip-ED22UYTM.cjs +398 -0
  12. package/dist/SpotlightStrip-ED22UYTM.cjs.map +1 -0
  13. package/dist/{chunk-LHWOKOMP.cjs → chunk-3IH55CDE.cjs} +4 -4
  14. package/dist/chunk-3IH55CDE.cjs.map +1 -0
  15. package/dist/chunk-3ZZZO4F7.cjs +145 -0
  16. package/dist/chunk-3ZZZO4F7.cjs.map +1 -0
  17. package/dist/{chunk-WFMWKPGY.cjs → chunk-ADPRIBSH.cjs} +9 -33
  18. package/dist/chunk-ADPRIBSH.cjs.map +1 -0
  19. package/dist/{chunk-UTJ223TI.cjs → chunk-BX6G2ZCI.cjs} +138 -146
  20. package/dist/chunk-BX6G2ZCI.cjs.map +1 -0
  21. package/dist/{chunk-WRLGLZIA.cjs → chunk-EMRY62HS.cjs} +2 -2
  22. package/dist/{chunk-WRLGLZIA.cjs.map → chunk-EMRY62HS.cjs.map} +1 -1
  23. package/dist/{chunk-USNTRL22.cjs → chunk-H236SNEV.cjs} +199 -1616
  24. package/dist/chunk-H236SNEV.cjs.map +1 -0
  25. package/dist/chunk-JITYC4OS.cjs +66 -0
  26. package/dist/chunk-JITYC4OS.cjs.map +1 -0
  27. package/dist/chunk-JY7UUZQG.cjs +1513 -0
  28. package/dist/chunk-JY7UUZQG.cjs.map +1 -0
  29. package/dist/chunk-MVXHTAJ4.cjs +111 -0
  30. package/dist/chunk-MVXHTAJ4.cjs.map +1 -0
  31. package/dist/{chunk-4TTX6ZNS.cjs → chunk-ORNLCBNE.cjs} +24 -2
  32. package/dist/chunk-ORNLCBNE.cjs.map +1 -0
  33. package/dist/chunk-WVZLAAIZ.cjs +31 -0
  34. package/dist/chunk-WVZLAAIZ.cjs.map +1 -0
  35. package/dist/chunk-ZZZITHGK.cjs +119 -0
  36. package/dist/chunk-ZZZITHGK.cjs.map +1 -0
  37. package/dist/connect/index.cjs +52 -52
  38. package/dist/connect/viewer.cjs +8 -5
  39. package/dist/connection/presentation/ClippingMediaViewer.js +3 -3
  40. package/dist/connection/presentation/ClippingMediaViewer.js.map +2 -2
  41. package/dist/connection/presentation/ClippingPdfViewer.d.ts +4 -3
  42. package/dist/connection/presentation/ClippingPdfViewer.js +48 -9
  43. package/dist/connection/presentation/ClippingPdfViewer.js.map +2 -2
  44. package/dist/connection/presentation/ConnectedSlidesTab.js +35 -13
  45. package/dist/connection/presentation/ConnectedSlidesTab.js.map +2 -2
  46. package/dist/connection/presentation/SpotlightLayer.d.ts +5 -0
  47. package/dist/connection/presentation/SpotlightLayer.js +19 -0
  48. package/dist/connection/presentation/SpotlightLayer.js.map +7 -0
  49. package/dist/connection/presentation/SpotlightStrip.d.ts +10 -0
  50. package/dist/connection/presentation/SpotlightStrip.js +237 -0
  51. package/dist/connection/presentation/SpotlightStrip.js.map +7 -0
  52. package/dist/connection/presentation/useViewerClipping.d.ts +4 -3
  53. package/dist/connection/presentation/useViewerClipping.js +8 -4
  54. package/dist/connection/presentation/useViewerClipping.js.map +2 -2
  55. package/dist/connection/viewer/ConnectedDocumentViewer.js +52 -61
  56. package/dist/connection/viewer/ConnectedDocumentViewer.js.map +2 -2
  57. package/dist/connection/viewer/ViewerMoreMenu.d.ts +18 -0
  58. package/dist/connection/viewer/ViewerMoreMenu.js +45 -0
  59. package/dist/connection/viewer/ViewerMoreMenu.js.map +7 -0
  60. package/dist/connection/viewer/pdf/PdfPassageHighlights.js +3 -2
  61. package/dist/connection/viewer/pdf/PdfPassageHighlights.js.map +2 -2
  62. package/dist/connection/viewer/pdf/passageHighlights.d.ts +5 -0
  63. package/dist/connection/viewer/pdf/passageHighlights.js +14 -1
  64. package/dist/connection/viewer/pdf/passageHighlights.js.map +2 -2
  65. package/dist/connection/viewer/useCleanView.d.ts +3 -1
  66. package/dist/connection/viewer/useCleanView.js +6 -3
  67. package/dist/connection/viewer/useCleanView.js.map +2 -2
  68. package/dist/document-tools/DocumentToolButtons.js +3 -3
  69. package/dist/document-tools/DocumentToolButtons.js.map +2 -2
  70. package/dist/document-tools/index.cjs +13 -13
  71. package/dist/index.cjs +53 -53
  72. package/dist/presentation/BoxActionBar.d.ts +2 -2
  73. package/dist/presentation/BoxActionBar.js +62 -30
  74. package/dist/presentation/BoxActionBar.js.map +2 -2
  75. package/dist/presentation/ClipActionBar.js +60 -7
  76. package/dist/presentation/ClipActionBar.js.map +2 -2
  77. package/dist/presentation/ClipCaptureOverlay.d.ts +7 -3
  78. package/dist/presentation/ClipCaptureOverlay.js +43 -14
  79. package/dist/presentation/ClipCaptureOverlay.js.map +2 -2
  80. package/dist/presentation/ClipViewControls.d.ts +3 -3
  81. package/dist/presentation/ClipViewControls.js +59 -64
  82. package/dist/presentation/ClipViewControls.js.map +2 -2
  83. package/dist/presentation/PresentControls.d.ts +8 -0
  84. package/dist/presentation/PresentControls.js +1 -0
  85. package/dist/presentation/PresentControls.js.map +2 -2
  86. package/dist/presentation/PresentationStage.d.ts +10 -2
  87. package/dist/presentation/PresentationStage.js +6 -3
  88. package/dist/presentation/PresentationStage.js.map +2 -2
  89. package/dist/presentation/PresenterView.js +1 -22
  90. package/dist/presentation/PresenterView.js.map +2 -2
  91. package/dist/presentation/SlidesEditor.js +56 -42
  92. package/dist/presentation/SlidesEditor.js.map +2 -2
  93. package/dist/presentation/SpotlightView.d.ts +19 -0
  94. package/dist/presentation/SpotlightView.js +180 -0
  95. package/dist/presentation/SpotlightView.js.map +7 -0
  96. package/dist/presentation/StageItem.js +0 -5
  97. package/dist/presentation/StageItem.js.map +2 -2
  98. package/dist/presentation/passage-clip.d.ts +17 -0
  99. package/dist/presentation/passage-clip.js +25 -0
  100. package/dist/presentation/passage-clip.js.map +7 -0
  101. package/dist/presentation/spotlight.d.ts +58 -0
  102. package/dist/presentation/spotlight.js +110 -0
  103. package/dist/presentation/spotlight.js.map +7 -0
  104. package/dist/presentation/store.d.ts +5 -0
  105. package/dist/presentation/store.js +19 -0
  106. package/dist/presentation/store.js.map +2 -2
  107. package/dist/presentation/usePointerActive.d.ts +2 -0
  108. package/dist/presentation/usePointerActive.js +28 -0
  109. package/dist/presentation/usePointerActive.js.map +7 -0
  110. package/dist/styles.css +1 -1
  111. package/node_modules/@arbidocs/coedit/package.json +1 -1
  112. package/package.json +5 -5
  113. package/dist/ClippingMediaViewer-IEIBT74X.cjs.map +0 -1
  114. package/dist/ClippingPdfViewer-OGYLMVCE.cjs.map +0 -1
  115. package/dist/ConnectedPresentation-AU25OW25.cjs.map +0 -1
  116. package/dist/ConnectedSlidesTab-I75LKKN7.cjs.map +0 -1
  117. package/dist/FilesViewerDialog-4352KIOG.cjs.map +0 -1
  118. package/dist/chunk-4TTX6ZNS.cjs.map +0 -1
  119. package/dist/chunk-LHWOKOMP.cjs.map +0 -1
  120. package/dist/chunk-USNTRL22.cjs.map +0 -1
  121. package/dist/chunk-UTJ223TI.cjs.map +0 -1
  122. package/dist/chunk-WFMWKPGY.cjs.map +0 -1
  123. package/dist/chunk-XK4TVJKD.cjs +0 -73
  124. package/dist/chunk-XK4TVJKD.cjs.map +0 -1
@@ -25,6 +25,18 @@ function passagePlaced(pages, chunkId) {
25
25
  }
26
26
  return false;
27
27
  }
28
+ function placedPassagesByPage(pages) {
29
+ const byPage = /* @__PURE__ */ new Map();
30
+ for (const page of pages) {
31
+ if (page.pageNumber === null) continue;
32
+ for (const chunk of page.chunks) {
33
+ const box = asBox(chunk.pageBbox);
34
+ if (!box || isWholePage(box)) continue;
35
+ byPage.set(page.pageNumber, [...byPage.get(page.pageNumber) ?? [], box]);
36
+ }
37
+ }
38
+ return byPage;
39
+ }
28
40
  function passageBoxesByPage(pages, state) {
29
41
  const byPage = /* @__PURE__ */ new Map();
30
42
  if (state.cited.size === 0 && !state.active) return byPage;
@@ -46,6 +58,7 @@ function passageBoxesByPage(pages, state) {
46
58
  export {
47
59
  passageBoxesByPage,
48
60
  passageHighlight,
49
- passagePlaced
61
+ passagePlaced,
62
+ placedPassagesByPage
50
63
  };
51
64
  //# sourceMappingURL=passageHighlights.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/connection/viewer/pdf/passageHighlights.ts"],
4
- "sourcesContent": ["/**\n * Which passages light up on the PDF, and where. The rules are the parsed view's (`ParsedPassage`):\n * while a fact's Citation popover is open its cited passages are light and the one being read is\n * strong; otherwise the passage a citation opened the document at is the one lit. A passage's box\n * is the parser's (`page_bbox`: fractions of its page, top-left origin), so it lands on the page\n * at any zoom.\n */\n\nimport type { ProcessedPage } from '@arbidocs/react/viewers'\nimport type { PassageHighlight } from '../../../files'\n\n/** [x0, y0, x1, y1] as fractions of the page. */\nexport type PageBox = readonly [number, number, number, number]\n\nexport interface PdfPassageBox {\n chunkId: string\n box: PageBox\n highlight: PassageHighlight\n}\n\nexport interface PassageHighlightState {\n /** A fact's cited passages (its Citation popover is open); empty when none is. */\n cited: ReadonlySet<string>\n /** The passage being read: the one a citation opened the document at. */\n active: string | null\n}\n\n/** How a passage is lit, or null when it is not. */\nexport function passageHighlight(\n chunkId: string,\n { cited, active }: PassageHighlightState\n): PassageHighlight | null {\n if (cited.size > 0) {\n if (!cited.has(chunkId)) return null\n return chunkId === active ? 'strong' : 'light'\n }\n return chunkId === active ? 'light' : null\n}\n\n/** A drawable box: four finite fractions with area. */\nfunction asBox(bbox: readonly number[] | undefined): PageBox | null {\n if (!bbox || bbox.length !== 4 || !bbox.every(Number.isFinite)) return null\n const [x0, y0, x1, y1] = bbox\n if (x1 <= x0 || y1 <= y0) return null\n return [x0, y0, x1, y1]\n}\n\n/**\n * The page's whole area: what the parser gives a chunk on a page where it recognized no block to\n * place it by. It says \"this page\", and a rectangle over the whole page would say nothing more.\n */\nfunction isWholePage([x0, y0, x1, y1]: PageBox): boolean {\n return x0 <= 0 && y0 <= 0 && x1 >= 1 && y1 >= 1\n}\n\n/** The passage has a box on its page to light (not none, nor the whole page). */\nexport function passagePlaced(pages: readonly ProcessedPage[], chunkId: string): boolean {\n for (const page of pages) {\n const chunk = page.chunks.find((entry) => entry.chunkExtId === chunkId)\n if (chunk) {\n const box = asBox(chunk.pageBbox)\n return !!box && !isWholePage(box)\n }\n }\n return false\n}\n\n/** The lit passages' boxes, by page number. Passages without a usable box are left out. */\nexport function passageBoxesByPage(\n pages: readonly ProcessedPage[],\n state: PassageHighlightState\n): Map<number, PdfPassageBox[]> {\n const byPage = new Map<number, PdfPassageBox[]>()\n if (state.cited.size === 0 && !state.active) return byPage\n for (const page of pages) {\n if (page.pageNumber === null) continue\n for (const chunk of page.chunks) {\n const chunkId = chunk.chunkExtId\n if (!chunkId) continue\n const highlight = passageHighlight(chunkId, state)\n const box = highlight && asBox(chunk.pageBbox)\n if (!highlight || !box || isWholePage(box)) continue\n const boxes = byPage.get(page.pageNumber) ?? []\n boxes.push({ chunkId, box, highlight })\n byPage.set(page.pageNumber, boxes)\n }\n }\n return byPage\n}\n"],
5
- "mappings": ";AA4BO,SAAS,iBACd,SACA,EAAE,OAAO,OAAO,GACS;AACzB,MAAI,MAAM,OAAO,GAAG;AAClB,QAAI,CAAC,MAAM,IAAI,OAAO,EAAG,QAAO;AAChC,WAAO,YAAY,SAAS,WAAW;AAAA,EACzC;AACA,SAAO,YAAY,SAAS,UAAU;AACxC;AAGA,SAAS,MAAM,MAAqD;AAClE,MAAI,CAAC,QAAQ,KAAK,WAAW,KAAK,CAAC,KAAK,MAAM,OAAO,QAAQ,EAAG,QAAO;AACvE,QAAM,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI;AACzB,MAAI,MAAM,MAAM,MAAM,GAAI,QAAO;AACjC,SAAO,CAAC,IAAI,IAAI,IAAI,EAAE;AACxB;AAMA,SAAS,YAAY,CAAC,IAAI,IAAI,IAAI,EAAE,GAAqB;AACvD,SAAO,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM;AAChD;AAGO,SAAS,cAAc,OAAiC,SAA0B;AACvF,aAAW,QAAQ,OAAO;AACxB,UAAM,QAAQ,KAAK,OAAO,KAAK,CAAC,UAAU,MAAM,eAAe,OAAO;AACtE,QAAI,OAAO;AACT,YAAM,MAAM,MAAM,MAAM,QAAQ;AAChC,aAAO,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG;AAAA,IAClC;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,mBACd,OACA,OAC8B;AAC9B,QAAM,SAAS,oBAAI,IAA6B;AAChD,MAAI,MAAM,MAAM,SAAS,KAAK,CAAC,MAAM,OAAQ,QAAO;AACpD,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,eAAe,KAAM;AAC9B,eAAW,SAAS,KAAK,QAAQ;AAC/B,YAAM,UAAU,MAAM;AACtB,UAAI,CAAC,QAAS;AACd,YAAM,YAAY,iBAAiB,SAAS,KAAK;AACjD,YAAM,MAAM,aAAa,MAAM,MAAM,QAAQ;AAC7C,UAAI,CAAC,aAAa,CAAC,OAAO,YAAY,GAAG,EAAG;AAC5C,YAAM,QAAQ,OAAO,IAAI,KAAK,UAAU,KAAK,CAAC;AAC9C,YAAM,KAAK,EAAE,SAAS,KAAK,UAAU,CAAC;AACtC,aAAO,IAAI,KAAK,YAAY,KAAK;AAAA,IACnC;AAAA,EACF;AACA,SAAO;AACT;",
4
+ "sourcesContent": ["/**\n * Which passages light up on the PDF, and where. The rules are the parsed view's (`ParsedPassage`):\n * while a fact's Citation popover is open its cited passages are light and the one being read is\n * strong; otherwise the passage a citation opened the document at is the one lit. A passage's box\n * is the parser's (`page_bbox`: fractions of its page, top-left origin), so it lands on the page\n * at any zoom.\n */\n\nimport type { ProcessedPage } from '@arbidocs/react/viewers'\nimport type { PassageHighlight } from '../../../files'\n\n/** [x0, y0, x1, y1] as fractions of the page. */\nexport type PageBox = readonly [number, number, number, number]\n\nexport interface PdfPassageBox {\n chunkId: string\n box: PageBox\n highlight: PassageHighlight\n}\n\nexport interface PassageHighlightState {\n /** A fact's cited passages (its Citation popover is open); empty when none is. */\n cited: ReadonlySet<string>\n /** The passage being read: the one a citation opened the document at. */\n active: string | null\n}\n\n/** How a passage is lit, or null when it is not. */\nexport function passageHighlight(\n chunkId: string,\n { cited, active }: PassageHighlightState\n): PassageHighlight | null {\n if (cited.size > 0) {\n if (!cited.has(chunkId)) return null\n return chunkId === active ? 'strong' : 'light'\n }\n return chunkId === active ? 'light' : null\n}\n\n/** A drawable box: four finite fractions with area. */\nfunction asBox(bbox: readonly number[] | undefined): PageBox | null {\n if (!bbox || bbox.length !== 4 || !bbox.every(Number.isFinite)) return null\n const [x0, y0, x1, y1] = bbox\n if (x1 <= x0 || y1 <= y0) return null\n return [x0, y0, x1, y1]\n}\n\n/**\n * The page's whole area: what the parser gives a chunk on a page where it recognized no block to\n * place it by. It says \"this page\", and a rectangle over the whole page would say nothing more.\n */\nfunction isWholePage([x0, y0, x1, y1]: PageBox): boolean {\n return x0 <= 0 && y0 <= 0 && x1 >= 1 && y1 >= 1\n}\n\n/** The passage has a box on its page to light (not none, nor the whole page). */\nexport function passagePlaced(pages: readonly ProcessedPage[], chunkId: string): boolean {\n for (const page of pages) {\n const chunk = page.chunks.find((entry) => entry.chunkExtId === chunkId)\n if (chunk) {\n const box = asBox(chunk.pageBbox)\n return !!box && !isWholePage(box)\n }\n }\n return false\n}\n\n/**\n * Every passage placed on its page (a box, not the whole page), by page number: what clip mode\n * outlines under the pointer and clips with a click.\n */\nexport function placedPassagesByPage(pages: readonly ProcessedPage[]): Map<number, PageBox[]> {\n const byPage = new Map<number, PageBox[]>()\n for (const page of pages) {\n if (page.pageNumber === null) continue\n for (const chunk of page.chunks) {\n const box = asBox(chunk.pageBbox)\n if (!box || isWholePage(box)) continue\n byPage.set(page.pageNumber, [...(byPage.get(page.pageNumber) ?? []), box])\n }\n }\n return byPage\n}\n\n/** The lit passages' boxes, by page number. Passages without a usable box are left out. */\nexport function passageBoxesByPage(\n pages: readonly ProcessedPage[],\n state: PassageHighlightState\n): Map<number, PdfPassageBox[]> {\n const byPage = new Map<number, PdfPassageBox[]>()\n if (state.cited.size === 0 && !state.active) return byPage\n for (const page of pages) {\n if (page.pageNumber === null) continue\n for (const chunk of page.chunks) {\n const chunkId = chunk.chunkExtId\n if (!chunkId) continue\n const highlight = passageHighlight(chunkId, state)\n const box = highlight && asBox(chunk.pageBbox)\n if (!highlight || !box || isWholePage(box)) continue\n const boxes = byPage.get(page.pageNumber) ?? []\n boxes.push({ chunkId, box, highlight })\n byPage.set(page.pageNumber, boxes)\n }\n }\n return byPage\n}\n"],
5
+ "mappings": ";AA4BO,SAAS,iBACd,SACA,EAAE,OAAO,OAAO,GACS;AACzB,MAAI,MAAM,OAAO,GAAG;AAClB,QAAI,CAAC,MAAM,IAAI,OAAO,EAAG,QAAO;AAChC,WAAO,YAAY,SAAS,WAAW;AAAA,EACzC;AACA,SAAO,YAAY,SAAS,UAAU;AACxC;AAGA,SAAS,MAAM,MAAqD;AAClE,MAAI,CAAC,QAAQ,KAAK,WAAW,KAAK,CAAC,KAAK,MAAM,OAAO,QAAQ,EAAG,QAAO;AACvE,QAAM,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI;AACzB,MAAI,MAAM,MAAM,MAAM,GAAI,QAAO;AACjC,SAAO,CAAC,IAAI,IAAI,IAAI,EAAE;AACxB;AAMA,SAAS,YAAY,CAAC,IAAI,IAAI,IAAI,EAAE,GAAqB;AACvD,SAAO,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM;AAChD;AAGO,SAAS,cAAc,OAAiC,SAA0B;AACvF,aAAW,QAAQ,OAAO;AACxB,UAAM,QAAQ,KAAK,OAAO,KAAK,CAAC,UAAU,MAAM,eAAe,OAAO;AACtE,QAAI,OAAO;AACT,YAAM,MAAM,MAAM,MAAM,QAAQ;AAChC,aAAO,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG;AAAA,IAClC;AAAA,EACF;AACA,SAAO;AACT;AAMO,SAAS,qBAAqB,OAAyD;AAC5F,QAAM,SAAS,oBAAI,IAAuB;AAC1C,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,eAAe,KAAM;AAC9B,eAAW,SAAS,KAAK,QAAQ;AAC/B,YAAM,MAAM,MAAM,MAAM,QAAQ;AAChC,UAAI,CAAC,OAAO,YAAY,GAAG,EAAG;AAC9B,aAAO,IAAI,KAAK,YAAY,CAAC,GAAI,OAAO,IAAI,KAAK,UAAU,KAAK,CAAC,GAAI,GAAG,CAAC;AAAA,IAC3E;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,mBACd,OACA,OAC8B;AAC9B,QAAM,SAAS,oBAAI,IAA6B;AAChD,MAAI,MAAM,MAAM,SAAS,KAAK,CAAC,MAAM,OAAQ,QAAO;AACpD,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,eAAe,KAAM;AAC9B,eAAW,SAAS,KAAK,QAAQ;AAC/B,YAAM,UAAU,MAAM;AACtB,UAAI,CAAC,QAAS;AACd,YAAM,YAAY,iBAAiB,SAAS,KAAK;AACjD,YAAM,MAAM,aAAa,MAAM,MAAM,QAAQ;AAC7C,UAAI,CAAC,aAAa,CAAC,OAAO,YAAY,GAAG,EAAG;AAC5C,YAAM,QAAQ,OAAO,IAAI,KAAK,UAAU,KAAK,CAAC;AAC9C,YAAM,KAAK,EAAE,SAAS,KAAK,UAAU,CAAC;AACtC,aAAO,IAAI,KAAK,YAAY,KAAK;AAAA,IACnC;AAAA,EACF;AACA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -5,7 +5,9 @@
5
5
  * the viewer back in ends the clean view.
6
6
  */
7
7
  import { type ReactNode } from 'react';
8
- export declare function useCleanView(): {
8
+ export declare function useCleanView(
9
+ /** Over the body in any view (the spotlight's strip). */
10
+ extra?: ReactNode): {
9
11
  on: boolean;
10
12
  frame: {
11
13
  bare: boolean;
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { jsx } from "react/jsx-runtime";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useRef } from "react";
4
4
  import { useArbiSessionState, useArbiSessionStore } from "@arbidocs/react";
5
5
  import { CleanViewControl } from "./CleanViewControl.js";
6
- function useCleanView() {
6
+ function useCleanView(extra) {
7
7
  const session = useArbiSessionStore();
8
8
  const detached = useArbiSessionState((s) => s.documentViewer.detached);
9
9
  const presenting = useArbiSessionState((s) => s.documentViewer.presenting);
@@ -19,7 +19,10 @@ function useCleanView() {
19
19
  on,
20
20
  frame: {
21
21
  bare: on,
22
- overlay: on ? /* @__PURE__ */ jsx(CleanViewControl, { onExit: () => session.setDocumentViewer({ presenting: false }) }) : null
22
+ overlay: /* @__PURE__ */ jsxs(Fragment, { children: [
23
+ on && /* @__PURE__ */ jsx(CleanViewControl, { onExit: () => session.setDocumentViewer({ presenting: false }) }),
24
+ extra
25
+ ] })
23
26
  }
24
27
  };
25
28
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/connection/viewer/useCleanView.tsx"],
4
- "sourcesContent": ["/**\n * The viewer's clean view: popped out with `documentViewer.presenting`, it shows only the document\n * on black (no header, bars or controls), to share in a call or put full screen. Its one control\n * (`CleanViewControl`: full screen, show the controls again) shows while the pointer moves. Popping\n * the viewer back in ends the clean view.\n */\n\nimport { useEffect, useRef, type ReactNode } from 'react'\nimport { useArbiSessionState, useArbiSessionStore } from '@arbidocs/react'\nimport { CleanViewControl } from './CleanViewControl'\n\nexport function useCleanView(): { on: boolean; frame: { bare: boolean; overlay: ReactNode } } {\n const session = useArbiSessionStore()\n const detached = useArbiSessionState((s) => s.documentViewer.detached)\n const presenting = useArbiSessionState((s) => s.documentViewer.presenting)\n const on = detached && presenting\n\n // Back in the app's window: the next pop-out shows the controls as usual.\n const wasDetached = useRef(detached)\n useEffect(() => {\n if (wasDetached.current && !detached && presenting) {\n session.setDocumentViewer({ presenting: false })\n }\n wasDetached.current = detached\n }, [detached, presenting, session])\n\n return {\n on,\n frame: {\n bare: on,\n overlay: on ? (\n <CleanViewControl onExit={() => session.setDocumentViewer({ presenting: false })} />\n ) : null,\n },\n }\n}\n"],
5
- "mappings": ";AA+BQ;AAxBR,SAAS,WAAW,cAA8B;AAClD,SAAS,qBAAqB,2BAA2B;AACzD,SAAS,wBAAwB;AAE1B,SAAS,eAA8E;AAC5F,QAAM,UAAU,oBAAoB;AACpC,QAAM,WAAW,oBAAoB,CAAC,MAAM,EAAE,eAAe,QAAQ;AACrE,QAAM,aAAa,oBAAoB,CAAC,MAAM,EAAE,eAAe,UAAU;AACzE,QAAM,KAAK,YAAY;AAGvB,QAAM,cAAc,OAAO,QAAQ;AACnC,YAAU,MAAM;AACd,QAAI,YAAY,WAAW,CAAC,YAAY,YAAY;AAClD,cAAQ,kBAAkB,EAAE,YAAY,MAAM,CAAC;AAAA,IACjD;AACA,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAC,UAAU,YAAY,OAAO,CAAC;AAElC,SAAO;AAAA,IACL;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,KACP,oBAAC,oBAAiB,QAAQ,MAAM,QAAQ,kBAAkB,EAAE,YAAY,MAAM,CAAC,GAAG,IAChF;AAAA,IACN;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["/**\n * The viewer's clean view: popped out with `documentViewer.presenting`, it shows only the document\n * on black (no header, bars or controls), to share in a call or put full screen. Its one control\n * (`CleanViewControl`: full screen, show the controls again) shows while the pointer moves. Popping\n * the viewer back in ends the clean view.\n */\n\nimport { useEffect, useRef, type ReactNode } from 'react'\nimport { useArbiSessionState, useArbiSessionStore } from '@arbidocs/react'\nimport { CleanViewControl } from './CleanViewControl'\n\nexport function useCleanView(\n /** Over the body in any view (the spotlight's strip). */\n extra?: ReactNode\n): { on: boolean; frame: { bare: boolean; overlay: ReactNode } } {\n const session = useArbiSessionStore()\n const detached = useArbiSessionState((s) => s.documentViewer.detached)\n const presenting = useArbiSessionState((s) => s.documentViewer.presenting)\n const on = detached && presenting\n\n // Back in the app's window: the next pop-out shows the controls as usual.\n const wasDetached = useRef(detached)\n useEffect(() => {\n if (wasDetached.current && !detached && presenting) {\n session.setDocumentViewer({ presenting: false })\n }\n wasDetached.current = detached\n }, [detached, presenting, session])\n\n return {\n on,\n frame: {\n bare: on,\n overlay: (\n <>\n {on && (\n <CleanViewControl onExit={() => session.setDocumentViewer({ presenting: false })} />\n )}\n {extra}\n </>\n ),\n },\n }\n}\n"],
5
+ "mappings": ";AAkCQ,mBAEI,KAFJ;AA3BR,SAAS,WAAW,cAA8B;AAClD,SAAS,qBAAqB,2BAA2B;AACzD,SAAS,wBAAwB;AAE1B,SAAS,aAEd,OAC+D;AAC/D,QAAM,UAAU,oBAAoB;AACpC,QAAM,WAAW,oBAAoB,CAAC,MAAM,EAAE,eAAe,QAAQ;AACrE,QAAM,aAAa,oBAAoB,CAAC,MAAM,EAAE,eAAe,UAAU;AACzE,QAAM,KAAK,YAAY;AAGvB,QAAM,cAAc,OAAO,QAAQ;AACnC,YAAU,MAAM;AACd,QAAI,YAAY,WAAW,CAAC,YAAY,YAAY;AAClD,cAAQ,kBAAkB,EAAE,YAAY,MAAM,CAAC;AAAA,IACjD;AACA,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAC,UAAU,YAAY,OAAO,CAAC;AAElC,SAAO;AAAA,IACL;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SACE,iCACG;AAAA,cACC,oBAAC,oBAAiB,QAAQ,MAAM,QAAQ,kBAAkB,EAAE,YAAY,MAAM,CAAC,GAAG;AAAA,QAEnF;AAAA,SACH;AAAA,IAEJ;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { Download, FileText, PencilLine, Presentation } from "lucide-react";
3
+ import { Download, FileText, PencilLine, Scissors } from "lucide-react";
4
4
  import { Button } from "@arbidocs/react/ui";
5
5
  const TOUCH = "pointer-coarse:min-h-11";
6
6
  function AnnotateButton({ active, onClick, compact }) {
@@ -31,13 +31,13 @@ function ClipButton({ active, onClick, compact }) {
31
31
  variant: active ? "default" : "outline",
32
32
  size: compact ? "icon" : "sm",
33
33
  "aria-pressed": active,
34
- title: "Clip: drag over a page to show that part in a presentation",
34
+ title: "Clip: click a passage (or drag over any area) to gather it, then Show",
35
35
  "aria-label": "Clip",
36
36
  "data-testid": "clip-toggle",
37
37
  className: TOUCH,
38
38
  onClick,
39
39
  children: [
40
- /* @__PURE__ */ jsx(Presentation, { className: "size-4" }),
40
+ /* @__PURE__ */ jsx(Scissors, { className: "size-4" }),
41
41
  !compact && /* @__PURE__ */ jsx("span", { className: "ml-1", children: "Clip" })
42
42
  ]
43
43
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/document-tools/DocumentToolButtons.tsx"],
4
- "sourcesContent": ["/**\n * The viewer-header buttons of the PDF document tools: Annotate, Show original, Download with\n * markup and Sign. Separate parts so a host can place them among its own header actions. On a\n * narrow (`compact`) header each is icon-only; its accessible name stays.\n */\n\nimport type { ReactElement } from 'react'\nimport { Download, FileText, PencilLine, Presentation } from 'lucide-react'\nimport { Button } from '@arbidocs/react/ui'\n\nconst TOUCH = 'pointer-coarse:min-h-11'\n\ninterface ToggleProps {\n /** On (pressed). */\n active: boolean\n onClick: () => void\n compact?: boolean\n}\n\n/** Annotate mode: highlight, comment, stamp, redact. */\nexport function AnnotateButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title=\"Annotate: highlight, comment, stamp, redact\"\n aria-label=\"Annotate\"\n data-testid=\"annotate-toggle\"\n className={TOUCH}\n onClick={onClick}\n >\n <PencilLine className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Annotate</span>}\n </Button>\n )\n}\n\n/** Clip mode: drag over a page to show that part of it in the presentation. */\nexport function ClipButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title=\"Clip: drag over a page to show that part in a presentation\"\n aria-label=\"Clip\"\n data-testid=\"clip-toggle\"\n className={TOUCH}\n onClick={onClick}\n >\n <Presentation className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Clip</span>}\n </Button>\n )\n}\n\n/** The markup is the default view of a marked-up PDF; this shows the untouched file. */\nexport function ShowOriginalButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title={active ? 'Show the markup again' : 'Show the original, without markup'}\n aria-label=\"Show original\"\n data-testid=\"markup-show-original\"\n className={TOUCH}\n onClick={onClick}\n >\n <FileText className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Show original</span>}\n </Button>\n )\n}\n\n/**\n * \"Download with markup\": the PDF with its annotations, which Acrobat and Preview show. With a\n * `disabledReason` (a signed, locked version) it is off and says why.\n */\nexport function DownloadMarkupButton({\n onClick,\n disabledReason,\n}: {\n onClick: () => void\n disabledReason?: string\n}): ReactElement {\n const button = (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon\"\n title={\n disabledReason ??\n 'Download with markup: the PDF with its annotations (opens in Acrobat or Preview)'\n }\n aria-label=\"Download with markup\"\n aria-description={disabledReason}\n disabled={!!disabledReason}\n data-testid=\"markup-download\"\n className={TOUCH}\n onClick={onClick}\n >\n <Download className=\"size-4\" />\n </Button>\n )\n // A disabled button gets no pointer events, so the reason sits on a wrapper too.\n return disabledReason ? (\n <span title={disabledReason} className=\"inline-flex\" data-testid=\"markup-download-locked\">\n {button}\n </span>\n ) : (\n button\n )\n}\n\n/** One line where a signed version's content can be edited: an edit is a new, unsigned version. */\nexport function SignedEditNote(): ReactElement {\n return (\n <p\n className=\"border-b px-3 py-1.5 text-xs text-muted-foreground\"\n data-testid=\"signed-edit-note\"\n >\n Editing creates a new unsigned version\n </p>\n )\n}\n"],
5
- "mappings": ";AAsBI,SAWE,KAXF;AAfJ,SAAS,UAAU,UAAU,YAAY,oBAAoB;AAC7D,SAAS,cAAc;AAEvB,MAAM,QAAQ;AAUP,SAAS,eAAe,EAAE,QAAQ,SAAS,QAAQ,GAA8B;AACtF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,SAAS,YAAY;AAAA,MAC9B,MAAM,UAAU,SAAS;AAAA,MACzB,gBAAc;AAAA,MACd,OAAM;AAAA,MACN,cAAW;AAAA,MACX,eAAY;AAAA,MACZ,WAAW;AAAA,MACX;AAAA,MAEA;AAAA,4BAAC,cAAW,WAAU,UAAS;AAAA,QAC9B,CAAC,WAAW,oBAAC,UAAK,WAAU,QAAO,sBAAQ;AAAA;AAAA;AAAA,EAC9C;AAEJ;AAGO,SAAS,WAAW,EAAE,QAAQ,SAAS,QAAQ,GAA8B;AAClF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,SAAS,YAAY;AAAA,MAC9B,MAAM,UAAU,SAAS;AAAA,MACzB,gBAAc;AAAA,MACd,OAAM;AAAA,MACN,cAAW;AAAA,MACX,eAAY;AAAA,MACZ,WAAW;AAAA,MACX;AAAA,MAEA;AAAA,4BAAC,gBAAa,WAAU,UAAS;AAAA,QAChC,CAAC,WAAW,oBAAC,UAAK,WAAU,QAAO,kBAAI;AAAA;AAAA;AAAA,EAC1C;AAEJ;AAGO,SAAS,mBAAmB,EAAE,QAAQ,SAAS,QAAQ,GAA8B;AAC1F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,SAAS,YAAY;AAAA,MAC9B,MAAM,UAAU,SAAS;AAAA,MACzB,gBAAc;AAAA,MACd,OAAO,SAAS,0BAA0B;AAAA,MAC1C,cAAW;AAAA,MACX,eAAY;AAAA,MACZ,WAAW;AAAA,MACX;AAAA,MAEA;AAAA,4BAAC,YAAS,WAAU,UAAS;AAAA,QAC5B,CAAC,WAAW,oBAAC,UAAK,WAAU,QAAO,2BAAa;AAAA;AAAA;AAAA,EACnD;AAEJ;AAMO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AACF,GAGiB;AACf,QAAM,SACJ;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OACE,kBACA;AAAA,MAEF,cAAW;AAAA,MACX,oBAAkB;AAAA,MAClB,UAAU,CAAC,CAAC;AAAA,MACZ,eAAY;AAAA,MACZ,WAAW;AAAA,MACX;AAAA,MAEA,8BAAC,YAAS,WAAU,UAAS;AAAA;AAAA,EAC/B;AAGF,SAAO,iBACL,oBAAC,UAAK,OAAO,gBAAgB,WAAU,eAAc,eAAY,0BAC9D,kBACH,IAEA;AAEJ;AAGO,SAAS,iBAA+B;AAC7C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAY;AAAA,MACb;AAAA;AAAA,EAED;AAEJ;",
4
+ "sourcesContent": ["/**\n * The viewer-header buttons of the PDF document tools: Annotate, Show original, Download with\n * markup and Sign. Separate parts so a host can place them among its own header actions. On a\n * narrow (`compact`) header each is icon-only; its accessible name stays.\n */\n\nimport type { ReactElement } from 'react'\nimport { Download, FileText, PencilLine, Scissors } from 'lucide-react'\nimport { Button } from '@arbidocs/react/ui'\n\nconst TOUCH = 'pointer-coarse:min-h-11'\n\ninterface ToggleProps {\n /** On (pressed). */\n active: boolean\n onClick: () => void\n compact?: boolean\n}\n\n/** Annotate mode: highlight, comment, stamp, redact. */\nexport function AnnotateButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title=\"Annotate: highlight, comment, stamp, redact\"\n aria-label=\"Annotate\"\n data-testid=\"annotate-toggle\"\n className={TOUCH}\n onClick={onClick}\n >\n <PencilLine className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Annotate</span>}\n </Button>\n )\n}\n\n/** Clip mode: drag over a page to show that part of it in the presentation. */\nexport function ClipButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title=\"Clip: click a passage (or drag over any area) to gather it, then Show\"\n aria-label=\"Clip\"\n data-testid=\"clip-toggle\"\n className={TOUCH}\n onClick={onClick}\n >\n <Scissors className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Clip</span>}\n </Button>\n )\n}\n\n/** The markup is the default view of a marked-up PDF; this shows the untouched file. */\nexport function ShowOriginalButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title={active ? 'Show the markup again' : 'Show the original, without markup'}\n aria-label=\"Show original\"\n data-testid=\"markup-show-original\"\n className={TOUCH}\n onClick={onClick}\n >\n <FileText className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Show original</span>}\n </Button>\n )\n}\n\n/**\n * \"Download with markup\": the PDF with its annotations, which Acrobat and Preview show. With a\n * `disabledReason` (a signed, locked version) it is off and says why.\n */\nexport function DownloadMarkupButton({\n onClick,\n disabledReason,\n}: {\n onClick: () => void\n disabledReason?: string\n}): ReactElement {\n const button = (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon\"\n title={\n disabledReason ??\n 'Download with markup: the PDF with its annotations (opens in Acrobat or Preview)'\n }\n aria-label=\"Download with markup\"\n aria-description={disabledReason}\n disabled={!!disabledReason}\n data-testid=\"markup-download\"\n className={TOUCH}\n onClick={onClick}\n >\n <Download className=\"size-4\" />\n </Button>\n )\n // A disabled button gets no pointer events, so the reason sits on a wrapper too.\n return disabledReason ? (\n <span title={disabledReason} className=\"inline-flex\" data-testid=\"markup-download-locked\">\n {button}\n </span>\n ) : (\n button\n )\n}\n\n/** One line where a signed version's content can be edited: an edit is a new, unsigned version. */\nexport function SignedEditNote(): ReactElement {\n return (\n <p\n className=\"border-b px-3 py-1.5 text-xs text-muted-foreground\"\n data-testid=\"signed-edit-note\"\n >\n Editing creates a new unsigned version\n </p>\n )\n}\n"],
5
+ "mappings": ";AAsBI,SAWE,KAXF;AAfJ,SAAS,UAAU,UAAU,YAAY,gBAAgB;AACzD,SAAS,cAAc;AAEvB,MAAM,QAAQ;AAUP,SAAS,eAAe,EAAE,QAAQ,SAAS,QAAQ,GAA8B;AACtF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,SAAS,YAAY;AAAA,MAC9B,MAAM,UAAU,SAAS;AAAA,MACzB,gBAAc;AAAA,MACd,OAAM;AAAA,MACN,cAAW;AAAA,MACX,eAAY;AAAA,MACZ,WAAW;AAAA,MACX;AAAA,MAEA;AAAA,4BAAC,cAAW,WAAU,UAAS;AAAA,QAC9B,CAAC,WAAW,oBAAC,UAAK,WAAU,QAAO,sBAAQ;AAAA;AAAA;AAAA,EAC9C;AAEJ;AAGO,SAAS,WAAW,EAAE,QAAQ,SAAS,QAAQ,GAA8B;AAClF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,SAAS,YAAY;AAAA,MAC9B,MAAM,UAAU,SAAS;AAAA,MACzB,gBAAc;AAAA,MACd,OAAM;AAAA,MACN,cAAW;AAAA,MACX,eAAY;AAAA,MACZ,WAAW;AAAA,MACX;AAAA,MAEA;AAAA,4BAAC,YAAS,WAAU,UAAS;AAAA,QAC5B,CAAC,WAAW,oBAAC,UAAK,WAAU,QAAO,kBAAI;AAAA;AAAA;AAAA,EAC1C;AAEJ;AAGO,SAAS,mBAAmB,EAAE,QAAQ,SAAS,QAAQ,GAA8B;AAC1F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,SAAS,YAAY;AAAA,MAC9B,MAAM,UAAU,SAAS;AAAA,MACzB,gBAAc;AAAA,MACd,OAAO,SAAS,0BAA0B;AAAA,MAC1C,cAAW;AAAA,MACX,eAAY;AAAA,MACZ,WAAW;AAAA,MACX;AAAA,MAEA;AAAA,4BAAC,YAAS,WAAU,UAAS;AAAA,QAC5B,CAAC,WAAW,oBAAC,UAAK,WAAU,QAAO,2BAAa;AAAA;AAAA;AAAA,EACnD;AAEJ;AAMO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AACF,GAGiB;AACf,QAAM,SACJ;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OACE,kBACA;AAAA,MAEF,cAAW;AAAA,MACX,oBAAkB;AAAA,MAClB,UAAU,CAAC,CAAC;AAAA,MACZ,eAAY;AAAA,MACZ,WAAW;AAAA,MACX;AAAA,MAEA,8BAAC,YAAS,WAAU,UAAS;AAAA;AAAA,EAC/B;AAGF,SAAO,iBACL,oBAAC,UAAK,OAAO,gBAAgB,WAAU,eAAc,eAAY,0BAC9D,kBACH,IAEA;AAEJ;AAGO,SAAS,iBAA+B;AAC7C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAY;AAAA,MACb;AAAA;AAAA,EAED;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkLHWOKOMP_cjs = require('../chunk-LHWOKOMP.cjs');
4
+ var chunk3IH55CDE_cjs = require('../chunk-3IH55CDE.cjs');
5
5
  var chunkGNZAH6UI_cjs = require('../chunk-GNZAH6UI.cjs');
6
6
  var chunkJH6JTI76_cjs = require('../chunk-JH6JTI76.cjs');
7
7
  require('../chunk-QQMMCXBP.cjs');
@@ -15,51 +15,51 @@ require('../chunk-PLIF5CUV.cjs');
15
15
 
16
16
  Object.defineProperty(exports, "AnnotateButton", {
17
17
  enumerable: true,
18
- get: function () { return chunkLHWOKOMP_cjs.AnnotateButton; }
18
+ get: function () { return chunk3IH55CDE_cjs.AnnotateButton; }
19
19
  });
20
20
  Object.defineProperty(exports, "ClipButton", {
21
21
  enumerable: true,
22
- get: function () { return chunkLHWOKOMP_cjs.ClipButton; }
22
+ get: function () { return chunk3IH55CDE_cjs.ClipButton; }
23
23
  });
24
24
  Object.defineProperty(exports, "DEFAULT_VERSION_SNAPSHOT_BAR_LABELS", {
25
25
  enumerable: true,
26
- get: function () { return chunkLHWOKOMP_cjs.DEFAULT_VERSION_SNAPSHOT_BAR_LABELS; }
26
+ get: function () { return chunk3IH55CDE_cjs.DEFAULT_VERSION_SNAPSHOT_BAR_LABELS; }
27
27
  });
28
28
  Object.defineProperty(exports, "DownloadMarkupButton", {
29
29
  enumerable: true,
30
- get: function () { return chunkLHWOKOMP_cjs.DownloadMarkupButton; }
30
+ get: function () { return chunk3IH55CDE_cjs.DownloadMarkupButton; }
31
31
  });
32
32
  Object.defineProperty(exports, "FileShareDialog", {
33
33
  enumerable: true,
34
- get: function () { return chunkLHWOKOMP_cjs.FileShareDialog; }
34
+ get: function () { return chunk3IH55CDE_cjs.FileShareDialog; }
35
35
  });
36
36
  Object.defineProperty(exports, "MarkupNotices", {
37
37
  enumerable: true,
38
- get: function () { return chunkLHWOKOMP_cjs.MarkupNotices; }
38
+ get: function () { return chunk3IH55CDE_cjs.MarkupNotices; }
39
39
  });
40
40
  Object.defineProperty(exports, "MarkupViewNote", {
41
41
  enumerable: true,
42
- get: function () { return chunkLHWOKOMP_cjs.MarkupViewNote; }
42
+ get: function () { return chunk3IH55CDE_cjs.MarkupViewNote; }
43
43
  });
44
44
  Object.defineProperty(exports, "PlaceMySignatureMenuItems", {
45
45
  enumerable: true,
46
- get: function () { return chunkLHWOKOMP_cjs.PlaceMySignatureMenuItems; }
46
+ get: function () { return chunk3IH55CDE_cjs.PlaceMySignatureMenuItems; }
47
47
  });
48
48
  Object.defineProperty(exports, "ShowOriginalButton", {
49
49
  enumerable: true,
50
- get: function () { return chunkLHWOKOMP_cjs.ShowOriginalButton; }
50
+ get: function () { return chunk3IH55CDE_cjs.ShowOriginalButton; }
51
51
  });
52
52
  Object.defineProperty(exports, "SignatureRequestBanner", {
53
53
  enumerable: true,
54
- get: function () { return chunkLHWOKOMP_cjs.SignatureRequestBanner; }
54
+ get: function () { return chunk3IH55CDE_cjs.SignatureRequestBanner; }
55
55
  });
56
56
  Object.defineProperty(exports, "SignedEditNote", {
57
57
  enumerable: true,
58
- get: function () { return chunkLHWOKOMP_cjs.SignedEditNote; }
58
+ get: function () { return chunk3IH55CDE_cjs.SignedEditNote; }
59
59
  });
60
60
  Object.defineProperty(exports, "VersionSnapshotBar", {
61
61
  enumerable: true,
62
- get: function () { return chunkLHWOKOMP_cjs.VersionSnapshotBar; }
62
+ get: function () { return chunk3IH55CDE_cjs.VersionSnapshotBar; }
63
63
  });
64
64
  Object.defineProperty(exports, "DELETE_SAVED_SIGNATURE_TEXT", {
65
65
  enumerable: true,
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkDVE6NNZ2_cjs = require('./chunk-DVE6NNZ2.cjs');
5
4
  var chunk5UYFLFNR_cjs = require('./chunk-5UYFLFNR.cjs');
5
+ var chunkDVE6NNZ2_cjs = require('./chunk-DVE6NNZ2.cjs');
6
6
  var chunk2PQ5Z3WL_cjs = require('./chunk-2PQ5Z3WL.cjs');
7
7
  var chunkVRK3IQAP_cjs = require('./chunk-VRK3IQAP.cjs');
8
8
  var chunkANWJG4A4_cjs = require('./chunk-ANWJG4A4.cjs');
@@ -10,7 +10,7 @@ var chunkICZSVCDT_cjs = require('./chunk-ICZSVCDT.cjs');
10
10
  var chunkSRTSMA5K_cjs = require('./chunk-SRTSMA5K.cjs');
11
11
  require('./chunk-TS2XVXYK.cjs');
12
12
  var chunkVZKTOGZR_cjs = require('./chunk-VZKTOGZR.cjs');
13
- var chunkWRLGLZIA_cjs = require('./chunk-WRLGLZIA.cjs');
13
+ var chunkEMRY62HS_cjs = require('./chunk-EMRY62HS.cjs');
14
14
  var chunkSGYSDABK_cjs = require('./chunk-SGYSDABK.cjs');
15
15
  var chunkNEGFHF3V_cjs = require('./chunk-NEGFHF3V.cjs');
16
16
  var chunkZ3LFF3YT_cjs = require('./chunk-Z3LFF3YT.cjs');
@@ -182,14 +182,14 @@ function defineNavigation(sections) {
182
182
  };
183
183
  }
184
184
 
185
- Object.defineProperty(exports, "DroppableContainer", {
186
- enumerable: true,
187
- get: function () { return chunkDVE6NNZ2_cjs.DroppableContainer; }
188
- });
189
185
  Object.defineProperty(exports, "AskBar", {
190
186
  enumerable: true,
191
187
  get: function () { return chunk5UYFLFNR_cjs.AskBar; }
192
188
  });
189
+ Object.defineProperty(exports, "DroppableContainer", {
190
+ enumerable: true,
191
+ get: function () { return chunkDVE6NNZ2_cjs.DroppableContainer; }
192
+ });
193
193
  Object.defineProperty(exports, "ArticleList", {
194
194
  enumerable: true,
195
195
  get: function () { return chunk2PQ5Z3WL_cjs.ArticleList; }
@@ -416,191 +416,191 @@ Object.defineProperty(exports, "vCardFilename", {
416
416
  });
417
417
  Object.defineProperty(exports, "DEFAULT_GLOSSARY_LABELS", {
418
418
  enumerable: true,
419
- get: function () { return chunkWRLGLZIA_cjs.DEFAULT_GLOSSARY_LABELS; }
419
+ get: function () { return chunkEMRY62HS_cjs.DEFAULT_GLOSSARY_LABELS; }
420
420
  });
421
421
  Object.defineProperty(exports, "DEFAULT_TAG_COLUMNS_EDITOR_LABELS", {
422
422
  enumerable: true,
423
- get: function () { return chunkWRLGLZIA_cjs.DEFAULT_TAG_COLUMNS_EDITOR_LABELS; }
423
+ get: function () { return chunkEMRY62HS_cjs.DEFAULT_TAG_COLUMNS_EDITOR_LABELS; }
424
424
  });
425
425
  Object.defineProperty(exports, "DEFAULT_TAG_DETAIL_LABELS", {
426
426
  enumerable: true,
427
- get: function () { return chunkWRLGLZIA_cjs.DEFAULT_TAG_DETAIL_LABELS; }
427
+ get: function () { return chunkEMRY62HS_cjs.DEFAULT_TAG_DETAIL_LABELS; }
428
428
  });
429
429
  Object.defineProperty(exports, "DEFAULT_TAG_TABLE_DOCX_LABELS", {
430
430
  enumerable: true,
431
- get: function () { return chunkWRLGLZIA_cjs.DEFAULT_TAG_TABLE_DOCX_LABELS; }
431
+ get: function () { return chunkEMRY62HS_cjs.DEFAULT_TAG_TABLE_DOCX_LABELS; }
432
432
  });
433
433
  Object.defineProperty(exports, "DEFAULT_TAG_TABLE_LABELS", {
434
434
  enumerable: true,
435
- get: function () { return chunkWRLGLZIA_cjs.DEFAULT_TAG_TABLE_LABELS; }
435
+ get: function () { return chunkEMRY62HS_cjs.DEFAULT_TAG_TABLE_LABELS; }
436
436
  });
437
437
  Object.defineProperty(exports, "DEFAULT_WORKSPACE_ACTIVITY_LABELS", {
438
438
  enumerable: true,
439
- get: function () { return chunkWRLGLZIA_cjs.DEFAULT_WORKSPACE_ACTIVITY_LABELS; }
439
+ get: function () { return chunkEMRY62HS_cjs.DEFAULT_WORKSPACE_ACTIVITY_LABELS; }
440
440
  });
441
441
  Object.defineProperty(exports, "EXTRACT_LIMIT", {
442
442
  enumerable: true,
443
- get: function () { return chunkWRLGLZIA_cjs.EXTRACT_LIMIT; }
443
+ get: function () { return chunkEMRY62HS_cjs.EXTRACT_LIMIT; }
444
444
  });
445
445
  Object.defineProperty(exports, "EntityIdentityBar", {
446
446
  enumerable: true,
447
- get: function () { return chunkWRLGLZIA_cjs.EntityIdentityBar; }
447
+ get: function () { return chunkEMRY62HS_cjs.EntityIdentityBar; }
448
448
  });
449
449
  Object.defineProperty(exports, "ExtractEntitiesDialog", {
450
450
  enumerable: true,
451
- get: function () { return chunkWRLGLZIA_cjs.ExtractEntitiesDialog; }
451
+ get: function () { return chunkEMRY62HS_cjs.ExtractEntitiesDialog; }
452
452
  });
453
453
  Object.defineProperty(exports, "GridRowNavigator", {
454
454
  enumerable: true,
455
- get: function () { return chunkWRLGLZIA_cjs.GridRowNavigator; }
455
+ get: function () { return chunkEMRY62HS_cjs.GridRowNavigator; }
456
456
  });
457
457
  Object.defineProperty(exports, "GuidedCursor", {
458
458
  enumerable: true,
459
- get: function () { return chunkWRLGLZIA_cjs.GuidedCursor; }
459
+ get: function () { return chunkEMRY62HS_cjs.GuidedCursor; }
460
460
  });
461
461
  Object.defineProperty(exports, "IDENTITY_NAME_MAX_LENGTH", {
462
462
  enumerable: true,
463
- get: function () { return chunkWRLGLZIA_cjs.IDENTITY_NAME_MAX_LENGTH; }
463
+ get: function () { return chunkEMRY62HS_cjs.IDENTITY_NAME_MAX_LENGTH; }
464
464
  });
465
465
  Object.defineProperty(exports, "KIT_CHUNK_LOADERS", {
466
466
  enumerable: true,
467
- get: function () { return chunkWRLGLZIA_cjs.KIT_CHUNK_LOADERS; }
467
+ get: function () { return chunkEMRY62HS_cjs.KIT_CHUNK_LOADERS; }
468
468
  });
469
469
  Object.defineProperty(exports, "LoadingIndicator", {
470
470
  enumerable: true,
471
- get: function () { return chunkWRLGLZIA_cjs.LoadingIndicator; }
471
+ get: function () { return chunkEMRY62HS_cjs.LoadingIndicator; }
472
472
  });
473
473
  Object.defineProperty(exports, "TAG_TABLE_DOCX_LANDSCAPE_AFTER", {
474
474
  enumerable: true,
475
- get: function () { return chunkWRLGLZIA_cjs.TAG_TABLE_DOCX_LANDSCAPE_AFTER; }
475
+ get: function () { return chunkEMRY62HS_cjs.TAG_TABLE_DOCX_LANDSCAPE_AFTER; }
476
476
  });
477
477
  Object.defineProperty(exports, "TagColumnsEditor", {
478
478
  enumerable: true,
479
- get: function () { return chunkWRLGLZIA_cjs.TagColumnsEditor; }
479
+ get: function () { return chunkEMRY62HS_cjs.TagColumnsEditor; }
480
480
  });
481
481
  Object.defineProperty(exports, "TagDetail", {
482
482
  enumerable: true,
483
- get: function () { return chunkWRLGLZIA_cjs.TagDetail; }
483
+ get: function () { return chunkEMRY62HS_cjs.TagDetail; }
484
484
  });
485
485
  Object.defineProperty(exports, "TagTable", {
486
486
  enumerable: true,
487
- get: function () { return chunkWRLGLZIA_cjs.TagTable; }
487
+ get: function () { return chunkEMRY62HS_cjs.TagTable; }
488
488
  });
489
489
  Object.defineProperty(exports, "TagTableCell", {
490
490
  enumerable: true,
491
- get: function () { return chunkWRLGLZIA_cjs.TagTableCell; }
491
+ get: function () { return chunkEMRY62HS_cjs.TagTableCell; }
492
492
  });
493
493
  Object.defineProperty(exports, "Toolbar", {
494
494
  enumerable: true,
495
- get: function () { return chunkWRLGLZIA_cjs.Toolbar; }
495
+ get: function () { return chunkEMRY62HS_cjs.Toolbar; }
496
496
  });
497
497
  Object.defineProperty(exports, "WorkspaceActivityList", {
498
498
  enumerable: true,
499
- get: function () { return chunkWRLGLZIA_cjs.WorkspaceActivityList; }
499
+ get: function () { return chunkEMRY62HS_cjs.WorkspaceActivityList; }
500
500
  });
501
501
  Object.defineProperty(exports, "cellText", {
502
502
  enumerable: true,
503
- get: function () { return chunkWRLGLZIA_cjs.cellText; }
503
+ get: function () { return chunkEMRY62HS_cjs.cellText; }
504
504
  });
505
505
  Object.defineProperty(exports, "cellValue", {
506
506
  enumerable: true,
507
- get: function () { return chunkWRLGLZIA_cjs.cellValue; }
507
+ get: function () { return chunkEMRY62HS_cjs.cellValue; }
508
508
  });
509
509
  Object.defineProperty(exports, "documentCount", {
510
510
  enumerable: true,
511
- get: function () { return chunkWRLGLZIA_cjs.documentCount; }
511
+ get: function () { return chunkEMRY62HS_cjs.documentCount; }
512
512
  });
513
513
  Object.defineProperty(exports, "entitiesPhrase", {
514
514
  enumerable: true,
515
- get: function () { return chunkWRLGLZIA_cjs.entitiesPhrase; }
515
+ get: function () { return chunkEMRY62HS_cjs.entitiesPhrase; }
516
516
  });
517
517
  Object.defineProperty(exports, "fieldWrites", {
518
518
  enumerable: true,
519
- get: function () { return chunkWRLGLZIA_cjs.fieldWrites; }
519
+ get: function () { return chunkEMRY62HS_cjs.fieldWrites; }
520
520
  });
521
521
  Object.defineProperty(exports, "glossaryDocumentXml", {
522
522
  enumerable: true,
523
- get: function () { return chunkWRLGLZIA_cjs.glossaryDocumentXml; }
523
+ get: function () { return chunkEMRY62HS_cjs.glossaryDocumentXml; }
524
524
  });
525
525
  Object.defineProperty(exports, "glossaryDocx", {
526
526
  enumerable: true,
527
- get: function () { return chunkWRLGLZIA_cjs.glossaryDocx; }
527
+ get: function () { return chunkEMRY62HS_cjs.glossaryDocx; }
528
528
  });
529
529
  Object.defineProperty(exports, "glossaryEntries", {
530
530
  enumerable: true,
531
- get: function () { return chunkWRLGLZIA_cjs.glossaryEntries; }
531
+ get: function () { return chunkEMRY62HS_cjs.glossaryEntries; }
532
532
  });
533
533
  Object.defineProperty(exports, "glossaryFileName", {
534
534
  enumerable: true,
535
- get: function () { return chunkWRLGLZIA_cjs.glossaryFileName; }
535
+ get: function () { return chunkEMRY62HS_cjs.glossaryFileName; }
536
536
  });
537
537
  Object.defineProperty(exports, "glossaryMarkdown", {
538
538
  enumerable: true,
539
- get: function () { return chunkWRLGLZIA_cjs.glossaryMarkdown; }
539
+ get: function () { return chunkEMRY62HS_cjs.glossaryMarkdown; }
540
540
  });
541
541
  Object.defineProperty(exports, "isGap", {
542
542
  enumerable: true,
543
- get: function () { return chunkWRLGLZIA_cjs.isGap; }
543
+ get: function () { return chunkEMRY62HS_cjs.isGap; }
544
544
  });
545
545
  Object.defineProperty(exports, "parseCell", {
546
546
  enumerable: true,
547
- get: function () { return chunkWRLGLZIA_cjs.parseCell; }
547
+ get: function () { return chunkEMRY62HS_cjs.parseCell; }
548
548
  });
549
549
  Object.defineProperty(exports, "prefetchViewerChunks", {
550
550
  enumerable: true,
551
- get: function () { return chunkWRLGLZIA_cjs.prefetchViewerChunks; }
551
+ get: function () { return chunkEMRY62HS_cjs.prefetchViewerChunks; }
552
552
  });
553
553
  Object.defineProperty(exports, "preloadKitChunks", {
554
554
  enumerable: true,
555
- get: function () { return chunkWRLGLZIA_cjs.preloadKitChunks; }
555
+ get: function () { return chunkEMRY62HS_cjs.preloadKitChunks; }
556
556
  });
557
557
  Object.defineProperty(exports, "rowLinks", {
558
558
  enumerable: true,
559
- get: function () { return chunkWRLGLZIA_cjs.rowLinks; }
559
+ get: function () { return chunkEMRY62HS_cjs.rowLinks; }
560
560
  });
561
561
  Object.defineProperty(exports, "tagDetailLabels", {
562
562
  enumerable: true,
563
- get: function () { return chunkWRLGLZIA_cjs.tagDetailLabels; }
563
+ get: function () { return chunkEMRY62HS_cjs.tagDetailLabels; }
564
564
  });
565
565
  Object.defineProperty(exports, "tagKindDescription", {
566
566
  enumerable: true,
567
- get: function () { return chunkWRLGLZIA_cjs.tagKindDescription; }
567
+ get: function () { return chunkEMRY62HS_cjs.tagKindDescription; }
568
568
  });
569
569
  Object.defineProperty(exports, "tagNoteLabel", {
570
570
  enumerable: true,
571
- get: function () { return chunkWRLGLZIA_cjs.tagNoteLabel; }
571
+ get: function () { return chunkEMRY62HS_cjs.tagNoteLabel; }
572
572
  });
573
573
  Object.defineProperty(exports, "tagTableDocumentXml", {
574
574
  enumerable: true,
575
- get: function () { return chunkWRLGLZIA_cjs.tagTableDocumentXml; }
575
+ get: function () { return chunkEMRY62HS_cjs.tagTableDocumentXml; }
576
576
  });
577
577
  Object.defineProperty(exports, "tagTableDocx", {
578
578
  enumerable: true,
579
- get: function () { return chunkWRLGLZIA_cjs.tagTableDocx; }
579
+ get: function () { return chunkEMRY62HS_cjs.tagTableDocx; }
580
580
  });
581
581
  Object.defineProperty(exports, "tagTableLabels", {
582
582
  enumerable: true,
583
- get: function () { return chunkWRLGLZIA_cjs.tagTableLabels; }
583
+ get: function () { return chunkEMRY62HS_cjs.tagTableLabels; }
584
584
  });
585
585
  Object.defineProperty(exports, "tagTableMarkdown", {
586
586
  enumerable: true,
587
- get: function () { return chunkWRLGLZIA_cjs.tagTableMarkdown; }
587
+ get: function () { return chunkEMRY62HS_cjs.tagTableMarkdown; }
588
588
  });
589
589
  Object.defineProperty(exports, "tagsPageNouns", {
590
590
  enumerable: true,
591
- get: function () { return chunkWRLGLZIA_cjs.tagsPageNouns; }
591
+ get: function () { return chunkEMRY62HS_cjs.tagsPageNouns; }
592
592
  });
593
593
  Object.defineProperty(exports, "useTipsPlacement", {
594
594
  enumerable: true,
595
- get: function () { return chunkWRLGLZIA_cjs.useTipsPlacement; }
595
+ get: function () { return chunkEMRY62HS_cjs.useTipsPlacement; }
596
596
  });
597
597
  Object.defineProperty(exports, "workspaceActivityHeadline", {
598
598
  enumerable: true,
599
- get: function () { return chunkWRLGLZIA_cjs.workspaceActivityHeadline; }
599
+ get: function () { return chunkEMRY62HS_cjs.workspaceActivityHeadline; }
600
600
  });
601
601
  Object.defineProperty(exports, "workspaceActivityTarget", {
602
602
  enumerable: true,
603
- get: function () { return chunkWRLGLZIA_cjs.workspaceActivityTarget; }
603
+ get: function () { return chunkEMRY62HS_cjs.workspaceActivityTarget; }
604
604
  });
605
605
  Object.defineProperty(exports, "ThemeEditor", {
606
606
  enumerable: true,
@@ -1,6 +1,6 @@
1
1
  /**
2
- * The floating bar over a selected text box or shape: its type (smaller, larger, bold, italic, its
3
- * colour), its alignment, its fill, in front of or behind the clips, delete. Colours are picked with
2
+ * The floating bar over a selected text box or shape: its type (smaller, larger, bold, its
3
+ * colour), its fill and delete; italic, alignment and stacking in its "…". Colours are picked with
4
4
  * the system's colour picker.
5
5
  */
6
6
  import { type SlideBox } from './boxes';