You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					92 lines
				
				2.7 KiB
			
		
		
			
		
	
	
					92 lines
				
				2.7 KiB
			| 
											3 years ago
										 | // @flow | ||
|  | export const top: 'top' = 'top'; | ||
|  | export const bottom: 'bottom' = 'bottom'; | ||
|  | export const right: 'right' = 'right'; | ||
|  | export const left: 'left' = 'left'; | ||
|  | export const auto: 'auto' = 'auto'; | ||
|  | export type BasePlacement = | ||
|  |   | typeof top | ||
|  |   | typeof bottom | ||
|  |   | typeof right | ||
|  |   | typeof left; | ||
|  | export const basePlacements: Array<BasePlacement> = [top, bottom, right, left]; | ||
|  | 
 | ||
|  | export const start: 'start' = 'start'; | ||
|  | export const end: 'end' = 'end'; | ||
|  | export type Variation = typeof start | typeof end; | ||
|  | 
 | ||
|  | export const clippingParents: 'clippingParents' = 'clippingParents'; | ||
|  | export const viewport: 'viewport' = 'viewport'; | ||
|  | export type Boundary = Element | Array<Element> | typeof clippingParents; | ||
|  | export type RootBoundary = typeof viewport | 'document'; | ||
|  | 
 | ||
|  | export const popper: 'popper' = 'popper'; | ||
|  | export const reference: 'reference' = 'reference'; | ||
|  | export type Context = typeof popper | typeof reference; | ||
|  | 
 | ||
|  | export type VariationPlacement = | ||
|  |   | 'top-start' | ||
|  |   | 'top-end' | ||
|  |   | 'bottom-start' | ||
|  |   | 'bottom-end' | ||
|  |   | 'right-start' | ||
|  |   | 'right-end' | ||
|  |   | 'left-start' | ||
|  |   | 'left-end'; | ||
|  | export type AutoPlacement = 'auto' | 'auto-start' | 'auto-end'; | ||
|  | export type ComputedPlacement = VariationPlacement | BasePlacement; | ||
|  | export type Placement = AutoPlacement | BasePlacement | VariationPlacement; | ||
|  | 
 | ||
|  | export const variationPlacements: Array<VariationPlacement> = basePlacements.reduce( | ||
|  |   (acc: Array<VariationPlacement>, placement: BasePlacement) => | ||
|  |     acc.concat([(`${placement}-${start}`: any), (`${placement}-${end}`: any)]), | ||
|  |   [] | ||
|  | ); | ||
|  | export const placements: Array<Placement> = [...basePlacements, auto].reduce( | ||
|  |   ( | ||
|  |     acc: Array<Placement>, | ||
|  |     placement: BasePlacement | typeof auto | ||
|  |   ): Array<Placement> => | ||
|  |     acc.concat([ | ||
|  |       placement, | ||
|  |       (`${placement}-${start}`: any), | ||
|  |       (`${placement}-${end}`: any), | ||
|  |     ]), | ||
|  |   [] | ||
|  | ); | ||
|  | 
 | ||
|  | // modifiers that need to read the DOM | ||
|  | export const beforeRead: 'beforeRead' = 'beforeRead'; | ||
|  | export const read: 'read' = 'read'; | ||
|  | export const afterRead: 'afterRead' = 'afterRead'; | ||
|  | // pure-logic modifiers | ||
|  | export const beforeMain: 'beforeMain' = 'beforeMain'; | ||
|  | export const main: 'main' = 'main'; | ||
|  | export const afterMain: 'afterMain' = 'afterMain'; | ||
|  | // modifier with the purpose to write to the DOM (or write into a framework state) | ||
|  | export const beforeWrite: 'beforeWrite' = 'beforeWrite'; | ||
|  | export const write: 'write' = 'write'; | ||
|  | export const afterWrite: 'afterWrite' = 'afterWrite'; | ||
|  | export const modifierPhases: Array<ModifierPhases> = [ | ||
|  |   beforeRead, | ||
|  |   read, | ||
|  |   afterRead, | ||
|  |   beforeMain, | ||
|  |   main, | ||
|  |   afterMain, | ||
|  |   beforeWrite, | ||
|  |   write, | ||
|  |   afterWrite, | ||
|  | ]; | ||
|  | 
 | ||
|  | export type ModifierPhases = | ||
|  |   | typeof beforeRead | ||
|  |   | typeof read | ||
|  |   | typeof afterRead | ||
|  |   | typeof beforeMain | ||
|  |   | typeof main | ||
|  |   | typeof afterMain | ||
|  |   | typeof beforeWrite | ||
|  |   | typeof write | ||
|  |   | typeof afterWrite; |