Skip to content

Commit

Permalink
fix: .js.flow definitions (#829)
Browse files Browse the repository at this point in the history
* Fix umd flow definitions file name

* Fix `.js.flow` definitions file

- `.js.flow` files shipped alongside the main entry point are
different from library definitions, e.g.: flow-typed.
- They need an `@flow` pragma
- They can't be wrapped in a `declare module` block
- They need to export their public types
  • Loading branch information
pascalduez authored and FezVrasta committed Oct 16, 2019
1 parent 31102ce commit dafc39b
Show file tree
Hide file tree
Showing 2 changed files with 153 additions and 154 deletions.
305 changes: 152 additions & 153 deletions packages/popper/index.js.flow
@@ -1,157 +1,156 @@
declare module 'popper.js' {
declare type Position = 'top' | 'right' | 'bottom' | 'left';
declare type Placement =
| 'auto-start'
| 'auto'
| 'auto-end'
| 'top-start'
| 'top'
| 'top-end'
| 'right-start'
| 'right'
| 'right-end'
| 'bottom-end'
| 'bottom'
| 'bottom-start'
| 'left-end'
| 'left'
| 'left-start';

declare type Offset = {
top: number,
left: number,
width: number,
height: number,
position: Position,
};

declare type Boundary = 'scrollParent' | 'viewport' | 'window';

declare type Behavior = 'flip' | 'clockwise' | 'counterclockwise';

declare type Data = {
instance: Popper,
placement: Placement,
originalPlacement: Placement,
flipped: boolean,
hide: boolean,
arrowElement: Element,
styles: CSSStyleDeclaration,
arrowStyles: CSSStyleDeclaration,
boundaries: Object,
offsets: {
popper: Offset,
reference: Offset,
arrow: {
// @flow

export type Position = 'top' | 'right' | 'bottom' | 'left';

export type Placement =
| 'auto-start'
| 'auto'
| 'auto-end'
| 'top-start'
| 'top'
| 'top-end'
| 'right-start'
| 'right'
| 'right-end'
| 'bottom-end'
| 'bottom'
| 'bottom-start'
| 'left-end'
| 'left'
| 'left-start';

export type Offset = {
top: number,
left: number,
width: number,
height: number,
position: Position,
};

export type Boundary = 'scrollParent' | 'viewport' | 'window';

export type Behavior = 'flip' | 'clockwise' | 'counterclockwise';

export type Data = {
instance: Popper,
placement: Placement,
originalPlacement: Placement,
flipped: boolean,
hide: boolean,
arrowElement: Element,
styles: CSSStyleDeclaration,
arrowStyles: CSSStyleDeclaration,
boundaries: Object,
offsets: {
popper: Offset,
reference: Offset,
arrow: {
top: number,
left: number,
},
},
};

export type ModifierFn = (data: Data, options: Object) => Data;

export type Padding = {
top?: number,
bottom?: number,
left?: number,
right?: number,
};

export type BaseModifier = {
order?: number,
enabled?: boolean,
fn?: ModifierFn,
};

export type Modifiers = {
shift?: BaseModifier,
offset?: BaseModifier & {
offset?: number | string,
},
preventOverflow?: BaseModifier & {
priority?: Position[],
padding?: number | Padding,
boundariesElement?: Boundary | Element,
escapeWithReference?: boolean,
},
keepTogether?: BaseModifier,
arrow?: BaseModifier & {
element?: string | Element | null,
},
flip?: BaseModifier & {
behavior?: Behavior | Position[],
padding?: number | Padding,
boundariesElement?: Boundary | Element,
flipVariations?: boolean,
flipVariationsByContent?: boolean,
},
inner?: BaseModifier,
hide?: BaseModifier,
applyStyle?: BaseModifier & {
onLoad?: Function,
gpuAcceleration?: boolean,
},
computeStyle?: BaseModifier & {
gpuAcceleration?: boolean,
x?: 'bottom' | 'top',
y?: 'left' | 'right',
},

[name: string]: (BaseModifier & { [string]: * }) | null,
};

export type Options = {
placement?: Placement,
positionFixed?: boolean,
eventsEnabled?: boolean,
modifiers?: Modifiers,
removeOnDestroy?: boolean,

onCreate?: (data: Data) => void,

onUpdate?: (data: Data) => void,
};

export type ReferenceObject = {
+clientHeight: number,
+clientWidth: number,
+referenceNode?: Node,

getBoundingClientRect():
| ClientRect
| {
width: number,
height: number,
top: number,
right: number,
bottom: number,
left: number,
},
},
};

declare type ModifierFn = (data: Data, options: Object) => Data;

declare type Padding = {
top?: number,
bottom?: number,
left?: number,
right?: number,
}

declare type BaseModifier = {
order?: number,
enabled?: boolean,
fn?: ModifierFn,
};

declare type Modifiers = {
shift?: BaseModifier,
offset?: BaseModifier & {
offset?: number | string,
},
preventOverflow?: BaseModifier & {
priority?: Position[],
padding?: number | Padding,
boundariesElement?: Boundary | Element,
escapeWithReference?: boolean,
},
keepTogether?: BaseModifier,
arrow?: BaseModifier & {
element?: string | Element | null,
},
flip?: BaseModifier & {
behavior?: Behavior | Position[],
padding?: number | Padding,
boundariesElement?: Boundary | Element,
flipVariations?: boolean,
flipVariationsByContent?: boolean,
},
inner?: BaseModifier,
hide?: BaseModifier,
applyStyle?: BaseModifier & {
onLoad?: Function,
gpuAcceleration?: boolean,
},
computeStyle?: BaseModifier & {
gpuAcceleration?: boolean,
x?: 'bottom' | 'top',
y?: 'left' | 'right',
},

[name: string]: (BaseModifier & { [string]: * }) | null,
};

declare type Options = {
placement?: Placement,
positionFixed?: boolean,
eventsEnabled?: boolean,
modifiers?: Modifiers,
removeOnDestroy?: boolean,

onCreate?: (data: Data) => void,

onUpdate?: (data: Data) => void,
};

declare var placements: Placement;

declare type ReferenceObject = {
+clientHeight: number,
+clientWidth: number,
+referenceNode?: Node,

getBoundingClientRect():
| ClientRect
| {
width: number,
height: number,
top: number,
right: number,
bottom: number,
left: number,
},
};

declare type Instance = {
destroy: () => void,
scheduleUpdate: () => void,
update: () => void,
enableEventListeners: () => void,
disableEventListeners: () => void,
};

declare class Popper {
static placements: Placement;

popper: Element;
reference: Element | ReferenceObject;

constructor(
reference: Element | ReferenceObject,
popper: Element,
options?: Options
): Instance;
}

declare module.exports: Class<Popper>;
};

export type Instance = {
destroy: () => void,
scheduleUpdate: () => void,
update: () => void,
enableEventListeners: () => void,
disableEventListeners: () => void,
};

declare class Popper {
static placements: Placement;

popper: Element;
reference: Element | ReferenceObject;

constructor(
reference: Element | ReferenceObject,
popper: Element,
options?: Options
): Instance;
}

declare export default typeof Popper;
2 changes: 1 addition & 1 deletion packages/popper/package.json
Expand Up @@ -34,7 +34,7 @@
"postpublish": "nuget-publish && ./bower-publish.sh",
"prebuild": "yarn lint",
"pretest": "yarn lint",
"build": "node bundle.js && cp index.js.flow dist/umd/poppper.js.flow",
"build": "node bundle.js && cp index.js.flow dist/umd/popper.js.flow",
"lint": "eslint .",
"test": "popper-karma",
"posttest": "tsc --project tests/types/tsconfig.json",
Expand Down

0 comments on commit dafc39b

Please sign in to comment.