What is the meaning of e.fn in this code - javascript

I am looking at this javascript code from the quojs library:
(function() {
var e;
e = function() {
var e, t, n;
t = [];
e = function(t, r) {
var i;
if (!t) {
return n()
} else if (e.toType(t) === "function") {
return e(document).ready(t)
} else {
i = e.getDOMObject(t, r);
return n(i, t)
}
};
n = function(e, r) {
e = e || t;
e.__proto__ = n.prototype;
e.selector = r || "";
return e
};
e.extend = function(e) {
Array.prototype.slice.call(arguments, 1).forEach(function(t) {
var n, r;
r = [];
for (n in t) {
r.push(e[n] = t[n])
}
return r
});
return e
};
n.prototype = e.fn = {};
return e
}();
which comes before this:
(function () {
(function (e) {
var t, n, r, i, u, a;
r = "parentNode";
t = /^\.([\w-]+)$/;
n = /^#[\w\d-]+$/;
i = /^[\w-]+$/;
e.query = function (e, r) {
var u;
r = r.trim();
if (t.test(r)) {
u = e.getElementsByClassName(r.replace(".", ""))
} else if (i.test(r)) {
u = e.getElementsByTagName(r)
} else if (n.test(r) && e === document) {
u = e.getElementById(r.replace("#", ""));
if (!u) {
u = []
}
} else {
u = e.querySelectorAll(r)
}
if (u.nodeType) {
return [u]
} else {
return Array.prototype.slice.call(u)
}
};
e.fn.find = function (t) {
I am trying to understand the meaning of e.fn.
I see that fn is not a reserved word. I think that e is just the name given to the event object passed as a parameter. So what is the meaning of e.fn? Is the code assuming that whatever is passed as e has a property called fn? Or is fn some kind of abbreviation that references the function?

Whatever is passed as e should have a property called fn. I would search the rest of the code for "fn" and see what you come up with.

Related

Javascript Get Selected Text: Incorrect number of lines

I am using the following code
(function(e, t) {
"use strict";
var n = t.selection;
var i = t.getSelection;
var o = i || n;
var r = function(e) {
var t = Object.prototype.toString.call(e);
return typeof e === "object" && /^\[object (HTMLCollection|NodeList|Object)\]$/.test(t) && e.hasOwnProperty("length") && (e.length === 0 || typeof e[0] === "object" && e[0].nodeType > 0)
};
var c = function(e, t) {
var n;
return function() {
var i = this,
o = arguments;
var r = function() {
n = null;
e.apply(i, o)
};
clearTimeout(n);
n = setTimeout(r, t)
}
};
var s = function(t, n) {
this.element = t;
this.callback = n || function() {};
this.isTouch = "ontouchstart" in e;
this.hasLib = e.jQuery && t instanceof e.jQuery || e.Zepto && t instanceof e.Zepto
};
s.prototype = {
events: function() {
var e = this.callback;
var t = this.getText;
this[this.isTouch ? "bindTouch" : "bindMouseUp"](function() {
e(t())
})
},
getText: function() {
var n = "";
if (i) {
n = e.getSelection().toString()
} else if (t.selection && t.selection.type !== "Control") {
n = t.selection.createRange().text
}
return n
},
checkForSelections: function(e, t, n) {
var i;
var o = function(e) {
var n = t();
var i = setInterval(function() {
if (t() !== n) {
e(t());
n = t()
} else if (t() === "") {
clearInterval(i)
}
}, 100)
};
var r = function() {
e.removeEventListener("touchend", c, false);
e.addEventListener("touchend", c, false);
if (i) {
clearInterval(i)
}
i = setInterval(function() {
var e = t();
if (e !== "") {
n(e);
c();
o(n)
}
}, 100)
};
var c = function() {
clearInterval(i);
e.removeEventListener("touchend", c, false)
};
e.addEventListener("touchstart", r, false)
},
bindTouch: function(e) {
var t = this.checkForSelections;
var n = this.getText;
if (this.hasLib) {
this.element.each(function() {
t(this, n, e)
});
return
}
var i = function(i) {
t(i, n, e)
};
if (!r(this.element)) {
i(this.element);
return
} [].forEach.call(this.element, function(e) {
i(e)
})
},
bindMouseUp: function(e) {
if (this.hasLib) {
this.element.on("mouseup", c(e, 150));
return
}
var t = function(t) {
t.addEventListener("mouseup", c(e, 150), false)
};
if (!r(this.element)) {
t(this.element);
return
} [].forEach.call(this.element, function(e) {
t(e)
})
}
};
e.selecting = function(e, t) {
if (!o) {
return
}
new s(e, t).events()
}
})(window, document);
And :
var myElement = document.body;
window.selecting(myElement, function(selector) {
var text = selector;
instance.publishState("text", text);
});
to basically get the selected/highlighted text by the user in the browser. I then use the selected text to work with it, make API calls etc.
Getting the selected text is fine, but unfortunately the number of lines in the returned text is usually incorrect which makes it impossible for me to work with.
Let me give you an example:
The user highlights the following text on the page:
Hello this is a test
Hello this is another test
The returned value from my code however than displays this text but with more line breaks in between. So for example I get returned:
Hello this is a test
Hello this is another test
This completely breaks my functionality, as I have to exactly know how many line breaks there actually are in order to work with the text. Any ideas what could be wrong or how I can access the browsers selected text with the correct number of line breaks?
The code
window.getSelection().toString()
will return the correct selection, which will produce in your case
Hello this is a test\n\nHello this is another test
Notice how you have two \n corresponding to the 2 newlines you have.
So if you do anything like this to display what the user has selected:
console.dir(window.getSelection().toString());
You will see correctly what the user has selected
Hello this is a test
Hello this is another test

addEventListener after change event

I have a page with one dropdown list and one table. The users choose from the dropdown and dynamically I populate the table from my db.
Example:
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-4">
<label asp-for="CCDescr" class="control-label">Cost Center</label>
<select asp-for="CCCode" class="form-control"
asp-items="#(new SelectList(ViewBag.CostCenterList, "CCCode", "CCDescr"))"></select>
</div>
<div class="tg-wrap" id="table" hidden>
<table class="tg">
<tr>..Headers..</tr>
<tr>..Data..</tr>
<tr>..Data..</tr>
<tr>..Data..</tr>
</table>
</div>
I have written a js script to read my data from the db using the controller. And then I populate my table like
$("#table").empty();
items +=
"<table class='tg'>" +
"<tr>....</tr>" +
"</table>"
$("#table").html(items);
$("#table").show();
I have found a js to short my table and it work for the fist time I load the page, but after the user change the dropdown list and my js run the sort isn't working any more.
The sort function adds a n.addEventListener("DOMContentLoaded", function () { for (var t = n.getElementsByClassName("tg"), e = 0; e < r(t); ++e)try { v(t[e]) } catch (n) { } })
}(document) but I can't make it work after my dropdownlist and table changes.
Thanks in advance for your help.
Regards.
---
For reference I post the hole js for sorting the table (as I said already not my code, something I found online):
<script charset="utf-8">
var TGSort = window.TGSort || function (n) {
"use strict";
function r(n) { return n ? n.length : 0 }
function t(n, t, e, o = 0) { for (e = r(n); o < e; ++o)t(n[o], o) }
function e(n) { return n.split("").reverse().join("") }
function o(n) {
var e = n[0]; return t(n, function (n) {
for (; !n.startsWith(e);)e = e.substring(0, r(e) - 1)
}), r(e)
} function u(n, r, e = []) {
return t(n, function (n) { r(n) && e.push(n) }), e
} var a = parseFloat; function i(n, r) {
return function (t) {
var e = ""; return t.replace(n, function (n, t, o) { return e = t.replace(r, "") + "." + (o || "").substring(1) }), a(e)
}
} var s = i(/^(?:\s*)([+-]?(?:\d+)(?:,\d{3})*)(\.\d*)?$/g, /,/g), c = i(/^(?:\s*)([+-]?(?:\d+)(?:\.\d{3})*)(,\d*)?$/g, /\./g);
function f(n) { var t = a(n); return !isNaN(t) && r("" + t) + 1 >= r(n) ? t : NaN }
function d(n) {
var e = [], o = n; return t([f, s, c], function (u) { var a = [], i = []; t(n, function (n, r) { r = u(n), a.push(r), r || i.push(n) }), r(i) < r(o) && (o = i, e = a) }), r(u(o, function (n) { return n == o[0] })) == r(o) ? e : []
} function v(n) {
if ("TABLE" == n.nodeName) {
for (var a = function (r) {
var e, o, u = [], a = []; return function n(r, e) {
e(r), t(r.childNodes, function (r) { n(r, e) })
}(n, function (n) { "TR" == (o = n.nodeName) ? (e = [], u.push(e), a.push(n)) : "TD" != o && "TH" != o || e.push(n) }), [u, a]
}(), i = a[0], s = a[1], c = r(i), f = c > 1 && r(i[0]) < r(i[1]) ? 1 : 0, v = f + 1, p = i[f], h = r(p), l = [], g = [], N = [], m = v; m < c; ++m) {
for (var T = 0; T < h; ++T) {
r(g) < h && g.push([]); var C = i[m][T], L = C.textContent || C.innerText || ""; g[T].push(L.trim())
} N.push(m - v)
} t(p, function (n, t) {
l[t] = 0; var a = n.classList; a.add("tg-sort-header"), n.addEventListener("click", function () {
var n = l[t]; !function () {
for (var n = 0; n < h; ++n) {
var r = p[n].classList; r.remove("tg-sort-asc"), r.remove("tg-sort-desc"), l[n] = 0
}
}(), (n = 1 == n ? -1 : +!n) && a.add(n > 0 ? "tg-sort-asc" : "tg-sort-desc"), l[t] = n; var i, f = g[t], m = function (r, t) {
return n * f[r].localeCompare(f[t]) || n * (r - t)
}, T = function (n) {
var t = d(n); if (!r(t)) {
var u = o(n), a = o(n.map(e)); t = d(n.map(function (n) { return n.substring(u, r(n) - a) }))
} return t
}(f); (r(T) || r(T = r(u(i = f.map(Date.parse), isNaN)) ? [] : i)) && (m = function (r, t) {
var e = T[r], o = T[t], u = isNaN(e), a = isNaN(o); return u && a ? 0 : u ? -n : a ? n : e > o ? n : e < o ? -n : n * (r - t)
}); var C, L = N.slice(); L.sort(m); for (var E = v; E < c; ++E)(C = s[E].parentNode).removeChild(s[E]); for (E = v; E < c; ++E)C.appendChild(s[v + L[E - v]])
})
})
}
} n.addEventListener("DOMContentLoaded", function () { for (var t = n.getElementsByClassName("tg"), e = 0; e < r(t); ++e)try { v(t[e]) } catch (n) { } })
}(document)
</script>
1) Set a id to the select tag
<label asp-for="CCDescr" class="control-label">Cost Center</label>
<select id="cost" asp-for="CCCode" class="form-control">
<option value="test">Test</option>
</select>
2) Create a new function in TGSort:
function sort() {
for (var t = n.getElementsByClassName("tg"), e = 0; e < r(t); ++e) try {
v(t[e])
} catch (n) {}
}
3) Replace n.addEventListener("DOMContentLoaded",.... ) with:
n.addEventListener("DOMContentLoaded",sort )
document.getElementById("cost").addEventListener('change', sort);

javascript decoding webpackJsonp to readable code

there is a way to change this code into a clear and readable code ?
(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{"2wwy":function(n,t,e){n.exports=e("nhzr")},E8gZ:function(n,t,e){var o=e("jmDH"),i=e("w6GO"),r=e("NsO/"),u=e("NV0k").f;n.exports=function(n){return function(t){for(var e,c=r(t),a=i(c),f=a.length,s=0,l=[];f>s;)e=a[s++],o&&!u.call(c,e)||l.push(n?[e,c[e]]:c[e]);return l}}},f0Zw:function(n,t,e){"use strict";e.r(t);var o=e("q1tI"),i=e.n(o),r=e("/MKj"),u=e("2wwy"),c=e.n(u),a=e("G4qV"),f=Object(a.a)((function(n){return n.g_notifications}),(function(n){return c()(n)})),s=e("F7NL"),l=e("kOwS"),p=e("qNsG"),v=e("CnBM"),w=e.n(v)()({loader:function(){return Promise.all([e.e(0),e.e(6)]).then(e.bind(null,"OyQA"))},loading:function(){return null},modules:["Notification"]}),b=i.a.createElement,d=function(n){var t=n.notifications,e=n.onRemove;return b(i.a.Fragment,null,t.map((function(n){var t=n.id,o=Object(p.a)(n,["id"]);return b(w,Object(l.a)({onRemove:e},o,{key:t,id:t}))})))},O=i.a.createElement,m=Object(r.b)((function(n){return{notifications:f(n)}})),j=function(n){var t=n.dataset.id;Object(s.b)(t)},g=m((function(n){var t=n.notifications;return O(d,{onRemove:j,notifications:t})}));t.default=g},fW1p:function(n,t,e){var o=e("Y7ZC"),i=e("E8gZ")(!1);o(o.S,"Object",{values:function(n){return i(n)}})},nhzr:function(n,t,e){e("fW1p"),n.exports=e("WEpk").Object.values}}]);
This looks like output from Webpack 4.
If the site you're looking at exposes source maps, you will see a section under sources in your browser's dev tools labelled "Webpack", which will contain the source for the scripts bundled using Webpack.
If the site doesn't expose source maps, the first step is to format the code. You can then start manually renaming variables as you figure out what they do. In this case, there must be more scripts on the site because there seem to be references to modules not defined in the file.
Passing this code through Prettier gives:
(window.webpackJsonp = window.webpackJsonp || []).push([
[7],
{
"2wwy": function(n, t, e) {
n.exports = e("nhzr");
},
E8gZ: function(n, t, e) {
var o = e("jmDH"),
i = e("w6GO"),
r = e("NsO/"),
u = e("NV0k").f;
n.exports = function(n) {
return function(t) {
for (var e, c = r(t), a = i(c), f = a.length, s = 0, l = []; f > s; )
(e = a[s++]), (o && !u.call(c, e)) || l.push(n ? [e, c[e]] : c[e]);
return l;
};
};
},
f0Zw: function(n, t, e) {
"use strict";
e.r(t);
var o = e("q1tI"),
i = e.n(o),
r = e("/MKj"),
u = e("2wwy"),
c = e.n(u),
a = e("G4qV"),
f = Object(a.a)(
function(n) {
return n.g_notifications;
},
function(n) {
return c()(n);
}
),
s = e("F7NL"),
l = e("kOwS"),
p = e("qNsG"),
v = e("CnBM"),
w = e.n(v)()({
loader: function() {
return Promise.all([e.e(0), e.e(6)]).then(e.bind(null, "OyQA"));
},
loading: function() {
return null;
},
modules: ["Notification"]
}),
b = i.a.createElement,
d = function(n) {
var t = n.notifications,
e = n.onRemove;
return b(
i.a.Fragment,
null,
t.map(function(n) {
var t = n.id,
o = Object(p.a)(n, ["id"]);
return b(w, Object(l.a)({ onRemove: e }, o, { key: t, id: t }));
})
);
},
O = i.a.createElement,
m = Object(r.b)(function(n) {
return { notifications: f(n) };
}),
j = function(n) {
var t = n.dataset.id;
Object(s.b)(t);
},
g = m(function(n) {
var t = n.notifications;
return O(d, { onRemove: j, notifications: t });
});
t.default = g;
},
fW1p: function(n, t, e) {
var o = e("Y7ZC"),
i = e("E8gZ")(!1);
o(o.S, "Object", {
values: function(n) {
return i(n);
}
});
},
nhzr: function(n, t, e) {
e("fW1p"), (n.exports = e("WEpk").Object.values);
}
}
]);
finding yourself in this is almost impossible, I mean that the result of decoding was on this principle:
var func = {
init: function() {
console.log('test');
this.set();
},
set: function(){
$('.body .test').innerHTML = 'test';
}
}
func.init();
easy and legible

Convert a function that has ES6 promise to a function that doesn't

I have this code that uses ES6 promise, and i want to convert it to a code with doesn't have Promise.
the code is long but the promise is used only in this part:
function(e, t, r) {
"use strict";
e.exports = function(e) {
var t = new XMLHttpRequest;
return new Promise(function(r, n) {
t.onreadystatechange = function() {
if (4 == this.readyState)
if (200 == this.status) {
var e = JSON.parse(this.response);
r(e)
} else {
var t = JSON.parse(this.response);
n(t)
}
}, t.onerror = function(e) {
n(new Error(this.statusText))
}, t.open("GET", e, !0), t.send(null)
})
}
}, function(e, t, r) {
"use strict";
function n(e, t) {
o.options.key = e;
for (var r in t) o.options[r] = t[r]
}
var o = r(3),
u = r(4);
e.exports = function(e, t, r, i) {
if (!t && "function" == typeof i) return i(new Error("API Key is required"));
if (!t) throw new Error("API Key is required");
n(t, r);
var s = u.stringify(o.options);
if ("function" != typeof i) return e(o.URL + s);
e(o.URL + s).then(function(e) {
return i(null, e)
}).catch(function(e) {
return i(e)
})
}
}
I have converted it to callback based. The callback format is as follows:
callback(err, data) if err is not null then an error has occurred otherwise the err parameter would be null and the data parameter would have the value.
function(e, t, r) {
"use strict";
e.exports = function(e, callback) {
var t = new XMLHttpRequest;
t.onreadystatechange = function() {
if (4 == this.readyState)
if (200 == this.status) {
var e = JSON.parse(this.response);
callback(e);
} else {
var t = JSON.parse(this.response);
callback(null, t)
}
}, t.onerror = function(e) {
callback(new Error(this.statusText))
}, t.open("GET", e, !0), t.send(null)
}
}, function(e, t, r) {
"use strict";
function n(e, t) {
o.options.key = e;
for (var r in t) o.options[r] = t[r]
}
var o = r(3),
u = r(4);
e.exports = function(e, t, r, i) {
if (!t && "function" == typeof i) return i(new Error("API Key is required"));
if (!t) throw new Error("API Key is required");
n(t, r);
var s = u.stringify(o.options);
if ("function" != typeof i) return e(o.URL + s);
e(o.URL + s).then(function(e) {
return i(null, e)
}).catch(function(e) {
return i(e)
})
}
}
Or you could use a Promise pollyfill:
https://github.com/stefanpenner/es6-promise
https://www.npmjs.com/package/promise-polyfill

Why doesn't Twitter's follow button widget remember me?

I follow people. I go to check out their sites. Many have a 'follow' button with counter like this one
but if I am I am already following this person the button should be 'grayed' out like this all the time
but once you refresh the page or return at a later time it looks like I am not a follower. Instead, you need to click the 'follow' button on the site, then twitter's dialog box comes up only to tell me that I am already 'following'
and when you mouse over this button it says 'unfollow' in red.
Do does twitter have some sort of Follower.Event.Subscribe function that can recognise people when they are on a site that they 'follow.' If they can recognize follow numbers on a site so why not remember followers?
It come's down Cookies. If the token is not in your browser history how would twitter know that you have clicked it?
What you might find that if you sign into twitter first and then go to the sites and hit refresh it will change to following.
Also if you like me have a tiny Cache for your browser that kills everything on refresh or close then it will definitely not stand a chance at remembering you because your killing the cookie instantly.
UPDATE
It would seem twitter have changed how the use the follow buttons now.
Before if I was logged into twitter and I pressed follow it would just follow them but now I see a gateway popup with a stream etc.
What seems to have happened is Twitter have stopped cookie dropping and opted for a gateway api.
As for the button the key is in the following code:
! function() {
Function && Function.prototype && Function.prototype.bind && (/MSIE [678]/.test(navigator.userAgent) || ! function t(e, n, r) {
function i(s, a) {
if (!n[s]) {
if (!e[s]) {
var u = "function" == typeof require && require;
if (!a && u) return u(s, !0);
if (o) return o(s, !0);
var c = new Error("Cannot find module '" + s + "'");
throw c.code = "MODULE_NOT_FOUND", c
}
var f = n[s] = {
exports: {}
};
e[s][0].call(f.exports, function(t) {
var n = e[s][1][t];
return i(n ? n : t)
}, f, f.exports, t, e, n, r)
}
return n[s].exports
}
for (var o = "function" == typeof require && require, s = 0; s < r.length; s++) i(r[s]);
return i
}({
1: [
function(t, e, n) {
(function() {
"use strict";
function t(t) {
return "function" == typeof t || "object" == typeof t && null !== t
}
function n(t) {
return "function" == typeof t
}
function r(t) {
return "object" == typeof t && null !== t
}
function i() {}
function o() {
return function() {
process.nextTick(c)
}
}
function s() {
var t = 0,
e = new F(c),
n = document.createTextNode("");
return e.observe(n, {
characterData: !0
}),
function() {
n.data = t = ++t % 2
}
}
function a() {
var t = new MessageChannel;
return t.port1.onmessage = c,
function() {
t.port2.postMessage(0)
}
}
function u() {
return function() {
setTimeout(c, 1)
}
}
function c() {
for (var t = 0; U > t; t += 2) {
var e = q[t],
n = q[t + 1];
e(n), q[t] = void 0, q[t + 1] = void 0
}
U = 0
}
function f() {}
function l() {
return new TypeError("You cannot resolve a promise with itself")
}
function d() {
return new TypeError("A promises callback cannot return that same promise.")
}
function h(t) {
try {
return t.then
} catch (e) {
return J.error = e, J
}
}
function p(t, e, n, r) {
try {
t.call(e, n, r)
} catch (i) {
return i
}
}
function m(t, e, n) {
A(function(t) {
var r = !1,
i = p(n, e, function(n) {
r || (r = !0, e !== n ? w(t, n) : _(t, n))
}, function(e) {
r || (r = !0, b(t, e))
}, "Settle: " + (t._label || " unknown promise"));
!r && i && (r = !0, b(t, i))
}, t)
}
function g(t, e) {
e._state === B ? _(t, e._result) : t._state === z ? b(t, e._result) : E(e, void 0, function(e) {
w(t, e)
}, function(e) {
b(t, e)
})
}
function v(t, e) {
if (e.constructor === t.constructor) g(t, e);
else {
var r = h(e);
r === J ? b(t, J.error) : void 0 === r ? _(t, e) : n(r) ? m(t, e, r) : _(t, e)
}
}
function w(e, n) {
e === n ? b(e, l()) : t(n) ? v(e, n) : _(e, n)
}
function y(t) {
t._onerror && t._onerror(t._result), x(t)
}
function _(t, e) {
t._state === H && (t._result = e, t._state = B, 0 === t._subscribers.length || A(x, t))
}
function b(t, e) {
t._state === H && (t._state = z, t._result = e, A(y, t))
}
function E(t, e, n, r) {
var i = t._subscribers,
o = i.length;
t._onerror = null, i[o] = e, i[o + B] = n, i[o + z] = r, 0 === o && t._state && A(x, t)
}
function x(t) {
var e = t._subscribers,
n = t._state;
if (0 !== e.length) {
for (var r, i, o = t._result, s = 0; s < e.length; s += 3) r = e[s], i = e[s + n], r ? O(n, r, i, o) : i(o);
t._subscribers.length = 0
}
}
function T() {
this.error = null
}
function R(t, e) {
try {
return t(e)
} catch (n) {
return W.error = n, W
}
}
function O(t, e, r, i) {
var o, s, a, u, c = n(r);
if (c) {
if (o = R(r, i), o === W ? (u = !0, s = o.error, o = null) : a = !0, e === o) return void b(e, d())
} else o = i, a = !0;
e._state !== H || (c && a ? w(e, o) : u ? b(e, s) : t === B ? _(e, o) : t === z && b(e, o))
}
function N(t, e) {
try {
e(function(e) {
w(t, e)
}, function(e) {
b(t, e)
})
} catch (n) {
b(t, n)
}
}
function C(t, e, n, r) {
this._instanceConstructor = t, this.promise = new t(f, r), this._abortOnReject = n, this._validateInput(e) ? (this._input = e, this.length = e.length, this._remaining = e.length, this._init(), 0 === this.length ? _(this.promise, this._result) : (this.length = this.length || 0, this._enumerate(), 0 === this._remaining && _(this.promise, this._result))) : b(this.promise, this._validationError())
}
function I() {
throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")
}
function P() {
throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")
}
function S(t) {
this._id = X++, this._state = void 0, this._result = void 0, this._subscribers = [], f !== t && (n(t) || I(), this instanceof S || P(), N(this, t))
}
var j;
j = Array.isArray ? Array.isArray : function(t) {
return "[object Array]" === Object.prototype.toString.call(t)
};
var L, k = j,
U = (Date.now || function() {
return (new Date).getTime()
}, Object.create || function(t) {
if (arguments.length > 1) throw new Error("Second argument not supported");
if ("object" != typeof t) throw new TypeError("Argument must be an object");
return i.prototype = t, new i
}, 0),
A = function(t, e) {
q[U] = t, q[U + 1] = e, U += 2, 2 === U && L()
},
M = "undefined" != typeof window ? window : {},
F = M.MutationObserver || M.WebKitMutationObserver,
D = "undefined" != typeof Uint8ClampedArray && "undefined" != typeof importScripts && "undefined" != typeof MessageChannel,
q = new Array(1e3);
L = "undefined" != typeof process && "[object process]" === {}.toString.call(process) ? o() : F ? s() : D ? a() : u();
var H = void 0,
B = 1,
z = 2,
J = new T,
W = new T;
C.prototype._validateInput = function(t) {
return k(t)
}, C.prototype._validationError = function() {
return new Error("Array Methods must be provided an Array")
}, C.prototype._init = function() {
this._result = new Array(this.length)
};
var K = C;
C.prototype._enumerate = function() {
for (var t = this.length, e = this.promise, n = this._input, r = 0; e._state === H && t > r; r++) this._eachEntry(n[r], r)
}, C.prototype._eachEntry = function(t, e) {
var n = this._instanceConstructor;
r(t) ? t.constructor === n && t._state !== H ? (t._onerror = null, this._settledAt(t._state, e, t._result)) : this._willSettleAt(n.resolve(t), e) : (this._remaining--, this._result[e] = this._makeResult(B, e, t))
}, C.prototype._settledAt = function(t, e, n) {
var r = this.promise;
r._state === H && (this._remaining--, this._abortOnReject && t === z ? b(r, n) : this._result[e] = this._makeResult(t, e, n)), 0 === this._remaining && _(r, this._result)
}, C.prototype._makeResult = function(t, e, n) {
return n
}, C.prototype._willSettleAt = function(t, e) {
var n = this;
E(t, void 0, function(t) {
n._settledAt(B, e, t)
}, function(t) {
n._settledAt(z, e, t)
})
};
var V = function(t, e) {
return new K(this, t, !0, e).promise
},
$ = function(t, e) {
function n(t) {
w(o, t)
}
function r(t) {
b(o, t)
}
var i = this,
o = new i(f, e);
if (!k(t)) return b(o, new TypeError("You must pass an array to race.")), o;
for (var s = t.length, a = 0; o._state === H && s > a; a++) E(i.resolve(t[a]), void 0, n, r);
return o
},
Y = function(t, e) {
var n = this;
if (t && "object" == typeof t && t.constructor === n) return t;
var r = new n(f, e);
return w(r, t), r
},
G = function(t, e) {
var n = this,
r = new n(f, e);
return b(r, t), r
},
X = 0,
Q = S;
S.all = V, S.race = $, S.resolve = Y, S.reject = G, S.prototype = {
constructor: S,
then: function(t, e) {
var n = this,
r = n._state;
if (r === B && !t || r === z && !e) return this;
var i = new this.constructor(f),
o = n._result;
if (r) {
var s = arguments[r - 1];
A(function() {
O(r, i, s, o)
})
} else E(n, i, t, e);
return i
},
"catch": function(t) {
return this.then(null, t)
}
};
var Z = function() {
var t;
t = "undefined" != typeof global ? global : "undefined" != typeof window && window.document ? window : self;
var e = "Promise" in t && "resolve" in t.Promise && "reject" in t.Promise && "all" in t.Promise && "race" in t.Promise && function() {
var e;
return new t.Promise(function(t) {
e = t
}), n(e)
}();
e || (t.Promise = Q)
},
tt = {
Promise: Q,
polyfill: Z
};
"function" == typeof define && define.amd ? define(function() {
return tt
}) : "undefined" != typeof e && e.exports ? e.exports = tt : "undefined" != typeof this && (this.ES6Promise = tt)
}).call(this)
}, {}
],
2: [
function(t, e, n) {
var r = t(3),
i = t(36);
e.exports = function(t, e, n) {
var o, s, a, u, c = i.aug({}, n);
return arguments.length > 1 && "[object Object]" !== String(e) ? ((null === e || void 0 === e) && (c.expires = -1), "number" == typeof c.expires && (o = c.expires, s = new Date((new Date).getTime() + 60 * o * 1e3), c.expires = s), e = String(e), r.cookie = [encodeURIComponent(t), "=", c.raw ? e : encodeURIComponent(e), c.expires ? "; expires=" + c.expires.toUTCString() : "", c.path ? "; path=" + c.path : "", c.domain ? "; domain=" + c.domain : "", c.secure ? "; secure" : ""].join("")) : (c = e || {}, u = c.raw ? function(t) {
return t
} : decodeURIComponent, (a = new RegExp("(?:^|; )" + encodeURIComponent(t) + "=([^;]*)").exec(r.cookie)) ? u(a[1]) : null)
}
}, {
3: 3,
36: 36
}
],
3: [
function(t, e, n) {
e.exports = document
}, {}
],
4: [
function(t, e, n) {
e.exports = location
}, {}
],
5: [
function(t, e, n) {
e.exports = navigator
}, {}
],
6: [
function(t, e, n) {
e.exports = window
}, {}
],
7: [
function(t, e, n) {
function r(t) {
return a.isType("string", t) ? t.split(".") : a.isType("array", t) ? t : []
}
function i(t, e) {
var n = r(e),
i = n.slice(0, -1);
return i.reduce(function(t, e, n) {
if (t[e] = t[e] || {}, !a.isObject(t[e])) throw new Error(i.slice(0, n + 1).join(".") + " is already defined with a value.");
return t[e]
}, t)
}
function o(t, e) {
e = e || s, e[t] = e[t] || {}, Object.defineProperty(this, "base", {
value: e[t]
}), Object.defineProperty(this, "name", {
value: t
})
}
var s = t(6),
a = t(36);
a.aug(o.prototype, {
get: function(t) {
var e = r(t);
return e.reduce(function(t, e) {
return a.isObject(t) ? t[e] : void 0
}, this.base)
},
set: function(t, e, n) {
var o = r(t),
s = i(this.base, t),
a = o.slice(-1);
return n && a in s ? s[a] : s[a] = e
},
init: function(t, e) {
return this.set(t, e, !0)
},
unset: function(t) {
var e = r(t),
n = this.get(e.slice(0, -1));
n && delete n[e.slice(-1)]
},
aug: function(t) {
var e = this.get(t),
n = a.toRealArray(arguments).slice(1);
if (e = "undefined" != typeof e ? e : {}, n.unshift(e), !n.every(a.isObject)) throw new Error("Cannot augment non-object.");
return this.set(t, a.aug.apply(null, n))
},
call: function(t) {
var e = this.get(t),
n = a.toRealArray(arguments).slice(1);
if (!a.isType("function", e)) throw new Error("Function " + t + "does not exist.");
return e.apply(null, n)
},
fullPath: function(t) {
var e = r(t);
return e.unshift(this.name), e.join(".")
}
}), e.exports = o
}, {
36: 36,
6: 6
}
],
8: [
function(t, e, n) {
function r(t) {
var e, n, r, i = 0;
for (o = {}, t = t || s, e = t.getElementsByTagName("meta"); n = e[i]; i++) /^twitter:/.test(n.name) && (r = n.name.replace(/^twitter:/, ""), o[r] = n.content)
}
function i(t) {
return o[t]
}
var o, s = t(3);
r(), e.exports = {
init: r,
val: i
}
}, {
3: 3
}
],
9: [
function(t, e, n) {
var r = t(7);
e.exports = new r("__twttr")
}, {
7: 7
}
],
10: [
function(t, e, n) {
e.exports = ["hi", "zh-cn", "fr", "zh-tw", "msa", "fil", "fi", "sv", "pl", "ja", "ko", "de", "it", "pt", "es", "ru", "id", "tr", "da", "no", "nl", "hu", "fa", "ar", "ur", "he", "th", "cs", "uk", "vi", "ro", "bn"]
}, {}
],
11: [
function(t, e, n) {
function r(t) {
if (t && /^[\w_]{1,20}$/.test(t)) return t;
throw new Error("Invalid screen name")
}
function i(t, e) {
t.className += " " + e
}
function o(t) {
return t && "false" === t.toLowerCase()
}
function s(t) {
return st.getElementById(t)
}
function a(t) {
return t = t || A.event, t && t.preventDefault ? t.preventDefault() : t.returnValue = !1, t && t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0, !1
}
function u(t) {
var e = R && R.name ? R.name + " (#" + ut + ")" : "#" + ut;
return E ? void(C.title = _("View your profile on Twitter")) : t ? (i(O, "following"), void(C.title = _("You are following %{name} on Twitter", {
name: e
}))) : (O.className = O.className.replace(/ ?following/, ""), void(C.title = _("Fol…
What seem's to be going on here is a handshake with twitters secure server.
So that your information is encrypted.
and all that's happening if the handshake is initiated is that JS is graying out the button.
At no point is this api interacting with the website directly hence why you are not seeing a grayed out button when you are revisiting the site.
It's actually a good think it means that twitter is protecting your privacy as a user.
It also shows that twitter have decided to go down the do not track route for website's so they aren't scoping out a lot of user info.
Sorry about the wait on my answer and the lengthy comment's this must of only happened in recent month's because my last experience with Twitter buttons they had cookie drop's and didnt gateway you like it does now.

Categories

Resources