index.js.flow 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. declare module 'popper.js' {
  2. declare type Position = 'top' | 'right' | 'bottom' | 'left';
  3. declare type Placement =
  4. | 'auto-start'
  5. | 'auto'
  6. | 'auto-end'
  7. | 'top-start'
  8. | 'top'
  9. | 'top-end'
  10. | 'right-start'
  11. | 'right'
  12. | 'right-end'
  13. | 'bottom-end'
  14. | 'bottom'
  15. | 'bottom-start'
  16. | 'left-end'
  17. | 'left'
  18. | 'left-start';
  19. declare type Offset = {
  20. top: number,
  21. left: number,
  22. width: number,
  23. height: number,
  24. position: Position,
  25. };
  26. declare type Boundary = 'scrollParent' | 'viewport' | 'window';
  27. declare type Behavior = 'flip' | 'clockwise' | 'counterclockwise';
  28. declare type Data = {
  29. instance: Popper,
  30. placement: Placement,
  31. originalPlacement: Placement,
  32. flipped: boolean,
  33. hide: boolean,
  34. arrowElement: Element,
  35. styles: CSSStyleDeclaration,
  36. arrowStyles: CSSStyleDeclaration,
  37. boundaries: Object,
  38. offsets: {
  39. popper: Offset,
  40. reference: Offset,
  41. arrow: {
  42. top: number,
  43. left: number,
  44. },
  45. },
  46. };
  47. declare type ModifierFn = (data: Data, options: Object) => Data;
  48. declare type BaseModifier = {
  49. order?: number,
  50. enabled?: boolean,
  51. fn?: ModifierFn,
  52. };
  53. declare type Modifiers = {
  54. shift?: BaseModifier,
  55. offset?: BaseModifier & {
  56. offset?: number | string,
  57. },
  58. preventOverflow?: BaseModifier & {
  59. priority?: Position[],
  60. padding?: number,
  61. boundariesElement?: Boundary | Element,
  62. escapeWithReference?: boolean,
  63. },
  64. keepTogether?: BaseModifier,
  65. arrow?: BaseModifier & {
  66. element?: string | Element | null,
  67. },
  68. flip?: BaseModifier & {
  69. behavior?: Behavior | Position[],
  70. padding?: number,
  71. boundariesElement?: Boundary | Element,
  72. },
  73. inner?: BaseModifier,
  74. hide?: BaseModifier,
  75. applyStyle?: BaseModifier & {
  76. onLoad?: Function,
  77. gpuAcceleration?: boolean,
  78. },
  79. computeStyle?: BaseModifier & {
  80. gpuAcceleration?: boolean,
  81. x?: 'bottom' | 'top',
  82. y?: 'left' | 'right',
  83. },
  84. [name: string]: (BaseModifier & { [string]: * }) | null,
  85. };
  86. declare type Options = {
  87. placement?: Placement,
  88. positionFixed?: boolean,
  89. eventsEnabled?: boolean,
  90. modifiers?: Modifiers,
  91. removeOnDestroy?: boolean,
  92. onCreate?: (data: Data) => void,
  93. onUpdate?: (data: Data) => void,
  94. };
  95. declare var placements: Placement;
  96. declare type ReferenceObject = {
  97. +clientHeight: number,
  98. +clientWidth: number,
  99. getBoundingClientRect():
  100. | ClientRect
  101. | {
  102. width: number,
  103. height: number,
  104. top: number,
  105. right: number,
  106. bottom: number,
  107. left: number,
  108. },
  109. };
  110. declare type Instance = {
  111. destroy: () => void,
  112. scheduleUpdate: () => void,
  113. update: () => void,
  114. enableEventListeners: () => void,
  115. disableEventListeners: () => void,
  116. };
  117. declare class Popper {
  118. static placements: Placement;
  119. constructor(
  120. reference: Element | ReferenceObject,
  121. popper: Element,
  122. options?: Options
  123. ): Instance;
  124. }
  125. declare module.exports: Class<Popper>;
  126. }