Skip to:
Content

BuddyPress.org

Changeset 9795


Ignore:
Timestamp:
04/23/2015 09:00:44 PM (5 years ago)
Author:
djpaul
Message:

Update caret.js to version 0.2.2

This library is used in the @mentions suggestions UI.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-core/js/jquery.caret.js

    • Property svn:executable set to *
    r9604 r9795  
     1(function (root, factory) {
     2  if (typeof define === 'function' && define.amd) {
     3    // AMD. Register as an anonymous module.
     4    define(["jquery"], function ($) {
     5      return (root.returnExportsGlobal = factory($));
     6    });
     7  } else if (typeof exports === 'object') {
     8    // Node. Does not work with strict CommonJS, but
     9    // only CommonJS-like enviroments that support module.exports,
     10    // like Node.
     11    module.exports = factory(require("jquery"));
     12  } else {
     13    factory(jQuery);
     14  }
     15}(this, function ($) {
     16
    117/*
    218  Implement Github like autocomplete mentions
     
    622  Licensed under the MIT license.
    723*/
    8 
    924
    1025/*
     
    1934*/
    2035
    21 
    22 (function() {
    23   (function(factory) {
    24     if (typeof define === 'function' && define.amd) {
    25       return define(['jquery'], factory);
    26     } else {
    27       return factory(window.jQuery);
    28     }
    29   })(function($) {
    30     "use strict";
    31     var EditableCaret, InputCaret, Mirror, Utils, discoveryIframeOf, methods, oDocument, oFrame, oWindow, pluginName, setContextBy;
    32     pluginName = 'caret';
    33     EditableCaret = (function() {
    34       function EditableCaret($inputor) {
    35         this.$inputor = $inputor;
    36         this.domInputor = this.$inputor[0];
     36"use strict";
     37var EditableCaret, InputCaret, Mirror, Utils, discoveryIframeOf, methods, oDocument, oFrame, oWindow, pluginName, setContextBy;
     38
     39pluginName = 'caret';
     40
     41EditableCaret = (function() {
     42  function EditableCaret($inputor) {
     43    this.$inputor = $inputor;
     44    this.domInputor = this.$inputor[0];
     45  }
     46
     47  EditableCaret.prototype.setPos = function(pos) {
     48    return this.domInputor;
     49  };
     50
     51  EditableCaret.prototype.getIEPosition = function() {
     52    return this.getPosition();
     53  };
     54
     55  EditableCaret.prototype.getPosition = function() {
     56    var inputor_offset, offset;
     57    offset = this.getOffset();
     58    inputor_offset = this.$inputor.offset();
     59    offset.left -= inputor_offset.left;
     60    offset.top -= inputor_offset.top;
     61    return offset;
     62  };
     63
     64  EditableCaret.prototype.getOldIEPos = function() {
     65    var preCaretTextRange, textRange;
     66    textRange = oDocument.selection.createRange();
     67    preCaretTextRange = oDocument.body.createTextRange();
     68    preCaretTextRange.moveToElementText(this.domInputor);
     69    preCaretTextRange.setEndPoint("EndToEnd", textRange);
     70    return preCaretTextRange.text.length;
     71  };
     72
     73  EditableCaret.prototype.getPos = function() {
     74    var clonedRange, pos, range;
     75    if (range = this.range()) {
     76      clonedRange = range.cloneRange();
     77      clonedRange.selectNodeContents(this.domInputor);
     78      clonedRange.setEnd(range.endContainer, range.endOffset);
     79      pos = clonedRange.toString().length;
     80      clonedRange.detach();
     81      return pos;
     82    } else if (oDocument.selection) {
     83      return this.getOldIEPos();
     84    }
     85  };
     86
     87  EditableCaret.prototype.getOldIEOffset = function() {
     88    var range, rect;
     89    range = oDocument.selection.createRange().duplicate();
     90    range.moveStart("character", -1);
     91    rect = range.getBoundingClientRect();
     92    return {
     93      height: rect.bottom - rect.top,
     94      left: rect.left,
     95      top: rect.top
     96    };
     97  };
     98
     99  EditableCaret.prototype.getOffset = function(pos) {
     100    var clonedRange, offset, range, rect, shadowCaret;
     101    if (oWindow.getSelection && (range = this.range())) {
     102      if (range.endOffset - 1 > 0 && range.endContainer === !this.domInputor) {
     103        clonedRange = range.cloneRange();
     104        clonedRange.setStart(range.endContainer, range.endOffset - 1);
     105        clonedRange.setEnd(range.endContainer, range.endOffset);
     106        rect = clonedRange.getBoundingClientRect();
     107        offset = {
     108          height: rect.height,
     109          left: rect.left + rect.width,
     110          top: rect.top
     111        };
     112        clonedRange.detach();
    37113      }
    38 
    39       EditableCaret.prototype.setPos = function(pos) {
    40         return this.domInputor;
    41       };
    42 
    43       EditableCaret.prototype.getIEPosition = function() {
    44         return this.getPosition();
    45       };
    46 
    47       EditableCaret.prototype.getPosition = function() {
    48         var inputor_offset, offset;
    49         offset = this.getOffset();
    50         inputor_offset = this.$inputor.offset();
    51         offset.left -= inputor_offset.left;
    52         offset.top -= inputor_offset.top;
    53         return offset;
    54       };
    55 
    56       EditableCaret.prototype.getOldIEPos = function() {
    57         var preCaretTextRange, textRange;
    58         textRange = oDocument.selection.createRange();
    59         preCaretTextRange = oDocument.body.createTextRange();
    60         preCaretTextRange.moveToElementText(this.domInputor);
    61         preCaretTextRange.setEndPoint("EndToEnd", textRange);
    62         return preCaretTextRange.text.length;
    63       };
    64 
    65       EditableCaret.prototype.getPos = function() {
    66         var clonedRange, pos, range;
    67         if (range = this.range()) {
    68           clonedRange = range.cloneRange();
    69           clonedRange.selectNodeContents(this.domInputor);
    70           clonedRange.setEnd(range.endContainer, range.endOffset);
    71           pos = clonedRange.toString().length;
    72           clonedRange.detach();
    73           return pos;
    74         } else if (oDocument.selection) {
    75           return this.getOldIEPos();
    76         }
    77       };
    78 
    79       EditableCaret.prototype.getOldIEOffset = function() {
    80         var range, rect;
    81         range = oDocument.selection.createRange().duplicate();
    82         range.moveStart("character", -1);
    83         rect = range.getBoundingClientRect();
    84         return {
    85           height: rect.bottom - rect.top,
     114      if (!offset || (offset != null ? offset.height : void 0) === 0) {
     115        clonedRange = range.cloneRange();
     116        shadowCaret = $(oDocument.createTextNode("|"));
     117        clonedRange.insertNode(shadowCaret[0]);
     118        clonedRange.selectNode(shadowCaret[0]);
     119        rect = clonedRange.getBoundingClientRect();
     120        offset = {
     121          height: rect.height,
    86122          left: rect.left,
    87123          top: rect.top
    88124        };
     125        shadowCaret.remove();
     126        clonedRange.detach();
     127      }
     128    } else if (oDocument.selection) {
     129      offset = this.getOldIEOffset();
     130    }
     131    if (offset) {
     132      offset.top += $(oWindow).scrollTop();
     133      offset.left += $(oWindow).scrollLeft();
     134    }
     135    return offset;
     136  };
     137
     138  EditableCaret.prototype.range = function() {
     139    var sel;
     140    if (!oWindow.getSelection) {
     141      return;
     142    }
     143    sel = oWindow.getSelection();
     144    if (sel.rangeCount > 0) {
     145      return sel.getRangeAt(0);
     146    } else {
     147      return null;
     148    }
     149  };
     150
     151  return EditableCaret;
     152
     153})();
     154
     155InputCaret = (function() {
     156  function InputCaret($inputor) {
     157    this.$inputor = $inputor;
     158    this.domInputor = this.$inputor[0];
     159  }
     160
     161  InputCaret.prototype.getIEPos = function() {
     162    var endRange, inputor, len, normalizedValue, pos, range, textInputRange;
     163    inputor = this.domInputor;
     164    range = oDocument.selection.createRange();
     165    pos = 0;
     166    if (range && range.parentElement() === inputor) {
     167      normalizedValue = inputor.value.replace(/\r\n/g, "\n");
     168      len = normalizedValue.length;
     169      textInputRange = inputor.createTextRange();
     170      textInputRange.moveToBookmark(range.getBookmark());
     171      endRange = inputor.createTextRange();
     172      endRange.collapse(false);
     173      if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
     174        pos = len;
     175      } else {
     176        pos = -textInputRange.moveStart("character", -len);
     177      }
     178    }
     179    return pos;
     180  };
     181
     182  InputCaret.prototype.getPos = function() {
     183    if (oDocument.selection) {
     184      return this.getIEPos();
     185    } else {
     186      return this.domInputor.selectionStart;
     187    }
     188  };
     189
     190  InputCaret.prototype.setPos = function(pos) {
     191    var inputor, range;
     192    inputor = this.domInputor;
     193    if (oDocument.selection) {
     194      range = inputor.createTextRange();
     195      range.move("character", pos);
     196      range.select();
     197    } else if (inputor.setSelectionRange) {
     198      inputor.setSelectionRange(pos, pos);
     199    }
     200    return inputor;
     201  };
     202
     203  InputCaret.prototype.getIEOffset = function(pos) {
     204    var h, textRange, x, y;
     205    textRange = this.domInputor.createTextRange();
     206    pos || (pos = this.getPos());
     207    textRange.move('character', pos);
     208    x = textRange.boundingLeft;
     209    y = textRange.boundingTop;
     210    h = textRange.boundingHeight;
     211    return {
     212      left: x,
     213      top: y,
     214      height: h
     215    };
     216  };
     217
     218  InputCaret.prototype.getOffset = function(pos) {
     219    var $inputor, offset, position;
     220    $inputor = this.$inputor;
     221    if (oDocument.selection) {
     222      offset = this.getIEOffset(pos);
     223      offset.top += $(oWindow).scrollTop() + $inputor.scrollTop();
     224      offset.left += $(oWindow).scrollLeft() + $inputor.scrollLeft();
     225      return offset;
     226    } else {
     227      offset = $inputor.offset();
     228      position = this.getPosition(pos);
     229      return offset = {
     230        left: offset.left + position.left - $inputor.scrollLeft(),
     231        top: offset.top + position.top - $inputor.scrollTop(),
     232        height: position.height
    89233      };
    90 
    91       EditableCaret.prototype.getOffset = function(pos) {
    92         var clonedRange, offset, range, rect, shadowCaret;
    93         if (oWindow.getSelection && (range = this.range())) {
    94           if (range.endOffset - 1 > 0 && range.endContainer === !this.domInputor) {
    95             clonedRange = range.cloneRange();
    96             clonedRange.setStart(range.endContainer, range.endOffset - 1);
    97             clonedRange.setEnd(range.endContainer, range.endOffset);
    98             rect = clonedRange.getBoundingClientRect();
    99             offset = {
    100               height: rect.height,
    101               left: rect.left + rect.width,
    102               top: rect.top
    103             };
    104             clonedRange.detach();
    105           }
    106           if (!offset || (offset != null ? offset.height : void 0) === 0) {
    107             clonedRange = range.cloneRange();
    108             shadowCaret = $(oDocument.createTextNode("|"));
    109             clonedRange.insertNode(shadowCaret[0]);
    110             clonedRange.selectNode(shadowCaret[0]);
    111             rect = clonedRange.getBoundingClientRect();
    112             offset = {
    113               height: rect.height,
    114               left: rect.left,
    115               top: rect.top
    116             };
    117             shadowCaret.remove();
    118             clonedRange.detach();
    119           }
    120         } else if (oDocument.selection) {
    121           offset = this.getOldIEOffset();
    122         }
    123         if (offset) {
    124           offset.top += $(oWindow).scrollTop();
    125           offset.left += $(oWindow).scrollLeft();
    126         }
    127         return offset;
    128       };
    129 
    130       EditableCaret.prototype.range = function() {
    131         var sel;
    132         if (!oWindow.getSelection) {
    133           return;
    134         }
    135         sel = oWindow.getSelection();
    136         if (sel.rangeCount > 0) {
    137           return sel.getRangeAt(0);
    138         } else {
    139           return null;
    140         }
    141       };
    142 
    143       return EditableCaret;
    144 
    145     })();
    146     InputCaret = (function() {
    147       function InputCaret($inputor) {
    148         this.$inputor = $inputor;
    149         this.domInputor = this.$inputor[0];
     234    }
     235  };
     236
     237  InputCaret.prototype.getPosition = function(pos) {
     238    var $inputor, at_rect, end_range, format, html, mirror, start_range;
     239    $inputor = this.$inputor;
     240    format = function(value) {
     241      value = value.replace(/<|>|`|"|&/g, '?').replace(/\r\n|\r|\n/g, "<br/>");
     242      if (/firefox/i.test(navigator.userAgent)) {
     243        value = value.replace(/\s/g, '&nbsp;');
    150244      }
    151 
    152       InputCaret.prototype.getIEPos = function() {
    153         var endRange, inputor, len, normalizedValue, pos, range, textInputRange;
    154         inputor = this.domInputor;
    155         range = oDocument.selection.createRange();
    156         pos = 0;
    157         if (range && range.parentElement() === inputor) {
    158           normalizedValue = inputor.value.replace(/\r\n/g, "\n");
    159           len = normalizedValue.length;
    160           textInputRange = inputor.createTextRange();
    161           textInputRange.moveToBookmark(range.getBookmark());
    162           endRange = inputor.createTextRange();
    163           endRange.collapse(false);
    164           if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
    165             pos = len;
    166           } else {
    167             pos = -textInputRange.moveStart("character", -len);
    168           }
    169         }
    170         return pos;
    171       };
    172 
    173       InputCaret.prototype.getPos = function() {
    174         if (oDocument.selection) {
    175           return this.getIEPos();
    176         } else {
    177           return this.domInputor.selectionStart;
    178         }
    179       };
    180 
    181       InputCaret.prototype.setPos = function(pos) {
    182         var inputor, range;
    183         inputor = this.domInputor;
    184         if (oDocument.selection) {
    185           range = inputor.createTextRange();
    186           range.move("character", pos);
    187           range.select();
    188         } else if (inputor.setSelectionRange) {
    189           inputor.setSelectionRange(pos, pos);
    190         }
    191         return inputor;
    192       };
    193 
    194       InputCaret.prototype.getIEOffset = function(pos) {
    195         var h, textRange, x, y;
    196         textRange = this.domInputor.createTextRange();
    197         pos || (pos = this.getPos());
    198         textRange.move('character', pos);
    199         x = textRange.boundingLeft;
    200         y = textRange.boundingTop;
    201         h = textRange.boundingHeight;
    202         return {
    203           left: x,
    204           top: y,
    205           height: h
    206         };
    207       };
    208 
    209       InputCaret.prototype.getOffset = function(pos) {
    210         var $inputor, offset, position;
    211         $inputor = this.$inputor;
    212         if (oDocument.selection) {
    213           offset = this.getIEOffset(pos);
    214           offset.top += $(oWindow).scrollTop() + $inputor.scrollTop();
    215           offset.left += $(oWindow).scrollLeft() + $inputor.scrollLeft();
    216           return offset;
    217         } else {
    218           offset = $inputor.offset();
    219           position = this.getPosition(pos);
    220           return offset = {
    221             left: offset.left + position.left - $inputor.scrollLeft(),
    222             top: offset.top + position.top - $inputor.scrollTop(),
    223             height: position.height
    224           };
    225         }
    226       };
    227 
    228       InputCaret.prototype.getPosition = function(pos) {
    229         var $inputor, at_rect, end_range, format, html, mirror, start_range;
    230         $inputor = this.$inputor;
    231         format = function(value) {
    232           return $('<div></div>').text(value).html().replace(/\r\n|\r|\n/g, "<br/>").replace(/\s/g, "&nbsp;");
    233         };
    234         if (pos === void 0) {
    235           pos = this.getPos();
    236         }
    237         start_range = $inputor.val().slice(0, pos);
    238         end_range = $inputor.val().slice(pos);
    239         html = "<span style='position: relative; display: inline;'>" + format(start_range) + "</span>";
    240         html += "<span id='caret' style='position: relative; display: inline;'>|</span>";
    241         html += "<span style='position: relative; display: inline;'>" + format(end_range) + "</span>";
    242         mirror = new Mirror($inputor);
    243         return at_rect = mirror.create(html).rect();
    244       };
    245 
    246       InputCaret.prototype.getIEPosition = function(pos) {
    247         var h, inputorOffset, offset, x, y;
    248         offset = this.getIEOffset(pos);
    249         inputorOffset = this.$inputor.offset();
    250         x = offset.left - inputorOffset.left;
    251         y = offset.top - inputorOffset.top;
    252         h = offset.height;
    253         return {
    254           left: x,
    255           top: y,
    256           height: h
    257         };
    258       };
    259 
    260       return InputCaret;
    261 
    262     })();
    263     Mirror = (function() {
    264       Mirror.prototype.css_attr = ["borderBottomWidth", "borderLeftWidth", "borderRightWidth", "borderTopStyle", "borderRightStyle", "borderBottomStyle", "borderLeftStyle", "borderTopWidth", "boxSizing", "fontFamily", "fontSize", "fontWeight", "height", "letterSpacing", "lineHeight", "marginBottom", "marginLeft", "marginRight", "marginTop", "outlineWidth", "overflow", "overflowX", "overflowY", "paddingBottom", "paddingLeft", "paddingRight", "paddingTop", "textAlign", "textOverflow", "textTransform", "whiteSpace", "wordBreak", "wordWrap"];
    265 
    266       function Mirror($inputor) {
    267         this.$inputor = $inputor;
    268       }
    269 
    270       Mirror.prototype.mirrorCss = function() {
    271         var css,
    272           _this = this;
    273         css = {
    274           position: 'absolute',
    275           left: -9999,
    276           top: 0,
    277           zIndex: -20000
    278         };
    279         if (this.$inputor.prop('tagName') === 'TEXTAREA') {
    280           this.css_attr.push('width');
    281         }
    282         $.each(this.css_attr, function(i, p) {
    283           return css[p] = _this.$inputor.css(p);
    284         });
    285         return css;
    286       };
    287 
    288       Mirror.prototype.create = function(html) {
    289         this.$mirror = $('<div></div>');
    290         this.$mirror.css(this.mirrorCss());
    291         this.$mirror.html(html);
    292         this.$inputor.after(this.$mirror);
    293         return this;
    294       };
    295 
    296       Mirror.prototype.rect = function() {
    297         var $flag, pos, rect;
    298         $flag = this.$mirror.find("#caret");
    299         pos = $flag.position();
    300         rect = {
    301           left: pos.left,
    302           top: pos.top,
    303           height: $flag.height()
    304         };
    305         this.$mirror.remove();
    306         return rect;
    307       };
    308 
    309       return Mirror;
    310 
    311     })();
    312     Utils = {
    313       contentEditable: function($inputor) {
    314         return !!($inputor[0].contentEditable && $inputor[0].contentEditable === 'true');
    315       }
    316     };
    317     methods = {
    318       pos: function(pos) {
    319         if (pos || pos === 0) {
    320           return this.setPos(pos);
    321         } else {
    322           return this.getPos();
    323         }
    324       },
    325       position: function(pos) {
    326         if (oDocument.selection) {
    327           return this.getIEPosition(pos);
    328         } else {
    329           return this.getPosition(pos);
    330         }
    331       },
    332       offset: function(pos) {
    333         var offset;
    334         offset = this.getOffset(pos);
    335         return offset;
    336       }
    337     };
    338     oDocument = null;
    339     oWindow = null;
    340     oFrame = null;
    341     setContextBy = function(settings) {
    342       var iframe;
    343       if (iframe = settings != null ? settings.iframe : void 0) {
    344         oFrame = iframe;
    345         oWindow = iframe.contentWindow;
    346         return oDocument = iframe.contentDocument || oWindow.document;
    347       } else {
    348         oFrame = void 0;
    349         oWindow = window;
    350         return oDocument = document;
    351       }
    352     };
    353     discoveryIframeOf = function($dom) {
    354       var error;
    355       oDocument = $dom[0].ownerDocument;
    356       oWindow = oDocument.defaultView || oDocument.parentWindow;
    357       try {
    358         return oFrame = oWindow.frameElement;
    359       } catch (_error) {
    360         error = _error;
    361       }
    362     };
    363     $.fn.caret = function(method, value, settings) {
    364       var caret;
    365       if (methods[method]) {
    366         if ($.isPlainObject(value)) {
    367           setContextBy(value);
    368           value = void 0;
    369         } else {
    370           setContextBy(settings);
    371         }
    372         caret = Utils.contentEditable(this) ? new EditableCaret(this) : new InputCaret(this);
    373         return methods[method].apply(caret, [value]);
    374       } else {
    375         return $.error("Method " + method + " does not exist on jQuery.caret");
    376       }
    377     };
    378     $.fn.caret.EditableCaret = EditableCaret;
    379     $.fn.caret.InputCaret = InputCaret;
    380     $.fn.caret.Utils = Utils;
    381     return $.fn.caret.apis = methods;
    382   });
    383 
    384 }).call(this);
     245      return value;
     246    };
     247    if (pos === void 0) {
     248      pos = this.getPos();
     249    }
     250    start_range = $inputor.val().slice(0, pos);
     251    end_range = $inputor.val().slice(pos);
     252    html = "<span style='position: relative; display: inline;'>" + format(start_range) + "</span>";
     253    html += "<span id='caret' style='position: relative; display: inline;'>|</span>";
     254    html += "<span style='position: relative; display: inline;'>" + format(end_range) + "</span>";
     255    mirror = new Mirror($inputor);
     256    return at_rect = mirror.create(html).rect();
     257  };
     258
     259  InputCaret.prototype.getIEPosition = function(pos) {
     260    var h, inputorOffset, offset, x, y;
     261    offset = this.getIEOffset(pos);
     262    inputorOffset = this.$inputor.offset();
     263    x = offset.left - inputorOffset.left;
     264    y = offset.top - inputorOffset.top;
     265    h = offset.height;
     266    return {
     267      left: x,
     268      top: y,
     269      height: h
     270    };
     271  };
     272
     273  return InputCaret;
     274
     275})();
     276
     277Mirror = (function() {
     278  Mirror.prototype.css_attr = ["borderBottomWidth", "borderLeftWidth", "borderRightWidth", "borderTopStyle", "borderRightStyle", "borderBottomStyle", "borderLeftStyle", "borderTopWidth", "boxSizing", "fontFamily", "fontSize", "fontWeight", "height", "letterSpacing", "lineHeight", "marginBottom", "marginLeft", "marginRight", "marginTop", "outlineWidth", "overflow", "overflowX", "overflowY", "paddingBottom", "paddingLeft", "paddingRight", "paddingTop", "textAlign", "textOverflow", "textTransform", "whiteSpace", "wordBreak", "wordWrap"];
     279
     280  function Mirror($inputor) {
     281    this.$inputor = $inputor;
     282  }
     283
     284  Mirror.prototype.mirrorCss = function() {
     285    var css,
     286      _this = this;
     287    css = {
     288      position: 'absolute',
     289      left: -9999,
     290      top: 0,
     291      zIndex: -20000
     292    };
     293    if (this.$inputor.prop('tagName') === 'TEXTAREA') {
     294      this.css_attr.push('width');
     295    }
     296    $.each(this.css_attr, function(i, p) {
     297      return css[p] = _this.$inputor.css(p);
     298    });
     299    return css;
     300  };
     301
     302  Mirror.prototype.create = function(html) {
     303    this.$mirror = $('<div></div>');
     304    this.$mirror.css(this.mirrorCss());
     305    this.$mirror.html(html);
     306    this.$inputor.after(this.$mirror);
     307    return this;
     308  };
     309
     310  Mirror.prototype.rect = function() {
     311    var $flag, pos, rect;
     312    $flag = this.$mirror.find("#caret");
     313    pos = $flag.position();
     314    rect = {
     315      left: pos.left,
     316      top: pos.top,
     317      height: $flag.height()
     318    };
     319    this.$mirror.remove();
     320    return rect;
     321  };
     322
     323  return Mirror;
     324
     325})();
     326
     327Utils = {
     328  contentEditable: function($inputor) {
     329    return !!($inputor[0].contentEditable && $inputor[0].contentEditable === 'true');
     330  }
     331};
     332
     333methods = {
     334  pos: function(pos) {
     335    if (pos || pos === 0) {
     336      return this.setPos(pos);
     337    } else {
     338      return this.getPos();
     339    }
     340  },
     341  position: function(pos) {
     342    if (oDocument.selection) {
     343      return this.getIEPosition(pos);
     344    } else {
     345      return this.getPosition(pos);
     346    }
     347  },
     348  offset: function(pos) {
     349    var offset;
     350    offset = this.getOffset(pos);
     351    return offset;
     352  }
     353};
     354
     355oDocument = null;
     356
     357oWindow = null;
     358
     359oFrame = null;
     360
     361setContextBy = function(settings) {
     362  var iframe;
     363  if (iframe = settings != null ? settings.iframe : void 0) {
     364    oFrame = iframe;
     365    oWindow = iframe.contentWindow;
     366    return oDocument = iframe.contentDocument || oWindow.document;
     367  } else {
     368    oFrame = void 0;
     369    oWindow = window;
     370    return oDocument = document;
     371  }
     372};
     373
     374discoveryIframeOf = function($dom) {
     375  var error;
     376  oDocument = $dom[0].ownerDocument;
     377  oWindow = oDocument.defaultView || oDocument.parentWindow;
     378  try {
     379    return oFrame = oWindow.frameElement;
     380  } catch (_error) {
     381    error = _error;
     382  }
     383};
     384
     385$.fn.caret = function(method, value, settings) {
     386  var caret;
     387  if (methods[method]) {
     388    if ($.isPlainObject(value)) {
     389      setContextBy(value);
     390      value = void 0;
     391    } else {
     392      setContextBy(settings);
     393    }
     394    caret = Utils.contentEditable(this) ? new EditableCaret(this) : new InputCaret(this);
     395    return methods[method].apply(caret, [value]);
     396  } else {
     397    return $.error("Method " + method + " does not exist on jQuery.caret");
     398  }
     399};
     400
     401$.fn.caret.EditableCaret = EditableCaret;
     402
     403$.fn.caret.InputCaret = InputCaret;
     404
     405$.fn.caret.Utils = Utils;
     406
     407$.fn.caret.apis = methods;
     408
     409
     410}));
Note: See TracChangeset for help on using the changeset viewer.