1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'
import { registerMethods } from '../utils/methods.js'
import { unCamelCase } from '../utils/utils.js'
import Element from './Element.js'
function cssRule (selector, rule) {
if (!selector) return ''
if (!rule) return selector
var ret = selector + '{'
for (var i in rule) {
ret += unCamelCase(i) + ':' + rule[i] + ';'
}
ret += '}'
return ret
}
export default class Style extends Element {
constructor (node) {
super(nodeOrNew('style', node), node)
}
addText (w = '') {
this.node.textContent += w
return this
}
font (name, src, params = {}) {
return this.rule('@font-face', {
fontFamily: name,
src: src,
...params
})
}
rule (selector, obj) {
return this.addText(cssRule(selector, obj))
}
}
registerMethods('Dom', {
style: wrapWithAttrCheck(function (selector, obj) {
return this.put(new Style()).rule(selector, obj)
}),
fontface: wrapWithAttrCheck(function (name, src, params) {
return this.put(new Style()).font(name, src, params)
})
})
register(Style, 'Style')
|