diff --git a/dist/index-es.js b/dist/index-es.js index fa7eb943..6230f7a4 100644 --- a/dist/index-es.js +++ b/dist/index-es.js @@ -9607,6 +9607,94 @@ function importModule(url) { }); } +/** + * Created by alexey2baranov on 28.01.17. + */ + +/* + An extraction of the deparam method from Ben Alman's jQuery BBQ + http://benalman.com/projects/jquery-bbq-plugin/ + */ +var coerce_types = { + 'true': !0, + 'false': !1, + 'null': null +}; + +function deparam(params, coerce) { + // console.log(params) + var obj = {}; // Iterate over all name=value pairs. + + params.replace(/\+/g, ' ').split('&').forEach(function (v) { + var param = v.split('='); + var key = decodeURIComponent(param[0]), + // If key is more complex than 'foo', like 'a[]' or 'a[b][c]', split it + // into its component parts. + keys = key.split(']['), + keys_last = keys.length - 1; // If the first keys part contains [ and the last ends with ], then [] + // are correctly balanced. + + if (/\[/.test(keys[0]) && /\]$/.test(keys[keys_last])) { + // Remove the trailing ] from the last keys part. + keys[keys_last] = keys[keys_last].replace(/\]$/, ''); // Split first keys part into two parts on the [ and add them back onto + // the beginning of the keys array. + + keys = keys.shift().split('[').concat(keys); + keys_last = keys.length - 1; + } else { + // Basic 'foo' style key. + keys_last = 0; + } // Are we dealing with a name=value pair, or just a name? + + + if (param.length >= 2) { + var val = decodeURIComponent(param.slice(1).join('=')); // Coerce values. + + if (coerce) { + val = val && !isNaN(val) ? +val // number + : val === 'undefined' ? undefined // undefined + : coerce_types[val] !== undefined ? coerce_types[val] // true, false, null + : val; // string + } + + if (keys_last) { + var cur = obj; // Complex key, build deep object structure based on a few rules: + // * The 'cur' pointer starts at the object top-level. + // * [] = array push (n is set to array length), [n] = array if n is + // numeric, otherwise object. + // * If at the last keys part, set the value. + // * For each keys part, if the current level is undefined create an + // object or array based on the type of the next keys part. + // * Move the 'cur' pointer to the next level. + // * Rinse & repeat. + + for (var i = 0; i <= keys_last; i++) { + key = keys[i] === '' ? cur.length : keys[i]; + cur = cur[key] = i < keys_last ? cur[key] || (keys[i + 1] && isNaN(keys[i + 1]) ? {} : []) : val; + } + } else { + // Simple key, even simpler rules, since only scalars and shallow + // arrays are allowed. + if (Array.isArray(obj[key])) { + // val is already an array, so push on the next value. + obj[key].push(val); + } else if (obj[key] !== undefined) { + // val isn't an array, but since a second value has been specified, + // convert val into an array. + obj[key] = [obj[key], val]; + } else { + // val is a scalar. + obj[key] = val; + } + } + } else if (key) { + // No value was defined, so set something meaningful. + obj[key] = coerce ? undefined : ''; + } + }); + return obj; +} + /** * @module jQueryPluginDBox */ @@ -21961,366 +22049,6 @@ function jQueryPluginJSHotkeys (b) { return b; } -/* - * Todo: Update to latest at https://github.com/cowboy/jquery-bbq ? - * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010 - * http://benalman.com/projects/jquery-bbq-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -// For sake of modules, added this wrapping export and changed `this` to `window` -function jQueryPluginBBQ (jQuery) { - (function ($, p) { - var i, - m = Array.prototype.slice, - r = decodeURIComponent, - a = $.param, - c, - l, - v, - b = $.bbq = $.bbq || {}, - q, - u, - j, - e = $.event.special, - d = "hashchange", - A = "querystring", - D = "fragment", - y = "elemUrlAttr", - g = "location", - k = "href", - t = "src", - x = /^.*\?|#.*$/g, - w = /^.*\#/, - h, - C = {}; - - function E(F) { - return typeof F === "string"; - } - - function B(G) { - var F = m.call(arguments, 1); - return function () { - return G.apply(this, F.concat(m.call(arguments))); - }; - } - - function n(F) { - return F.replace(/^[^#]*#?(.*)$/, "$1"); - } - - function o(F) { - return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/, "$1"); - } - - function f(H, M, F, I, G) { - var O, L, K, N, J; - - if (I !== i) { - K = F.match(H ? /^([^#]*)\#?(.*)$/ : /^([^#?]*)\??([^#]*)(#?.*)/); - J = K[3] || ""; - - if (G === 2 && E(I)) { - L = I.replace(H ? w : x, ""); - } else { - N = l(K[2]); - I = E(I) ? l[H ? D : A](I) : I; - L = G === 2 ? I : G === 1 ? $.extend({}, I, N) : $.extend({}, N, I); - L = a(L); - - if (H) { - L = L.replace(h, r); - } - } - - O = K[1] + (H ? "#" : L || !K[1] ? "?" : "") + L + J; - } else { - O = M(F !== i ? F : p[g][k]); - } - - return O; - } - - a[A] = B(f, 0, o); - a[D] = c = B(f, 1, n); - - c.noEscape = function (G) { - G = G || ""; - var F = $.map(G.split(""), encodeURIComponent); - h = new RegExp(F.join("|"), "g"); - }; - - c.noEscape(",/"); - - $.deparam = l = function l(I, F) { - var H = {}, - G = { - "true": !0, - "false": !1, - "null": null - }; - $.each(I.replace(/\+/g, " ").split("&"), function (L, Q) { - var K = Q.split("="), - P = r(K[0]), - J, - O = H, - M = 0, - R = P.split("]["), - N = R.length - 1; - - if (/\[/.test(R[0]) && /\]$/.test(R[N])) { - R[N] = R[N].replace(/\]$/, ""); - R = R.shift().split("[").concat(R); - N = R.length - 1; - } else { - N = 0; - } - - if (K.length === 2) { - J = r(K[1]); - - if (F) { - J = J && !isNaN(J) ? +J : J === "undefined" ? i : G[J] !== i ? G[J] : J; - } - - if (N) { - for (; M <= N; M++) { - P = R[M] === "" ? O.length : R[M]; - O = O[P] = M < N ? O[P] || (R[M + 1] && isNaN(R[M + 1]) ? {} : []) : J; - } - } else { - if ($.isArray(H[P])) { - H[P].push(J); - } else { - if (H[P] !== i) { - H[P] = [H[P], J]; - } else { - H[P] = J; - } - } - } - } else { - if (P) { - H[P] = F ? i : ""; - } - } - }); - return H; - }; - - function z(H, F, G) { - if (F === i || typeof F === "boolean") { - G = F; - F = a[H ? D : A](); - } else { - F = E(F) ? F.replace(H ? w : x, "") : F; - } - - return l(F, G); - } - - l[A] = B(z, 0); - l[D] = v = B(z, 1); - $[y] || ($[y] = function (F) { - return $.extend(C, F); - })({ - a: k, - base: k, - iframe: t, - img: t, - input: t, - form: "action", - link: k, - script: t - }); - j = $[y]; - - function s(I, G, H, F) { - if (!E(H) && _typeof(H) !== "object") { - F = H; - H = G; - G = i; - } - - return this.each(function () { - var L = $(this), - J = G || j()[(this.nodeName || "").toLowerCase()] || "", - K = J && L.attr(J) || ""; - L.attr(J, a[I](K, H, F)); - }); - } - - $.fn[A] = B(s, A); - $.fn[D] = B(s, D); - - b.pushState = q = function q(I, F) { - if (E(I) && /^#/.test(I) && F === i) { - F = 2; - } - - var H = I !== i, - G = c(p[g][k], H ? I : {}, H ? F : 2); - p[g][k] = G + (/#/.test(G) ? "" : "#"); - }; - - b.getState = u = function u(F, G) { - return F === i || typeof F === "boolean" ? v(F) : v(G)[F]; - }; - - b.removeState = function (F) { - var G = {}; - - if (F !== i) { - G = u(); - $.each($.isArray(F) ? F : arguments, function (I, H) { - delete G[H]; - }); - } - - q(G, 2); - }; - - e[d] = $.extend(e[d], { - add: function add(F) { - var H; - - function G(J) { - var I = J[D] = c(); - - J.getState = function (K, L) { - return K === i || typeof K === "boolean" ? l(I, K) : l(I, L)[K]; - }; - - H.apply(this, arguments); - } - - if ($.isFunction(F)) { - H = F; - return G; - } else { - H = F.handler; - F.handler = G; - } - } - }); - })(jQuery, window); - /* - * jQuery hashchange event - v1.2 - 2/11/2010 - * http://benalman.com/projects/jquery-hashchange-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ - - - (function ($, i, b) { - var j, - k = $.event.special, - c = "location", - d = "hashchange", - l = "href", - f = $.browser, - g = document.documentMode, - h = f.msie && (g === b || g < 8), - e = "on" + d in i && !h; - - function a(m) { - m = m || i[c][l]; - return m.replace(/^[^#]*#?(.*)$/, "$1"); - } - - $[d + "Delay"] = 100; - k[d] = $.extend(k[d], { - setup: function setup() { - if (e) { - return false; - } - - $(j.start); - }, - teardown: function teardown() { - if (e) { - return false; - } - - $(j.stop); - } - }); - - j = function () { - var m = {}, - r, - n, - o, - q; - - function p() { - o = q = function q(s) { - return s; - }; - - if (h) { - n = $('