@epam/pdf-highlighter-kit 0.0.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.
- package/LICENSE +201 -0
- package/README.md +219 -0
- package/dist/PDFHighlightViewer.d.ts +219 -0
- package/dist/PDFHighlightViewer.d.ts.map +1 -0
- package/dist/PDFHighlightViewer.js +1551 -0
- package/dist/PDFHighlightViewer.js.map +1 -0
- package/dist/api.d.ts +59 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +2 -0
- package/dist/api.js.map +1 -0
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +32 -0
- package/dist/config.js.map +1 -0
- package/dist/core/interaction-handler.d.ts +63 -0
- package/dist/core/interaction-handler.d.ts.map +1 -0
- package/dist/core/interaction-handler.js +430 -0
- package/dist/core/interaction-handler.js.map +1 -0
- package/dist/core/pdf-engine.d.ts +37 -0
- package/dist/core/pdf-engine.d.ts.map +1 -0
- package/dist/core/pdf-engine.js +281 -0
- package/dist/core/pdf-engine.js.map +1 -0
- package/dist/core/performance-optimizer.d.ts +91 -0
- package/dist/core/performance-optimizer.d.ts.map +1 -0
- package/dist/core/performance-optimizer.js +473 -0
- package/dist/core/performance-optimizer.js.map +1 -0
- package/dist/core/style-manager.d.ts +88 -0
- package/dist/core/style-manager.d.ts.map +1 -0
- package/dist/core/style-manager.js +413 -0
- package/dist/core/style-manager.js.map +1 -0
- package/dist/core/text-segmentation.d.ts +41 -0
- package/dist/core/text-segmentation.d.ts.map +1 -0
- package/dist/core/text-segmentation.js +338 -0
- package/dist/core/text-segmentation.js.map +1 -0
- package/dist/core/unified-layer-builder.d.ts +27 -0
- package/dist/core/unified-layer-builder.d.ts.map +1 -0
- package/dist/core/unified-layer-builder.js +331 -0
- package/dist/core/unified-layer-builder.js.map +1 -0
- package/dist/core/viewport-manager.d.ts +103 -0
- package/dist/core/viewport-manager.d.ts.map +1 -0
- package/dist/core/viewport-manager.js +222 -0
- package/dist/core/viewport-manager.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/pdf-highlight-viewer.css +488 -0
- package/dist/types.d.ts +279 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/highlight-adapter.d.ts +31 -0
- package/dist/utils/highlight-adapter.d.ts.map +1 -0
- package/dist/utils/highlight-adapter.js +202 -0
- package/dist/utils/highlight-adapter.js.map +1 -0
- package/dist/utils/pdf-utils.d.ts +14 -0
- package/dist/utils/pdf-utils.d.ts.map +1 -0
- package/dist/utils/pdf-utils.js +120 -0
- package/dist/utils/pdf-utils.js.map +1 -0
- package/dist/utils/worker-loader-simple.d.ts +8 -0
- package/dist/utils/worker-loader-simple.d.ts.map +1 -0
- package/dist/utils/worker-loader-simple.js +65 -0
- package/dist/utils/worker-loader-simple.js.map +1 -0
- package/dist/vite.config.d.ts +3 -0
- package/dist/vite.config.d.ts.map +1 -0
- package/dist/vite.config.js +20 -0
- package/dist/vite.config.js.map +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +24 -0
- package/dist/vitest.config.js.map +1 -0
- package/dist/vitest.setup.d.ts +2 -0
- package/dist/vitest.setup.d.ts.map +1 -0
- package/dist/vitest.setup.js +8 -0
- package/dist/vitest.setup.js.map +1 -0
- package/package.json +74 -0
- package/styles/pdf-highlight-viewer.css +488 -0
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
export class CategoryStyleManager {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.styles = new Map();
|
|
4
|
+
this.styleSheet = null;
|
|
5
|
+
this.styleElement = null;
|
|
6
|
+
this.initializeStyleSheet();
|
|
7
|
+
this.registerDefaultCategories();
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Initialize CSS style sheet for dynamic styles
|
|
11
|
+
*/
|
|
12
|
+
initializeStyleSheet() {
|
|
13
|
+
// Create style element
|
|
14
|
+
this.styleElement = document.createElement('style');
|
|
15
|
+
this.styleElement.id = 'pdf-highlight-dynamic-styles';
|
|
16
|
+
document.head.appendChild(this.styleElement);
|
|
17
|
+
// Get stylesheet reference
|
|
18
|
+
if (this.styleElement.sheet) {
|
|
19
|
+
this.styleSheet = this.styleElement.sheet;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Register default category styles
|
|
24
|
+
*/
|
|
25
|
+
registerDefaultCategories() {
|
|
26
|
+
const defaultCategories = [
|
|
27
|
+
{
|
|
28
|
+
name: 'protein',
|
|
29
|
+
style: {
|
|
30
|
+
backgroundColor: 'rgba(255, 200, 0, 0.3)',
|
|
31
|
+
borderColor: 'rgba(255, 180, 0, 0.6)',
|
|
32
|
+
opacity: 0.3,
|
|
33
|
+
hoverOpacity: 0.5,
|
|
34
|
+
pulseAnimation: false,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'gene',
|
|
39
|
+
style: {
|
|
40
|
+
backgroundColor: 'rgba(0, 200, 100, 0.3)',
|
|
41
|
+
borderColor: 'rgba(0, 180, 90, 0.6)',
|
|
42
|
+
opacity: 0.3,
|
|
43
|
+
hoverOpacity: 0.5,
|
|
44
|
+
pulseAnimation: false,
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'disease',
|
|
49
|
+
style: {
|
|
50
|
+
backgroundColor: 'rgba(220, 50, 50, 0.3)',
|
|
51
|
+
borderColor: 'rgba(200, 40, 40, 0.6)',
|
|
52
|
+
opacity: 0.3,
|
|
53
|
+
hoverOpacity: 0.5,
|
|
54
|
+
pulseAnimation: true,
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'chemical',
|
|
59
|
+
style: {
|
|
60
|
+
backgroundColor: 'rgba(0, 150, 255, 0.3)',
|
|
61
|
+
borderColor: 'rgba(0, 130, 235, 0.6)',
|
|
62
|
+
opacity: 0.3,
|
|
63
|
+
hoverOpacity: 0.5,
|
|
64
|
+
pulseAnimation: false,
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'species',
|
|
69
|
+
style: {
|
|
70
|
+
backgroundColor: 'rgba(150, 100, 200, 0.3)',
|
|
71
|
+
borderColor: 'rgba(130, 80, 180, 0.6)',
|
|
72
|
+
opacity: 0.3,
|
|
73
|
+
hoverOpacity: 0.5,
|
|
74
|
+
pulseAnimation: false,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
defaultCategories.forEach(({ name, style }) => {
|
|
79
|
+
this.registerCategory(name, style);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Register a new category style
|
|
84
|
+
*/
|
|
85
|
+
registerCategory(name, style) {
|
|
86
|
+
const fullStyle = {
|
|
87
|
+
backgroundColor: style.backgroundColor,
|
|
88
|
+
borderColor: style.borderColor,
|
|
89
|
+
opacity: style.opacity ?? 0.3,
|
|
90
|
+
hoverOpacity: style.hoverOpacity ?? 0.5,
|
|
91
|
+
pulseAnimation: style.pulseAnimation ?? false,
|
|
92
|
+
};
|
|
93
|
+
this.styles.set(name, fullStyle);
|
|
94
|
+
this.updateStyleSheet(name, fullStyle);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Update existing category style
|
|
98
|
+
*/
|
|
99
|
+
updateCategoryStyle(name, partialStyle) {
|
|
100
|
+
const existingStyle = this.styles.get(name);
|
|
101
|
+
if (!existingStyle) {
|
|
102
|
+
console.warn(`Category '${name}' not found. Registering as new category.`);
|
|
103
|
+
this.registerCategory(name, partialStyle);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const updatedStyle = { ...existingStyle, ...partialStyle };
|
|
107
|
+
this.styles.set(name, updatedStyle);
|
|
108
|
+
this.updateStyleSheet(name, this.ensureCompleteStyle(updatedStyle));
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Ensure CategoryStyle has all required properties
|
|
112
|
+
*/
|
|
113
|
+
ensureCompleteStyle(style) {
|
|
114
|
+
return {
|
|
115
|
+
backgroundColor: style.backgroundColor,
|
|
116
|
+
borderColor: style.borderColor,
|
|
117
|
+
opacity: style.opacity ?? 0.3,
|
|
118
|
+
hoverOpacity: style.hoverOpacity ?? 0.6,
|
|
119
|
+
pulseAnimation: style.pulseAnimation ?? false,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Generate and inject CSS for a category
|
|
124
|
+
*/
|
|
125
|
+
updateStyleSheet(category, style) {
|
|
126
|
+
if (!this.styleSheet)
|
|
127
|
+
return;
|
|
128
|
+
// Remove existing rules for this category
|
|
129
|
+
this.removeRulesForCategory(category);
|
|
130
|
+
const cssRules = this.generateCSSRules(category, style);
|
|
131
|
+
// Add new rules
|
|
132
|
+
cssRules.forEach((rule) => {
|
|
133
|
+
try {
|
|
134
|
+
this.styleSheet.insertRule(rule, this.styleSheet.cssRules.length);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
console.warn('Failed to insert CSS rule:', rule, error);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Generate CSS rules for a category
|
|
143
|
+
*/
|
|
144
|
+
generateCSSRules(category, style) {
|
|
145
|
+
const rules = [];
|
|
146
|
+
// Base highlight style
|
|
147
|
+
rules.push(`
|
|
148
|
+
.${category}-highlight .highlight-background {
|
|
149
|
+
background: ${style.backgroundColor};
|
|
150
|
+
border: 1px solid ${style.borderColor};
|
|
151
|
+
opacity: ${style.opacity};
|
|
152
|
+
transition: opacity 0.2s ease, transform 0.2s ease;
|
|
153
|
+
}
|
|
154
|
+
`);
|
|
155
|
+
// Hover state
|
|
156
|
+
rules.push(`
|
|
157
|
+
.${category}-highlight:hover .highlight-background {
|
|
158
|
+
opacity: ${style.hoverOpacity};
|
|
159
|
+
transform: scale(1.02);
|
|
160
|
+
}
|
|
161
|
+
`);
|
|
162
|
+
// Selected state
|
|
163
|
+
rules.push(`
|
|
164
|
+
.${category}-highlight.selected .highlight-background {
|
|
165
|
+
opacity: 1;
|
|
166
|
+
border: 2px solid ${this.darkenColor(style.borderColor)};
|
|
167
|
+
outline: 2px solid #007acc;
|
|
168
|
+
outline-offset: 1px;
|
|
169
|
+
}
|
|
170
|
+
`);
|
|
171
|
+
// Focus state (accessibility)
|
|
172
|
+
rules.push(`
|
|
173
|
+
.${category}-highlight:focus .highlight-background {
|
|
174
|
+
opacity: 0.8;
|
|
175
|
+
outline: 2px solid #007acc;
|
|
176
|
+
outline-offset: 2px;
|
|
177
|
+
}
|
|
178
|
+
`);
|
|
179
|
+
// Pulse animation (if enabled)
|
|
180
|
+
if (style.pulseAnimation) {
|
|
181
|
+
rules.push(`
|
|
182
|
+
.${category}-highlight .highlight-background {
|
|
183
|
+
animation: pulse-${category} 2s ease-in-out infinite alternate;
|
|
184
|
+
}
|
|
185
|
+
`);
|
|
186
|
+
rules.push(`
|
|
187
|
+
@keyframes pulse-${category} {
|
|
188
|
+
from { opacity: ${style.opacity}; }
|
|
189
|
+
to { opacity: ${style.hoverOpacity}; }
|
|
190
|
+
}
|
|
191
|
+
`);
|
|
192
|
+
}
|
|
193
|
+
// High contrast support
|
|
194
|
+
rules.push(`
|
|
195
|
+
@media (prefers-contrast: high) {
|
|
196
|
+
.${category}-highlight .highlight-background {
|
|
197
|
+
border-width: 2px !important;
|
|
198
|
+
opacity: 0.8 !important;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
`);
|
|
202
|
+
// Print styles
|
|
203
|
+
rules.push(`
|
|
204
|
+
@media print {
|
|
205
|
+
.${category}-highlight .highlight-background {
|
|
206
|
+
opacity: 0.6 !important;
|
|
207
|
+
animation: none !important;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
`);
|
|
211
|
+
return rules;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Remove existing CSS rules for a category
|
|
215
|
+
*/
|
|
216
|
+
removeRulesForCategory(category) {
|
|
217
|
+
if (!this.styleSheet)
|
|
218
|
+
return;
|
|
219
|
+
const rulesToRemove = [];
|
|
220
|
+
for (let i = 0; i < this.styleSheet.cssRules.length; i++) {
|
|
221
|
+
const rule = this.styleSheet.cssRules[i];
|
|
222
|
+
if (rule instanceof CSSStyleRule) {
|
|
223
|
+
if (rule.selectorText.includes(`.${category}-highlight`) ||
|
|
224
|
+
rule.cssText.includes(`pulse-${category}`)) {
|
|
225
|
+
rulesToRemove.unshift(i); // Add to beginning to remove in reverse order
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (rule instanceof CSSKeyframesRule) {
|
|
229
|
+
if (rule.name === `pulse-${category}`) {
|
|
230
|
+
rulesToRemove.unshift(i);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
rulesToRemove.forEach((index) => {
|
|
235
|
+
try {
|
|
236
|
+
this.styleSheet.deleteRule(index);
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
console.warn('Failed to delete CSS rule at index:', index, error);
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get computed style for a term
|
|
245
|
+
*/
|
|
246
|
+
getComputedStyle(termId, state = 'default') {
|
|
247
|
+
// For now, return category-based styles
|
|
248
|
+
// In a full implementation, you'd look up the term's category
|
|
249
|
+
const category = this.getCategoryForTerm(termId);
|
|
250
|
+
const style = this.styles.get(category);
|
|
251
|
+
if (!style) {
|
|
252
|
+
return {};
|
|
253
|
+
}
|
|
254
|
+
const baseStyle = {
|
|
255
|
+
background: style.backgroundColor,
|
|
256
|
+
border: `1px solid ${style.borderColor}`,
|
|
257
|
+
opacity: style.opacity,
|
|
258
|
+
transition: 'opacity 0.2s ease, transform 0.2s ease',
|
|
259
|
+
};
|
|
260
|
+
switch (state) {
|
|
261
|
+
case 'hover':
|
|
262
|
+
return {
|
|
263
|
+
...baseStyle,
|
|
264
|
+
opacity: style.hoverOpacity,
|
|
265
|
+
transform: 'scale(1.02)',
|
|
266
|
+
};
|
|
267
|
+
case 'selected':
|
|
268
|
+
return {
|
|
269
|
+
...baseStyle,
|
|
270
|
+
opacity: 1,
|
|
271
|
+
border: `2px solid ${this.darkenColor(style.borderColor)}`,
|
|
272
|
+
outline: '2px solid #007acc',
|
|
273
|
+
outlineOffset: '1px',
|
|
274
|
+
};
|
|
275
|
+
default:
|
|
276
|
+
return baseStyle;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Get category for a term (simplified implementation)
|
|
281
|
+
*/
|
|
282
|
+
getCategoryForTerm(_termId) {
|
|
283
|
+
// In a real implementation, you'd look this up from your data
|
|
284
|
+
// For now, return a default category
|
|
285
|
+
return 'protein';
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Darken a color (utility function)
|
|
289
|
+
*/
|
|
290
|
+
darkenColor(color) {
|
|
291
|
+
// Simple darkening by reducing opacity or converting rgba values
|
|
292
|
+
if (color.startsWith('rgba')) {
|
|
293
|
+
return color.replace(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)/, (match, r, g, b, a) => {
|
|
294
|
+
const newR = Math.max(0, parseInt(r) - 40);
|
|
295
|
+
const newG = Math.max(0, parseInt(g) - 40);
|
|
296
|
+
const newB = Math.max(0, parseInt(b) - 40);
|
|
297
|
+
return `rgba(${newR}, ${newG}, ${newB}, ${a})`;
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
return color; // Return original if not rgba
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Get all registered categories
|
|
304
|
+
*/
|
|
305
|
+
getCategories() {
|
|
306
|
+
return Array.from(this.styles.keys());
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Get style for a category
|
|
310
|
+
*/
|
|
311
|
+
getCategoryStyle(category) {
|
|
312
|
+
return this.styles.get(category);
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Apply theme (light/dark)
|
|
316
|
+
*/
|
|
317
|
+
applyTheme(theme) {
|
|
318
|
+
const themeMultiplier = theme === 'dark' ? 1.2 : 1.0;
|
|
319
|
+
// Update all categories with theme adjustments
|
|
320
|
+
for (const [category, style] of this.styles) {
|
|
321
|
+
const adjustedStyle = {
|
|
322
|
+
...style,
|
|
323
|
+
opacity: Math.min(1, (style.opacity ?? 0.3) * themeMultiplier),
|
|
324
|
+
hoverOpacity: Math.min(1, (style.hoverOpacity ?? 0.6) * themeMultiplier),
|
|
325
|
+
};
|
|
326
|
+
this.updateStyleSheet(category, this.ensureCompleteStyle(adjustedStyle));
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Enable/disable animations globally
|
|
331
|
+
*/
|
|
332
|
+
setAnimationsEnabled(enabled) {
|
|
333
|
+
if (!this.styleSheet)
|
|
334
|
+
return;
|
|
335
|
+
// Add or remove global animation disable rule
|
|
336
|
+
const ruleText = enabled
|
|
337
|
+
? ''
|
|
338
|
+
: `
|
|
339
|
+
.highlight-background,
|
|
340
|
+
.highlight-wrapper {
|
|
341
|
+
animation: none !important;
|
|
342
|
+
transition: none !important;
|
|
343
|
+
}
|
|
344
|
+
`;
|
|
345
|
+
// Remove existing animation rule
|
|
346
|
+
this.removeRuleByContent('animation: none !important');
|
|
347
|
+
// Add new rule if animations disabled
|
|
348
|
+
if (!enabled && ruleText) {
|
|
349
|
+
try {
|
|
350
|
+
this.styleSheet.insertRule(ruleText, this.styleSheet.cssRules.length);
|
|
351
|
+
}
|
|
352
|
+
catch (error) {
|
|
353
|
+
console.warn('Failed to insert animation disable rule:', error);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Remove CSS rule by content
|
|
359
|
+
*/
|
|
360
|
+
removeRuleByContent(content) {
|
|
361
|
+
if (!this.styleSheet)
|
|
362
|
+
return;
|
|
363
|
+
for (let i = this.styleSheet.cssRules.length - 1; i >= 0; i--) {
|
|
364
|
+
const rule = this.styleSheet.cssRules[i];
|
|
365
|
+
if (rule.cssText.includes(content)) {
|
|
366
|
+
try {
|
|
367
|
+
this.styleSheet.deleteRule(i);
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
console.warn('Failed to delete CSS rule:', error);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Export current styles as CSS string
|
|
377
|
+
*/
|
|
378
|
+
exportStyles() {
|
|
379
|
+
if (!this.styleElement)
|
|
380
|
+
return '';
|
|
381
|
+
return this.styleElement.textContent || '';
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Import styles from CSS string
|
|
385
|
+
*/
|
|
386
|
+
importStyles(cssString) {
|
|
387
|
+
if (this.styleElement) {
|
|
388
|
+
this.styleElement.textContent = cssString;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Reset all styles to defaults
|
|
393
|
+
*/
|
|
394
|
+
resetToDefaults() {
|
|
395
|
+
this.styles.clear();
|
|
396
|
+
if (this.styleElement) {
|
|
397
|
+
this.styleElement.textContent = '';
|
|
398
|
+
}
|
|
399
|
+
this.registerDefaultCategories();
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Destroy style manager and clean up
|
|
403
|
+
*/
|
|
404
|
+
destroy() {
|
|
405
|
+
if (this.styleElement && this.styleElement.parentNode) {
|
|
406
|
+
this.styleElement.parentNode.removeChild(this.styleElement);
|
|
407
|
+
}
|
|
408
|
+
this.styles.clear();
|
|
409
|
+
this.styleSheet = null;
|
|
410
|
+
this.styleElement = null;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=style-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-manager.js","sourceRoot":"","sources":["../../core/style-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { TextContent, BoundingBox, Segment, HighlightData } from '../types';
|
|
2
|
+
export interface SegmentationPoint {
|
|
3
|
+
globalIndex: number;
|
|
4
|
+
itemIndex: number;
|
|
5
|
+
charIndex: number;
|
|
6
|
+
reason: 'highlight-start' | 'highlight-end' | 'font-change' | 'line-break';
|
|
7
|
+
}
|
|
8
|
+
export interface HighlightRange {
|
|
9
|
+
startIndex: number;
|
|
10
|
+
endIndex: number;
|
|
11
|
+
termId: string;
|
|
12
|
+
category: string;
|
|
13
|
+
coordinates: BoundingBox;
|
|
14
|
+
priority: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class TextSegmentation {
|
|
17
|
+
private debugMode;
|
|
18
|
+
constructor(debugMode?: boolean);
|
|
19
|
+
segmentText(textContent: TextContent, highlights: HighlightData, pageNumber: number): Segment[];
|
|
20
|
+
private buildCharacterIndex;
|
|
21
|
+
private mapHighlightsToCharacters;
|
|
22
|
+
private findTextMatchesForCoordinate;
|
|
23
|
+
private calculateIntersectionArea;
|
|
24
|
+
private mergeAdjacentMatches;
|
|
25
|
+
private resolveOverlappingHighlights;
|
|
26
|
+
private rangesOverlap;
|
|
27
|
+
private splitRangeAroundOverlaps;
|
|
28
|
+
private calculateHighlightPriority;
|
|
29
|
+
private findSegmentationPoints;
|
|
30
|
+
private getItemIndexForGlobalIndex;
|
|
31
|
+
private getCharIndexForGlobalIndex;
|
|
32
|
+
private removeDuplicatePoints;
|
|
33
|
+
private createSegments;
|
|
34
|
+
private createSegment;
|
|
35
|
+
private optimizeSegments;
|
|
36
|
+
private canMergeSegments;
|
|
37
|
+
private mergeSegments;
|
|
38
|
+
private getTextItemBounds;
|
|
39
|
+
private boundsIntersect;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=text-segmentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-segmentation.d.ts","sourceRoot":"","sources":["../../core/text-segmentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtF,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,iBAAiB,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,CAAC;CAC5E;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,UAAQ;IAI7B,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,EAAE;IAqB/F,OAAO,CAAC,mBAAmB;IA8C3B,OAAO,CAAC,yBAAyB;IAuCjC,OAAO,CAAC,4BAA4B;IA6BpC,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,4BAA4B;IAiBpC,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,wBAAwB;IAgChC,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,sBAAsB;IAuC9B,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,aAAa;IAgDrB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;CAQxB"}
|