{"version":3,"names":[],"mappings":"","sources":["scripts.js"],"sourcesContent":["/**\r\n * COPYRIGHT (C) xowei.tw\r\n */\r\n$(function () {\r\n\tvar $body = $('body, html')\r\n\tvar $nav = $('.nav')\r\n\tvar $linkPosition\r\n\tvar clicked = false\r\n\r\n\tinitNav()\r\n\tinitSvg()\r\n\tinitAnimate()\r\n\tinitSmoothScroll($body, $nav, $linkPosition)\r\n\t// initBlockCollapse()\r\n\tinitPreload(clicked)\r\n\tinitTimeline()\r\n\tinitSlide()\r\n})\r\n\r\nfunction Utils() {}\r\n\r\nUtils.prototype = {\r\n\tconstructor: Utils,\r\n\tisElementInView: function (element, fullyInView) {\r\n\t\tvar pageTop = $(window).scrollTop()\r\n\t\tvar pageBottom = pageTop + $(window).height()\r\n\t\tvar elementTop = $(element).offset().top\r\n\t\tvar elementBottom = elementTop + $(element).height()\r\n\r\n\t\tif (fullyInView === true) {\r\n\t\t\treturn pageTop < elementTop && pageBottom > elementBottom\r\n\t\t} else {\r\n\t\t\treturn elementTop <= pageBottom && elementBottom >= pageTop\r\n\t\t}\r\n\t},\r\n\tsmoothScroll: function () {\r\n\t\t$('a[href^=\"#\"]').on('click', function (e) {\r\n\t\t\tvar $target = $(e.currentTarget.hash)\r\n\t\t\t// console.log($target, $target.offset().top)\r\n\t\t\t// console.log('smoothScroll')\r\n\r\n\t\t\t$('html,body').animate(\r\n\t\t\t\t{\r\n\t\t\t\t\tscrollTop: $target.offset().top,\r\n\t\t\t\t},\r\n\t\t\t\t700\r\n\t\t\t)\r\n\r\n\t\t\te.preventDefault()\r\n\t\t})\r\n\t},\r\n\tdetectViewport: function () {\r\n\t\treturn { height: window.innerHeight, width: window.innerWidth }\r\n\t},\r\n}\r\n\r\nfunction initAdjustHeight() {\r\n\t$nav = $('.nav')\r\n\t$block = $('.block')\r\n\tvar padding = 60\r\n\tvar navHeight = $nav[0].clientHeight\r\n\r\n\t$block.each(function () {\r\n\t\t$(this).css({\r\n\t\t\tpaddingTop: navHeight + padding,\r\n\t\t})\r\n\t})\r\n}\r\n\r\nfunction initNav() {\r\n\tvar $window = $(window)\r\n\tvar $body = $('body')\r\n\tvar $nav = $('.nav')\r\n\tvar $navSwitch = $('#nav-switch')\r\n\tvar pageYOffset = 0\r\n\r\n\t$('.nav-menu-link').on('click', function () {\r\n\t\t$navSwitch.prop('checked', false)\r\n\t\t$body.css({ 'overflow-y': 'auto' })\r\n\t})\r\n\r\n\t$window.on('scroll', function () {\r\n\t\tvar scrollY = $(this)[0].scrollY\r\n\t\tvar pageYOffset = $(this)[0].pageYOffset\r\n\r\n\t\tif (scrollY > $nav[0].clientHeight) {\r\n\t\t\t$nav.addClass('nav-sticky')\r\n\t\t} else {\r\n\t\t\t$nav.removeClass('nav-sticky')\r\n\t\t}\r\n\r\n\t\tif (pageYOffset > $(this)[0].innerHeight) {\r\n\t\t\t$nav.addClass('nav-sticky')\r\n\t\t} else {\r\n\t\t\tif ($nav.hasClass('nav-sticky')) {\r\n\t\t\t\t$nav.removeClass('nav-sticky')\r\n\t\t\t}\r\n\t\t}\r\n\t})\r\n\r\n\t$navSwitch.on('change', function () {\r\n\t\tvar isChecked = $(this).is(':checked')\r\n\r\n\t\tif (isChecked) {\r\n\t\t\t$body.css({ 'overflow-y': 'hidden' })\r\n\t\t} else {\r\n\t\t\t$body.css({ 'overflow-y': 'auto' })\r\n\t\t}\r\n\t})\r\n}\r\n\r\nfunction isIE() {\r\n\tconst ua = window.navigator.userAgent\r\n\tconst msie = ua.indexOf('MSIE ')\r\n\tconst trident = ua.indexOf('Trident/')\r\n\r\n\treturn msie > 0 || trident > 0\r\n}\r\n\r\nfunction initSvg() {\r\n\t$('.svg').each(function () {\r\n\t\tvar $img = $(this)\r\n\t\tvar imgID = $img.attr('id')\r\n\t\tvar imgClass = $img.attr('class')\r\n\t\tvar imgURL = $img.attr('src')\r\n\r\n\t\tif (isIE() && $img.hasClass('png')) {\r\n\t\t\t$img.attr('src', imgURL.split('.svg')[0] + '.png')\r\n\t\t} else {\r\n\t\t\t$.get(\r\n\t\t\t\timgURL,\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t\t// Get the SVG tag, ignore the rest\r\n\t\t\t\t\tvar $svg = $(data).find('svg')\r\n\r\n\t\t\t\t\t// Add replaced image's ID to the new SVG\r\n\t\t\t\t\tif (typeof imgID !== 'undefined') {\r\n\t\t\t\t\t\t$svg = $svg.attr('id', imgID)\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Add replaced image's classes to the new SVG\r\n\t\t\t\t\tif (typeof imgClass !== 'undefined') {\r\n\t\t\t\t\t\t$svg = $svg.attr('class', imgClass + ' replaced-svg')\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (typeof imgURL !== 'undefined') {\r\n\t\t\t\t\t\t$svg = $svg.attr('data-src', imgURL)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Remove any invalid XML tags as per http://validator.w3.org\r\n\t\t\t\t\t$svg = $svg.removeAttr('xmlns:a')\r\n\r\n\t\t\t\t\t// Replace image with new SVG\r\n\t\t\t\t\t$img.replaceWith($svg)\r\n\t\t\t\t},\r\n\t\t\t\t'xml'\r\n\t\t\t)\r\n\t\t}\r\n\t})\r\n}\r\n\r\nfunction initSmoothScroll($body, $nav, $linkPosition) {\r\n\tvar $linkPosition\r\n\r\n\t$('[href^=\"#\"]').each(function () {\r\n\t\tvar $link = $(this)\r\n\r\n\t\t$link.on('click', function (e) {\r\n\t\t\te.preventDefault()\r\n\t\t\tvar $target = $($(this).attr('href'))\r\n\t\t\t$linkPosition = ($target.length ? $target.offset().top : 0) - $nav.height()\r\n\r\n\t\t\t$body.animate({\r\n\t\t\t\tscrollTop: $linkPosition,\r\n\t\t\t})\r\n\t\t})\r\n\t})\r\n}\r\n\r\nfunction initAnimate() {\r\n\t$('.block-title').each(function () {\r\n\t\t// $(this).find('.h5').attr({\r\n\t\t// \t'data-aos': 'fade-down',\r\n\t\t// })\r\n\r\n\t\t// $(this).find('.h3').attr({\r\n\t\t// \t'data-aos': 'fade-down',\r\n\t\t// \t'data-aos-delay': 200\r\n\t\t// })\r\n\t})\r\n\r\n\t$('.block-image, .block-content-inside, .block-content-deco img').each(function () {\r\n\t\t$(this).attr({\r\n\t\t\t'data-aos': 'fade-up',\r\n\t\t})\r\n\t})\r\n\r\n\t$('.kv-title > div').each(function () {\r\n\t\tlet delay = 200 * $(this).index()\r\n\r\n\t\t$(this).attr({\r\n\t\t\t'data-aos': 'fade-up',\r\n\t\t\t'data-aos-delay': delay,\r\n\t\t})\r\n\t})\r\n\r\n\t$('.block-content > ul > li').each(function () {\r\n\t\tlet delay = 200 * $(this).index()\r\n\r\n\t\t$(this).attr({\r\n\t\t\t'data-aos': 'fade-up',\r\n\t\t\t'data-aos-delay': delay,\r\n\t\t})\r\n\r\n\t\t$(this)\r\n\t\t\t.find('> ul > li')\r\n\t\t\t.each(function () {\r\n\t\t\t\tlet delay2 = delay + (delay * $(this).index()) / 1000\r\n\r\n\t\t\t\t$(this).attr({\r\n\t\t\t\t\t'data-aos': 'fade-up',\r\n\t\t\t\t\t'data-aos-delay': delay2,\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t})\r\n\r\n\t$('.step-item').each(function () {\r\n\t\tlet delay = 200 * $(this).index()\r\n\r\n\t\t$(this).attr({\r\n\t\t\t'data-aos': 'fade-up',\r\n\t\t\t'data-aos-delay': delay,\r\n\t\t})\r\n\t})\r\n\r\n\tAOS.init({\r\n\t\tduration: 1000,\r\n\t\tonce: true,\r\n\t})\r\n}\r\n\r\nfunction initBlockCollapse() {\r\n\t$('.js-block-collapse').each(function () {\r\n\t\tvar $collapse = $(this)\r\n\t\tvar $trigger = $collapse.find('.block-collapse-title')\r\n\r\n\t\t$trigger.on('click', function () {\r\n\t\t\t$collapse.toggleClass('block-collapse--open')\r\n\t\t})\r\n\t})\r\n}\r\n\r\nfunction initPreload(clicked) {\r\n\t// $('.preload a').on('click', function () {\r\n\t// \tclicked = true\r\n\t// })\r\n\t\r\n\t// $(window).on({\r\n\t\t// 'load': function (e) {\r\n\t\t\t// var hash = window.location.hash\r\n\t\t\t// if (hash && !clicked) clicked = true\r\n\t\t// }\r\n\t// })\r\n\r\n\t$(document).on({\r\n\t\t// 'scroll': function () {\r\n\t\t// \tif (!clicked) clicked = true\r\n\t\t// }\r\n\t\t'init': function () {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\t$('.preload').fadeOut('slow')\r\n\t\t\t}, 1500)\r\n\t\t}\r\n\t})\r\n\t\r\n\t// setTimeout(function () {\r\n\t// \tif (!clicked) $('.preload a').click()\r\n\t// }, 3000)\r\n}\r\n\r\nfunction initTimeline() {\r\n\tvar utils = new Utils()\r\n\tvar timelineSlick = $('.timeline-list').slick({\r\n\t\tdots: true,\r\n\t\tinfinite: false,\r\n\t\tslidesToScroll: 1,\r\n\t\tslidesToShow: 3,\r\n\t\tresponsive: [\r\n\t\t\t{\r\n\t\t\t\tbreakpoint: 600,\r\n\t\t\t\tsettings: {\r\n\t\t\t\t\tslidesToShow: 1\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t]\r\n\t})\r\n\r\n\t$(window).on('scroll', function () {\r\n\t\tvar isInView = utils.isElementInView('.timeline')\r\n\r\n\t\tif (isInView) {\r\n\t\t\ttimelineSlick.slick('slickPlay')\r\n\t\t} else {\r\n\t\t\ttimelineSlick.slick('slickPause')\r\n\t\t}\r\n\t})\r\n\r\n}\r\n\r\nfunction initSlide() {\r\n\tvar slide = $('.slide-list')\r\n\tvar breakpoint = 1200\r\n\r\n\tslide.on('init', function(event, slick, currentSlide) {\r\n\r\n\t\tvar\r\n\t\t\tcur = $(slick.$slides[slick.currentSlide]),\r\n\t\t\tnext = cur.next(),\r\n\t\t\tnext2 = cur.next().next(),\r\n\t\t\tprev = cur.prev(),\r\n\t\t\tprev2 = cur.prev().prev()\r\n\r\n\t\tprev.addClass('slick-sprev')\r\n\t\tnext.addClass('slick-snext')\r\n\t\tprev2.addClass('slick-sprev2')\r\n\t\tnext2.addClass('slick-snext2')\r\n\t\tcur\r\n\t\t\t.removeClass('slick-snext')\r\n\t\t\t.removeClass('slick-sprev')\r\n\t\t\t.removeClass('slick-snext2')\r\n\t\t\t.removeClass('slick-sprev2')\r\n\t\tslick.$prev = prev\r\n\t\tslick.$next = next\r\n\r\n\t}).on('beforeChange', function(event, slick, currentSlide, nextSlide) {\r\n\t\tconsole.log('beforeChange')\r\n\t\tvar\r\n\t\t\tcur = $(slick.$slides[nextSlide])\r\n\t\tconsole.log(slick.$prev, slick.$next)\r\n\t\tslick.$prev.removeClass('slick-sprev')\r\n\t\tslick.$next.removeClass('slick-snext')\r\n\t\tslick.$prev.prev().removeClass('slick-sprev2')\r\n\t\tslick.$next.next().removeClass('slick-snext2')\r\n\r\n\t\tnext = cur.next(),\r\n\t\tprev = cur.prev()\r\n\r\n\t\tprev.addClass('slick-sprev')\r\n\t\tnext.addClass('slick-snext')\r\n\t\tprev.prev().addClass('slick-sprev2')\r\n\t\tnext.next().addClass('slick-snext2')\r\n\r\n\t\tslick.$prev = prev\r\n\t\tslick.$next = next\r\n\r\n\t\tcur\r\n\t\t\t.removeClass('slick-next')\r\n\t\t\t.removeClass('slick-sprev')\r\n\t\t\t.removeClass('slick-next2')\r\n\t\t\t.removeClass('slick-sprev2')\r\n\r\n\t});\r\n\r\n\tvar options = {\r\n\t\tarrows: false,\r\n\t\tcenterMode: true,\r\n\t\tcenterPadding: '0',\r\n\t\tdots: true,\r\n\t\tfocusOnSelect: true,\r\n\t\tinfinite: true,\r\n\t\tslidesPerRow: 1,\r\n\t\tslidesToScroll: 1,\r\n\t\tslidesToShow: 1,\r\n\t\tspeed: 1000,\r\n\t\tswipe: true,\r\n\t}\r\n\r\n\tif (innerWidth > breakpoint) {\r\n\t\tslide.slick(options)\r\n\t}\r\n\r\n\t$(window).on('init resize', function () {\r\n\t\tvar innerWidth = $(this).innerWidth()\r\n\r\n\t\tif (innerWidth > breakpoint) {\r\n\t\t\tslide.slick(options)\r\n\t\t} else {\r\n\t\t\tslide.slick('unslick')\r\n\t\t}\r\n\t})\r\n}\r\n"],"file":"scripts.js"}