1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
{getBounds, updateClasses, defer} = @Tether.Utils
@Tether.modules.push
position: ({top, left}) ->
{height, width} = @cache 'element-bounds', => getBounds @element
targetPos = @getTargetBounds()
bottom = top + height
right = left + width
abutted = []
if top <= targetPos.bottom and bottom >= targetPos.top
for side in ['left', 'right']
if targetPos[side] in [left, right]
abutted.push side
if left <= targetPos.right and right >= targetPos.left
for side in ['top', 'bottom']
if targetPos[side] in [top, bottom]
abutted.push side
allClasses = []
addClasses = []
sides = ['left', 'top', 'right', 'bottom']
allClasses.push @getClass('abutted')
for side in sides
allClasses.push "#{ @getClass('abutted') }-#{ side }"
if abutted.length
addClasses.push @getClass('abutted')
for side in abutted
addClasses.push "#{ @getClass('abutted') }-#{ side }"
defer =>
updateClasses @target, addClasses, allClasses
updateClasses @element, addClasses, allClasses
true
|