"use strict";
var _extends =
    Object.assign ||
    function (t) {
      for (var e = 1; e < arguments.length; e++) {
        var n = arguments[e];
        for (var i in n)
          Object.prototype.hasOwnProperty.call(n, i) && (t[i] = n[i]);
      }
      return t;
    },
  _createClass = (function () {
    function i(t, e) {
      for (var n = 0; n < e.length; n++) {
        var i = e[n];
        (i.enumerable = i.enumerable || !1),
          (i.configurable = !0),
          "value" in i && (i.writable = !0),
          Object.defineProperty(t, i.key, i);
      }
    }
    return function (t, e, n) {
      return e && i(t.prototype, e), n && i(t, n), t;
    };
  })();
function _toConsumableArray(t) {
  if (Array.isArray(t)) {
    for (var e = 0, n = Array(t.length); e < t.length; e++) n[e] = t[e];
    return n;
  }
  return Array.from(t);
}
function _classCallCheck(t, e) {
  if (!(t instanceof e))
    throw new TypeError("Cannot call a class as a function");
}
var Sortable = (function () {
  function d() {
    var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {},
      e = t.parent,
      n = t.links,
      i = void 0 === n ? document.querySelectorAll("[data-sjslink]") : n,
      s = t.active,
      a = void 0 === s ? "is-active" : s,
      r = t.margin,
      o = void 0 === r ? 40 : r,
      l = t.responsive,
      u =
        void 0 === l
          ? { 980: { columns: 2 }, 480: { columns: 2 }, 0: { columns: 1 } }
          : l,
      c = t.fadeDuration,
      h = void 0 === c ? { in: 300, out: 0 } : c;
    _classCallCheck(this, d),
      (this.parent = e),
      (this.links = Array.from(i)),
      (this.active = a),
      (this.margin = o),
      (this.responsive = u),
      (this.fadeDuration = h),
      (this.elements = Array.from(this.parent.children)),
      (this.activeElements = this.elements),
      (this.columns = 1),
      (this.dataLink = "all"),
      (this.winWidth = window.innerWidth),
      this.init();
  }
  return (
    _createClass(d, [
      {
        key: "orderelements",
        value: function () {
          var r = this,
            t = this.parent,
            e = this.activeElements,
            o = this.columns,
            l = this.blocWidth,
            u = (this.responsive, this.margin),
            n = e.reduce(function (t, e, n) {
              var i = r._sumArrHeight(t, o),
                s = (n % o) * (l + u),
                a = 0 <= n - o ? i[n % o] + u * Math.floor(n / o) : 0;
              return (
                (e.style.transform =
                  "translate3d(" + s + "px, " + a + "px, 0)"),
                t.push(e.offsetHeight),
                t
              );
            }, []),
            i = this._sumArrHeight(n, o),
            s =
              Math.max.apply(Math, _toConsumableArray(i)) +
              u * (Math.floor(e.length / o) - 1);
          t.style.height = s + "px";
        },
      },
      {
        key: "handleFilterClick",
        value: function (t, e) {
          var n = this;
          t.preventDefault();
          var i = this.links,
            s = this.active;
          e.dataset.sjslink !== this.dataLink &&
            ((this.dataLink = e.dataset.sjslink),
            i.forEach(function (t) {
              t.isEqualNode(e) ? t.classList.add(s) : t.classList.remove(s);
            }),
            this._filterElements(function () {
              n.orderelements();
            }));
        },
      },
      {
        key: "resize",
        value: function () {
          var t = this;
          window.addEventListener("resize", function () {
            clearTimeout(window.sortableResize),
              (window.sortableResize = setTimeout(function () {
                (t.winWidth = window.innerWidth),
                  t._setBlocWidth(function () {
                    t.orderelements();
                  });
              }, 500));
          });
        },
      },
      {
        key: "init",
        value: function () {
          var n = this,
            t = this.parent,
            e = this.links,
            i = this.active;
          e.forEach(function (e, t) {
            0 === t && (e.classList.add(i), (n.dataLink = e.dataset.sjslink)),
              e.addEventListener("click", function (t) {
                n.handleFilterClick(t, e);
              });
          }),
            this._setBlocWidth(),
            window.addEventListener("load", function () {
              n._filterElements(function () {
                n.orderelements();
              }),
                (t.style.opacity = 1);
            }),
            this.resize();
        },
      },
      {
        key: "_setBlocWidth",
        value: function (t) {
          var e = this.parent,
            n = this.elements,
            i = this.margin,
            s = this.responsive,
            a = (this.columns = this._columnsCount(s).columns),
            r = (this.blocWidth = (e.clientWidth - i * (a - 1)) / a);
          n.forEach(function (t) {
            t.style.width = r + "px";
          }),
            t && t();
        },
      },
      {
        key: "_filterElements",
        value: function (t) {
          var e = this,
            n = this.elements,
            i = this.dataLink,
            s = this.fadeDuration;
          (this.activeElements = n.filter(function (t) {
            return "all" === i
              ? (e._fadeIn(t, s.in), !0)
              : t.dataset.sjsel !== i
                ? (e._fadeOut(t, s.out), !1)
                : (e._fadeIn(t, s.in), !0);
          })),
            t && t();
        },
      },
      {
        key: "_sumArrHeight",
        value: function (t, s) {
          return t.reduce(function (t, e, n) {
            var i = n % s;
            return t[i] || (t[i] = 0), (t[i] = t[i] + e), t;
          }, []);
        },
      },
      {
        key: "_columnsCount",
        value: function (t) {
          var n = this.winWidth;
          return Object.entries(t).reduce(
            function (t, e) {
              return n > e[0] && e[0] >= Math.max(t.width)
                ? { width: e[0], columns: e[1].columns }
                : t;
            },
            { width: 0, columns: 4 },
          );
        },
      },
      {
        key: "_fadeIn",
        value: function (e) {
          var t =
              1 < arguments.length && void 0 !== arguments[1]
                ? arguments[1]
                : 300,
            n = arguments[2],
            i = parseFloat(
              window.getComputedStyle(e, null).getPropertyValue("opacity"),
            ),
            s = 16 / t;
          (e.style.display = "block"),
            requestAnimationFrame(function t() {
              (i += s) <= 1
                ? ((e.style.opacity = i), requestAnimationFrame(t))
                : ((e.style.opacity = 1), n && n());
            });
        },
      },
      {
        key: "_fadeOut",
        value: function (e) {
          var t =
              1 < arguments.length && void 0 !== arguments[1]
                ? arguments[1]
                : 300,
            n = arguments[2],
            i = parseFloat(
              window.getComputedStyle(e, null).getPropertyValue("opacity"),
            ),
            s = t ? 16 / t : 1;
          requestAnimationFrame(function t() {
            0 <= (i -= s)
              ? ((e.style.opacity = i), requestAnimationFrame(t))
              : ((e.style.opacity = 0), (e.style.display = "none"), n && n());
          });
        },
      },
    ]),
    d
  );
})();
HTMLElement.prototype.sortablejs =
  HTMLElement.prototype.sortablejs ||
  function (t) {
    return new Sortable(_extends({ parent: this }, t));
  };
