Upload new website
@@ -1,7 +0,0 @@
|
|||||||
# MS-Office-Electron
|
|
||||||
|
|
||||||
A Microsoft Office Online Desktop Client made with Electron. Free of Cost.
|
|
||||||
|
|
||||||
# Website
|
|
||||||
|
|
||||||
Just a website for the MS-Office-Electron App, nothing much
|
|
||||||
4398
docs/assets/css/fontawesome-all.min.css
vendored
|
Before Width: | Height: | Size: 17 KiB |
150
docs/assets/js/breakpoints.min.js
vendored
@@ -1,150 +0,0 @@
|
|||||||
/* breakpoints.js v1.0 | @ajlkn | MIT licensed */
|
|
||||||
var breakpoints = (function () {
|
|
||||||
"use strict";
|
|
||||||
function e(e) {
|
|
||||||
t.init(e);
|
|
||||||
}
|
|
||||||
var t = {
|
|
||||||
list: null,
|
|
||||||
media: {},
|
|
||||||
events: [],
|
|
||||||
init: function (e) {
|
|
||||||
(t.list = e),
|
|
||||||
window.addEventListener("resize", t.poll),
|
|
||||||
window.addEventListener("orientationchange", t.poll),
|
|
||||||
window.addEventListener("load", t.poll),
|
|
||||||
window.addEventListener("fullscreenchange", t.poll);
|
|
||||||
},
|
|
||||||
active: function (e) {
|
|
||||||
var n, a, s, i, r, d, c;
|
|
||||||
if (!(e in t.media)) {
|
|
||||||
if (
|
|
||||||
(">=" == e.substr(0, 2)
|
|
||||||
? ((a = "gte"), (n = e.substr(2)))
|
|
||||||
: "<=" == e.substr(0, 2)
|
|
||||||
? ((a = "lte"), (n = e.substr(2)))
|
|
||||||
: ">" == e.substr(0, 1)
|
|
||||||
? ((a = "gt"), (n = e.substr(1)))
|
|
||||||
: "<" == e.substr(0, 1)
|
|
||||||
? ((a = "lt"), (n = e.substr(1)))
|
|
||||||
: "!" == e.substr(0, 1)
|
|
||||||
? ((a = "not"), (n = e.substr(1)))
|
|
||||||
: ((a = "eq"), (n = e)),
|
|
||||||
n && n in t.list)
|
|
||||||
)
|
|
||||||
if (((i = t.list[n]), Array.isArray(i))) {
|
|
||||||
if (((r = parseInt(i[0])), (d = parseInt(i[1])), isNaN(r))) {
|
|
||||||
if (isNaN(d)) return;
|
|
||||||
c = i[1].substr(String(d).length);
|
|
||||||
} else c = i[0].substr(String(r).length);
|
|
||||||
if (isNaN(r))
|
|
||||||
switch (a) {
|
|
||||||
case "gte":
|
|
||||||
s = "screen";
|
|
||||||
break;
|
|
||||||
case "lte":
|
|
||||||
s = "screen and (max-width: " + d + c + ")";
|
|
||||||
break;
|
|
||||||
case "gt":
|
|
||||||
s = "screen and (min-width: " + (d + 1) + c + ")";
|
|
||||||
break;
|
|
||||||
case "lt":
|
|
||||||
s = "screen and (max-width: -1px)";
|
|
||||||
break;
|
|
||||||
case "not":
|
|
||||||
s = "screen and (min-width: " + (d + 1) + c + ")";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
s = "screen and (max-width: " + d + c + ")";
|
|
||||||
}
|
|
||||||
else if (isNaN(d))
|
|
||||||
switch (a) {
|
|
||||||
case "gte":
|
|
||||||
s = "screen and (min-width: " + r + c + ")";
|
|
||||||
break;
|
|
||||||
case "lte":
|
|
||||||
s = "screen";
|
|
||||||
break;
|
|
||||||
case "gt":
|
|
||||||
s = "screen and (max-width: -1px)";
|
|
||||||
break;
|
|
||||||
case "lt":
|
|
||||||
s = "screen and (max-width: " + (r - 1) + c + ")";
|
|
||||||
break;
|
|
||||||
case "not":
|
|
||||||
s = "screen and (max-width: " + (r - 1) + c + ")";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
s = "screen and (min-width: " + r + c + ")";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
switch (a) {
|
|
||||||
case "gte":
|
|
||||||
s = "screen and (min-width: " + r + c + ")";
|
|
||||||
break;
|
|
||||||
case "lte":
|
|
||||||
s = "screen and (max-width: " + d + c + ")";
|
|
||||||
break;
|
|
||||||
case "gt":
|
|
||||||
s = "screen and (min-width: " + (d + 1) + c + ")";
|
|
||||||
break;
|
|
||||||
case "lt":
|
|
||||||
s = "screen and (max-width: " + (r - 1) + c + ")";
|
|
||||||
break;
|
|
||||||
case "not":
|
|
||||||
s =
|
|
||||||
"screen and (max-width: " +
|
|
||||||
(r - 1) +
|
|
||||||
c +
|
|
||||||
"), screen and (min-width: " +
|
|
||||||
(d + 1) +
|
|
||||||
c +
|
|
||||||
")";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
s =
|
|
||||||
"screen and (min-width: " +
|
|
||||||
r +
|
|
||||||
c +
|
|
||||||
") and (max-width: " +
|
|
||||||
d +
|
|
||||||
c +
|
|
||||||
")";
|
|
||||||
}
|
|
||||||
} else s = "(" == i.charAt(0) ? "screen and " + i : i;
|
|
||||||
t.media[e] = !!s && s;
|
|
||||||
}
|
|
||||||
return t.media[e] !== !1 && window.matchMedia(t.media[e]).matches;
|
|
||||||
},
|
|
||||||
on: function (e, n) {
|
|
||||||
t.events.push({ query: e, handler: n, state: !1 }), t.active(e) && n();
|
|
||||||
},
|
|
||||||
poll: function () {
|
|
||||||
var e, n;
|
|
||||||
for (e = 0; e < t.events.length; e++)
|
|
||||||
(n = t.events[e]),
|
|
||||||
t.active(n.query)
|
|
||||||
? n.state || ((n.state = !0), n.handler())
|
|
||||||
: n.state && (n.state = !1);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return (
|
|
||||||
(e._ = t),
|
|
||||||
(e.on = function (e, n) {
|
|
||||||
t.on(e, n);
|
|
||||||
}),
|
|
||||||
(e.active = function (e) {
|
|
||||||
return t.active(e);
|
|
||||||
}),
|
|
||||||
e
|
|
||||||
);
|
|
||||||
})();
|
|
||||||
!(function (e, t) {
|
|
||||||
"function" == typeof define && define.amd
|
|
||||||
? define([], t)
|
|
||||||
: "object" == typeof exports
|
|
||||||
? (module.exports = t())
|
|
||||||
: (e.breakpoints = t());
|
|
||||||
})(this, function () {
|
|
||||||
return breakpoints;
|
|
||||||
});
|
|
||||||
118
docs/assets/js/browser.min.js
vendored
@@ -1,118 +0,0 @@
|
|||||||
/* browser.js v1.0 | @ajlkn | MIT licensed */
|
|
||||||
var browser = (function () {
|
|
||||||
"use strict";
|
|
||||||
var e = {
|
|
||||||
name: null,
|
|
||||||
version: null,
|
|
||||||
os: null,
|
|
||||||
osVersion: null,
|
|
||||||
touch: null,
|
|
||||||
mobile: null,
|
|
||||||
_canUse: null,
|
|
||||||
canUse: function (n) {
|
|
||||||
e._canUse || (e._canUse = document.createElement("div"));
|
|
||||||
var o = e._canUse.style,
|
|
||||||
r = n.charAt(0).toUpperCase() + n.slice(1);
|
|
||||||
return (
|
|
||||||
n in o ||
|
|
||||||
"Moz" + r in o ||
|
|
||||||
"Webkit" + r in o ||
|
|
||||||
"O" + r in o ||
|
|
||||||
"ms" + r in o
|
|
||||||
);
|
|
||||||
},
|
|
||||||
init: function () {
|
|
||||||
var n,
|
|
||||||
o,
|
|
||||||
r,
|
|
||||||
i,
|
|
||||||
t = navigator.userAgent;
|
|
||||||
for (
|
|
||||||
n = "other",
|
|
||||||
o = 0,
|
|
||||||
r = [
|
|
||||||
["firefox", /Firefox\/([0-9\.]+)/],
|
|
||||||
["bb", /BlackBerry.+Version\/([0-9\.]+)/],
|
|
||||||
["bb", /BB[0-9]+.+Version\/([0-9\.]+)/],
|
|
||||||
["opera", /OPR\/([0-9\.]+)/],
|
|
||||||
["opera", /Opera\/([0-9\.]+)/],
|
|
||||||
["edge", /Edge\/([0-9\.]+)/],
|
|
||||||
["safari", /Version\/([0-9\.]+).+Safari/],
|
|
||||||
["chrome", /Chrome\/([0-9\.]+)/],
|
|
||||||
["ie", /MSIE ([0-9]+)/],
|
|
||||||
["ie", /Trident\/.+rv:([0-9]+)/],
|
|
||||||
],
|
|
||||||
i = 0;
|
|
||||||
i < r.length;
|
|
||||||
i++
|
|
||||||
)
|
|
||||||
if (t.match(r[i][1])) {
|
|
||||||
(n = r[i][0]), (o = parseFloat(RegExp.$1));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
for (
|
|
||||||
e.name = n,
|
|
||||||
e.version = o,
|
|
||||||
n = "other",
|
|
||||||
o = 0,
|
|
||||||
r = [
|
|
||||||
[
|
|
||||||
"ios",
|
|
||||||
/([0-9_]+) like Mac OS X/,
|
|
||||||
function (e) {
|
|
||||||
return e.replace("_", ".").replace("_", "");
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ios",
|
|
||||||
/CPU like Mac OS X/,
|
|
||||||
function (e) {
|
|
||||||
return 0;
|
|
||||||
},
|
|
||||||
],
|
|
||||||
["wp", /Windows Phone ([0-9\.]+)/, null],
|
|
||||||
["android", /Android ([0-9\.]+)/, null],
|
|
||||||
[
|
|
||||||
"mac",
|
|
||||||
/Macintosh.+Mac OS X ([0-9_]+)/,
|
|
||||||
function (e) {
|
|
||||||
return e.replace("_", ".").replace("_", "");
|
|
||||||
},
|
|
||||||
],
|
|
||||||
["windows", /Windows NT ([0-9\.]+)/, null],
|
|
||||||
["bb", /BlackBerry.+Version\/([0-9\.]+)/, null],
|
|
||||||
["bb", /BB[0-9]+.+Version\/([0-9\.]+)/, null],
|
|
||||||
["linux", /Linux/, null],
|
|
||||||
["bsd", /BSD/, null],
|
|
||||||
["unix", /X11/, null],
|
|
||||||
],
|
|
||||||
i = 0;
|
|
||||||
i < r.length;
|
|
||||||
i++
|
|
||||||
)
|
|
||||||
if (t.match(r[i][1])) {
|
|
||||||
(n = r[i][0]),
|
|
||||||
(o = parseFloat(r[i][2] ? r[i][2](RegExp.$1) : RegExp.$1));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
(e.os = n),
|
|
||||||
(e.osVersion = o),
|
|
||||||
(e.touch =
|
|
||||||
"wp" == e.os
|
|
||||||
? navigator.msMaxTouchPoints > 0
|
|
||||||
: !!("ontouchstart" in window)),
|
|
||||||
(e.mobile =
|
|
||||||
"wp" == e.os || "android" == e.os || "ios" == e.os || "bb" == e.os);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return e.init(), e;
|
|
||||||
})();
|
|
||||||
!(function (e, n) {
|
|
||||||
"function" == typeof define && define.amd
|
|
||||||
? define([], n)
|
|
||||||
: "object" == typeof exports
|
|
||||||
? (module.exports = n())
|
|
||||||
: (e.browser = n());
|
|
||||||
})(this, function () {
|
|
||||||
return browser;
|
|
||||||
});
|
|
||||||
5512
docs/assets/js/jquery.min.js
vendored
611
docs/assets/js/jquery.poptrox.min.js
vendored
@@ -1,611 +0,0 @@
|
|||||||
/* jquery.poptrox.js v2.5.2-dev | (c) @ajlkn | github.com/ajlkn/jquery.poptrox | MIT licensed */
|
|
||||||
!(function (e) {
|
|
||||||
(e.fn.poptrox_disableSelection = function () {
|
|
||||||
return e(this)
|
|
||||||
.css("user-select", "none")
|
|
||||||
.css("-khtml-user-select", "none")
|
|
||||||
.css("-moz-user-select", "none")
|
|
||||||
.css("-o-user-select", "none")
|
|
||||||
.css("-webkit-user-select", "none");
|
|
||||||
}),
|
|
||||||
(e.fn.poptrox = function (o) {
|
|
||||||
if (0 == this.length) return e(this);
|
|
||||||
if (this.length > 1) {
|
|
||||||
for (var t = 0; t < this.length; t++) e(this[t]).poptrox(o);
|
|
||||||
return e(this);
|
|
||||||
}
|
|
||||||
var p,
|
|
||||||
i,
|
|
||||||
s = e.extend(
|
|
||||||
{
|
|
||||||
preload: !1,
|
|
||||||
baseZIndex: 1e3,
|
|
||||||
fadeSpeed: 300,
|
|
||||||
overlayColor: "#000000",
|
|
||||||
overlayOpacity: 0.6,
|
|
||||||
overlayClass: "poptrox-overlay",
|
|
||||||
windowMargin: 50,
|
|
||||||
windowHeightPad: 0,
|
|
||||||
selector: "a",
|
|
||||||
caption: null,
|
|
||||||
parent: "body",
|
|
||||||
popupSpeed: 300,
|
|
||||||
popupWidth: 200,
|
|
||||||
popupHeight: 100,
|
|
||||||
popupIsFixed: !1,
|
|
||||||
useBodyOverflow: !1,
|
|
||||||
usePopupEasyClose: !0,
|
|
||||||
usePopupForceClose: !1,
|
|
||||||
usePopupLoader: !0,
|
|
||||||
usePopupCloser: !0,
|
|
||||||
usePopupCaption: !1,
|
|
||||||
usePopupNav: !1,
|
|
||||||
usePopupDefaultStyling: !0,
|
|
||||||
popupBackgroundColor: "#FFFFFF",
|
|
||||||
popupTextColor: "#000000",
|
|
||||||
popupLoaderTextSize: "2em",
|
|
||||||
popupCloserBackgroundColor: "#000000",
|
|
||||||
popupCloserTextColor: "#FFFFFF",
|
|
||||||
popupCloserTextSize: "20px",
|
|
||||||
popupPadding: 10,
|
|
||||||
popupCaptionHeight: 60,
|
|
||||||
popupCaptionTextSize: null,
|
|
||||||
popupBlankCaptionText: "(untitled)",
|
|
||||||
popupCloserText: "×",
|
|
||||||
popupLoaderText: "••••",
|
|
||||||
popupClass: "poptrox-popup",
|
|
||||||
popupSelector: null,
|
|
||||||
popupLoaderSelector: ".loader",
|
|
||||||
popupCloserSelector: ".closer",
|
|
||||||
popupCaptionSelector: ".caption",
|
|
||||||
popupNavPreviousSelector: ".nav-previous",
|
|
||||||
popupNavNextSelector: ".nav-next",
|
|
||||||
onPopupClose: null,
|
|
||||||
onPopupOpen: null,
|
|
||||||
},
|
|
||||||
o
|
|
||||||
),
|
|
||||||
r = e(this),
|
|
||||||
n = e("body"),
|
|
||||||
a = e('<div class="' + s.overlayClass + '"></div>'),
|
|
||||||
l = e(window),
|
|
||||||
u = [],
|
|
||||||
d = 0,
|
|
||||||
h = !1,
|
|
||||||
g = new Array(),
|
|
||||||
f = function () {
|
|
||||||
(p = l.width()), (i = l.height() + s.windowHeightPad);
|
|
||||||
var e = Math.abs(x.width() - x.outerWidth()),
|
|
||||||
o = Math.abs(x.height() - x.outerHeight()),
|
|
||||||
t = p - 2 * s.windowMargin - e,
|
|
||||||
r = i - 2 * s.windowMargin - o;
|
|
||||||
x.css("min-width", s.popupWidth).css("min-height", s.popupHeight),
|
|
||||||
v.children().css("max-width", t).css("max-height", r);
|
|
||||||
};
|
|
||||||
s.usePopupLoader || (s.popupLoaderSelector = null),
|
|
||||||
s.usePopupCloser || (s.popupCloserSelector = null),
|
|
||||||
s.usePopupCaption || (s.popupCaptionSelector = null),
|
|
||||||
s.usePopupNav ||
|
|
||||||
((s.popupNavPreviousSelector = null),
|
|
||||||
(s.popupNavNextSelector = null));
|
|
||||||
var x;
|
|
||||||
x = e(
|
|
||||||
s.popupSelector
|
|
||||||
? s.popupSelector
|
|
||||||
: '<div class="' +
|
|
||||||
s.popupClass +
|
|
||||||
'">' +
|
|
||||||
(s.popupLoaderSelector
|
|
||||||
? '<div class="loader">' + s.popupLoaderText + "</div>"
|
|
||||||
: "") +
|
|
||||||
'<div class="pic"></div>' +
|
|
||||||
(s.popupCaptionSelector ? '<div class="caption"></div>' : "") +
|
|
||||||
(s.popupCloserSelector
|
|
||||||
? '<span class="closer">' + s.popupCloserText + "</span>"
|
|
||||||
: "") +
|
|
||||||
(s.popupNavPreviousSelector
|
|
||||||
? '<div class="nav-previous"></div>'
|
|
||||||
: "") +
|
|
||||||
(s.popupNavNextSelector ? '<div class="nav-next"></div>' : "") +
|
|
||||||
"</div>"
|
|
||||||
);
|
|
||||||
var v = x.find(".pic"),
|
|
||||||
w = e(),
|
|
||||||
b = x.find(s.popupLoaderSelector),
|
|
||||||
m = x.find(s.popupCaptionSelector),
|
|
||||||
C = x.find(s.popupCloserSelector),
|
|
||||||
y = x.find(s.popupNavNextSelector),
|
|
||||||
S = x.find(s.popupNavPreviousSelector),
|
|
||||||
P = y.add(S);
|
|
||||||
if (
|
|
||||||
s.usePopupDefaultStyling &&
|
|
||||||
(x
|
|
||||||
.css("background", s.popupBackgroundColor)
|
|
||||||
.css("color", s.popupTextColor)
|
|
||||||
.css("padding", s.popupPadding + "px"),
|
|
||||||
m.length > 0 &&
|
|
||||||
(x.css("padding-bottom", s.popupCaptionHeight + "px"),
|
|
||||||
m
|
|
||||||
.css("position", "absolute")
|
|
||||||
.css("left", "0")
|
|
||||||
.css("bottom", "0")
|
|
||||||
.css("width", "100%")
|
|
||||||
.css("text-align", "center")
|
|
||||||
.css("height", s.popupCaptionHeight + "px")
|
|
||||||
.css("line-height", s.popupCaptionHeight + "px"),
|
|
||||||
s.popupCaptionTextSize && m.css("font-size", popupCaptionTextSize)),
|
|
||||||
C.length > 0 &&
|
|
||||||
C.html(s.popupCloserText)
|
|
||||||
.css("font-size", s.popupCloserTextSize)
|
|
||||||
.css("background", s.popupCloserBackgroundColor)
|
|
||||||
.css("color", s.popupCloserTextColor)
|
|
||||||
.css("display", "block")
|
|
||||||
.css("width", "40px")
|
|
||||||
.css("height", "40px")
|
|
||||||
.css("line-height", "40px")
|
|
||||||
.css("text-align", "center")
|
|
||||||
.css("position", "absolute")
|
|
||||||
.css("text-decoration", "none")
|
|
||||||
.css("outline", "0")
|
|
||||||
.css("top", "0")
|
|
||||||
.css("right", "-40px"),
|
|
||||||
b.length > 0 &&
|
|
||||||
b
|
|
||||||
.html("")
|
|
||||||
.css("position", "relative")
|
|
||||||
.css("font-size", s.popupLoaderTextSize)
|
|
||||||
.on("startSpinning", function (o) {
|
|
||||||
var t = e("<div>" + s.popupLoaderText + "</div>");
|
|
||||||
t
|
|
||||||
.css("height", Math.floor(s.popupHeight / 2) + "px")
|
|
||||||
.css("overflow", "hidden")
|
|
||||||
.css("line-height", Math.floor(s.popupHeight / 2) + "px")
|
|
||||||
.css("text-align", "center")
|
|
||||||
.css(
|
|
||||||
"margin-top",
|
|
||||||
Math.floor(
|
|
||||||
(x.height() -
|
|
||||||
t.height() +
|
|
||||||
(m.length > 0 ? m.height() : 0)) /
|
|
||||||
2
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.css("color", s.popupTextColor ? s.popupTextColor : "")
|
|
||||||
.on("xfin", function () {
|
|
||||||
t.fadeTo(300, 0.5, function () {
|
|
||||||
t.trigger("xfout");
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.on("xfout", function () {
|
|
||||||
t.fadeTo(300, 0.05, function () {
|
|
||||||
t.trigger("xfin");
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.trigger("xfin"),
|
|
||||||
b.append(t);
|
|
||||||
})
|
|
||||||
.on("stopSpinning", function (e) {
|
|
||||||
var o = b.find("div");
|
|
||||||
o.remove();
|
|
||||||
}),
|
|
||||||
2 == P.length)
|
|
||||||
) {
|
|
||||||
P.css("font-size", "75px")
|
|
||||||
.css("text-align", "center")
|
|
||||||
.css("color", "#fff")
|
|
||||||
.css("text-shadow", "none")
|
|
||||||
.css("height", "100%")
|
|
||||||
.css("position", "absolute")
|
|
||||||
.css("top", "0")
|
|
||||||
.css("opacity", "0.35")
|
|
||||||
.css("cursor", "pointer")
|
|
||||||
.css("box-shadow", "inset 0px 0px 10px 0px rgba(0,0,0,0)")
|
|
||||||
.poptrox_disableSelection();
|
|
||||||
var k, T;
|
|
||||||
s.usePopupEasyClose
|
|
||||||
? ((k = "100px"), (T = "100px"))
|
|
||||||
: ((k = "75%"), (T = "25%")),
|
|
||||||
y
|
|
||||||
.css("right", "0")
|
|
||||||
.css("width", k)
|
|
||||||
.html(
|
|
||||||
'<div style="position: absolute; height: 100px; width: 125px; top: 50%; right: 0; margin-top: -50px;">></div>'
|
|
||||||
),
|
|
||||||
S.css("left", "0")
|
|
||||||
.css("width", T)
|
|
||||||
.html(
|
|
||||||
'<div style="position: absolute; height: 100px; width: 125px; top: 50%; left: 0; margin-top: -50px;"><</div>'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return (
|
|
||||||
l.on("resize orientationchange", function () {
|
|
||||||
f();
|
|
||||||
}),
|
|
||||||
m.on("update", function (e, o) {
|
|
||||||
(o && 0 != o.length) || (o = s.popupBlankCaptionText), m.html(o);
|
|
||||||
}),
|
|
||||||
C.css("cursor", "pointer").on("click", function (e) {
|
|
||||||
return (
|
|
||||||
e.preventDefault(),
|
|
||||||
e.stopPropagation(),
|
|
||||||
x.trigger("poptrox_close"),
|
|
||||||
!0
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
y.on("click", function (e) {
|
|
||||||
e.stopPropagation(), e.preventDefault(), x.trigger("poptrox_next");
|
|
||||||
}),
|
|
||||||
S.on("click", function (e) {
|
|
||||||
e.stopPropagation(),
|
|
||||||
e.preventDefault(),
|
|
||||||
x.trigger("poptrox_previous");
|
|
||||||
}),
|
|
||||||
a
|
|
||||||
.css("position", "fixed")
|
|
||||||
.css("left", 0)
|
|
||||||
.css("top", 0)
|
|
||||||
.css("z-index", s.baseZIndex)
|
|
||||||
.css("width", "100%")
|
|
||||||
.css("height", "100%")
|
|
||||||
.css("text-align", "center")
|
|
||||||
.css("cursor", "pointer")
|
|
||||||
.appendTo(s.parent)
|
|
||||||
.prepend(
|
|
||||||
'<div style="display:inline-block;height:100%;vertical-align:middle;"></div>'
|
|
||||||
)
|
|
||||||
.append(
|
|
||||||
'<div style="position:absolute;left:0;top:0;width:100%;height:100%;background:' +
|
|
||||||
s.overlayColor +
|
|
||||||
";opacity:" +
|
|
||||||
s.overlayOpacity +
|
|
||||||
";filter:alpha(opacity=" +
|
|
||||||
100 * s.overlayOpacity +
|
|
||||||
');"></div>'
|
|
||||||
)
|
|
||||||
.hide()
|
|
||||||
.on("touchmove", function (e) {
|
|
||||||
return !1;
|
|
||||||
})
|
|
||||||
.on("click", function (e) {
|
|
||||||
e.preventDefault(), e.stopPropagation(), x.trigger("poptrox_close");
|
|
||||||
}),
|
|
||||||
x
|
|
||||||
.css("display", "inline-block")
|
|
||||||
.css("vertical-align", "middle")
|
|
||||||
.css("position", "relative")
|
|
||||||
.css("z-index", 1)
|
|
||||||
.css("cursor", "auto")
|
|
||||||
.appendTo(a)
|
|
||||||
.hide()
|
|
||||||
.on("poptrox_next", function () {
|
|
||||||
var e = d + 1;
|
|
||||||
e >= u.length && (e = 0), x.trigger("poptrox_switch", [e]);
|
|
||||||
})
|
|
||||||
.on("poptrox_previous", function () {
|
|
||||||
var e = d - 1;
|
|
||||||
e < 0 && (e = u.length - 1), x.trigger("poptrox_switch", [e]);
|
|
||||||
})
|
|
||||||
.on("poptrox_reset", function () {
|
|
||||||
f(),
|
|
||||||
x.data("width", s.popupWidth).data("height", s.popupHeight),
|
|
||||||
b.hide().trigger("stopSpinning"),
|
|
||||||
m.hide(),
|
|
||||||
C.hide(),
|
|
||||||
P.hide(),
|
|
||||||
v.hide(),
|
|
||||||
w.attr("src", "").detach();
|
|
||||||
})
|
|
||||||
.on("poptrox_open", function (e, o) {
|
|
||||||
return (
|
|
||||||
!!h ||
|
|
||||||
((h = !0),
|
|
||||||
s.useBodyOverflow && n.css("overflow", "hidden"),
|
|
||||||
s.onPopupOpen && s.onPopupOpen(),
|
|
||||||
x.addClass("loading"),
|
|
||||||
void a.fadeTo(s.fadeSpeed, 1, function () {
|
|
||||||
x.trigger("poptrox_switch", [o, !0]);
|
|
||||||
}))
|
|
||||||
);
|
|
||||||
})
|
|
||||||
.on("poptrox_switch", function (o, t, p) {
|
|
||||||
var i;
|
|
||||||
if (!p && h) return !0;
|
|
||||||
if (
|
|
||||||
((h = !0),
|
|
||||||
x
|
|
||||||
.addClass("loading")
|
|
||||||
.css("width", x.data("width"))
|
|
||||||
.css("height", x.data("height")),
|
|
||||||
m.hide(),
|
|
||||||
w.attr("src") && w.attr("src", ""),
|
|
||||||
w.detach(),
|
|
||||||
(i = u[t]),
|
|
||||||
(w = i.object),
|
|
||||||
w.off("load"),
|
|
||||||
v.css("text-indent", "-9999px").show().append(w),
|
|
||||||
"ajax" == i.type
|
|
||||||
? e.get(i.src, function (e) {
|
|
||||||
w.html(e), w.trigger("load");
|
|
||||||
})
|
|
||||||
: w.attr("src", i.src),
|
|
||||||
"image" != i.type)
|
|
||||||
) {
|
|
||||||
var r, n;
|
|
||||||
(r = i.width),
|
|
||||||
(n = i.height),
|
|
||||||
"%" == r.slice(-1) &&
|
|
||||||
(r =
|
|
||||||
(parseInt(r.substring(0, r.length - 1)) / 100) * l.width()),
|
|
||||||
"%" == n.slice(-1) &&
|
|
||||||
(n =
|
|
||||||
(parseInt(n.substring(0, n.length - 1)) / 100) *
|
|
||||||
l.height()),
|
|
||||||
w
|
|
||||||
.css("position", "relative")
|
|
||||||
.css("outline", "0")
|
|
||||||
.css("z-index", s.baseZIndex + 100)
|
|
||||||
.width(r)
|
|
||||||
.height(n);
|
|
||||||
}
|
|
||||||
b.trigger("startSpinning").fadeIn(300),
|
|
||||||
x.show(),
|
|
||||||
s.popupIsFixed
|
|
||||||
? (x
|
|
||||||
.removeClass("loading")
|
|
||||||
.width(s.popupWidth)
|
|
||||||
.height(s.popupHeight),
|
|
||||||
w.on("load", function () {
|
|
||||||
w.off("load"),
|
|
||||||
b.hide().trigger("stopSpinning"),
|
|
||||||
m.trigger("update", [i.captionText]).fadeIn(s.fadeSpeed),
|
|
||||||
C.fadeIn(s.fadeSpeed),
|
|
||||||
v
|
|
||||||
.css("text-indent", 0)
|
|
||||||
.hide()
|
|
||||||
.fadeIn(s.fadeSpeed, function () {
|
|
||||||
h = !1;
|
|
||||||
}),
|
|
||||||
(d = t),
|
|
||||||
P.fadeIn(s.fadeSpeed);
|
|
||||||
}))
|
|
||||||
: w.on("load", function () {
|
|
||||||
f(), w.off("load"), b.hide().trigger("stopSpinning");
|
|
||||||
var e = w.width(),
|
|
||||||
o = w.height(),
|
|
||||||
p = function () {
|
|
||||||
m
|
|
||||||
.trigger("update", [i.captionText])
|
|
||||||
.fadeIn(s.fadeSpeed),
|
|
||||||
C.fadeIn(s.fadeSpeed),
|
|
||||||
v
|
|
||||||
.css("text-indent", 0)
|
|
||||||
.hide()
|
|
||||||
.fadeIn(s.fadeSpeed, function () {
|
|
||||||
h = !1;
|
|
||||||
}),
|
|
||||||
(d = t),
|
|
||||||
P.fadeIn(s.fadeSpeed),
|
|
||||||
x
|
|
||||||
.removeClass("loading")
|
|
||||||
.data("width", e)
|
|
||||||
.data("height", o)
|
|
||||||
.css("width", "auto")
|
|
||||||
.css("height", "auto");
|
|
||||||
};
|
|
||||||
e == x.data("width") && o == x.data("height")
|
|
||||||
? p()
|
|
||||||
: x.animate(
|
|
||||||
{ width: e, height: o },
|
|
||||||
s.popupSpeed,
|
|
||||||
"swing",
|
|
||||||
p
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
"image" != i.type && w.trigger("load");
|
|
||||||
})
|
|
||||||
.on("poptrox_close", function () {
|
|
||||||
return (
|
|
||||||
!(!h || s.usePopupForceClose) ||
|
|
||||||
((h = !0),
|
|
||||||
x.hide().trigger("poptrox_reset"),
|
|
||||||
s.onPopupClose && s.onPopupClose(),
|
|
||||||
void a.fadeOut(s.fadeSpeed, function () {
|
|
||||||
s.useBodyOverflow && n.css("overflow", "auto"), (h = !1);
|
|
||||||
}))
|
|
||||||
);
|
|
||||||
})
|
|
||||||
.trigger("poptrox_reset"),
|
|
||||||
s.usePopupEasyClose
|
|
||||||
? (m.on("click", "a", function (e) {
|
|
||||||
e.stopPropagation();
|
|
||||||
}),
|
|
||||||
x.css("cursor", "pointer").on("click", function (e) {
|
|
||||||
e.stopPropagation(),
|
|
||||||
e.preventDefault(),
|
|
||||||
x.trigger("poptrox_close");
|
|
||||||
}))
|
|
||||||
: x.on("click", function (e) {
|
|
||||||
e.stopPropagation();
|
|
||||||
}),
|
|
||||||
l.keydown(function (e) {
|
|
||||||
if (x.is(":visible"))
|
|
||||||
switch (e.keyCode) {
|
|
||||||
case 37:
|
|
||||||
case 32:
|
|
||||||
if (s.usePopupNav) return x.trigger("poptrox_previous"), !1;
|
|
||||||
break;
|
|
||||||
case 39:
|
|
||||||
if (s.usePopupNav) return x.trigger("poptrox_next"), !1;
|
|
||||||
break;
|
|
||||||
case 27:
|
|
||||||
return x.trigger("poptrox_close"), !1;
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
r.find(s.selector).each(function (o) {
|
|
||||||
var t,
|
|
||||||
p,
|
|
||||||
i = e(this),
|
|
||||||
r = i.find("img"),
|
|
||||||
n = i.data("poptrox");
|
|
||||||
if ("ignore" != n && i.attr("href")) {
|
|
||||||
if (
|
|
||||||
((t = {
|
|
||||||
src: i.attr("href"),
|
|
||||||
captionText: r.attr("title"),
|
|
||||||
width: null,
|
|
||||||
height: null,
|
|
||||||
type: null,
|
|
||||||
object: null,
|
|
||||||
options: null,
|
|
||||||
}),
|
|
||||||
s.caption)
|
|
||||||
) {
|
|
||||||
if ("function" == typeof s.caption) c = s.caption(i);
|
|
||||||
else if ("selector" in s.caption) {
|
|
||||||
var a;
|
|
||||||
(a = i.find(s.caption.selector)),
|
|
||||||
"attribute" in s.caption
|
|
||||||
? (c = a.attr(s.caption.attribute))
|
|
||||||
: ((c = a.html()), s.caption.remove === !0 && a.remove());
|
|
||||||
}
|
|
||||||
} else c = r.attr("title");
|
|
||||||
if (((t.captionText = c), n)) {
|
|
||||||
var l = n.split(",");
|
|
||||||
0 in l && (t.type = l[0]),
|
|
||||||
1 in l &&
|
|
||||||
((p = l[1].match(/([0-9%]+)x([0-9%]+)/)),
|
|
||||||
p && 3 == p.length && ((t.width = p[1]), (t.height = p[2]))),
|
|
||||||
2 in l && (t.options = l[2]);
|
|
||||||
}
|
|
||||||
if (!t.type)
|
|
||||||
switch (
|
|
||||||
((p = t.src.match(/\/\/([a-z0-9\.]+)\/.*/)),
|
|
||||||
(!p || p.length < 2) && (p = [!1]),
|
|
||||||
p[1])
|
|
||||||
) {
|
|
||||||
case "api.soundcloud.com":
|
|
||||||
t.type = "soundcloud";
|
|
||||||
break;
|
|
||||||
case "youtu.be":
|
|
||||||
t.type = "youtube";
|
|
||||||
break;
|
|
||||||
case "vimeo.com":
|
|
||||||
t.type = "vimeo";
|
|
||||||
break;
|
|
||||||
case "wistia.net":
|
|
||||||
t.type = "wistia";
|
|
||||||
break;
|
|
||||||
case "bcove.me":
|
|
||||||
t.type = "bcove";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
t.type = "image";
|
|
||||||
}
|
|
||||||
switch (((p = t.src.match(/\/\/[a-z0-9\.]+\/(.*)/)), t.type)) {
|
|
||||||
case "iframe":
|
|
||||||
(t.object = e('<iframe src="" frameborder="0"></iframe>')),
|
|
||||||
t.object
|
|
||||||
.on("click", function (e) {
|
|
||||||
e.stopPropagation();
|
|
||||||
})
|
|
||||||
.css("cursor", "auto"),
|
|
||||||
(t.width && t.height) ||
|
|
||||||
((t.width = "600"), (t.height = "400"));
|
|
||||||
break;
|
|
||||||
case "ajax":
|
|
||||||
(t.object = e('<div class="poptrox-ajax"></div>')),
|
|
||||||
t.object
|
|
||||||
.on("click", function (e) {
|
|
||||||
e.stopPropagation();
|
|
||||||
})
|
|
||||||
.css("cursor", "auto")
|
|
||||||
.css("overflow", "auto"),
|
|
||||||
(t.width && t.height) ||
|
|
||||||
((t.width = "600"), (t.height = "400"));
|
|
||||||
break;
|
|
||||||
case "soundcloud":
|
|
||||||
(t.object = e(
|
|
||||||
'<iframe scrolling="no" frameborder="no" src=""></iframe>'
|
|
||||||
)),
|
|
||||||
(t.src =
|
|
||||||
"//w.soundcloud.com/player/?url=" +
|
|
||||||
escape(t.src) +
|
|
||||||
(t.options ? "&" + t.options : "")),
|
|
||||||
(t.width = "600"),
|
|
||||||
(t.height = "166");
|
|
||||||
break;
|
|
||||||
case "youtube":
|
|
||||||
(t.object = e(
|
|
||||||
'<iframe src="" frameborder="0" allowfullscreen="1"></iframe>'
|
|
||||||
)),
|
|
||||||
(t.src =
|
|
||||||
"//www.youtube.com/embed/" +
|
|
||||||
p[1] +
|
|
||||||
(t.options ? "?" + t.options : "")),
|
|
||||||
(t.width && t.height) ||
|
|
||||||
((t.width = "800"), (t.height = "480"));
|
|
||||||
break;
|
|
||||||
case "vimeo":
|
|
||||||
(t.object = e(
|
|
||||||
'<iframe src="" frameborder="0" allowFullScreen="1"></iframe>'
|
|
||||||
)),
|
|
||||||
(t.src =
|
|
||||||
"//player.vimeo.com/video/" +
|
|
||||||
p[1] +
|
|
||||||
(t.options ? "?" + t.options : "")),
|
|
||||||
(t.width && t.height) ||
|
|
||||||
((t.width = "800"), (t.height = "480"));
|
|
||||||
break;
|
|
||||||
case "wistia":
|
|
||||||
(t.object = e(
|
|
||||||
'<iframe src="" frameborder="0" allowFullScreen="1"></iframe>'
|
|
||||||
)),
|
|
||||||
(t.src =
|
|
||||||
"//fast.wistia.net/" +
|
|
||||||
p[1] +
|
|
||||||
(t.options ? "?" + t.options : "")),
|
|
||||||
(t.width && t.height) ||
|
|
||||||
((t.width = "800"), (t.height = "480"));
|
|
||||||
break;
|
|
||||||
case "bcove":
|
|
||||||
(t.object = e(
|
|
||||||
'<iframe src="" frameborder="0" allowFullScreen="1" width="100%"></iframe>'
|
|
||||||
)),
|
|
||||||
(t.src =
|
|
||||||
"//bcove.me/" + p[1] + (t.options ? "?" + t.options : "")),
|
|
||||||
(t.width && t.height) ||
|
|
||||||
((t.width = "640"), (t.height = "360"));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (
|
|
||||||
((t.object = e(
|
|
||||||
'<img src="" alt="" style="vertical-align:bottom" />'
|
|
||||||
)),
|
|
||||||
s.preload)
|
|
||||||
) {
|
|
||||||
var p = document.createElement("img");
|
|
||||||
(p.src = t.src), g.push(p);
|
|
||||||
}
|
|
||||||
(t.width = i.attr("width")), (t.height = i.attr("height"));
|
|
||||||
}
|
|
||||||
"file:" == window.location.protocol &&
|
|
||||||
t.src.match(/^\/\//) &&
|
|
||||||
(t.src = "http:" + t.src),
|
|
||||||
u.push(t),
|
|
||||||
r.removeAttr("title"),
|
|
||||||
i
|
|
||||||
.removeAttr("href")
|
|
||||||
.css("cursor", "pointer")
|
|
||||||
.css("outline", 0)
|
|
||||||
.on("click", function (e) {
|
|
||||||
e.preventDefault(),
|
|
||||||
e.stopPropagation(),
|
|
||||||
x.trigger("poptrox_open", [o]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
r.prop("_poptrox", s),
|
|
||||||
r
|
|
||||||
);
|
|
||||||
});
|
|
||||||
})(jQuery);
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
/*
|
|
||||||
Strata by HTML5 UP
|
|
||||||
html5up.net | @ajlkn
|
|
||||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function ($) {
|
|
||||||
var $window = $(window),
|
|
||||||
$body = $("body"),
|
|
||||||
$header = $("#header"),
|
|
||||||
$footer = $("#footer"),
|
|
||||||
$main = $("#main"),
|
|
||||||
settings = {
|
|
||||||
// Parallax background effect?
|
|
||||||
parallax: true,
|
|
||||||
|
|
||||||
// Parallax factor (lower = more intense, higher = less intense).
|
|
||||||
parallaxFactor: 20,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Breakpoints.
|
|
||||||
breakpoints({
|
|
||||||
xlarge: ["1281px", "1800px"],
|
|
||||||
large: ["981px", "1280px"],
|
|
||||||
medium: ["737px", "980px"],
|
|
||||||
small: ["481px", "736px"],
|
|
||||||
xsmall: [null, "480px"],
|
|
||||||
});
|
|
||||||
|
|
||||||
// Play initial animations on page load.
|
|
||||||
$window.on("load", function () {
|
|
||||||
window.setTimeout(function () {
|
|
||||||
$body.removeClass("is-preload");
|
|
||||||
}, 100);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Touch?
|
|
||||||
if (browser.mobile) {
|
|
||||||
// Turn on touch mode.
|
|
||||||
$body.addClass("is-touch");
|
|
||||||
|
|
||||||
// Height fix (mostly for iOS).
|
|
||||||
window.setTimeout(function () {
|
|
||||||
$window.scrollTop($window.scrollTop() + 1);
|
|
||||||
}, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Footer.
|
|
||||||
breakpoints.on("<=medium", function () {
|
|
||||||
$footer.insertAfter($main);
|
|
||||||
});
|
|
||||||
|
|
||||||
breakpoints.on(">medium", function () {
|
|
||||||
$footer.appendTo($header);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Header.
|
|
||||||
|
|
||||||
// Parallax background.
|
|
||||||
|
|
||||||
// Disable parallax on IE (smooth scrolling is jerky), and on mobile platforms (= better performance).
|
|
||||||
if (browser.name == "ie" || browser.mobile) settings.parallax = false;
|
|
||||||
|
|
||||||
if (settings.parallax) {
|
|
||||||
breakpoints.on("<=medium", function () {
|
|
||||||
$window.off("scroll.strata_parallax");
|
|
||||||
$header.css("background-position", "");
|
|
||||||
});
|
|
||||||
|
|
||||||
breakpoints.on(">medium", function () {
|
|
||||||
$header.css("background-position", "left 0px");
|
|
||||||
|
|
||||||
$window.on("scroll.strata_parallax", function () {
|
|
||||||
$header.css(
|
|
||||||
"background-position",
|
|
||||||
"left " +
|
|
||||||
-1 * (parseInt($window.scrollTop()) / settings.parallaxFactor) +
|
|
||||||
"px"
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$window.on("load", function () {
|
|
||||||
$window.triggerHandler("scroll");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Main Sections: Two.
|
|
||||||
|
|
||||||
// Lightbox gallery.
|
|
||||||
$window.on("load", function () {
|
|
||||||
$("#two").poptrox({
|
|
||||||
caption: function ($a) {
|
|
||||||
return $a.next("h3").text();
|
|
||||||
},
|
|
||||||
overlayColor: "#2c2c2c",
|
|
||||||
overlayOpacity: 0.85,
|
|
||||||
popupCloserText: "",
|
|
||||||
popupLoaderText: "",
|
|
||||||
selector: ".work-item a.image",
|
|
||||||
usePopupCaption: true,
|
|
||||||
usePopupDefaultStyling: false,
|
|
||||||
usePopupEasyClose: false,
|
|
||||||
usePopupNav: true,
|
|
||||||
windowMargin: breakpoints.active("<=small") ? 0 : 50,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
})(jQuery);
|
|
||||||
@@ -1,490 +0,0 @@
|
|||||||
(function ($) {
|
|
||||||
/**
|
|
||||||
* Generate an indented list of links from a nav. Meant for use with panel().
|
|
||||||
* @return {jQuery} jQuery object.
|
|
||||||
*/
|
|
||||||
$.fn.navList = function () {
|
|
||||||
var $this = $(this);
|
|
||||||
($a = $this.find("a")), (b = []);
|
|
||||||
|
|
||||||
$a.each(function () {
|
|
||||||
var $this = $(this),
|
|
||||||
indent = Math.max(0, $this.parents("li").length - 1),
|
|
||||||
href = $this.attr("href"),
|
|
||||||
target = $this.attr("target");
|
|
||||||
|
|
||||||
b.push(
|
|
||||||
"<a " +
|
|
||||||
'class="link depth-' +
|
|
||||||
indent +
|
|
||||||
'"' +
|
|
||||||
(typeof target !== "undefined" && target != ""
|
|
||||||
? ' target="' + target + '"'
|
|
||||||
: "") +
|
|
||||||
(typeof href !== "undefined" && href != ""
|
|
||||||
? ' href="' + href + '"'
|
|
||||||
: "") +
|
|
||||||
">" +
|
|
||||||
'<span class="indent-' +
|
|
||||||
indent +
|
|
||||||
'"></span>' +
|
|
||||||
$this.text() +
|
|
||||||
"</a>"
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
return b.join("");
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Panel-ify an element.
|
|
||||||
* @param {object} userConfig User config.
|
|
||||||
* @return {jQuery} jQuery object.
|
|
||||||
*/
|
|
||||||
$.fn.panel = function (userConfig) {
|
|
||||||
// No elements?
|
|
||||||
if (this.length == 0) return $this;
|
|
||||||
|
|
||||||
// Multiple elements?
|
|
||||||
if (this.length > 1) {
|
|
||||||
for (var i = 0; i < this.length; i++) $(this[i]).panel(userConfig);
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vars.
|
|
||||||
var $this = $(this),
|
|
||||||
$body = $("body"),
|
|
||||||
$window = $(window),
|
|
||||||
id = $this.attr("id"),
|
|
||||||
config;
|
|
||||||
|
|
||||||
// Config.
|
|
||||||
config = $.extend(
|
|
||||||
{
|
|
||||||
// Delay.
|
|
||||||
delay: 0,
|
|
||||||
|
|
||||||
// Hide panel on link click.
|
|
||||||
hideOnClick: false,
|
|
||||||
|
|
||||||
// Hide panel on escape keypress.
|
|
||||||
hideOnEscape: false,
|
|
||||||
|
|
||||||
// Hide panel on swipe.
|
|
||||||
hideOnSwipe: false,
|
|
||||||
|
|
||||||
// Reset scroll position on hide.
|
|
||||||
resetScroll: false,
|
|
||||||
|
|
||||||
// Reset forms on hide.
|
|
||||||
resetForms: false,
|
|
||||||
|
|
||||||
// Side of viewport the panel will appear.
|
|
||||||
side: null,
|
|
||||||
|
|
||||||
// Target element for "class".
|
|
||||||
target: $this,
|
|
||||||
|
|
||||||
// Class to toggle.
|
|
||||||
visibleClass: "visible",
|
|
||||||
},
|
|
||||||
userConfig
|
|
||||||
);
|
|
||||||
|
|
||||||
// Expand "target" if it's not a jQuery object already.
|
|
||||||
if (typeof config.target != "jQuery") config.target = $(config.target);
|
|
||||||
|
|
||||||
// Panel.
|
|
||||||
|
|
||||||
// Methods.
|
|
||||||
$this._hide = function (event) {
|
|
||||||
// Already hidden? Bail.
|
|
||||||
if (!config.target.hasClass(config.visibleClass)) return;
|
|
||||||
|
|
||||||
// If an event was provided, cancel it.
|
|
||||||
if (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hide.
|
|
||||||
config.target.removeClass(config.visibleClass);
|
|
||||||
|
|
||||||
// Post-hide stuff.
|
|
||||||
window.setTimeout(function () {
|
|
||||||
// Reset scroll position.
|
|
||||||
if (config.resetScroll) $this.scrollTop(0);
|
|
||||||
|
|
||||||
// Reset forms.
|
|
||||||
if (config.resetForms)
|
|
||||||
$this.find("form").each(function () {
|
|
||||||
this.reset();
|
|
||||||
});
|
|
||||||
}, config.delay);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Vendor fixes.
|
|
||||||
$this
|
|
||||||
.css("-ms-overflow-style", "-ms-autohiding-scrollbar")
|
|
||||||
.css("-webkit-overflow-scrolling", "touch");
|
|
||||||
|
|
||||||
// Hide on click.
|
|
||||||
if (config.hideOnClick) {
|
|
||||||
$this.find("a").css("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
|
|
||||||
|
|
||||||
$this.on("click", "a", function (event) {
|
|
||||||
var $a = $(this),
|
|
||||||
href = $a.attr("href"),
|
|
||||||
target = $a.attr("target");
|
|
||||||
|
|
||||||
if (!href || href == "#" || href == "" || href == "#" + id) return;
|
|
||||||
|
|
||||||
// Cancel original event.
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
|
|
||||||
// Hide panel.
|
|
||||||
$this._hide();
|
|
||||||
|
|
||||||
// Redirect to href.
|
|
||||||
window.setTimeout(function () {
|
|
||||||
if (target == "_blank") window.open(href);
|
|
||||||
else window.location.href = href;
|
|
||||||
}, config.delay + 10);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Event: Touch stuff.
|
|
||||||
$this.on("touchstart", function (event) {
|
|
||||||
$this.touchPosX = event.originalEvent.touches[0].pageX;
|
|
||||||
$this.touchPosY = event.originalEvent.touches[0].pageY;
|
|
||||||
});
|
|
||||||
|
|
||||||
$this.on("touchmove", function (event) {
|
|
||||||
if ($this.touchPosX === null || $this.touchPosY === null) return;
|
|
||||||
|
|
||||||
var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX,
|
|
||||||
diffY = $this.touchPosY - event.originalEvent.touches[0].pageY,
|
|
||||||
th = $this.outerHeight(),
|
|
||||||
ts = $this.get(0).scrollHeight - $this.scrollTop();
|
|
||||||
|
|
||||||
// Hide on swipe?
|
|
||||||
if (config.hideOnSwipe) {
|
|
||||||
var result = false,
|
|
||||||
boundary = 20,
|
|
||||||
delta = 50;
|
|
||||||
|
|
||||||
switch (config.side) {
|
|
||||||
case "left":
|
|
||||||
result = diffY < boundary && diffY > -1 * boundary && diffX > delta;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "right":
|
|
||||||
result =
|
|
||||||
diffY < boundary && diffY > -1 * boundary && diffX < -1 * delta;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "top":
|
|
||||||
result = diffX < boundary && diffX > -1 * boundary && diffY > delta;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "bottom":
|
|
||||||
result =
|
|
||||||
diffX < boundary && diffX > -1 * boundary && diffY < -1 * delta;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result) {
|
|
||||||
$this.touchPosX = null;
|
|
||||||
$this.touchPosY = null;
|
|
||||||
$this._hide();
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prevent vertical scrolling past the top or bottom.
|
|
||||||
if (
|
|
||||||
($this.scrollTop() < 0 && diffY < 0) ||
|
|
||||||
(ts > th - 2 && ts < th + 2 && diffY > 0)
|
|
||||||
) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Event: Prevent certain events inside the panel from bubbling.
|
|
||||||
$this.on("click touchend touchstart touchmove", function (event) {
|
|
||||||
event.stopPropagation();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Event: Hide panel if a child anchor tag pointing to its ID is clicked.
|
|
||||||
$this.on("click", 'a[href="#' + id + '"]', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
|
|
||||||
config.target.removeClass(config.visibleClass);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Body.
|
|
||||||
|
|
||||||
// Event: Hide panel on body click/tap.
|
|
||||||
$body.on("click touchend", function (event) {
|
|
||||||
$this._hide(event);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Event: Toggle.
|
|
||||||
$body.on("click", 'a[href="#' + id + '"]', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
|
|
||||||
config.target.toggleClass(config.visibleClass);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Window.
|
|
||||||
|
|
||||||
// Event: Hide on ESC.
|
|
||||||
if (config.hideOnEscape)
|
|
||||||
$window.on("keydown", function (event) {
|
|
||||||
if (event.keyCode == 27) $this._hide(event);
|
|
||||||
});
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Apply "placeholder" attribute polyfill to one or more forms.
|
|
||||||
* @return {jQuery} jQuery object.
|
|
||||||
*/
|
|
||||||
$.fn.placeholder = function () {
|
|
||||||
// Browser natively supports placeholders? Bail.
|
|
||||||
if (typeof document.createElement("input").placeholder != "undefined")
|
|
||||||
return $(this);
|
|
||||||
|
|
||||||
// No elements?
|
|
||||||
if (this.length == 0) return $this;
|
|
||||||
|
|
||||||
// Multiple elements?
|
|
||||||
if (this.length > 1) {
|
|
||||||
for (var i = 0; i < this.length; i++) $(this[i]).placeholder();
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vars.
|
|
||||||
var $this = $(this);
|
|
||||||
|
|
||||||
// Text, TextArea.
|
|
||||||
$this
|
|
||||||
.find("input[type=text],textarea")
|
|
||||||
.each(function () {
|
|
||||||
var i = $(this);
|
|
||||||
|
|
||||||
if (i.val() == "" || i.val() == i.attr("placeholder"))
|
|
||||||
i.addClass("polyfill-placeholder").val(i.attr("placeholder"));
|
|
||||||
})
|
|
||||||
.on("blur", function () {
|
|
||||||
var i = $(this);
|
|
||||||
|
|
||||||
if (i.attr("name").match(/-polyfill-field$/)) return;
|
|
||||||
|
|
||||||
if (i.val() == "")
|
|
||||||
i.addClass("polyfill-placeholder").val(i.attr("placeholder"));
|
|
||||||
})
|
|
||||||
.on("focus", function () {
|
|
||||||
var i = $(this);
|
|
||||||
|
|
||||||
if (i.attr("name").match(/-polyfill-field$/)) return;
|
|
||||||
|
|
||||||
if (i.val() == i.attr("placeholder"))
|
|
||||||
i.removeClass("polyfill-placeholder").val("");
|
|
||||||
});
|
|
||||||
|
|
||||||
// Password.
|
|
||||||
$this.find("input[type=password]").each(function () {
|
|
||||||
var i = $(this);
|
|
||||||
var x = $(
|
|
||||||
$("<div>")
|
|
||||||
.append(i.clone())
|
|
||||||
.remove()
|
|
||||||
.html()
|
|
||||||
.replace(/type="password"/i, 'type="text"')
|
|
||||||
.replace(/type=password/i, "type=text")
|
|
||||||
);
|
|
||||||
|
|
||||||
if (i.attr("id") != "") x.attr("id", i.attr("id") + "-polyfill-field");
|
|
||||||
|
|
||||||
if (i.attr("name") != "")
|
|
||||||
x.attr("name", i.attr("name") + "-polyfill-field");
|
|
||||||
|
|
||||||
x.addClass("polyfill-placeholder")
|
|
||||||
.val(x.attr("placeholder"))
|
|
||||||
.insertAfter(i);
|
|
||||||
|
|
||||||
if (i.val() == "") i.hide();
|
|
||||||
else x.hide();
|
|
||||||
|
|
||||||
i.on("blur", function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
|
|
||||||
var x = i
|
|
||||||
.parent()
|
|
||||||
.find("input[name=" + i.attr("name") + "-polyfill-field]");
|
|
||||||
|
|
||||||
if (i.val() == "") {
|
|
||||||
i.hide();
|
|
||||||
x.show();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
x.on("focus", function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
|
|
||||||
var i = x
|
|
||||||
.parent()
|
|
||||||
.find(
|
|
||||||
"input[name=" + x.attr("name").replace("-polyfill-field", "") + "]"
|
|
||||||
);
|
|
||||||
|
|
||||||
x.hide();
|
|
||||||
|
|
||||||
i.show().focus();
|
|
||||||
}).on("keypress", function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
x.val("");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Events.
|
|
||||||
$this
|
|
||||||
.on("submit", function () {
|
|
||||||
$this
|
|
||||||
.find("input[type=text],input[type=password],textarea")
|
|
||||||
.each(function (event) {
|
|
||||||
var i = $(this);
|
|
||||||
|
|
||||||
if (i.attr("name").match(/-polyfill-field$/)) i.attr("name", "");
|
|
||||||
|
|
||||||
if (i.val() == i.attr("placeholder")) {
|
|
||||||
i.removeClass("polyfill-placeholder");
|
|
||||||
i.val("");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.on("reset", function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
|
|
||||||
$this.find("select").val($("option:first").val());
|
|
||||||
|
|
||||||
$this.find("input,textarea").each(function () {
|
|
||||||
var i = $(this),
|
|
||||||
x;
|
|
||||||
|
|
||||||
i.removeClass("polyfill-placeholder");
|
|
||||||
|
|
||||||
switch (this.type) {
|
|
||||||
case "submit":
|
|
||||||
case "reset":
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "password":
|
|
||||||
i.val(i.attr("defaultValue"));
|
|
||||||
|
|
||||||
x = i
|
|
||||||
.parent()
|
|
||||||
.find("input[name=" + i.attr("name") + "-polyfill-field]");
|
|
||||||
|
|
||||||
if (i.val() == "") {
|
|
||||||
i.hide();
|
|
||||||
x.show();
|
|
||||||
} else {
|
|
||||||
i.show();
|
|
||||||
x.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "checkbox":
|
|
||||||
case "radio":
|
|
||||||
i.attr("checked", i.attr("defaultValue"));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "text":
|
|
||||||
case "textarea":
|
|
||||||
i.val(i.attr("defaultValue"));
|
|
||||||
|
|
||||||
if (i.val() == "") {
|
|
||||||
i.addClass("polyfill-placeholder");
|
|
||||||
i.val(i.attr("placeholder"));
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
i.val(i.attr("defaultValue"));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Moves elements to/from the first positions of their respective parents.
|
|
||||||
* @param {jQuery} $elements Elements (or selector) to move.
|
|
||||||
* @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations.
|
|
||||||
*/
|
|
||||||
$.prioritize = function ($elements, condition) {
|
|
||||||
var key = "__prioritize";
|
|
||||||
|
|
||||||
// Expand $elements if it's not already a jQuery object.
|
|
||||||
if (typeof $elements != "jQuery") $elements = $($elements);
|
|
||||||
|
|
||||||
// Step through elements.
|
|
||||||
$elements.each(function () {
|
|
||||||
var $e = $(this),
|
|
||||||
$p,
|
|
||||||
$parent = $e.parent();
|
|
||||||
|
|
||||||
// No parent? Bail.
|
|
||||||
if ($parent.length == 0) return;
|
|
||||||
|
|
||||||
// Not moved? Move it.
|
|
||||||
if (!$e.data(key)) {
|
|
||||||
// Condition is false? Bail.
|
|
||||||
if (!condition) return;
|
|
||||||
|
|
||||||
// Get placeholder (which will serve as our point of reference for when this element needs to move back).
|
|
||||||
$p = $e.prev();
|
|
||||||
|
|
||||||
// Couldn't find anything? Means this element's already at the top, so bail.
|
|
||||||
if ($p.length == 0) return;
|
|
||||||
|
|
||||||
// Move element to top of parent.
|
|
||||||
$e.prependTo($parent);
|
|
||||||
|
|
||||||
// Mark element as moved.
|
|
||||||
$e.data(key, $p);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Moved already?
|
|
||||||
else {
|
|
||||||
// Condition is true? Bail.
|
|
||||||
if (condition) return;
|
|
||||||
|
|
||||||
$p = $e.data(key);
|
|
||||||
|
|
||||||
// Move element back to its original location (using our placeholder).
|
|
||||||
$e.insertAfter($p);
|
|
||||||
|
|
||||||
// Unmark element as moved.
|
|
||||||
$e.removeData(key);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
})(jQuery);
|
|
||||||
@@ -1,202 +0,0 @@
|
|||||||
// breakpoints.scss v1.0 | @ajlkn | MIT licensed */
|
|
||||||
|
|
||||||
// Vars.
|
|
||||||
|
|
||||||
/// Breakpoints.
|
|
||||||
/// @var {list}
|
|
||||||
$breakpoints: () !global;
|
|
||||||
|
|
||||||
// Mixins.
|
|
||||||
|
|
||||||
/// Sets breakpoints.
|
|
||||||
/// @param {map} $x Breakpoints.
|
|
||||||
@mixin breakpoints($x: ()) {
|
|
||||||
$breakpoints: $x !global;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Wraps @content in a @media block targeting a specific orientation.
|
|
||||||
/// @param {string} $orientation Orientation.
|
|
||||||
@mixin orientation($orientation) {
|
|
||||||
@media screen and (orientation: #{$orientation}) {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Wraps @content in a @media block using a given query.
|
|
||||||
/// @param {string} $query Query.
|
|
||||||
@mixin breakpoint($query: null) {
|
|
||||||
$breakpoint: null;
|
|
||||||
$op: null;
|
|
||||||
$media: null;
|
|
||||||
|
|
||||||
// Determine operator, breakpoint.
|
|
||||||
|
|
||||||
// Greater than or equal.
|
|
||||||
@if (str-slice($query, 0, 2) == ">=") {
|
|
||||||
$op: "gte";
|
|
||||||
$breakpoint: str-slice($query, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Less than or equal.
|
|
||||||
@elseif (str-slice($query, 0, 2) == '<=') {
|
|
||||||
$op: "lte";
|
|
||||||
$breakpoint: str-slice($query, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Greater than.
|
|
||||||
@elseif (str-slice($query, 0, 1) == '>') {
|
|
||||||
$op: "gt";
|
|
||||||
$breakpoint: str-slice($query, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Less than.
|
|
||||||
@elseif (str-slice($query, 0, 1) == '<') {
|
|
||||||
$op: "lt";
|
|
||||||
$breakpoint: str-slice($query, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Not.
|
|
||||||
@elseif (str-slice($query, 0, 1) == '!') {
|
|
||||||
$op: "not";
|
|
||||||
$breakpoint: str-slice($query, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Equal.
|
|
||||||
@else {
|
|
||||||
$op: "eq";
|
|
||||||
$breakpoint: $query;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Build media.
|
|
||||||
@if ($breakpoint and map-has-key($breakpoints, $breakpoint)) {
|
|
||||||
$a: map-get($breakpoints, $breakpoint);
|
|
||||||
|
|
||||||
// Range.
|
|
||||||
@if (type-of($a) == "list") {
|
|
||||||
$x: nth($a, 1);
|
|
||||||
$y: nth($a, 2);
|
|
||||||
|
|
||||||
// Max only.
|
|
||||||
@if ($x == null) {
|
|
||||||
// Greater than or equal (>= 0 / anything)
|
|
||||||
@if ($op == "gte") {
|
|
||||||
$media: "screen";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Less than or equal (<= y)
|
|
||||||
@elseif ($op == 'lte') {
|
|
||||||
$media: "screen and (max-width: " + $y + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Greater than (> y)
|
|
||||||
@elseif ($op == 'gt') {
|
|
||||||
$media: "screen and (min-width: " + ($y + 1) + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Less than (< 0 / invalid)
|
|
||||||
@elseif ($op == 'lt') {
|
|
||||||
$media: "screen and (max-width: -1px)";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Not (> y)
|
|
||||||
@elseif ($op == 'not') {
|
|
||||||
$media: "screen and (min-width: " + ($y + 1) + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Equal (<= y)
|
|
||||||
@else {
|
|
||||||
$media: "screen and (max-width: " + $y + ")";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Min only.
|
|
||||||
@else if ($y == null) {
|
|
||||||
// Greater than or equal (>= x)
|
|
||||||
@if ($op == "gte") {
|
|
||||||
$media: "screen and (min-width: " + $x + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Less than or equal (<= inf / anything)
|
|
||||||
@elseif ($op == 'lte') {
|
|
||||||
$media: "screen";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Greater than (> inf / invalid)
|
|
||||||
@elseif ($op == 'gt') {
|
|
||||||
$media: "screen and (max-width: -1px)";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Less than (< x)
|
|
||||||
@elseif ($op == 'lt') {
|
|
||||||
$media: "screen and (max-width: " + ($x - 1) + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Not (< x)
|
|
||||||
@elseif ($op == 'not') {
|
|
||||||
$media: "screen and (max-width: " + ($x - 1) + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Equal (>= x)
|
|
||||||
@else {
|
|
||||||
$media: "screen and (min-width: " + $x + ")";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Min and max.
|
|
||||||
@else {
|
|
||||||
// Greater than or equal (>= x)
|
|
||||||
@if ($op == "gte") {
|
|
||||||
$media: "screen and (min-width: " + $x + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Less than or equal (<= y)
|
|
||||||
@elseif ($op == 'lte') {
|
|
||||||
$media: "screen and (max-width: " + $y + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Greater than (> y)
|
|
||||||
@elseif ($op == 'gt') {
|
|
||||||
$media: "screen and (min-width: " + ($y + 1) + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Less than (< x)
|
|
||||||
@elseif ($op == 'lt') {
|
|
||||||
$media: "screen and (max-width: " + ($x - 1) + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Not (< x and > y)
|
|
||||||
@elseif ($op == 'not') {
|
|
||||||
$media: "screen and (max-width: " + ($x - 1) +
|
|
||||||
"), screen and (min-width: " + ($y + 1) + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Equal (>= x and <= y)
|
|
||||||
@else {
|
|
||||||
$media: "screen and (min-width: " +
|
|
||||||
$x +
|
|
||||||
") and (max-width: " +
|
|
||||||
$y +
|
|
||||||
")";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// String.
|
|
||||||
@else {
|
|
||||||
// Missing a media type? Prefix with "screen".
|
|
||||||
@if (str-slice($a, 0, 1) == "(") {
|
|
||||||
$media: "screen and " + $a;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Otherwise, use as-is.
|
|
||||||
@else {
|
|
||||||
$media: $a;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Output.
|
|
||||||
@media #{$media} {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
/// Removes a specific item from a list.
|
|
||||||
/// @author Hugo Giraudel
|
|
||||||
/// @param {list} $list List.
|
|
||||||
/// @param {integer} $index Index.
|
|
||||||
/// @return {list} Updated list.
|
|
||||||
@function remove-nth($list, $index) {
|
|
||||||
$result: null;
|
|
||||||
|
|
||||||
@if type-of($index) != number {
|
|
||||||
@warn "$index: #{quote($index)} is not a number for `remove-nth`.";
|
|
||||||
} @else if $index == 0 {
|
|
||||||
@warn "List index 0 must be a non-zero integer for `remove-nth`.";
|
|
||||||
} @else if abs($index) > length($list) {
|
|
||||||
@warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
|
|
||||||
} @else {
|
|
||||||
$result: ();
|
|
||||||
$index: if($index < 0, length($list) + $index + 1, $index);
|
|
||||||
|
|
||||||
@for $i from 1 through length($list) {
|
|
||||||
@if $i != $index {
|
|
||||||
$result: append($result, nth($list, $i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Gets a value from a map.
|
|
||||||
/// @author Hugo Giraudel
|
|
||||||
/// @param {map} $map Map.
|
|
||||||
/// @param {string} $keys Key(s).
|
|
||||||
/// @return {string} Value.
|
|
||||||
@function val($map, $keys...) {
|
|
||||||
@if nth($keys, 1) == null {
|
|
||||||
$keys: remove-nth($keys, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $key in $keys {
|
|
||||||
$map: map-get($map, $key);
|
|
||||||
}
|
|
||||||
|
|
||||||
@return $map;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Gets a duration value.
|
|
||||||
/// @param {string} $keys Key(s).
|
|
||||||
/// @return {string} Value.
|
|
||||||
@function _duration($keys...) {
|
|
||||||
@return val($duration, $keys...);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Gets a font value.
|
|
||||||
/// @param {string} $keys Key(s).
|
|
||||||
/// @return {string} Value.
|
|
||||||
@function _font($keys...) {
|
|
||||||
@return val($font, $keys...);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Gets a misc value.
|
|
||||||
/// @param {string} $keys Key(s).
|
|
||||||
/// @return {string} Value.
|
|
||||||
@function _misc($keys...) {
|
|
||||||
@return val($misc, $keys...);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Gets a palette value.
|
|
||||||
/// @param {string} $keys Key(s).
|
|
||||||
/// @return {string} Value.
|
|
||||||
@function _palette($keys...) {
|
|
||||||
@return val($palette, $keys...);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Gets a size value.
|
|
||||||
/// @param {string} $keys Key(s).
|
|
||||||
/// @return {string} Value.
|
|
||||||
@function _size($keys...) {
|
|
||||||
@return val($size, $keys...);
|
|
||||||
}
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
// html-grid.scss v1.0 | @ajlkn | MIT licensed */
|
|
||||||
|
|
||||||
// Mixins.
|
|
||||||
|
|
||||||
/// Initializes the current element as an HTML grid.
|
|
||||||
/// @param {mixed} $gutters Gutters (either a single number to set both column/row gutters, or a list to set them individually).
|
|
||||||
/// @param {mixed} $suffix Column class suffix (optional; either a single suffix or a list).
|
|
||||||
@mixin html-grid($gutters: 1.5em, $suffix: "") {
|
|
||||||
// Initialize.
|
|
||||||
$cols: 12;
|
|
||||||
$multipliers: 0, 0.25, 0.5, 1, 1.5, 2;
|
|
||||||
$unit: 100% / $cols;
|
|
||||||
|
|
||||||
// Suffixes.
|
|
||||||
$suffixes: null;
|
|
||||||
|
|
||||||
@if (type-of($suffix) == "list") {
|
|
||||||
$suffixes: $suffix;
|
|
||||||
} @else {
|
|
||||||
$suffixes: ($suffix);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Gutters.
|
|
||||||
$guttersCols: null;
|
|
||||||
$guttersRows: null;
|
|
||||||
|
|
||||||
@if (type-of($gutters) == "list") {
|
|
||||||
$guttersCols: nth($gutters, 1);
|
|
||||||
$guttersRows: nth($gutters, 2);
|
|
||||||
} @else {
|
|
||||||
$guttersCols: $gutters;
|
|
||||||
$guttersRows: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Row.
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
box-sizing: border-box;
|
|
||||||
align-items: stretch;
|
|
||||||
|
|
||||||
// Columns.
|
|
||||||
> * {
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Gutters.
|
|
||||||
&.gtr-uniform {
|
|
||||||
> * {
|
|
||||||
> :last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Alignment.
|
|
||||||
&.aln-left {
|
|
||||||
justify-content: flex-start;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.aln-center {
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.aln-right {
|
|
||||||
justify-content: flex-end;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.aln-top {
|
|
||||||
align-items: flex-start;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.aln-middle {
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.aln-bottom {
|
|
||||||
align-items: flex-end;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Step through suffixes.
|
|
||||||
@each $suffix in $suffixes {
|
|
||||||
// Suffix.
|
|
||||||
@if ($suffix != "") {
|
|
||||||
$suffix: "-" + $suffix;
|
|
||||||
} @else {
|
|
||||||
$suffix: "";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Row.
|
|
||||||
|
|
||||||
// Important.
|
|
||||||
> .imp#{$suffix} {
|
|
||||||
order: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Columns, offsets.
|
|
||||||
@for $i from 1 through $cols {
|
|
||||||
> .col-#{$i}#{$suffix} {
|
|
||||||
width: $unit * $i;
|
|
||||||
}
|
|
||||||
|
|
||||||
> .off-#{$i}#{$suffix} {
|
|
||||||
margin-left: $unit * $i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Step through multipliers.
|
|
||||||
@each $multiplier in $multipliers {
|
|
||||||
// Gutters.
|
|
||||||
$class: null;
|
|
||||||
|
|
||||||
@if ($multiplier != 1) {
|
|
||||||
$class: ".gtr-" + ($multiplier * 100);
|
|
||||||
}
|
|
||||||
|
|
||||||
&#{$class} {
|
|
||||||
margin-top: ($guttersRows * $multiplier * -1);
|
|
||||||
margin-left: ($guttersCols * $multiplier * -1);
|
|
||||||
|
|
||||||
> * {
|
|
||||||
padding: ($guttersRows * $multiplier)
|
|
||||||
0
|
|
||||||
0
|
|
||||||
($guttersCols * $multiplier);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Uniform.
|
|
||||||
&.gtr-uniform {
|
|
||||||
margin-top: $guttersCols * $multiplier * -1;
|
|
||||||
|
|
||||||
> * {
|
|
||||||
padding-top: $guttersCols * $multiplier;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
/// Makes an element's :before pseudoelement a FontAwesome icon.
|
|
||||||
/// @param {string} $content Optional content value to use.
|
|
||||||
/// @param {string} $category Optional category to use.
|
|
||||||
/// @param {string} $where Optional pseudoelement to target (before or after).
|
|
||||||
@mixin icon($content: false, $category: regular, $where: before) {
|
|
||||||
text-decoration: none;
|
|
||||||
|
|
||||||
&:#{$where} {
|
|
||||||
@if $content {
|
|
||||||
content: $content;
|
|
||||||
}
|
|
||||||
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
display: inline-block;
|
|
||||||
font-style: normal;
|
|
||||||
font-variant: normal;
|
|
||||||
text-rendering: auto;
|
|
||||||
line-height: 1;
|
|
||||||
text-transform: none !important;
|
|
||||||
|
|
||||||
@if ($category == brands) {
|
|
||||||
font-family: "Font Awesome 5 Brands";
|
|
||||||
}
|
|
||||||
@elseif ($category == solid) {
|
|
||||||
font-family: "Font Awesome 5 Free";
|
|
||||||
font-weight: 900;
|
|
||||||
} @else {
|
|
||||||
font-family: "Font Awesome 5 Free";
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Applies padding to an element, taking the current element-margin value into account.
|
|
||||||
/// @param {mixed} $tb Top/bottom padding.
|
|
||||||
/// @param {mixed} $lr Left/right padding.
|
|
||||||
/// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left)
|
|
||||||
/// @param {bool} $important If true, adds !important.
|
|
||||||
@mixin padding($tb, $lr, $pad: (0, 0, 0, 0), $important: null) {
|
|
||||||
@if $important {
|
|
||||||
$important: "!important";
|
|
||||||
}
|
|
||||||
|
|
||||||
$x: 0.1em;
|
|
||||||
|
|
||||||
@if unit(_size(element-margin)) == "rem" {
|
|
||||||
$x: 0.1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
padding: ($tb + nth($pad, 1)) ($lr + nth($pad, 2))
|
|
||||||
max($x, $tb - _size(element-margin) + nth($pad, 3)) ($lr + nth($pad, 4)) #{$important};
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp).
|
|
||||||
/// @param {string} $svg SVG data URL.
|
|
||||||
/// @return {string} Encoded SVG data URL.
|
|
||||||
@function svg-url($svg) {
|
|
||||||
$svg: str-replace($svg, '"', "'");
|
|
||||||
$svg: str-replace($svg, "%", "%25");
|
|
||||||
$svg: str-replace($svg, "<", "%3C");
|
|
||||||
$svg: str-replace($svg, ">", "%3E");
|
|
||||||
$svg: str-replace($svg, "&", "%26");
|
|
||||||
$svg: str-replace($svg, "#", "%23");
|
|
||||||
$svg: str-replace($svg, "{", "%7B");
|
|
||||||
$svg: str-replace($svg, "}", "%7D");
|
|
||||||
$svg: str-replace($svg, ";", "%3B");
|
|
||||||
|
|
||||||
@return url("data:image/svg+xml;charset=utf8,#{$svg}");
|
|
||||||
}
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
// Misc.
|
|
||||||
$misc: (
|
|
||||||
z-index-base: 10000,
|
|
||||||
);
|
|
||||||
|
|
||||||
// Duration.
|
|
||||||
$duration: (
|
|
||||||
transition: 0.2s,
|
|
||||||
);
|
|
||||||
|
|
||||||
// Size.
|
|
||||||
$size: (
|
|
||||||
border-radius: 0.35em,
|
|
||||||
element-height: 2.75em,
|
|
||||||
element-margin: 2em,
|
|
||||||
container-width: 100%,
|
|
||||||
);
|
|
||||||
|
|
||||||
// Font.
|
|
||||||
$font: (
|
|
||||||
family: (
|
|
||||||
"Source Sans Pro",
|
|
||||||
Helvetica,
|
|
||||||
sans-serif,
|
|
||||||
),
|
|
||||||
family-fixed: (
|
|
||||||
"Courier New",
|
|
||||||
monospace,
|
|
||||||
),
|
|
||||||
weight: 400,
|
|
||||||
weight-bold: 400,
|
|
||||||
);
|
|
||||||
|
|
||||||
// Palette.
|
|
||||||
$palette: (
|
|
||||||
bg: #fff,
|
|
||||||
fg: #a2a2a2,
|
|
||||||
fg-bold: #787878,
|
|
||||||
fg-light: #b2b2b2,
|
|
||||||
border: #efefef,
|
|
||||||
border-bg: #f7f7f7,
|
|
||||||
border2: #dfdfdf,
|
|
||||||
border2-bg: #e7e7e7,
|
|
||||||
accent1: (
|
|
||||||
bg: #49bf9d,
|
|
||||||
fg: mix(#49bf9d, #ffffff, 25%),
|
|
||||||
fg-bold: #ffffff,
|
|
||||||
fg-light: mix(#49bf9d, #ffffff, 40%),
|
|
||||||
border: rgba(255, 255, 255, 0.25),
|
|
||||||
border-bg: rgba(255, 255, 255, 0.075),
|
|
||||||
border2: rgba(255, 255, 255, 0.5),
|
|
||||||
border2-bg: rgba(255, 255, 255, 0.2),
|
|
||||||
),
|
|
||||||
accent2: (
|
|
||||||
bg: #1f1815,
|
|
||||||
fg: rgba(255, 255, 255, 0.5),
|
|
||||||
fg-bold: #ffffff,
|
|
||||||
fg-light: rgba(255, 255, 255, 0.4),
|
|
||||||
border: rgba(255, 255, 255, 0.25),
|
|
||||||
border-bg: rgba(255, 255, 255, 0.075),
|
|
||||||
border2: rgba(255, 255, 255, 0.5),
|
|
||||||
border2-bg: rgba(255, 255, 255, 0.2),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
@@ -1,324 +0,0 @@
|
|||||||
// vendor.scss v1.0 | @ajlkn | MIT licensed */
|
|
||||||
|
|
||||||
// Vars.
|
|
||||||
|
|
||||||
/// Vendor prefixes.
|
|
||||||
/// @var {list}
|
|
||||||
$vendor-prefixes: ("-moz-", "-webkit-", "-ms-", "");
|
|
||||||
|
|
||||||
/// Properties that should be vendorized.
|
|
||||||
/// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org
|
|
||||||
/// @var {list}
|
|
||||||
$vendor-properties: (
|
|
||||||
// Animation.
|
|
||||||
"animation",
|
|
||||||
"animation-delay",
|
|
||||||
"animation-direction",
|
|
||||||
"animation-duration",
|
|
||||||
"animation-fill-mode",
|
|
||||||
"animation-iteration-count",
|
|
||||||
"animation-name",
|
|
||||||
"animation-play-state",
|
|
||||||
"animation-timing-function",
|
|
||||||
// Appearance.
|
|
||||||
"appearance",
|
|
||||||
// Backdrop filter.
|
|
||||||
"backdrop-filter",
|
|
||||||
// Background image options.
|
|
||||||
"background-clip",
|
|
||||||
"background-origin",
|
|
||||||
"background-size",
|
|
||||||
// Box sizing.
|
|
||||||
"box-sizing",
|
|
||||||
// Clip path.
|
|
||||||
"clip-path",
|
|
||||||
// Filter effects.
|
|
||||||
"filter",
|
|
||||||
// Flexbox.
|
|
||||||
"align-content",
|
|
||||||
"align-items",
|
|
||||||
"align-self",
|
|
||||||
"flex",
|
|
||||||
"flex-basis",
|
|
||||||
"flex-direction",
|
|
||||||
"flex-flow",
|
|
||||||
"flex-grow",
|
|
||||||
"flex-shrink",
|
|
||||||
"flex-wrap",
|
|
||||||
"justify-content",
|
|
||||||
"order",
|
|
||||||
// Font feature.
|
|
||||||
"font-feature-settings",
|
|
||||||
"font-language-override",
|
|
||||||
"font-variant-ligatures",
|
|
||||||
// Font kerning.
|
|
||||||
"font-kerning",
|
|
||||||
// Fragmented borders and backgrounds.
|
|
||||||
"box-decoration-break",
|
|
||||||
// Grid layout.
|
|
||||||
"grid-column",
|
|
||||||
"grid-column-align",
|
|
||||||
"grid-column-end",
|
|
||||||
"grid-column-start",
|
|
||||||
"grid-row",
|
|
||||||
"grid-row-align",
|
|
||||||
"grid-row-end",
|
|
||||||
"grid-row-start",
|
|
||||||
"grid-template-columns",
|
|
||||||
"grid-template-rows",
|
|
||||||
// Hyphens.
|
|
||||||
"hyphens",
|
|
||||||
"word-break",
|
|
||||||
// Masks.
|
|
||||||
"mask",
|
|
||||||
"mask-border",
|
|
||||||
"mask-border-outset",
|
|
||||||
"mask-border-repeat",
|
|
||||||
"mask-border-slice",
|
|
||||||
"mask-border-source",
|
|
||||||
"mask-border-width",
|
|
||||||
"mask-clip",
|
|
||||||
"mask-composite",
|
|
||||||
"mask-image",
|
|
||||||
"mask-origin",
|
|
||||||
"mask-position",
|
|
||||||
"mask-repeat",
|
|
||||||
"mask-size",
|
|
||||||
// Multicolumn.
|
|
||||||
"break-after",
|
|
||||||
"break-before",
|
|
||||||
"break-inside",
|
|
||||||
"column-count",
|
|
||||||
"column-fill",
|
|
||||||
"column-gap",
|
|
||||||
"column-rule",
|
|
||||||
"column-rule-color",
|
|
||||||
"column-rule-style",
|
|
||||||
"column-rule-width",
|
|
||||||
"column-span",
|
|
||||||
"column-width",
|
|
||||||
"columns",
|
|
||||||
// Object fit.
|
|
||||||
"object-fit",
|
|
||||||
"object-position",
|
|
||||||
// Regions.
|
|
||||||
"flow-from",
|
|
||||||
"flow-into",
|
|
||||||
"region-fragment",
|
|
||||||
// Scroll snap points.
|
|
||||||
"scroll-snap-coordinate",
|
|
||||||
"scroll-snap-destination",
|
|
||||||
"scroll-snap-points-x",
|
|
||||||
"scroll-snap-points-y",
|
|
||||||
"scroll-snap-type",
|
|
||||||
// Shapes.
|
|
||||||
"shape-image-threshold",
|
|
||||||
"shape-margin",
|
|
||||||
"shape-outside",
|
|
||||||
// Tab size.
|
|
||||||
"tab-size",
|
|
||||||
// Text align last.
|
|
||||||
"text-align-last",
|
|
||||||
// Text decoration.
|
|
||||||
"text-decoration-color",
|
|
||||||
"text-decoration-line",
|
|
||||||
"text-decoration-skip",
|
|
||||||
"text-decoration-style",
|
|
||||||
// Text emphasis.
|
|
||||||
"text-emphasis",
|
|
||||||
"text-emphasis-color",
|
|
||||||
"text-emphasis-position",
|
|
||||||
"text-emphasis-style",
|
|
||||||
// Text size adjust.
|
|
||||||
"text-size-adjust",
|
|
||||||
// Text spacing.
|
|
||||||
"text-spacing",
|
|
||||||
// Transform.
|
|
||||||
"transform",
|
|
||||||
"transform-origin",
|
|
||||||
// Transform 3D.
|
|
||||||
"backface-visibility",
|
|
||||||
"perspective",
|
|
||||||
"perspective-origin",
|
|
||||||
"transform-style",
|
|
||||||
// Transition.
|
|
||||||
"transition",
|
|
||||||
"transition-delay",
|
|
||||||
"transition-duration",
|
|
||||||
"transition-property",
|
|
||||||
"transition-timing-function",
|
|
||||||
// Unicode bidi.
|
|
||||||
"unicode-bidi",
|
|
||||||
// User select.
|
|
||||||
"user-select",
|
|
||||||
// Writing mode.
|
|
||||||
"writing-mode"
|
|
||||||
);
|
|
||||||
|
|
||||||
/// Values that should be vendorized.
|
|
||||||
/// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org
|
|
||||||
/// @var {list}
|
|
||||||
$vendor-values: (
|
|
||||||
// Cross fade.
|
|
||||||
"cross-fade",
|
|
||||||
// Element function.
|
|
||||||
"element",
|
|
||||||
// Filter function.
|
|
||||||
"filter",
|
|
||||||
// Flexbox.
|
|
||||||
"flex",
|
|
||||||
"inline-flex",
|
|
||||||
// Grab cursors.
|
|
||||||
"grab",
|
|
||||||
"grabbing",
|
|
||||||
// Gradients.
|
|
||||||
"linear-gradient",
|
|
||||||
"repeating-linear-gradient",
|
|
||||||
"radial-gradient",
|
|
||||||
"repeating-radial-gradient",
|
|
||||||
// Grid layout.
|
|
||||||
"grid",
|
|
||||||
"inline-grid",
|
|
||||||
// Image set.
|
|
||||||
"image-set",
|
|
||||||
// Intrinsic width.
|
|
||||||
"max-content",
|
|
||||||
"min-content",
|
|
||||||
"fit-content",
|
|
||||||
"fill",
|
|
||||||
"fill-available",
|
|
||||||
"stretch",
|
|
||||||
// Sticky position.
|
|
||||||
"sticky",
|
|
||||||
// Transform.
|
|
||||||
"transform",
|
|
||||||
// Zoom cursors.
|
|
||||||
"zoom-in",
|
|
||||||
"zoom-out"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Functions.
|
|
||||||
|
|
||||||
/// Removes a specific item from a list.
|
|
||||||
/// @author Hugo Giraudel
|
|
||||||
/// @param {list} $list List.
|
|
||||||
/// @param {integer} $index Index.
|
|
||||||
/// @return {list} Updated list.
|
|
||||||
@function remove-nth($list, $index) {
|
|
||||||
$result: null;
|
|
||||||
|
|
||||||
@if type-of($index) != number {
|
|
||||||
@warn "$index: #{quote($index)} is not a number for `remove-nth`.";
|
|
||||||
} @else if $index == 0 {
|
|
||||||
@warn "List index 0 must be a non-zero integer for `remove-nth`.";
|
|
||||||
} @else if abs($index) > length($list) {
|
|
||||||
@warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
|
|
||||||
} @else {
|
|
||||||
$result: ();
|
|
||||||
$index: if($index < 0, length($list) + $index + 1, $index);
|
|
||||||
|
|
||||||
@for $i from 1 through length($list) {
|
|
||||||
@if $i != $index {
|
|
||||||
$result: append($result, nth($list, $i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Replaces a substring within another string.
|
|
||||||
/// @author Hugo Giraudel
|
|
||||||
/// @param {string} $string String.
|
|
||||||
/// @param {string} $search Substring.
|
|
||||||
/// @param {string} $replace Replacement.
|
|
||||||
/// @return {string} Updated string.
|
|
||||||
@function str-replace($string, $search, $replace: "") {
|
|
||||||
$index: str-index($string, $search);
|
|
||||||
|
|
||||||
@if $index {
|
|
||||||
@return str-slice($string, 1, $index - 1) + $replace +
|
|
||||||
str-replace(
|
|
||||||
str-slice($string, $index + str-length($search)),
|
|
||||||
$search,
|
|
||||||
$replace
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@return $string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Replaces a substring within each string in a list.
|
|
||||||
/// @param {list} $strings List of strings.
|
|
||||||
/// @param {string} $search Substring.
|
|
||||||
/// @param {string} $replace Replacement.
|
|
||||||
/// @return {list} Updated list of strings.
|
|
||||||
@function str-replace-all($strings, $search, $replace: "") {
|
|
||||||
@each $string in $strings {
|
|
||||||
$strings: set-nth(
|
|
||||||
$strings,
|
|
||||||
index($strings, $string),
|
|
||||||
str-replace($string, $search, $replace)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@return $strings;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mixins.
|
|
||||||
|
|
||||||
/// Wraps @content in vendorized keyframe blocks.
|
|
||||||
/// @param {string} $name Name.
|
|
||||||
@mixin keyframes($name) {
|
|
||||||
@-moz-keyframes #{$name} {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
@-webkit-keyframes #{$name} {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
@-ms-keyframes #{$name} {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
@keyframes #{$name} {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Vendorizes a declaration's property and/or value(s).
|
|
||||||
/// @param {string} $property Property.
|
|
||||||
/// @param {mixed} $value String/list of value(s).
|
|
||||||
@mixin vendor($property, $value) {
|
|
||||||
// Determine if property should expand.
|
|
||||||
$expandProperty: index($vendor-properties, $property);
|
|
||||||
|
|
||||||
// Determine if value should expand (and if so, add '-prefix-' placeholder).
|
|
||||||
$expandValue: false;
|
|
||||||
|
|
||||||
@each $x in $value {
|
|
||||||
@each $y in $vendor-values {
|
|
||||||
@if $y == str-slice($x, 1, str-length($y)) {
|
|
||||||
$value: set-nth($value, index($value, $x), "-prefix-" + $x);
|
|
||||||
$expandValue: true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Expand property?
|
|
||||||
@if $expandProperty {
|
|
||||||
@each $vendor in $vendor-prefixes {
|
|
||||||
#{$vendor}#{$property}: #{str-replace-all($value, "-prefix-", $vendor)};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Expand just the value?
|
|
||||||
@elseif $expandValue {
|
|
||||||
@each $vendor in $vendor-prefixes {
|
|
||||||
#{$property}: #{str-replace-all($value, "-prefix-", $vendor)};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Neither? Treat them as a normal declaration.
|
|
||||||
@else {
|
|
||||||
#{$property}: #{$value};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 668 KiB |
|
Before Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 808 KiB |
BIN
docs/favicons/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
docs/favicons/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
docs/favicons/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
9
docs/favicons/browserconfig.xml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<browserconfig>
|
||||||
|
<msapplication>
|
||||||
|
<tile>
|
||||||
|
<square150x150logo src="/favicons/mstile-150x150.png"/>
|
||||||
|
<TileColor>#603cba</TileColor>
|
||||||
|
</tile>
|
||||||
|
</msapplication>
|
||||||
|
</browserconfig>
|
||||||
BIN
docs/favicons/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
docs/favicons/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
docs/favicons/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
docs/favicons/mstile-150x150.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
45
docs/favicons/safari-pinned-tab.svg
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||||
|
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="1024.000000pt" height="1024.000000pt" viewBox="0 0 1024.000000 1024.000000"
|
||||||
|
preserveAspectRatio="xMidYMid meet">
|
||||||
|
<metadata>
|
||||||
|
Created by potrace 1.14, written by Peter Selinger 2001-2017
|
||||||
|
</metadata>
|
||||||
|
<g transform="translate(0.000000,1024.000000) scale(0.100000,-0.100000)"
|
||||||
|
fill="#000000" stroke="none">
|
||||||
|
<path d="M4958 9915 c-2 -2 -32 -6 -67 -9 -35 -3 -73 -8 -85 -11 -11 -3 -32
|
||||||
|
-7 -46 -9 -14 -3 -36 -8 -50 -11 -14 -3 -37 -7 -51 -10 -116 -21 -360 -121
|
||||||
|
-534 -219 -22 -12 -85 -46 -140 -75 -55 -30 -113 -61 -130 -71 -16 -9 -70 -39
|
||||||
|
-120 -65 -49 -27 -108 -58 -130 -70 -64 -36 -273 -148 -360 -195 -44 -23 -102
|
||||||
|
-55 -130 -70 -27 -15 -77 -42 -110 -60 -33 -18 -114 -62 -180 -98 -66 -35
|
||||||
|
-149 -81 -185 -100 -36 -19 -92 -49 -125 -67 -179 -97 -199 -108 -415 -225
|
||||||
|
-63 -34 -153 -83 -200 -108 -47 -25 -120 -65 -164 -89 -43 -23 -80 -43 -81
|
||||||
|
-43 -6 0 -141 -84 -189 -118 -292 -202 -527 -490 -673 -827 -27 -60 -91 -254
|
||||||
|
-98 -295 -3 -17 -12 -62 -20 -101 -8 -39 -19 -101 -23 -138 -9 -87 -9 -3325 0
|
||||||
|
-3416 53 -496 309 -965 701 -1283 133 -108 217 -158 752 -446 39 -21 122 -66
|
||||||
|
185 -99 63 -33 129 -69 145 -78 17 -10 50 -28 75 -40 25 -13 74 -39 110 -59
|
||||||
|
36 -21 101 -56 145 -80 213 -114 226 -121 368 -199 28 -15 88 -47 132 -71 44
|
||||||
|
-24 127 -69 185 -100 58 -32 141 -77 185 -100 79 -42 274 -147 370 -200 211
|
||||||
|
-115 300 -160 380 -193 105 -43 250 -89 318 -101 15 -2 35 -7 45 -10 22 -6 81
|
||||||
|
-15 167 -25 76 -9 401 -6 450 3 17 4 68 13 115 22 255 46 371 96 904 384 l69
|
||||||
|
38 76 -62 c221 -178 510 -317 773 -372 259 -54 480 -63 706 -30 130 20 123 18
|
||||||
|
244 50 634 167 1143 667 1301 1276 43 167 51 234 52 430 0 261 -32 423 -132
|
||||||
|
662 -37 89 -42 110 -33 128 32 60 106 293 123 390 7 37 17 91 24 125 10 50 12
|
||||||
|
3363 2 3445 -19 152 -77 394 -114 475 -8 16 -24 55 -35 85 -54 139 -199 369
|
||||||
|
-315 499 -166 186 -334 318 -565 444 -30 16 -102 56 -160 87 -101 55 -164 89
|
||||||
|
-315 170 -38 21 -144 78 -235 127 -91 50 -194 106 -230 125 -36 19 -101 55
|
||||||
|
-145 79 -152 82 -180 98 -250 134 -60 32 -309 167 -470 255 -27 15 -90 49
|
||||||
|
-140 75 -49 26 -103 56 -120 65 -16 10 -66 37 -110 60 -44 24 -102 55 -130 70
|
||||||
|
-240 132 -367 194 -485 237 -68 25 -265 77 -338 88 -23 4 -54 9 -70 12 -30 5
|
||||||
|
-399 13 -404 8z m412 -3180 c52 -7 106 -16 120 -19 14 -3 36 -8 50 -11 163
|
||||||
|
-31 303 -90 748 -313 l434 -217 -5 -605 c-2 -333 -6 -614 -9 -625 -3 -11 -9
|
||||||
|
-40 -13 -65 -14 -84 -16 -95 -36 -173 -125 -492 -442 -913 -888 -1181 -52 -31
|
||||||
|
-95 -56 -97 -56 -2 0 -68 -35 -146 -78 -79 -43 -188 -103 -243 -132 -55 -29
|
||||||
|
-108 -58 -117 -64 -20 -12 -43 -2 -288 136 -62 34 -134 74 -280 153 -344 188
|
||||||
|
-568 385 -760 671 -48 70 -148 257 -177 329 -42 105 -95 288 -107 369 -4 21
|
||||||
|
-9 48 -11 60 -15 61 -17 136 -22 647 -5 542 -4 557 15 595 19 37 39 49 434
|
||||||
|
246 420 211 550 265 719 303 193 42 490 56 679 30z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.8 KiB |
19
docs/favicons/site.webmanifest
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "MS-365-Electron",
|
||||||
|
"short_name": "MS-365-Electron",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "/favicons/android-chrome-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/favicons/android-chrome-512x512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"theme_color": "#ffffff",
|
||||||
|
"background_color": "#ffffff",
|
||||||
|
"display": "standalone"
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 300 KiB |
|
Before Width: | Height: | Size: 4.8 MiB |
185
docs/index.css
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
line-height: normal;
|
||||||
|
background: linear-gradient(-72.79deg, #fec9f9, #ffdbfd 0.01%, #ecfdff 64.06%);
|
||||||
|
background-size: auto;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-attachment: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--font-seaweed-script: "Seaweed Script";
|
||||||
|
--font-poppins: Poppins;
|
||||||
|
--font-size-sm: 14px;
|
||||||
|
--color-aliceblue-100: #f3f8ff;
|
||||||
|
--br-5xs: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.download-now {
|
||||||
|
position: relative;
|
||||||
|
font-size: var(--font-size-sm);
|
||||||
|
line-height: 19px;
|
||||||
|
font-weight: 600;
|
||||||
|
font-family: var(--font-poppins);
|
||||||
|
color: var(--color-aliceblue-100);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.download,
|
||||||
|
.github {
|
||||||
|
cursor: pointer;
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
position: absolute;
|
||||||
|
margin-top: 597px;
|
||||||
|
border-radius: var(--br-5xs);
|
||||||
|
width: 190px;
|
||||||
|
height: 62px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.download {
|
||||||
|
margin-left: 172px;
|
||||||
|
background: linear-gradient(90.05deg, #45bfff 26.58%, #00a7ff);
|
||||||
|
box-shadow: 0 24px 30px -16px rgba(45, 183, 255, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
.github {
|
||||||
|
margin-left: 392px;
|
||||||
|
background: linear-gradient(90.05deg, #424242 26.58%, #333);
|
||||||
|
box-shadow: 0 24px 30px -16px rgba(66, 66, 66, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
.description,
|
||||||
|
.heading {
|
||||||
|
position: absolute;
|
||||||
|
margin-top: 505px;
|
||||||
|
margin-left: 172px;
|
||||||
|
line-height: 26px;
|
||||||
|
display: inline-block;
|
||||||
|
width: 388px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heading {
|
||||||
|
margin-top: 285px;
|
||||||
|
margin-left: 166px;
|
||||||
|
font-size: 85px;
|
||||||
|
line-height: 90px;
|
||||||
|
color: #292e37;
|
||||||
|
width: 461px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.byagam778 {
|
||||||
|
position: absolute;
|
||||||
|
margin-top: 219px;
|
||||||
|
margin-left: 172px;
|
||||||
|
font-size: 50px;
|
||||||
|
line-height: 50px;
|
||||||
|
font-family: var(--font-seaweed-script);
|
||||||
|
color: #00acff;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content,
|
||||||
|
.preview-icon {
|
||||||
|
position: absolute;
|
||||||
|
margin-top: -93px;
|
||||||
|
margin-left: 0;
|
||||||
|
width: 890px;
|
||||||
|
height: 834px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
margin-left: 30%;
|
||||||
|
margin-top: 21.5%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-icon {
|
||||||
|
position: absolute;
|
||||||
|
margin-top: 22%;
|
||||||
|
margin-left: 68%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
width: 708px;
|
||||||
|
height: 447px;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ms-365-electron {
|
||||||
|
width: 100%;
|
||||||
|
height: 696px;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
text-align: left;
|
||||||
|
font-size: 18px;
|
||||||
|
color: #525d73;
|
||||||
|
font-family: var(--font-poppins);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.preview-icon {
|
||||||
|
width: 78%;
|
||||||
|
height: auto;
|
||||||
|
margin-top: 45%;
|
||||||
|
margin-left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
margin-top: 77%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heading {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 30px;
|
||||||
|
height: auto;
|
||||||
|
margin-top: 56%;
|
||||||
|
margin-left: 59%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.byagam778 {
|
||||||
|
text-align: center;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 30px;
|
||||||
|
height: auto;
|
||||||
|
margin-top: 50%;
|
||||||
|
margin-left: 59%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.description {
|
||||||
|
text-align: center;
|
||||||
|
width: 40%;
|
||||||
|
font-size: 20px;
|
||||||
|
height: auto;
|
||||||
|
margin-top: 65%;
|
||||||
|
margin-left: 59%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.github {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 20px;
|
||||||
|
margin-top: 85%;
|
||||||
|
margin-left: 59%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.download {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 20px;
|
||||||
|
margin-top: 77%;
|
||||||
|
margin-left: 59%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.download-now {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
180
docs/index.html
@@ -1,113 +1,91 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<!--
|
|
||||||
Strata by HTML5 UP
|
|
||||||
html5up.net | @ajlkn
|
|
||||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
|
||||||
-->
|
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>MS-Office-Electron</title>
|
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta
|
<meta name="viewport" content="initial-scale=1, width=device-width" />
|
||||||
name="viewport"
|
<title>MS-365-Electron</title>
|
||||||
content="width=device-width, initial-scale=1, user-scalable=no"
|
<link rel="stylesheet" href="./index.css" />
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="180x180"
|
||||||
|
href="./favicons/apple-touch-icon.png"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="32x32"
|
||||||
|
href="./favicons/favicon-32x32.png"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="16x16"
|
||||||
|
href="./favicons/favicon-16x16.png"
|
||||||
|
/>
|
||||||
|
<link rel="manifest" href="./favicons/site.webmanifest" />
|
||||||
|
<link
|
||||||
|
rel="mask-icon"
|
||||||
|
href="./favicons/safari-pinned-tab.svg"
|
||||||
|
color="#5bbad5"
|
||||||
|
/>
|
||||||
|
<link rel="shortcut icon" href="./favicons/favicon.ico" />
|
||||||
|
<meta name="apple-mobile-web-app-title" content="MS-365-Electron" />
|
||||||
|
<meta name="application-name" content="MS-365-Electron" />
|
||||||
|
<meta name="msapplication-TileColor" content="#603cba" />
|
||||||
|
<meta name="msapplication-config" content="./favicons/browserconfig.xml" />
|
||||||
|
<meta name="theme-color" content="#ffffff" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Seaweed Script:wght@400&display=swap"
|
||||||
/>
|
/>
|
||||||
<link rel="stylesheet" href="assets/css/main.css" />
|
|
||||||
</head>
|
</head>
|
||||||
<body class="is-preload">
|
<body>
|
||||||
<!-- Header -->
|
<div class="ms-365-electron">
|
||||||
<header id="header">
|
<div class="content">
|
||||||
<div class="inner">
|
<button class="download" id="download">
|
||||||
<a href="#" class="image avatar"
|
<div class="download-now">
|
||||||
><img src="images/logo.png" alt=""
|
Download Now:
|
||||||
/></a>
|
<div id="release-tag"></div>
|
||||||
<h1>
|
</div>
|
||||||
<strong>MS-365-Electron</strong><br />
|
</button>
|
||||||
Microsoft 365 Web Desktop Wrapper
|
<button class="github" id="gitHub">
|
||||||
</h1>
|
<div class="download-now">View on GitHub</div>
|
||||||
|
</button>
|
||||||
|
<div class="description">
|
||||||
|
Unofficial Microsoft 365 Web Desktop Wrapper made with Electron
|
||||||
|
</div>
|
||||||
|
<b class="heading">MS-365-Electron</b>
|
||||||
|
<div class="byagam778" id="byagam778">By @agam778</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
<img class="preview-icon" alt="" src="./public/preview.png" />
|
||||||
|
|
||||||
<!-- Main -->
|
|
||||||
<div id="main">
|
|
||||||
<!-- One -->
|
|
||||||
<section id="one">
|
|
||||||
<header class="major">
|
|
||||||
<h2>
|
|
||||||
Unofficial Microsoft 365 Web Desktop Wrapper made with Electron
|
|
||||||
</h2>
|
|
||||||
</header>
|
|
||||||
<p>
|
|
||||||
<img
|
|
||||||
src="images/mac.png"
|
|
||||||
alt=""
|
|
||||||
width="500"
|
|
||||||
height="auto"
|
|
||||||
class="floatright"
|
|
||||||
/>
|
|
||||||
MS-365-Electron is a dsktop wrapper for the web version of Microsoft
|
|
||||||
365, which is free but with some basic limits. It is made with
|
|
||||||
Electron and is available for Windows, Mac OS, and Linux! If you like
|
|
||||||
the project, do not forget to give a "<i class="far fa-star"></i>
|
|
||||||
Star" to the project :D
|
|
||||||
</p>
|
|
||||||
<h2>Download Now:</h2>
|
|
||||||
<ul class="actions">
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="https://github.com/agam778/MS-Office-Electron#-windows-installation"
|
|
||||||
class="button"
|
|
||||||
><i class="fab fa-windows"></i> Windows</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="https://github.com/agam778/MS-Office-Electron#-macos-installation"
|
|
||||||
class="button"
|
|
||||||
><i class="fab fa-apple"></i> Mac OS</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="https://github.com/agam778/MS-Office-Electron#-linux-installation"
|
|
||||||
class="button"
|
|
||||||
><i class="fab fa-linux"></i> Linux</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Footer -->
|
<script src="./index.js"></script>
|
||||||
<footer id="footer">
|
<script>
|
||||||
<div class="inner">
|
var download = document.getElementById("download");
|
||||||
<ul class="icons">
|
if (download) {
|
||||||
<li>
|
download.addEventListener("click", function () {
|
||||||
<a
|
window.open("https://github.com/agam778/MS-365-Electron/releases");
|
||||||
href="https://github.com/agam778/MS-Office-Electron"
|
});
|
||||||
class="icon brands fa-github"
|
}
|
||||||
><span class="label">Github</span></a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="mailto:agam778@zohomail.in" class="icon solid fa-envelope"
|
|
||||||
><span class="label">Email</span></a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<ul class="copyright">
|
|
||||||
<li>© Agampreet Singh</li>
|
|
||||||
<li>Design: <a href="http://html5up.net">HTML5 UP</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<!-- Scripts -->
|
var gitHub = document.getElementById("gitHub");
|
||||||
<script src="assets/js/jquery.min.js"></script>
|
if (gitHub) {
|
||||||
<script src="assets/js/jquery.poptrox.min.js"></script>
|
gitHub.addEventListener("click", function () {
|
||||||
<script src="assets/js/browser.min.js"></script>
|
window.open("https://github.com/agam778/MS-365-Electron/");
|
||||||
<script src="assets/js/breakpoints.min.js"></script>
|
});
|
||||||
<script src="assets/js/util.js"></script>
|
}
|
||||||
<script src="assets/js/main.js"></script>
|
|
||||||
|
var byagam778 = document.getElementById("byagam778");
|
||||||
|
if (byagam778) {
|
||||||
|
byagam778.addEventListener("click", function () {
|
||||||
|
window.open("https://github.com/agam778");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
14
docs/index.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
window.addEventListener("DOMContentLoaded", () => {
|
||||||
|
const releaseTagElement = document.getElementById("release-tag");
|
||||||
|
|
||||||
|
fetch("https://api.github.com/repos/agam778/MS-365-Electron/releases/latest")
|
||||||
|
.then((response) => response.json())
|
||||||
|
.then((data) => {
|
||||||
|
const latestTag = data.tag_name;
|
||||||
|
releaseTagElement.textContent = `${latestTag}`;
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.error("Error:", error);
|
||||||
|
releaseTagElement.textContent = "Failed to fetch release tag";
|
||||||
|
});
|
||||||
|
});
|
||||||
BIN
docs/public/preview.png
Normal file
|
After Width: | Height: | Size: 593 KiB |