declare module "@stardust-ui/fela" { import * as CSS from 'csstype'; import { TRuleType, TKeyframeType, TFontType, TStaticType, TClearType } from 'fela-utils'; export type TRuleProps = {}; export type TRule = (props: T, renderer: IRenderer) => IStyle export type TKeyFrame = (props: T, renderer: IRenderer) => { from?: IStyle, to?: IStyle, [persent: string]: IStyle | undefined; }; type TRendererCreator = (config?: IConfig) => IRenderer; type TPlugin = (style: IStyle) => IStyle; //http://fela.js.org/docs/advanced/Plugins.html type TEnhancer = (renderer: IRenderer) => IRenderer; //http://fela.js.org/docs/advanced/Enhancers.html type TSubscribeMessageType = TRuleType | TKeyframeType | TFontType | TStaticType | TClearType interface ISubscribeMessage { type: TSubscribeMessageType; } interface ISubscribeRuleOrStaticObjectMessage extends ISubscribeMessage { static?: boolean; declaration: string; selector: string; media: string; } interface ISubscribeKeyframesMessage extends ISubscribeMessage { name: string; keyframe: string; } interface ISubscribeFontFaceMessage extends ISubscribeMessage { fontFamily: string; fontFace: string; } interface ISubscribeStaticStringMessage extends ISubscribeMessage { css: string; } interface ISubscribeClearMessage extends ISubscribeMessage { } interface IRenderer { renderRule(rule: TRule, props: T): string renderKeyframe(keyFrame: TKeyFrame, props: T): string; renderFont(family: string, files: Array, props: T): void; renderStatic(style: string, selector?: string): void; renderStatic(style: IStyle, selector: string): void; renderToString(): string; subscribe(event: (msg: ISubscribeRuleOrStaticObjectMessage | ISubscribeKeyframesMessage | ISubscribeFontFaceMessage | ISubscribeStaticStringMessage | ISubscribeClearMessage) => void): { unsubscribe: () => void; } clear(): void; } //http://fela.js.org/docs/advanced/RendererConfiguration.html interface IConfig { plugins?: Array; keyframePrefixes?: Array; enhancers?: Array; mediaQueryOrder?: Array; selectorPrefix?: string; filterClassName?: (className: string) => boolean; devMode?: boolean; } export interface IStyle extends CSS.Properties { // for selectors and pseudo classes use fela-plugin-typescript } function createRenderer(config?: IConfig): IRenderer; function combineRules(a: TRule, b: TRule): TRule function combineRules( a: TRule, b: TRule, c: TRule, ): TRule function combineRules(...rules: Array): TRule function enhance(...enhancers: Array): (rendererCreator: TRendererCreator) => TRendererCreator; } declare module "@stardust-ui/fela-dom" { import { IRenderer } from '@stardust-ui/fela'; function render(renderer: IRenderer): void; function rehydrate(renderer: IRenderer): void; function renderToMarkup(renderer: IRenderer): string; function renderToSheetList(renderer: IRenderer): { css: string, type: 'RULE' | 'KEYFRAME' | 'FONT' | 'STATIC', media?: string, support?: boolean, }[]; } declare module "@stardust-ui/fela-tools" { import { TRule, TRuleProps, IStyle, IRenderer } from "@stardust-ui/fela"; export type TMultiRuleObject = {[key in keyof Styles]: TRule | IStyle} export type TMultiRuleFunction = (props: Props, renderer: IRenderer) => TMultiRuleObject export type TMultiRule = TMultiRuleObject | TMultiRuleFunction export type TPartialMultiRuleObject = Partial> export type TPartialMultiRuleFunction = (props: Props, renderer: IRenderer) => TPartialMultiRuleObject export type TPartialMultiRule = TPartialMultiRuleObject | TPartialMultiRuleFunction export type TNormalizedMultiRule = (props: Props, renderer: IRenderer) => {[key in keyof Styles]: TRule} function combineMultiRules( a: TMultiRule, b: TMultiRule ): TNormalizedMultiRule function combineMultiRules( a: TMultiRule, b: TMultiRule, c: TMultiRule, ): TNormalizedMultiRule function combineMultiRules(...rules: Array): TNormalizedMultiRule function mapValueToMediaQuery( queryValueMap: { [key: string]: string }, mapper: ((value: string) => object) | string ): object; function renderToElement( renderer: IRenderer, mountNode: { textContent: string }, ): (() => void); function renderToString( renderer: IRenderer, ): string; }