browser-extension-utils 0.0.5 → 0.0.7
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/lib/index.d.ts +8 -2
- package/lib/index.js +24 -12
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -30,15 +30,21 @@ export function addEventListener(
|
|
|
30
30
|
listener?
|
|
31
31
|
): void
|
|
32
32
|
|
|
33
|
+
export function getAttribute(element: HTMLElement, name: string): string
|
|
34
|
+
|
|
33
35
|
export function setAttribute(
|
|
34
36
|
element: HTMLElement,
|
|
35
37
|
name: string,
|
|
36
38
|
value: string
|
|
37
39
|
): void
|
|
38
40
|
|
|
39
|
-
export function setStyle(
|
|
41
|
+
export function setStyle(
|
|
42
|
+
element: HTMLElement,
|
|
43
|
+
style: string | Record<string, unknown>,
|
|
44
|
+
overwrite?: boolean
|
|
45
|
+
): void
|
|
40
46
|
|
|
41
|
-
export function toStyleMap(styleText: string): Record<string,
|
|
47
|
+
export function toStyleMap(styleText: string): Record<string, string>
|
|
42
48
|
|
|
43
49
|
export function noStyleSpace(text: string): string
|
|
44
50
|
|
package/lib/index.js
CHANGED
|
@@ -35,19 +35,30 @@ export const addEventListener = (element, type, listener) => {
|
|
|
35
35
|
// TODO: return remover function
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
export const getAttribute = (element, name) => element.getAttribute(name)
|
|
38
39
|
export const setAttribute = (element, name, value) =>
|
|
39
40
|
element.setAttribute(name, value)
|
|
40
41
|
|
|
41
|
-
export const setStyle = (element, values) => {
|
|
42
|
-
// setAttribute(element, "style", value)
|
|
42
|
+
export const setStyle = (element, values, overwrite) => {
|
|
43
|
+
// setAttribute(element, "style", value) -> Fail when violates CSP
|
|
43
44
|
const style = element.style
|
|
45
|
+
|
|
46
|
+
if (overwrite) {
|
|
47
|
+
if (typeof values === "string") {
|
|
48
|
+
style.cssText = values
|
|
49
|
+
return
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
style.cssText = ""
|
|
53
|
+
}
|
|
54
|
+
|
|
44
55
|
if (typeof values === "string") {
|
|
45
56
|
values = toStyleKeyValues(values)
|
|
46
57
|
}
|
|
47
58
|
|
|
48
59
|
for (const key in values) {
|
|
49
60
|
if (Object.hasOwn(values, key)) {
|
|
50
|
-
style[key] = values[key]
|
|
61
|
+
style[key] = values[key].replace("!important", "")
|
|
51
62
|
}
|
|
52
63
|
}
|
|
53
64
|
}
|
|
@@ -58,6 +69,7 @@ const toStyleKeyValues = (styleText) => {
|
|
|
58
69
|
const keyValues = styleText.split(/\s*;\s*/)
|
|
59
70
|
for (const keyValue of keyValues) {
|
|
60
71
|
const kv = keyValue.split(/\s*:\s*/)
|
|
72
|
+
// TODO: fix when key is such as -webkit-xxx
|
|
61
73
|
const key = toCamelCase(kv[0])
|
|
62
74
|
if (key) {
|
|
63
75
|
result[key] = kv[1]
|
|
@@ -74,24 +86,24 @@ export const toStyleMap = (styleText) => {
|
|
|
74
86
|
for (const keyValue of keyValues) {
|
|
75
87
|
const kv = keyValue.split("{")
|
|
76
88
|
if (kv[0] && kv[1]) {
|
|
77
|
-
map[kv[0]] =
|
|
89
|
+
map[kv[0]] = kv[1]
|
|
78
90
|
}
|
|
79
91
|
}
|
|
80
92
|
|
|
81
93
|
return map
|
|
82
94
|
}
|
|
83
95
|
|
|
84
|
-
export const noStyleSpace = (text) => text.replace(/\s*([^\w
|
|
96
|
+
export const noStyleSpace = (text) => text.replace(/\s*([^\w-!])\s*/gm, "$1")
|
|
85
97
|
|
|
86
98
|
export const createSetStyle = (styleText) => {
|
|
87
99
|
const styleMap = toStyleMap(styleText)
|
|
88
|
-
return (element,
|
|
89
|
-
if (typeof
|
|
90
|
-
setStyle(element,
|
|
91
|
-
} else if (typeof
|
|
92
|
-
key = noStyleSpace(
|
|
93
|
-
const
|
|
94
|
-
setStyle(element,
|
|
100
|
+
return (element, value, overwrite) => {
|
|
101
|
+
if (typeof value === "object") {
|
|
102
|
+
setStyle(element, value, overwrite)
|
|
103
|
+
} else if (typeof value === "string") {
|
|
104
|
+
const key = noStyleSpace(value)
|
|
105
|
+
const value2 = styleMap[key]
|
|
106
|
+
setStyle(element, value2 || value, overwrite)
|
|
95
107
|
}
|
|
96
108
|
}
|
|
97
109
|
}
|