From dafc39b169952b8cc0476f9bad0197e6ac830648 Mon Sep 17 00:00:00 2001 From: Pascal Duez Date: Wed, 16 Oct 2019 12:31:17 +0200 Subject: [PATCH] fix: `.js.flow` definitions (#829) * 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 --- packages/popper/index.js.flow | 305 +++++++++++++++++----------------- packages/popper/package.json | 2 +- 2 files changed, 153 insertions(+), 154 deletions(-) diff --git a/packages/popper/index.js.flow b/packages/popper/index.js.flow index 2198aa76d8..d56fdda243 100644 --- a/packages/popper/index.js.flow +++ b/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; +}; + +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; diff --git a/packages/popper/package.json b/packages/popper/package.json index 6c87f7e501..75f83fa651 100644 --- a/packages/popper/package.json +++ b/packages/popper/package.json @@ -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",