@kandiforge/kandi-office 0.17.0 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,7 @@
2
2
  * PdfViewer Styles
3
3
  *
4
4
  * Main container styles for the PDF viewer component.
5
+ * Layout: toolbar (fixed) + filmstrip (scrolls independently) + content (paged or scrolled)
5
6
  *
6
7
  * Copyright (c) 2025 AbstractClass, Inc. All rights reserved.
7
8
  */
@@ -26,16 +27,23 @@
26
27
  --accent-color: var(--accent);
27
28
  }
28
29
 
30
+ /* Content area: filmstrip + view side by side, both fill remaining height */
29
31
  .pdf-viewer-content {
30
32
  display: flex;
31
33
  flex: 1;
34
+ min-height: 0; /* Critical: allows flex children to shrink below content size */
32
35
  overflow: hidden;
33
36
  }
34
37
 
38
+ /* View container: isolated scroll/layout context for the active view */
35
39
  .pdf-view-container {
36
40
  flex: 1;
41
+ min-width: 0; /* Prevent flex blowout */
42
+ min-height: 0;
43
+ position: relative;
37
44
  display: flex;
38
- overflow: auto;
45
+ flex-direction: column;
46
+ overflow: hidden; /* Views manage their own overflow */
39
47
  background: var(--pdf-viewer-bg);
40
48
  }
41
49
 
@@ -129,5 +137,3 @@
129
137
  transform: rotate(360deg);
130
138
  }
131
139
  }
132
-
133
- /* Light mode handled by theme system - removed prefers-color-scheme override */
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * PdfFilmstrip Styles
3
3
  *
4
+ * Sidebar thumbnail panel that scrolls independently from the content panel.
5
+ * Uses flex column with min-height:0 to create an isolated scroll context.
6
+ *
4
7
  * Copyright (c) 2025 AbstractClass, Inc. All rights reserved.
5
8
  */
6
9
 
@@ -11,10 +14,14 @@
11
14
  flex-direction: column;
12
15
  background: var(--surface);
13
16
  border-right: 1px solid var(--border-default);
17
+ /* Critical: min-height:0 allows the flex child to shrink,
18
+ creating an independent scroll context for the thumbnail list */
19
+ min-height: 0;
14
20
  overflow: hidden;
15
21
  }
16
22
 
17
23
  .pdf-filmstrip-header {
24
+ flex: 0 0 auto; /* Fixed height, never shrinks */
18
25
  display: flex;
19
26
  align-items: center;
20
27
  justify-content: space-between;
@@ -48,7 +55,9 @@
48
55
 
49
56
  .pdf-thumbnail-list {
50
57
  flex: 1;
58
+ min-height: 0; /* Allow shrinking to create scroll */
51
59
  overflow-y: auto;
60
+ overflow-x: hidden;
52
61
  padding: 12px;
53
62
  display: flex;
54
63
  flex-direction: column;
@@ -56,6 +65,7 @@
56
65
  }
57
66
 
58
67
  .pdf-thumbnail-item {
68
+ flex: 0 0 auto; /* Fixed height per item, prevents compression */
59
69
  display: flex;
60
70
  flex-direction: column;
61
71
  align-items: center;
@@ -133,10 +143,10 @@
133
143
  }
134
144
 
135
145
  .pdf-thumbnail-list::-webkit-scrollbar-thumb {
136
- background: var(--scrollbar-thumb);
146
+ background: var(--scrollbar-thumb, rgba(255, 255, 255, 0.2));
137
147
  border-radius: 3px;
138
148
  }
139
149
 
140
150
  .pdf-thumbnail-list::-webkit-scrollbar-thumb:hover {
141
- background: var(--scrollbar-thumb-hover);
151
+ background: var(--scrollbar-thumb-hover, rgba(255, 255, 255, 0.3));
142
152
  }
@@ -25,13 +25,13 @@ export function SinglePageView({ currentPage, scale, renderToCanvas, pageInfo, }
25
25
  useEffect(() => {
26
26
  doRender();
27
27
  }, [doRender]);
28
- return (_jsx("div", { className: "pdf-view pdf-single-page-view", children: _jsx("div", { className: "pdf-page-container", children: _jsx("div", { className: "pdf-page", style: {
29
- width: displayWidth,
30
- height: displayHeight,
31
- }, children: _jsx("canvas", { ref: canvasRef, style: {
32
- width: '100%',
33
- height: '100%',
34
- display: 'block',
35
- } }) }) }) }));
28
+ return (_jsx("div", { className: "pdf-view pdf-single-page-view", children: _jsx("div", { className: "pdf-page", style: {
29
+ width: displayWidth,
30
+ height: displayHeight,
31
+ }, children: _jsx("canvas", { ref: canvasRef, style: {
32
+ width: '100%',
33
+ height: '100%',
34
+ display: 'block',
35
+ } }) }) }));
36
36
  }
37
37
  //# sourceMappingURL=SinglePageView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SinglePageView.js","sourceRoot":"","sources":["../../../../../src/viewers/pdf/components/views/SinglePageView.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,kBAAkB,CAAC;AAE1B,MAAM,UAAU,cAAc,CAAC,EAC7B,WAAW,EACX,KAAK,EACL,cAAc,EACd,QAAQ,GACK;IACb,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,GAAG,CAAC;IACpB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;IAE5D,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;IACrE,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;IAEvE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC;YAAE,OAAO;QAEvC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAEb,IAAI,EAAE,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,+BAA+B,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,EAAE,CAAC;IACb,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,cAAK,SAAS,EAAC,+BAA+B,YAC5C,cAAK,SAAS,EAAC,oBAAoB,YACjC,cACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE;oBACL,KAAK,EAAE,YAAY;oBACnB,MAAM,EAAE,aAAa;iBACtB,YAED,iBACE,GAAG,EAAE,SAAS,EACd,KAAK,EAAE;wBACL,KAAK,EAAE,MAAM;wBACb,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,OAAO;qBACjB,GACD,GACE,GACF,GACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"SinglePageView.js","sourceRoot":"","sources":["../../../../../src/viewers/pdf/components/views/SinglePageView.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,kBAAkB,CAAC;AAE1B,MAAM,UAAU,cAAc,CAAC,EAC7B,WAAW,EACX,KAAK,EACL,cAAc,EACd,QAAQ,GACK;IACb,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,GAAG,CAAC;IACpB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;IAE5D,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;IACrE,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;IAEvE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC;YAAE,OAAO;QAEvC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,EAAE,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,+BAA+B,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,EAAE,CAAC;IACb,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,cAAK,SAAS,EAAC,+BAA+B,YAC5C,cACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE;gBACL,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,aAAa;aACtB,YAED,iBACE,GAAG,EAAE,SAAS,EACd,KAAK,EAAE;oBACL,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,OAAO;iBACjB,GACD,GACE,GACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,36 +1,29 @@
1
1
  /**
2
2
  * PDF View Styles
3
3
  *
4
- * Shared styles for all PDF view components.
4
+ * Layout model:
5
+ * - SinglePageView / BookView: fixed viewport, page centered, NO scroll (pager-controlled)
6
+ * - ContinuousScrollView: scrollable list of all pages
7
+ * - ThumbnailGridView: scrollable grid
5
8
  *
6
9
  * Copyright (c) 2025 AbstractClass, Inc. All rights reserved.
7
10
  */
8
11
 
9
- /* Common view styles */
12
+ /* ============================================
13
+ Base view — fills container, no scroll by default
14
+ ============================================ */
10
15
  .pdf-view {
11
16
  display: flex;
12
17
  flex-direction: column;
13
- align-items: center;
14
- justify-content: flex-start;
15
18
  width: 100%;
16
19
  height: 100%;
17
- overflow: auto;
20
+ overflow: hidden; /* Paged views don't scroll — only continuous/grid override this */
18
21
  background: var(--pdf-viewer-bg);
19
22
  }
20
23
 
21
- /* Page container - wraps page for centering and scroll */
22
- .pdf-page-container {
23
- display: block;
24
- padding: 20px;
25
- min-height: 100%;
26
- min-width: 100%;
27
- box-sizing: border-box;
28
- }
29
-
30
- /* Individual page - uses margin auto for centering that works with overflow */
24
+ /* Page shell white rectangle with shadow */
31
25
  .pdf-page {
32
26
  display: block;
33
- margin: 0 auto;
34
27
  background: var(--document-surface);
35
28
  box-shadow: var(--shadow-lg, 0 4px 20px rgba(0, 0, 0, 0.3));
36
29
  border-radius: 2px;
@@ -68,22 +61,33 @@
68
61
  }
69
62
 
70
63
  /* ============================================
71
- Single Page View
64
+ Single Page View — centered page, no scroll
65
+ Pager controls come from the toolbar prev/next
72
66
  ============================================ */
67
+ .pdf-single-page-view {
68
+ align-items: center;
69
+ justify-content: center;
70
+ padding: 20px;
71
+ /* Allow overflow scroll only when zoomed in past viewport */
72
+ overflow: auto;
73
+ }
74
+
73
75
  .pdf-single-page-view .pdf-page-container {
74
- /* Vertically center when page is smaller than viewport */
75
76
  display: flex;
76
- flex-direction: column;
77
77
  align-items: center;
78
78
  justify-content: center;
79
+ /* Shrink-to-fit: the container matches the page, not the viewport */
80
+ flex: 0 0 auto;
79
81
  }
80
82
 
81
83
  /* ============================================
82
- Book View
84
+ Book View — two-page spread, centered
83
85
  ============================================ */
84
86
  .pdf-book-view {
87
+ align-items: center;
85
88
  justify-content: center;
86
89
  padding: 20px;
90
+ overflow: hidden;
87
91
  }
88
92
 
89
93
  .pdf-book-container {
@@ -91,10 +95,10 @@
91
95
  align-items: center;
92
96
  justify-content: center;
93
97
  flex: 1;
98
+ min-height: 0;
94
99
  }
95
100
 
96
101
  .pdf-book {
97
- /* react-pageflip styles */
98
102
  margin: 0 auto;
99
103
  }
100
104
 
@@ -125,9 +129,11 @@
125
129
  }
126
130
 
127
131
  /* ============================================
128
- Continuous Scroll View
132
+ Continuous Scroll View — the ONLY scrolling view
129
133
  ============================================ */
130
134
  .pdf-continuous-scroll-view {
135
+ overflow-y: auto;
136
+ overflow-x: hidden;
131
137
  padding: 20px;
132
138
  }
133
139
 
@@ -164,10 +170,29 @@
164
170
  border: 1px solid var(--border-default);
165
171
  }
166
172
 
173
+ /* Continuous view scrollbar */
174
+ .pdf-continuous-scroll-view::-webkit-scrollbar {
175
+ width: 8px;
176
+ }
177
+
178
+ .pdf-continuous-scroll-view::-webkit-scrollbar-track {
179
+ background: transparent;
180
+ }
181
+
182
+ .pdf-continuous-scroll-view::-webkit-scrollbar-thumb {
183
+ background: var(--scrollbar-thumb, rgba(255, 255, 255, 0.2));
184
+ border-radius: 4px;
185
+ }
186
+
187
+ .pdf-continuous-scroll-view::-webkit-scrollbar-thumb:hover {
188
+ background: var(--scrollbar-thumb-hover, rgba(255, 255, 255, 0.3));
189
+ }
190
+
167
191
  /* ============================================
168
- Thumbnail Grid View
192
+ Thumbnail Grid View — scrollable grid
169
193
  ============================================ */
170
194
  .pdf-thumbnail-grid-view {
195
+ overflow-y: auto;
171
196
  padding: 20px;
172
197
  }
173
198
 
@@ -240,5 +265,16 @@
240
265
  border: 1px solid var(--border-default);
241
266
  }
242
267
 
243
- /* Dark mode adjustments now handled via CSS custom properties set by ThemeContext */
244
- /* The --theme-* variables automatically adapt to the selected theme preset */
268
+ /* Thumbnail grid scrollbar */
269
+ .pdf-thumbnail-grid-view::-webkit-scrollbar {
270
+ width: 8px;
271
+ }
272
+
273
+ .pdf-thumbnail-grid-view::-webkit-scrollbar-track {
274
+ background: transparent;
275
+ }
276
+
277
+ .pdf-thumbnail-grid-view::-webkit-scrollbar-thumb {
278
+ background: var(--scrollbar-thumb, rgba(255, 255, 255, 0.2));
279
+ border-radius: 4px;
280
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kandiforge/kandi-office",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "author": "AbstractClass, Inc. <admin@abstractclass.net>",