2 var defer, getBounds, updateClasses, _ref;
4 _ref = this.Tether.Utils, getBounds = _ref.getBounds, updateClasses = _ref.updateClasses, defer = _ref.defer;
6 this.Tether.modules.push({
7 position: function(_arg) {
8 var abutted, addClasses, allClasses, bottom, height, left, right, side, sides, targetPos, top, width, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref1, _ref2, _ref3, _ref4, _ref5,
10 top = _arg.top, left = _arg.left;
11 _ref1 = this.cache('element-bounds', function() {
12 return getBounds(_this.element);
13 }), height = _ref1.height, width = _ref1.width;
14 targetPos = this.getTargetBounds();
15 bottom = top + height;
18 if (top <= targetPos.bottom && bottom >= targetPos.top) {
19 _ref2 = ['left', 'right'];
20 for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
22 if ((_ref3 = targetPos[side]) === left || _ref3 === right) {
27 if (left <= targetPos.right && right >= targetPos.left) {
28 _ref4 = ['top', 'bottom'];
29 for (_j = 0, _len1 = _ref4.length; _j < _len1; _j++) {
31 if ((_ref5 = targetPos[side]) === top || _ref5 === bottom) {
38 sides = ['left', 'top', 'right', 'bottom'];
39 allClasses.push(this.getClass('abutted'));
40 for (_k = 0, _len2 = sides.length; _k < _len2; _k++) {
42 allClasses.push("" + (this.getClass('abutted')) + "-" + side);
45 addClasses.push(this.getClass('abutted'));
47 for (_l = 0, _len3 = abutted.length; _l < _len3; _l++) {
49 addClasses.push("" + (this.getClass('abutted')) + "-" + side);
52 updateClasses(_this.target, addClasses, allClasses);
53 return updateClasses(_this.element, addClasses, allClasses);