1"use strict"; angular.module("lr.upload", ["lr.upload.formdata", "lr.upload.iframe", "lr.upload.directives"]), angular.module("lr.upload.directives", []), angular.module("lr.upload.directives").directive("uploadButton", ["upload", function (e) { return { restrict: "EA", scope: { data: "=?data", url: "@", id: "@", param: "@", method: "@", onUpload: "&", onSuccess: "&", onError: "&", onComplete: "&" }, link: function (a, r, t) { var n = angular.element(r), o = angular.element('<input id="' + a.id + '" type="file" style="display: none;"/>'); if (r.on("click", function () { o[0].click() }), n.append(o), o.on("change", function () { var r = angular.element(this); if (!r[0].files || 0 !== r[0].files.length) { var n = { url: a.url, method: a.method || "POST", forceIFrameUpload: a.$eval(t.forceIframeUpload) || !1, data: a.data || {} }; n.data[a.param || "file"] = r, a.$apply(function () { a.onUpload({ files: r[0].files }) }), e(n).then(function (e) { a.onSuccess({ response: e }), a.onComplete({ response: e }) }, function (e) { a.onError({ response: e }), a.onComplete({ response: e }) }) } }), "required" in t && t.$observe("required", function (e) { var t = "" === e ? !0 : a.$eval(e); o.attr("required", t), r.toggleClass("ng-valid", !t), r.toggleClass("ng-invalid ng-invalid-required", t) }), "accept" in t && t.$observe("accept", function (e) { o.attr("accept", e) }), e.support.formData) { var l = function () { o.attr("multiple", !(!a.$eval(t.multiple) || a.$eval(t.forceIframeUpload))) }; t.$observe("multiple", l), t.$observe("forceIframeUpload", l) } } } }]), angular.module("lr.upload.formdata", []).factory("formDataTransform", function () { return function (e) { var a = new FormData; return angular.forEach(e, function (e, r) { if (angular.isElement(e)) { var t = []; angular.forEach(e, function (e) { angular.forEach(e.files, function (e) { t.push(e) }), e.value = "" }), 0 !== t.length && (t.length > 1 ? angular.forEach(t, function (e, t) { a.append(r + "[" + t + "]", e) }) : a.append(r, t[0])) } else a.append(r, e) }), a } }).factory("formDataUpload", ["$http", "formDataTransform", function (e, a) { return function (r) { return r.transformRequest = a, r.method = r.method || "POST", r.headers = angular.extend(r.headers || {}, { "Content-Type": void 0 }), e(r) } }]), angular.module("lr.upload.iframe", []).factory("iFrameUpload", ["$q", "$http", "$document", "$rootScope", function (e, a, r, t) { function n(e, a) { if (e.indexOf) return e.indexOf(a); for (var r = 0; r < e.length; r++) if (a === e[r]) return r; return -1 } function o(o) { var l = [], u = e.defer(), i = u.promise; angular.forEach(o.data || {}, function (e, a) { angular.isElement(e) && (delete o.data[a], e.attr("name", a), l.push(e)) }); var d = /\?/.test(o.url) ? "&" : "?"; "DELETE" === o.method ? (o.url = o.url + d + "_method=DELETE", o.method = "POST") : "PUT" === o.method ? (o.url = o.url + d + "_method=PUT", o.method = "POST") : "PATCH" === o.method && (o.url = o.url + d + "_method=PATCH", o.method = "POST"); var f = angular.element(r[0].body), p = t.$new(), c = "iframe-transport-" + p.$id; p.$destroy(); var m = angular.element("<form></form>"); m.attr("target", c), m.attr("action", o.url), m.attr("method", o.method || "POST"), m.css("display", "none"), l.length && (m.attr("enctype", "multipart/form-data"), m.attr("encoding", "multipart/form-data")); var s = angular.element('<iframe name="' + c + '" src="javascript:false;"></iframe>'); return s.on("load", function () { function e(e, a) { var r = []; return angular.isFunction(a) ? a(e, r) : (angular.forEach(a, function (a) { e = a(e, r) }), e) } function r() { var e = n(a.pendingRequests, o); -1 !== e && (a.pendingRequests.splice(e, 1), o.$iframeTransportForm.remove(), delete o.$iframeTransportForm) } s.off("load").on("load", function () { var r; try { var t = this.contentWindow ? this.contentWindow.document : this.contentDocument; if (r = angular.element(t.body).text(), !r.length) throw new Error } catch (n) { } m.append(angular.element('<iframe src="javascript:false;"></iframe>')); try { r = e(r, a.defaults.transformResponse) } catch (n) { } u.resolve({ data: r, status: 200, headers: [], config: o }) }), angular.forEach(o.data, function (e, a) { var r = angular.element('<input type="hidden" />'); r.attr("name", a), r.val(e), m.append(r) }), angular.forEach(l, function (e) { var a = e.clone(!0); e.after(a), m.append(e) }), o.$iframeTransportForm = m, a.pendingRequests.push(o), m[0].submit(), i.then(r, r) }), m.append(s), f.append(m), i } return o }]), angular.module("lr.upload").factory("upload", ["$window", "formDataUpload", "iFrameUpload", function (e, a, r) { function t(e) { return n.formData && !e.forceIFrameUpload ? a(e) : r(e) } var n = { fileInput: !(new RegExp("(Android (1\\.[0156]|2\\.[01]))|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)|(w(eb)?OSBrowser)|(webOS)|(Kindle/(1\\.0|2\\.[05]|3\\.0))").test(e.navigator.userAgent) || angular.element('<input type="file">').prop("disabled")), fileUpload: !(!e.XMLHttpRequestUpload || !e.FileReader), formData: !!e.FormData }; return t.support = n, t }]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.