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.
 
 
 

464 lines
21 KiB

/*! Ply 0.3.0 - MIT | git://github.com/rubaxa/Ply.git */
!function (a) {
window.Ply = a(window)
}(function (a, b) {
"use strict";
function c(a) {
return"function" == typeof a
}
function d(a) {
if (O)return new O(a);
var b = P.Deferred();
return a(b.resolve, b.reject), b
}
function e(a) {
return O ? O.all(a) : P.when.apply(P, a)
}
function f(a) {
return d(function (b) {
return b(a)
})
}
function g(a) {
return a && a.then ? a : f(a)
}
function h(a, b) {
if (a)for (var c in a)a.hasOwnProperty(c) && b(a[c], c, a)
}
function i(a) {
var b = {};
return h(a, function (a, d) {
b[d] = c(a) ? a : a instanceof Object ? i(a) : a
}), b
}
function j(a) {
for (var b = Array.prototype.slice, c = b.call(arguments, 1), d = 0, e = c.length; e > d; d++)h(c[d], function (b, c) {
a[c] = b
});
return a
}
function k(a, b) {
try {
return(b || H).querySelector(a)
} catch (c) {
return P(a, b)[0]
}
}
function l(a, b) {
return a.getElementsByTagName(b)
}
function m(a, b) {
try {
a && b && a.appendChild(b)
} catch (c) {
}
}
function n(a) {
a && a.parentNode && a.parentNode.removeChild(a)
}
function o(a, b, c) {
var d = c.handle = c.handle || function (b) {
b.target || (b.target = b.srcElement || H), 3 === b.target.nodeType && (b.target = b.target.parentNode), b.preventDefault || (b.preventDefault = function () {
b.returnValue = !1
}), b.stopPropagation || (b.stopPropagation = function () {
b.cancelBubble = !0
}), c.call(a, b)
};
a.addEventListener ? a.addEventListener(b, d, !1) : a.attachEvent("on" + b, d)
}
function p(a, b, c) {
var d = c.handle;
d && (a.removeEventListener ? a.removeEventListener(b, d, !1) : a.detachEvent("on" + b, d))
}
function q(a) {
if (null == a && (a = "div"), a.appendChild)return a;
if (a.skip)return H.createDocumentFragment();
"string" == typeof a && (a = {tag: a});
var b, c = a.children, d = Q.exec(a.tag || "");
return delete a.children, a.tag = d[1] || "div", a.id = a.id || (d[2] || "").substr(1), d = (d[3] || "").split("."), d[0] = a.className || "", a.className = d.join(" "), b = H.createElement(a.tag), delete a.tag, h(a, function (c, d) {
if (c)if ("css" === d)t(b, a.css); else if ("text" === d)null != c && m(b, H.createTextNode(c)); else if ("html" === d)null != c && (b.innerHTML = c); else if ("ply" === d)b.setAttribute(M, c); else if (d in b)try {
b[d] = c
} catch (e) {
b.setAttribute(d, c)
} else/^data-/.test(d) && b.setAttribute(d, c)
}), c && c.appendChild ? m(b, c) : h(c, function (a, c) {
a && ("string" == typeof a ? a = {text: a} : "object" != typeof a && (a = {}), "string" == typeof c && (a.tag = a.tag || c), m(b, q(a)))
}), b
}
function r(a) {
for (var b, c, d = l(a, "input"), e = 0, f = d.length; f > e; e++)if (b = d[e], "submit" === b.type)!c && (c = b); else if (!/hidden|check|radio/.test(b.type) && "" == b.value) {
c = b;
break
}
c || (c = l(a, "button")[0]);
try {
c.focus()
} catch (g) {
}
}
function s(a) {
return u(!0), d(function (b) {
for (var c, d = l(a, "img"), e = d.length, f = e, g = function () {
if (--f <= 0) {
for (e = d.length; e--;)c = d[e], p(c, "load", g), p(c, "error", g);
u(!1), b()
}
}; e--;)c = d[e], c.complete ? f-- : (o(c, "load", g), o(c, "error", g));
!f && g()
})
}
function t(a, b, c) {
if (a && a.style && b)if (b instanceof Object)for (var d in b)t(a, d, b[d]); else {
if (void 0 === c)return H.defaultView && H.defaultView.getComputedStyle ? c = H.defaultView.getComputedStyle(a, "") : a.currentStyle && (c = a.currentStyle), void 0 === b ? c : c[b];
R[b] ? R[b](a.style, c) : a.style[K[b] || b] = c
}
}
function u(a) {
var b = u.get();
clearTimeout(u.pid), u.pid = a ? I(function () {
m(H.body, b)
}, 100) : I(function () {
n(b)
}, 100)
}
function v(a, b) {
return q({css: {padding: "20px 20px 40px", display: "inline-block", position: "relative", textAlign: "left", whiteSpace: "normal", verticalAlign: "middle", transform: "translate3d(0, 0, 0)"}, children: b.baseHtml ? [
{ply: ":layer", tag: ".ply-layer", className: b.mod, css: j({overflow: "hidden", position: "relative", backfaceVisibility: "hidden"}, b.layer), children: [b.flags.closeBtn && {ply: ":close", tag: ".ply-x", text: J.cross}, {tag: ".ply-inside", children: a}]}
] : a})
}
function w(a) {
return q({ply: ":overlay", tag: ".ply-overlay", css: {top: 0, left: 0, right: 0, bottom: 0, position: "fixed"}, children: [
{tag: "div", css: j({width: "100%", height: "100%"}, a)}
]})
}
function x(a, b, c) {
a.wrapEl = q({tag: "form", css: {whiteSpace: "nowrap", zIndex: b.zIndex}}), c || (a.overlayEl = w(b.overlay), a.overlayBoxEl = a.overlayEl.firstChild, m(a.wrapEl, a.overlayEl));
var d = q();
t(d, {height: "100%", display: "inline-block", verticalAlign: "middle"}), m(a.wrapEl, d);
var e = b.el;
return a.el = e && e.cloneNode ? e.cloneNode(!0) : q({html: e || ""}), a.layerEl = v(a.el, b), a.contentEl = y(a.layerEl), a.context = new A(a.layerEl), m(a.wrapEl, a.layerEl), a.bodyEl = b.body && k(b.body) || H.body, a.wrapEl.tabIndex = -1, t(a.wrapEl, {top: 0, left: 0, right: 0, bottom: 0, position: "fixed", textAlign: "center", overflow: "auto", outline: 0}), a
}
function y(a) {
return a.firstChild.lastChild.firstChild
}
function z(a, b) {
b = a instanceof Object ? a : b || {}, b.el = b.el || a;
var c = this;
c.cid = "c" + F++, N.zIndex++, c.options = b = j({}, N, b), b.flags = j({}, N.flags, b.flags), x(c, b), c.setEffect(b.effect), c.fx = function (a) {
return!(c.fx.queue = c.fx.queue.then(a, a).then(function () {
return c
}))
}, c.fx.queue = f(), c.on("click", ":overlay", function () {
c.hasFlag("closeByOverlay") && c.closeBy("overlay")
}), c.on("click", ":close", function (a, b) {
a.preventDefault(), c.closeBy("BUTTON" === b.nodeName ? "cancel" : "x")
}), c.options.init(this)
}
function A(a) {
this.el = a
}
function B(a, b) {
return null == a ? {skip: !0} : ("string" == typeof a && (a = {text: a}), "object" == typeof a && (a.name = a.name || b), a)
}
function C(a, b, c) {
var d, e = C[a];
return e || (a = a.split(/\s+/).slice(0, -1).join(" "), e = b && (C[a + " [name=" + b.name + "]"] || C[a + " [type=" + b.type + "]"]) || C[a + " *"] || C[":default"]), d = q(e(b, c)), b && b.name && d.setAttribute(M + "-name", b.name), d.className += " ply-ui", d
}
function D(a, b) {
D["_" + a] = b, D[a] = function (a, c) {
return d(function (d, e) {
b(a, c, d, e)
}).then(function (a) {
return a.appendChild || (a = C(":root", a)), a
})
}
}
function E(a, b, c, d) {
return b.mod = a, b.effect = b.effect || "slide", b.flags = j({closeBtn: !1}, b.flags), {header: c.title, content: c.form ? {"dialog-form": {children: c.form}} : {el: c.text || c}, ctrls: {ok: c.ok || d.ok, cancel: c.cancel === !1 ? null : c.cancel || d.cancel}}
}
var F = 1, G = function () {
}, H = a.document, I = a.setTimeout, J = {ok: "OK", cancel: "Cancel", cross: "✖"}, K = function () {
var a = {}, b = H.createElement("div").style, c = "opacity transition transform perspective transformStyle transformOrigin backfaceVisibility".split(" "), d = ["Webkit", "Moz", "O", "MS"];
return h(c, function (c, e) {
if (a[c] = c in b && c, !a[c])for (e = 0; 4 > e; e++) {
var f = d[e] + c.charAt(0).toUpperCase() + c.substr(1);
if (a[c] = f in b && f)break
}
}), a
}(), L = {esc: 27}, M = "data-ply", N = {zIndex: 1e4, layer: {}, overlay: {opacity: .6, backgroundColor: "rgb(0, 0, 0)"}, flags: {closeBtn: !0, bodyScroll: !1, closeByEsc: !0, closeByOverlay: !0, hideLayerInStack: !0, visibleOverlayInStack: !1}, baseHtml: !0, init: G, open: G, close: G, destroy: G, callback: G}, O = b || a.Promise, P = a.jQuery || a.Zepto || a.ender || a.$, Q = /^(\w+)?(#\w+)?((?:\.[\w_-]+)*)/i, R = {opacity: !K.opacity && function (a, b) {
a.zoom = 1, a.filter = "alpha(opacity=" + 100 * b + ")"
}};
u.get = function () {
return u.el || (u.el = q({tag: ".ply-loading", children: {".ply-loading-spinner": !0}}))
}, z.fn = z.prototype = {constructor: z, _activate: function () {
if (!this.hasFlag("bodyScroll")) {
var a = this.bodyEl, b = q({css: {overflow: "auto", visibility: "hidden", height: "5px"}, children: [
{tag: "div", css: {height: "100px"}}
]});
this.__overflow = t(a, "overflow"), this.__paddingRight = t(a, "paddingRight"), m(a, b), t(a, {overflow: "hidden", paddingRight: b.offsetWidth - b.firstChild.offsetWidth + "px"}), n(b)
}
o(this.wrapEl, "submit", this._getHandleEvent("submit"))
}, _deactivate: function () {
this.hasFlag("bodyScroll") || t(this.bodyEl, {overflow: this.__overflow, paddingRight: this.__paddingRight}), p(this.layerEl, "submit", this._getHandleEvent("submit"))
}, _getHandleEvent: function (a) {
var b = this, c = b.__handleEvent || (b.__handleEvent = {});
return c[a] || (c[a] = function (c) {
b._handleEvent(a, c)
}), c[a]
}, _handleEvent: function (a, b) {
b.preventDefault(), this.closeBy(a)
}, applyEffect: function (a, b, c) {
return a = this[a] || a, a.nodeType || (c = b, b = a, a = this.layerEl), c = z.effects.get(c || this.effects), z.effects.apply.call(c, a, b)
}, closeBy: function (a) {
var b = this, c = {by: a, state: "submit" === a, layer: this, data: this.context.toJSON(), context: this.context}, d = this.options.callback(c);
g(d).then(function (a) {
a !== !1 && (b.result = c, b.close())
})
}, on: function (a, b, c) {
var d = this;
return c || (c = b, b = ":layer"), c["_" + b] = function (a) {
var e = a.target;
do if (1 === e.nodeType && e.getAttribute(M) === b)return c.call(d, a, e); while (e !== d.wrapEl && (e = e.parentNode))
}, o(d.wrapEl, a, c["_" + b]), d
}, off: function (a, b, c) {
return c || (c = b, b = "layer"), p(this.wrapEl, a, c["_" + b] || G), this
}, hasFlag: function (a) {
return!!this.options.flags[a]
}, setEffect: function (a) {
return this.effects = z.effects.get(a), this
}, _toggleState: function (a, b) {
var c = this, d = a ? "open" : "close", f = z.stack.last;
return c.visible != a && (c.visible = a, c[a ? "_activate" : "_deactivate"](), z.stack[a ? "add" : "remove"](c), c.fx(function () {
return s(c.wrapEl).then(function () {
var g = z.stack.length === (a ? 1 : 0), h = f && f.hasFlag("hideLayerInStack"), i = g || c.hasFlag("visibleOverlayInStack");
return a ? (!i && n(c.overlayBoxEl), m(c.bodyEl, c.wrapEl), c.wrapEl.focus(), r(c.layerEl), h && f.applyEffect("close.layer", b).then(function () {
n(f.layerEl)
})) : (f = z.stack.last) && (m(f.wrapEl, f.layerEl), f.hasFlag("hideLayerInStack") && f.applyEffect("open.layer", b).then(function () {
r(f.el)
})), e([c.applyEffect(d + ".layer", b), i && c.applyEffect("overlayEl", d + ".overlay", b)]).then(function () {
a || (n(c.wrapEl), m(c.overlayEl, c.overlayBoxEl)), c.options[d](c)
})
})
})), c.fx.queue
}, open: function (a) {
return this.result = null, this._toggleState(!0, a)
}, close: function (a) {
return this._toggleState(!1, a)
}, _swap: function (a, b, c, d, f) {
var g = this;
return g.visible ? g.fx(function () {
return s(b).then(function () {
return d(), e([g.applyEffect(a, "close.layer", c), g.applyEffect(b, "open.layer", c)]).then(function () {
n(a), f(), g.wrapEl.focus(), r(b)
})
})
}) : f(), g.fx.queue
}, swap: function (a, b) {
a = j({}, this.options, a);
var c = this, d = x({}, a, !0), e = b || a.effect ? z.effects.get(b || a.effect) : c.effects, f = c.layerEl, g = d.layerEl;
return c._swap(f, g, e, function () {
m(c.bodyEl, c.wrapEl), m(c.bodyEl, d.wrapEl)
}, function () {
n(d.wrapEl), m(c.wrapEl, g), c.el = d.el, c.layerEl = g, c.contentEl = y(g), c.context.el = g
})
}, innerSwap: function (a, b) {
a = j({}, this.options, a);
var c = this, d = x({}, a, !0), e = b || a.effect ? z.effects.get(b || a.effect) : c.effects, f = k(".ply-inside", d.layerEl), g = k(".ply-inside", c.layerEl);
return c._swap(g, f, e, function () {
t(g, {width: g.offsetWidth + "px", position: "absolute"}), m(g.parentNode, f)
}, G)
}, destroy: function () {
n(this.wrapEl), this._deactivate(), z.stack.remove(this), this.visible = !1, this.options.destroy(this)
}};
var S = [], T = S.push, U = S.splice;
return z.stack = {_idx: {}, last: null, length: 0, _pop: function (a) {
var b = z.stack.last;
a.keyCode === L.esc && b.hasFlag("closeByEsc") && b.closeBy("esc")
}, add: function (a) {
var b = T.call(this, a);
this.last = a, this._idx[a.cid] = b - 1, 1 === b && o(H, "keyup", this._pop)
}, remove: function (a) {
var b = this._idx[a.cid];
b >= 0 && (U.call(this, b, 1), delete this._idx[a.cid], this.last = this[this.length - 1], this.last || p(H, "keyup", this._pop))
}}, z.effects = {defaults: {duration: 300, open: {layer: null, overlay: null}, close: {layer: null, overlay: null}}, setup: function (a) {
this.defaults = this.get(a)
}, set: function (a) {
j(this, a)
}, get: function (a) {
function b(a) {
var b = /^([\w_-]+)(?::(\d+%?))?(\[[^\]]+\])?/.exec(a) || [];
return{name: b[1] || a, duration: b[2] || null, args: JSON.parse(b[3] || "null") || {}}
}
function c(c, d, e) {
var f = b(d), g = c[f.name] || e || {}, h = f.duration || g.duration || c.duration || a.duration;
return"string" == typeof g && (g = b(g), delete g.args), /%/.test(g.duration) && (g.duration = parseInt(g.duration, 10) / 100 * h), g.duration = 0 | (g.duration || h), g
}
var d = i(this.defaults);
if ("string" == typeof a) {
var e = b(a);
a = i(this[e.name] || {open: {}, close: {}}), a.duration = e.duration || a.duration, a.open.args = e.args[0], a.close.args = e.args[1]
} else if (a instanceof Array) {
var f = b(a[0]), g = b(a[1]), h = this[f.name], j = this[g.name];
a = {open: i(h && h.open || {layer: a[0], overlay: a[0]}), close: i(j && j.close || {layer: a[1], overlay: a[1]})}, a.open.args = f.args[0], a.close.args = g.args[0]
} else a instanceof Object || (a = {});
a.duration = 0 | (a.duration || d.duration);
for (var k in{open: 0, close: 0}) {
var l = a[k] || d[k] || {};
"string" == typeof l && (l = {layer: l}), l.layer = c(l, "layer", d[k].layer), l.overlay = c(l, "overlay", d[k].overlay), void 0 === l.args && delete l.args, a[k] = l
}
return a
}, apply: function (a, b) {
b = b.split(".");
var e, g, j = this[b[0]], k = a.firstChild, l = [a.getAttribute("style"), k && k.getAttribute("style")];
return K.transition && j && (g = j[b[1]]) && (e = z.effects[g.name]) && (e.to || e.from) ? (e = i(e), t(a, "transition", "none"), t(k, "transition", "none"), h(e.to, function (b, c, d) {
"&" === b && (d[c] = t(a, c))
}), c(e.from) ? e.from(a, j.args) : e.from && t(a, e.from), d(function (b) {
e.width = a.offsetWidth, t(a, "transition", "all " + g.duration + "ms"), t(k, "transition", "all " + g.duration + "ms"), c(e.to) ? e.to(a, j.args) : t(a, e.to), I(b, g.duration)
}).then(function () {
a.setAttribute("style", l[0]), k && k.setAttribute("style", l[1])
})) : f()
}}, z.effects.set({fade: {open: {layer: "fade-in:80%", overlay: "fade-in:100%"}, close: {layer: "fade-out:60%", overlay: "fade-out:60%"}}, scale: {open: {layer: "scale-in", overlay: "fade-in"}, close: {layer: "scale-out", overlay: "fade-out"}}, fall: {open: {layer: "fall-in", overlay: "fade-in"}, close: {layer: "fall-out", overlay: "fade-out"}}, slide: {open: {layer: "slide-in", overlay: "fade-in"}, close: {layer: "slide-out", overlay: "fade-out"}}, "3d-flip": {open: {layer: "3d-flip-in", overlay: "fade-in"}, close: {layer: "3d-flip-out", overlay: "fade-out"}}, "3d-sign": {open: {layer: "3d-sign-in", overlay: "fade-in"}, close: {layer: "3d-sign-out", overlay: "fade-out"}}, inner: {open: {layer: "inner-in"}, close: {layer: "inner-out"}}, "fade-in": {from: {opacity: 0}, to: {opacity: "&"}}, "fade-out": {to: {opacity: 0}}, "slide-in": {from: {opacity: 0, transform: "translateY(20%)"}, to: {opacity: "&", transform: "translateY(0)"}}, "slide-out": {to: {opacity: 0, transform: "translateY(20%)"}}, "fall-in": {from: {opacity: 0, transform: "scale(1.3)"}, to: {opacity: "&", transform: "scale(1)"}}, "fall-out": {to: {opacity: 0, transform: "scale(1.3)"}}, "scale-in": {from: {opacity: 0, transform: "scale(0.7)"}, to: {opacity: "&", transform: "scale(1)"}}, "scale-out": {to: {opacity: 0, transform: "scale(0.7)"}}, rotate3d: function (a, b, c, d, e) {
t(a, {perspective: "1300px"}), t(a.firstChild, {opacity: b, transform: "rotate" + c + "(" + d + "deg)", transformStyle: "preserve-3d", transformOrigin: e ? "50% 0" : "50%"})
}, "3d-sign-in": {from: function (a) {
z.effects.rotate3d(a, 0, "X", -60, "50% 0")
}, to: function (a) {
t(a.firstChild, {opacity: 1, transform: "rotateX(0)"})
}}, "3d-sign-out": {from: function (a) {
z.effects.rotate3d(a, 1, "X", 0, "50% 0")
}, to: function (a) {
t(a.firstChild, {opacity: 0, transform: "rotateX(-60deg)"})
}}, "3d-flip-in": {from: function (a, b) {
z.effects.rotate3d(a, 0, "Y", b || -70)
}, to: function (a) {
t(a.firstChild, {opacity: 1, transform: "rotateY(0)"})
}}, "3d-flip-out": {from: function (a) {
z.effects.rotate3d(a, 1, "Y", 0)
}, to: function (a, b) {
t(a.firstChild, {opacity: 0, transform: "rotateY(" + (b || 70) + "deg)"})
}}, "inner-in": {from: function (a) {
t(a, "transform", "translateX(100%)")
}, to: function (a) {
t(a, "transform", "translateX(0%)")
}}, "inner-out": {from: function (a) {
t(a, "transform", "translateX(0%)")
}, to: function (a) {
t(a, "transform", "translateX(-100%)")
}}}), A.fn = A.prototype = {constructor: A, getEl: function (a) {
return this.el ? k("[" + M + '-name="' + a + '"]', this.el) : void 0
}, val: function (a, b) {
var c = "string" == typeof a ? this.getEl(a) : a;
return c && null == c.value && (c = l(c, "input")[0] || l(c, "textarea")[0] || l(c, "select")[0]), c && null != b && (c.value = b), c && c.value || ""
}, toJSON: function () {
for (var a, b = this.el.querySelectorAll("[" + M + "-name]"), c = {}, d = b.length; d--;)a = b[d], c[a.getAttribute(M + "-name")] = this.val(a);
return c
}}, C.factory = function (a, b, c) {
C[a.replace(/^\s+|\s+$/g, "").replace(/\s+/g, " ")] = function (d, e) {
var f = H.createDocumentFragment();
if (null != d || ":root" === a) {
d = c ? d : B(d), h(c ? d : d.children, function (b, c) {
var d = ((e || a) + " " + c).replace(/^:\w+\s+/, ""), g = C(d, B(b, c), d);
m(f, g)
}), c || delete d.children;
var g = b(d, f);
return g.appendChild || j(g, d), g
}
return f
}
}, C.factory(":default", function (a, b) {
return a.children = b, a
}), C.factory(":root", function (a) {
return{tag: ".ply-form", className: a.mod, children: [C(":header", a.header), C(":content", a.content), a.ctrls && C(":default", {tag: "div.ply-footer", children: a.ctrls})]}
}), C.factory(":header", function (a, b) {
return{tag: ".ply-header", text: a.text, children: b}
}), C.factory(":content", function (a, b) {
return{tag: ".ply-content", children: b}
}, !0), C.factory("ok", function (a) {
return{ply: ":ok", tag: "button.ply-ctrl.ply-ok", text: a === !0 ? J.ok : a}
}), C.factory("cancel", function (a) {
return{ply: ":close", tag: "button.ply-ctrl.ply-cancel", type: "reset", text: a === !0 ? J.cancel : a}
}), D.use = function (a, b, c, d, e) {
D["_" + a](b, c, d, e)
}, D("default", function (a, b, c) {
c(b || {})
}), D("alert", function (a, b, c) {
c(E("alert", a, b, {ok: !0}))
}), D("confirm", function (a, b, c) {
c(E("confirm", a, b, {ok: !0, cancel: !0}))
}), D("prompt", function (a, b, c) {
c(E("prompt", a, b, {ok: !0, cancel: !0}))
}), C.factory("dialog-form *", function (a) {
return{tag: "input.ply-input", type: a.type || "text", name: a.name, value: a.value, required: !0, placeholder: a.hint || a.text}
}), z.create = function (a, b, c) {
c || (c = b, b = {});
var d = D[a] || D["default"];
return d(b, c).then(function (a) {
return new z(j(b, {el: a}))
})
}, z.open = function (a, b, c) {
return z.create(a, b, c).then(function (a) {
return a.open()
})
}, z.dialog = function (a, b, c) {
return a instanceof Object ? (b = b || {}, d(function (c, d) {
var e, f, g, i = b.initState, k = a, l = {}, m = function (a, c) {
(b.progress || G)(j({name: e.$name, index: e.$index, length: o, stack: k, current: e, layer: c}, a), l)
}, n = function (a, b, c) {
var d = JSON.parse(JSON.stringify(a.data));
e = a, g = !0, (a.prepare || G)(d, l), z.create(a.ui || "alert", a.options || {}, d).then(function (d) {
var e;
f ? e = f[/^inner/.test(b) ? "innerSwap" : "swap"](d, b) : (f = d, e = f.open()), e.then(function () {
l[a.$name].el = f.layerEl, g = !1
}), c(f)
})
}, o = 0;
h(k, function (a, b) {
i = i || b, a.effects = a.effects || {}, a.$name = b, a.$index = o++, l[b] = new z.Context
}), k.$length = o, n(k[i], null, function (a) {
m({}, a), f.options.callback = function (a) {
if (g)return!1;
var b = a.state || "next" === e.back, f = k[e[b ? "next" : "back"]];
return f ? (n(f, e[b ? "nextEffect" : "backEffect"], function (b) {
m(a, b)
}), !1) : void(a.state ? c : d)(a, l)
}
})
})) : (c || (c = b || {}, b = {}), z.open(a, b, c).then(function (a) {
return d(function (b) {
a.options.close = function () {
b(a.result)
}
})
}))
}, z.ui = C, z.factory = D, z.lang = J, z.css = t, z.cssHooks = R, z.keys = L, z.noop = G, z.each = h, z.extend = j, z.promise = d, z.support = K, z.defaults = N, z.attrName = M, z.Context = A, z.dom = {build: q, append: m, remove: n, addEvent: o, removeEvent: p}, z
});