48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
/* @flow */
|
|
import toCss from '../utils/toCss'
|
|
import type {CSSFontFaceRule, RuleOptions, JssStyle, ToCssOptions, BaseRule} from '../types'
|
|
|
|
export class FontFaceRule implements BaseRule {
|
|
type = 'font-face'
|
|
|
|
at: string = '@font-face'
|
|
|
|
key: string
|
|
|
|
style: JssStyle
|
|
|
|
options: RuleOptions
|
|
|
|
isProcessed: boolean = false
|
|
|
|
renderable: ?CSSFontFaceRule
|
|
|
|
constructor(key: string, style: JssStyle, options: RuleOptions) {
|
|
this.key = key
|
|
this.style = style
|
|
this.options = options
|
|
}
|
|
|
|
/**
|
|
* Generates a CSS string.
|
|
*/
|
|
toString(options?: ToCssOptions): string {
|
|
if (Array.isArray(this.style)) {
|
|
let str = ''
|
|
for (let index = 0; index < this.style.length; index++) {
|
|
str += toCss(this.key, this.style[index])
|
|
if (this.style[index + 1]) str += '\n'
|
|
}
|
|
return str
|
|
}
|
|
|
|
return toCss(this.key, this.style, options)
|
|
}
|
|
}
|
|
|
|
export default {
|
|
onCreateRule(key: string, style: JssStyle, options: RuleOptions): FontFaceRule | null {
|
|
return key === '@font-face' ? new FontFaceRule(key, style, options) : null
|
|
}
|
|
}
|