').hide();
function onScrollNav() {
var stickyOn = _utility.$wnd.scrollTop() >= navbarTop;
if (stickyOn) {
$navbarTop.addClass('nk-navbar-fixed');
$navbarFake.show();
} else {
$navbarTop.removeClass('nk-navbar-fixed');
$navbarFake.hide();
}
}
if ($navbarTop.hasClass('nk-navbar-sticky')) {
$navbarTop.after($navbarFake);
$navbarFake.height($navbarTop.innerHeight());
self.debounceResize(function () {
$navbarFake.height($navbarTop.innerHeight());
});
_utility.$wnd.on('scroll resize', onScrollNav);
onScrollNav();
} // correct dropdown position
function correctDropdown($item) {
var $dropdown = $item.children('.dropdown');
if ($item.parent().is('.nk-nav')) {
var $parent = $item.closest('.nk-navbar');
var $parentContainer = $parent.children('.container');
$parentContainer = $parentContainer.length ? $parentContainer : $parent; // fix right value when sub menu is not hidden
var css = {
marginLeft: '',
marginRight: '',
marginTop: 0
};
$dropdown.css(css);
var rect = $dropdown[0].getBoundingClientRect();
var rectContainer = $parentContainer[0].getBoundingClientRect();
var itemRect = $item[0].getBoundingClientRect(); // move dropdown from right corner (right corner will check in nav container)
if (rect.right > rectContainer.right) {
css.marginLeft = rectContainer.right - rect.right;
$dropdown.css(css);
rect = $dropdown[0].getBoundingClientRect();
} // move dropdown from left corner
if (rect.left < 0) {
css.marginLeft = -rect.left;
$dropdown.css(css);
rect = $dropdown[0].getBoundingClientRect();
} // check if dropdown not under item
var currentLeftPost = rect.left + (css.marginLeft || 0);
if (currentLeftPost > itemRect.left) {
css.marginLeft = (css.marginLeft || 0) - (currentLeftPost - itemRect.left);
} // correct top position
// 10 - transform value
css.marginTop = $parent.innerHeight() - $dropdown.offset().top + $parent.offset().top + 10;
$dropdown.css(css);
} else {
$item.removeClass('nk-drop-item-reverse');
var _rect = $dropdown[0].getBoundingClientRect();
if (_rect.left + _rect.width > _utility.wndW) {
$item.addClass('nk-drop-item-reverse');
}
}
}
$navbarTop.on('mouseenter', 'li.nk-drop-item', function () {
correctDropdown((0, _utility.$)(this));
}); // correct on page load.
$navbarTop.find('li.nk-drop-item').each(function () {
correctDropdown((0, _utility.$)(this));
}); // hide / show
// add / remove solid color
var $autohideNav = $navbarTop.filter('.nk-navbar-autohide');
self.throttleScroll(function (type, scroll) {
var start = 400;
var hideClass = 'nk-onscroll-hide';
var showClass = 'nk-onscroll-show'; // hide / show
if (type === 'down' && scroll > start) {
$autohideNav.removeClass(showClass).addClass(hideClass);
} else if (type === 'up' || type === 'end' || type === 'start') {
$autohideNav.removeClass(hideClass).addClass(showClass);
} // add solid color
if ($navbarTop.hasClass('nk-navbar-transparent') && $navbarTop.hasClass('nk-navbar-sticky')) {
$navbarTop[(scroll > 70 ? 'add' : 'remove') + 'Class']('nk-navbar-solid');
}
});
}
exports.initNavbar = initNavbar;
/***/
},
/* 8 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initNavbarSide = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init Navbar Side
-------------------------------------------------------------------*/
function initNavbarSide() {
var self = this;
var $overlay = (0, _utility.$)('
').appendTo(_utility.$body); // side navbars
var $leftSide = (0, _utility.$)('.nk-navbar-left-side');
var $rightSide = (0, _utility.$)('.nk-navbar-right-side');
var $sideNavs = (0, _utility.$)('.nk-navbar-side'); // toggle navbars
function updateTogglers() {
(0, _utility.$)('[data-nav-toggle]').each(function eachNavToggle() {
var active = (0, _utility.$)((0, _utility.$)(this).attr('data-nav-toggle')).hasClass('open');
(0, _utility.$)(this)[(active ? 'add' : 'remove') + 'Class']('active');
});
}
self.toggleSide = function ($side, speed) {
self[$side.hasClass('open') ? 'closeSide' : 'openSide']($side, speed);
};
self.openSide = function ($side, speed) {
if ($side.css('display') === 'none') {
return;
}
$side.addClass('open'); // show sidebar
_utility.tween.to($side, speed || 0.4, {
x: $side.hasClass('nk-navbar-left-side') ? '100%' : '-100%',
force3D: true
}); // show overlay
if ($side.hasClass('nk-navbar-overlay-content')) {
_utility.tween.to($overlay, 0.3, {
opacity: 0.8,
display: 'block',
force3D: true
});
}
updateTogglers();
};
self.closeSide = function ($side, speed) {
$side.each(function eachSide() {
(0, _utility.$)(this).removeClass('open'); // hide sidebar
_utility.tween.to(this, speed || 0.4, {
x: '0%',
force3D: true
});
updateTogglers();
});
if (!$sideNavs.filter('.nk-navbar-overlay-content.open').length) {
// hide overlay
_utility.tween.to($overlay, 0.3, {
opacity: 0,
display: 'none',
force3D: true
});
}
};
_utility.$doc.on('click', '[data-nav-toggle]', function onNavToggleClick(e) {
var $nav = (0, _utility.$)((0, _utility.$)(this).attr('data-nav-toggle'));
if ($nav.hasClass('open')) {
self.closeSide($nav);
} else {
// hide another navigations
(0, _utility.$)('[data-nav-toggle]').each(function eachNavToggle() {
self.closeSide((0, _utility.$)((0, _utility.$)(this).attr('data-nav-toggle')));
});
self.openSide($nav);
}
e.preventDefault();
}); // overlay
_utility.$doc.on('click', '.nk-navbar-overlay', function () {
self.closeSide($sideNavs);
}); // hide sidebar if it invisible
self.debounceResize(function () {
$sideNavs.filter('.open').each(function eachOpenedNavs() {
if (!(0, _utility.$)(this).is(':visible')) {
self.closeSide((0, _utility.$)(this));
}
});
}); // swipe side navbars
if (!_utility.isTouch || typeof Hammer === 'undefined') {
return;
}
var swipeStartSize = 50;
var $swipeItem = void 0;
var navSize = void 0;
var openNav = void 0;
var closeNav = void 0;
var isRightSide = void 0;
var isLeftSide = void 0;
var isScrolling = 0;
var swipeDir = void 0;
var sidePos = false;
var startSwipe = false;
var endSwipe = false; // strange solution to fix pan events on the latest Chrome
// https://github.com/hammerjs/hammer.js/issues/1065
var mc = new Hammer.Manager(document, {
touchAction: 'auto',
inputClass: Hammer.SUPPORT_POINTER_EVENTS ? Hammer.PointerEventInput : Hammer.TouchInput,
recognizers: [[Hammer.Pan, {
direction: Hammer.DIRECTION_HORIZONTAL
}]]
}); // If we detect a scroll before a panleft/panright, disable panning
// thanks: https://github.com/hammerjs/hammer.js/issues/771
mc.on('panstart', function (e) {
if (e.additionalEvent === 'panup' || e.additionalEvent === 'pandown') {
isScrolling = 1;
}
}); // Reenable panning
mc.on('panend', function (e) {
if (!isScrolling) {
if ($swipeItem) {
var swipeSize = void 0;
if (sidePos) {
if (openNav) {
swipeSize = sidePos;
} else if (closeNav) {
swipeSize = navSize - sidePos;
} else {
swipeSize = 0;
}
} else {
swipeSize = 0;
}
var transitionTime = Math.max(0.15, 0.4 * (navSize - swipeSize) / navSize);
var swiped = 0;
if (swipeSize && swipeSize > 10) {
var velocityTest = Math.abs(e.velocityX) > 0.7;
if (swipeSize >= navSize / 3 || velocityTest) {
swiped = 1;
if (openNav) {
self.openSide($swipeItem, transitionTime);
} else {
self.closeSide($swipeItem, transitionTime);
}
}
}
if (!swiped) {
if (openNav) {
self.closeSide($swipeItem, transitionTime);
} else {
self.openSide($swipeItem, transitionTime);
}
}
}
openNav = false;
closeNav = false;
isRightSide = false;
isLeftSide = false;
swipeDir = false;
sidePos = false;
$swipeItem = false;
startSwipe = false;
endSwipe = false;
}
isScrolling = 0;
});
mc.on('panleft panright panup pandown', function (e) {
if (isScrolling) {
return;
}
var isFirst = false;
var isFinal = e.isFinal;
if (startSwipe === false) {
startSwipe = e.center.x;
isFirst = true;
}
endSwipe = e.center.x; // init
if (isFirst) {
if (e.direction === 2) {
swipeDir = 'left';
} else if (e.direction === 4) {
swipeDir = 'right';
} else {
swipeDir = false;
} // right side
if ($rightSide && $rightSide.length) {
navSize = $rightSide.width(); // open
if (_utility.wndW - startSwipe <= swipeStartSize && !$rightSide.hasClass('open') && !$leftSide.hasClass('open')) {
openNav = 1;
isRightSide = 1; // close
} else if (_utility.wndW - startSwipe >= navSize - 100 && $rightSide.hasClass('open')) {
closeNav = 1;
isRightSide = 1;
}
} // left side
if ($leftSide && $leftSide.length && !isRightSide && $leftSide.is(':visible')) {
navSize = $leftSide.width(); // open
if (startSwipe <= swipeStartSize && !$rightSide.hasClass('open') && !$leftSide.hasClass('open')) {
openNav = 1;
isLeftSide = 1; // close
} else if (startSwipe >= navSize - 100 && $leftSide.hasClass('open')) {
closeNav = 1;
isLeftSide = 1;
}
} // swipe item
if (isLeftSide) {
$swipeItem = $leftSide;
} else if (isRightSide) {
$swipeItem = $rightSide;
} else {
$swipeItem = false;
} // move
} else if (!isFinal && $swipeItem) {
if (isRightSide && (openNav && swipeDir === 'left' || closeNav && swipeDir === 'right')) {
// open side navbar
if (openNav) {
sidePos = Math.min(navSize, Math.max(0, startSwipe - endSwipe));
} // close side navbar
if (closeNav) {
var curPos = startSwipe - endSwipe;
if (startSwipe < _utility.wndW - navSize) {
curPos = _utility.wndW - navSize - endSwipe;
}
sidePos = navSize - Math.abs(Math.max(-navSize, Math.min(0, curPos)));
}
_utility.tween.set($swipeItem, {
x: -100 * sidePos / navSize + '%'
});
} else if (isLeftSide && (openNav && swipeDir === 'right' || closeNav && swipeDir === 'left')) {
// open mobile navbar
if (openNav) {
sidePos = Math.min(navSize, Math.max(0, endSwipe - startSwipe));
} // close mobile navbar
if (closeNav) {
var curPos2 = endSwipe - startSwipe;
if (startSwipe > navSize) {
curPos2 = endSwipe - navSize;
}
sidePos = navSize - Math.abs(Math.max(-navSize, Math.min(0, curPos2)));
}
_utility.tween.set($swipeItem, {
x: 100 * sidePos / navSize + '%'
});
}
}
}); // prevent scrolling when opening/hiding navigation
window.addEventListener('touchmove', function (e) {
if (isRightSide || isLeftSide) {
e.srcEvent.preventDefault();
e.preventDefault();
}
}, {
passive: false
});
}
exports.initNavbarSide = initNavbarSide;
/***/
},
/* 9 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initNavbarDropEffect1 = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init Dropdown Effect 1 for side navbars and fullscreen
-------------------------------------------------------------------*/
function initNavbarDropEffect1() {
var self = this;
var $navbars = (0, _utility.$)('.nk-navbar-side, .nk-navbar-full'); // add back item for dropdowns
$navbars.find('.dropdown').prepend('
' + self.options.templates.secondaryNavbarBackItem + ''); // change height of opened dropdown
function updateSideNavDropdown($item) {
var $nav = $item.parents('.nk-navbar:eq(0)');
var $khNav = $nav.find('.nk-nav');
var $nanoCont = $khNav.children('.nano-content');
var $khNavRow = $khNav.parent();
var $drop = $nav.find('.nk-drop-item.open > .dropdown:not(.closed)');
if ($drop.length) {
var dropHeight = $drop.innerHeight(); // vertical center for dropdown
if ($khNavRow.hasClass('nk-nav-row-center')) {
$drop.css({
top: 0
});
$khNav.hide();
var nanoHeight = $khNavRow.innerHeight();
$khNav.show();
var nanoNavRowHeight = nanoHeight;
var nanoTop = $khNavRow.offset().top;
var dropTop = $drop.offset().top;
var top = nanoTop - dropTop;
if (dropHeight < nanoNavRowHeight) {
top += (nanoHeight - dropHeight) / 2;
}
$drop.css({
top: top
});
}
$khNav.css('height', dropHeight);
self.initPluginNano($nav); // scroll to top
_utility.tween.to($nanoCont, 0.3, {
scrollTo: {
y: 0
},
delay: 0.2
});
} else {
$khNav.css('height', '');
}
self.initPluginNano($nav);
} // open / close submenu
function toggleSubmenu(open, $drop) {
var $newItems = $drop.find('> .dropdown > li > a');
var $oldItems = $drop.parent().find('> li > a');
if (open) {
$drop.addClass('open').parent().addClass('closed');
} else {
$drop.removeClass('open').parent().removeClass('closed');
var tmp = $newItems;
$newItems = $oldItems;
$oldItems = tmp;
} // show items
_utility.tween.set($newItems, {
x: open ? '20%' : '-20%',
opacity: 0,
display: 'block'
}, 0.1);
_utility.tween.staggerTo($newItems, 0.2, {
x: '0%',
opacity: 1,
delay: 0.1
}, 0.05); // hide items
_utility.tween.staggerTo($oldItems, 0.2, {
x: open ? '-20%' : '20%',
opacity: 0
}, 0.05, function () {
$oldItems.css('display', 'none');
});
}
$navbars.on('click', '.nk-drop-item > a', function (e) {
toggleSubmenu(true, (0, _utility.$)(this).parent());
updateSideNavDropdown((0, _utility.$)(this));
e.preventDefault();
});
$navbars.on('click', '.bropdown-back > a', function (e) {
toggleSubmenu(false, (0, _utility.$)(this).parent().parent().parent());
updateSideNavDropdown((0, _utility.$)(this));
e.preventDefault();
});
}
exports.initNavbarDropEffect1 = initNavbarDropEffect1;
/***/
},
/* 10 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initBackgrounds = undefined;
var _utility = __webpack_require__(0);
/* Bootstrap Backgrounds */
function initBackgrounds() {
if (typeof MutationObserver === 'undefined') {
return;
} // fix page backgrounds right offset when body padding changed (for example when showed bootstrap modal).
var $backgrounds = (0, _utility.$)('.nk-page-background-top, .nk-page-background-bottom, .nk-page-background-fixed');
if ($backgrounds.length) {
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function () {
var right = (0, _utility.$)('body').css('padding-right');
if (right) {
$backgrounds.css('width', 'calc(100% - ' + right + ')');
} else {
$backgrounds.css('width', '');
}
});
});
observer.observe(_utility.$body[0], {
attributes: true,
attributeFilter: ['style']
});
}
}
exports.initBackgrounds = initBackgrounds;
/***/
},
/* 11 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initCounters = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init Counters
-------------------------------------------------------------------*/
function initCounters() {
var self = this;
var $progressCount = (0, _utility.$)('.nk-progress.nk-count');
var $numberCount = (0, _utility.$)('.nk-count:not(.nk-progress)'); // set default progress
$progressCount.each(function () {
(0, _utility.$)(this).attr('data-nk-count', (0, _utility.$)(this).attr('data-progress')).attr('data-nk-mask', (0, _utility.$)(this).attr('data-progress-mask')).find('.nk-progress-line > div').css('width', ((0, _utility.$)(this).attr('data-nk-count-from') || '0') + '%').find('.nk-progress-percent').html('');
}); // set default numbers
$numberCount.each(function () {
(0, _utility.$)(this).attr('data-nk-count', (0, _utility.$)(this).attr('data-nk-count') || parseInt((0, _utility.$)(this).text(), 10)).html((0, _utility.$)(this).attr('data-nk-count-from') || '0');
});
var countersNum = 1;
function runCounters() {
if (!countersNum) {
return;
}
var progress = $progressCount.filter('[data-nk-count]');
var numbers = $numberCount.filter('[data-nk-count]');
countersNum = progress.length + numbers.length; // progress
$progressCount.filter('[data-nk-count]').each(function () {
var $item = (0, _utility.$)(this);
if (self.isInViewport($item)) {
var count = {
curr: $item.attr('data-nk-count-from') || '0',
to: $item.attr('data-nk-count'),
mask: $item.attr('data-nk-mask') || '{$}%'
};
var $itemLine = $item.find('.nk-progress-line > div');
var $itemLabel = $item.find('.nk-progress-percent');
_utility.tween.to($itemLine, 1, {
width: count.to + '%'
});
_utility.tween.to(count, 1, {
curr: count.to,
roundProps: 'curr',
ease: Circ.easeIn,
onUpdate: function onUpdate() {
$itemLabel.text(count.mask.replace('{$}', count.curr));
}
});
$item.removeAttr('data-nk-count');
}
}); // number
$numberCount.filter('[data-nk-count]').each(function () {
var $item = (0, _utility.$)(this);
if (self.isInViewport($item)) {
var count = {
curr: $item.text(),
to: $item.attr('data-nk-count')
};
$item.removeAttr('data-nk-count data-nk-count-from');
_utility.tween.to(count, 1, {
curr: count.to,
roundProps: 'curr',
ease: Circ.easeIn,
onUpdate: function onUpdate() {
$item.text(count.curr);
}
});
}
});
}
self.throttleScroll(runCounters);
runCounters();
}
exports.initCounters = initCounters;
/***/
},
/* 12 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initStore = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init Store
-------------------------------------------------------------------*/
function initStore() {
var self = this; // scroll to ratings
_utility.$doc.on('click', 'a.nk-product-rating', function (e) {
var isHash = this.hash;
if (isHash) {
var $hashBlock = (0, _utility.$)(isHash).parents('.nk-tabs:eq(0)');
if ($hashBlock.length) {
self.scrollTo($hashBlock);
}
(0, _utility.$)('.nk-tabs').find('[data-toggle="tab"][href="' + isHash + '"]').click();
}
e.preventDefault();
});
}
exports.initStore = initStore;
/***/
},
/* 13 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initNewsBox = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init News Box
-------------------------------------------------------------------*/
function initNewsBox() {
_utility.$doc.on('click', '.nk-news-box .nk-news-box-item', function () {
var $this = (0, _utility.$)(this);
var $info = $this.parents('.nk-news-box:eq(0)').find('.nk-news-box-each-info'); // get data
var data = {
title: $this.find('.nk-news-box-item-title').html(),
img: $this.find('.nk-news-box-item-full-img').attr('src'),
img_alt: $this.find('.nk-news-box-item-full-img').attr('alt'),
categories: $this.find('.nk-news-box-item-categories').html(),
text: $this.find('.nk-news-box-item-text').html(),
url: $this.find('.nk-news-box-item-url').attr('href'),
date: $this.find('.nk-news-box-item-date').html()
}; // set data
$info.find('.nk-news-box-item-title').html(data.title);
if ($info.find('.nk-news-box-item-image > img').length) {
$info.find('.nk-news-box-item-image > img').attr('src', data.img).attr('alt', data.img_alt);
} else {
$info.find('.nk-news-box-item-image').css('background-image', 'url("' + data.img + '")');
}
$info.find('.nk-news-box-item-categories').html(data.categories);
$info.find('.nk-news-box-item-text').html(data.text);
$info.find('.nk-news-box-item-more').attr('href', data.url);
$info.find('.nk-news-box-item-date').html(data.date); // activate item
$this.addClass('nk-news-box-item-active').siblings().removeClass('nk-news-box-item-active');
}); // click on active item on load
(0, _utility.$)('.nk-news-box .nk-news-box-item-active').trigger('click');
}
exports.initNewsBox = initNewsBox;
/***/
},
/* 14 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initAnchors = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Anchors
-------------------------------------------------------------------*/
function initAnchors() {
var self = this; // click on anchors
var $leftSideNav = (0, _utility.$)('.nk-navbar-left-side');
var $rightSideNav = (0, _utility.$)('.nk-navbar-right-side');
function closeNavs() {
self.closeSide($leftSideNav);
self.closeSide($rightSideNav);
self.closeFullscreenNavbar();
}
_utility.$doc.on('click', '.navbar a, .nk-navbar a, a.btn, a.nk-btn, a.nk-anchor', function (e) {
var isHash = this.hash;
var isURIsame = this.baseURI === window.location.href;
if (isHash && isURIsame) {
// sometimes hashs have no valid selector like ##hash, it will throw errors
try {
var $hashBlock = (0, _utility.$)(isHash);
var hash = isHash.replace(/^#/, '');
if ($hashBlock.length || hash === 'top' || hash === 'bottom') {
// close navigations
closeNavs(); // scroll to block
self.scrollTo($hashBlock.length ? $hashBlock : hash);
e.preventDefault();
} // eslint-disable-next-line
} catch (evt) {}
}
}); // add active class on navbar items
var $anchorItems = (0, _utility.$)('.nk-navbar .nk-nav > li > a[href*="#"]');
var anchorBlocks = [];
function hashInArray(item) {
for (var k = 0; k < anchorBlocks.length; k++) {
if (anchorBlocks[k].hash === item) {
return k;
}
}
return false;
} // get all anchors + blocks on the page
$anchorItems.each(function () {
var hash = this.hash.replace(/^#/, '');
if (!hash) {
return;
}
var $item = (0, _utility.$)(this).parent();
var $block = (0, _utility.$)('#' + hash);
if (hash && $block.length || hash === 'top') {
var inArray = hashInArray(hash);
if (inArray === false) {
anchorBlocks.push({
hash: hash,
$item: $item,
$block: $block
});
} else {
anchorBlocks[inArray].$item = anchorBlocks[inArray].$item.add($item);
}
}
}); // prepare anchor list and listen for scroll to activate items in navbar
function updateAnchorItemsPositions() {
for (var k = 0; k < anchorBlocks.length; k++) {
var item = anchorBlocks[k];
var blockTop = 0;
var blockH = _utility.wndH;
if (item.$block.length) {
blockTop = item.$block.offset().top;
blockH = item.$block.innerHeight();
}
item.activate = blockTop - _utility.wndH / 2;
item.deactivate = blockTop + blockH - _utility.wndH / 2;
}
}
function setAnchorActiveItem(type, ST) {
for (var k = 0; k < anchorBlocks.length; k++) {
var item = anchorBlocks[k];
var active = ST >= item.activate && ST < item.deactivate;
item.$item[active ? 'addClass' : 'removeClass']('active');
}
}
if (anchorBlocks.length) {
updateAnchorItemsPositions();
setAnchorActiveItem('static', _utility.$wnd.scrollTop());
self.throttleScroll(setAnchorActiveItem);
self.debounceResize(updateAnchorItemsPositions);
}
}
exports.initAnchors = initAnchors;
/***/
},
/* 15 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initVideoBlocks = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init Video Blocks
-------------------------------------------------------------------*/
function initVideoBlocks() {
if (typeof window.VideoWorker === 'undefined') {
return;
}
var self = this; // init plain video
function addPlainPlayButton($plainCont) {
$plainCont.find('.nk-video-plain-toggle').html(self.options.templates.plainVideoIcon);
}
function addPlainLoadButton($plainCont) {
$plainCont.find('.nk-video-plain-toggle').html(self.options.templates.plainVideoLoadIcon || self.options.templates.plainVideoIcon);
}
(0, _utility.$)('.nk-plain-video[data-video]').each(function () {
var $plainCont = (0, _utility.$)(this);
var $plainIframe = void 0;
var url = (0, _utility.$)(this).attr('data-video');
var thumb = (0, _utility.$)(this).attr('data-video-thumb');
var api = new VideoWorker(url, {
autoplay: 0,
loop: 0,
mute: 0,
controls: 1
});
if (api && api.isValid()) {
var loaded = 0;
var clicked = 0; // add play event
$plainCont.on('click', function () {
if (_utility.isMobile) {
window.open(api.url);
return;
}
if (clicked) {
return;
}
clicked = 1; // add loading button
if (!loaded) {
addPlainLoadButton($plainCont);
api.getIframe(function (iframe) {
// add iframe
$plainIframe = (0, _utility.$)(iframe);
var $parent = $plainIframe.parent();
_utility.tween.set(iframe, {
opacity: 0,
left: '101%'
});
$plainIframe.appendTo($plainCont);
$parent.remove();
api.play();
});
} else {
api.play();
}
}); // add play button
$plainCont.append('
');
addPlainPlayButton($plainCont); // set thumb
if (thumb) {
$plainCont.css('background-image', 'url("' + thumb + '")');
} else {
api.getImageURL(function (imgSrc) {
$plainCont.css('background-image', 'url("' + imgSrc + '")');
});
}
if (_utility.isMobile) {
return;
}
api.on('ready', function () {
api.play();
});
api.on('play', function () {
_utility.tween.set($plainIframe, {
left: '0%'
});
_utility.tween.to($plainIframe, 0.5, {
opacity: 1,
onComplete: function onComplete() {
// add play button
if (!loaded) {
addPlainPlayButton($plainCont);
loaded = 1;
}
}
}); // pause audio
if (typeof soundManager !== 'undefined') {
soundManager.pauseAll();
}
});
}
});
}
exports.initVideoBlocks = initVideoBlocks;
/***/
},
/* 16 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initGIF = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init GIFs
-------------------------------------------------------------------*/
function initGIF() {
var self = this; // load gif in background
function loadGif(url, cb) {
var temp = new Image();
temp.onload = function () {
cb();
};
temp.src = url;
} // play gif
function playGif(item) {
var $item = (0, _utility.$)(item);
if (!item.gifPlaying) {
item.gifPlaying = true;
if (item.khGifLoaded) {
$item.addClass('nk-gif-playing');
$item.find('img').attr('src', $item.find('img').attr('data-gif'));
} else if (!item.khGifLoading) {
item.khGifLoading = 1;
$item.addClass('nk-gif-loading');
loadGif($item.find('img').attr('data-gif'), function () {
item.khGifLoaded = 1;
$item.removeClass('nk-gif-loading');
if (item.gifPlaying) {
item.gifPlaying = false;
playGif(item);
}
});
}
}
} // stop playing gif
function stopGif(item) {
var $item = (0, _utility.$)(item);
if (item.gifPlaying) {
item.gifPlaying = false;
$item.removeClass('nk-gif-playing');
$item.find('img').attr('src', $item.find('img').attr('data-gif-static'));
}
} // prepare gif containers
(0, _utility.$)('.nk-gif').each(function () {
var $this = (0, _utility.$)(this); // add toggle button
$this.append('
' + self.options.templates.gifIcon + ''); // add loading circle
$this.append('
');
$this.find('img').attr('data-gif-static', $this.find('img').attr('src'));
}); // hover gif
(0, _utility.$)('.nk-gif-hover').on('mouseenter', function () {
(0, _utility.$)(this).addClass('hover');
playGif(this);
}).on('mouseleave', function () {
(0, _utility.$)(this).removeClass('hover');
stopGif(this);
}); // click gif
(0, _utility.$)('.nk-gif-click').on('click', function () {
if (this.gifPlaying) {
(0, _utility.$)(this).removeClass('hover');
stopGif(this);
} else {
(0, _utility.$)(this).addClass('hover');
playGif(this);
}
}); // autoplay in viewport
var $gifVP = (0, _utility.$)('.nk-gif-viewport');
if ($gifVP.length) {
self.throttleScroll(function () {
$gifVP.each(function () {
var inVP = self.isInViewport((0, _utility.$)(this), 1);
if (inVP[0]) {
if (inVP[1].height / _utility.wndH < 0.7) {
if (inVP[0] === 1) {
playGif(this);
} else {
stopGif(this);
}
} else if (inVP[0] >= 0.7) {
playGif(this);
} else {
stopGif(this);
}
} else {
stopGif(this);
}
});
});
} // autoplay gif
(0, _utility.$)('.nk-gif:not(.nk-gif-click):not(.nk-gif-hover):not(.nk-gif-viewport)').each(function () {
playGif(this);
});
}
exports.initGIF = initGIF;
/***/
},
/* 17 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initInfoBoxes = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init Info Boxes / Alerts
-------------------------------------------------------------------*/
function initInfoBoxes() {
var self = this; // close
_utility.$doc.on('click', '.nk-info-box .nk-info-box-close', function (e) {
e.preventDefault();
var $box = (0, _utility.$)(this).parents('.nk-info-box:eq(0)');
_utility.tween.to($box, 0.3, {
opacity: 0,
onComplete: function onComplete() {
_utility.tween.to($box, 0.3, {
height: 0,
padding: 0,
margin: 0,
display: 'none',
onComplete: function onComplete() {
self.debounceResize();
}
});
}
});
});
}
exports.initInfoBoxes = initInfoBoxes;
/***/
},
/* 18 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initForms = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init AJAX Forms
-------------------------------------------------------------------*/
function initForms() {
var self = this;
if (typeof _utility.$.validator === 'undefined') {
return;
} // Validate Khaki Forms
(0, _utility.$)('form:not(.nk-form-ajax):not(.nk-mchimp):not([novalidate])').each(function () {
(0, _utility.$)(this).validate({
errorClass: 'nk-error',
errorElement: 'div',
errorPlacement: function errorPlacement(error, element) {
var $parent = element.parent('.input-group');
if ($parent.length) {
$parent.after(error);
} else {
element.after(error);
}
self.debounceResize();
}
});
}); // ajax form
(0, _utility.$)('form.nk-form-ajax:not([novalidate])').each(function () {
(0, _utility.$)(this).validate({
errorClass: 'nk-error',
errorElement: 'div',
errorPlacement: function errorPlacement(error, element) {
var $parent = element.parent('.input-group');
if ($parent.length) {
$parent.after(error);
} else {
element.after(error);
}
self.debounceResize();
},
// Submit the form via ajax (see: jQuery Form plugin)
submitHandler: function submitHandler(form) {
var $responseSuccess = (0, _utility.$)(form).find('.nk-form-response-success');
var $responseError = (0, _utility.$)(form).find('.nk-form-response-error');
var $form = (0, _utility.$)(form);
_utility.$.ajax({
type: 'POST',
url: $form.attr('action'),
data: $form.serialize(),
success: function success(response) {
response = JSON.parse(response);
if (response.type && response.type === 'success') {
$responseError.hide();
$responseSuccess.html(response.response).show();
form.reset();
} else {
$responseSuccess.hide();
$responseError.html(response.response).show();
}
self.debounceResize();
},
error: function error(response) {
$responseSuccess.hide();
$responseError.html(response.responseText).show();
self.debounceResize();
}
});
}
});
});
}
exports.initForms = initForms;
/***/
},
/* 19 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initFormsMailChimp = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init MailChimp
-------------------------------------------------------------------*/
function initFormsMailChimp() {
var $mchimp = (0, _utility.$)('form.nk-mchimp');
if (typeof _utility.$.validator === 'undefined' || !$mchimp.length) {
return;
}
var self = this; // Additional Validate Methods From MailChimp
// Validate a multifield birthday
_utility.$.validator.addMethod('mc_birthday', function (date, element, groupingClass) {
var isValid = false;
var $fields = (0, _utility.$)('input:not(:hidden)', (0, _utility.$)(element).closest(groupingClass));
if ($fields.filter(':filled').length === 0 && this.optional(element)) {
isValid = true; // None have been filled out, so no error
} else {
var dateArray = [];
dateArray.month = $fields.filter('input[name*="[month]"]').val();
dateArray.day = $fields.filter('input[name*="[day]"]').val(); // correct month value
dateArray.month -= 1;
var testDate = new Date(1970, dateArray.month, dateArray.day);
if (testDate.getDate() !== dateArray.day || testDate.getMonth() !== dateArray.month) {
isValid = false;
} else {
isValid = true;
}
}
return isValid;
}, 'Please enter a valid month and day.'); // Validate a multifield date
_utility.$.validator.addMethod('mc_date', function (date, element, groupingClass) {
var isValid = false;
var $fields = (0, _utility.$)('input:not(:hidden)', (0, _utility.$)(element).closest(groupingClass));
if ($fields.filter(':filled').length === 0 && this.optional(element)) {
isValid = true; // None have been filled out, so no error
} else {
var dateArray = [];
dateArray.month = $fields.filter('input[name*="[month]"]').val();
dateArray.day = $fields.filter('input[name*="[day]"]').val();
dateArray.year = $fields.filter('input[name*="[year]"]').val(); // correct month value
dateArray.month -= 1; // correct year value
if (dateArray.year.length < 4) {
dateArray.year = parseInt(dateArray.year, 10) < 50 ? 2000 + parseInt(dateArray.year, 10) : 1900 + parseInt(dateArray.year, 10);
}
var testDate = new Date(dateArray.year, dateArray.month, dateArray.day);
if (testDate.getDate() !== dateArray.day || testDate.getMonth() !== dateArray.month || testDate.getFullYear() !== dateArray.year) {
isValid = false;
} else {
isValid = true;
}
}
return isValid;
}, 'Please enter a valid date'); // Validate a multifield phone number
_utility.$.validator.addMethod('mc_phone', function (phoneNumber, element, groupingClass) {
var isValid = false;
var $fields = (0, _utility.$)('input:filled:not(:hidden)', (0, _utility.$)(element).closest(groupingClass));
if ($fields.length === 0 && this.optional(element)) {
isValid = true; // None have been filled out, so no error
} else {
phoneNumber = $fields.eq(0).val() + $fields.eq(1).val() + $fields.eq(2).val();
isValid = phoneNumber.length === 10 && phoneNumber.match(/[0-9]{9}/);
}
return isValid;
}, 'Please specify a valid phone number');
_utility.$.validator.addMethod('skip_or_complete_group', function (value, element, groupingClass) {
var $fields = (0, _utility.$)('input:not(:hidden)', (0, _utility.$)(element).closest(groupingClass));
var $fieldsFirst = $fields.eq(0);
var validator = $fieldsFirst.data('valid_skip') ? $fieldsFirst.data('valid_skip') : _utility.$.extend({}, this);
var numberFilled = $fields.filter(function () {
return validator.elementValue(this);
}).length;
var isValid = numberFilled === 0 || numberFilled === $fields.length; // Store the cloned validator for future validation
$fieldsFirst.data('valid_skip', validator); // If element isn't being validated, run each field's validation rules
if (!(0, _utility.$)(element).data('being_validated')) {
$fields.data('being_validated', true);
$fields.each(function () {
validator.element(this);
});
$fields.data('being_validated', false);
}
return isValid;
}, _utility.$.validator.format('Please supply missing fields.'));
_utility.$.validator.addMethod('skip_or_fill_minimum', function (value, element, options) {
var $fields = (0, _utility.$)(options[1], element.form);
var $fieldsFirst = $fields.eq(0);
var validator = $fieldsFirst.data('valid_skip') ? $fieldsFirst.data('valid_skip') : _utility.$.extend({}, this);
var numberFilled = $fields.filter(function () {
return validator.elementValue(this);
}).length;
var isValid = numberFilled === 0 || numberFilled >= options[0]; // Store the cloned validator for future validation
$fieldsFirst.data('valid_skip', validator); // If element isn't being validated, run each skip_or_fill_minimum field's validation rules
if (!(0, _utility.$)(element).data('being_validated')) {
$fields.data('being_validated', true);
$fields.each(function () {
validator.element(this);
});
$fields.data('being_validated', false);
}
return isValid;
}, _utility.$.validator.format('Please either skip these fields or fill at least {0} of them.'));
_utility.$.validator.addMethod('zipcodeUS', function (value, element) {
return this.optional(element) || /^\d{5}-\d{4}$|^\d{5}$/.test(value);
}, 'The specified US ZIP Code is invalid');
$mchimp.each(function () {
var $form = (0, _utility.$)(this);
if (!$form.length) {
return;
}
var validator = $form.validate({
errorClass: 'nk-error',
errorElement: 'div',
// Grouping fields makes jQuery Validation display one error for all the fields in the group
// It doesn't have anything to do with how the fields are validated (together or separately),
// it's strictly for visual display of errors
groups: function groups() {
var groups = {};
$form.find('.input-group').each(function () {
// TODO: What about non-text inputs like number?
var inputs = (0, _utility.$)(this).find('input:text:not(:hidden)');
if (inputs.length > 1) {
var mergeName = inputs.first().attr('name');
var fieldNames = _utility.$.map(inputs, function (f) {
return f.name;
});
groups[mergeName.substring(0, mergeName.indexOf('['))] = fieldNames.join(' ');
}
});
return groups;
},
// Place a field's inline error HTML just before the div.input-group closing tag
errorPlacement: function errorPlacement(error, element) {
element.closest('.input-group').after(error);
self.debounceResize();
},
// Submit the form via ajax (see: jQuery Form plugin)
submitHandler: function submitHandler() {
var $responseSuccess = $form.find('.nk-form-response-success');
var $responseError = $form.find('.nk-form-response-error');
var url = $form.attr('action');
url = url.replace('/post?u=', '/post-json?u=');
url += '&c=?';
_utility.$.ajax({
dataType: 'jsonp',
url: url,
data: $form.serializeArray(),
success: function success(resp) {
$responseSuccess.hide();
$responseError.hide(); // On successful form submission, display a success message and reset the form
if (resp.result === 'success') {
$responseSuccess.show().html(resp.msg);
$form[0].reset(); // If the form has errors, display them, inline if possible, or appended to #mce-error-response
} else {
// Example errors - Note: You only get one back at a time even if you submit several that are bad.
// Error structure - number indicates the index of the merge field that was invalid, then details
// Object {result: "error", msg: "6 - Please enter the date"}
// Object {result: "error", msg: "4 - Please enter a value"}
// Object {result: "error", msg: "9 - Please enter a complete address"}
// Try to parse the error into a field index and a message.
// On failure, just put the dump thing into in the msg letiable.
var index = -1;
var msg = void 0;
try {
var parts = resp.msg.split(' - ', 2);
if (typeof parts[1] === 'undefined') {
msg = resp.msg;
} else {
var i = parseInt(parts[0], 10);
if (i.toString() === parts[0]) {
index = parts[0];
msg = parts[1];
} else {
index = -1;
msg = resp.msg;
}
}
} catch (e) {
index = -1;
msg = resp.msg;
}
try {
// If index is -1 if means we don't have data on specifically which field was invalid.
// Just lump the error message into the generic response div.
if (index === -1) {
$responseError.show().html(msg);
} else {
var fieldName = $form.find('input[name]:eq(' + index + ')').attr('name'); // Make sure this exists
var data = {};
data[fieldName] = msg;
validator.showErrors(data);
}
} catch (e) {
$responseError.show().html(msg);
}
}
self.debounceResize();
},
error: function error(response) {
$responseSuccess.hide();
$responseError.html(response.responseText).show();
self.debounceResize();
}
});
}
});
}); // Custom validation methods for fields with certain css classes
_utility.$.validator.addClassRules('birthday', {
digits: true,
mc_birthday: '.datefield'
});
_utility.$.validator.addClassRules('datepart', {
digits: true,
mc_date: '.datefield'
});
_utility.$.validator.addClassRules('phonepart', {
digits: true,
mc_phone: '.phonefield'
});
}
exports.initFormsMailChimp = initFormsMailChimp;
/***/
},
/* 20 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initAudioPlayer = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init Audio Player
-------------------------------------------------------------------*/
function initAudioPlayer() {
if (typeof soundManager === 'undefined') {
return;
}
var _self = this;
var progressBusy = false; // busy when user drag progress bar
/* Plain audio players */
var $playersPlain = (0, _utility.$)('.nk-audio-plain'); // add play and pause buttons
$playersPlain.prepend(_self.options.templates.audioPlainButton);
var PlayersPlain = function PlayersPlain($item) {
var self = this;
self.$item = $item;
self.url = $item.attr('data-src');
self.$playPauseBtn = $item.find('.nk-audio-plain-play-pause');
self.$progress = $item.find('.nk-audio-progress-current');
self.$timer = $item.find('.nk-audio-plain-duration');
self.$timer.attr('data-duration', self.$timer.text());
function onPlay() {
$item.addClass('nk-audio-plain-playing');
}
function onStop() {
self.seek(0);
self.step();
self.$item.removeClass('nk-audio-plain-playing');
self.$timer.text(self.$timer.attr('data-duration'));
}
self.api = soundManager.createSound({
volume: 100,
whileplaying: function whileplaying() {
self.step();
},
onplay: onPlay,
onresume: onPlay,
onpause: function onpause() {
self.$item.removeClass('nk-audio-plain-playing');
self.$timer.text(self.$timer.attr('data-duration'));
},
onstop: onStop,
onfinish: onStop,
onload: function onload(ok) {
if (!ok && this._iO && this._iO.onerror) {
this._iO.onerror();
}
}
});
self.$playPauseBtn.on('click', function () {
if (!self.api.paused && self.api.playState && self.api.url) {
self.pause();
} else {
self.play();
}
});
};
PlayersPlain.prototype = {
/**
* Play a song in the playlist.
* @param {Number} index Index of the song in the playlist (leave empty to play the first or current).
*/
play: function play() {
// pause all players
soundManager.pauseAll(); // Begin playing the sound.
this.api.play({
url: this.url
});
},
/**
* Pause the currently playing track.
*/
pause: function pause() {
// Puase the sound.
soundManager.pauseAll();
},
/**
* Seek to a new position in the currently playing track.
* @param {Number} per Percentage through the song to skip.
*/
seek: function seek(per) {
this.api.setPosition(this.api.duration * per);
},
/**
* The step called within requestAnimationFrame to update the playback position.
*/
step: function step() {
var self = this; // Determine our current seek position.
var seek = self.api.position || 0;
self.progress = seek / self.api.duration;
self.$timer[0].innerHTML = self.formatTime(Math.round(seek));
if (!progressBusy) {
self.$progress[0].style.width = (self.progress * 100 || 0) + '%';
}
},
/**
* Format the time from seconds to M:SS.
* @param {Number} secs Seconds to format.
* @return {String} Formatted time.
*/
formatTime: function formatTime(msec) {
var secs = Math.round(msec / 1000) || 0;
var minutes = Math.floor(secs / 60) || 0;
minutes = (minutes < 10 ? '0' : 0) + minutes;
var seconds = secs - minutes * 60;
return minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
}
}; // progress
if (typeof Hammer !== 'undefined') {
var $progresses = $playersPlain.find('.nk-audio-progress');
$progresses.each(function () {
var $curProgressCont = (0, _utility.$)(this);
var $curProgres = $curProgressCont.children();
var curApi = void 0;
var progressW = void 0;
var progressCurW = void 0;
var progressStart = false;
var HammerProgress = new Hammer.Manager($curProgressCont[0]);
HammerProgress.add(new Hammer.Pan({
pointers: 1,
threshold: 0
}));
HammerProgress.add(new Hammer.Press({
time: 1
}));
HammerProgress.on('pan press pressup', function (e) {
// start
if (e.type === 'press' || progressStart === false) {
progressBusy = true;
progressW = $curProgressCont.width();
progressStart = e.pointers[0].clientX - $curProgressCont[0].getBoundingClientRect().left;
$curProgressCont.addClass('hover');
} // each
progressCurW = Math.min(1, Math.max(0, (progressStart + e.deltaX) / progressW));
$curProgres[0].style.width = progressCurW * 100 + '%'; // end
if (e.isFinal || e.type === 'pressup') {
if (!curApi) {
curApi = $curProgressCont.parents('.nk-audio-player-main, .nk-audio-plain')[0].audioAPI;
}
if (curApi) {
curApi.seek(progressCurW);
}
$curProgressCont.removeClass('hover');
progressBusy = false;
progressStart = false;
}
e.preventDefault();
});
});
}
soundManager.onready(function () {
if ($playersPlain.length) {
$playersPlain.each(function () {
this.audioAPI = new PlayersPlain((0, _utility.$)(this));
});
}
});
}
exports.initAudioPlayer = initAudioPlayer;
/***/
},
/* 21 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initImageSlider = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init Image Slider
-------------------------------------------------------------------*/
function initImageSlider() {
if (typeof window.Flickity === 'undefined') {
return;
}
var $sliders = (0, _utility.$)('.nk-image-slider');
if (!$sliders.length) {
return;
}
var intervalCallbacks = [];
setInterval(function () {
intervalCallbacks.forEach(function (cb) {
cb(100);
});
}, 100); // prepare each slider
$sliders.each(function () {
var $this = (0, _utility.$)(this);
var autoplay = parseFloat($this.attr('data-autoplay'), 10) || false;
var slides = []; // parse all slides
$this.find('.nk-image-slider-item').each(function () {
var $slide = (0, _utility.$)(this);
var $content = $slide.find('.nk-image-slider-content');
slides.push({
image: $slide.find('.nk-image-slider-img').attr('src'),
thumb: $slide.find('.nk-image-slider-img').attr('data-thumb'),
content: $content.html() || ''
});
$content.remove();
}); // no slides
if (!slides.length) {
$this.remove();
return;
}
$this.flickity({
pageDots: false,
autoPlay: false,
prevNextButtons: false,
wrapAround: true,
imagesLoaded: true
}); // Content.
$this.append('\n
\n ');
var $content = $this.find('.nk-image-slider-content'); // Display slide content.
function displayContent(i) {
if (slides[i]) {
$content.find('.nano-content').html(slides[i].content);
$content[slides[i].content ? 'addClass' : 'removeClass']('nk-image-slider-content-visible'); // update nano
if (typeof _utility.$.fn.nanoScroller !== 'undefined') {
$content.find('.nano').nanoScroller();
}
}
}
displayContent(0);
$this.on('change.flickity', function (event, index) {
displayContent(index);
}); // Add thumbs.
var thumbs = '';
slides.forEach(function (slideData) {
thumbs += '
';
});
$this.append('\n
\n ' + thumbs + '\n
\n ');
var $thumbs = $this.find('.nk-image-slider-thumbs');
$thumbs.flickity({
asNavFor: $this[0],
contain: true,
pageDots: false,
prevNextButtons: false,
cellAlign: 'left'
}); // Countdown.
var $countdown = (0, _utility.$)('
');
function insertCountdown(i) {
if (slides[i]) {
$thumbs.find('.nk-image-slider-thumbs-item:eq(' + (slides[i + 1] ? i + 1 : 0) + ')').append($countdown);
}
} // Autoplay.
if (autoplay) {
// Pause control
var isPaused = false;
$this.on('mouseenter', function () {
isPaused = true;
});
$this.on('mouseleave', function () {
isPaused = false;
});
var percentTime = 0;
var currentTimer = 0;
insertCountdown(0);
$thumbs.on('change.flickity', function (event, index) {
insertCountdown(index);
percentTime = 0;
});
intervalCallbacks.push(function (step) {
if (!isPaused) {
percentTime += step;
if (percentTime >= autoplay) {
$this.flickity('next');
percentTime = 0;
}
}
var newTimer = Math.ceil((autoplay - percentTime) / 1000);
if (currentTimer !== newTimer) {
currentTimer = newTimer;
$countdown.html(newTimer);
}
});
}
});
}
exports.initImageSlider = initImageSlider;
/***/
},
/* 22 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initFacebook = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Facebook
-------------------------------------------------------------------*/
function initFacebook() {
if (!(0, _utility.$)('.fb-page').length) {
return;
}
_utility.$body.append('
');
(function (d, s, id) {
if (window.location.protocol === 'file:') {
return;
}
var fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
var js = d.createElement(s);
js.id = id;
js.src = '//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.4';
fjs.parentNode.insertBefore(js, fjs);
})(document, 'script', 'facebook-jssdk');
}
exports.initFacebook = initFacebook;
/***/
},
/* 23 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initInstagram = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init Instagram
-------------------------------------------------------------------*/
function initInstagram() {
var self = this;
var $instagram = (0, _utility.$)('.nk-instagram');
if (!$instagram.length || !self.options.templates.instagram) {
return;
}
/**
* Templating a instagram item using '{{ }}' braces
* @param {Object} data Instagram item details are passed
* @return {String} Templated string
*/
function templating(data, temp) {
var tempVariables = ['link', 'image', 'caption'];
for (var i = 0, len = tempVariables.length; i < len; i++) {
temp = temp.replace(new RegExp('{{' + tempVariables[i] + '}}', 'gi'), data[tempVariables[i]]);
}
return temp;
}
$instagram.each(function () {
var $this = (0, _utility.$)(this);
var options = {
userID: $this.attr('data-instagram-user-id') || null,
count: $this.attr('data-instagram-count') || 6,
template: $this.attr('data-instagram-template') || self.options.templates.instagram,
quality: $this.attr('data-instagram-quality') || 'sm',
// sm, md, lg
loadingText: self.options.templates.instagramLoadingText,
failText: self.options.templates.instagramFailText,
apiPath: self.options.templates.instagramApiPath
}; // stop if running in file protocol
if (window.location.protocol === 'file:') {
$this.html('
' + options.failText + '
'); // eslint-disable-next-line
console.error('You should run you website on webserver with PHP to get working Instagram');
return;
}
$this.html('
' + options.loadingText + '
'); // Fetch instagram images
_utility.$.getJSON(options.apiPath, {
userID: options.userID,
count: options.count
}, function (response) {
$this.html('');
for (var i = 0; i < options.count; i++) {
var instaItem = false;
if (response[i]) {
instaItem = response[i];
} else if (response.statuses && response.statuses[i]) {
instaItem = response.statuses[i];
} else {
break;
}
var resolution = 'thumbnail';
if (options.quality === 'md') {
resolution = 'low_resolution';
}
if (options.quality === 'lg') {
resolution = 'standard_resolution';
}
var tempData = {
link: instaItem.link,
image: instaItem.images[resolution].url,
caption: instaItem.caption
};
$this.append(templating(tempData, options.template));
} // resize window
self.debounceResize();
}).fail(function (a) {
$this.html('
' + options.failText + '
');
_utility.$.error(a.responseText);
});
});
}
exports.initInstagram = initInstagram;
/***/
},
/* 24 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initTwitter = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init Twitter
-------------------------------------------------------------------*/
function initTwitter() {
var self = this;
var $twtFeeds = (0, _utility.$)('.nk-twitter-list');
if (!$twtFeeds.length || !self.options.templates.twitter) {
return;
}
/**
* Templating a tweet using '{{ }}' braces
* @param {Object} data Tweet details are passed
* @return {String} Templated string
*/
function templating(data, temp) {
var tempVariables = ['date', 'tweet', 'avatar', 'url', 'retweeted', 'screen_name', 'user_name'];
for (var i = 0, len = tempVariables.length; i < len; i++) {
temp = temp.replace(new RegExp('{{' + tempVariables[i] + '}}', 'gi'), data[tempVariables[i]]);
}
return temp;
}
$twtFeeds.each(function () {
var $this = (0, _utility.$)(this);
var options = {
username: $this.attr('data-twitter-user-name') || null,
list: null,
hashtag: $this.attr('data-twitter-hashtag') || null,
count: $this.attr('data-twitter-count') || 2,
hideReplies: $this.attr('data-twitter-hide-replies') === 'true',
template: $this.attr('data-twitter-template') || self.options.templates.twitter,
loadingText: self.options.templates.twitterLoadingText,
failText: self.options.templates.twitterFailText,
apiPath: self.options.templates.twitterApiPath
}; // stop if running in file protocol
if (window.location.protocol === 'file:') {
$this.html(options.failText); // eslint-disable-next-line
console.error('You should run you website on webserver with PHP to get working Twitter');
return;
} // Set loading
$this.html('
' + options.loadingText + ''); // Fetch tweets
_utility.$.getJSON(options.apiPath, {
username: options.username,
list: options.list,
hashtag: options.hashtag,
count: options.count,
exclude_replies: options.hideReplies
}, function (twt) {
$this.html('');
for (var i = 0; i < options.count; i++) {
var tweet = false;
if (twt[i]) {
tweet = twt[i];
} else if (twt.statuses && twt.statuses[i]) {
tweet = twt.statuses[i];
} else {
break;
}
var tempData = {
user_name: tweet.user.name,
date: tweet.date_formatted,
tweet: tweet.text_entitled,
avatar: '
',
url: 'https://twitter.com/' + tweet.user.screen_name + '/status/' + tweet.id_str,
retweeted: tweet.retweeted,
screen_name: tweet.user.screen_name
};
$this.append(templating(tempData, options.template));
} // resize window
self.debounceResize();
}).fail(function (a) {
$this.html(options.failText);
_utility.$.error(a.responseText);
});
});
}
exports.initTwitter = initTwitter;
/***/
},
/* 25 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initPluginStickySidebar = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init Plugin Sticky Sidebar
-------------------------------------------------------------------*/
function initPluginStickySidebar() {
if (typeof _utility.$.fn.stick_in_parent === 'undefined') {
return;
}
(0, _utility.$)('.nk-sidebar-sticky').each(function () {
var $this = (0, _utility.$)(this);
var $parent = $this.parent();
$parent.addClass('nk-sidebar-sticky-parent');
$this.wrapInner('
').children().stick_in_parent({
parent: $parent,
recalc_every: 50,
offset_top: parseInt($this.attr('data-offset-top'), 10) || 130,
// fixed ADS reloading issue https://github.com/leafo/sticky-kit/issues/45
spacer: false
}) // we need to set min height on parent block (in theme it is equal height column) to prevent sidebar content jumping
.on('sticky_kit:unbottom sticky_kit:stick sticky_kit:bottom', function () {
$parent.css('min-height', (0, _utility.$)(this).height());
}).on('sticky_kit:unstick', function () {
$parent.css('min-height', '');
});
});
}
exports.initPluginStickySidebar = initPluginStickySidebar;
/***/
},
/* 26 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
/* FastClick */
function initPluginFastClick() {
if (typeof FastClick !== 'undefined') {
FastClick.attach(document.body);
}
}
exports.initPluginFastClick = initPluginFastClick;
/***/
},
/* 27 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initPluginNano = undefined;
var _utility = __webpack_require__(0);
/* Nano Scroller */
function initPluginNano($context) {
if (typeof _utility.$.fn.nanoScroller !== 'undefined') {
($context || _utility.$doc).find('.nano').nanoScroller();
}
}
exports.initPluginNano = initPluginNano;
/***/
},
/* 28 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initPluginJarallax = undefined;
var _utility = __webpack_require__(0);
/* Jarallax */
function initPluginJarallax() {
if (typeof _utility.$.fn.jarallax === 'undefined') {
return;
}
var self = this; // video backgrounds
(0, _utility.$)('.bg-video[data-video]').each(function () {
(0, _utility.$)(this).attr('data-jarallax-video', (0, _utility.$)(this).attr('data-video'));
(0, _utility.$)(this).removeAttr('data-video');
}); // primary parallax
(0, _utility.$)('.bg-image-parallax, .bg-video-parallax').jarallax({
speed: self.options.parallaxSpeed
}); // video without parallax
(0, _utility.$)('.bg-video:not(.bg-video-parallax)').jarallax({
speed: 1
});
}
exports.initPluginJarallax = initPluginJarallax;
/***/
},
/* 29 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initPluginFlickity = undefined;
var _utility = __webpack_require__(0);
/* Flickity */
function initPluginFlickity() {
if (typeof window.Flickity === 'undefined') {
return;
}
function addDefaultArrows($carousel) {
(0, _utility.$)('
').on('click', function () {
$carousel.flickity('previous');
}).appendTo($carousel);
(0, _utility.$)('
').on('click', function () {
$carousel.flickity('next');
}).appendTo($carousel);
} // prevent click event fire when drag carousel
function noClickEventOnDrag($carousel) {
$carousel.on('dragStart.flickity', function () {
(0, _utility.$)(this).find('.flickity-viewport').addClass('is-dragging');
});
$carousel.on('dragEnd.flickity', function () {
(0, _utility.$)(this).find('.flickity-viewport').removeClass('is-dragging');
});
} // carousel
(0, _utility.$)('.nk-carousel > .nk-carousel-inner').each(function () {
(0, _utility.$)(this).flickity({
pageDots: (0, _utility.$)(this).parent().attr('data-dots') === 'true' || false,
autoPlay: parseFloat((0, _utility.$)(this).parent().attr('data-autoplay')) || false,
prevNextButtons: false,
wrapAround: true,
imagesLoaded: true,
cellAlign: (0, _utility.$)(this).parent().attr('data-cell-align') || 'center'
});
if ((0, _utility.$)(this).parent().attr('data-arrows') === 'true') {
addDefaultArrows((0, _utility.$)(this));
}
noClickEventOnDrag((0, _utility.$)(this));
});
}
exports.initPluginFlickity = initPluginFlickity;
/***/
},
/* 30 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initPluginPhotoswipe = undefined;
var _utility = __webpack_require__(0);
/* PhotoSwipe */
function initPluginPhotoswipe() {
var $gallery = (0, _utility.$)('.nk-popup-gallery');
if (typeof PhotoSwipe === 'undefined' || !$gallery.length) {
return;
} // prepare photoswipe markup
var markup = '
';
_utility.$body.append(markup); // init code
function parseThumbnailElements(el) {
var thumbElements = (0, _utility.$)(el).find('a.nk-gallery-item');
var items = [];
var descrElement = void 0;
var size = void 0;
var item = void 0;
thumbElements.each(function eachThumbs() {
descrElement = (0, _utility.$)(this).next('.nk-gallery-item-description');
size = (this.getAttribute('data-size') || '1920x1080').split('x'); // create slide object
item = {
src: this.getAttribute('href'),
w: parseInt(size[0], 10),
h: parseInt(size[1], 10),
author: this.getAttribute('data-author')
};
if (descrElement.length) {
item.title = descrElement.html();
}
var mediumSrc = this.getAttribute('data-med') || item.src;
if (mediumSrc) {
size = (this.getAttribute('data-med-size') || this.getAttribute('data-size') || '1920x1080').split('x'); // "medium-sized" image
item.m = {
src: mediumSrc,
w: parseInt(size[0], 10),
h: parseInt(size[1], 10)
};
} // original image
item.o = {
src: item.src,
w: item.w,
h: item.h
};
items.push(item);
});
return items;
}
function openPhotoSwipe(index, galleryElement, disableAnimation, fromURL) {
var pswpElement = (0, _utility.$)('.pswp')[0];
var items = parseThumbnailElements(galleryElement); // define options (if needed)
var options = {
captionAndToolbarShowEmptyCaptions: false,
mainClass: 'pswp--minimal--dark',
barsSize: {
top: 0,
bottom: 0
},
captionEl: true,
fullscreenEl: false,
shareEl: false,
bgOpacity: 0.85,
tapToClose: true,
tapToToggleControls: false,
showHideOpacity: true,
// Function builds caption markup
addCaptionHTMLFn: function addCaptionHTMLFn(item, captionEl) {
// item - slide object
// captionEl - caption DOM element
// isFake - true when content is added to fake caption container
// (used to get size of next or previous caption)
if (!item.title && !item.author) {
captionEl.children[0].innerHTML = '';
return false;
}
var caption = '';
if (item.title) {
caption += item.title;
}
if (item.author) {
if (item.title) {
caption += '
';
}
caption += '
' + item.author + '';
}
captionEl.children[0].innerHTML = caption;
return true;
},
galleryUID: galleryElement.getAttribute('data-pswp-uid')
};
if (fromURL) {
if (options.galleryPIDs) {
// parse real index when custom PIDs are used
// http://photoswipe.com/documentation/faq.html#custom-pid-in-url
for (var j = 0; j < items.length; j++) {
if (items[j].pid === index) {
options.index = j;
break;
}
}
} else {
options.index = parseInt(index, 10) - 1;
}
} else {
options.index = parseInt(index, 10);
} // exit if index not found
if (Number.isNaN(options.index)) {
return;
}
if (disableAnimation) {
options.showAnimationDuration = 0;
} // Pass data to PhotoSwipe and initialize it
var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options); // see: http://photoswipe.com/documentation/responsive-images.html
var realViewportWidth = void 0;
var useLargeImages = false;
var firstResize = true;
var imageSrcWillChange = void 0;
gallery.listen('beforeResize', function () {
var dpiRatio = window.devicePixelRatio ? window.devicePixelRatio : 1;
dpiRatio = Math.min(dpiRatio, 2.5);
realViewportWidth = gallery.viewportSize.x * dpiRatio;
if (realViewportWidth >= 1200 || !gallery.likelyTouchDevice && realViewportWidth > 800 || _utility.wndW > 1200) {
if (!useLargeImages) {
useLargeImages = true;
imageSrcWillChange = true;
}
} else if (useLargeImages) {
useLargeImages = false;
imageSrcWillChange = true;
}
if (imageSrcWillChange && !firstResize) {
gallery.invalidateCurrItems();
}
if (firstResize) {
firstResize = false;
}
imageSrcWillChange = false;
});
gallery.listen('gettingData', function (idx, item) {
if (useLargeImages) {
item.src = item.o.src;
item.w = item.o.w;
item.h = item.o.h;
} else {
item.src = item.m.src;
item.w = item.m.w;
item.h = item.m.h;
}
});
gallery.init();
}
function photoswipeParseHash() {
var hash = window.location.hash.substring(1);
var params = {};
if (hash.length < 5) {
// pid=1
return params;
}
var vars = hash.split('&');
for (var _i = 0; _i < vars.length; _i++) {
if (!vars[_i]) {
continue;
}
var pair = vars[_i].split('=');
if (pair.length < 2) {
continue;
}
params[pair[0]] = pair[1];
}
if (params.gid) {
params.gid = parseInt(params.gid, 10);
}
return params;
} // select all gallery elements
var i = 0;
$gallery.each(function eachGallery() {
var $thisGallery = (0, _utility.$)(this);
$thisGallery.attr('data-pswp-uid', i + 1);
$thisGallery.on('click', 'a.nk-gallery-item', function onGalleryItemClick(e) {
e.preventDefault();
var index = 0;
var clicked = this;
$thisGallery.find('a.nk-gallery-item').each(function eachGalleryItem(idx) {
if (this === clicked) {
index = idx;
return false;
}
return true;
});
openPhotoSwipe(index, $thisGallery[0]);
});
i++;
}); // Parse URL and open gallery if it contains #&pid=3&gid=1
var hashData = photoswipeParseHash();
if (hashData.pid && hashData.gid) {
openPhotoSwipe(hashData.pid, $gallery.get(hashData.gid - 1), true, true);
}
}
exports.initPluginPhotoswipe = initPluginPhotoswipe;
/***/
},
/* 31 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initPluginModal = undefined;
var _utility = __webpack_require__(0);
/* Bootstrap Modal */
function initPluginModal() {
_utility.$doc.on('shown.bs.modal', function () {
(0, _utility.$)(this).find('[autofocus]').focus();
});
}
exports.initPluginModal = initPluginModal;
/***/
},
/* 32 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initPluginTabs = undefined;
var _utility = __webpack_require__(0);
/* Bootstrap Tabs */
function initPluginTabs() {
var self = this;
_utility.$wnd.on('shown.bs.tab', function () {
self.debounceResize();
});
}
exports.initPluginTabs = initPluginTabs;
/***/
},
/* 33 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initPluginAccordions = undefined;
var _utility = __webpack_require__(0);
/* Bootstrap Accordions */
function initPluginAccordions() {
var self = this;
_utility.$wnd.on('shown.bs.collapse', function () {
self.debounceResize();
});
}
exports.initPluginAccordions = initPluginAccordions;
/***/
},
/* 34 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initPluginCountdown = undefined;
var _utility = __webpack_require__(0);
/* Countdown */
function initPluginCountdown() {
if (typeof _utility.$.fn.countdown === 'undefined' || typeof moment === 'undefined' || typeof moment.tz === 'undefined') {
return;
}
var self = this;
(0, _utility.$)('.nk-countdown').each(function () {
var tz = (0, _utility.$)(this).attr('data-timezone');
var end = (0, _utility.$)(this).attr('data-end');
end = moment.tz(end, tz).toDate();
(0, _utility.$)(this).countdown(end, function (event) {
(0, _utility.$)(this).html(event.strftime(self.options.templates.countdown));
});
});
}
exports.initPluginCountdown = initPluginCountdown;
/***/
},
/* 35 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initPluginSeiyriaBootstrapSlider = undefined;
var _utility = __webpack_require__(0);
/* Bootstrap Slider */
function initPluginSeiyriaBootstrapSlider() {
if (typeof _utility.$.fn.bootstrapSlider === 'undefined') {
return;
} // set labels on slider change
function setLabels($labels, values) {
var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
for (var k = 0; k < values.newValue.length; k++) {
if (typeof $labels[k] !== 'undefined' && (force || values.newValue[k] !== values.oldValue[k])) {
$labels[k].text(values.newValue[k]);
}
}
}
(0, _utility.$)('.nk-input-slider').each(function () {
var $this = (0, _utility.$)(this);
var $input = $this.find('input');
var $labels = [];
for (var k = 0; k < 3; k++) {
$labels.push($this.find('.nk-input-slider-value-' + k));
}
$input.bootstrapSlider().on('change', function (e) {
if (e.value && e.value.newValue) {
setLabels($labels, e.value);
}
}); // set default labels
setLabels($labels, {
newValue: $input.bootstrapSlider('getValue')
}, true);
});
}
exports.initPluginSeiyriaBootstrapSlider = initPluginSeiyriaBootstrapSlider;
/***/
},
/* 36 */
/***/
function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initPluginSummernote = undefined;
var _utility = __webpack_require__(0);
/*------------------------------------------------------------------
Init Blog
-------------------------------------------------------------------*/
function initPluginSummernote() {
if (typeof _utility.$.fn.summernote === 'undefined') {
return;
}
(0, _utility.$)('.nk-summernote').summernote({
height: 300,
dialogsInBody: true,
toolbar: [// [groupName, [list of button]]
['style', ['bold', 'italic', 'underline']], ['fontsize', ['fontsize']], ['color', ['color']], ['insert', ['link', 'picture', 'video']], ['para', ['ul', 'ol', 'paragraph']], ['height', ['height']], ['misc', ['codeview']]]
}); // fix after load popovers are visible
(0, _utility.$)('.note-popover').hide();
}
exports.initPluginSummernote = initPluginSummernote;
/***/
}
/******/
]);
/***/ })
/******/ });