|
|
import computeAutoPlacement from '../utils/computeAutoPlacement'; |
|
|
import getReferenceOffsets from '../utils/getReferenceOffsets'; |
|
|
import getPopperOffsets from '../utils/getPopperOffsets'; |
|
|
import runModifiers from '../utils/runModifiers'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export default function update() { |
|
|
|
|
|
if (this.state.isDestroyed) { |
|
|
return; |
|
|
} |
|
|
|
|
|
let data = { |
|
|
instance: this, |
|
|
styles: {}, |
|
|
arrowStyles: {}, |
|
|
attributes: {}, |
|
|
flipped: false, |
|
|
offsets: {}, |
|
|
}; |
|
|
|
|
|
|
|
|
data.offsets.reference = getReferenceOffsets( |
|
|
this.state, |
|
|
this.popper, |
|
|
this.reference, |
|
|
this.options.positionFixed |
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data.placement = computeAutoPlacement( |
|
|
this.options.placement, |
|
|
data.offsets.reference, |
|
|
this.popper, |
|
|
this.reference, |
|
|
this.options.modifiers.flip.boundariesElement, |
|
|
this.options.modifiers.flip.padding |
|
|
); |
|
|
|
|
|
|
|
|
data.originalPlacement = data.placement; |
|
|
|
|
|
data.positionFixed = this.options.positionFixed; |
|
|
|
|
|
|
|
|
data.offsets.popper = getPopperOffsets( |
|
|
this.popper, |
|
|
data.offsets.reference, |
|
|
data.placement |
|
|
); |
|
|
|
|
|
data.offsets.popper.position = this.options.positionFixed |
|
|
? 'fixed' |
|
|
: 'absolute'; |
|
|
|
|
|
|
|
|
data = runModifiers(this.modifiers, data); |
|
|
|
|
|
|
|
|
|
|
|
if (!this.state.isCreated) { |
|
|
this.state.isCreated = true; |
|
|
this.options.onCreate(data); |
|
|
} else { |
|
|
this.options.onUpdate(data); |
|
|
} |
|
|
} |
|
|
|