Last active
September 27, 2017 21:43
-
-
Save kalley/22859a23a70e5800d47e3cdd43ad4fbc to your computer and use it in GitHub Desktop.
styled-components libdef that actually checks props and defaultProps
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// @flow | |
type $npm$styledComponents$ComponentWithDefaultProps< | |
DefaultProps: {}, | |
Props: {} | |
> = React$ComponentType<Props> & { defaultProps: DefaultProps } | |
type $npm$styledComponents$Interpolation = | |
| (<C: {}>(executionContext: C) => $npm$styledComponents$Interpolation) | |
| string | |
| number | |
| Array<$npm$styledComponents$Interpolation> | |
type $npm$styledComponents$NameGenerator = (hash: number) => string | |
type $npm$styledComponents$RuleSet = Array<$npm$styledComponents$Interpolation> | |
type $npm$styledComponents$Theme = { [key: string]: mixed } | |
type $npm$styledComponents$ThemeProviderProps = { | |
theme: | |
| $npm$styledComponents$Theme | |
| ((outerTheme: $npm$styledComponents$Theme) => void), | |
} | |
class Npm$StyledComponents$ThemeProvider extends React$Component< | |
$npm$styledComponents$ThemeProviderProps | |
> {} | |
class Npm$StyledComponents$StyleSheetManager extends React$Component<{ | |
sheet: mixed, | |
}> {} | |
class Npm$StyledComponents$StyleSheet {} | |
class Npm$StyledComponents$ServerStyleSheet { | |
instance: Npm$StyledComponents$StyleSheet | |
collectStyles: (children: React$Node) => React$Node | |
getStyleTags: () => string | |
getStyleElement: () => React$Node | |
} | |
class Npm$styledComponents$StyledComponent< | |
DefaultProps, | |
Props, | |
Keys | |
> extends React$Component<Props> { | |
static defaultProps: DefaultProps | |
static withComponent: (<P, D>( | |
$npm$styledComponents$ComponentWithDefaultProps<D, P> | |
) => Class<Npm$styledComponents$StyledComponent<D, P, Keys>>) & | |
(<P>( | |
Keys | React$ComponentType<P> | |
) => Class<Npm$styledComponents$StyledComponent<{}, P, Keys>>) | |
static extend: $npm$styledComponents$TaggedLiteral<Props, DefaultProps> | |
static attrs: <AdditionalProps: {}>( | |
attrs: AdditionalProps | |
) => $npm$styledComponents$TaggedLiteral< | |
Props & AdditionalProps, | |
DefaultProps | |
> | |
} | |
type $npm$styledComponents$TaggedTemplateLiteral<R> = ( | |
strings: Array<string>, | |
...interpolations: Array<$npm$styledComponents$Interpolation> | |
) => R | |
declare type $npm$styledComponents$TaggedLiteral< | |
P, | |
D = {}, | |
Keys = void | |
> = $npm$styledComponents$TaggedTemplateLiteral< | |
Class<Npm$styledComponents$StyledComponent<D, P, Keys>> | |
> | |
type $npm$styledComponents$Styled<Keys> = (<P, D>( | |
$npm$styledComponents$ComponentWithDefaultProps<D, P> | |
) => $npm$styledComponents$TaggedLiteral<P, D, Keys>) & | |
(<P>( | |
Keys | React$ComponentType<P> | |
) => $npm$styledComponents$TaggedLiteral<P, {}, Keys>) | |
type $npm$styledComponents$WithTheme = (<P: {}, D>( | |
$npm$styledComponents$ComponentWithDefaultProps< | |
D, | |
{ theme: $npm$styledComponents$Theme } & P | |
> | |
) => React$ComponentType<$Diff<P, D>>) & | |
(<P>( | |
React$ComponentType<{ theme: $npm$styledComponents$Theme } & P> | |
) => React$ComponentType<P>) | |
type $npm$styledComponents$DOMElements<Keys> = {| | |
a: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
abbr: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
address: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
area: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
article: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
aside: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
audio: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
b: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
base: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
bdi: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
bdo: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
big: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
blockquote: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
body: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
br: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
button: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
canvas: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
caption: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
cite: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
code: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
col: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
colgroup: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
data: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
datalist: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
dd: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
del: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
details: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
dfn: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
dialog: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
div: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
dl: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
dt: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
em: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
embed: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
fieldset: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
figcaption: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
figure: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
footer: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
form: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
h1: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
h2: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
h3: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
h4: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
h5: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
h6: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
head: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
header: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
hgroup: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
hr: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
html: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
i: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
iframe: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
img: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
input: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ins: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
kbd: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
keygen: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
label: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
legend: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
li: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
link: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
main: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
map: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
mark: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
marquee: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
menu: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
menuitem: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
meta: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
meter: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
nav: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
noscript: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
object: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ol: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
optgroup: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
option: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
output: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
p: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
param: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
picture: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
pre: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
progress: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
q: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
rp: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
rt: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ruby: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
s: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
samp: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
script: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
section: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
select: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
small: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
source: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
span: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
strong: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
style: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
sub: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
summary: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
sup: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
table: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
tbody: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
td: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
textarea: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
tfoot: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
th: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
thead: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
time: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
title: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
tr: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
track: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
u: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ul: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
var: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
video: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
wbr: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
// SVG | |
circle: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
clipPath: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
defs: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ellipse: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
g: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
image: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
line: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
linearGradient: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
mask: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
path: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
pattern: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
polygon: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
polyline: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
radialGradient: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
rect: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
stop: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
svg: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
text: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
tspan: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
|} | |
declare module 'styled-components' { | |
declare type Interpolation = $npm$styledComponents$Interpolation | |
declare type NameGenerator = $npm$styledComponents$NameGenerator | |
declare type Theme = $npm$styledComponents$Theme | |
declare type ThemeProviderProps = $npm$styledComponents$ThemeProviderProps | |
declare type TaggedTemplateLiteral< | |
R | |
> = $npm$styledComponents$TaggedTemplateLiteral<R> | |
declare type StyledComponentsComponentListKeys = $Keys< | |
$npm$styledComponents$DOMElements<StyledComponentsComponentListKeys> | |
> | |
declare type StyledComponent<D, P> = Npm$styledComponents$StyledComponent< | |
D, | |
P, | |
StyledComponentsComponentListKeys | |
> | |
declare module.exports: { | |
$call: $npm$styledComponents$Styled<StyledComponentsComponentListKeys>, | |
css: $npm$styledComponents$TaggedTemplateLiteral< | |
$npm$styledComponents$RuleSet | |
>, | |
injectGlobal: $npm$styledComponents$TaggedTemplateLiteral<void>, | |
keyframes: $npm$styledComponents$TaggedTemplateLiteral<string>, | |
withTheme: $npm$styledComponents$WithTheme, | |
ServerStyleSheet: typeof Npm$StyledComponents$ServerStyleSheet, | |
StyleSheetManager: typeof Npm$StyledComponents$StyleSheetManager, | |
ThemeProvider: typeof Npm$StyledComponents$ThemeProvider, | |
...$npm$styledComponents$DOMElements<StyledComponentsComponentListKeys>, | |
} | |
} | |
type $npm$styledComponents$NativeElements<Keys> = {| | |
ActivityIndicator: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ActivityIndicatorIOS: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ART: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
Button: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
DatePickerIOS: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
DrawerLayoutAndroid: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
Image: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ImageBackground: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ImageEditor: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ImageStore: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
KeyboardAvoidingView: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ListView: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
MapView: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
Modal: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
Navigator: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
NavigatorIOS: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
Picker: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
PickerIOS: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ProgressBarAndroid: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ProgressViewIOS: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ScrollView: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
SegmentedControlIOS: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
Slider: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
SliderIOS: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
SnapshotViewIOS: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
Switch: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
RecyclerViewBackedScrollView: $npm$styledComponents$TaggedLiteral< | |
*, | |
{}, | |
Keys | |
>, | |
RefreshControl: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
StatusBar: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
SwipeableListView: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
SwitchAndroid: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
SwitchIOS: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
TabBarIOS: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
Text: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
TextInput: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ToastAndroid: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ToolbarAndroid: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
Touchable: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
TouchableHighlight: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
TouchableNativeFeedback: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
TouchableOpacity: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
TouchableWithoutFeedback: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
View: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
ViewPagerAndroid: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
WebView: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
FlatList: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
SectionList: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
VirtualizedList: $npm$styledComponents$TaggedLiteral<*, {}, Keys>, | |
|} | |
declare module 'styled-components/native' { | |
declare type Interpolation = $npm$styledComponents$Interpolation | |
declare type NameGenerator = $npm$styledComponents$NameGenerator | |
declare type Theme = $npm$styledComponents$Theme | |
declare type ThemeProviderProps = $npm$styledComponents$ThemeProviderProps | |
declare type TaggedTemplateLiteral< | |
R | |
> = $npm$styledComponents$TaggedTemplateLiteral<R> | |
declare type StyledComponentsComponentListKeys = $Keys< | |
$npm$styledComponents$NativeElements<StyledComponentsComponentListKeys> | |
> | |
declare type StyledComponent<D, P> = Npm$styledComponents$StyledComponent< | |
D, | |
P, | |
StyledComponentsComponentListKeys | |
> | |
declare module.exports: { | |
$call: $npm$styledComponents$Styled<StyledComponentsComponentListKeys>, | |
css: $npm$styledComponents$TaggedTemplateLiteral< | |
$npm$styledComponents$RuleSet | |
>, | |
injectGlobal: $npm$styledComponents$TaggedTemplateLiteral<void>, | |
keyframes: $npm$styledComponents$TaggedTemplateLiteral<string>, | |
withTheme: $npm$styledComponents$WithTheme, | |
ThemeProvider: typeof Npm$StyledComponents$ThemeProvider, | |
...$npm$styledComponents$NativeElements<StyledComponentsComponentListKeys>, | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment