/* @flow */
import toCss from '../utils/toCss'
import type {JssStyle, RuleOptions, ToCssOptions, CSSKeyframeRule} from '../types'
import {BaseStyleRule} from './styleRule'

export class KeyframeRule extends BaseStyleRule {
  renderable: ?CSSKeyframeRule

  /**
   * Generates a CSS string.
   */
  toString(options?: ToCssOptions): string {
    const {sheet} = this.options
    const link = sheet ? sheet.options.link : false
    const opts = link ? {...options, allowEmpty: true} : options
    return toCss(this.key, this.style, opts)
  }
}

export default {
  onCreateRule(key: string, style: JssStyle, options: RuleOptions): KeyframeRule | null {
    if (options.parent && options.parent.type === 'keyframes') {
      return new KeyframeRule(key, style, options)
    }
    return null
  }
}
