@epam/pdf-highlighter-kit 0.0.6 → 0.0.8
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/README.md +62 -27
- package/dist/PDFHighlightViewer.d.ts +8 -5
- package/dist/PDFHighlightViewer.d.ts.map +1 -1
- package/dist/PDFHighlightViewer.js +178 -76
- package/dist/PDFHighlightViewer.js.map +1 -1
- package/dist/api.d.ts +2 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/core/unified-layer-builder.d.ts +0 -1
- package/dist/core/unified-layer-builder.d.ts.map +1 -1
- package/dist/core/unified-layer-builder.js +9 -32
- package/dist/core/unified-layer-builder.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/highlight-style.d.ts +7 -0
- package/dist/utils/highlight-style.d.ts.map +1 -0
- package/dist/utils/highlight-style.js +31 -0
- package/dist/utils/highlight-style.js.map +1 -0
- package/dist/utils/label-style.d.ts +7 -1
- package/dist/utils/label-style.d.ts.map +1 -1
- package/dist/utils/label-style.js +64 -0
- package/dist/utils/label-style.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HighlightLabelStyle } from '../types';
|
|
1
|
+
import type { HighlightLabelStyle, HighlightStyle } from '../types';
|
|
2
2
|
/**
|
|
3
3
|
* Applies label style properties to an HTMLElement. Used by both
|
|
4
4
|
* UnifiedLayerBuilder and PDFHighlightViewer so defaults and edge-cases
|
|
@@ -10,6 +10,12 @@ export declare function applyLabelStyle(el: HTMLElement, style?: HighlightLabelS
|
|
|
10
10
|
* Used when rendering beforeIcon so icon and label can have different colors.
|
|
11
11
|
*/
|
|
12
12
|
export declare function applyIconStyle(el: HTMLElement, style?: HighlightLabelStyle): void;
|
|
13
|
+
/**
|
|
14
|
+
* Appends a sanitized icon element to a label when beforeIcon is provided.
|
|
15
|
+
*/
|
|
16
|
+
export declare function appendLabelIcon(labelEl: HTMLElement, beforeIcon: string | undefined, style?: HighlightLabelStyle): void;
|
|
17
|
+
export declare function applyBaseOutlineStyle(el: HTMLElement, style: Partial<HighlightStyle & HighlightLabelStyle> | undefined): void;
|
|
18
|
+
export declare function applyLabelOutlineStyle(el: HTMLElement, style: Partial<HighlightLabelStyle> | undefined): void;
|
|
13
19
|
/**
|
|
14
20
|
* Normalizes icon size to a CSS value (e.g. for label icons).
|
|
15
21
|
* - null/undefined → '1em'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label-style.d.ts","sourceRoot":"","sources":["../../src/utils/label-style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"label-style.d.ts","sourceRoot":"","sources":["../../src/utils/label-style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA2BpE;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAWlF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAGjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,CAAC,EAAE,mBAAmB,GAC1B,IAAI,CAiBN;AAUD,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,OAAO,CAAC,cAAc,GAAG,mBAAmB,CAAC,GAAG,SAAS,GAC/D,IAAI,CAGN;AAED,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,SAAS,GAC9C,IAAI,CAmCN;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAIhE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { sanitizeIconHtml } from './sanitize-icon-html';
|
|
1
2
|
function setStyle(el, key, value, transform) {
|
|
2
3
|
if (value == null)
|
|
3
4
|
return;
|
|
@@ -5,12 +6,15 @@ function setStyle(el, key, value, transform) {
|
|
|
5
6
|
el.style[key] = final;
|
|
6
7
|
}
|
|
7
8
|
const DIRECT_LABEL_STYLE_KEYS = [
|
|
9
|
+
'opacity',
|
|
8
10
|
'color',
|
|
9
11
|
'backgroundColor',
|
|
10
12
|
'padding',
|
|
11
13
|
'borderRadius',
|
|
12
14
|
'fontFamily',
|
|
13
15
|
'border',
|
|
16
|
+
'borderColor',
|
|
17
|
+
'borderWidth',
|
|
14
18
|
'whiteSpace',
|
|
15
19
|
];
|
|
16
20
|
/**
|
|
@@ -36,6 +40,66 @@ export function applyIconStyle(el, style) {
|
|
|
36
40
|
return;
|
|
37
41
|
el.style.color = style.iconColor;
|
|
38
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Appends a sanitized icon element to a label when beforeIcon is provided.
|
|
45
|
+
*/
|
|
46
|
+
export function appendLabelIcon(labelEl, beforeIcon, style) {
|
|
47
|
+
if (!beforeIcon)
|
|
48
|
+
return;
|
|
49
|
+
const iconWrap = document.createElement('span');
|
|
50
|
+
iconWrap.className = 'highlight-label-icon';
|
|
51
|
+
iconWrap.innerHTML = sanitizeIconHtml(beforeIcon);
|
|
52
|
+
const svg = iconWrap.querySelector('svg');
|
|
53
|
+
if (svg) {
|
|
54
|
+
svg.removeAttribute('width');
|
|
55
|
+
svg.removeAttribute('height');
|
|
56
|
+
}
|
|
57
|
+
const size = normalizeSize(style?.iconSize);
|
|
58
|
+
iconWrap.style.width = size;
|
|
59
|
+
iconWrap.style.height = size;
|
|
60
|
+
applyIconStyle(iconWrap, style);
|
|
61
|
+
labelEl.appendChild(iconWrap);
|
|
62
|
+
}
|
|
63
|
+
const LABEL_SIDE_OUTLINE_CLASS = 'label-side-outline';
|
|
64
|
+
function getLabelSideOutline(el) {
|
|
65
|
+
return Array.from(el.children).find((child) => child.classList.contains(LABEL_SIDE_OUTLINE_CLASS));
|
|
66
|
+
}
|
|
67
|
+
export function applyBaseOutlineStyle(el, style) {
|
|
68
|
+
el.style.outline = style?.outline ?? '';
|
|
69
|
+
el.style.outlineOffset = '';
|
|
70
|
+
}
|
|
71
|
+
export function applyLabelOutlineStyle(el, style) {
|
|
72
|
+
applyBaseOutlineStyle(el, style);
|
|
73
|
+
const existingSideOutline = getLabelSideOutline(el);
|
|
74
|
+
if (!style?.outline || !style?.outlineRight) {
|
|
75
|
+
existingSideOutline?.remove();
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
el.style.outline = '';
|
|
79
|
+
el.style.outlineOffset = '';
|
|
80
|
+
const sideOutline = existingSideOutline ?? document.createElement('span');
|
|
81
|
+
if (!el.style.position) {
|
|
82
|
+
el.style.position = 'relative';
|
|
83
|
+
}
|
|
84
|
+
sideOutline.className = LABEL_SIDE_OUTLINE_CLASS;
|
|
85
|
+
sideOutline.style.position = 'absolute';
|
|
86
|
+
sideOutline.style.top = '0';
|
|
87
|
+
sideOutline.style.right = '0';
|
|
88
|
+
sideOutline.style.bottom = '0';
|
|
89
|
+
sideOutline.style.left = '0';
|
|
90
|
+
sideOutline.style.pointerEvents = 'none';
|
|
91
|
+
sideOutline.style.boxSizing = 'border-box';
|
|
92
|
+
const baseSideOutline = style?.outline ?? '';
|
|
93
|
+
sideOutline.style.borderTop = baseSideOutline;
|
|
94
|
+
sideOutline.style.borderRight = style.outlineRight;
|
|
95
|
+
sideOutline.style.borderBottom = baseSideOutline;
|
|
96
|
+
sideOutline.style.borderLeft = baseSideOutline;
|
|
97
|
+
sideOutline.style.borderRadius = style?.borderRadius ?? '';
|
|
98
|
+
sideOutline.style.zIndex = '1';
|
|
99
|
+
if (!existingSideOutline) {
|
|
100
|
+
el.prepend(sideOutline);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
39
103
|
/**
|
|
40
104
|
* Normalizes icon size to a CSS value (e.g. for label icons).
|
|
41
105
|
* - null/undefined → '1em'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label-style.js","sourceRoot":"","sources":["../../src/utils/label-style.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"label-style.js","sourceRoot":"","sources":["../../src/utils/label-style.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED