whoami7 - Manager
:
/
home
/
unicorntechnolog
/
public_html
/
js
/
Upload File:
files >> /home/unicorntechnolog/public_html/js/utilities.min.js
"use strict";class ActiveMenu{constructor(){this.activeClass="active",this.navbarClass="navbar-nav",this.dropdownClass="dropdown-menu";this.path=location.pathname.slice(location.pathname.lastIndexOf("https://www.indonez.com/")+1);this.navbar=document.querySelector(".".concat(this.navbarClass))!==null?document.querySelector(".".concat(this.navbarClass)).querySelectorAll("a"):false;this.dropdown=document.querySelectorAll(".".concat(this.dropdownClass));this.blogPath="blog.html"}init(){if(document.querySelector(".".concat(this.navbarClass))!==null){this.addActive(this.navbar);this.addActiveParent(this.dropdown);this.addActiveBlog(this.navbar,this.blogPath);this.addDropdownHover()}}addActive(navbarParam){location.pathname[location.pathname.length-1]=="/"?navbarParam[0].classList.add(this.activeClass):navbarParam.forEach(e=>{if(e.attributes[1].value.includes("https://www.indonez.com/html-demo/")&&e.attributes[1].value.slice(3)==this.path)e.classList.add(this.activeClass);if(e.attributes[1].value==this.path)e.classList.add(this.activeClass);if(this.path.includes("blog-page")&&e.attributes[1].value==this.blogPath)e.classList.add(this.activeClass)})}addActiveParent(dropdownParam){dropdownParam.forEach(e=>{if(e.querySelector(".".concat(this.activeClass))!==null){e.previousElementSibling.classList.add(this.activeClass)}})}addActiveBlog(navbarPath,blogPath){const urlParams=window.location.href.split("https://www.indonez.com/");if(urlParams.includes(blogPath.split(".")[0])||document.querySelector("[data-title=\"blog-find\"]")){navbarPath.forEach(e=>{if(e.pathname.split("https://www.indonez.com/").at(-1)==blogPath){e.classList.add(this.activeClass);if(e.closest(".dropdown-menu")!==null){e.closest(".dropdown-menu").previousElementSibling.classList.add(this.activeClass)}}})}}async addDropdownHover(){const dropdown=await this.waitForSticky(".".concat(this.dropdownClass));dropdown.forEach(each=>{each.previousElementSibling.onclick=()=>this.hoverAction(each,"click");each.previousElementSibling.onmouseover=()=>this.hoverAction(each,"enter");each.previousElementSibling.onmouseout=()=>this.hoverAction(each,"leave");each.onmouseover=()=>this.hoverAction(each,"enter");each.onmouseout=()=>this.hoverAction(each,"leave")})}hoverAction(elem,mouse){if(mouse=="click"&&!elem.classList.contains("masonry-filter")){location.assign(elem.parentElement.children[0].getAttribute("href"))}if(mouse=="enter"){elem.classList.add("show");elem.previousElementSibling.classList.add("show");elem.previousElementSibling.setAttribute("aria-expanded",true)}if(mouse=="leave"){elem.classList.remove("show");elem.previousElementSibling.classList.remove("show");elem.previousElementSibling.setAttribute("aria-expanded",false)}}waitForSticky(selector){return new Promise(resolve=>{const observer=new MutationObserver(mutations=>{if(document.querySelectorAll(selector)){resolve(document.querySelectorAll(selector));observer.disconnect()}});observer.observe(document.body,{childList:true,subtree:true})})}}new ActiveMenu().init();class PicturePlugin{constructor(){this.galleryWrap=document.querySelectorAll(".bigger-picture")}init(){if(this.galleryWrap.length!==0){this.plugin=BiggerPicture({target:document.body});this.galleryWrap.forEach(eachWrap=>{const imageLinks=eachWrap.querySelectorAll("a");imageLinks.forEach(each=>{each.addEventListener("click",event=>this.openPicture(event,this.plugin,imageLinks))})})}}openPicture(event,plugin,images){event.preventDefault();plugin.open({items:images,el:event.currentTarget})}}new PicturePlugin().init();class Blog{constructor(){this.articleWrap=document.querySelectorAll("article");this.tagWrap=document.querySelector(".widget-tag");this.categoryWrap=document.querySelector(".widget-categories");this.latestWrap=document.querySelector(".widget-latest");this.urlParams=window.location.href.split("https://www.indonez.com/");this.currentPage=this.urlParams.pop();this.sanitizePath=this.sanitizePage(this.currentPage)}init(){if(document.querySelector("[data-title=\"blog\"]")||document.querySelector("[data-title=\"blog-find\"]")){this.getData().then(responses=>{return Promise.all(responses.map(response=>response.json()))}).then(data=>{this.createCategoryWidget(data);this.createLatestWidget(data);this.createTagWidget(data);this.createFindPage(data);this.createPagination(data);this.searchForm(data)});this.contentTruncate();this.trimLatestWidget()}this.removeUntagged()}getData(){return Promise.all([fetch("./data/data-blog.json"),fetch("./data/data-category.json"),fetch("./data/data-tag.json")])}contentTruncate(){this.articleWrap.forEach(txt=>{let currentText=txt.querySelector("p");let truncateText=this.trimLongTitle(currentText.innerText,150);currentText.innerText=truncateText})}sanitizePage(url){if(url.includes("find")){return this.currentPage.split(".")[0].split("-").slice(0,-1).join("-")}if(url.includes("page")){const index=this.currentPage.split(".")[0].split("-").indexOf("page");return this.currentPage.split(".")[0].split("-").slice(0,index).join("-")}return this.currentPage.split(".")[0]}createCategoryWidget(data){if(document.querySelector(".widget-categories")!==null){data[1].sort((a,b)=>{if(a.category<b.category)return-1;if(a.category>b.category)return 1;return 0});const categoryFilter=data[1].filter(item=>item.category!=="Uncategorized");categoryFilter.forEach(eachData=>{this.categoryWrap.innerHTML+="<li><a href=\"".concat(this.sanitizePath,"https://www.indonez.com/error/404.html").concat(eachData.category.toLowerCase(),"\" class=\"link-dark text-decoration-none d-flex justify-content-between align-items-center\">").concat(eachData.category,"<span class=\"badge rounded-1\">").concat(eachData.totalPost,"</span></a></li>")})}}createLatestWidget(data){if(document.querySelector(".widget-latest")!==null){data[0].latestPost.forEach(each=>{this.latestWrap.innerHTML+="\n <li class=\"list-group-item bg-transparent px-0\">\n <a href=\"".concat(this.sanitizePath,"https://www.indonez.com/").concat(each.link,"\" class=\"link-dark text-decoration-none\">").concat(this.trimLongTitle(each.title,55),"</a><br>\n <small class=\"text-muted\"><i class=\"fas fa-clock fa-sm me-1\"></i>").concat(each.date,"</small>\n </li>\n ")})}}createTagWidget(data){if(document.querySelector(".widget-tag")!==null){data[0].tagLists.sort();const tagFilter=data[0].tagLists.filter(item=>item!=="untagged");tagFilter.forEach(eachTag=>{if(eachTag.length!==0){this.tagWrap.innerHTML+="<a href=\"".concat(this.sanitizePath,"https://www.indonez.com/error/404.html").concat(eachTag,"\"><span class=\"badge rounded-pill\">#").concat(eachTag,"</span></a>")}else{this.tagWrap.innerHTML="<small class=\"text-muted\">No tags available yet</small>"}})}}createPagination(data){if(document.querySelector("[data-title=\"blog\"]")){const element=document.querySelector(".pagination");const totalPages=data[0].totalPages;const page=!this.currentPage.includes("".concat(this.sanitizePath,"-page"))?1:parseInt(this.currentPage.split(".")[0].split("-").pop());let liTag="";let active="";let beforePage=page-1;let afterPage=page+1;if(totalPages===1){element.remove()}if(page>3){liTag+="<li class=\"page-item\"><a class=\"page-link\" href=\"".concat(data[0].asBlog,"\" aria-label=\"previous\"><span aria-hidden=\"true\">«</span></a></li>")}if(page==1){afterPage=afterPage+2}else if(page==2){afterPage=afterPage+1}else if(page!==totalPages&&page<totalPages&&page!==1){beforePage=beforePage-1}else if(page==totalPages){beforePage=beforePage-2}for(let plength=beforePage;plength<=afterPage;plength++){if(plength>totalPages){continue}if(plength==0){plength=plength+1}if(page==plength){active="active"}else{active=""}liTag+="<li class=\"page-item ".concat(active,"\"><a class=\"page-link\" href=\"").concat(plength==1?data[0].asBlog:"".concat(this.sanitizePath,"-page-").concat(plength,".html"),"\">").concat(plength,"</a></li>")}if(page<totalPages-1){liTag+="<li class=\"page-item\"><a class=\"page-link\" href=\"".concat(this.sanitizePath,"-page-").concat(totalPages,".html\" aria-label=\"next\"><span aria-hidden=\"true\">»</span></a></li>")}element.innerHTML=liTag}}createFindPage(data){if(document.querySelector("[data-title=\"blog-find\"]")){const params=new URLSearchParams(window.location.search);const textEl=document.querySelector(".blog-find-text");const headingEl=document.querySelector(".blog-find-heading");if(params.has("category")){const categoryName=this.capitalizeText(params.get("category"));textEl.textContent="Post with category :";headingEl.innerHTML="<i class=\"fas fa-folder-open fa-xs me-1 position-relative\" style=\"top: 3px;\"></i>".concat(categoryName);data[1].filter(post=>{if(post.category.toLowerCase()===categoryName.toLowerCase()){const postWrap=document.querySelector(".blog-find");const selectedPost=post.posts;setTimeout(()=>{selectedPost.forEach(each=>{const articleDiv=document.createElement("div");articleDiv.innerHTML=this.postFormat(each);postWrap.appendChild(articleDiv)},0)})}})}if(params.has("tag")){const tagName=params.get("tag");textEl.textContent="Post with tag :";headingEl.innerHTML="<i class=\"fas fa-tag fa-xs me-1 position-relative\" style=\"top: 3px;\"></i>".concat(tagName);data[2].filter(post=>{if(post.tag.toLowerCase()===tagName.toLowerCase()){const postWrap=document.querySelector(".blog-find");const selectedPost=post.posts;selectedPost.forEach(post=>{const articleDiv=document.createElement("div");articleDiv.innerHTML=this.postFormat(post);postWrap.appendChild(articleDiv)})}})}}}searchForm(data){if(document.forms["blog-search"]!==undefined){const inputSearch=document.forms["blog-search"];const category=data[1].map(item=>{item.posts.map(x=>x.category=item.category);return item}).map(arr=>arr.posts);const posts=[].concat(...category);inputSearch.addEventListener("submit",e=>{e.preventDefault();if(!inputSearch.checkValidity()){e.preventDefault();e.stopPropagation();inputSearch.classList.add("was-validated")}else{const term=e.target[0].value.toLowerCase();const params=new URLSearchParams;params.append("result",term);location.href="".concat(this.sanitizePath,"https://www.indonez.com/error/404.html").concat(params.toString())}});this.searchProcess(posts)}}searchProcess(data){const params=new URLSearchParams(window.location.search);const textEl=document.querySelector(".blog-find-text");const headingEl=document.querySelector(".blog-find-heading");const postWrap=document.querySelector(".blog-find");const notFoundArr=[];if(document.querySelector("[data-title=\"blog-find\"]")&¶ms.has("result")){data.forEach(post=>{const title=post.title.toLowerCase();const body=post.content.toLowerCase();textEl.textContent="Search result for :";headingEl.innerHTML="<i class=\"fas fa-search fa-xs me-1 position-relative\" style=\"top: 3px;\"></i>".concat(params.get("result"));notFoundArr.push(title.indexOf(params.get("result")));notFoundArr.push(body.indexOf(params.get("result")));if(params.get("result").length>2&&(title.indexOf(params.get("result"))>-1||body.indexOf(params.get("result"))>-1)){const articleDiv=document.createElement("div");articleDiv.innerHTML=this.postFormat(post);postWrap.appendChild(articleDiv)}});if(params.get("result").length<=2||this.checkDiff(notFoundArr)!==true){const notFoundDiv=document.createElement("div");notFoundDiv.innerHTML="<article class=\"card mb-4 mb-lg-0\">\n <div class=\"card-body text-center px-4 py-5\">\n <h2 class=\"fw-bold\">Nothing Found</h3>\n <p class=\"text-muted mb-0\">Sorry, but nothing matched your search terms.</p>\n </div>\n</article>";postWrap.appendChild(notFoundDiv)}}}postFormat(_ref){let{link,title,content,author,date,category}=_ref;return"<article class=\"card mb-4\">\n <div class=\"card-body blog-card p-3 p-md-4\">\n <h3 class=\"fw-bold\">\n <a href=\"".concat(this.sanitizePath,"https://www.indonez.com/").concat(link,"\" class=\"link-dark text-decoration-none\">").concat(title,"</a>\n </h3>\n <p>").concat(content,"</p>\n <div class=\"blog-author d-flex align-items-center\">\n <img class=\"rounded-circle me-1\" src=\"").concat(author.avatar,"\" alt=\"author\" width=\"32\" height=\"32\">\n <small class=\"text-muted\">\n ").concat(author.name,"<span class=\"mx-1\">\u2022</span>").concat(date,"\n </small>\n </div>\n </div>\n <div class=\"card-footer blog-footer d-flex justify-content-between align-items-center px-3 px-md-4 py-2\">\n <span class=\"badge bg-primary\">").concat(category,"</span>\n <a href=\"").concat(this.sanitizePath,"https://www.indonez.com/").concat(link,"\" class=\"btn btn-link link-primary text-decoration-none p-0\">Read more<i class=\"fas fa-arrow-right fa-sm ms-1\"></i></a>\n </div>\n</article>")}checkDiff(a){return a.length!==0&&new Set(a).size!==1}trimLatestWidget(){if(document.querySelector(".widget-latest")!==null){const latestWrap=document.querySelector(".widget-latest");const titleList=latestWrap.querySelectorAll("a");titleList.forEach(title=>title.textContent=this.trimLongTitle(title.textContent,55))}}capitalizeText(string){const arr=string.split(" ");for(var i=0;i<arr.length;i++){arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].slice(1)}const result=arr.join(" ");return result}trimLongTitle(string,number){let cut=string.indexOf(" ",number);if(cut==-1)return string;return string.substring(0,cut)+" ..."}removeUntagged(){if(document.querySelector(".article-tags")!==null){const tagWrap=document.querySelector(".article-tags");if(tagWrap.querySelector("a").textContent=="untagged")tagWrap.remove()}}}new Blog().init();class Breadcrumb{constructor(){this.homeTitle="Home";this.breadcrumbElement="breadcrumb";this.articleElement="blog-article";this.titleElement="h2";this.truncate=true;this.truncateWords=40;this.breadcrumb=document.querySelector(".".concat(this.breadcrumbElement));this.navbar=document.querySelector(".navbar-nav")!==null?document.querySelector(".navbar-nav"):false;this.breadcrumbHome=this.navbar!==false?this.navbar.children[0].getElementsByTagName("a")[0].pathname:false;this.breadcrumbTitle=this.navbar!==false?this.navbar.querySelectorAll(".active"):false;this.blogPath="blog.html"}init(){if(document.querySelector(".".concat(this.breadcrumbElement))!==null){this.createBreadcrumb(this.breadcrumb);this.createBreadcrumbLast();this.createBreadcrumbBlog(this.breadcrumbHome,this.blogPath)}}createBreadcrumb(element){let createLiElement;this.breadcrumb.innerHTML="<li class=\"breadcrumb-item\"><a href=\"".concat(this.breadcrumbHome.slice(location.pathname.lastIndexOf("https://www.indonez.com/")+1),"\">").concat(this.homeTitle,"</a></li>");this.breadcrumbTitle.forEach(e=>{if(this.breadcrumbHome!==e.pathname){createLiElement=document.createElement("li");createLiElement.classList.add("breadcrumb-item");createLiElement.innerHTML="<a href=\"".concat(e.getAttribute("href"),"\">").concat(e.textContent,"</a>");element.appendChild(createLiElement)}})}createBreadcrumbLast(){const lastLiElement=this.breadcrumb.children[this.breadcrumb.childNodes.length-1];this.createLiElement=document.createElement("li");this.createLiElement.classList.add("breadcrumb-item","active");this.createLiElement.setAttribute("aria-current","page");if(lastLiElement){lastLiElement.remove();this.createLiElement.innerHTML=lastLiElement.textContent;this.breadcrumb.appendChild(this.createLiElement)}}createBreadcrumbBlog(pathParam,blogPath){if(document.querySelector("[data-title=\"blog-single\"]")||document.querySelector("[data-title=\"blog-find\"]")){const breadcrumbEl=this.breadcrumb;const articleEl=this.articleElement;const createLiArticle=document.createElement("li");const breadcrumbCurrent=this.navbar.querySelectorAll("li a");this.breadcrumb.innerHTML="<li class=\"breadcrumb-item\"><a href=\"".concat(pathParam,"\">").concat(this.homeTitle,"</a></li>");breadcrumbCurrent.forEach(e=>{if(e.pathname.split("https://www.indonez.com/").at(-1)==blogPath){const urlParams=window.location.href.split("https://www.indonez.com/");const currentPage=urlParams.pop();const levelOne=document.createElement("li");const levelTwo=document.createElement("li");levelOne.classList.add("breadcrumb-item","active");levelOne.setAttribute("aria-current","page");levelOne.innerHTML=e.textContent;if(e.closest(".dropdown-menu")!==null){levelOne.innerHTML=e.textContent;levelTwo.innerHTML="<a href=\"".concat(e.closest(".dropdown-menu").previousElementSibling.getAttribute("href"),"\">").concat(e.closest(".dropdown-menu").previousElementSibling.textContent,"</a>");levelTwo.classList.add("breadcrumb-item");levelTwo.setAttribute("aria-current","page");breadcrumbEl.appendChild(levelTwo)}if(!currentPage.includes("page")&&!currentPage.includes("find")){levelOne.classList.remove("active");levelOne.innerHTML="<a href=\"".concat(e.getAttribute("href"),"\">").concat(e.textContent,"</a>")}breadcrumbEl.appendChild(levelOne)}});if(document.querySelector(".".concat(articleEl))!==null){let articleTitle=document.querySelector(".".concat(articleEl)).querySelector(this.titleElement).textContent;articleTitle=this.truncate?this.truncateBreadcrumb(articleTitle,this.truncateWords):articleTitle;createLiArticle.innerHTML=articleTitle;createLiArticle.classList.add("breadcrumb-item","active");createLiArticle.setAttribute("aria-current","page");breadcrumbEl.appendChild(createLiArticle)}}}truncateBreadcrumb(string,number){let cut=string.indexOf(" ",number);if(cut==-1)return string;return string.substring(0,cut)+" ..."}}new Breadcrumb().init();class CarouselConfig{constructor(settings){this.element=settings.element;this.interval=settings.interval;this.control=settings.control;this.transition=settings.fadeTransition;this.height=settings.height}init(){if(document.querySelector(this.element)!==null){const carouselWrap=document.querySelector(this.element);const carouselItem=carouselWrap.querySelectorAll(".carousel-item");const carouselId=carouselWrap.getAttribute("id");carouselItem[0].classList.add("active");if(this.transition){carouselWrap.classList.add("carousel-fade")}this.generatebutton(carouselWrap);this.generateIndicator(carouselWrap,carouselItem,carouselId);this.setHeight(carouselItem);new bootstrap.Carousel(carouselWrap,{interval:this.interval,keyboard:true,pause:"hover",ride:"carousel",touch:true,wrap:true})}}generatebutton(carouselWrap){if(this.control.type==="button"||this.control.type==="both"){const prevBtn=document.createElement("button");const nextBtn=document.createElement("button");prevBtn.setAttribute("class","carousel-control-prev");prevBtn.setAttribute("type","button");prevBtn.setAttribute("data-bs-target",this.element);prevBtn.setAttribute("data-bs-slide","prev");nextBtn.setAttribute("class","carousel-control-next");nextBtn.setAttribute("type","button");nextBtn.setAttribute("data-bs-target",this.element);nextBtn.setAttribute("data-bs-slide","next");carouselWrap.appendChild(prevBtn);carouselWrap.appendChild(nextBtn);if(this.control.onHover){carouselWrap.classList.add("control-hover")}}}generateIndicator(carouselWrap,carouselItem,carouselId){if(this.control.type==="indicator"||this.control.type==="both"){const indicatorWrap=document.createElement("div");indicatorWrap.setAttribute("class","carousel-indicators");carouselItem.forEach((each,index)=>{const btnIndicator=document.createElement("button");btnIndicator.setAttribute("type","button");btnIndicator.setAttribute("aria-label","carousel-button");btnIndicator.setAttribute("data-bs-target","#".concat(carouselId));btnIndicator.setAttribute("data-bs-slide-to",index);if(index==0){btnIndicator.classList.add("active");btnIndicator.setAttribute("aria-current",true)}indicatorWrap.appendChild(btnIndicator)});carouselWrap.appendChild(indicatorWrap);if(this.control.onHover){carouselWrap.classList.add("indicators-hover")}}}setHeight(carouselItem){if(window.matchMedia("(min-width: 992px)").matches){carouselItem.forEach(each=>{each.style.minHeight=this.height.desktop})}else if(window.matchMedia("(min-width: 768px)").matches){carouselItem.forEach(each=>{each.style.minHeight=this.height.tablet})}else{carouselItem.forEach(each=>{each.style.minHeight=this.height.phone})}}}class ContactForm{constructor(){this.contactForm=document.getElementById("contact-form");this.buttonSend=document.getElementById("sendemail")}init(){document.addEventListener("DOMContentLoaded",()=>{if(typeof this.buttonSend!=="undefined"&&this.buttonSend!==null){this.buttonSend.addEventListener("click",event=>{event.preventDefault();const postdata=this.serialize(this.contactForm);if(!this.contactForm.checkValidity()){event.preventDefault();event.stopPropagation();this.setLoading(this.buttonSend);this.contactForm.classList.add("was-validated")}else{this.setLoading(this.buttonSend,"success")}this.ajaxRequest("POST","sendmail.html",postdata,(success,response)=>{if(success){const result=JSON.parse(response);if(result.isSuccess){const toast=new bootstrap.Toast(document.querySelector(".toast"));setTimeout(()=>{this.setLoading(this.buttonSend);this.contactForm.reset();this.contactForm.classList.remove("was-validated");toast.show()},1200)}}})})}})}setLoading(btnElem,status){if(status=="success"){btnElem.setAttribute("disabled","");btnElem.innerHTML="<span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span> Please wait..."}else{btnElem.removeAttribute("disabled");btnElem.textContent="Send message"}}serialize(form){return Array.from(new FormData(form),e=>e.map(encodeURIComponent).join("=")).join("&")}ajaxRequest(method,url,data,functionResult){const xmlhttp=new XMLHttpRequest;xmlhttp.open(method,url,true);xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");xmlhttp.send(data);xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4&&xmlhttp.status==200){functionResult(true,xmlhttp.responseText)}else{functionResult(false,"")}}}}new ContactForm().init();class CounterUp{constructor(_props){this.defaults={duration:2000,prepend:"",append:"",selector:".counter-up",start:0,end:100,intvalues:false,interval:100};var self=this;this.updating=false;this.intervalID=null;this.props={};for(var pna in this.defaults){if(typeof pna!=="undefined"){self.props[pna]=self.defaults[pna];if(_props.hasOwnProperty(pna)&&self.props.hasOwnProperty(pna))self.props[pna]=_props[pna]}}this.domelems=document.querySelectorAll(this.props.selector);this.elems=[];var cur={};this.domelems.forEach(function(el){cur.obj=el;var start=parseInt(el.getAttribute("data-counter-start"));isNaN(start)?cur.start=self.props.start:cur.start=start;var end=parseInt(el.getAttribute("data-counter-end"));isNaN(end)?cur.end=self.props.end:cur.end=end;var dur=parseInt(el.getAttribute("data-counter-duration"));isNaN(dur)?cur.duration=self.props.duration:cur.duration=dur;var prep=el.getAttribute("data-counter-prepend");prep==null?cur.prepend=self.props.prepend:cur.prepend=prep;var app=el.getAttribute("data-counter-append");app==null?cur.append=self.props.append:cur.append=app;var intval=el.getAttribute("data-counter-intval");intval==null?cur.intvalues=self.props.intvalues:cur.intvalues=intval;cur.step=(cur.end-cur.start)/(cur.duration/self.props.interval);cur.val=cur.start;self.elems.push(cur);cur={}})}start(){var self=this;if(document.querySelector(self.props.selector)!=null){const observer=new IntersectionObserver(function(entries){if(entries[0].isIntersecting){this.intervalID=setInterval(function(){if(!self.updating)self.update()},self.props.interval)}},{threshold:[0]});observer.observe(document.querySelector(self.props.selector))}}update(){this.updating=true;var alldone=true;var self=this;this.elems.forEach(function(el){el.val+=el.step;if(el.val<el.end){if(el.intvalues==true)el.obj.innerHTML=el.prepend+Math.floor(el.val).toLocaleString().toString()+el.append;else el.obj.innerHTML=el.prepend+(Math.round(el.val*100)/100).toLocaleString().toString()+el.append;alldone=false}else{el.obj.innerHTML=el.prepend+el.end.toLocaleString().toString()+el.append}});if(alldone==true)clearInterval(this.intervalID);this.updating=false}}new CounterUp({selector:".count",start:0,duration:3200,intvalues:true,interval:50}).start();class MarketWidget{constructor(settings){this.widgetVariants=settings.variants;this.widgetHeight=settings.height;this.widgetTheme=settings.theme;this.widgetColors=settings.colors;this.widgetData=settings.data;this.widgetLogo=settings.logo==undefined?true:settings.logo}init(){if(this.widgetVariants==="market-list"&&document.querySelector(".".concat(this.widgetVariants))){this.getData(this.widgetData,this.widgetVariants).then(data=>{this.createMarketList(data)})}else if(this.widgetVariants==="jumbo-chart"&&document.querySelector(".".concat(this.widgetVariants))){this.getData(this.widgetData,this.widgetVariants).then(data=>{this.createJumboChart(data)})}else if(this.widgetVariants==="mini-chart"&&document.querySelector(".".concat(this.widgetVariants))){this.getData(this.widgetData,this.widgetVariants).then(data=>{this.createMiniChart(data)})}else if(this.widgetVariants==="ticker-tape"&&document.querySelector(".".concat(this.widgetVariants))){this.getData(this.widgetData,this.widgetVariants).then(data=>{this.createTickerTape(data)})}else if(this.widgetVariants==="ticker"&&document.querySelector(".".concat(this.widgetVariants))){this.getData(this.widgetData,this.widgetVariants).then(data=>{this.createTicker(data)})}}async getData(dataUrl,variant){try{const response=await fetch(document.querySelector("[data-title=\"blog-single\"]")?"../".concat(dataUrl):dataUrl);const data=await response.json();return data}catch(error){document.querySelector(".".concat(variant)).outerHTML="<small>There was a problem getting the data; please check your data path</small>";console.error("There was a problem getting the data; please check your data path");throw error}}createMarketList(symbols){const widgetWrapper=document.querySelector(".market-list");if(this.widgetTheme==="dark"){widgetWrapper.classList.add("dark")}symbols.forEach(eachData=>{const marketList=document.createElement("li");marketList.innerHTML="\n <div class=\"symbol-name\">\n <span class=\"logo\">\n ".concat(Array.isArray(eachData.logo)?"<img src=\"".concat(eachData.logo[0],"\" alt=\"symbol-logo\" width=\"24\" height=\"24\">\n <img src=\"").concat(eachData.logo[1],"\" alt=\"symbol-logo\" width=\"28\" height=\"28\">"):"<img src=\"".concat(eachData.logo,"\" alt=\"symbol-logo\" width=\"36\" height=\"36\">"),"\n </span>\n <span>\n ").concat(eachData.name,"<small>").concat(eachData.subName,"</small>\n </span>\n </div>\n <div class=\"price\">\n <div class=\"current\">\n ").concat(eachData.current,"\n </div>\n <div class=\"change ").concat(eachData.change.charAt(0)==="-"?"down":"up","\">\n ").concat(eachData.percentage,"<span>").concat(eachData.change,"</span>\n </div>\n </div>\n ");if(Array.isArray(eachData.logo)){marketList.querySelector(".logo").classList.add("pair")}widgetWrapper.appendChild(marketList)})}createJumboChart(symbol){const widgetWrapper=document.querySelector(".jumbo-chart");if(this.widgetTheme==="dark"){widgetWrapper.classList.add("dark")}const symbolChart=document.createElement("div");const symbolHeader=document.createElement("div");symbolChart.classList.add("symbol-chart-".concat(symbol.id));symbolHeader.classList.add("symbol-name");symbolHeader.innerHTML="\n <img src=\"".concat(symbol.logo,"\" alt=\"symbol-logo\" width=\"56\" height=\"56\">\n <div>\n <h2>").concat(symbol.name,"</h2>\n <p class=\"price ").concat(this.calculateChange(symbol)[0].charAt(0)==="-"?"down":"up","\">\n ").concat(symbol.current," <span>").concat(this.calculateChange(symbol)[0]>0?"+".concat(this.calculateChange(symbol)[0]):this.calculateChange(symbol)[0]," ").concat(this.calculateChange(symbol)[1]>0?"+".concat(this.calculateChange(symbol)[1],"%"):"".concat(this.calculateChange(symbol)[1],"%")," <small>Past year</small></span>\n </p>\n </div>\n ");widgetWrapper.appendChild(symbolHeader);widgetWrapper.appendChild(symbolChart);this.runCharts({id:symbol.id,data:symbol.data,change:this.calculateChange(symbol)[0]})}createMiniChart(symbol){const widgetWrapper=document.querySelector(".mini-chart");if(this.widgetTheme==="dark"){widgetWrapper.classList.add("dark")}const symbolChart=document.createElement("div");const symbolHeader=document.createElement("div");symbolChart.classList.add("symbol-chart-".concat(symbol.id));symbolChart.style.marginBottom="-10px";symbolHeader.classList.add("symbol-name");symbolHeader.innerHTML="\n <div>\n <img src=\"".concat(symbol.logo,"\" alt=\"symbol-logo\" width=\"30\" height=\"30\">\n <span>\n <h2>").concat(symbol.name,"</h2>\n <p class=\"sub-name\">").concat(symbol.subName,"</p>\n </span>\n </div>\n <p class=\"price ").concat(symbol.change[0].charAt(0)==="-"?"down":"up","\">\n ").concat(symbol.current," <span>").concat(symbol.change[0].charAt(0)==="-"?"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"9\" width=\"9\" viewBox=\"0 0 512 512\"><path fill=\"#f23645\" d=\"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"/></svg>":"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"9\" width=\"9\" viewBox=\"0 0 512 512\"><path fill=\"#089981\" d=\"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"/></svg>"," ").concat(symbol.change[1].slice(1)," (").concat(symbol.change[0].slice(1),")</span>\n </p>\n ");widgetWrapper.appendChild(symbolHeader);widgetWrapper.appendChild(symbolChart);this.runCharts({id:symbol.id,data:symbol.data,change:this.calculateChange(symbol)[0]})}createTickerTape(symbols){const widgetWrapper=document.querySelector(".ticker-tape");if(this.widgetTheme==="dark"){widgetWrapper.classList.add("dark")}symbols.forEach(eachData=>{const tickertape=document.createElement("li");tickertape.innerHTML="\n <div class=\"symbol-name\">\n ".concat(this.widgetLogo!==false?"<span class=\"logo\">\n ".concat(Array.isArray(eachData.logo)?"<img src=\"".concat(eachData.logo[0],"\" alt=\"symbol-logo\" width=\"16\" height=\"16\">\n <img src=\"").concat(eachData.logo[1],"\" alt=\"symbol-logo\" width=\"20\" height=\"20\">"):"<img src=\"".concat(eachData.logo,"\" alt=\"symbol-logo\" width=\"24\" height=\"24\">"),"\n </span>"):"","\n <span>").concat(eachData.name,"</span>\n </div>\n <div class=\"price\">\n <div class=\"current\">\n ").concat(eachData.current,"\n </div>\n <div class=\"change ").concat(eachData.change.charAt(0)==="-"?"down":"up","\">\n <span>").concat(eachData.change,"</span>(").concat(eachData.percentage,")\n </div>\n </div>\n ");if(Array.isArray(eachData.logo)&&this.widgetLogo!==false){tickertape.querySelector(".logo").classList.add("pair")}widgetWrapper.appendChild(tickertape)});this.runMarquee(widgetWrapper,30)}createTicker(symbols){const widgetWrapper=document.querySelector(".ticker");if(this.widgetTheme==="dark"){widgetWrapper.classList.add("dark")}symbols.forEach(eachData=>{const ticker=document.createElement("li");ticker.innerHTML="\n <div>\n <div class=\"symbol-name\">\n <span class=\"logo\">\n ".concat(Array.isArray(eachData.logo)?"<img src=\"".concat(eachData.logo[0],"\" alt=\"symbol-logo\" width=\"14\" height=\"14\">\n <img src=\"").concat(eachData.logo[1],"\" alt=\"symbol-logo\" width=\"18\" height=\"18\">"):"<img src=\"".concat(eachData.logo,"\" alt=\"symbol-logo\" width=\"20\" height=\"20\">"),"\n </span>\n ").concat(eachData.name,"\n </div>\n <span class=\"current\">\n ").concat(eachData.current,"\n </span>\n </div>\n <div class=\"price ").concat(eachData.change[0].charAt(0)==="-"?"down":"up","\">\n ").concat(eachData.change[0].charAt(0)==="-"?"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"14\" width=\"14\" viewBox=\"0 0 512 512\"><path fill=\"#f23645\" d=\"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"/></svg>":"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"14\" width=\"14\" viewBox=\"0 0 512 512\"><path fill=\"#089981\" d=\"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"/></svg>"," ").concat(eachData.percentage.slice(1)," <small>").concat(eachData.change.slice(1),"</small>\n </div>\n ");if(Array.isArray(eachData.logo)){ticker.querySelector(".logo").classList.add("pair")}widgetWrapper.appendChild(ticker)})}calculateChange(symbol){const pastPrice=symbol.data.slice(-1)[0][1];const currentPrice=symbol.data[0][1];const change=(currentPrice-pastPrice).toFixed(2);const percentage=((currentPrice-pastPrice)/pastPrice*100).toFixed(2);return[change,percentage]}runMarquee(element,speed){new VanillaMarquee(element,{duplicated:true,gap:0,pauseOnHover:true,speed:speed,startVisible:true})}runCharts(_ref2){let{id,data,change}=_ref2;new ApexCharts(document.querySelector(".symbol-chart-".concat(id)),{series:[{data:data}],chart:{type:"area",height:this.widgetHeight,toolbar:{show:false},animations:{enabled:false},zoom:{enabled:false}},colors:change.charAt(0)==="-"?[this.widgetColors[1]]:[this.widgetColors[0]],grid:{xaxis:{lines:{show:false}},yaxis:{lines:{show:false}},padding:{right:0,left:0}},dataLabels:{enabled:false},xaxis:{type:"datetime",min:new Date(data.slice(-1)[0][0]).getTime(),axisBorder:{show:false},axisTicks:{show:false},labels:{style:{colors:"#6A6D78",fontSize:"10px"},datetimeFormatter:{month:"MMM",day:""}},crosshairs:{stroke:{color:this.widgetTheme==="dark"?"#323641":"#E8E8E9",dashArray:0}},tooltip:{enabled:false}},yaxis:{show:false,min:Math.min(...data.map(value=>value[1]))-1,max:Math.max(...data.map(value=>value[1]))+1},tooltip:{enabled:this.widgetVariants==="jumbo-chart"?true:false,theme:this.widgetTheme==="dark"?"dark":"light",x:{show:false},followCursor:true,custom:function(_ref3){let{series,seriesIndex,dataPointIndex,w}=_ref3;return"<div class=\"chart-tooltip\">\n ".concat(series[seriesIndex][dataPointIndex],"\n <small>").concat(new Date(w.globals.seriesX[0][dataPointIndex]).toDateString(),"</small>\n </div>")}},stroke:{curve:"smooth",lineCap:"round",width:2},markers:{strokeColors:this.widgetTheme==="dark"?"#1A1A1A":"#FFFFFF"},fill:{type:"gradient",gradient:{shade:"dark",shadeIntensity:0.6,opacityFrom:0.4,opacityTo:0.1,stops:[0,100]}}}).render()}}class MobileNavbar{constructor(settings){this.addonButtons=settings.addonButtons;this.buttons=settings.buttons;this.navbar=document.querySelector(".navbar-nav")!==null?document.querySelector(".navbar-nav"):false;this.cloneNavbar=this.navbar!==false?this.navbar.cloneNode(true):false;this.optionalNav=document.querySelector(".optional-link")}async init(){if(this.navbar!==false){await this.createMobileNav(this.cloneNavbar);this.createButtonListener()}}createMobileNav(navbar){Array.from(navbar.children).forEach(each=>{each.querySelector("a").classList.add("px-0");if(each.classList.contains("dropdown")){each.classList.remove("dropdown");each.children[0].classList.remove("dropdown-toggle");each.children[0].classList.add("accordion-button","collapsed");each.children[0].removeAttribute("id");each.children[0].setAttribute("data-bs-toggle","collapse");each.children[0].setAttribute("data-bs-target","#".concat(each.children[0].textContent.toLowerCase().replace(/\s/g,"-")));each.children[1].classList.remove("dropdown-menu","dropdown-large-menu","d-flex");each.children[1].classList.add("list-unstyled","accordion-collapse","collapse");each.children[1].removeAttribute("aria-labelledby");each.children[1].setAttribute("id",each.children[0].textContent.toLowerCase().replace(/\s/g,"-"));each.children[1].setAttribute("data-bs-parent","#mobile-navbar");Array.from(each.children[1].children).forEach(li=>{if(!li.children[0].classList.contains("dropdown-item")){const parentChildren=li.parentElement;const childrenCloned=li.children[0].querySelector(".list-unstyled").cloneNode(true);Array.from(childrenCloned.children).forEach(li=>{li.children[0].classList.remove("dropdown-item");li.children[0].classList.add("nav-link")});childrenCloned.classList.add("accordion-collapse","collapse");childrenCloned.setAttribute("id",li.closest(".nav-item").querySelector("a").textContent.toLowerCase().replace(/\s/g,"-"));childrenCloned.setAttribute("data-bs-parent","#mobile-navbar");li.closest(".nav-item").appendChild(childrenCloned);parentChildren.remove()}li.children[0].classList.remove("dropdown-item");li.children[0].classList.add("nav-link")})}});const btnOpen=document.createElement("button");btnOpen.classList.add("btn","btn-mobile-navbar","d-lg-none");btnOpen.setAttribute("type","button");btnOpen.setAttribute("data-bs-toggle","modal");btnOpen.setAttribute("data-bs-target","#navbarModal");btnOpen.innerHTML="<i class=\"fas fa-bars\"></i>";const modalWrapper=document.createElement("div");modalWrapper.classList.add("modal","fade");modalWrapper.setAttribute("id","navbarModal");modalWrapper.setAttribute("tabindex","-1");modalWrapper.setAttribute("data-bs-backdrop","static");modalWrapper.setAttribute("aria-hidden","true");modalWrapper.innerHTML="\n <div class=\"modal-dialog modal-dialog-centered\">\n <div class=\"modal-content bg-transparent border-0\">\n <div class=\"modal-body\">\n <ul id=\"mobile-navbar\" class=\"nav flex-column mb-1\">\n ".concat(navbar.innerHTML,"\n </ul>\n ").concat(this.createAddonBtn(),"\n </div>\n </div>\n </div>");if(document.querySelector(".btn-mobile-navbar")!==null){document.querySelector(".btn-mobile-navbar").remove()}this.navbar.closest(".container").appendChild(btnOpen);this.navbar.closest(".container").appendChild(modalWrapper)}createButtonListener(){const btnModal=document.querySelectorAll(".btn-mobile-navbar");btnModal.forEach(btn=>{btn.addEventListener("click",e=>{const parent=document.querySelector(".loaded");const sticky=document.querySelector(".sticky-nav");const toggle=parent.classList.toggle("show");if(toggle){btn.classList.add("show");btn.classList.remove("d-lg-none");btn.innerHTML="<i class=\"fas fa-xmark\"></i>";sticky.children[0].classList.add("d-flex","justify-content-end");sticky.setAttribute("style","background-color: transparent; backdrop-filter: blur(0px); box-shadow: none;");sticky.querySelector(".navbar-brand").hidden=true}else{btn.classList.remove("show");btn.classList.add("d-lg-none");btn.innerHTML="<i class=\"fas fa-bars\"></i>";sticky.children[0].classList.remove("d-flex","justify-content-end");sticky.removeAttribute("style");sticky.querySelector(".navbar-brand").hidden=false}})})}createAddonBtn(){const optionalNav=this.optionalNav;const methodUrl=this.addonBtnUrl;const methodName=this.addonBtnName;const methodIcon=this.addonBtnIcon;let signinBtn="";if(this.addonButtons&&this.optionalNav!==null&&this.optionalNav.children.length>0){this.buttons.forEach(function(e){signinBtn+="<a href=\"".concat(methodUrl(e,optionalNav),"\" class=\"btn btn-").concat(e.type," w-100 mt-1\">").concat(methodName(e,optionalNav)).concat(methodIcon(e),"</a>")})}return signinBtn}addonBtnUrl(data,element){let urlValue;data.url.length>0?urlValue=data.url:urlValue=element.querySelector("a").href;return urlValue}addonBtnName(data,element){let nameValue;data.name.length>0?nameValue=data.name:nameValue=element.querySelector("a").innerText;return nameValue}addonBtnIcon(data){let iconValue;data.icon!==undefined&&data.icon.length>0?iconValue="<i class=\"fas fa-".concat(data.icon," ms-1\"></i>"):iconValue="";return iconValue}}new MobileNavbar({addonButtons:true,buttons:[{name:"Sign in",url:"",type:"primary",icon:"right-to-bracket"}]}).init();class PageLoader{constructor(){this.animation=true;this.class="loaded"}init(){if(this.animation){window.addEventListener("load",()=>document.querySelector("body").classList.add(this.class))}}}new PageLoader().init();class ShufflePlugin{constructor(){this.element=document.querySelectorAll(".masonry-wrapper")}init(){if(this.element.length!==0){this.element.forEach(each=>{const shuffleInstance=new window.Shuffle(each,{itemSelector:".masonry-item"});this.shuffleFilter(each,shuffleInstance)})}}shuffleFilter(element,instance){const filterList=element.parentElement.querySelector(".masonry-filter");if(filterList!==null){const filterButtons=Array.from(filterList.children);filterButtons.forEach(button=>{button.addEventListener("click",e=>{instance.filter(e.target.getAttribute("data-group"))})})}}}new ShufflePlugin().init();class StickyMenu{constructor(){this.navbarName="navbar";this.paddingName="py-2";this.hideOther=true;this.showOnUp=true}init(){if(document.querySelector(".".concat(this.navbarName))!==null){this.navbarEl=document.querySelector(".".concat(this.navbarName));this.clonedNav=this.navbarEl.children[0].cloneNode(true);this.parentNav=this.navbarEl.parentElement;this.stickyNav=document.createElement("nav");this.stickyNav.appendChild(this.clonedNav);this.parentNav.insertBefore(this.stickyNav,this.navbarEl.nextSibling);this.stickyNav.classList.add("sticky-nav","navbar","navbar-expand-xl","navbar-light");this.stickyNav.children[0].classList.remove(this.paddingName);this.stickyNav.children[0].children[1].removeAttribute("id");this.stickyNav.children[0].children[3].remove();if(this.hideOther&&this.stickyNav.querySelector(".navbar-nav").nextElementSibling!==null){this.stickyNav.querySelector(".navbar-nav").nextElementSibling.remove()}let oldValue=0;let newValue=0;window.addEventListener("scroll",()=>{if(this.showOnUp){newValue=window.pageYOffset;if(oldValue>newValue)this.stickyNav.classList.add("active");if(oldValue<newValue)this.stickyNav.classList.remove("active");if(window.scrollY<350)this.stickyNav.classList.remove("active");oldValue=newValue}else{window.scrollY>350?this.stickyNav.classList.add("active"):this.stickyNav.classList.remove("active")}})}}}new StickyMenu().init();class Timeline{constructor(){this.elementName="timeline-vertical"}init(){if(document.querySelector(".".concat(this.elementName))!==null){const timelineArray=Array.from(document.querySelector(".".concat(this.elementName)).children);const oddElement=timelineArray.filter(function(e,i){return i%2==1});oddElement.forEach(function(e){e.children[0].classList.add("float-end")})}}}new Timeline().init();class ToTop{constructor(){this.elementName="to-top"}init(){if(document.querySelector(".".concat(this.elementName))!==null){const inTotop=document.querySelector(".".concat(this.elementName));window.addEventListener("scroll",function(){setTimeout(function(){window.scrollY>350?(inTotop.style.opacity=1,inTotop.classList.add("to-top-animation")):(inTotop.style.opacity-=.1,inTotop.classList.remove("to-top-animation"))},400)})}}}new ToTop().init();
Copyright ©2021 || Defacer Indonesia