Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-inclu.../js/dist
File: compose.js
}
[1500] Fix | Delete
[1501] Fix | Delete
function _belongsTo(element, ancestor) {
[1502] Fix | Delete
if (element === null || element === document) {
[1503] Fix | Delete
return false;
[1504] Fix | Delete
}
[1505] Fix | Delete
[1506] Fix | Delete
if (element === ancestor) {
[1507] Fix | Delete
return true;
[1508] Fix | Delete
}
[1509] Fix | Delete
[1510] Fix | Delete
return _belongsTo(element.parentNode, ancestor);
[1511] Fix | Delete
}
[1512] Fix | Delete
[1513] Fix | Delete
function Mousetrap(targetElement) {
[1514] Fix | Delete
var self = this;
[1515] Fix | Delete
[1516] Fix | Delete
targetElement = targetElement || document;
[1517] Fix | Delete
[1518] Fix | Delete
if (!(self instanceof Mousetrap)) {
[1519] Fix | Delete
return new Mousetrap(targetElement);
[1520] Fix | Delete
}
[1521] Fix | Delete
[1522] Fix | Delete
/**
[1523] Fix | Delete
* element to attach key events to
[1524] Fix | Delete
*
[1525] Fix | Delete
* @type {Element}
[1526] Fix | Delete
*/
[1527] Fix | Delete
self.target = targetElement;
[1528] Fix | Delete
[1529] Fix | Delete
/**
[1530] Fix | Delete
* a list of all the callbacks setup via Mousetrap.bind()
[1531] Fix | Delete
*
[1532] Fix | Delete
* @type {Object}
[1533] Fix | Delete
*/
[1534] Fix | Delete
self._callbacks = {};
[1535] Fix | Delete
[1536] Fix | Delete
/**
[1537] Fix | Delete
* direct map of string combinations to callbacks used for trigger()
[1538] Fix | Delete
*
[1539] Fix | Delete
* @type {Object}
[1540] Fix | Delete
*/
[1541] Fix | Delete
self._directMap = {};
[1542] Fix | Delete
[1543] Fix | Delete
/**
[1544] Fix | Delete
* keeps track of what level each sequence is at since multiple
[1545] Fix | Delete
* sequences can start out with the same sequence
[1546] Fix | Delete
*
[1547] Fix | Delete
* @type {Object}
[1548] Fix | Delete
*/
[1549] Fix | Delete
var _sequenceLevels = {};
[1550] Fix | Delete
[1551] Fix | Delete
/**
[1552] Fix | Delete
* variable to store the setTimeout call
[1553] Fix | Delete
*
[1554] Fix | Delete
* @type {null|number}
[1555] Fix | Delete
*/
[1556] Fix | Delete
var _resetTimer;
[1557] Fix | Delete
[1558] Fix | Delete
/**
[1559] Fix | Delete
* temporary state where we will ignore the next keyup
[1560] Fix | Delete
*
[1561] Fix | Delete
* @type {boolean|string}
[1562] Fix | Delete
*/
[1563] Fix | Delete
var _ignoreNextKeyup = false;
[1564] Fix | Delete
[1565] Fix | Delete
/**
[1566] Fix | Delete
* temporary state where we will ignore the next keypress
[1567] Fix | Delete
*
[1568] Fix | Delete
* @type {boolean}
[1569] Fix | Delete
*/
[1570] Fix | Delete
var _ignoreNextKeypress = false;
[1571] Fix | Delete
[1572] Fix | Delete
/**
[1573] Fix | Delete
* are we currently inside of a sequence?
[1574] Fix | Delete
* type of action ("keyup" or "keydown" or "keypress") or false
[1575] Fix | Delete
*
[1576] Fix | Delete
* @type {boolean|string}
[1577] Fix | Delete
*/
[1578] Fix | Delete
var _nextExpectedAction = false;
[1579] Fix | Delete
[1580] Fix | Delete
/**
[1581] Fix | Delete
* resets all sequence counters except for the ones passed in
[1582] Fix | Delete
*
[1583] Fix | Delete
* @param {Object} doNotReset
[1584] Fix | Delete
* @returns void
[1585] Fix | Delete
*/
[1586] Fix | Delete
function _resetSequences(doNotReset) {
[1587] Fix | Delete
doNotReset = doNotReset || {};
[1588] Fix | Delete
[1589] Fix | Delete
var activeSequences = false,
[1590] Fix | Delete
key;
[1591] Fix | Delete
[1592] Fix | Delete
for (key in _sequenceLevels) {
[1593] Fix | Delete
if (doNotReset[key]) {
[1594] Fix | Delete
activeSequences = true;
[1595] Fix | Delete
continue;
[1596] Fix | Delete
}
[1597] Fix | Delete
_sequenceLevels[key] = 0;
[1598] Fix | Delete
}
[1599] Fix | Delete
[1600] Fix | Delete
if (!activeSequences) {
[1601] Fix | Delete
_nextExpectedAction = false;
[1602] Fix | Delete
}
[1603] Fix | Delete
}
[1604] Fix | Delete
[1605] Fix | Delete
/**
[1606] Fix | Delete
* finds all callbacks that match based on the keycode, modifiers,
[1607] Fix | Delete
* and action
[1608] Fix | Delete
*
[1609] Fix | Delete
* @param {string} character
[1610] Fix | Delete
* @param {Array} modifiers
[1611] Fix | Delete
* @param {Event|Object} e
[1612] Fix | Delete
* @param {string=} sequenceName - name of the sequence we are looking for
[1613] Fix | Delete
* @param {string=} combination
[1614] Fix | Delete
* @param {number=} level
[1615] Fix | Delete
* @returns {Array}
[1616] Fix | Delete
*/
[1617] Fix | Delete
function _getMatches(character, modifiers, e, sequenceName, combination, level) {
[1618] Fix | Delete
var i;
[1619] Fix | Delete
var callback;
[1620] Fix | Delete
var matches = [];
[1621] Fix | Delete
var action = e.type;
[1622] Fix | Delete
[1623] Fix | Delete
// if there are no events related to this keycode
[1624] Fix | Delete
if (!self._callbacks[character]) {
[1625] Fix | Delete
return [];
[1626] Fix | Delete
}
[1627] Fix | Delete
[1628] Fix | Delete
// if a modifier key is coming up on its own we should allow it
[1629] Fix | Delete
if (action == 'keyup' && _isModifier(character)) {
[1630] Fix | Delete
modifiers = [character];
[1631] Fix | Delete
}
[1632] Fix | Delete
[1633] Fix | Delete
// loop through all callbacks for the key that was pressed
[1634] Fix | Delete
// and see if any of them match
[1635] Fix | Delete
for (i = 0; i < self._callbacks[character].length; ++i) {
[1636] Fix | Delete
callback = self._callbacks[character][i];
[1637] Fix | Delete
[1638] Fix | Delete
// if a sequence name is not specified, but this is a sequence at
[1639] Fix | Delete
// the wrong level then move onto the next match
[1640] Fix | Delete
if (!sequenceName && callback.seq && _sequenceLevels[callback.seq] != callback.level) {
[1641] Fix | Delete
continue;
[1642] Fix | Delete
}
[1643] Fix | Delete
[1644] Fix | Delete
// if the action we are looking for doesn't match the action we got
[1645] Fix | Delete
// then we should keep going
[1646] Fix | Delete
if (action != callback.action) {
[1647] Fix | Delete
continue;
[1648] Fix | Delete
}
[1649] Fix | Delete
[1650] Fix | Delete
// if this is a keypress event and the meta key and control key
[1651] Fix | Delete
// are not pressed that means that we need to only look at the
[1652] Fix | Delete
// character, otherwise check the modifiers as well
[1653] Fix | Delete
//
[1654] Fix | Delete
// chrome will not fire a keypress if meta or control is down
[1655] Fix | Delete
// safari will fire a keypress if meta or meta+shift is down
[1656] Fix | Delete
// firefox will fire a keypress if meta or control is down
[1657] Fix | Delete
if ((action == 'keypress' && !e.metaKey && !e.ctrlKey) || _modifiersMatch(modifiers, callback.modifiers)) {
[1658] Fix | Delete
[1659] Fix | Delete
// when you bind a combination or sequence a second time it
[1660] Fix | Delete
// should overwrite the first one. if a sequenceName or
[1661] Fix | Delete
// combination is specified in this call it does just that
[1662] Fix | Delete
//
[1663] Fix | Delete
// @todo make deleting its own method?
[1664] Fix | Delete
var deleteCombo = !sequenceName && callback.combo == combination;
[1665] Fix | Delete
var deleteSequence = sequenceName && callback.seq == sequenceName && callback.level == level;
[1666] Fix | Delete
if (deleteCombo || deleteSequence) {
[1667] Fix | Delete
self._callbacks[character].splice(i, 1);
[1668] Fix | Delete
}
[1669] Fix | Delete
[1670] Fix | Delete
matches.push(callback);
[1671] Fix | Delete
}
[1672] Fix | Delete
}
[1673] Fix | Delete
[1674] Fix | Delete
return matches;
[1675] Fix | Delete
}
[1676] Fix | Delete
[1677] Fix | Delete
/**
[1678] Fix | Delete
* actually calls the callback function
[1679] Fix | Delete
*
[1680] Fix | Delete
* if your callback function returns false this will use the jquery
[1681] Fix | Delete
* convention - prevent default and stop propogation on the event
[1682] Fix | Delete
*
[1683] Fix | Delete
* @param {Function} callback
[1684] Fix | Delete
* @param {Event} e
[1685] Fix | Delete
* @returns void
[1686] Fix | Delete
*/
[1687] Fix | Delete
function _fireCallback(callback, e, combo, sequence) {
[1688] Fix | Delete
[1689] Fix | Delete
// if this event should not happen stop here
[1690] Fix | Delete
if (self.stopCallback(e, e.target || e.srcElement, combo, sequence)) {
[1691] Fix | Delete
return;
[1692] Fix | Delete
}
[1693] Fix | Delete
[1694] Fix | Delete
if (callback(e, combo) === false) {
[1695] Fix | Delete
_preventDefault(e);
[1696] Fix | Delete
_stopPropagation(e);
[1697] Fix | Delete
}
[1698] Fix | Delete
}
[1699] Fix | Delete
[1700] Fix | Delete
/**
[1701] Fix | Delete
* handles a character key event
[1702] Fix | Delete
*
[1703] Fix | Delete
* @param {string} character
[1704] Fix | Delete
* @param {Array} modifiers
[1705] Fix | Delete
* @param {Event} e
[1706] Fix | Delete
* @returns void
[1707] Fix | Delete
*/
[1708] Fix | Delete
self._handleKey = function(character, modifiers, e) {
[1709] Fix | Delete
var callbacks = _getMatches(character, modifiers, e);
[1710] Fix | Delete
var i;
[1711] Fix | Delete
var doNotReset = {};
[1712] Fix | Delete
var maxLevel = 0;
[1713] Fix | Delete
var processedSequenceCallback = false;
[1714] Fix | Delete
[1715] Fix | Delete
// Calculate the maxLevel for sequences so we can only execute the longest callback sequence
[1716] Fix | Delete
for (i = 0; i < callbacks.length; ++i) {
[1717] Fix | Delete
if (callbacks[i].seq) {
[1718] Fix | Delete
maxLevel = Math.max(maxLevel, callbacks[i].level);
[1719] Fix | Delete
}
[1720] Fix | Delete
}
[1721] Fix | Delete
[1722] Fix | Delete
// loop through matching callbacks for this key event
[1723] Fix | Delete
for (i = 0; i < callbacks.length; ++i) {
[1724] Fix | Delete
[1725] Fix | Delete
// fire for all sequence callbacks
[1726] Fix | Delete
// this is because if for example you have multiple sequences
[1727] Fix | Delete
// bound such as "g i" and "g t" they both need to fire the
[1728] Fix | Delete
// callback for matching g cause otherwise you can only ever
[1729] Fix | Delete
// match the first one
[1730] Fix | Delete
if (callbacks[i].seq) {
[1731] Fix | Delete
[1732] Fix | Delete
// only fire callbacks for the maxLevel to prevent
[1733] Fix | Delete
// subsequences from also firing
[1734] Fix | Delete
//
[1735] Fix | Delete
// for example 'a option b' should not cause 'option b' to fire
[1736] Fix | Delete
// even though 'option b' is part of the other sequence
[1737] Fix | Delete
//
[1738] Fix | Delete
// any sequences that do not match here will be discarded
[1739] Fix | Delete
// below by the _resetSequences call
[1740] Fix | Delete
if (callbacks[i].level != maxLevel) {
[1741] Fix | Delete
continue;
[1742] Fix | Delete
}
[1743] Fix | Delete
[1744] Fix | Delete
processedSequenceCallback = true;
[1745] Fix | Delete
[1746] Fix | Delete
// keep a list of which sequences were matches for later
[1747] Fix | Delete
doNotReset[callbacks[i].seq] = 1;
[1748] Fix | Delete
_fireCallback(callbacks[i].callback, e, callbacks[i].combo, callbacks[i].seq);
[1749] Fix | Delete
continue;
[1750] Fix | Delete
}
[1751] Fix | Delete
[1752] Fix | Delete
// if there were no sequence matches but we are still here
[1753] Fix | Delete
// that means this is a regular match so we should fire that
[1754] Fix | Delete
if (!processedSequenceCallback) {
[1755] Fix | Delete
_fireCallback(callbacks[i].callback, e, callbacks[i].combo);
[1756] Fix | Delete
}
[1757] Fix | Delete
}
[1758] Fix | Delete
[1759] Fix | Delete
// if the key you pressed matches the type of sequence without
[1760] Fix | Delete
// being a modifier (ie "keyup" or "keypress") then we should
[1761] Fix | Delete
// reset all sequences that were not matched by this event
[1762] Fix | Delete
//
[1763] Fix | Delete
// this is so, for example, if you have the sequence "h a t" and you
[1764] Fix | Delete
// type "h e a r t" it does not match. in this case the "e" will
[1765] Fix | Delete
// cause the sequence to reset
[1766] Fix | Delete
//
[1767] Fix | Delete
// modifier keys are ignored because you can have a sequence
[1768] Fix | Delete
// that contains modifiers such as "enter ctrl+space" and in most
[1769] Fix | Delete
// cases the modifier key will be pressed before the next key
[1770] Fix | Delete
//
[1771] Fix | Delete
// also if you have a sequence such as "ctrl+b a" then pressing the
[1772] Fix | Delete
// "b" key will trigger a "keypress" and a "keydown"
[1773] Fix | Delete
//
[1774] Fix | Delete
// the "keydown" is expected when there is a modifier, but the
[1775] Fix | Delete
// "keypress" ends up matching the _nextExpectedAction since it occurs
[1776] Fix | Delete
// after and that causes the sequence to reset
[1777] Fix | Delete
//
[1778] Fix | Delete
// we ignore keypresses in a sequence that directly follow a keydown
[1779] Fix | Delete
// for the same character
[1780] Fix | Delete
var ignoreThisKeypress = e.type == 'keypress' && _ignoreNextKeypress;
[1781] Fix | Delete
if (e.type == _nextExpectedAction && !_isModifier(character) && !ignoreThisKeypress) {
[1782] Fix | Delete
_resetSequences(doNotReset);
[1783] Fix | Delete
}
[1784] Fix | Delete
[1785] Fix | Delete
_ignoreNextKeypress = processedSequenceCallback && e.type == 'keydown';
[1786] Fix | Delete
};
[1787] Fix | Delete
[1788] Fix | Delete
/**
[1789] Fix | Delete
* handles a keydown event
[1790] Fix | Delete
*
[1791] Fix | Delete
* @param {Event} e
[1792] Fix | Delete
* @returns void
[1793] Fix | Delete
*/
[1794] Fix | Delete
function _handleKeyEvent(e) {
[1795] Fix | Delete
[1796] Fix | Delete
// normalize e.which for key events
[1797] Fix | Delete
// @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion
[1798] Fix | Delete
if (typeof e.which !== 'number') {
[1799] Fix | Delete
e.which = e.keyCode;
[1800] Fix | Delete
}
[1801] Fix | Delete
[1802] Fix | Delete
var character = _characterFromEvent(e);
[1803] Fix | Delete
[1804] Fix | Delete
// no character found then stop
[1805] Fix | Delete
if (!character) {
[1806] Fix | Delete
return;
[1807] Fix | Delete
}
[1808] Fix | Delete
[1809] Fix | Delete
// need to use === for the character check because the character can be 0
[1810] Fix | Delete
if (e.type == 'keyup' && _ignoreNextKeyup === character) {
[1811] Fix | Delete
_ignoreNextKeyup = false;
[1812] Fix | Delete
return;
[1813] Fix | Delete
}
[1814] Fix | Delete
[1815] Fix | Delete
self.handleKey(character, _eventModifiers(e), e);
[1816] Fix | Delete
}
[1817] Fix | Delete
[1818] Fix | Delete
/**
[1819] Fix | Delete
* called to set a 1 second timeout on the specified sequence
[1820] Fix | Delete
*
[1821] Fix | Delete
* this is so after each key press in the sequence you have 1 second
[1822] Fix | Delete
* to press the next key before you have to start over
[1823] Fix | Delete
*
[1824] Fix | Delete
* @returns void
[1825] Fix | Delete
*/
[1826] Fix | Delete
function _resetSequenceTimer() {
[1827] Fix | Delete
clearTimeout(_resetTimer);
[1828] Fix | Delete
_resetTimer = setTimeout(_resetSequences, 1000);
[1829] Fix | Delete
}
[1830] Fix | Delete
[1831] Fix | Delete
/**
[1832] Fix | Delete
* binds a key sequence to an event
[1833] Fix | Delete
*
[1834] Fix | Delete
* @param {string} combo - combo specified in bind call
[1835] Fix | Delete
* @param {Array} keys
[1836] Fix | Delete
* @param {Function} callback
[1837] Fix | Delete
* @param {string=} action
[1838] Fix | Delete
* @returns void
[1839] Fix | Delete
*/
[1840] Fix | Delete
function _bindSequence(combo, keys, callback, action) {
[1841] Fix | Delete
[1842] Fix | Delete
// start off by adding a sequence level record for this combination
[1843] Fix | Delete
// and setting the level to 0
[1844] Fix | Delete
_sequenceLevels[combo] = 0;
[1845] Fix | Delete
[1846] Fix | Delete
/**
[1847] Fix | Delete
* callback to increase the sequence level for this sequence and reset
[1848] Fix | Delete
* all other sequences that were active
[1849] Fix | Delete
*
[1850] Fix | Delete
* @param {string} nextAction
[1851] Fix | Delete
* @returns {Function}
[1852] Fix | Delete
*/
[1853] Fix | Delete
function _increaseSequence(nextAction) {
[1854] Fix | Delete
return function() {
[1855] Fix | Delete
_nextExpectedAction = nextAction;
[1856] Fix | Delete
++_sequenceLevels[combo];
[1857] Fix | Delete
_resetSequenceTimer();
[1858] Fix | Delete
};
[1859] Fix | Delete
}
[1860] Fix | Delete
[1861] Fix | Delete
/**
[1862] Fix | Delete
* wraps the specified callback inside of another function in order
[1863] Fix | Delete
* to reset all sequence counters as soon as this sequence is done
[1864] Fix | Delete
*
[1865] Fix | Delete
* @param {Event} e
[1866] Fix | Delete
* @returns void
[1867] Fix | Delete
*/
[1868] Fix | Delete
function _callbackAndReset(e) {
[1869] Fix | Delete
_fireCallback(callback, e, combo);
[1870] Fix | Delete
[1871] Fix | Delete
// we should ignore the next key up if the action is key down
[1872] Fix | Delete
// or keypress. this is so if you finish a sequence and
[1873] Fix | Delete
// release the key the final key will not trigger a keyup
[1874] Fix | Delete
if (action !== 'keyup') {
[1875] Fix | Delete
_ignoreNextKeyup = _characterFromEvent(e);
[1876] Fix | Delete
}
[1877] Fix | Delete
[1878] Fix | Delete
// weird race condition if a sequence ends with the key
[1879] Fix | Delete
// another sequence begins with
[1880] Fix | Delete
setTimeout(_resetSequences, 10);
[1881] Fix | Delete
}
[1882] Fix | Delete
[1883] Fix | Delete
// loop through keys one at a time and bind the appropriate callback
[1884] Fix | Delete
// function. for any key leading up to the final one it should
[1885] Fix | Delete
// increase the sequence. after the final, it should reset all sequences
[1886] Fix | Delete
//
[1887] Fix | Delete
// if an action is specified in the original bind call then that will
[1888] Fix | Delete
// be used throughout. otherwise we will pass the action that the
[1889] Fix | Delete
// next key in the sequence should match. this allows a sequence
[1890] Fix | Delete
// to mix and match keypress and keydown events depending on which
[1891] Fix | Delete
// ones are better suited to the key provided
[1892] Fix | Delete
for (var i = 0; i < keys.length; ++i) {
[1893] Fix | Delete
var isFinal = i + 1 === keys.length;
[1894] Fix | Delete
var wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || _getKeyInfo(keys[i + 1]).action);
[1895] Fix | Delete
_bindSingle(keys[i], wrappedCallback, action, combo, i);
[1896] Fix | Delete
}
[1897] Fix | Delete
}
[1898] Fix | Delete
[1899] Fix | Delete
/**
[1900] Fix | Delete
* binds a single keyboard combination
[1901] Fix | Delete
*
[1902] Fix | Delete
* @param {string} combination
[1903] Fix | Delete
* @param {Function} callback
[1904] Fix | Delete
* @param {string=} action
[1905] Fix | Delete
* @param {string=} sequenceName - name of sequence if part of sequence
[1906] Fix | Delete
* @param {number=} level - what part of the sequence the command is
[1907] Fix | Delete
* @returns void
[1908] Fix | Delete
*/
[1909] Fix | Delete
function _bindSingle(combination, callback, action, sequenceName, level) {
[1910] Fix | Delete
[1911] Fix | Delete
// store a direct mapped reference for use with Mousetrap.trigger
[1912] Fix | Delete
self._directMap[combination + ':' + action] = callback;
[1913] Fix | Delete
[1914] Fix | Delete
// make sure multiple spaces in a row become a single space
[1915] Fix | Delete
combination = combination.replace(/\s+/g, ' ');
[1916] Fix | Delete
[1917] Fix | Delete
var sequence = combination.split(' ');
[1918] Fix | Delete
var info;
[1919] Fix | Delete
[1920] Fix | Delete
// if this pattern is a sequence of keys then run through this method
[1921] Fix | Delete
// to reprocess each pattern one key at a time
[1922] Fix | Delete
if (sequence.length > 1) {
[1923] Fix | Delete
_bindSequence(combination, sequence, callback, action);
[1924] Fix | Delete
return;
[1925] Fix | Delete
}
[1926] Fix | Delete
[1927] Fix | Delete
info = _getKeyInfo(combination, action);
[1928] Fix | Delete
[1929] Fix | Delete
// make sure to initialize array if this is the first time
[1930] Fix | Delete
// a callback is added for this key
[1931] Fix | Delete
self._callbacks[info.key] = self._callbacks[info.key] || [];
[1932] Fix | Delete
[1933] Fix | Delete
// remove an existing match if there is one
[1934] Fix | Delete
_getMatches(info.key, info.modifiers, {type: info.action}, sequenceName, combination, level);
[1935] Fix | Delete
[1936] Fix | Delete
// add this call back to the array
[1937] Fix | Delete
// if it is a sequence put it at the beginning
[1938] Fix | Delete
// if not put it at the end
[1939] Fix | Delete
//
[1940] Fix | Delete
// this is important because the way these are processed expects
[1941] Fix | Delete
// the sequence ones to come first
[1942] Fix | Delete
self._callbacks[info.key][sequenceName ? 'unshift' : 'push']({
[1943] Fix | Delete
callback: callback,
[1944] Fix | Delete
modifiers: info.modifiers,
[1945] Fix | Delete
action: info.action,
[1946] Fix | Delete
seq: sequenceName,
[1947] Fix | Delete
level: level,
[1948] Fix | Delete
combo: combination
[1949] Fix | Delete
});
[1950] Fix | Delete
}
[1951] Fix | Delete
[1952] Fix | Delete
/**
[1953] Fix | Delete
* binds multiple combinations to the same callback
[1954] Fix | Delete
*
[1955] Fix | Delete
* @param {Array} combinations
[1956] Fix | Delete
* @param {Function} callback
[1957] Fix | Delete
* @param {string|undefined} action
[1958] Fix | Delete
* @returns void
[1959] Fix | Delete
*/
[1960] Fix | Delete
self._bindMultiple = function(combinations, callback, action) {
[1961] Fix | Delete
for (var i = 0; i < combinations.length; ++i) {
[1962] Fix | Delete
_bindSingle(combinations[i], callback, action);
[1963] Fix | Delete
}
[1964] Fix | Delete
};
[1965] Fix | Delete
[1966] Fix | Delete
// start!
[1967] Fix | Delete
_addEvent(targetElement, 'keypress', _handleKeyEvent);
[1968] Fix | Delete
_addEvent(targetElement, 'keydown', _handleKeyEvent);
[1969] Fix | Delete
_addEvent(targetElement, 'keyup', _handleKeyEvent);
[1970] Fix | Delete
}
[1971] Fix | Delete
[1972] Fix | Delete
/**
[1973] Fix | Delete
* binds an event to mousetrap
[1974] Fix | Delete
*
[1975] Fix | Delete
* can be a single key, a combination of keys separated with +,
[1976] Fix | Delete
* an array of keys, or a sequence of keys separated by spaces
[1977] Fix | Delete
*
[1978] Fix | Delete
* be sure to list the modifier keys first to make sure that the
[1979] Fix | Delete
* correct key ends up getting bound (the last key in the pattern)
[1980] Fix | Delete
*
[1981] Fix | Delete
* @param {string|Array} keys
[1982] Fix | Delete
* @param {Function} callback
[1983] Fix | Delete
* @param {string=} action - 'keypress', 'keydown', or 'keyup'
[1984] Fix | Delete
* @returns void
[1985] Fix | Delete
*/
[1986] Fix | Delete
Mousetrap.prototype.bind = function(keys, callback, action) {
[1987] Fix | Delete
var self = this;
[1988] Fix | Delete
keys = keys instanceof Array ? keys : [keys];
[1989] Fix | Delete
self._bindMultiple.call(self, keys, callback, action);
[1990] Fix | Delete
return self;
[1991] Fix | Delete
};
[1992] Fix | Delete
[1993] Fix | Delete
/**
[1994] Fix | Delete
* unbinds an event to mousetrap
[1995] Fix | Delete
*
[1996] Fix | Delete
* the unbinding sets the callback function of the specified key combo
[1997] Fix | Delete
* to an empty function and deletes the corresponding key in the
[1998] Fix | Delete
* _directMap dict.
[1999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function