All user data for FoundryVTT. Includes worlds, systems, modules, and any asset in the "foundryuserdata" directory. Does NOT include the FoundryVTT installation itself.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

466 lines
15 KiB

//Jquery Sortable
//Created by Jonas von Andrian.
//jquery-sortable.js is released under the Modified BSD License.
//License http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5
!(function (d, B, m, f) {
function v(a, b) {
var c = Math.max(0, a[0] - b[0], b[0] - a[1]),
e = Math.max(0, a[2] - b[1], b[1] - a[3]);
return c + e;
}
function w(a, b, c, e) {
var k = a.length;
e = e ? "offset" : "position";
for (c = c || 0; k--; ) {
var g = a[k].el ? a[k].el : d(a[k]),
l = g[e]();
l.left += parseInt(g.css("margin-left"), 10);
l.top += parseInt(g.css("margin-top"), 10);
b[k] = [
l.left - c,
l.left + g.outerWidth() + c,
l.top - c,
l.top + g.outerHeight() + c,
];
}
}
function p(a, b) {
var c = b.offset();
return { left: a.left - c.left, top: a.top - c.top };
}
function x(a, b, c) {
b = [b.left, b.top];
c = c && [c.left, c.top];
for (var e, k = a.length, d = []; k--; )
(e = a[k]), (d[k] = [k, v(e, b), c && v(e, c)]);
return (d = d.sort(function (a, b) {
return b[1] - a[1] || b[2] - a[2] || b[0] - a[0];
}));
}
function q(a) {
this.options = d.extend({}, n, a);
this.containers = [];
this.options.rootGroup ||
((this.scrollProxy = d.proxy(this.scroll, this)),
(this.dragProxy = d.proxy(this.drag, this)),
(this.dropProxy = d.proxy(this.drop, this)),
(this.placeholder = d(this.options.placeholder)),
a.isValidTarget || (this.options.isValidTarget = f));
}
function s(a, b) {
this.el = a;
this.options = d.extend({}, z, b);
this.group = q.get(this.options);
this.rootGroup = this.options.rootGroup || this.group;
this.handle =
this.rootGroup.options.handle || this.rootGroup.options.itemSelector;
var c = this.rootGroup.options.itemPath;
this.target = c ? this.el.find(c) : this.el;
this.target.on(t.start, this.handle, d.proxy(this.dragInit, this));
this.options.drop && this.group.containers.push(this);
}
var z = { drag: !0, drop: !0, exclude: "", nested: !0, vertical: !0 },
n = {
afterMove: function (a, b, c) {},
containerPath: "",
containerSelector: "ol, ul",
distance: 0,
delay: 0,
handle: "",
itemPath: "",
itemSelector: "li",
bodyClass: "dragging",
draggedClass: "dragged",
isValidTarget: function (a, b) {
return !0;
},
onCancel: function (a, b, c, e) {},
onDrag: function (a, b, c, e) {
a.css(b);
},
onDragStart: function (a, b, c, e) {
a.css({ height: a.outerHeight(), width: a.outerWidth() });
a.addClass(b.group.options.draggedClass);
d("body").addClass(b.group.options.bodyClass);
},
onDrop: function (a, b, c, e) {
a.removeClass(b.group.options.draggedClass).removeAttr("style");
d("body").removeClass(b.group.options.bodyClass);
},
onMousedown: function (a, b, c) {
if (!c.target.nodeName.match(/^(input|select|textarea)$/i))
return c.preventDefault(), !0;
},
placeholderClass: "placeholder",
placeholder: '<li class="placeholder"></li>',
pullPlaceholder: !0,
serialize: function (a, b, c) {
a = d.extend({}, a.data());
if (c) return [b];
b[0] && (a.children = b);
delete a.subContainers;
delete a.sortable;
return a;
},
tolerance: 0,
},
r = {},
y = 0,
A = { left: 0, top: 0, bottom: 0, right: 0 },
t = {
start: "touchstart.sortable mousedown.sortable",
drop: "touchend.sortable touchcancel.sortable mouseup.sortable",
drag: "touchmove.sortable mousemove.sortable",
scroll: "scroll.sortable",
};
q.get = function (a) {
r[a.group] || (a.group === f && (a.group = y++), (r[a.group] = new q(a)));
return r[a.group];
};
q.prototype = {
dragInit: function (a, b) {
this.$document = d(b.el[0].ownerDocument);
var c = d(a.target).closest(this.options.itemSelector);
c.length &&
((this.item = c),
(this.itemContainer = b),
!this.item.is(this.options.exclude) &&
this.options.onMousedown(this.item, n.onMousedown, a) &&
(this.setPointer(a),
this.toggleListeners("on"),
this.setupDelayTimer(),
(this.dragInitDone = !0)));
},
drag: function (a) {
if (!this.dragging) {
if (!this.distanceMet(a) || !this.delayMet) return;
this.options.onDragStart(
this.item,
this.itemContainer,
n.onDragStart,
a
);
this.item.before(this.placeholder);
this.dragging = !0;
}
this.setPointer(a);
this.options.onDrag(
this.item,
p(this.pointer, this.item.offsetParent()),
n.onDrag,
a
);
a = this.getPointer(a);
var b = this.sameResultBox,
c = this.options.tolerance;
(!b ||
b.top - c > a.top ||
b.bottom + c < a.top ||
b.left - c > a.left ||
b.right + c < a.left) &&
!this.searchValidTarget() &&
(this.placeholder.detach(), (this.lastAppendedItem = f));
},
drop: function (a) {
this.toggleListeners("off");
this.dragInitDone = !1;
if (this.dragging) {
if (this.placeholder.closest("html")[0])
this.placeholder.before(this.item).detach();
else
this.options.onCancel(this.item, this.itemContainer, n.onCancel, a);
this.options.onDrop(
this.item,
this.getContainer(this.item),
n.onDrop,
a
);
this.clearDimensions();
this.clearOffsetParent();
this.lastAppendedItem = this.sameResultBox = f;
this.dragging = !1;
}
},
searchValidTarget: function (a, b) {
a ||
((a = this.relativePointer || this.pointer),
(b = this.lastRelativePointer || this.lastPointer));
for (
var c = x(this.getContainerDimensions(), a, b), e = c.length;
e--;
) {
var d = c[e][0];
if (!c[e][1] || this.options.pullPlaceholder)
if (((d = this.containers[d]), !d.disabled)) {
if (!this.$getOffsetParent()) {
var g = d.getItemOffsetParent();
a = p(a, g);
b = p(b, g);
}
if (d.searchValidTarget(a, b)) return !0;
}
}
this.sameResultBox && (this.sameResultBox = f);
},
movePlaceholder: function (a, b, c, e) {
var d = this.lastAppendedItem;
if (e || !d || d[0] !== b[0])
b[c](this.placeholder),
(this.lastAppendedItem = b),
(this.sameResultBox = e),
this.options.afterMove(this.placeholder, a, b);
},
getContainerDimensions: function () {
this.containerDimensions ||
w(
this.containers,
(this.containerDimensions = []),
this.options.tolerance,
!this.$getOffsetParent()
);
return this.containerDimensions;
},
getContainer: function (a) {
return a.closest(this.options.containerSelector).data(m);
},
$getOffsetParent: function () {
if (this.offsetParent === f) {
var a = this.containers.length - 1,
b = this.containers[a].getItemOffsetParent();
if (!this.options.rootGroup)
for (; a--; )
if (b[0] != this.containers[a].getItemOffsetParent()[0]) {
b = !1;
break;
}
this.offsetParent = b;
}
return this.offsetParent;
},
setPointer: function (a) {
a = this.getPointer(a);
if (this.$getOffsetParent()) {
var b = p(a, this.$getOffsetParent());
this.lastRelativePointer = this.relativePointer;
this.relativePointer = b;
}
this.lastPointer = this.pointer;
this.pointer = a;
},
distanceMet: function (a) {
a = this.getPointer(a);
return (
Math.max(
Math.abs(this.pointer.left - a.left),
Math.abs(this.pointer.top - a.top)
) >= this.options.distance
);
},
getPointer: function (a) {
var b =
a.originalEvent ||
(a.originalEvent.touches && a.originalEvent.touches[0]);
return { left: a.pageX || b.pageX, top: a.pageY || b.pageY };
},
setupDelayTimer: function () {
var a = this;
this.delayMet = !this.options.delay;
this.delayMet ||
(clearTimeout(this._mouseDelayTimer),
(this._mouseDelayTimer = setTimeout(function () {
a.delayMet = !0;
}, this.options.delay)));
},
scroll: function (a) {
this.clearDimensions();
this.clearOffsetParent();
},
toggleListeners: function (a) {
var b = this;
d.each(["drag", "drop", "scroll"], function (c, e) {
b.$document[a](t[e], b[e + "Proxy"]);
});
},
clearOffsetParent: function () {
this.offsetParent = f;
},
clearDimensions: function () {
this.traverse(function (a) {
a._clearDimensions();
});
},
traverse: function (a) {
a(this);
for (var b = this.containers.length; b--; )
this.containers[b].traverse(a);
},
_clearDimensions: function () {
this.containerDimensions = f;
},
_destroy: function () {
r[this.options.group] = f;
},
};
s.prototype = {
dragInit: function (a) {
var b = this.rootGroup;
!this.disabled &&
!b.dragInitDone &&
this.options.drag &&
this.isValidDrag(a) &&
b.dragInit(a, this);
},
isValidDrag: function (a) {
return (
1 == a.which ||
("touchstart" == a.type && 1 == a.originalEvent.touches.length)
);
},
searchValidTarget: function (a, b) {
var c = x(this.getItemDimensions(), a, b),
e = c.length,
d = this.rootGroup,
g = !d.options.isValidTarget || d.options.isValidTarget(d.item, this);
if (!e && g) return d.movePlaceholder(this, this.target, "append"), !0;
for (; e--; )
if (((d = c[e][0]), !c[e][1] && this.hasChildGroup(d))) {
if (this.getContainerGroup(d).searchValidTarget(a, b)) return !0;
} else if (g) return this.movePlaceholder(d, a), !0;
},
movePlaceholder: function (a, b) {
var c = d(this.items[a]),
e = this.itemDimensions[a],
k = "after",
g = c.outerWidth(),
f = c.outerHeight(),
h = c.offset(),
h = { left: h.left, right: h.left + g, top: h.top, bottom: h.top + f };
this.options.vertical
? b.top <= (e[2] + e[3]) / 2
? ((k = "before"), (h.bottom -= f / 2))
: (h.top += f / 2)
: b.left <= (e[0] + e[1]) / 2
? ((k = "before"), (h.right -= g / 2))
: (h.left += g / 2);
this.hasChildGroup(a) && (h = A);
this.rootGroup.movePlaceholder(this, c, k, h);
},
getItemDimensions: function () {
this.itemDimensions ||
((this.items = this.$getChildren(this.el, "item")
.filter(
":not(." +
this.group.options.placeholderClass +
", ." +
this.group.options.draggedClass +
")"
)
.get()),
w(this.items, (this.itemDimensions = []), this.options.tolerance));
return this.itemDimensions;
},
getItemOffsetParent: function () {
var a = this.el;
return "relative" === a.css("position") ||
"absolute" === a.css("position") ||
"fixed" === a.css("position")
? a
: a.offsetParent();
},
hasChildGroup: function (a) {
return this.options.nested && this.getContainerGroup(a);
},
getContainerGroup: function (a) {
var b = d.data(this.items[a], "subContainers");
if (b === f) {
var c = this.$getChildren(this.items[a], "container"),
b = !1;
c[0] &&
((b = d.extend({}, this.options, {
rootGroup: this.rootGroup,
group: y++,
})),
(b = c[m](b).data(m).group));
d.data(this.items[a], "subContainers", b);
}
return b;
},
$getChildren: function (a, b) {
var c = this.rootGroup.options,
e = c[b + "Path"],
c = c[b + "Selector"];
a = d(a);
e && (a = a.find(e));
return a.children(c);
},
_serialize: function (a, b) {
var c = this,
e = this.$getChildren(a, b ? "item" : "container")
.not(this.options.exclude)
.map(function () {
return c._serialize(d(this), !b);
})
.get();
return this.rootGroup.options.serialize(a, e, b);
},
traverse: function (a) {
d.each(this.items || [], function (b) {
(b = d.data(this, "subContainers")) && b.traverse(a);
});
a(this);
},
_clearDimensions: function () {
this.itemDimensions = f;
},
_destroy: function () {
var a = this;
this.target.off(t.start, this.handle);
this.el.removeData(m);
this.options.drop &&
(this.group.containers = d.grep(this.group.containers, function (b) {
return b != a;
}));
d.each(this.items || [], function () {
d.removeData(this, "subContainers");
});
},
};
var u = {
enable: function () {
this.traverse(function (a) {
a.disabled = !1;
});
},
disable: function () {
this.traverse(function (a) {
a.disabled = !0;
});
},
serialize: function () {
return this._serialize(this.el, !0);
},
refresh: function () {
this.traverse(function (a) {
a._clearDimensions();
});
},
destroy: function () {
this.traverse(function (a) {
a._destroy();
});
},
};
d.extend(s.prototype, u);
d.fn[m] = function (a) {
var b = Array.prototype.slice.call(arguments, 1);
return this.map(function () {
var c = d(this),
e = c.data(m);
if (e && u[a]) return u[a].apply(e, b) || this;
e || (a !== f && "object" !== typeof a) || c.data(m, new s(c, a));
return this;
});
};
})(jQuery, window, "sortable");