@docmentis/udoc-viewer 0.5.24 → 0.6.0

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 (86) hide show
  1. package/README.md +161 -28
  2. package/dist/package.json +7 -5
  3. package/dist/src/UDocClient.d.ts +42 -12
  4. package/dist/src/UDocClient.d.ts.map +1 -1
  5. package/dist/src/UDocClient.js +7 -6
  6. package/dist/src/UDocClient.js.map +1 -1
  7. package/dist/src/UDocViewer.d.ts +48 -3
  8. package/dist/src/UDocViewer.d.ts.map +1 -1
  9. package/dist/src/UDocViewer.js +139 -15
  10. package/dist/src/UDocViewer.js.map +1 -1
  11. package/dist/src/index.d.ts +1 -1
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js.map +1 -1
  14. package/dist/src/performance/PerformanceCounter.d.ts +1 -1
  15. package/dist/src/performance/PerformanceCounter.d.ts.map +1 -1
  16. package/dist/src/performance/PerformanceCounter.js.map +1 -1
  17. package/dist/src/telemetry.d.ts +3 -1
  18. package/dist/src/telemetry.d.ts.map +1 -1
  19. package/dist/src/telemetry.js +11 -1
  20. package/dist/src/telemetry.js.map +1 -1
  21. package/dist/src/ui/viewer/actions.d.ts +40 -1
  22. package/dist/src/ui/viewer/actions.d.ts.map +1 -1
  23. package/dist/src/ui/viewer/components/RightPanel.d.ts.map +1 -1
  24. package/dist/src/ui/viewer/components/RightPanel.js +5 -1
  25. package/dist/src/ui/viewer/components/RightPanel.js.map +1 -1
  26. package/dist/src/ui/viewer/components/SearchPanel.d.ts +20 -0
  27. package/dist/src/ui/viewer/components/SearchPanel.d.ts.map +1 -0
  28. package/dist/src/ui/viewer/components/SearchPanel.js +246 -0
  29. package/dist/src/ui/viewer/components/SearchPanel.js.map +1 -0
  30. package/dist/src/ui/viewer/components/Spread.d.ts +2 -0
  31. package/dist/src/ui/viewer/components/Spread.d.ts.map +1 -1
  32. package/dist/src/ui/viewer/components/Spread.js +64 -0
  33. package/dist/src/ui/viewer/components/Spread.js.map +1 -1
  34. package/dist/src/ui/viewer/components/Toolbar.d.ts.map +1 -1
  35. package/dist/src/ui/viewer/components/Toolbar.js +27 -2
  36. package/dist/src/ui/viewer/components/Toolbar.js.map +1 -1
  37. package/dist/src/ui/viewer/components/Viewport.d.ts.map +1 -1
  38. package/dist/src/ui/viewer/components/Viewport.js +15 -2
  39. package/dist/src/ui/viewer/components/Viewport.js.map +1 -1
  40. package/dist/src/ui/viewer/effects.d.ts.map +1 -1
  41. package/dist/src/ui/viewer/effects.js +106 -0
  42. package/dist/src/ui/viewer/effects.js.map +1 -1
  43. package/dist/src/ui/viewer/icons.d.ts +4 -0
  44. package/dist/src/ui/viewer/icons.d.ts.map +1 -1
  45. package/dist/src/ui/viewer/icons.js +5 -0
  46. package/dist/src/ui/viewer/icons.js.map +1 -1
  47. package/dist/src/ui/viewer/reducer.d.ts.map +1 -1
  48. package/dist/src/ui/viewer/reducer.js +100 -6
  49. package/dist/src/ui/viewer/reducer.js.map +1 -1
  50. package/dist/src/ui/viewer/search/index.d.ts +2 -0
  51. package/dist/src/ui/viewer/search/index.d.ts.map +1 -0
  52. package/dist/src/ui/viewer/search/index.js +2 -0
  53. package/dist/src/ui/viewer/search/index.js.map +1 -0
  54. package/dist/src/ui/viewer/search/search.d.ts +19 -0
  55. package/dist/src/ui/viewer/search/search.d.ts.map +1 -0
  56. package/dist/src/ui/viewer/search/search.js +120 -0
  57. package/dist/src/ui/viewer/search/search.js.map +1 -0
  58. package/dist/src/ui/viewer/shell.d.ts.map +1 -1
  59. package/dist/src/ui/viewer/shell.js +59 -2
  60. package/dist/src/ui/viewer/shell.js.map +1 -1
  61. package/dist/src/ui/viewer/state.d.ts +42 -1
  62. package/dist/src/ui/viewer/state.d.ts.map +1 -1
  63. package/dist/src/ui/viewer/state.js +12 -0
  64. package/dist/src/ui/viewer/state.js.map +1 -1
  65. package/dist/src/ui/viewer/styles-inline.d.ts +1 -1
  66. package/dist/src/ui/viewer/styles-inline.d.ts.map +1 -1
  67. package/dist/src/ui/viewer/styles-inline.js +556 -153
  68. package/dist/src/ui/viewer/styles-inline.js.map +1 -1
  69. package/dist/src/ui/viewer/text/render.d.ts +2 -0
  70. package/dist/src/ui/viewer/text/render.d.ts.map +1 -1
  71. package/dist/src/ui/viewer/text/render.js +41 -111
  72. package/dist/src/ui/viewer/text/render.js.map +1 -1
  73. package/dist/src/wasm/udoc.d.ts +14 -18
  74. package/dist/src/wasm/udoc.js +40 -18
  75. package/dist/src/wasm/udoc_bg.wasm +0 -0
  76. package/dist/src/wasm/udoc_bg.wasm.d.ts +1 -0
  77. package/dist/src/worker/WorkerClient.d.ts +5 -0
  78. package/dist/src/worker/WorkerClient.d.ts.map +1 -1
  79. package/dist/src/worker/WorkerClient.js +12 -0
  80. package/dist/src/worker/WorkerClient.js.map +1 -1
  81. package/dist/src/worker/worker-inline.js +1 -1
  82. package/dist/src/worker/worker.d.ts +12 -0
  83. package/dist/src/worker/worker.d.ts.map +1 -1
  84. package/dist/src/worker/worker.js +47 -18
  85. package/dist/src/worker/worker.js.map +1 -1
  86. package/package.json +7 -5
@@ -13,6 +13,7 @@ export const ICON_ATTACHMENT = `<svg viewBox="0 0 24 24" fill="currentColor"><pa
13
13
  export const ICON_CHEVRON_LEFT = `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/></svg>`;
14
14
  export const ICON_CHEVRON_RIGHT = `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/></svg>`;
15
15
  export const ICON_CHEVRON_DOWN = `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/></svg>`;
16
+ export const ICON_CHEVRON_UP = `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z"/></svg>`;
16
17
  export const ICON_ZOOM_IN = `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z"/></svg>`;
17
18
  export const ICON_ZOOM_OUT = `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z"/></svg>`;
18
19
  // View mode menu icon (sliders/adjustments)
@@ -41,4 +42,8 @@ export const ICON_SPACING_SPREAD = `<svg viewBox="0 0 24 24" fill="none" stroke=
41
42
  export const ICON_SPACING_PAGE = `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10 3v9H3M14 3v9h7M10 21v-9H3M14 21v-9h7"/></svg>`;
42
43
  // Checkmark icon for selected items
43
44
  export const ICON_CHECK = `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>`;
45
+ // Theme toggle icons
46
+ export const ICON_THEME_LIGHT = `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zM2 13h2c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1zm18 0h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1zM11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1zm0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1zM5.99 4.58a.996.996 0 0 0-1.41 0 .996.996 0 0 0 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0s.39-1.03 0-1.41L5.99 4.58zm12.37 12.37a.996.996 0 0 0-1.41 0 .996.996 0 0 0 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0a.996.996 0 0 0 0-1.41l-1.06-1.06zm1.06-10.96a.996.996 0 0 0 0-1.41.996.996 0 0 0-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0l1.06-1.06zM7.05 18.36a.996.996 0 0 0 0-1.41.996.996 0 0 0-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0l1.06-1.06z"/></svg>`;
47
+ export const ICON_THEME_DARK = `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M9.37 5.51A7.35 7.35 0 0 0 9.1 7.5c0 4.08 3.32 7.4 7.4 7.4.68 0 1.35-.09 1.99-.27A7.014 7.014 0 0 1 12 19c-3.86 0-7-3.14-7-7 0-2.93 1.81-5.45 4.37-6.49zM12 3a9 9 0 1 0 9 9c0-.46-.04-.92-.1-1.36a5.389 5.389 0 0 1-4.4 2.26 5.403 5.403 0 0 1-3.14-9.8c-.44-.06-.9-.1-1.36-.1z"/></svg>`;
48
+ export const ICON_THEME_SYSTEM = `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M20 18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2H0v2h24v-2h-4zM4 6h16v10H4V6z"/></svg>`;
44
49
  //# sourceMappingURL=icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../../src/ui/viewer/icons.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,8GAA8G,CAAC;AAExI,MAAM,CAAC,MAAM,WAAW,GAAG,2QAA2Q,CAAC;AAEvS,MAAM,CAAC,MAAM,aAAa,GAAG,2LAA2L,CAAC;AAEzN,MAAM,CAAC,MAAM,eAAe,GAAG,+IAA+I,CAAC;AAE/K,MAAM,CAAC,MAAM,oBAAoB,GAAG,8IAA8I,CAAC;AAEnL,uBAAuB;AACvB,MAAM,CAAC,MAAM,cAAc,GAAG,oMAAoM,CAAC;AAEnO,MAAM,CAAC,MAAM,YAAY,GAAG,uJAAuJ,CAAC;AAEpL,MAAM,CAAC,MAAM,aAAa,GAAG,qHAAqH,CAAC;AAEnJ,MAAM,CAAC,MAAM,WAAW,GAAG,4KAA4K,CAAC;AAExM,MAAM,CAAC,MAAM,eAAe,GAAG,6TAA6T,CAAC;AAE7V,mBAAmB;AACnB,MAAM,CAAC,MAAM,iBAAiB,GAAG,8GAA8G,CAAC;AAEhJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,+GAA+G,CAAC;AAElJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,wHAAwH,CAAC;AAE1J,MAAM,CAAC,MAAM,YAAY,GAAG,4SAA4S,CAAC;AAEzU,MAAM,CAAC,MAAM,aAAa,GAAG,sRAAsR,CAAC;AAEpT,4CAA4C;AAC5C,MAAM,CAAC,MAAM,cAAc,GAAG,wLAAwL,CAAC;AAEvN,iDAAiD;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,qIAAqI,CAAC;AAExK,MAAM,CAAC,MAAM,sBAAsB,GAAG,4JAA4J,CAAC;AAEnM,iDAAiD;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,qIAAqI,CAAC;AAExK,MAAM,CAAC,MAAM,kBAAkB,GAAG,qLAAqL,CAAC;AAExN,MAAM,CAAC,MAAM,4BAA4B,GAAG,4MAA4M,CAAC;AAEzP,MAAM,CAAC,MAAM,2BAA2B,GAAG,4MAA4M,CAAC;AAExP,qEAAqE;AACrE,MAAM,CAAC,MAAM,aAAa,GAAG,4JAA4J,CAAC;AAE1L,MAAM,CAAC,MAAM,cAAc,GAAG,+JAA+J,CAAC;AAE9L,MAAM,CAAC,MAAM,eAAe,GAAG,+JAA+J,CAAC;AAE/L,MAAM,CAAC,MAAM,eAAe,GAAG,4JAA4J,CAAC;AAE5L,wDAAwD;AACxD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,wIAAwI,CAAC;AAEzK,0CAA0C;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,gHAAgH,CAAC;AAElJ,8GAA8G;AAC9G,MAAM,CAAC,MAAM,mBAAmB,GAAG,wIAAwI,CAAC;AAE5K,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iBAAiB,GAAG,wIAAwI,CAAC;AAE1K,oCAAoC;AACpC,MAAM,CAAC,MAAM,UAAU,GAAG,kHAAkH,CAAC"}
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../../src/ui/viewer/icons.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,8GAA8G,CAAC;AAExI,MAAM,CAAC,MAAM,WAAW,GAAG,2QAA2Q,CAAC;AAEvS,MAAM,CAAC,MAAM,aAAa,GAAG,2LAA2L,CAAC;AAEzN,MAAM,CAAC,MAAM,eAAe,GAAG,+IAA+I,CAAC;AAE/K,MAAM,CAAC,MAAM,oBAAoB,GAAG,8IAA8I,CAAC;AAEnL,uBAAuB;AACvB,MAAM,CAAC,MAAM,cAAc,GAAG,oMAAoM,CAAC;AAEnO,MAAM,CAAC,MAAM,YAAY,GAAG,uJAAuJ,CAAC;AAEpL,MAAM,CAAC,MAAM,aAAa,GAAG,qHAAqH,CAAC;AAEnJ,MAAM,CAAC,MAAM,WAAW,GAAG,4KAA4K,CAAC;AAExM,MAAM,CAAC,MAAM,eAAe,GAAG,6TAA6T,CAAC;AAE7V,mBAAmB;AACnB,MAAM,CAAC,MAAM,iBAAiB,GAAG,8GAA8G,CAAC;AAEhJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,+GAA+G,CAAC;AAElJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,wHAAwH,CAAC;AAE1J,MAAM,CAAC,MAAM,eAAe,GAAG,yHAAyH,CAAC;AAEzJ,MAAM,CAAC,MAAM,YAAY,GAAG,4SAA4S,CAAC;AAEzU,MAAM,CAAC,MAAM,aAAa,GAAG,sRAAsR,CAAC;AAEpT,4CAA4C;AAC5C,MAAM,CAAC,MAAM,cAAc,GAAG,wLAAwL,CAAC;AAEvN,iDAAiD;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,qIAAqI,CAAC;AAExK,MAAM,CAAC,MAAM,sBAAsB,GAAG,4JAA4J,CAAC;AAEnM,iDAAiD;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,qIAAqI,CAAC;AAExK,MAAM,CAAC,MAAM,kBAAkB,GAAG,qLAAqL,CAAC;AAExN,MAAM,CAAC,MAAM,4BAA4B,GAAG,4MAA4M,CAAC;AAEzP,MAAM,CAAC,MAAM,2BAA2B,GAAG,4MAA4M,CAAC;AAExP,qEAAqE;AACrE,MAAM,CAAC,MAAM,aAAa,GAAG,4JAA4J,CAAC;AAE1L,MAAM,CAAC,MAAM,cAAc,GAAG,+JAA+J,CAAC;AAE9L,MAAM,CAAC,MAAM,eAAe,GAAG,+JAA+J,CAAC;AAE/L,MAAM,CAAC,MAAM,eAAe,GAAG,4JAA4J,CAAC;AAE5L,wDAAwD;AACxD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,wIAAwI,CAAC;AAEzK,0CAA0C;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,gHAAgH,CAAC;AAElJ,8GAA8G;AAC9G,MAAM,CAAC,MAAM,mBAAmB,GAAG,wIAAwI,CAAC;AAE5K,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iBAAiB,GAAG,wIAAwI,CAAC;AAE1K,oCAAoC;AACpC,MAAM,CAAC,MAAM,UAAU,GAAG,kHAAkH,CAAC;AAE7I,qBAAqB;AACrB,MAAM,CAAC,MAAM,gBAAgB,GAAG,00BAA00B,CAAC;AAE32B,MAAM,CAAC,MAAM,eAAe,GAAG,gVAAgV,CAAC;AAEhX,MAAM,CAAC,MAAM,iBAAiB,GAAG,uKAAuK,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../../src/ui/viewer/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGxC,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CA2VvE"}
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../../src/ui/viewer/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGxC,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CA6avE"}
@@ -48,6 +48,12 @@ export function reducer(state, action) {
48
48
  annotationsLoading: new Set(),
49
49
  pageText: new Map(),
50
50
  textLoading: new Set(),
51
+ searchQuery: "",
52
+ searchCaseSensitive: false,
53
+ searchMatches: [],
54
+ searchActiveIndex: -1,
55
+ searchTextLoaded: false,
56
+ searchTextLoading: false,
51
57
  };
52
58
  }
53
59
  case "SET_PAGE": {
@@ -184,8 +190,7 @@ export function reducer(state, action) {
184
190
  return { ...state, zoomMode: action.mode };
185
191
  }
186
192
  case "SET_ZOOM": {
187
- const steps = state.zoomSteps;
188
- const zoom = clamp(action.zoom, steps[0], steps[steps.length - 1]);
193
+ const zoom = clamp(action.zoom, state.minZoom, state.maxZoom);
189
194
  if (state.zoom === zoom && state.zoomMode === "custom")
190
195
  return state;
191
196
  return { ...state, zoom, zoomMode: "custom" };
@@ -204,17 +209,19 @@ export function reducer(state, action) {
204
209
  const steps = state.zoomSteps;
205
210
  const currentZoom = state.effectiveZoom ?? state.zoom;
206
211
  const nextStep = steps.find((s) => s > currentZoom + 1e-9) ?? steps[steps.length - 1];
207
- if (currentZoom >= nextStep - 1e-9 && state.zoomMode === "custom")
212
+ const clamped = Math.min(nextStep, state.maxZoom);
213
+ if (currentZoom >= clamped - 1e-9 && state.zoomMode === "custom")
208
214
  return state;
209
- return { ...state, zoom: nextStep, zoomMode: "custom" };
215
+ return { ...state, zoom: clamped, zoomMode: "custom" };
210
216
  }
211
217
  case "ZOOM_OUT": {
212
218
  const steps = state.zoomSteps;
213
219
  const currentZoom = state.effectiveZoom ?? state.zoom;
214
220
  const prevStep = [...steps].reverse().find((s) => s < currentZoom - 1e-9) ?? steps[0];
215
- if (currentZoom <= prevStep + 1e-9 && state.zoomMode === "custom")
221
+ const clamped = Math.max(prevStep, state.minZoom);
222
+ if (currentZoom <= clamped + 1e-9 && state.zoomMode === "custom")
216
223
  return state;
217
- return { ...state, zoom: prevStep, zoomMode: "custom" };
224
+ return { ...state, zoom: clamped, zoomMode: "custom" };
218
225
  }
219
226
  case "SET_PAGE_ROTATION": {
220
227
  if (state.pageRotation === action.rotation)
@@ -263,11 +270,18 @@ export function reducer(state, action) {
263
270
  const newPanel = state.activePanel === action.panel ? null : action.panel;
264
271
  if (state.activePanel === newPanel)
265
272
  return state;
273
+ // Clear search state when toggling away from search panel
274
+ if (state.activePanel === "search" && newPanel !== "search") {
275
+ return { ...state, activePanel: newPanel, searchQuery: "", searchMatches: [], searchActiveIndex: -1 };
276
+ }
266
277
  return { ...state, activePanel: newPanel };
267
278
  }
268
279
  case "CLOSE_PANEL": {
269
280
  if (state.activePanel === null)
270
281
  return state;
282
+ if (state.activePanel === "search") {
283
+ return { ...state, activePanel: null, searchQuery: "", searchMatches: [], searchActiveIndex: -1 };
284
+ }
271
285
  return { ...state, activePanel: null };
272
286
  }
273
287
  case "SET_LEFT_PANEL_WIDTH": {
@@ -314,6 +328,33 @@ export function reducer(state, action) {
314
328
  return state;
315
329
  return { ...state, fullscreenButtonVisible: action.visible };
316
330
  }
331
+ case "SET_THEME": {
332
+ if (state.theme === action.theme)
333
+ return state;
334
+ return { ...state, theme: action.theme };
335
+ }
336
+ case "SET_THEME_SWITCHING_DISABLED": {
337
+ if (state.themeSwitchingDisabled === action.disabled)
338
+ return state;
339
+ return { ...state, themeSwitchingDisabled: action.disabled };
340
+ }
341
+ case "SET_TEXT_SELECTION_DISABLED": {
342
+ if (state.textSelectionDisabled === action.disabled)
343
+ return state;
344
+ return { ...state, textSelectionDisabled: action.disabled };
345
+ }
346
+ case "SET_MIN_ZOOM": {
347
+ if (state.minZoom === action.zoom)
348
+ return state;
349
+ const zoom = state.zoom < action.zoom ? action.zoom : state.zoom;
350
+ return { ...state, minZoom: action.zoom, zoom };
351
+ }
352
+ case "SET_MAX_ZOOM": {
353
+ if (state.maxZoom === action.zoom)
354
+ return state;
355
+ const zoom = state.zoom > action.zoom ? action.zoom : state.zoom;
356
+ return { ...state, maxZoom: action.zoom, zoom };
357
+ }
317
358
  case "SET_PANEL_DISABLED": {
318
359
  const alreadyDisabled = state.disabledPanels.has(action.panel);
319
360
  if (alreadyDisabled === action.disabled)
@@ -350,6 +391,59 @@ export function reducer(state, action) {
350
391
  return state;
351
392
  return { ...state, isFullscreen: action.isFullscreen };
352
393
  }
394
+ // Search
395
+ case "SET_SEARCH_QUERY": {
396
+ if (state.searchQuery === action.query)
397
+ return state;
398
+ return { ...state, searchQuery: action.query, searchMatches: [], searchActiveIndex: -1 };
399
+ }
400
+ case "SET_SEARCH_CASE_SENSITIVE": {
401
+ if (state.searchCaseSensitive === action.caseSensitive)
402
+ return state;
403
+ return { ...state, searchCaseSensitive: action.caseSensitive, searchMatches: [], searchActiveIndex: -1 };
404
+ }
405
+ case "SET_SEARCH_MATCHES": {
406
+ return {
407
+ ...state,
408
+ searchMatches: action.matches,
409
+ searchActiveIndex: action.matches.length > 0 ? 0 : -1,
410
+ };
411
+ }
412
+ case "SET_SEARCH_ACTIVE_INDEX": {
413
+ const index = action.index;
414
+ if (index < 0 || index >= state.searchMatches.length)
415
+ return state;
416
+ if (state.searchActiveIndex === index)
417
+ return state;
418
+ return { ...state, searchActiveIndex: index };
419
+ }
420
+ case "SEARCH_NEXT": {
421
+ if (state.searchMatches.length === 0)
422
+ return state;
423
+ const next = (state.searchActiveIndex + 1) % state.searchMatches.length;
424
+ return { ...state, searchActiveIndex: next };
425
+ }
426
+ case "SEARCH_PREV": {
427
+ if (state.searchMatches.length === 0)
428
+ return state;
429
+ const prev = (state.searchActiveIndex - 1 + state.searchMatches.length) % state.searchMatches.length;
430
+ return { ...state, searchActiveIndex: prev };
431
+ }
432
+ case "CLEAR_SEARCH": {
433
+ if (state.searchQuery === "" && state.searchMatches.length === 0 && state.searchActiveIndex === -1)
434
+ return state;
435
+ return { ...state, searchQuery: "", searchMatches: [], searchActiveIndex: -1 };
436
+ }
437
+ case "SET_SEARCH_TEXT_LOADING": {
438
+ if (state.searchTextLoading === action.loading)
439
+ return state;
440
+ return { ...state, searchTextLoading: action.loading };
441
+ }
442
+ case "SET_SEARCH_TEXT_LOADED": {
443
+ if (state.searchTextLoaded === action.loaded)
444
+ return state;
445
+ return { ...state, searchTextLoaded: action.loaded };
446
+ }
353
447
  // Download progress
354
448
  case "SET_DOWNLOAD_PROGRESS": {
355
449
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../../../src/ui/viewer/reducer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,UAAU,OAAO,CAAC,KAAkB,EAAE,MAAc;IACtD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,UAAU;YACX,OAAO,KAAK,CAAC;QAEjB,WAAW;QACX,KAAK,SAAS,CAAC,CAAC,CAAC;YACb,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAC;YAC3C,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC;YAC/B,OAAO;gBACH,GAAG,KAAK;gBACR,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,IAAI,EAAE,CAAC;gBACP,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,4DAA4D;gBAC5D,UAAU,EAAE,EAAE,EAAE,UAAU,IAAI,YAAY,CAAC,UAAU;gBACrD,UAAU,EAAE,EAAE,EAAE,UAAU,IAAI,YAAY,CAAC,UAAU;gBACrD,QAAQ,EAAE,EAAE,EAAE,QAAQ,IAAI,YAAY,CAAC,QAAQ;gBAC/C,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,YAAY,CAAC,IAAI;gBACnC,aAAa,EAAE,EAAE,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa;gBAC9F,YAAY,EAAE,EAAE,EAAE,YAAY,IAAI,YAAY,CAAC,YAAY;gBAC3D,WAAW,EAAE,EAAE,EAAE,WAAW,IAAI,YAAY,CAAC,WAAW;gBACxD,WAAW,EAAE,EAAE,EAAE,WAAW,IAAI,YAAY,CAAC,WAAW;gBACxD,aAAa,EAAE,EAAE,EAAE,aAAa,IAAI,YAAY,CAAC,aAAa;aACjE,CAAC;QACN,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACvB,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACrD,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACtD,OAAO;gBACH,GAAG,KAAK;gBACR,GAAG,EAAE,IAAI;gBACT,IAAI,EAAE,CAAC;gBACP,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,EAAE;gBACb,aAAa,EAAE,KAAK;gBACpB,aAAa,EAAE,IAAI;gBACnB,gBAAgB,EAAE,KAAK;gBACvB,OAAO,EAAE,IAAI;gBACb,cAAc,EAAE,KAAK;gBACrB,eAAe,EAAE,IAAI,GAAG,EAAE;gBAC1B,kBAAkB,EAAE,IAAI,GAAG,EAAE;gBAC7B,QAAQ,EAAE,IAAI,GAAG,EAAE;gBACnB,WAAW,EAAE,IAAI,GAAG,EAAE;aACzB,CAAC;QACN,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC;YACtE,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YACtC,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;QAC9B,CAAC;QAED,sBAAsB;QACtB,KAAK,oBAAoB,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa;gBAAE,OAAO,KAAK,CAAC;YAC/D,OAAO,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAClF,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,gBAAgB;gBAAE,OAAO,KAAK,CAAC;YACzC,OAAO,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACrE,CAAC;QACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC1B,OAAO,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;QACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC1B,OAAO,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9E,CAAC;QACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC1B,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAC/C,OAAO,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED,8BAA8B;QAC9B,KAAK,cAAc,CAAC,CAAC,CAAC;YAClB,IAAI,KAAK,CAAC,cAAc;gBAAE,OAAO,KAAK,CAAC;YACvC,OAAO,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACjB,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;QACxE,CAAC;QAED,2CAA2C;QAC3C,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC3B,IAAI,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAC;YACjE,IAAI,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACrD,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,OAAO,EAAE,GAAG,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;QACxD,CAAC;QACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC1B,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACtD,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACrD,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpC,OAAO;gBACH,GAAG,KAAK;gBACR,eAAe,EAAE,cAAc;gBAC/B,kBAAkB,EAAE,UAAU;aACjC,CAAC;QACN,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACvB,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC1F,OAAO;gBACH,GAAG,KAAK;gBACR,eAAe,EAAE,IAAI,GAAG,EAAE;gBAC1B,kBAAkB,EAAE,IAAI,GAAG,EAAE;aAChC,CAAC;QACN,CAAC;QAED,4CAA4C;QAC5C,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACpB,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC1D,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAC;YACvD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9C,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QACjD,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACnB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9C,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpC,OAAO;gBACH,GAAG,KAAK;gBACR,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,UAAU;aAC1B,CAAC;QACN,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAChB,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC5E,OAAO;gBACH,GAAG,KAAK;gBACR,QAAQ,EAAE,IAAI,GAAG,EAAE;gBACnB,WAAW,EAAE,IAAI,GAAG,EAAE;aACzB,CAAC;QACN,CAAC;QAED,aAAa;QACb,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC;YACxB,IACI,KAAK,CAAC,gBAAgB,EAAE,IAAI,KAAK,IAAI;gBACrC,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ;gBAChC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAC9B,CAAC;gBACC,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,OAAO,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAClD,CAAC;QACD,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,6BAA6B,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAClF,OAAO,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAClD,CAAC;QACD,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC7B,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAClD,OAAO,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;QAChD,CAAC;QAED,aAAa;QACb,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACrB,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACnD,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACjD,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACrB,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACnD,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACjD,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACnB,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACjD,OAAO,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;YAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACnE,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YACrE,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAClD,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,aAAa,KAAK,MAAM,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACtD,OAAO,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACpB,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YACnD,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;YAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,CAAC;YACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtF,IAAI,WAAW,IAAI,QAAQ,GAAG,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAChF,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC5D,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;YAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,CAAC;YACtD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACtF,IAAI,WAAW,IAAI,QAAQ,GAAG,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAChF,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC5D,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACvB,IAAI,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YACzD,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvD,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACtB,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACpD,sCAAsC;YACtC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,KAAK;oBACN,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;gBACtF,KAAK,MAAM;oBACP,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;gBACpF,KAAK,aAAa;oBACd,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;gBACrF,KAAK,WAAW;oBACZ,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;YACzF,CAAC;YACD,MAAM;QACV,CAAC;QAED,UAAU;QACV,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO;gBAAE,OAAO,KAAK,CAAC;YAChD,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;QAC9C,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO;gBAAE,OAAO,KAAK,CAAC;YAClD,OAAO,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;QAChD,CAAC;QAED,KAAK;QACL,KAAK,cAAc,CAAC,CAAC,CAAC;YAClB,kDAAkD;YAClD,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB;gBAAE,OAAO,KAAK,CAAC;YAC1E,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAAE,OAAO,KAAK,CAAC;YAC5E,iDAAiD;YACjD,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC1E,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YACjD,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QAC/C,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACjB,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAC7C,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC3C,CAAC;QACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC1B,IAAI,KAAK,CAAC,cAAc,KAAK,MAAM,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YACxD,OAAO,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACtD,CAAC;QACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC3B,IAAI,KAAK,CAAC,eAAe,KAAK,MAAM,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YACzD,OAAO,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACvD,CAAC;QAED,uBAAuB;QACvB,KAAK,qBAAqB,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,CAAC,cAAc,KAAK,MAAM,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAC1D,OAAO,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACxD,CAAC;QACD,KAAK,8BAA8B,CAAC,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,sBAAsB,KAAK,MAAM,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAClE,OAAO,EAAE,GAAG,KAAK,EAAE,sBAAsB,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAChE,CAAC;QACD,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,gBAAgB,KAAK,MAAM,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAC5D,wEAAwE;YACxE,MAAM,WAAW,GACb,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC9E,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;YAC5B,OAAO,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;QACvE,CAAC;QACD,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC7B,IAAI,KAAK,CAAC,iBAAiB,KAAK,MAAM,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAC7D,0EAA0E;YAC1E,MAAM,WAAW,GACb,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC/E,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;YAC5B,OAAO,EAAE,GAAG,KAAK,EAAE,iBAAiB,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;QACxE,CAAC;QACD,KAAK,+BAA+B,CAAC,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,uBAAuB,KAAK,MAAM,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YACnE,OAAO,EAAE,GAAG,KAAK,EAAE,uBAAuB,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACjE,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YACxB,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,eAAe,KAAK,MAAM,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YACtD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;YACD,4DAA4D;YAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;YACrG,OAAO,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;QAClE,CAAC;QAED,uBAAuB;QACvB,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC1B,OAAO;gBACH,GAAG,KAAK;gBACR,qBAAqB,EAAE;oBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;iBACxB;aACJ,CAAC;QACN,CAAC;QACD,KAAK,4BAA4B,CAAC,CAAC,CAAC;YAChC,IAAI,KAAK,CAAC,qBAAqB,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YACvD,OAAO,EAAE,GAAG,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;QACrD,CAAC;QAED,aAAa;QACb,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACpB,IAAI,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY;gBAAE,OAAO,KAAK,CAAC;YAC7D,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;QAC3D,CAAC;QAED,oBAAoB;QACpB,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC3B,OAAO;gBACH,GAAG,KAAK;gBACR,aAAa,EAAE,IAAI;gBACnB,cAAc,EAAE,MAAM,CAAC,MAAM;gBAC7B,aAAa,EAAE,MAAM,CAAC,KAAK;aAC9B,CAAC;QACN,CAAC;QACD,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,aAAa;gBAAE,OAAO,KAAK,CAAC;YACvC,OAAO;gBACH,GAAG,KAAK;gBACR,aAAa,EAAE,KAAK;gBACpB,cAAc,EAAE,CAAC;gBACjB,aAAa,EAAE,CAAC;aACnB,CAAC;QACN,CAAC;QAED;YACI,OAAO,KAAK,CAAC;IACrB,CAAC;AACL,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IAClD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../../../src/ui/viewer/reducer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { executeSearch } from "./search";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ui/viewer/search/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { executeSearch } from "./search";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ui/viewer/search/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Text search algorithm for document viewer.
3
+ *
4
+ * Searches across all loaded page text and returns matches with
5
+ * pre-computed bounding rectangles for highlight rendering.
6
+ */
7
+ import type { TextRun } from "../text/types";
8
+ import type { SearchMatch } from "../state";
9
+ /**
10
+ * Execute text search across all loaded pages.
11
+ *
12
+ * @param query - Search string
13
+ * @param caseSensitive - Whether to match case
14
+ * @param pageText - Map of page index to text runs
15
+ * @param pageCount - Total number of pages
16
+ * @returns Array of search matches with pre-computed highlight rects
17
+ */
18
+ export declare function executeSearch(query: string, caseSensitive: boolean, pageText: Map<number, TextRun[]>, pageCount: number): SearchMatch[];
19
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../src/ui/viewer/search/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAkG5C;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CACzB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAChC,SAAS,EAAE,MAAM,GAClB,WAAW,EAAE,CAkCf"}
@@ -0,0 +1,120 @@
1
+ /** Trim text to at most the last n whitespace-separated words. */
2
+ function trimToLastNWords(text, n) {
3
+ const words = text.split(/\s+/).filter((w) => w.length > 0);
4
+ if (words.length <= n)
5
+ return text;
6
+ return words.slice(-n).join(" ");
7
+ }
8
+ /** Trim text to at most the first n whitespace-separated words. */
9
+ function trimToFirstNWords(text, n) {
10
+ const words = text.split(/\s+/).filter((w) => w.length > 0);
11
+ if (words.length <= n)
12
+ return text;
13
+ return words.slice(0, n).join(" ");
14
+ }
15
+ /**
16
+ * Build a flat text string from text runs, with a mapping from each
17
+ * character position back to its source TextRun and glyph index.
18
+ */
19
+ function buildPageTextMap(runs) {
20
+ let fullText = "";
21
+ const charMap = [];
22
+ for (const run of runs) {
23
+ const text = run.text ?? "";
24
+ if (!text || run.glyphs.length === 0)
25
+ continue;
26
+ for (let i = 0; i < text.length; i++) {
27
+ const glyphIndex = Math.min(i, run.glyphs.length - 1);
28
+ charMap.push({ run, glyphIndex });
29
+ }
30
+ fullText += text;
31
+ }
32
+ return { fullText, charMap };
33
+ }
34
+ /**
35
+ * Convert character offset + length to bounding rectangles in PDF points.
36
+ * Groups adjacent glyphs on the same line into merged rects.
37
+ */
38
+ function computeMatchRects(charMap, offset, length) {
39
+ const rects = [];
40
+ let currentRun = null;
41
+ let rectStartX = 0;
42
+ let rectEndX = 0;
43
+ let rectY = 0;
44
+ let rectHeight = 0;
45
+ for (let i = offset; i < offset + length && i < charMap.length; i++) {
46
+ const { run, glyphIndex } = charMap[i];
47
+ const glyph = run.glyphs[glyphIndex];
48
+ const transform = run.transform;
49
+ const effectiveScaleX = Math.sqrt(transform.scaleX ** 2 + transform.skewY ** 2);
50
+ const effectiveScaleY = Math.sqrt(transform.scaleY ** 2 + transform.skewX ** 2);
51
+ const fontSize = run.fontSize * effectiveScaleY;
52
+ // Glyph position in page space (PDF points)
53
+ const glyphX = transform.translateX + glyph.x * effectiveScaleX;
54
+ const glyphWidth = glyph.advance * effectiveScaleX;
55
+ const glyphY = transform.translateY - fontSize * 0.8; // ascent approximation
56
+ const glyphHeight = fontSize;
57
+ if (currentRun === run && Math.abs(glyphY - rectY) < fontSize * 0.3) {
58
+ // Same run and same line: extend current rect
59
+ rectEndX = glyphX + glyphWidth;
60
+ }
61
+ else {
62
+ // New run or new line: flush previous rect and start new one
63
+ if (currentRun !== null) {
64
+ rects.push({ x: rectStartX, y: rectY, width: rectEndX - rectStartX, height: rectHeight });
65
+ }
66
+ currentRun = run;
67
+ rectStartX = glyphX;
68
+ rectEndX = glyphX + glyphWidth;
69
+ rectY = glyphY;
70
+ rectHeight = glyphHeight;
71
+ }
72
+ }
73
+ // Flush last rect
74
+ if (currentRun !== null) {
75
+ rects.push({ x: rectStartX, y: rectY, width: rectEndX - rectStartX, height: rectHeight });
76
+ }
77
+ return rects;
78
+ }
79
+ /**
80
+ * Execute text search across all loaded pages.
81
+ *
82
+ * @param query - Search string
83
+ * @param caseSensitive - Whether to match case
84
+ * @param pageText - Map of page index to text runs
85
+ * @param pageCount - Total number of pages
86
+ * @returns Array of search matches with pre-computed highlight rects
87
+ */
88
+ export function executeSearch(query, caseSensitive, pageText, pageCount) {
89
+ if (!query.trim())
90
+ return [];
91
+ const matches = [];
92
+ const searchQuery = caseSensitive ? query : query.toLowerCase();
93
+ for (let pageIndex = 0; pageIndex < pageCount; pageIndex++) {
94
+ const runs = pageText.get(pageIndex);
95
+ if (!runs || runs.length === 0)
96
+ continue;
97
+ const { fullText, charMap } = buildPageTextMap(runs);
98
+ const compareText = caseSensitive ? fullText : fullText.toLowerCase();
99
+ let searchStart = 0;
100
+ while (searchStart < compareText.length) {
101
+ const idx = compareText.indexOf(searchQuery, searchStart);
102
+ if (idx === -1)
103
+ break;
104
+ const rects = computeMatchRects(charMap, idx, searchQuery.length);
105
+ // Build context snippet: min(30 chars, 3 words) before and after
106
+ const rawBefore = fullText.substring(Math.max(0, idx - 30), idx);
107
+ const rawAfter = fullText.substring(idx + searchQuery.length, idx + searchQuery.length + 30);
108
+ const before = trimToLastNWords(rawBefore, 3);
109
+ const matched = fullText.substring(idx, idx + searchQuery.length);
110
+ const after = trimToFirstNWords(rawAfter, 3);
111
+ const beforePrefix = idx > before.length ? "\u2026" : "";
112
+ const afterSuffix = idx + searchQuery.length + after.length < fullText.length ? "\u2026" : "";
113
+ const context = [beforePrefix + before, matched, after + afterSuffix];
114
+ matches.push({ pageIndex, charOffset: idx, length: searchQuery.length, rects, context });
115
+ searchStart = idx + 1;
116
+ }
117
+ }
118
+ return matches;
119
+ }
120
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../src/ui/viewer/search/search.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../src/ui/viewer/shell.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAS1D,MAAM,WAAW,aAAa;IAC1B,WAAW,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE,UAAU,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,kBAAkB,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAClF,WAAW,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,oBAAoB;IACjC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,EAAE,MAAM,WAAW,CAAC;IAC5B,YAAY,EAAE,CAAC,SAAS,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACxD,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;AAE7F,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,YAAY,EAC1B,SAAS,CAAC,EAAE,qBAAqB,EACjC,eAAe,UAAO,GACvB,WAAW,CA0Hb"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../src/ui/viewer/shell.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAS1D,MAAM,WAAW,aAAa;IAC1B,WAAW,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE,UAAU,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,kBAAkB,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAClF,WAAW,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,oBAAoB;IACjC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,EAAE,MAAM,WAAW,CAAC;IAC5B,YAAY,EAAE,CAAC,SAAS,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACxD,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;AAE7F,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,YAAY,EAC1B,SAAS,CAAC,EAAE,qBAAqB,EACjC,eAAe,UAAO,GACvB,WAAW,CAuLb"}
@@ -69,8 +69,49 @@ export function mountViewerShell(root, engine, workerClient, overrides, showAttr
69
69
  store.dispatch({ type: "CLOSE_PANEL" });
70
70
  };
71
71
  panelOverlay.addEventListener("click", handleOverlayClick);
72
- // Subscribe to panel state to toggle udoc-panel-open class
73
- // and toolbar slot visibility
72
+ // Ctrl+F / Cmd+F to open search panel
73
+ const handleKeyDown = (e) => {
74
+ if ((e.ctrlKey || e.metaKey) && e.key === "f") {
75
+ e.preventDefault();
76
+ const state = store.getState();
77
+ if (state.activePanel !== "search") {
78
+ store.dispatch({ type: "TOGGLE_PANEL", panel: "search" });
79
+ }
80
+ }
81
+ };
82
+ layout.addEventListener("keydown", handleKeyDown);
83
+ // Theme management
84
+ function resolveIsDark(theme) {
85
+ if (theme === "dark")
86
+ return true;
87
+ if (theme === "light")
88
+ return false;
89
+ return window.matchMedia("(prefers-color-scheme: dark)").matches;
90
+ }
91
+ function applyThemeClass(isDark) {
92
+ layout.classList.toggle("udoc-viewer-dark", isDark);
93
+ }
94
+ let systemDarkQuery = null;
95
+ let systemDarkHandler = null;
96
+ function setupSystemListener() {
97
+ systemDarkQuery = window.matchMedia("(prefers-color-scheme: dark)");
98
+ systemDarkHandler = (e) => applyThemeClass(e.matches);
99
+ systemDarkQuery.addEventListener("change", systemDarkHandler);
100
+ }
101
+ function cleanupSystemListener() {
102
+ if (systemDarkQuery && systemDarkHandler) {
103
+ systemDarkQuery.removeEventListener("change", systemDarkHandler);
104
+ systemDarkQuery = null;
105
+ systemDarkHandler = null;
106
+ }
107
+ }
108
+ // Apply initial theme
109
+ applyThemeClass(resolveIsDark(mergedInitialState.theme));
110
+ if (mergedInitialState.theme === "system") {
111
+ setupSystemListener();
112
+ }
113
+ // Subscribe to panel state to toggle udoc-panel-open class,
114
+ // toolbar slot visibility, and theme changes
74
115
  const unsubPanelClass = store.subscribeRender((prev, next) => {
75
116
  if ((prev.activePanel === null) !== (next.activePanel === null)) {
76
117
  layout.classList.toggle("udoc-panel-open", next.activePanel !== null);
@@ -78,16 +119,32 @@ export function mountViewerShell(root, engine, workerClient, overrides, showAttr
78
119
  if (prev.toolbarVisible !== next.toolbarVisible) {
79
120
  toolbarSlot.style.display = next.toolbarVisible ? "" : "none";
80
121
  }
122
+ if (prev.theme !== next.theme) {
123
+ if (prev.theme === "system")
124
+ cleanupSystemListener();
125
+ if (next.theme === "system")
126
+ setupSystemListener();
127
+ applyThemeClass(resolveIsDark(next.theme));
128
+ }
129
+ if (prev.textSelectionDisabled !== next.textSelectionDisabled) {
130
+ layout.classList.toggle("udoc-viewer--no-text-select", next.textSelectionDisabled);
131
+ }
81
132
  });
82
133
  // Apply initial toolbar visibility
83
134
  if (!mergedInitialState.toolbarVisible) {
84
135
  toolbarSlot.style.display = "none";
85
136
  }
137
+ // Apply initial text selection state
138
+ if (mergedInitialState.textSelectionDisabled) {
139
+ layout.classList.add("udoc-viewer--no-text-select");
140
+ }
86
141
  store.dispatch({ type: "__INIT__" });
87
142
  function setCallbacks(newCallbacks) {
88
143
  callbacks = { ...callbacks, ...newCallbacks };
89
144
  }
90
145
  function destroy() {
146
+ cleanupSystemListener();
147
+ layout.removeEventListener("keydown", handleKeyDown);
91
148
  panelOverlay.removeEventListener("click", handleOverlayClick);
92
149
  unsubPanelClass();
93
150
  effects.destroy();
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../../src/ui/viewer/shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../../src/ui/viewer/shell.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,24 @@ import type { OutlineItem, NavigationTarget } from "./navigation";
2
2
  import type { Annotation } from "./annotation";
3
3
  import type { TextRun } from "./text";
4
4
  import type { PageInfo } from "../../worker/index.js";
5
+ /** A single search match with its location and geometry. */
6
+ export interface SearchMatch {
7
+ /** 0-based page index. */
8
+ pageIndex: number;
9
+ /** Character offset within the concatenated page text. */
10
+ charOffset: number;
11
+ /** Length of the matched text. */
12
+ length: number;
13
+ /** Bounding rectangles for this match (in PDF points, for highlight rendering). */
14
+ rects: Array<{
15
+ x: number;
16
+ y: number;
17
+ width: number;
18
+ height: number;
19
+ }>;
20
+ /** Context snippet: [before, match, after] text for display in result list. */
21
+ context: [string, string, string];
22
+ }
5
23
  export type LeftPanelTab = "thumbnail" | "outline" | "bookmarks" | "layers" | "attachments";
6
24
  export type RightPanelTab = "search" | "comments";
7
25
  export type PanelTab = LeftPanelTab | RightPanelTab;
@@ -11,8 +29,9 @@ export type LayoutMode = "single-page" | "double-page" | "double-page-odd-right"
11
29
  export type ZoomMode = "fit-spread-width" | "fit-spread-width-max" | "fit-spread-height" | "fit-spread" | "custom";
12
30
  export type PageRotation = 0 | 90 | 180 | 270;
13
31
  export type SpacingMode = "all" | "none" | "spread-only" | "page-only";
32
+ export type ThemeMode = "light" | "dark" | "system";
14
33
  /** Document format as detected during loading */
15
- export type DocumentFormat = "pdf" | "pptx" | "image";
34
+ export type DocumentFormat = "pdf" | "pptx" | "docx" | "image";
16
35
  /** Subset of view mode state that can be overridden per format */
17
36
  export interface ViewModeDefaults {
18
37
  scrollMode?: ScrollMode;
@@ -96,6 +115,16 @@ export interface ViewerState {
96
115
  disabledPanels: ReadonlySet<PanelTab>;
97
116
  /** Whether the fullscreen button is visible in the toolbar */
98
117
  fullscreenButtonVisible: boolean;
118
+ /** Current color theme mode */
119
+ theme: ThemeMode;
120
+ /** Whether the theme toggle button is hidden */
121
+ themeSwitchingDisabled: boolean;
122
+ /** Whether text selection is disabled */
123
+ textSelectionDisabled: boolean;
124
+ /** Minimum zoom level */
125
+ minZoom: number;
126
+ /** Maximum zoom level */
127
+ maxZoom: number;
99
128
  /** Currently highlighted annotation (null = none) */
100
129
  highlightedAnnotation: {
101
130
  pageIndex: number;
@@ -108,6 +137,18 @@ export interface ViewerState {
108
137
  } | null;
109
138
  /** Whether the viewer is in fullscreen mode */
110
139
  isFullscreen: boolean;
140
+ /** Current search query string */
141
+ searchQuery: string;
142
+ /** Whether search is case-sensitive */
143
+ searchCaseSensitive: boolean;
144
+ /** All search matches across all pages */
145
+ searchMatches: SearchMatch[];
146
+ /** Index of the currently active/focused match (-1 = none) */
147
+ searchActiveIndex: number;
148
+ /** Whether all page text has been loaded for search */
149
+ searchTextLoaded: boolean;
150
+ /** Whether search text is currently being loaded */
151
+ searchTextLoading: boolean;
111
152
  /** Whether document is currently being downloaded */
112
153
  isDownloading: boolean;
113
154
  /** Download progress: loaded bytes */