"use strict"; /** * This is the plugin for syncing clicks between browsers * @type {string} */ var EVENT_NAME = "input:text"; var OPT_PATH = "ghostMode.forms.inputs"; exports.canEmitEvents = true; /** * @param {BrowserSync} bs * @param eventManager */ exports.init = function (bs, eventManager) { eventManager.addEvent(document.body, "keyup", exports.browserEvent(bs)); bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager)); }; /** * @param {BrowserSync} bs * @returns {Function} */ exports.browserEvent = function (bs) { return function (event) { var elem = event.target || event.srcElement; var data; if (exports.canEmitEvents) { if (elem.tagName === "INPUT" || elem.tagName === "TEXTAREA") { data = bs.utils.getElementData(elem); data.value = elem.value; bs.socket.emit(EVENT_NAME, data); } } else { exports.canEmitEvents = true; } }; }; /** * @param {BrowserSync} bs * @returns {Function} */ exports.socketEvent = function (bs) { return function (data) { if (bs.canSync(data, OPT_PATH)) { var elem = bs.utils.getSingleElement(data.tagName, data.index); if (elem) { elem.value = data.value; return elem; } } return false; }; };