{"version":3,"sources":["main.min.js","node_modules/lozad/dist/lozad.es.js","src/pages/index/scripts/header.js","src/pages/index/scripts/helper.js","src/pages/workflow/index.js"],"names":["factory","isIE","document","documentMode","defaultConfig","rootMargin","threshold","load","element","nodeName","toLowerCase","img","querySelector","append","createElement","getAttribute","src","alt","children","childs","childSrc","i","length","poster","setAttribute","backgroundImageDelimiter","style","backgroundImage","split","join","imageSetLinks","firstUrlLink","substr","indexOf","classList","toggle","loaded","markAsLoaded","isLoaded","getElements","selector","root","Element","NodeList","querySelectorAll","header","scrollActive","height","$","window","scrollTop","addClass","removeClass","hambuger","on","toggleClass","detectCloseElement","ele","ele2","funcRemove","e","target","closest","hasClass","keyup","key","closeMenu","clickMenu","isMobileOrTablet","userAgent","navigator","_i","_mobileKeywords","keyword","includes","_i2","_tabletKeywords","clickCounts","elementId","this","attr","next","Object","keys","forEach","init","buttonToTop","windowHeight","scrollTo","top","behavior","addEventListener","ready","clickScrollToDiv","enableDisableElements","Waypoint","handler","direction","index","slice","concat","siblings","offset","disableAll","step","data","animate","outerHeight","setTimeout","enableAll","lozad","options","assign","observer","IntersectionObserver","onIntersection","entries","entry","intersectionRatio","isIntersecting","unobserve","elements","background","observe","triggerLoad","define","amd"],"mappings":"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","file":"main.min.js","sourcesContent":[null,"/*! lozad.js - v1.16.0 - 2020-09-06\n* https://github.com/ApoorvSaxena/lozad.js\n* Copyright (c) 2020 Apoorv Saxena; Licensed MIT */\n\n\n/**\n * Detect IE browser\n * @const {boolean}\n * @private\n */\nconst isIE = typeof document !== 'undefined' && document.documentMode;\n\nconst defaultConfig = {\n rootMargin: '0px',\n threshold: 0,\n load(element) {\n if (element.nodeName.toLowerCase() === 'picture') {\n let img = element.querySelector('img');\n let append = false;\n\n if (img === null) {\n img = document.createElement('img');\n append = true;\n }\n\n if (isIE && element.getAttribute('data-iesrc')) {\n img.src = element.getAttribute('data-iesrc');\n }\n\n if (element.getAttribute('data-alt')) {\n img.alt = element.getAttribute('data-alt');\n }\n\n if (append) {\n element.append(img);\n }\n }\n\n if (element.nodeName.toLowerCase() === 'video' && !element.getAttribute('data-src')) {\n if (element.children) {\n const childs = element.children;\n let childSrc;\n for (let i = 0; i <= childs.length - 1; i++) {\n childSrc = childs[i].getAttribute('data-src');\n if (childSrc) {\n childs[i].src = childSrc;\n }\n }\n\n element.load();\n }\n }\n\n if (element.getAttribute('data-poster')) {\n element.poster = element.getAttribute('data-poster');\n }\n\n if (element.getAttribute('data-src')) {\n element.src = element.getAttribute('data-src');\n }\n\n if (element.getAttribute('data-srcset')) {\n element.setAttribute('srcset', element.getAttribute('data-srcset'));\n }\n\n let backgroundImageDelimiter = ',';\n if (element.getAttribute('data-background-delimiter')) {\n backgroundImageDelimiter = element.getAttribute('data-background-delimiter');\n }\n\n if (element.getAttribute('data-background-image')) {\n element.style.backgroundImage = `url('${element.getAttribute('data-background-image').split(backgroundImageDelimiter).join('\\'),url(\\'')}')`;\n } else if (element.getAttribute('data-background-image-set')) {\n const imageSetLinks = element.getAttribute('data-background-image-set').split(backgroundImageDelimiter);\n let firstUrlLink = (imageSetLinks[0].substr(0, imageSetLinks[0].indexOf(' ')) || imageSetLinks[0]); // Substring before ... 1x\n firstUrlLink = firstUrlLink.indexOf('url(') === -1 ? `url(${firstUrlLink})` : firstUrlLink;\n if (imageSetLinks.length === 1) {\n element.style.backgroundImage = firstUrlLink;\n } else {\n element.setAttribute('style', (element.getAttribute('style') || '') + `background-image: ${firstUrlLink}; background-image: -webkit-image-set(${imageSetLinks}); background-image: image-set(${imageSetLinks})`);\n }\n }\n\n if (element.getAttribute('data-toggle-class')) {\n element.classList.toggle(element.getAttribute('data-toggle-class'));\n }\n },\n loaded() {}\n};\n\nfunction markAsLoaded(element) {\n element.setAttribute('data-loaded', true);\n}\n\nfunction preLoad(element) {\n if (element.getAttribute('data-placeholder-background')) {\n element.style.background = element.getAttribute('data-placeholder-background');\n }\n}\n\nconst isLoaded = element => element.getAttribute('data-loaded') === 'true';\n\nconst onIntersection = (load, loaded) => (entries, observer) => {\n entries.forEach(entry => {\n if (entry.intersectionRatio > 0 || entry.isIntersecting) {\n observer.unobserve(entry.target);\n\n if (!isLoaded(entry.target)) {\n load(entry.target);\n markAsLoaded(entry.target);\n loaded(entry.target);\n }\n }\n });\n};\n\nconst getElements = (selector, root = document) => {\n if (selector instanceof Element) {\n return [selector]\n }\n\n if (selector instanceof NodeList) {\n return selector\n }\n\n return root.querySelectorAll(selector)\n};\n\nfunction lozad (selector = '.lozad', options = {}) {\n const {root, rootMargin, threshold, load, loaded} = Object.assign({}, defaultConfig, options);\n let observer;\n\n if (typeof window !== 'undefined' && window.IntersectionObserver) {\n observer = new IntersectionObserver(onIntersection(load, loaded), {\n root,\n rootMargin,\n threshold\n });\n }\n\n const elements = getElements(selector, root);\n for (let i = 0; i < elements.length; i++) {\n preLoad(elements[i]);\n }\n\n return {\n observe() {\n const elements = getElements(selector, root);\n\n for (let i = 0; i < elements.length; i++) {\n if (isLoaded(elements[i])) {\n continue\n }\n\n if (observer) {\n observer.observe(elements[i]);\n continue\n }\n\n load(elements[i]);\n markAsLoaded(elements[i]);\n loaded(elements[i]);\n }\n },\n triggerLoad(element) {\n if (isLoaded(element)) {\n return\n }\n\n load(element);\n markAsLoaded(element);\n loaded(element);\n },\n observer\n }\n}\n\nexport default lozad;\n","// export function appendFineAnt() {\n// \tconst script = document.createElement(\"script\");\n// \tscript.src = \"https://www.fireant.vn/Scripts/web/widgets.js\";\n// \tscript.defer = true;\n// \tscript.onload = () => {\n// \t\tnew FireAnt.QuoteWidget({\n// \t\t\tcontainer_id: \"fan-quote-373\",\n// \t\t\tsymbols: \"IJC\",\n// \t\t\tlocale: \"vi\",\n// \t\t\tprice_line_color: \"#71BDDF\",\n// \t\t\tgrid_color: \"#999999\",\n// \t\t\tlabel_color: \"#999999\",\n// \t\t\twidth: \"100%\",\n// \t\t\theight: \"200px\",\n// \t\t});\n// \t};\n// \tdocument.querySelector(\".iframe-fineant\").appendChild(script);\n// \tconsole.log(\"🟢 Fineant is added!\");\n// }\n\n/*==================== Header ====================*/\n\nimport { buttonToTop, detectCloseElement } from \"./helper\";\n\n/**\n * @param header\n */\nfunction isMobileOrTablet() {\n\tconst userAgent = navigator.userAgent.toLowerCase();\n\tconst mobileKeywords = [\"mobile\", \"android\", \"iphone\", \"ipad\", \"ipod\"];\n\tconst tabletKeywords = [\"tablet\", \"ipad\"];\n\n\tfor (const keyword of mobileKeywords) {\n\t\tif (userAgent.includes(keyword)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tfor (const keyword of tabletKeywords) {\n\t\tif (userAgent.includes(keyword)) {\n\t\t\treturn true;\n\t\t}\n\t}\n}\n\nexport const header = {\n\tscrollActive: function () {\n\t\tlet height = $(\"header\").height();\n\t\tif ($(window).scrollTop() > height) {\n\t\t\t$(\"header\").addClass(\"active\");\n\t\t\t$(\"header\").removeClass(\"slideUp\");\n\t\t} else {\n\t\t\t$(\"header\").removeClass(\"active\");\n\t\t\t$(\"header\").removeClass(\"slideUp\");\n\t\t}\n\t},\n\thambuger: function () {\n\t\t$(\".header-hambuger\").on(\"click\", function () {\n\t\t\t$(\"body\").toggleClass(\"isOpenMenu\");\n\t\t});\n\t\tfunction closeMenu() {\n\t\t\t$(\"body\").removeClass(\"isOpenMenu\");\n\t\t}\n\t\tdetectCloseElement(\".header-menu\", \"header-hambuger\", closeMenu);\n\t},\n\tclickMenu: function () {\n\t\tif (isMobileOrTablet()) {\n\t\t\tlet clickCounts = {};\n\t\t\t$(\".header-menu a\").on(\"click\", function (e) {\n\t\t\t\tconst elementId = $(this).attr(\"href\");\n\t\t\t\tif (!$(this).next(\"ul\").length) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Reset click count for all elements except the current one\n\t\t\t\tObject.keys(clickCounts).forEach((key) => {\n\t\t\t\t\tif (key !== elementId) {\n\t\t\t\t\t\tclickCounts[key] = 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (!clickCounts[elementId]) {\n\t\t\t\t\tclickCounts[elementId] = 1;\n\t\t\t\t} else {\n\t\t\t\t\tclickCounts[elementId]++;\n\t\t\t\t}\n\t\t\t\tif (clickCounts[elementId] > 1) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t},\n\tinit: function () {\n\t\tbuttonToTop();\n\t\theader.scrollActive();\n\t\theader.clickMenu();\n\t\theader.hambuger();\n\t},\n};\ndocument.addEventListener(\n\t\"scroll\",\n\tfunction (e) {\n\t\theader.scrollActive();\n\t},\n\ttrue\n);\n","\nexport function setBackgroundElement () {\n\t$('[setBackground]').each(function () {\n\t\tvar background = $(this).attr('setBackground')\n\t\t$(this).css({\n\t\t\t'background-image': 'url(' + background + ')',\n\t\t\t'background-size': 'cover',\n\t\t\t'background-position': 'center center',\n\t\t})\n\t})\n}\nexport function indicatorSlide() {\n\tif ($('.indicator-swipe').length > 0) {\n\t\tvar callback = function (entries) {\n\t\t\tentries.forEach(function (entry) {\n\t\t\t\tif (entry.isIntersecting) {\n\t\t\t\t\tentry.target.classList.add('active')\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tentry.target.classList.remove('active')\n\t\t\t\t\t}, 3000)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tvar observer = new IntersectionObserver(callback)\n\t\tvar animationItems = document.querySelectorAll('.indicator-swipe')\n\t\tanimationItems.forEach(function (item) {\n\t\t\tobserver.observe(item)\n\t\t})\n\t}\n}\nexport function detectCloseElement(ele, ele2, funcRemove) {\n\t// close\n\t$(document).on('click', function (e) {\n\t\tif (!$(e.target).closest(ele).length && !$(e.target).hasClass(ele2)) {\n\t\t\tfuncRemove()\n\t\t}\n\t})\n\t// esc\n\t$(document).keyup(function (e) {\n\t\tif (e.key === 'Escape') {\n\t\t\tfuncRemove()\n\t\t}\n\t})\n\t// overlay-blur\n}\nexport function buttonToTop() {\n\tlet windowHeight = $(window).height()\n\t$(document).on('scroll', function () {\n\t\tlet scrollTop = $(window).scrollTop()\n\t\tlet documentHeight = $(document).height()\n\t\tif (scrollTop + windowHeight > windowHeight + 400) {\n\t\t\t$('.button-to-top').addClass('active')\n\t\t} else {\n\t\t\t$('.button-to-top').removeClass('active')\n\t\t}\n\t})\n\t$(document).on('click', '.button-to-top', function () {\n\t\twindow.scrollTo({\n\t\t\ttop: 0,\n\t\t\tbehavior: 'smooth',\n\t\t})\n\t})\n}\n\nexport function ToggleItem() {\n\tconst nodeParent = $('.wrap-item-toggle')\n\tconst nodeItem = nodeParent.find('.item-toggle')\n\tconst nodeTitle = nodeItem.find('.title')\n\tnodeTitle.on('click', function () {\n\t\t$(this)\n\t\t\t.toggleClass('active')\n\t\t\t.next()\n\t\t\t.slideToggle()\n\t\t\t.closest('.item-toggle')\n\t\t\t.siblings()\n\t\t\t.find('.title')\n\t\t\t.removeClass('active')\n\t\t\t.next()\n\t\t\t.slideUp()\n\t})\n}\n\n/**\n * parent, children, item, button, initItem\n * @param { parent, children, item, button, initItem} listNode\n */\nexport function funcExpandContent(listNode) {\n\tconst {parent, children, item, button, initItem, gap = 0} = listNode\n\tif (!$(parent).length) return\n\tlet itemHeight = $(item).outerHeight()\n\tlet gapCalculate = gap\n\t\t? Number($(parent).find(children).css('column-gap').slice(0, -2)) * gap\n\t\t: 0\n\tlet initHeight = itemHeight * initItem + gapCalculate\n\tlet originalHeight = $(parent).find(children).outerHeight()\n\tif (originalHeight < initHeight) {\n\t\t$(button).remove()\n\t} else {\n\t\t$(parent).css('height', initHeight)\n\t}\n\t;``\n\t$(button).on('click', function () {\n\t\tif ($(this).hasClass('expand')) {\n\t\t\t$(parent).css('height', initHeight)\n\t\t\t$(this).find('span').text('Xem thêm')\n\t\t} else {\n\t\t\t$(parent).css('height', originalHeight)\n\t\t\t// setTimeout(() => {\n\t\t\t// \t$(parent).css(\"height\", \"auto\");\n\t\t\t// }, 1000);\n\t\t\t$(this).find('span').text('Rút gọn')\n\t\t}\n\t\t$(this).toggleClass('expand')\n\t})\n}\n\nexport function clickScrollToDiv(nodeEle, heightSpacing = () => {}) {\n\t$(nodeEle).on('click', function (event) {\n\t\tlet height = 0\n\t\t$(this).addClass('active').siblings().removeClass('active')\n\t\tif (heightSpacing) {\n\t\t\theight = heightSpacing()\n\t\t} else {\n\t\t\theight = 0\n\t\t}\n\t\tif (this.hash !== '') {\n\t\t\tevent.preventDefault()\n\t\t\tvar hash = this.hash\n\t\t\t$('html, body').animate(\n\t\t\t\t{\n\t\t\t\t\tscrollTop: $(hash).offset().top - height,\n\t\t\t\t},\n\t\t\t\t800\n\t\t\t)\n\t\t}\n\t})\n}\n\nexport function appendCaptchaASP() {\n\tif (!$('#ctl00_mainContent_ctl01_pnlFormWizard').length) return\n\t// Select the div element you want to observe\n\tconst myDiv = document.querySelector(\n\t\t'#ctl00_mainContent_ctl01_pnlFormWizard'\n\t)\n\t// Create a new MutationObserver object\n\tconst observer = new MutationObserver(function (mutations) {\n\t\tmutations.forEach(function (mutation) {\n\t\t\tconsole.log('Run')\n\t\t\tappendCaptcha()\n\t\t})\n\t})\n\t// Configure the observer to listen for changes to the \"class\" attribute\n\tconst config = {attributes: true, characterData: true, childList: true}\n\t// Start observing the target div element\n\tobserver.observe(myDiv, config)\n\tfunction appendCaptcha() {\n\t\t$('.form-group.frm-captcha').appendTo('.wrap-form-submit')\n\t\t$('.form-group.frm-btnwrap').appendTo('.wrap-form-submit')\n\t}\n\tappendCaptcha()\n}\nexport function scrollAnimation() {\n\tif (\n\t\t$('.animate').length > 0 &&\n\t\twindow.matchMedia('(min-width: 1200px)').matches\n\t) {\n\t\tvar callback = function (e) {\n\t\t\t\te.forEach(function (e) {\n\t\t\t\t\te.isIntersecting &&\n\t\t\t\t\t\t(e.target.style.animation = e.target.dataset.animate)\n\t\t\t\t})\n\t\t\t},\n\t\t\tobserver = new IntersectionObserver(callback, {}),\n\t\t\tanimationItems = document.querySelectorAll('.animate')\n\t\tanimationItems.forEach(function (e) {\n\t\t\tobserver.observe(e)\n\t\t})\n\t}\n}\n\nexport function scrollTo(offset, callback) {\n const fixedOffset = offset.toFixed();\n console.log(\"🚀 ~ file: helper.js:183 ~ scrollTo ~ fixedOffset:\", fixedOffset)\n const onScroll = function () {\n if (window.pageYOffset.toFixed() === fixedOffset) {\n window.removeEventListener('scroll', onScroll)\n callback()\n }\n }\n\n window.addEventListener('scroll', onScroll)\n onScroll()\n window.scrollTo({\n top: offset,\n behavior: 'smooth'\n })\n}","import lozad from 'lozad'\nimport { header } from '../index/scripts/header';\n$(document).ready(function () {\n\theader.init();\n\tclickScrollToDiv();\n})\n/*==================== Workflow ====================*/\nfunction clickScrollToDiv () {\n\tvar enableDisableElements = $('.item-step-process')\n\tfor (var i = 0, length = enableDisableElements.length; i < length; i++) {\n\t\tnew Waypoint({\n\t\t\telement: enableDisableElements[i],\n\t\t\thandler: function (direction) {\n\t\t\t\tconst _index = $(this.element)\n\t\t\t\t\t.attr('id')\n\t\t\t\tconst index = _index.slice(-1)\n\t\t\t\t$(`.item-process[data-step=\"${index}\"]`).addClass('active').siblings().removeClass('active')\n\t\t\t},\n\t\t\toffset: '30%',\n\t\t})\n\t}\n\t$('.item-process').on('click', function () {\n\t\tWaypoint.disableAll()\n\t\tconst step = $(this).data('step');\n\t\t$(this).addClass('active').siblings().removeClass('active');\n\t\t$(\"html, body\").animate(\n\t\t\t{\n\t\t\t\tscrollTop: $(`#step-${step}`).offset().top - $('.header-2').outerHeight() - $('.wrap-workflow-process').outerHeight(),\n\t\t\t},\n\t\t\t800\n\t\t);\n\t\tsetTimeout(() => {\n\t\t\tWaypoint.enableAll()\n\t\t},1000)\n\t})\n}\n/*==================== Lazyload JS ====================*/\nconst observer = lozad() // lazy loads elements with default selector as '.lozad'\nobserver.observe()\n"]}