1"use strict"; 2 3const dsnParam = { 4 map: { 5 marker_icon: "/assets/img/map-marker.png", 6 api: "AIzaSyDMyAS2jdzj-vdgBIFaIStYOWJtSlghndg" 7 }, 8 cursor: { 9 run: true, 10 speed: 0.35, 11 speedInner: 0.15 12 }, 13 scrollbar: { 14 duration: 1.5, 15 smooth: true, 16 smoothTouch: false, 17 mouseMultiplier: 1 18 }, 19 name: "Dr. M. Sinan Genim" 20}; 21 22(function ($) { 23 "use strict"; 24 25 preloader(); 26 effectBackForward(); 27 28 async function reloadAjax($off, $el = $(document)) { 29 await setHeadingPadding($off); 30 dsnGrid.hdevStartTheme(); 31 32 if (!$off) { 33 window.$effectScroll = await effectScroller(); 34 window.$animate = await dsnGrid.effectAnimate(); 35 } 36 37 await $('.hidden[data-dsn="bg_section"]').each(function () { 38 $(this).next().append($(this)); 39 $(this).css({ 40 zIndex: -1 41 }); 42 $(this).removeClass('hidden'); 43 }); 44 imgPosition(); 45 gridGaps(); 46 await $effectScroll.start(); 47 await $animate.allInt(); 48 await loadLazyImage($el, ['bg', 'src']); 49 await sliderPortfolio(); 50 await fancyBox(); 51 await justifiedGallery($el); 52 await compareTowImage(); 53 await serviceSection($el); 54 await scrollBarWidth(); 55 await menuInit(); 56 await dropHash(); 57 //await initMap($el); 58 await accordion($el); 59 await projectSlider().run(); 60 await Headline($el); 61 await tabs($el); 62 //await contactValidator(); 63 if (!$off) await Isotope($el);else setTimeout(Isotope, 500); 64 if (!$body.hasClass('elementor-editor-active')) dsnAjax() && (await dsnAjax().start()); 65 await list_project($el); 66 await inputNumber($el); 67 //await mouseCirMove($off); 68 if (!$off) changeStyle(); 69 } 70 /** 71 * Option Style Pages 72 */ 73 74 75 // function changeStyle() { 76 // const options = $('#dsn_box_options'); 77 78 // function handleStyle() { 79 // const isDark = $body.hasClass('v-dark'), 80 // _dark = $('.v-dark'), 81 // _light = $('.v-light'); 82 83 // $body.toggleClass('v-dark'); 84 85 // _dark.removeClass('v-dark').addClass('v-light'); 86 87 // _light.addClass('v-dark').removeClass('v-light'); 88 89 // dsnGrid.hs.putColor(isDark ? 'v-light' : 'v-dark'); 90 // } 91 92 // options.on('click', function () { 93 // handleStyle(); 94 // }); 95 // } 96 97 function setHeadingPadding($off, $el = $(document)) { 98 const head = $el.find("#dsn_header"); 99 if (head.length) head.css('--dsn-head-height', head.get(0).offsetHeight + "px"); 100 } 101 102 function imgPosition() { 103 $("[data-dsn-position]").each(function () { 104 if (this.nodeName === "IMG") $(this).css("object-position", dsnGrid.getData(this, "position", "center"));else $(this).css("background-position", dsnGrid.getData(this, "position", "center")); 105 }); 106 } 107 108 function gridGaps() { 109 $(".d-grid[data-dsn-gap]").each(function () { 110 const gap = dsnGrid.getData(this, "gap", "30px 30px"); 111 const split = gap.split(" "); 112 this.style.gridGap = gap; 113 this.style.setProperty("--grid-gap", gap); 114 115 if (this.classList.contains('dsn-isotope')) { 116 if (split.length > 1) { 117 this.style.setProperty("--grid-gap-row", split[0]); 118 this.style.setProperty("--grid-gap-col", split[1]); 119 this.style.setProperty("--grid-gap", split[1]); 120 } else if (split.length) { 121 this.style.setProperty("--grid-gap-row", split[0]); 122 this.style.setProperty("--grid-gap-col", split[0]); 123 this.style.setProperty("--grid-gap", split[0]); 124 } 125 } 126 }); 127 $("[data-dsn-iconsize]").each(function () { 128 this.style.setProperty("--dsn-icon-size", dsnGrid.getData(this, "iconsize")); 129 }); 130 } 131 /** 132 * 133 * servicestab 134 * 135 */ 136 137 138 function tabs($el) { 139 $el.find(".dsn-tabs").each(function () { 140 const $this = $(this); 141 $this.on("click", ".link-click", function () { 142 $(this).addClass("active").siblings().removeClass("active"); 143 $this.find("#" + $(this).attr("id") + "-content").fadeIn(1000).siblings().hide(); 144 }); 145 dsnGrid.killAjax(() => { 146 $this.off("click", ".link-click"); 147 }); 148 });
149 } 150 151 function Headline($el) { 152 if ($.isFunction($.fn.animatedHeadline)) { 153 $el.find('.ah-headline:not(.dsn-active-line)').animatedHeadline(); 154 $el.find('.ah-headline').addClass('dsn-active-line'); 155 } 156 } 157 158 function accordion($el = $(document)) { 159 $el.find(".dsn-accordion").each(function () { 160 const $this = $(this), 161 acc_q = $this.find(".accordion__question"); 162 acc_q.on("click", function () { 163 const content = $(this).next(); 164 $this.find(".accordion__answer").not(content).slideUp(400); 165 acc_q.not(this).removeClass("expanded"); 166 $(this).toggleClass("expanded"); 167 $this.find('.accordion__item').removeClass("active"); 168 if ($(this).hasClass('expanded')) $(this).parents('.accordion__item').addClass("active"); 169 content.slideToggle(400); 170 }); 171 dsnGrid.killAjax(function () { 172 acc_q.off('click'); 173 }); 174 }); 175 } 176 /** 177 * 178 * @param $el 179 */ 180 181 182 // function initMap($el = $(document)) { 183 // const map_id = $el.find(".map-custom"), 184 // mapScriptId = document.getElementById("map_api"); 185 // if (map_id.length <= 0) return; // Styles a map in night mode. 186 187 // if (mapScriptId === null) { 188 // const GOOGLE_MAP_KEY = dsnParam.map.api, 189 // script = document.createElement("script"); 190 // script.type = "text/javascript"; 191 // script.id = "map_api"; 192 // script.src = "https://maps.googleapis.com/maps/api/js?key=" + GOOGLE_MAP_KEY; 193 // document.body.appendChild(script); 194 // } 195 196 // setTimeout(function () { 197 // try { 198 // map_id.each(function () { 199 // let map_att = $(this), 200 // lat = dsnGrid.getData(this, "lat"), 201 // leg = dsnGrid.getData(this, "len"), 202 // zoom = dsnGrid.getData(this, "zoom"); 203 // const letLeng = new google.maps.LatLng(lat, leg), 204 // map = new google.maps.Map(map_att.get(0), { 205 // center: { 206 // lat: lat, 207 // lng: leg 208 // }, 209 // mapTypeControl: false, 210 // scrollwheel: false, 211 // draggable: true, 212 // streetViewControl: false, 213 // navigationControl: false, 214 // zoom: zoom, 215 // styles: [{ 216 // "featureType": "water", 217 // "elementType": "geometry", 218 // "stylers": [{ 219 // "color": "#e9e9e9" 220 // }, { 221 // "lightness": 17 222 // }] 223 // }, { 224 // "featureType": "landscape", 225 // "elementType": "geometry", 226 // "stylers": [{ 227 // "color": "#f5f5f5" 228 // }, { 229 // "lightness": 20 230 // }] 231 // }, { 232 // "featureType": "road.highway", 233 // "elementType": "geometry.fill", 234 // "stylers": [{ 235 // "color": "#ffffff" 236 // }, { 237 // "lightness": 17 238 // }] 239 // }, { 240 // "featureType": "road.highway", 241 // "elementType": "geometry.stroke", 242 // "stylers": [{ 243 // "color": "#ffffff" 244 // }, { 245 // "lightness": 29 246 // }, { 247 // "weight": 0.2 248 // }] 249 // }, { 250 // "featureType": "road.arterial", 251 // "elementType": "geometry", 252 // "stylers": [{ 253 // "color": "#ffffff" 254 // }, { 255 // "lightness": 18 256 // }] 257 // }, { 258 // "featureType": "road.local", 259 // "elementType": "geometry", 260 // "stylers": [{ 261 // "color": "#ffffff" 262 // }, { 263 // "lightness": 16 264 // }] 265 // }, { 266 // "featureType": "poi", 267 // "elementType": "geometry", 268 // "stylers": [{ 269 // "color": "#f5f5f5" 270 // }, { 271 // "lightness": 21 272 // }] 273 // }, { 274 // "featureType": "poi.park", 275 // "elementType": "geometry", 276 // "stylers": [{ 277 // "color": "#dedede" 278 // }, { 279 // "lightness": 21 280 // }] 281 // }, { 282 // "elementType": "labels.text.stroke", 283 // "stylers": [{ 284 // "visibility": "on" 285 // }, { 286 // "color": "#ffffff" 287 // }, { 288 // "lightness": 16 289 // }] 290 // }, { 291 // "elementType": "labels.text.fill", 292 // "stylers": [{ 293 // "saturation": 36 294 // }, { 295 // "color": "#333333" 296 // }, { 297 // "lightness": 40 298 // }] 299 // }, { 300 // "elementType": "labels.icon", 301 // "stylers": [{ 302 // "visibility": "off" 303 // }] 304 // }, { 305 // "featureType": "transit", 306 // "elementType": "geometry", 307 // "stylers": [{ 308 // "color": "#f2f2f2" 309 // }, { 310 // "lightness": 19 311 // }] 312 // }, { 313 // "featureType": "administrative", 314 // "elementType": "geometry.fill", 315 // "stylers": [{ 316 // "color": "#fefefe" 317 // }, { 318 // "lightness": 20 319 // }] 320 // }, { 321 // "featureType": "administrative", 322 // "elementType": "geometry.stroke", 323 // "stylers": [{ 324 // "color": "#fefefe" 325 // }, { 326 // "lightness": 17 327 // }, { 328 // "weight": 1.2 329 // }] 330 // }] 331 // }); 332 // google.maps.event.addDomListener(window, "resize", function () { 333 // let center = map.getCenter(); 334 // google.maps.event.trigger(map, "resize"); 335 // map.setCenter(center); 336 // }); 337 // new google.maps.Marker({ 338 // position: letLeng, 339 // animation: google.maps.Animation.BOUNCE, 340 // icon: dsnParam.map.marker_icon, 341 // title: "ASL", 342 // map: map 343 // }); 344 // }); 345 // } catch (e) { 346 // console.log(e); 347 // } 348 // }, 1000); 349 // } 350 351 function preloader() { 352 const preloader = $("#dsn_preloader"); 353 354 if (!preloader.length) { 355 window.addEventListener('DOMContentLoaded', function () { 356 reloadAjax().catch($err => { 357 console.log($err); 358 }); 359 }); 360 return false; 361 } 362 363 // Directly remove the preloader and reset body overflow 364 window.addEventListener('DOMContentLoaded', function () { 365 preloader.remove(); 366 $body.css('overflow', '');
367 ScrollTrigger.update(); 368 ScrollTrigger.getAll().forEach($item => { 369 $item.refresh(); 370 }); 371 372 // Call reloadAjax if needed 373 reloadAjax().catch($err => { 374 console.log($err); 375 }); 376 }); 377 } 378 379 // function preloader() { 380 // const preloader = $("#dsn_preloader"); 381 382 // if (!preloader.length) { 383 // window.addEventListener('DOMContentLoaded', function () { 384 // reloadAjax().catch($err => { 385 // console.log($err); 386 // }); 387 // }); 388 // return false; 389 // } 390 391 // $body.css('overflow', 'hidden'); 392 // const progress_number = preloader.find(".loading-count"), 393 // dsnBgPattern = preloader.find('.dsn-bg-pattern'), 394 // present = { 395 // value: 0 396 // }; 397 398 // const updateVal = (val, isSetVal) => { 399 // progress_number.text(val.toFixed(0) + "%"); 400 // dsnBgPattern.css("--bg-offset", val.toFixed(0) * 3 + "deg"); 401 // if (isSetVal) present.value = val; 402 // }; 403 404 // const timer = dsnGrid.pageLoad({ 405 // startTime: 0, 406 // endTime: 100, 407 // duration: 5000, 408 409 // onProgress(val) { 410 // updateVal(val, true); 411 // } 412 413 // }); 414 // window.addEventListener('DOMContentLoaded', function () { 415 // clearInterval(timer); 416 // const tl = gsap.timeline(); 417 // tl.to(present, 3, { 418 // value: 100, 419 420 // onUpdate() { 421 // updateVal(present.value, true); 422 // } 423 424 // }).call(function () { 425 // reloadAjax().catch($err => { 426 // console.log($err); 427 // }); 428 // }).to(preloader.find('> *:not(.bg-load)'), { 429 // autoAlpha: 0 430 // }).to(preloader.find('.bg-load'), { 431 // yPercent: -100, 432 // ease: Expo.easeInOut, 433 // duration: 1.5 434 // }).to(preloader.find('.bg-load .separator__path'), { 435 // attr: { 436 // d: dsnGrid.getData(preloader.find('.bg-load .separator__path').get(0), 'to') 437 // }, 438 // ease: "Power4.easeInOut", 439 // duration: 1.5 440 // }, '-=1.5').fromTo("#main_root", 1, { 441 // y: 400 442 // }, { 443 // y: 0, 444 // clearProps: true, 445 // ease: Expo.easeInOut 446 // }, "-=1.2").call(function () { 447 // preloader.remove();
448 // ScrollTrigger.update(); 449 // $body.css('overflow', ''); 450 // ScrollTrigger.getAll().forEach($item => { 451 // $item.refresh(); 452 // }); 453 // }); 454 // }); 455 // } 456 /** 457 * - event will be triggered by doing browser action such as 458 * a click on the back or forward button 459 */ 460 461 462 function effectBackForward() { 463 $wind.on("popstate", function (e) { 464 if (window.location.hash.length) { 465 $wind.scrollTop(0); 466 dsnGrid.scrollTop(window.location.hash, 1, -100); 467 return; 468 } 469 470 if (document.location.href.indexOf("#") > -1) { 471 return; 472 } 473 474 setTimeout(function () { 475 dsnAjax().backAnimate(e); 476 }, 50); 477 }); 478 } 479 480 function dsnAjax() { 481 return dsnGrid.dsnAjax({ 482 className: 'dsn-ajax-effect', 483 beforeSend: () => $body.css('overflow', 'hidden'), 484 485 async success(data) { 486 const animate = { 487 value: 0 488 }; 489 return gsap.to(animate, 0.2, { 490 value: 100, 491 delay: 1, 492 493 onStart() {
494 reloadAjax(true).catch($err => { 495 console.error($err); 496 }); 497 } 498 499 }); 500 }, 501 502 onComplete() { 503 setTimeout(() => { 504 $body.css('overflow', ''); 505 }, 500); 506 ScrollTrigger.refresh(); 507 } 508 509 }); 510 } 511 512 function menuInit() { 513 var _targets$toggle4; 514 515 const menu = document.getElementById("site_menu_header"); 516 if (!menu) return; 517 const targets = { 518 toggle: menu.querySelector("#navbar_toggle"), 519 backgroundMain: menu.querySelector(".bg-load:not(.dsn-svg-transition)"), 520 svg: menu.querySelector("svg.bg-load path"), 521 subMenu: $(menu).find("li.nav-item.has-sub-menu > a"), 522 back: $(menu).find("li.dsn-back"), 523 hamburger: menu.classList.contains('dsn-hamburger'), 524 scrDown: 0 525 }; 526 const reserved = dsnGrid.useState(false, (newValue, oldValue) => oldValue && removeOpenMenu()); 527 const typeNav = dsnGrid.useState(targets.hamburger, newValue => newValue ? menu.classList.add("dsn-hamburger") : menu.classList.remove("dsn-hamburger")); 528 529 const removeOpenMenu = () => menu.querySelectorAll('ul').forEach(item => item.classList.remove('open')); 530 531 const TransEnd = () => { 532 var _menu$querySelector; 533 534 return reserved.getValue() && ((_menu$querySelector = menu.querySelector('.primary-nav')) === null || _menu$querySelector === void 0 ? void 0 : _menu$querySelector.classList.add('open')); 535 }; 536 537 const onCompleteAnimate = e => { 538 e.classList.toggle('open'); 539 menu.classList.toggle('dsn-open'); 540 $body.toggleClass('over-hidden'); 541 reserved.setValue(!reserved.getValue()); 542 }; 543 544 const handleClick = e => { 545 e.preventDefault(); 546 e.stopPropagation(); 547 e.currentTarget.closest('.open').classList.remove('open'); 548 }; 549 550 const handleClickSubMenu = function (e) { 551 var _e$currentTarget, _e$currentTarget$pare, _e$currentTarget$pare2; 552 553 if (!typeNav.getValue()) return; 554 handleClick(e); 555 (_e$currentTarget = e.currentTarget) === null || _e$currentTarget === void 0 ? void 0 : (_e$currentTarget$pare = _e$currentTarget.parentElement) === null || _e$currentTarget$pare === void 0 ? void 0 : (_e$currentTarget$pare2 = _e$currentTarget$pare.querySelector('ul')) === null || _e$currentTarget$pare2 === void 0 ? void 0 : _e$currentTarget$pare2.classList.add("open"); 556 }; 557 558 const handleClickBackMenu = e => { 559 handleClick(e); 560 e.currentTarget.closest('ul').closest('li').closest('ul').classList.add("open"); 561 }; 562 563 const toggleClick = function () { 564 if (!reserved.getValue()) { 565 dsnGrid.svgAnimate.up(targets.svg, TransEnd).to("#dsn-scrollbar", { 566 y: -200, 567 duration: 1, 568 ease: 'power4.in' 569 }, "top").set(targets.backgroundMain, { 570 autoAlpha: 1 571 }, "center"); 572 onCompleteAnimate(this); 573 } else dsnGrid.svgAnimate.down(targets.svg, () => onCompleteAnimate(this)).to("#dsn-scrollbar", { 574 y: 0, 575 clearProps: "y", 576 duration: 1, 577 ease: 'power4' 578 }, "-=1").set(targets.backgroundMain, { 579 autoAlpha: 0 580 }, "center"); 581 }; 582 583 const resizeNav = function () { 584 if (window.innerWidth > 991 && typeNav.getValue()) { 585 typeNav.setValue(false); 586 } else if (window.innerWidth <= 991 && !typeNav.getValue()) { 587 typeNav.setValue(true); 588 } else if (dsnGrid.isMobile()) { 589 typeNav.setValue(true); 590 } 591 }; 592 593 if (!targets.hamburger) { 594 window.addEventListener('resize', resizeNav); 595 resizeNav(); 596 } 597 598 new Promise(resolve => setTimeout(() => resolve(), 300)).then(() => { 599 var _targets$toggle; 600 601 return dsnGrid.spltting.Char((_targets$toggle = targets.toggle) === null || _targets$toggle === void 0 ? void 0 : _targets$toggle.querySelector('.text-menu')); 602 }).then(() => { 603 var _targets$toggle2; 604 605 return dsnGrid.spltting.Char((_targets$toggle2 = targets.toggle) === null || _targets$toggle2 === void 0 ? void 0 : _targets$toggle2.querySelector('.text-open')); 606 }).then(() => { 607 var _targets$toggle3; 608 609 return dsnGrid.spltting.Char((_targets$toggle3 = targets.toggle) === null || _targets$toggle3 === void 0 ? void 0 : _targets$toggle3.querySelector('.text-close')); 610 }).then(() => { 611 targets.back.find(".text-toggle-back").each(function ($index) { 612 setTimeout(() => dsnGrid.spltting.Char(this), 10 * $index); 613 }); 614 }).then(() => { 615 menu.querySelectorAll('ul').forEach((item, index) => { 616 item.style.setProperty('--dsn-li-name', "dsn" + index);
617 Object.keys(item.children).forEach($key => { 618 item.children[$key].style.setProperty('--dsn-li-index', $key); 619 }); 620 }); 621 }).then(() => { 622 gsap.set(menu, { 623 yPercent: -100, 624 autoAlpha: 0 625 }); 626 menu.classList.remove('d-none'); 627 gsap.to(menu, { 628 yPercent: 0, 629 autoAlpha: 0, 630 delay: 1, 631 clearProps: true 632 }); 633 }); 634 $effectScroll.getListener(function (e, x, y) { 635 if (y > 170) { 636 if (targets.scrDown < y) { 637 menu.classList.add("nav-bg", "hide-nav"); 638 } else { 639 menu.classList.remove("hide-nav"); 640 } 641 } else { 642 menu.classList.remove("nav-bg", "hide-nav"); 643 } 644 645 targets.scrDown = y; 646 }); 647 (_targets$toggle4 = targets.toggle) === null || _targets$toggle4 === void 0 ? void 0 : _targets$toggle4.addEventListener('click', toggleClick); 648 targets.subMenu.on('click', handleClickSubMenu); 649 targets.back.on('click', handleClickBackMenu); 650 dsnGrid.killAjax(function () { 651 var _targets$toggle5; 652 653 (_targets$toggle5 = targets.toggle) === null || _targets$toggle5 === void 0 ? void 0 : _targets$toggle5.removeEventListener('click', toggleClick); 654 targets.subMenu.off('click', handleClickSubMenu); 655 targets.back.off('click', handleClickBackMenu); 656 }); 657 } 658 659 function dropHash() { 660 const linked = { 661 hash: $("a[href=\"#\"]"), 662 scroll: $("[href*=\"#\"]:not([href=\"#\"]):not(.comment-reply-link):not(#cancel-comment-reply-link):not(.wc-tabs .wc-effect-tab)") 663 }; 664 linked.hash.on("click", function (e) { 665 e.preventDefault(); 666 }); 667 linked.scroll.on("click", function (e) { 668 e.preventDefault(); 669 let href = $($(this).attr("href")); 670 671 if (!href.length) { 672 href = null; 673 return false; 674 } 675 676 const option = $(this).data('dsn-option'); 677 dsnGrid.scrollTop(href.get(0).offsetTop, option); 678 href = null; 679 }); 680 681 if (window.location.hash.length) { 682 $wind.scrollTop(0); 683 dsnGrid.scrollTop(window.location.hash); 684 } 685 686 dsnGrid.killAjax(function () { 687 linked.hash.off("click"); 688 linked.scroll.off("click"); 689 }); 690 } 691 692 function scrollBarWidth() { 693 const scrollDiv = document.createElement("div"); 694 scrollDiv.style.cssText = "width:100px;height:100px;overflow: scroll;position: absolute;top: -9999px;"; 695 document.body.appendChild(scrollDiv); 696 document.body.style.setProperty('--dsn-width-scroll', scrollDiv.offsetWidth - scrollDiv.clientWidth + "px"); 697 document.body.removeChild(scrollDiv); 698 } 699 700 async function Isotope($el = $(document)) { 701 const createIso = async function ($item) { 702 if (!$item.length) return; 703 $item.addClass('use-filter'); 704 return $item.isotope({ 705 itemSelector: '.grid-item' 706 }); 707 }; 708 709 await $el.find('.root-posts').each(function () { 710 const rootPosts = $(this), 711 $filtering = rootPosts.find('.dsn-filtering .filtering'), 712 $isoItem = rootPosts.hasClass('has-filter') ? rootPosts.find('.dsn-posts') : rootPosts.find('.dsn-isotope'), 713 $buttonAjax = rootPosts.find('.button-load-more'); 714 if (!$filtering.length && !$isoItem.length && !$buttonAjax.length) return; 715 716 const handleClickFilter = function ($iso) { 717 if (!$filtering.length) return $iso; 718 719 const handleClick = function () { 720 $(this).addClass('active').siblings().removeClass("active"); 721 $iso.isotope({ 722 filter: $(this).attr("data-filter") 723 }); 724 }; 725 726 $filtering.find('button').on("click", handleClick); 727 return $iso; 728 }; 729 730 const handleAjax = function ($iso) { 731 if (!$buttonAjax.length) return; 732 const $option = dsnGrid.getOptionAjax($buttonAjax.get(0)); 733 dsnGrid.loadMore({ 734 el: $buttonAjax, 735 option: $option, 736 isotope: $iso, 737 success: function (data) { 738 $animate.parallaxHover(); 739 }, 740 filtering: $filtering, 741 posts: rootPosts.find('.dsn-posts') 742 }); 743 return $iso; 744 }; 745
746 createIso($isoItem).then(handleClickFilter).then(handleAjax).then(function ($iso) { 747 dsnGrid.killAjax(function () { 748 $filtering.find('button').off('click'); 749 if ($iso) $iso.isotope('destroy'); 750 $buttonAjax.off('click'); 751 }); 752 }); 753 }); 754 await $el.find(".dsn-isotope:not(.use-filter)").each(function () { 755 if ($(this).parent('.root-posts').length) return; 756 createIso($(this)).then(function ($iso) { 757 dsnGrid.killAjax(function () { 758 if ($iso) $iso.isotope('destroy'); 759 }); 760 }); 761 }); 762 } 763 764 function loadLazyImage($el = $(document), $type, $args = {}) { 765 if (typeof $type === 'object') { 766 $type.forEach($item => { 767 loadLazyImage($el, $item); 768 }); 769 } else { 770 const dsnData = $el.find("[data-dsn-" + $type + "]"); 771 dsnData.each(function ($index) { 772 const $args = {}; 773 if (dsnData.length - 1 === $index && $type === "src") $args.onComplete = () => { 774 $('.swiper-container.swiper-initialized').each(function () { 775 var _swiper$passedParams; 776 777 const swiper = this.swiper; 778 if (!(swiper === null || swiper === void 0 ? void 0 : (_swiper$passedParams = swiper.passedParams) === null || _swiper$passedParams === void 0 ? void 0 : _swiper$passedParams.loop)) return; 779 swiper.loopDestroy(); 780 swiper.loopCreate(); 781 swiper.update(); 782 swiper.updateSlides(); 783 }); 784 $('.dsn-isotope').each(function () { 785 $(this).isotope({ 786 itemSelector: '.grid-item' 787 }); 788 }); 789 };else $args.onComplete = () => { 790 $('.dsn-isotope').each(function () { 791 $(this).isotope({ 792 itemSelector: '.grid-item' 793 }); 794 }); 795 }; 796 setTimeout(() => { 797 dsnGrid.loadData(this, $type, $args); 798 }, 1000); 799 }); 800 } 801 } 802 803 function serviceSection($el = $(document)) { 804 if (dsnGrid.isMobile()) return; 805 ($el.hasClass("service-with-img") ? $el.find('.dsn-service') : $el.find(".service-with-img")).each(function () { 806 const serviceItem = $(this).find(".service-item"), 807 onEnter = function () { 808 serviceItem.not(this).removeClass('active'); 809 this.classList.add("active"); 810 serviceItem.not(this).find('.service_description ').slideUp(400); 811 $(this).find('.service_description ').slideDown(400); 812 }; 813 814 serviceItem.first().addClass("active"); 815 serviceItem.on('mouseenter', onEnter); 816 dsnGrid.killAjax(function () { 817 serviceItem.off('mouseenter', onEnter); 818 }); 819 }); 820 } 821 /** 822 * t is using translate3d to perform a momentum based scrolling 823 * (aka inertial scrolling) on modern browsers. 824 * 825 */ 826 827 828 function effectScroller() { 829 const locked_scroll = "locked-scroll"; 830 let lenisScroll = null; 831 return { 832 /** 833 * 834 * @returns {boolean} 835 * Check smooth scroll is enable or not 836 */ 837 isScroller: function () { 838 var _dsnParam$scrollbar; 839 840 return dsnParam === null || dsnParam === void 0 ? void 0 : (_dsnParam$scrollbar = dsnParam.scrollbar) === null || _dsnParam$scrollbar === void 0 ? void 0 : _dsnParam$scrollbar.smooth; 841 }, 842 start: function () { 843 $body.removeClass(locked_scroll); 844 dsnGrid.scrollTop(0, { 845 duration: 0.01 846 }); 847 if (!this.isScroller()) return; 848 lenisScroll = new Lenis(dsnParam.scrollbar); 849 850 function raf(time) { 851 lenisScroll.raf(time); 852 requestAnimationFrame(raf); 853 } 854 855 requestAnimationFrame(raf); 856 }, 857 858 /** 859 * locked smooth scrollbar 860 */ 861 locked: function () { 862 var _lenisScroll; 863 864 $body.addClass(locked_scroll); 865 this.isScroller() && ((_lenisScroll = lenisScroll) === null || _lenisScroll === void 0 ? void 0 : _lenisScroll.destroy()); 866 }, 867 868 /** 869 * 870 * @param $id 871 * @returns {*} 872 * Gets scrollbar on the given element. If no scrollbar instance exists, returns undefined: 873 */ 874 getScrollbar: () => lenisScroll, 875 876 /** 877 * 878 * @param listener 879 * @param $useWin 880 * 881 * Since scrollbars will not fire a native scroll event 882 */ 883 getListener: function (listener) { 884 if (listener === undefined) return; 885 886 const scroll = e => { 887 listener(e, window.scrollX, window.scrollY); 888 }; 889 890 $wind.on("scroll", scroll); 891 } 892 }; 893 } 894 895 function compareTowImage($el = $(document)) { 896 $el.find('.dsn-compare-container').each(function () { 897 const compare = dsnGrid.compareTowImg(this); 898 dsnGrid.killAjax(function () { 899 compare.destroy(); 900 }); 901 });
902 } 903 904 function fancyBox() { 905 if (!window.Fancybox) return; 906 Fancybox.defaults.Hash = false; 907 Fancybox.bind(".vid"); 908 Fancybox.bind("[data-fancybox]"); 909 Fancybox.bind(".woocommerce-product-gallery__wrapper .woocommerce-product-gallery__image a"); 910 dsnGrid.killAjax(function () { 911 Fancybox.unbind(".vid"); 912 Fancybox.unbind("[data-fancybox]"); 913 }); 914 } 915 /** 916 * 917 * @param $el 918 */ 919 920 921 function projectSlider() { 922 return { 923 swiper: function ($id, $obj) { 924 $id = dsnGrid.convertToJQuery($id); 925 const swiperPaginate = $id.find('.swiper-pagination'); 926 const renderBullet = swiperPaginate.hasClass('dsn-swiper-img') ? function (index, className) { 927 var _this$slides$index$qu; 928 929 return '<span class="' + className + '">' + ((_this$slides$index$qu = this.slides[index].querySelector('img')) === null || _this$slides$index$qu === void 0 ? void 0 : _this$slides$index$qu.outerHTML) + '</span>'; 930 } : null; 931 $obj = $.extend(true, { 932 slidesPerView: 1, 933 centeredSlides: true, 934 spaceBetween: 0, 935 grabCursor: true, 936 speed: 1000, 937 parallax: true, 938 loop: true, 939 pagination: { 940 el: swiperPaginate.get(0), 941 clickable: true, 942 type: dsnGrid.getData(swiperPaginate.get(0), 'type', 'bullets'), 943 renderBullet 944 }, 945 navigation: { 946 nextEl: $id.find('.next-paginate ,.next-container', '.dsn-nav-right').get(0), 947 prevEl: $id.find('.prev-paginate , .prev-container', '.dsn-nav-left').get(0) 948 } 949 }, $obj); 950 const $s = new Swiper($id.find(".swiper-container").get(0), $obj); 951 dsnGrid.killAjax(() => { 952 $s.destroy(); 953 }); 954 }, 955 run: function () { 956 let $this = this; 957 $(".dsn-swiper").each(function () { 958 let option = dsnGrid.getData(this, "option", {}); 959 let syn = $(this).parent().find(dsnGrid.getData(this, "controller")); 960 961 if (syn.length) { 962 option['thumbs'] = { 963 swiper: { 964 el: syn.find('.swiper-container').get(0), 965 allowTouchMove: false, 966 slidesPerView: 1, 967 speed: option.speed || 1000, 968 parallax: true, 969 autoHeight: true 970 } 971 }; 972 } 973 974 option["breakpoints"] = { 975 768: { 976 slidesPerView: option.slidesPerView > 1 ? option.slidesPerView > 1.5 ? 2 : 1.30 : 1, 977 spaceBetween: option.slidesPerView > 1 ? option.spaceBetween > 21 ? 20 : option.spaceBetween : 0 978 }, 979 992: { 980 slidesPerView: option.slidesPerView, 981 spaceBetween: option.spaceBetween || 0 982 }, 983 575: { 984 slidesPerView: 1, 985 spaceBetween: 0 986 } 987 }; 988 989 if (syn.length) { 990 option['thumbs'] = { 991 swiper: { 992 el: syn.find('.swiper-container').get(0), 993 allowTouchMove: false, 994 slidesPerView: 1, 995 speed: option.speed || 1000, 996 parallax: true, 997 autoHeight: true 998 } 999 }; 1000 option.breakpoints['768'] = { 1001 slidesPerView: 1, 1002 spaceBetween: 0 1003 }; 1004 } 1005 1006 option['slidesPerView'] = 1; 1007 option['spaceBetween'] = 0; 1008 $this.swiper(this, option); 1009 }); 1010 } 1011 }; 1012 } 1013 /** 1014 * 1015 * - Create an high quality justified gallery 1016 * of image 1017 * 1018 */ 1019 1020 1021 function justifiedGallery($el = $(document)) { 1022 $el.find(".gallery-portfolio").each(function () { 1023 if (!window.fjGallery) return; 1024 const option = dsnGrid.getData(this, 'option') || {}; 1025 const gallery = fjGallery(this, { ...option, 1026 itemSelector: '.fj-gallery-item', 1027 onJustify: function () { 1028 ScrollTrigger.refresh();
1029 } 1030 }); 1031 dsnGrid.killAjax(function () { 1032 fjGallery(gallery, 'destroy'); 1033 }); 1034 }); 1035 } 1036 1037 function sliderPortfolio($el = $(document)) { 1038 let tl = gsap.timeline(); 1039 1040 const initSlider = async function () { 1041 var _this$querySelector; 1042 1043 const isPadding = this.closest('.dsn-section-padding'); 1044 const dsnSliderContent = this.querySelector('.dsn-slider-content'); 1045 await this.querySelectorAll('.content-slider .slide-item').forEach(($item, $index) => { 1046 const slideContent = $item.querySelector('.slide-content'); 1047 $item.setAttribute('data-dsn-id', $index); 1048 if (!slideContent) return; 1049 slideContent === null || slideContent === void 0 ? void 0 : slideContent.setAttribute('data-dsn-id', $index); 1050 if ($index === 0) slideContent === null || slideContent === void 0 ? void 0 : slideContent.classList.add('dsn-active', 'dsn-active-animate'); 1051 dsnSliderContent === null || dsnSliderContent === void 0 ? void 0 : dsnSliderContent.append(slideContent); 1052 }); 1053 await this.querySelectorAll('.dsn-slider-content .slide-content [data-dsn-split=\"chars\"]').forEach(function ($item) { 1054 dsnGrid.spltting.Char($item, true); 1055 }); 1056 await this.querySelectorAll('.dsn-slider-content .head-meta').forEach(function ($item) { 1057 dsnGrid.spltting.Items($item, "span"); 1058 }); 1059 if (!isPadding || window.innerWidth <= 575) return false; 1060 const bgSlider = (_this$querySelector = this.querySelector(".bg-container")) === null || _this$querySelector === void 0 ? void 0 : _this$querySelector.cloneNode(true); 1061 bgSlider.classList.add("bg-container-blur", "left-0", "top-0", "dsn-bg-blur", "bg-blur-head", "over-hidden"); 1062 bgSlider.classList.remove("bg-container", "dsn-hero-parallax-img"); 1063 this.prepend(bgSlider); 1064 }; 1065 1066 const init = swiper => { 1067 swiper.slides.forEach(item => { 1068 const video = item.querySelector('.swiper-slide:not(.swiper-slide-active) video'); 1069 if (video) video.pause(); 1070 }); 1071 }; 1072 1073 const activeVideo = swiper => { 1074 const newVideo = swiper.slides[swiper.activeIndex].querySelector('video'); 1075 const oldVideo = swiper.slides[swiper.previousIndex].querySelector('video'); 1076 if (newVideo) newVideo.play(); 1077 if (oldVideo) oldVideo.pause(); 1078 }; 1079 1080 const getContent = (swiper, contentRef) => { 1081 const oldNum = swiper.slides[swiper.previousIndex].getAttribute("data-dsn-id"); 1082 const newNum = swiper.slides[swiper.activeIndex].getAttribute("data-dsn-id"); 1083 return [newNum, oldNum, contentRef.querySelector('[data-dsn-id="' + newNum + '"]'), contentRef.querySelector('[data-dsn-id="' + oldNum + '"]')]; 1084 }; 1085 1086 function slideChange(swiper) { 1087 const contentSlider = this.querySelector('.dsn-slider-content'); 1088 if (!contentSlider) return; 1089 activeVideo(swiper); 1090 const [newNum, oldNum, newContent, oldContent] = getContent(swiper, contentSlider), 1091 [newTitle, oldTitle] = [Array.from(newContent.querySelectorAll('.title .char') || []), Array.from(oldContent.querySelectorAll('.title .char') || [])], 1092 $isRight = oldNum < newNum, 1093 animate = { 1094 show: { 1095 autoAlpha: 1, 1096 y: 0, 1097 stagger: { 1098 amount: 0.3, 1099 from: "center" 1100 }, 1101 ease: "back.out(4)", 1102 rotation: 0, 1103 scale: 1, 1104 yoyo: true 1105 }, 1106 hide: { 1107 autoAlpha: 0, 1108 y: !$isRight ? "25%" : "-25%", 1109 stagger: { 1110 amount: 0.3, 1111 from: "center" 1112 }, 1113 ease: "back.in(4)", 1114 yoyo: true, 1115 rotation: 8, 1116 scale: 1.1 1117 } 1118 }; 1119 const current = Number.parseInt(newNum, 10) + 1, 1120 num = this.querySelector(".slider-current-index"); 1121 if (num) num.innerHTML = current > 9 ? current : '0' + current; 1122 if (swiper.dsnOnChange) swiper.dsnOnChange(newNum, oldNum, newContent, oldContent); 1123 tl.progress(1); 1124 tl = new gsap.timeline(); 1125 oldContent.classList.remove("dsn-active-animate"); 1126 tl.fromTo(oldTitle, 0.4, animate.show, animate.hide).call(function () { 1127 oldContent.classList.remove("dsn-active"); 1128 newContent.classList.add("dsn-active"); 1129 newContent.classList.add("dsn-active-animate"); 1130 }).fromTo(newTitle, 0.8, animate.hide, animate.show, "-=.005"); 1131 } 1132 1133 const swiper = function () { 1134 const option = Object.assign({}, { 1135 on: { 1136 init, 1137 slideChange: slideChange.bind(this) 1138 } 1139 }, dsnGrid.getData(this, 'option') || {}, { 1140 autoHeight: false 1141 }); 1142 if (window.innerWidth > 767) option.pagination = { 1143 el: this.querySelector('.swiper-pagination'), 1144 clickable: true, 1145 dynamicBullets: option.direction !== "vertical", 1146 dynamicMainBullets: 1, 1147 type: 'bullets', 1148 verticalClass: "swiper-pagination-horizontal" 1149 }; 1150 return new Swiper(this.querySelector(".content-slider .swiper-container"), option); 1151 }; 1152 1153 const bgBlur = function (container, swiper) { 1154 var _swiper$passedParams2, _swiper$passedParams3; 1155 1156 const bgBlurContainer = container.querySelector('.bg-container-blur .swiper-container'); 1157 if (!bgBlurContainer) return false; 1158 const navSlider = new Swiper(bgBlurContainer, { 1159 speed: ((_swiper$passedParams2 = swiper.passedParams) === null || _swiper$passedParams2 === void 0 ? void 0 : _swiper$passedParams2.speed) || 1000, 1160 loop: ((_swiper$passedParams3 = swiper.passedParams) === null || _swiper$passedParams3 === void 0 ? void 0 : _swiper$passedParams3.loop) || false, 1161 touchRatio: 0.2, 1162 resistanceRatio: 0.65, 1163 effect: 'fade', 1164 allowTouchMove: false 1165 }); // swiper.thumbs.swiper = navSlider; 1166 1167 swiper.controller.control = navSlider; 1168 return navSlider; 1169 }; 1170 1171 const webGelOption = function () { 1172 const images = []; 1173 $(this).find(".bg-container .slide-item").each(function () { 1174 const slide_content = $(this).find('.image-bg'), 1175 id = $(this).data('dsn-id'); 1176 1177 if (slide_content.find('video').length) { 1178 images[id] = { 1179 posters: slide_content.find('video').get(0), 1180 src: slide_content.find('video').attr("data-dsn-poster"), 1181 overlay: slide_content.data("overlay") 1182 }; 1183 } else { 1184 const img = slide_content.find('img'); 1185 const srcImg = img.data('dsn-src'); 1186 images[id] = {
1187 src: srcImg !== null && srcImg !== void 0 ? srcImg : img.attr("src"), 1188 overlay: slide_content.data("overlay") 1189 }; 1190 } 1191 }); 1192 if (images.length) $(this).find(".bg-container").attr("data-overlay", images[0].overlay); 1193 return images; 1194 }; 1195 1196 $el.find(".main-slider:not(.dsn-swiper-initialized)").each(function () { 1197 this.classList.add('dsn-swiper-initialized'); 1198 initSlider.bind(this)().then(swiper.bind(this)).then(function (swiper) { 1199 const handleNext = function () { 1200 if (tl.isActive()) return; 1201 1202 if (swiper.slides.length === swiper.activeIndex + 1 && !swiper.passedParams.loop) { 1203 swiper.slideTo(0); 1204 } else { 1205 swiper.slideNext(); 1206 } 1207 }, 1208 handlePrev = function () { 1209 if (tl.isActive()) return; 1210 1211 if (swiper.activeIndex === 0 && !swiper.passedParams.loop) { 1212 swiper.slideTo(swiper.slides.length); 1213 } else { 1214 swiper.slidePrev(); 1215 } 1216 }, 1217 nextArrow = $(this).find('.next-paginate'), 1218 prevArrow = $(this).find('.prev-paginate'); 1219 1220 if (nextArrow.length) nextArrow.on('click', handleNext); 1221 if (prevArrow.length) prevArrow.on('click', handlePrev); 1222 const bgBlurSwiper = bgBlur(this, swiper); 1223 let webGel = null; 1224 if (this.classList.contains('dsn-webgl')) webGel = dsnGrid.WebGLDistortionHoverEffects({ 1225 imgs: webGelOption.bind(this)(), 1226 ...(dsnGrid.getData(this, 'webgl', {}) || {}), 1227 direction: swiper.params.direction, 1228 parent: this.querySelector('.bg-container'), 1229 swiper, 1230 1231 onStart({ 1232 parent, 1233 item 1234 }) { 1235 parent.setAttribute('data-overlay', item.overlay); 1236 } 1237 1238 }); 1239 if (this.classList.contains("hide-bg")) gsap.to(this.querySelector(".bg-container"), { 1240 opacity: 1, 1241 delay: 2 1242 }); 1243 dsnGrid.killAjax(function () { 1244 if (nextArrow.length) nextArrow.off('click', handleNext); 1245 if (prevArrow.length) prevArrow.off('click', handlePrev); 1246 tl.kill(); 1247 swiper.destroy(); 1248 webGel.destroy(); 1249 if (bgBlurSwiper) bgBlurSwiper.destroy(); 1250 }); 1251 }.bind(this)); 1252 }); 1253 } 1254 1255 function mouseCirMove($off) { 1256 const $element = $("#dsn_cursor"), 1257 inner = $("#dsn_cursor_inner"); 1258 if (dsnParam.cursor.run) $body.addClass('dsn-cursor-effect'); 1259 if (!$element.length || dsnGrid.isMobile() || !dsnParam.cursor.run) return; 1260 const mouseStop = 'dsn-stop-cursor'; 1261 1262 if (!$off) { 1263 dsnGrid.mouseMove($element, { 1264 speed: dsnParam.cursor.speed, 1265 mouseStop, 1266 inner: { 1267 el: inner, 1268 speed: dsnParam.cursor.speedInner 1269 } 1270 }); 1271 } 1272 1273 const defaultEl = $element.css(['opacity', 'width', 'height', 'borderColor', 'background']), 1274 { 1275 stop, 1276 run 1277 } = { 1278 stop: () => $body.addClass(mouseStop), 1279 run: () => $body.removeClass(mouseStop) 1280 }; 1281 dsnGrid.mouseHover("a:not(> img):not(.vid) , .dsn-button-sidebar, button , .button-load-more , [data-cursor=\"open\"]", { 1282 enter: () => gsap.to($element, 0.5, { 1283 width: 70, 1284 height: 70, 1285 opacity: 0.5, 1286 backgroundColor: defaultEl.borderColor 1287 }), 1288 leave: () => gsap.to($element, 0.5, { ...defaultEl 1289 }) 1290 }); 1291 dsnGrid.mouseHover(".c-hidden , .social-side a , .next-arrow , .prev-arrow , .dsn-btn.vid", { 1292 enter() { 1293 stop(); 1294 const { 1295 x, 1296 y, 1297 width, 1298 height 1299 } = this.getBoundingClientRect(); 1300 gsap.to($element, 0.5, { 1301 width, 1302 height, 1303 opacity: 0, 1304 x, 1305 y, 1306 xPercent: 0, 1307 yPercent: 0 1308 }); 1309 gsap.to(inner, 0.1, { 1310 opacity: 0 1311 }); 1312 }, 1313 1314 leave() { 1315 run(); 1316 gsap.to($element, 0.5, { ...defaultEl,
1317 xPercent: -50, 1318 yPercent: -50 1319 }); 1320 gsap.to(inner, 0.1, { 1321 opacity: 1 1322 }); 1323 } 1324 1325 }); 1326 } 1327 1328 function list_project($el = $(document)) { 1329 function changeState(_active, _remove, $product) { 1330 if (_active.hasClass('active')) return false; 1331 1332 _active.addClass('active'); 1333 1334 _remove.removeClass('active'); 1335 1336 $product.fadeOut(300, function () { 1337 jQuery(this).toggleClass("list").fadeIn(300); 1338 }); 1339 return false; 1340 } 1341 1342 $el.find('.woocommerce').each(($index, $item) => { 1343 const $grid = $($item).find('.dsn_grid'); 1344 const $list = $($item).find('.dsn_list'); 1345 if (!$grid.length) return; 1346 const $product = $($item).find('ul.dsn-shop'); 1347 $grid.on('click', function () { 1348 return changeState($grid, $list, $product); 1349 }); 1350 $list.on('click', function () { 1351 return changeState($list, $grid, $product); 1352 }); 1353 dsnGrid.killAjax(() => { 1354 $grid.off('click'); 1355 $list.off('click'); 1356 }); 1357 }); 1358 } 1359 1360 function inputNumber($el = $(document)) { 1361 $el.find('.quantity').each(function () { 1362 const $this = $(this), 1363 input = $this.find('input[type="number"]'), 1364 btnUp = $this.find('.quantity-up'), 1365 btnDown = $this.find('.quantity-down'), 1366 min = input.attr('min') || 1, 1367 max = input.attr('max') || Number.MAX_VALUE; 1368 btnUp.off('click'); 1369 btnUp.on('click', ChangeValue.bind(this, true)); 1370 btnDown.off('click'); 1371 btnDown.on('click', ChangeValue.bind(this, false)); 1372 1373 function ChangeValue(_is_plus) { 1374 const oldValue = parseFloat(input.val()); 1375 let newVal = 0; 1376 1377 if (_is_plus) { 1378 if (oldValue >= max) { 1379 newVal = oldValue; 1380 } else { 1381 newVal = oldValue + 1; 1382 } 1383 } else { 1384 if (oldValue <= min) { 1385 newVal = oldValue; 1386 } else { 1387 newVal = oldValue - 1; 1388 } 1389 } 1390 1391 input.val(newVal); 1392 input.trigger("change"); 1393 } 1394 }); 1395 } 1396 /** 1397 * Validation Contact form 1398 */ 1399 1400 1401 // function contactValidator() { 1402 // const contact_form = $("#contact-form"); 1403 1404 // if (contact_form < 1) { 1405 // return; 1406 // } 1407 1408 // contact_form.validator(); // when the form is submitted 1409 // // contact_form.off("submit"); 1410 1411 // contact_form.on("submit", function (e) { 1412 // // if the validator does not prevent form submit 1413 // if (!e.isDefaultPrevented()) { 1414 // // POST values in the background the the script URL 1415 // $.ajax({
1416 // type: "POST", 1417 // url: "contact.php", 1418 // data: $(this).serialize(), 1419 // success: function (data) { 1420 // // data = JSON object that contact.php returns 1421 // // we recieve the type of the message: success x danger and apply it to the 1422 // var messageAlert = "alert-" + data.type; 1423 // var messageText = data.message; // let's compose Bootstrap alert box HTML 1424 1425 // var alertBox = "<div class=\"alert " + messageAlert + " alert-dismissable\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>" + messageText + "</div>"; // If we have messageAlert and messageText 1426 1427 // if (messageAlert && messageText) { 1428 // // inject the alert to .messages div in our form 1429 // contact_form.find(".messages").html(alertBox); // empty the form 1430 1431 // contact_form[0].reset(); 1432 // } 1433 1434 // setTimeout(function () { 1435 // contact_form.find(".messages").html(""); 1436 // }, 3000); 1437 // }, 1438 // error: function (error) { 1439 // console.log(error); 1440 // } 1441 // }); 1442 // return false; 1443 // } 1444 // }); 1445 // } 1446})(jQuery); 1447 1448function sidebarOptions() { 1449 document.body.classList.toggle('dsn-show-sidebar'); 1450}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.