From 46154526a768f5c7f314831feaf3a657b65d1966 Mon Sep 17 00:00:00 2001 From: streamich Date: Sat, 21 Jul 2018 14:50:49 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20add=20keyframes()=20addo?= =?UTF-8?q?n=20typings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.d.ts | 5 +++++ types/addon/keyframes.d.ts | 35 +++++++++++++++++++++++++++++++++++ types/addon/rule.d.ts | 2 +- types/nano.d.ts | 4 +++- 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 types/addon/keyframes.d.ts diff --git a/index.d.ts b/index.d.ts index d6e30ea8..8b9be896 100644 --- a/index.d.ts +++ b/index.d.ts @@ -5,6 +5,7 @@ import {DruleAddon} from './types/addon/drule'; import {SheetAddon} from './types/addon/sheet'; import {AtomsAddon} from './types/addon/atoms'; import {SheetPreset} from './types/preset/sheet'; +import {KeyframesAddon} from './types/addon/keyframes'; export * from './types/nano'; @@ -34,6 +35,10 @@ declare module 'nano-css/addon/atoms' { export const addon: AtomsAddon; } +declare module 'nano-css/addon/keyframes' { + export const addon: KeyframesAddon; +} + // Presets declare module 'nano-css/preset/sheet' { diff --git a/types/addon/keyframes.d.ts b/types/addon/keyframes.d.ts new file mode 100644 index 00000000..cdf95772 --- /dev/null +++ b/types/addon/keyframes.d.ts @@ -0,0 +1,35 @@ +import {CssLikeObject} from '../common'; +import {NanoRenderer} from '../nano'; + +export interface KeyframesPatch { + /** + * @param frames Map of keyframes. + * @param block Optional semantic name. + * + * Returns a generated animation name. + * + * ```js + * const animationName = nano.keyframes({ + * from: { + * left: '0%', + * }, + * to: { + * left: '100%', + * }, + * }); + * ``` + * + * You need to install [`keyframes()` addon]()https://github.com/streamich/nano-css/blob/master/docs/keyframes.md) to use this method. + * + * ```js + * import {create} from 'nano-css'; + * import {addon as addonKeyframes} from 'nano-css/addon/keyframes'; + * + * const nano = create(); + * addonKeyframes(nano); + * ``` + */ + keyframes: (frames: object, block?: string) => string; +} + +export type KeyframesAddon = (nano: T) => T & KeyframesPatch; diff --git a/types/addon/rule.d.ts b/types/addon/rule.d.ts index 7a20f8f1..749fbc7a 100644 --- a/types/addon/rule.d.ts +++ b/types/addon/rule.d.ts @@ -10,7 +10,7 @@ export interface RulePatch { * * ```js * import {create} from 'nano-css'; - * import {addon as addonRule} from 'nano-css'; + * import {addon as addonRule} from 'nano-css/addon/rule'; * * const nano = create(); * addonRule(nano); diff --git a/types/nano.d.ts b/types/nano.d.ts index 0abda2ad..3e606dd9 100644 --- a/types/nano.d.ts +++ b/types/nano.d.ts @@ -3,6 +3,7 @@ import {RulePatch} from './addon/rule'; import {DrulePatch} from './addon/drule'; import {UnitsPatch} from './addon/units'; import {SheetPatch} from './addon/sheet'; +import {KeyframesPatch} from './addon/keyframes'; /* interface NanoRenderer extends Partial { @@ -49,7 +50,8 @@ export interface NanoRenderer extends Partial, Partial, Partial, - Partial { + Partial, + Partial { /** * Equals to `true` if in browser environment. */