1/*! @license DOMPurify 3.1.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.6/LICENSE */ 2!(function (e, t) { 3 'object' == typeof exports && 'undefined' != typeof module 4 ? (module.exports = t()) 5 : 'function' == typeof define && define.amd 6 ? define(t) 7 : ((e = 8 'undefined' != typeof globalThis 9 ? globalThis 10 : e || self).DOMPurify = t()); 11})(this, function () { 12 'use strict'; 13 const { 14 entries: e, 15 setPrototypeOf: t, 16 isFrozen: n, 17 getPrototypeOf: o, 18 getOwnPropertyDescriptor: r, 19 } = Object; 20 let { freeze: i, seal: a, create: l } = Object, 21 { apply: c, construct: s } = 'undefined' != typeof Reflect && Reflect; 22 i || 23 (i = function (e) { 24 return e; 25 }), 26 a || 27 (a = function (e) { 28 return e; 29 }), 30 c || 31 (c = function (e, t, n) { 32 return e.apply(t, n); 33 }), 34 s || 35 (s = function (e, t) { 36 return new e(...t); 37 }); 38 const u = b(Array.prototype.forEach), 39 m = b(Array.prototype.pop), 40 p = b(Array.prototype.push), 41 f = b(String.prototype.toLowerCase), 42 d = b(String.prototype.toString), 43 h = b(String.prototype.match), 44 g = b(String.prototype.replace), 45 T = b(String.prototype.indexOf), 46 y = b(String.prototype.trim), 47 E = b(Object.prototype.hasOwnProperty), 48 _ = b(RegExp.prototype.test), 49 A = 50 ((N = TypeError), 51 function () { 52 for ( 53 var e = arguments.length, t = new Array(e), n = 0; 54 n < e; 55 n++ 56 ) 57 t[n] = arguments[n]; 58 return s(N, t); 59 }); 60 var N; 61 function b(e) { 62 return function (t) { 63 for ( 64 var n = arguments.length, 65 o = new Array(n > 1 ? n - 1 : 0), 66 r = 1; 67 r < n; 68 r++ 69 ) 70 o[r - 1] = arguments[r]; 71 return c(e, t, o); 72 }; 73 } 74 function S(e, o) { 75 let r = 76 arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : f; 77 t && t(e, null); 78 let i = o.length; 79 for (; i--; ) { 80 let t = o[i]; 81 if ('string' == typeof t) { 82 const e = r(t); 83 e !== t && (n(o) || (o[i] = e), (t = e)); 84 } 85 e[t] = !0; 86 } 87 return e; 88 } 89 function R(e) { 90 for (let t = 0; t < e.length; t++) { 91 E(e, t) || (e[t] = null); 92 } 93 return e; 94 } 95 function w(t) { 96 const n = l(null); 97 for (const [o, r] of e(t)) { 98 E(t, o) && 99 (Array.isArray(r) 100 ? (n[o] = R(r)) 101 : r && 'object' == typeof r && r.constructor === Object 102 ? (n[o] = w(r)) 103 : (n[o] = r)); 104 } 105 return n; 106 } 107 function C(e, t) { 108 for (; null !== e; ) { 109 const n = r(e, t); 110 if (n) { 111 if (n.get) return b(n.get); 112 if ('function' == typeof n.value) return b(n.value); 113 } 114 e = o(e); 115 } 116 return function () { 117 return null; 118 }; 119 } 120 const L = i([ 121 'a', 122 'abbr', 123 'acronym', 124 'address', 125 'area', 126 'article', 127 'aside', 128 'audio', 129 'b', 130 'bdi', 131 'bdo', 132 'big', 133 'blink', 134 'blockquote', 135 'body', 136 'br', 137 'button', 138 'canvas', 139 'caption', 140 'center', 141 'cite', 142 'code', 143 'col', 144 'colgroup', 145 'content', 146 'data', 147 'datalist', 148 'dd', 149 'decorator', 150 'del', 151 'details', 152 'dfn', 153 'dialog', 154 'dir', 155 'div', 156 'dl', 157 'dt', 158 'element', 159 'em', 160 'fieldset', 161 'figcaption', 162 'figure', 163 'font', 164 'footer', 165 'form', 166 'h1', 167 'h2', 168 'h3', 169 'h4', 170 'h5', 171 'h6', 172 'head', 173 'header', 174 'hgroup', 175 'hr', 176 'html', 177 'i', 178 'img', 179 'input', 180 'ins', 181 'kbd', 182 'label', 183 'legend', 184 'li', 185 'main', 186 'map', 187 'mark', 188 'marquee', 189 'menu', 190 'menuitem', 191 'meter', 192 'nav', 193 'nobr', 194 'ol', 195 'optgroup', 196 'option', 197 'output', 198 'p', 199 'picture', 200 'pre', 201 'progress', 202 'q', 203 'rp', 204 'rt', 205 'ruby', 206 's', 207 'samp', 208 'section', 209 'select', 210 'shadow', 211 'small', 212 'source', 213 'spacer', 214 'span', 215 'strike', 216 'strong', 217 'style', 218 'sub', 219 'summary', 220 'sup', 221 'table', 222 'tbody', 223 'td', 224 'template', 225 'textarea', 226 'tfoot', 227 'th', 228 'thead', 229 'time', 230 'tr', 231 'track', 232 'tt', 233 'u', 234 'ul', 235 'var', 236 'video', 237 'wbr', 238 ]), 239 D = i([ 240 'svg', 241 'a', 242 'altglyph', 243 'altglyphdef', 244 'altglyphitem', 245 'animatecolor', 246 'animatemotion', 247 'animatetransform', 248 'circle', 249 'clippath', 250 'defs', 251 'desc', 252 'ellipse', 253 'filter', 254 'font', 255 'g', 256 'glyph', 257 'glyphref', 258 'hkern', 259 'image', 260 'line', 261 'lineargradient', 262 'marker', 263 'mask', 264 'metadata', 265 'mpath', 266 'path', 267 'pattern', 268 'polygon', 269 'polyline', 270 'radialgradient', 271 'rect', 272 'stop', 273 'style', 274 'switch', 275 'symbol', 276 'text', 277 'textpath', 278 'title', 279 'tref', 280 'tspan', 281 'view', 282 'vkern', 283 ]), 284 v = i([ 285 'feBlend', 286 'feColorMatrix', 287 'feComponentTransfer', 288 'feComposite', 289 'feConvolveMatrix', 290 'feDiffuseLighting', 291 'feDisplacementMap', 292 'feDistantLight', 293 'feDropShadow', 294 'feFlood', 295 'feFuncA', 296 'feFuncB', 297 'feFuncG', 298 'feFuncR', 299 'feGaussianBlur', 300 'feImage', 301 'feMerge', 302 'feMergeNode', 303 'feMorphology', 304 'feOffset', 305 'fePointLight', 306 'feSpecularLighting', 307 'feSpotLight', 308 'feTile', 309 'feTurbulence', 310 ]), 311 O = i([ 312 'animate', 313 'color-profile', 314 'cursor', 315 'discard', 316 'font-face', 317 'font-face-format', 318 'font-face-name', 319 'font-face-src', 320 'font-face-uri', 321 'foreignobject', 322 'hatch', 323 'hatchpath', 324 'mesh', 325 'meshgradient', 326 'meshpatch', 327 'meshrow', 328 'missing-glyph', 329 'script', 330 'set', 331 'solidcolor', 332 'unknown', 333 'use', 334 ]), 335 x = i([ 336 'math', 337 'menclose', 338 'merror', 339 'mfenced', 340 'mfrac', 341 'mglyph', 342 'mi', 343 'mlabeledtr', 344 'mmultiscripts', 345 'mn', 346 'mo', 347 'mover', 348 'mpadded', 349 'mphantom', 350 'mroot', 351 'mrow', 352 'ms', 353 'mspace', 354 'msqrt', 355 'mstyle', 356 'msub', 357 'msup', 358 'msubsup', 359 'mtable', 360 'mtd', 361 'mtext', 362 'mtr', 363 'munder', 364 'munderover', 365 'mprescripts', 366 ]), 367 k = i([ 368 'maction', 369 'maligngroup', 370 'malignmark', 371 'mlongdiv', 372 'mscarries', 373 'mscarry', 374 'msgroup', 375 'mstack', 376 'msline', 377 'msrow', 378 'semantics', 379 'annotation', 380 'annotation-xml', 381 'mprescripts', 382 'none', 383 ]), 384 M = i(['#text']), 385 I = i([ 386 'accept', 387 'action', 388 'align', 389 'alt', 390 'autocapitalize', 391 'autocomplete', 392 'autopictureinpicture', 393 'autoplay', 394 'background', 395 'bgcolor', 396 'border', 397 'capture', 398 'cellpadding', 399 'cellspacing', 400 'checked', 401 'cite', 402 'class', 403 'clear', 404 'color', 405 'cols', 406 'colspan', 407 'controls', 408 'controlslist', 409 'coords', 410 'crossorigin', 411 'datetime', 412 'decoding', 413 'default', 414 'dir', 415 'disabled', 416 'disablepictureinpicture', 417 'disableremoteplayback', 418 'download', 419 'draggable', 420 'enctype', 421 'enterkeyhint', 422 'face', 423 'for', 424 'headers', 425 'height', 426 'hidden', 427 'high', 428 'href', 429 'hreflang', 430 'id', 431 'inputmode', 432 'integrity', 433 'ismap', 434 'kind', 435 'label', 436 'lang', 437 'list', 438 'loading', 439 'loop', 440 'low', 441 'max', 442 'maxlength', 443 'media', 444 'method', 445 'min', 446 'minlength', 447 'multiple', 448 'muted', 449 'name', 450 'nonce', 451 'noshade', 452 'novalidate', 453 'nowrap', 454 'open', 455 'optimum', 456 'pattern', 457 'placeholder', 458 'playsinline', 459 'popover', 460 'popovertarget', 461 'popovertargetaction', 462 'poster', 463 'preload', 464 'pubdate', 465 'radiogroup', 466 'readonly', 467 'rel', 468 'required', 469 'rev', 470 'reversed', 471 'role', 472 'rows', 473 'rowspan', 474 'spellcheck', 475 'scope', 476 'selected', 477 'shape', 478 'size', 479 'sizes', 480 'span', 481 'srclang', 482 'start', 483 'src', 484 'srcset', 485 'step', 486 'style', 487 'summary', 488 'tabindex', 489 'title', 490 'translate', 491 'type', 492 'usemap', 493 'valign', 494 'value', 495 'width', 496 'wrap', 497 'xmlns', 498 'slot', 499 ]), 500 U = i([ 501 'accent-height', 502 'accumulate', 503 'additive', 504 'alignment-baseline', 505 'ascent', 506 'attributename', 507 'attributetype', 508 'azimuth', 509 'basefrequency', 510 'baseline-shift', 511 'begin', 512 'bias', 513 'by', 514 'class', 515 'clip', 516 'clippathunits', 517 'clip-path', 518 'clip-rule', 519 'color', 520 'color-interpolation', 521 'color-interpolation-filters', 522 'color-profile', 523 'color-rendering', 524 'cx', 525 'cy', 526 'd', 527 'dx', 528 'dy', 529 'diffuseconstant', 530 'direction', 531 'display', 532 'divisor', 533 'dur', 534 'edgemode', 535 'elevation', 536 'end', 537 'fill', 538 'fill-opacity', 539 'fill-rule', 540 'filter', 541 'filterunits', 542 'flood-color', 543 'flood-opacity', 544 'font-family', 545 'font-size', 546 'font-size-adjust', 547 'font-stretch', 548 'font-style', 549 'font-variant', 550 'font-weight', 551 'fx', 552 'fy', 553 'g1', 554 'g2', 555 'glyph-name', 556 'glyphref', 557 'gradientunits', 558 'gradienttransform', 559 'height', 560 'href', 561 'id', 562 'image-rendering', 563 'in', 564 'in2', 565 'k', 566 'k1', 567 'k2', 568 'k3', 569 'k4', 570 'kerning', 571 'keypoints', 572 'keysplines', 573 'keytimes', 574 'lang', 575 'lengthadjust', 576 'letter-spacing', 577 'kernelmatrix', 578 'kernelunitlength', 579 'lighting-color', 580 'local', 581 'marker-end', 582 'marker-mid', 583 'marker-start', 584 'markerheight', 585 'markerunits', 586 'markerwidth', 587 'maskcontentunits', 588 'maskunits', 589 'max', 590 'mask', 591 'media', 592 'method', 593 'mode', 594 'min', 595 'name', 596 'numoctaves', 597 'offset', 598 'operator', 599 'opacity', 600 'order', 601 'orient', 602 'orientation', 603 'origin', 604 'overflow', 605 'paint-order', 606 'path', 607 'pathlength', 608 'patterncontentunits', 609 'patterntransform', 610 'patternunits', 611 'points', 612 'preservealpha', 613 'preserveaspectratio', 614 'primitiveunits', 615 'r', 616 'rx', 617 'ry',
618 'radius', 619 'refx', 620 'refy', 621 'repeatcount', 622 'repeatdur', 623 'restart', 624 'result', 625 'rotate', 626 'scale', 627 'seed', 628 'shape-rendering', 629 'specularconstant', 630 'specularexponent', 631 'spreadmethod', 632 'startoffset', 633 'stddeviation', 634 'stitchtiles', 635 'stop-color', 636 'stop-opacity', 637 'stroke-dasharray', 638 'stroke-dashoffset', 639 'stroke-linecap', 640 'stroke-linejoin', 641 'stroke-miterlimit', 642 'stroke-opacity', 643 'stroke', 644 'stroke-width', 645 'style', 646 'surfacescale', 647 'systemlanguage', 648 'tabindex', 649 'targetx', 650 'targety', 651 'transform', 652 'transform-origin', 653 'text-anchor', 654 'text-decoration', 655 'text-rendering', 656 'textlength', 657 'type', 658 'u1', 659 'u2', 660 'unicode', 661 'values', 662 'viewbox', 663 'visibility', 664 'version', 665 'vert-adv-y', 666 'vert-origin-x', 667 'vert-origin-y', 668 'width', 669 'word-spacing', 670 'wrap', 671 'writing-mode', 672 'xchannelselector', 673 'ychannelselector', 674 'x', 675 'x1', 676 'x2', 677 'xmlns', 678 'y', 679 'y1', 680 'y2', 681 'z', 682 'zoomandpan', 683 ]), 684 P = i([ 685 'accent', 686 'accentunder', 687 'align', 688 'bevelled', 689 'close', 690 'columnsalign', 691 'columnlines', 692 'columnspan', 693 'denomalign', 694 'depth', 695 'dir', 696 'display', 697 'displaystyle', 698 'encoding', 699 'fence', 700 'frame', 701 'height', 702 'href', 703 'id', 704 'largeop', 705 'length', 706 'linethickness', 707 'lspace', 708 'lquote', 709 'mathbackground', 710 'mathcolor', 711 'mathsize', 712 'mathvariant', 713 'maxsize', 714 'minsize', 715 'movablelimits', 716 'notation', 717 'numalign', 718 'open', 719 'rowalign', 720 'rowlines', 721 'rowspacing', 722 'rowspan', 723 'rspace', 724 'rquote', 725 'scriptlevel', 726 'scriptminsize', 727 'scriptsizemultiplier', 728 'selection', 729 'separator', 730 'separators', 731 'stretchy', 732 'subscriptshift', 733 'supscriptshift', 734 'symmetric', 735 'voffset', 736 'width', 737 'xmlns', 738 ]), 739 F = i([ 740 'xlink:href', 741 'xml:id', 742 'xlink:title', 743 'xml:space', 744 'xmlns:xlink', 745 ]), 746 H = a(/\{\{[\w\W]*|[\w\W]*\}\}/gm), 747 z = a(/<%[\w\W]*|[\w\W]*%>/gm), 748 B = a(/\${[\w\W]*}/gm), 749 W = a(/^data-[\-\w.\u00B7-\uFFFF]/), 750 G = a(/^aria-[\-\w]+$/), 751 Y = a(
752 /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i 753 ), 754 j = a(/^(?:\w+script|data):/i), 755 X = a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g), 756 q = a(/^html$/i), 757 $ = a(/^[a-z][.\w]*(-[.\w]+)+$/i); 758 var K = Object.freeze({ 759 __proto__: null, 760 MUSTACHE_EXPR: H, 761 ERB_EXPR: z, 762 TMPLIT_EXPR: B, 763 DATA_ATTR: W, 764 ARIA_ATTR: G, 765 IS_ALLOWED_URI: Y, 766 IS_SCRIPT_OR_DATA: j, 767 ATTR_WHITESPACE: X, 768 DOCTYPE_NAME: q, 769 CUSTOM_ELEMENT: $, 770 }); 771 const V = 1, 772 Z = 3, 773 J = 7, 774 Q = 8, 775 ee = 9, 776 te = function () { 777 return 'undefined' == typeof window ? null : window; 778 }; 779 var ne = (function t() { 780 let n = 781 arguments.length > 0 && void 0 !== arguments[0] 782 ? arguments[0] 783 : te(); 784 const o = (e) => t(e); 785 if ( 786 ((o.version = '3.1.6'), 787 (o.removed = []), 788 !n || !n.document || n.document.nodeType !== ee) 789 ) 790 return (o.isSupported = !1), o; 791 let { document: r } = n; 792 const a = r, 793 c = a.currentScript, 794 { 795 DocumentFragment: s, 796 HTMLTemplateElement: N, 797 Node: b, 798 Element: R, 799 NodeFilter: H, 800 NamedNodeMap: z = n.NamedNodeMap || n.MozNamedAttrMap, 801 HTMLFormElement: B, 802 DOMParser: W, 803 trustedTypes: G, 804 } = n, 805 j = R.prototype, 806 X = C(j, 'cloneNode'), 807 $ = C(j, 'remove'), 808 ne = C(j, 'nextSibling'), 809 oe = C(j, 'childNodes'), 810 re = C(j, 'parentNode'); 811 if ('function' == typeof N) { 812 const e = r.createElement('template'); 813 e.content && 814 e.content.ownerDocument && 815 (r = e.content.ownerDocument); 816 } 817 let ie, 818 ae = ''; 819 const { 820 implementation: le, 821 createNodeIterator: ce, 822 createDocumentFragment: se, 823 getElementsByTagName: ue, 824 } = r, 825 { importNode: me } = a; 826 let pe = {}; 827 o.isSupported = 828 'function' == typeof e && 829 'function' == typeof re && 830 le && 831 void 0 !== le.createHTMLDocument; 832 const { 833 MUSTACHE_EXPR: fe, 834 ERB_EXPR: de, 835 TMPLIT_EXPR: he, 836 DATA_ATTR: ge, 837 ARIA_ATTR: Te, 838 IS_SCRIPT_OR_DATA: ye, 839 ATTR_WHITESPACE: Ee, 840 CUSTOM_ELEMENT: _e, 841 } = K; 842 let { IS_ALLOWED_URI: Ae } = K, 843 Ne = null; 844 const be = S({}, [...L, ...D, ...v, ...x, ...M]); 845 let Se = null; 846 const Re = S({}, [...I, ...U, ...P, ...F]); 847 let we = Object.seal( 848 l(null, { 849 tagNameCheck: { 850 writable: !0, 851 configurable: !1, 852 enumerable: !0, 853 value: null, 854 }, 855 attributeNameCheck: { 856 writable: !0, 857 configurable: !1, 858 enumerable: !0, 859 value: null, 860 }, 861 allowCustomizedBuiltInElements: { 862 writable: !0, 863 configurable: !1, 864 enumerable: !0, 865 value: !1, 866 }, 867 }) 868 ), 869 Ce = null, 870 Le = null, 871 De = !0, 872 ve = !0, 873 Oe = !1, 874 xe = !0, 875 ke = !1, 876 Me = !0, 877 Ie = !1, 878 Ue = !1, 879 Pe = !1, 880 Fe = !1, 881 He = !1, 882 ze = !1, 883 Be = !0, 884 We = !1, 885 Ge = !0, 886 Ye = !1, 887 je = {}, 888 Xe = null; 889 const qe = S({}, [ 890 'annotation-xml', 891 'audio', 892 'colgroup', 893 'desc', 894 'foreignobject', 895 'head', 896 'iframe', 897 'math', 898 'mi', 899 'mn', 900 'mo', 901 'ms', 902 'mtext', 903 'noembed', 904 'noframes', 905 'noscript', 906 'plaintext', 907 'script', 908 'style', 909 'svg', 910 'template', 911 'thead', 912 'title', 913 'video', 914 'xmp', 915 ]); 916 let $e = null; 917 const Ke = S({}, ['audio', 'video', 'img', 'source', 'image', 'track']); 918 let Ve = null; 919 const Ze = S({}, [ 920 'alt', 921 'class', 922 'for', 923 'id', 924 'label', 925 'name', 926 'pattern', 927 'placeholder', 928 'role', 929 'summary', 930 'title', 931 'value', 932 'style', 933 'xmlns', 934 ]), 935 Je = 'http://www.w3.org/1998/Math/MathML', 936 Qe = 'http://www.w3.org/2000/svg', 937 et = 'http://www.w3.org/1999/xhtml'; 938 let tt = et, 939 nt = !1, 940 ot = null; 941 const rt = S({}, [Je, Qe, et], d); 942 let it = null; 943 const at = ['application/xhtml+xml', 'text/html']; 944 let lt = null, 945 ct = null; 946 const st = r.createElement('form'), 947 ut = function (e) { 948 return e instanceof RegExp || e instanceof Function; 949 }, 950 mt = function () { 951 let e = 952 arguments.length > 0 && void 0 !== arguments[0] 953 ? arguments[0] 954 : {}; 955 if (!ct || ct !== e) { 956 if ( 957 ((e && 'object' == typeof e) || (e = {}), 958 (e = w(e)), 959 (it =
960 -1 === at.indexOf(e.PARSER_MEDIA_TYPE) 961 ? 'text/html' 962 : e.PARSER_MEDIA_TYPE), 963 (lt = 'application/xhtml+xml' === it ? d : f), 964 (Ne = E(e, 'ALLOWED_TAGS') 965 ? S({}, e.ALLOWED_TAGS, lt) 966 : be), 967 (Se = E(e, 'ALLOWED_ATTR') 968 ? S({}, e.ALLOWED_ATTR, lt) 969 : Re), 970 (ot = E(e, 'ALLOWED_NAMESPACES') 971 ? S({}, e.ALLOWED_NAMESPACES, d) 972 : rt), 973 (Ve = E(e, 'ADD_URI_SAFE_ATTR') 974 ? S(w(Ze), e.ADD_URI_SAFE_ATTR, lt) 975 : Ze), 976 ($e = E(e, 'ADD_DATA_URI_TAGS') 977 ? S(w(Ke), e.ADD_DATA_URI_TAGS, lt) 978 : Ke), 979 (Xe = E(e, 'FORBID_CONTENTS') 980 ? S({}, e.FORBID_CONTENTS, lt) 981 : qe), 982 (Ce = E(e, 'FORBID_TAGS') 983 ? S({}, e.FORBID_TAGS, lt) 984 : {}), 985 (Le = E(e, 'FORBID_ATTR') 986 ? S({}, e.FORBID_ATTR, lt) 987 : {}), 988 (je = !!E(e, 'USE_PROFILES') && e.USE_PROFILES), 989 (De = !1 !== e.ALLOW_ARIA_ATTR), 990 (ve = !1 !== e.ALLOW_DATA_ATTR), 991 (Oe = e.ALLOW_UNKNOWN_PROTOCOLS || !1), 992 (xe = !1 !== e.ALLOW_SELF_CLOSE_IN_ATTR), 993 (ke = e.SAFE_FOR_TEMPLATES || !1), 994 (Me = !1 !== e.SAFE_FOR_XML), 995 (Ie = e.WHOLE_DOCUMENT || !1), 996 (Fe = e.RETURN_DOM || !1), 997 (He = e.RETURN_DOM_FRAGMENT || !1), 998 (ze = e.RETURN_TRUSTED_TYPE || !1), 999 (Pe = e.FORCE_BODY || !1), 1000 (Be = !1 !== e.SANITIZE_DOM), 1001 (We = e.SANITIZE_NAMED_PROPS || !1), 1002 (Ge = !1 !== e.KEEP_CONTENT), 1003 (Ye = e.IN_PLACE || !1), 1004 (Ae = e.ALLOWED_URI_REGEXP || Y), 1005 (tt = e.NAMESPACE || et), 1006 (we = e.CUSTOM_ELEMENT_HANDLING || {}), 1007 e.CUSTOM_ELEMENT_HANDLING && 1008 ut(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck) && 1009 (we.tagNameCheck = 1010 e.CUSTOM_ELEMENT_HANDLING.tagNameCheck), 1011 e.CUSTOM_ELEMENT_HANDLING && 1012 ut(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) && 1013 (we.attributeNameCheck = 1014 e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck), 1015 e.CUSTOM_ELEMENT_HANDLING && 1016 'boolean' == 1017 typeof e.CUSTOM_ELEMENT_HANDLING 1018 .allowCustomizedBuiltInElements && 1019 (we.allowCustomizedBuiltInElements = 1020 e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements), 1021 ke && (ve = !1), 1022 He && (Fe = !0), 1023 je && 1024 ((Ne = S({}, M)), 1025 (Se = []), 1026 !0 === je.html && (S(Ne, L), S(Se, I)), 1027 !0 === je.svg && (S(Ne, D), S(Se, U), S(Se, F)), 1028 !0 === je.svgFilters && 1029 (S(Ne, v), S(Se, U), S(Se, F)), 1030 !0 === je.mathMl && (S(Ne, x), S(Se, P), S(Se, F))), 1031 e.ADD_TAGS && 1032 (Ne === be && (Ne = w(Ne)), S(Ne, e.ADD_TAGS, lt)), 1033 e.ADD_ATTR && 1034 (Se === Re && (Se = w(Se)), S(Se, e.ADD_ATTR, lt)), 1035 e.ADD_URI_SAFE_ATTR && S(Ve, e.ADD_URI_SAFE_ATTR, lt), 1036 e.FORBID_CONTENTS && 1037 (Xe === qe && (Xe = w(Xe)), 1038 S(Xe, e.FORBID_CONTENTS, lt)), 1039 Ge && (Ne['#text'] = !0), 1040 Ie && S(Ne, ['html', 'head', 'body']), 1041 Ne.table && (S(Ne, ['tbody']), delete Ce.tbody), 1042 e.TRUSTED_TYPES_POLICY) 1043 ) { 1044 if ( 1045 'function' != 1046 typeof e.TRUSTED_TYPES_POLICY.createHTML 1047 ) 1048 throw A( 1049 'TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.' 1050 ); 1051 if ( 1052 'function' != 1053 typeof e.TRUSTED_TYPES_POLICY.createScriptURL 1054 ) 1055 throw A( 1056 'TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.' 1057 ); 1058 (ie = e.TRUSTED_TYPES_POLICY), (ae = ie.createHTML('')); 1059 } else 1060 void 0 === ie && 1061 (ie = (function (e, t) { 1062 if ( 1063 'object' != typeof e || 1064 'function' != typeof e.createPolicy 1065 ) 1066 return null; 1067 let n = null; 1068 const o = 'data-tt-policy-suffix'; 1069 t && 1070 t.hasAttribute(o) && 1071 (n = t.getAttribute(o)); 1072 const r = 'dompurify' + (n ? '#' + n : ''); 1073 try { 1074 return e.createPolicy(r, { 1075 createHTML: (e) => e, 1076 createScriptURL: (e) => e, 1077 }); 1078 } catch (e) { 1079 return ( 1080 console.warn( 1081 'TrustedTypes policy ' + 1082 r + 1083 ' could not be created.' 1084 ), 1085 null 1086 ); 1087 } 1088 })(G, c)), 1089 null !== ie && 1090 'string' == typeof ae && 1091 (ae = ie.createHTML('')); 1092 i && i(e), (ct = e); 1093 } 1094 }, 1095 pt = S({}, ['mi', 'mo', 'mn', 'ms', 'mtext']), 1096 ft = S({}, ['foreignobject', 'annotation-xml']), 1097 dt = S({}, ['title', 'style', 'font', 'a', 'script']), 1098 ht = S({}, [...D, ...v, ...O]), 1099 gt = S({}, [...x, ...k]), 1100 Tt = function (e) { 1101 p(o.removed, { element: e });
1102 try { 1103 re(e).removeChild(e); 1104 } catch (t) { 1105 $(e); 1106 } 1107 }, 1108 yt = function (e, t) { 1109 try { 1110 p(o.removed, { attribute: t.getAttributeNode(e), from: t }); 1111 } catch (e) { 1112 p(o.removed, { attribute: null, from: t }); 1113 } 1114 if ((t.removeAttribute(e), 'is' === e && !Se[e])) 1115 if (Fe || He) 1116 try { 1117 Tt(t); 1118 } catch (e) {} 1119 else 1120 try { 1121 t.setAttribute(e, ''); 1122 } catch (e) {} 1123 }, 1124 Et = function (e) { 1125 let t = null, 1126 n = null; 1127 if (Pe) e = '<remove></remove>' + e; 1128 else { 1129 const t = h(e, /^[\r\n\t ]+/); 1130 n = t && t[0]; 1131 } 1132 'application/xhtml+xml' === it && 1133 tt === et && 1134 (e = 1135 '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + 1136 e + 1137 '</body></html>'); 1138 const o = ie ? ie.createHTML(e) : e; 1139 if (tt === et) 1140 try { 1141 t = new W().parseFromString(o, it); 1142 } catch (e) {} 1143 if (!t || !t.documentElement) { 1144 t = le.createDocument(tt, 'template', null); 1145 try { 1146 t.documentElement.innerHTML = nt ? ae : o; 1147 } catch (e) {} 1148 } 1149 const i = t.body || t.documentElement; 1150 return ( 1151 e && 1152 n && 1153 i.insertBefore( 1154 r.createTextNode(n), 1155 i.childNodes[0] || null 1156 ), 1157 tt === et 1158 ? ue.call(t, Ie ? 'html' : 'body')[0] 1159 : Ie 1160 ? t.documentElement 1161 : i 1162 ); 1163 }, 1164 _t = function (e) { 1165 return ce.call( 1166 e.ownerDocument || e, 1167 e, 1168 H.SHOW_ELEMENT | 1169 H.SHOW_COMMENT | 1170 H.SHOW_TEXT | 1171 H.SHOW_PROCESSING_INSTRUCTION | 1172 H.SHOW_CDATA_SECTION, 1173 null 1174 ); 1175 }, 1176 At = function (e) { 1177 return ( 1178 e instanceof B && 1179 ('string' != typeof e.nodeName || 1180 'string' != typeof e.textContent || 1181 'function' != typeof e.removeChild || 1182 !(e.attributes instanceof z) || 1183 'function' != typeof e.removeAttribute || 1184 'function' != typeof e.setAttribute || 1185 'string' != typeof e.namespaceURI || 1186 'function' != typeof e.insertBefore || 1187 'function' != typeof e.hasChildNodes) 1188 ); 1189 }, 1190 Nt = function (e) { 1191 return 'function' == typeof b && e instanceof b; 1192 }, 1193 bt = function (e, t, n) { 1194 pe[e] && 1195 u(pe[e], (e) => { 1196 e.call(o, t, n, ct); 1197 }); 1198 }, 1199 St = function (e) { 1200 let t = null; 1201 if ((bt('beforeSanitizeElements', e, null), At(e))) 1202 return Tt(e), !0; 1203 const n = lt(e.nodeName); 1204 if ( 1205 (bt('uponSanitizeElement', e, { 1206 tagName: n, 1207 allowedTags: Ne, 1208 }), 1209 e.hasChildNodes() && 1210 !Nt(e.firstElementChild) && 1211 _(/<[/\w]/g, e.innerHTML) && 1212 _(/<[/\w]/g, e.textContent)) 1213 ) 1214 return Tt(e), !0; 1215 if (e.nodeType === J) return Tt(e), !0; 1216 if (Me && e.nodeType === Q && _(/<[/\w]/g, e.data)) 1217 return Tt(e), !0; 1218 if (!Ne[n] || Ce[n]) { 1219 if (!Ce[n] && wt(n)) { 1220 if ( 1221 we.tagNameCheck instanceof RegExp && 1222 _(we.tagNameCheck, n) 1223 ) 1224 return !1; 1225 if ( 1226 we.tagNameCheck instanceof Function && 1227 we.tagNameCheck(n) 1228 ) 1229 return !1; 1230 } 1231 if (Ge && !Xe[n]) { 1232 const t = re(e) || e.parentNode, 1233 n = oe(e) || e.childNodes; 1234 if (n && t) { 1235 for (let o = n.length - 1; o >= 0; --o) { 1236 const r = X(n[o], !0); 1237 (r.__removalCount = 1238 (e.__removalCount || 0) + 1), 1239 t.insertBefore(r, ne(e)); 1240 } 1241 } 1242 } 1243 return Tt(e), !0; 1244 } 1245 return e instanceof R && 1246 !(function (e) { 1247 let t = re(e); 1248 (t && t.tagName) || 1249 (t = { namespaceURI: tt, tagName: 'template' }); 1250 const n = f(e.tagName), 1251 o = f(t.tagName); 1252 return ( 1253 !!ot[e.namespaceURI] && 1254 (e.namespaceURI === Qe 1255 ? t.namespaceURI === et 1256 ? 'svg' === n 1257 : t.namespaceURI === Je 1258 ? 'svg' === n && 1259 ('annotation-xml' === o || pt[o]) 1260 : Boolean(ht[n]) 1261 : e.namespaceURI === Je 1262 ? t.namespaceURI === et 1263 ? 'math' === n 1264 : t.namespaceURI === Qe 1265 ? 'math' === n && ft[o] 1266 : Boolean(gt[n]) 1267 : e.namespaceURI === et 1268 ? !(t.namespaceURI === Qe && !ft[o]) && 1269 !( 1270 t.namespaceURI === Je && !pt[o] 1271 ) && 1272 !gt[n] && 1273 (dt[n] || !ht[n]) 1274 : !( 1275 'application/xhtml+xml' !== 1276 it || !ot[e.namespaceURI] 1277 )) 1278 ); 1279 })(e) 1280 ? (Tt(e), !0) 1281 : ('noscript' !== n && 1282 'noembed' !== n && 1283 'noframes' !== n) || 1284 !_(/<\/no(script|embed|frames)/i, e.innerHTML) 1285 ? (ke && 1286 e.nodeType === Z && 1287 ((t = e.textContent), 1288 u([fe, de, he], (e) => { 1289 t = g(t, e, ' '); 1290 }), 1291 e.textContent !== t && 1292 (p(o.removed, { element: e.cloneNode() }), 1293 (e.textContent = t))), 1294 bt('afterSanitizeElements', e, null), 1295 !1) 1296 : (Tt(e), !0); 1297 }, 1298 Rt = function (e, t, n) { 1299 if (Be && ('id' === t || 'name' === t) && (n in r || n in st)) 1300 return !1; 1301 if (ve && !Le[t] && _(ge, t)); 1302 else if (De && _(Te, t)); 1303 else if (!Se[t] || Le[t]) { 1304 if ( 1305 !( 1306 (wt(e) && 1307 ((we.tagNameCheck instanceof RegExp && 1308 _(we.tagNameCheck, e)) || 1309 (we.tagNameCheck instanceof Function && 1310 we.tagNameCheck(e))) && 1311 ((we.attributeNameCheck instanceof RegExp && 1312 _(we.attributeNameCheck, t)) || 1313 (we.attributeNameCheck instanceof 1314 Function && 1315 we.attributeNameCheck(t)))) || 1316 ('is' === t && 1317 we.allowCustomizedBuiltInElements && 1318 ((we.tagNameCheck instanceof RegExp && 1319 _(we.tagNameCheck, n)) || 1320 (we.tagNameCheck instanceof Function && 1321 we.tagNameCheck(n)))) 1322 ) 1323 ) 1324 return !1; 1325 } else if (Ve[t]); 1326 else if (_(Ae, g(n, Ee, ''))); 1327 else if ( 1328 ('src' !== t && 'xlink:href' !== t && 'href' !== t) || 1329 'script' === e || 1330 0 !== T(n, 'data:') || 1331 !$e[e] 1332 ) { 1333 if (Oe && !_(ye, g(n, Ee, ''))); 1334 else if (n) return !1; 1335 } else; 1336 return !0; 1337 }, 1338 wt = function (e) { 1339 return 'annotation-xml' !== e && h(e, _e); 1340 }, 1341 Ct = function (e) { 1342 bt('beforeSanitizeAttributes', e, null); 1343 const { attributes: t } = e; 1344 if (!t) return; 1345 const n = { 1346 attrName: '', 1347 attrValue: '', 1348 keepAttr: !0, 1349 allowedAttributes: Se, 1350 }; 1351 let r = t.length; 1352 for (; r--; ) { 1353 const i = t[r], 1354 { name: a, namespaceURI: l, value: c } = i, 1355 s = lt(a); 1356 let p = 'value' === a ? c : y(c); 1357 if ( 1358 ((n.attrName = s), 1359 (n.attrValue = p), 1360 (n.keepAttr = !0), 1361 (n.forceKeepAttr = void 0), 1362 bt('uponSanitizeAttribute', e, n), 1363 (p = n.attrValue), 1364 Me && _(/((--!?|])>)|<\/(style|title)/i, p)) 1365 ) { 1366 yt(a, e); 1367 continue; 1368 } 1369 if (n.forceKeepAttr) continue;
1370 if ((yt(a, e), !n.keepAttr)) continue; 1371 if (!xe && _(/\/>/i, p)) { 1372 yt(a, e); 1373 continue; 1374 } 1375 ke && 1376 u([fe, de, he], (e) => { 1377 p = g(p, e, ' '); 1378 }); 1379 const f = lt(e.nodeName); 1380 if (Rt(f, s, p)) { 1381 if ( 1382 (!We || 1383 ('id' !== s && 'name' !== s) || 1384 (yt(a, e), (p = 'user-content-' + p)), 1385 ie && 1386 'object' == typeof G && 1387 'function' == typeof G.getAttributeType) 1388 ) 1389 if (l); 1390 else 1391 switch (G.getAttributeType(f, s)) { 1392 case 'TrustedHTML': 1393 p = ie.createHTML(p); 1394 break; 1395 case 'TrustedScriptURL': 1396 p = ie.createScriptURL(p); 1397 } 1398 try { 1399 l 1400 ? e.setAttributeNS(l, a, p) 1401 : e.setAttribute(a, p), 1402 At(e) ? Tt(e) : m(o.removed); 1403 } catch (e) {} 1404 } 1405 } 1406 bt('afterSanitizeAttributes', e, null); 1407 }, 1408 Lt = function e(t) { 1409 let n = null; 1410 const o = _t(t); 1411 for ( 1412 bt('beforeSanitizeShadowDOM', t, null); 1413 (n = o.nextNode()); 1414 1415 ) 1416 bt('uponSanitizeShadowNode', n, null), 1417 St(n) || 1418 (n.content instanceof s && e(n.content), Ct(n)); 1419 bt('afterSanitizeShadowDOM', t, null); 1420 }; 1421 return ( 1422 (o.sanitize = function (e) { 1423 let t = 1424 arguments.length > 1 && void 0 !== arguments[1] 1425 ? arguments[1] 1426 : {}, 1427 n = null, 1428 r = null, 1429 i = null, 1430 l = null; 1431 if ( 1432 ((nt = !e), 1433 nt && (e = '\x3c!--\x3e'), 1434 'string' != typeof e && !Nt(e)) 1435 ) { 1436 if ('function' != typeof e.toString) 1437 throw A('toString is not a function'); 1438 if ('string' != typeof (e = e.toString())) 1439 throw A('dirty is not a string, aborting'); 1440 } 1441 if (!o.isSupported) return e; 1442 if ( 1443 (Ue || mt(t), 1444 (o.removed = []), 1445 'string' == typeof e && (Ye = !1), 1446 Ye) 1447 ) { 1448 if (e.nodeName) { 1449 const t = lt(e.nodeName); 1450 if (!Ne[t] || Ce[t]) 1451 throw A( 1452 'root node is forbidden and cannot be sanitized in-place' 1453 ); 1454 } 1455 } else if (e instanceof b) 1456 (n = Et('\x3c!----\x3e')), 1457 (r = n.ownerDocument.importNode(e, !0)), 1458 (r.nodeType === V && 'BODY' === r.nodeName) || 1459 'HTML' === r.nodeName 1460 ? (n = r) 1461 : n.appendChild(r); 1462 else { 1463 if (!Fe && !ke && !Ie && -1 === e.indexOf('<')) 1464 return ie && ze ? ie.createHTML(e) : e; 1465 if (((n = Et(e)), !n)) return Fe ? null : ze ? ae : ''; 1466 } 1467 n && Pe && Tt(n.firstChild); 1468 const c = _t(Ye ? e : n); 1469 for (; (i = c.nextNode()); ) 1470 St(i) || (i.content instanceof s && Lt(i.content), Ct(i)); 1471 if (Ye) return e; 1472 if (Fe) { 1473 if (He) 1474 for (l = se.call(n.ownerDocument); n.firstChild; ) 1475 l.appendChild(n.firstChild); 1476 else l = n; 1477 return ( 1478 (Se.shadowroot || Se.shadowrootmode) && 1479 (l = me.call(a, l, !0)), 1480 l 1481 ); 1482 } 1483 let m = Ie ? n.outerHTML : n.innerHTML; 1484 return ( 1485 Ie && 1486 Ne['!doctype'] && 1487 n.ownerDocument && 1488 n.ownerDocument.doctype && 1489 n.ownerDocument.doctype.name && 1490 _(q, n.ownerDocument.doctype.name) && 1491 (m = 1492 '<!DOCTYPE ' + 1493 n.ownerDocument.doctype.name + 1494 '>\n' + 1495 m), 1496 ke && 1497 u([fe, de, he], (e) => { 1498 m = g(m, e, ' '); 1499 }), 1500 ie && ze ? ie.createHTML(m) : m 1501 ); 1502 }), 1503 (o.setConfig = function () { 1504 mt( 1505 arguments.length > 0 && void 0 !== arguments[0] 1506 ? arguments[0] 1507 : {} 1508 ), 1509 (Ue = !0); 1510 }), 1511 (o.clearConfig = function () { 1512 (ct = null), (Ue = !1); 1513 }), 1514 (o.isValidAttribute = function (e, t, n) { 1515 ct || mt({}); 1516 const o = lt(e), 1517 r = lt(t); 1518 return Rt(o, r, n); 1519 }), 1520 (o.addHook = function (e, t) { 1521 'function' == typeof t && ((pe[e] = pe[e] || []), p(pe[e], t)); 1522 }), 1523 (o.removeHook = function (e) { 1524 if (pe[e]) return m(pe[e]); 1525 }), 1526 (o.removeHooks = function (e) { 1527 pe[e] && (pe[e] = []); 1528 }), 1529 (o.removeAllHooks = function () { 1530 pe = {}; 1531 }), 1532 o 1533 ); 1534 })(); 1535 return ne; 1536}); 1537//# sourceMappingURL=purify.min.js.map 1538/** 1539 * Copyright: Codetipi 1540 */ 1541/* global jQuery, zeenJS, IntersectionObserver, imagesLoaded, gsap, Power2, Cookies, Linear, Power0, ga, _gaq, zenscroll, FB, DISQUS */ 1542(function ($) { 1543 'use strict'; 1544 var zeenPrv = { 1545 initMethods: function () { 1546 this.dom(); 1547 this.data(); 1548 this.bind(); 1549 this.anis(); 1550 this.sticky(); 1551 this.sliderInit(); 1552 this.lightboxInit(); 1553 this.sidebars(); 1554 this.infScr(); 1555 this.fillRunner(); 1556 this.mobileMenuClass(); 1557 this.header(); 1558 this.topBlock(); 1559 this.anchorTouch(); 1560 this.parallax3s(); 1561 this.parallaxIt(); 1562 this.maskLoader(); 1563 this.hero31(); 1564 this.ipl(); 1565 this.imgControl(); 1566 this.progressPosition(); 1567 this.postTracks(); 1568 this.foldMid(); 1569 this.modalCheck(); 1570 this.footerReveal(); 1571 this.topBarMsg(); 1572 this.videoWrap(); 1573 this.videoBg(); 1574 this.stickyCheck(); 1575 this.stickyEl(); 1576 this.hovererBlock(); 1577 this.videosBlock(); 1578 this.metaLocation34(); 1579 this.twitchLoad(); 1580 }, 1581 init: function () { 1582 if ( 1583 'IntersectionObserver' in window && 1584 'IntersectionObserverEntry' in window && 1585 'intersectionRatio' in 1586 window.IntersectionObserverEntry.prototype 1587 ) { 1588 this.initMethods(); 1589 } else { 1590 this.loadScript(zeenJS.args.polyfill); 1591 } 1592 }, 1593 dom: function () { 1594 this.$win = $(window); 1595 this.$doc = $(document); 1596 this.$body = $('body'); 1597 this.$page = $('#page'); 1598 this.$rtl = this.$body.hasClass('rtl'); 1599 this.$content = $('#content'); 1600 this.$contentWrap = $('#contents-wrap'); 1601 this.$hovererBlock = this.$contentWrap 1602 .find('> .block-wrap-hoverer') 1603 .add( 1604 this.$contentWrap.find( 1605 '> .block-wrap-110 .block-wrap-hoverer' 1606 ) 1607 ); 1608 this.$videosBlock = this.$contentWrap 1609 .find('> .block-wrap-video-player') 1610 .add( 1611 this.$contentWrap.find( 1612 '> .block-wrap-110 .block-wrap-video-player' 1613 ) 1614 ); 1615 this.$metaLocation34 = this.$contentWrap 1616 .find('> .block-wrap > div > div > .meta-overlay-excerpt') 1617 .add( 1618 this.$contentWrap.find( 1619 '> .block-wrap-110 .meta-overlay-excerpt' 1620 ) 1621 ); 1622 this.$timedPup = $('#timed-pup'); 1623 this.$modal = $('#modal'); 1624 this.$baseOverlay = $('#tipi-overlay'); 1625 this.$skinMode = $('.mode__wrap'); 1626 this.$modalCustom = this.$modal.find('.content-custom'); 1627 this.$modalSearch = this.$modal.find('.content-search'); 1628 this.$modalSearchField = this.$modalSearch.find('.search-field'); 1629 this.$modalSearchFound = this.$modalSearch.find('.content-found'); 1630 this.$dropSearch = $('.drop-search'); 1631 this.$dropSearchFound = this.$dropSearch.find('.content-found'); 1632 this.$dropSearchField = this.$dropSearch.find('.search-field'); 1633 this.$searchResults = $('.search-all-results'); 1634 this.resizing = false;
1635 this.$stickyOff = true; 1636 this.$header = $('#masthead'); 1637 this.$trendingSecondary = $('#trending-secondary'); 1638 this.$siteNav = $('#site-navigation'); 1639 this.$secondaryWrap = $('#secondary-wrap'); 1640 this.$stickyP2Share = $('#sticky-p2-share'); 1641 this.$stickyP2 = $('#sticky-p2'); 1642 this.$dropper = this.$siteNav 1643 .find('.horizontal-menu > .dropper') 1644 .add(this.$secondaryWrap.find('.horizontal-menu > .dropper')) 1645 .add(this.$header.find('.horizontal-menu > .dropper')); 1646 this.$dropperChild = this.$dropper.find('.block-mm-changer'); 1647 this.$toolTip = $('.tipi-tip'); 1648 this.$toolTipOutput = ''; 1649 this.$toolTipCurrent = ''; 1650 this.headerOne = this.$header.hasClass('main-menu-inline'); 1651 this.$wpAdminBar = $('#wpadminbar'); 1652 this.$primary = $('#primary'); 1653 this.$verticalMenu = $('#site-header-side-70s'); 1654 this.$entryContentWrap = this.$primary.find('.entry-content-wrap'); 1655 this.$entryContent = this.$primary.find('.entry-content'); 1656 this.$parentAnimation = this.$primary.find( 1657 '.parent-animation:not(.loaded)' 1658 ); 1659 this.$toTopWrap = $('#to-top-wrap'); 1660 this.$toTopA = $('#to-top-a'); 1661 this.$progress = $('#progress'); 1662 this.$mobBotShare = $('#mob-bot-share'); 1663 this.$iplTitle = $('#sticky-title'); 1664 this.$slideIn = $('#slide-in-box'); 1665 this.$slideInX = this.$slideIn.find('> .tipi-closer'); 1666 this.$slideForm = this.$slideIn.find('form'); 1667 this.slideInScene = ''; 1668 this.mobMenuClearTO = ''; 1669 this.resizeTo = ''; 1670 this.pubTimer = ''; 1671 this.detectDark = 1672 zeenJS.args.browserMode && 1673 window.matchMedia && 1674 window.matchMedia('(prefers-color-scheme: dark)').matches; 1675 this.ticking = false; 1676 this.tickingLb = false; 1677 this.lastScrollY = 0; 1678 this.$sorter = $('.sorter'); 1679 this.$topBarMsg = $('#top-bar-message'); 1680 this.$topBlock = $('#zeen-top-block'); 1681 this.imgAni = document.getElementsByClassName('article-ani'); 1682 this.$footer = $('#colophon'); 1683 this.$footerBgArea = this.$footer.find('.bg-area'); 1684 this.stickyVertical = false;
1685 this.$stickyMenu = $('.sticky-menu'); 1686 this.$hero31 = $('.hero-31 > .hero'); 1687 this.infST = []; 1688 this.paraSaved = []; 1689 this.stickies = []; 1690 this.sbsSaved = []; 1691 this.ro = false; 1692 this.roS = false; 1693 this.roP = false; 1694 this.progressScene = ''; 1695 this.nonce = zeenJS.nonce; 1696 this.$main = $('#main'); 1697 this.ignoreCodes = [ 1698 9, 13, 16, 17, 18, 20, 32, 45, 116, 224, 93, 91, 1699 ]; 1700 this.timer = 0; 1701 this.headerIsSticky = false; 1702 this.$slideInMenu = $('#slide-in-menu'); 1703 this.$slideMenuOpen = $('.slide-menu-tr-open'); 1704 this.$mobMenuOpen = $('.mob-tr-open'); 1705 this.$mobMenuClose = $('.mob-tr-close'); 1706 this.$mobHead = $('#mobhead'); 1707 this.$mobMenu = this.$mobHead 1708 .find('.mobile-navigation') 1709 .add($('#mob-menu-wrap').find('.mobile-navigation')); 1710 this.$mobMenuChildren = this.$mobMenu.find( 1711 '.menu-item-has-children' 1712 ); 1713 this.thePaged = zeenJS.qry.paged || 1; 1714 this.audio = new Audio(); 1715 this.video = document.createElement('video'); 1716 this.ajaxCall = ''; 1717 this.ajaxData = {}; 1718 this.wooArchive = ''; 1719 this.wooActive = this.$body.hasClass('woo--active'); 1720 this.wooGridM = $('#woo-grid-m'); 1721 this.wooGridS = $('#woo-grid-s'); 1722 this.$products = ''; 1723 this.headAreaHeight = 0; 1724 this.activeFocusTarget = ''; 1725 }, 1726 verticalMenus: function () { 1727 if (this.$verticalMenu.length === 0) { 1728 return; 1729 } 1730 this.$verticalMenu.addClass('v-70-vis'); 1731 }, 1732 data: function () { 1733 this.$docHeight = this.$doc.height(); 1734 this.$winWidth = this.$win.width(); 1735 this.$winHeight = this.$win.height() + 1; 1736 this.$headerHeight = this.$header.outerHeight(true); 1737 this.$wpAdminBarHeight = 0; 1738 this.$wpAdminBarHeightNeg = 0; 1739 if ( 1740 this.$body.hasClass('admin-bar') && 1741 !this.$body.hasClass('tipi-builder-frame-inner') 1742 ) { 1743 this.$wpAdminBarHeight = this.$winWidth > 783 ? 32 : 46; 1744 this.$wpAdminBarHeightNeg = this.$wpAdminBarHeight * -1; 1745 } 1746 1747 this.mmAni = 0; 1748 if (this.$body.hasClass('mm-ani-3')) { 1749 this.mmAni = 3; 1750 } 1751 1752 if (zeenPrv.$winWidth < 767) { 1753 this.headAreaHeight = this.$mobHead.outerHeight(); 1754 } else { 1755 if ( 1756 this.$header.hasClass('sticky-menu-1') || 1757 this.$header.hasClass('sticky-menu-3') 1758 ) { 1759 this.headerIsSticky = true; 1760 this.headAreaHeight = this.$headerHeight; 1761 } 1762 1763 if ( 1764 this.$siteNav.hasClass('sticky-menu-1') || 1765 this.$siteNav.hasClass('sticky-menu-3') 1766 ) { 1767 this.headerIsSticky = false; 1768 this.headAreaHeight = this.$siteNav.outerHeight(); 1769 } 1770 } 1771 1772 var passiveSupported = false; 1773 try { 1774 var options = Object.defineProperty({}, 'passive', { 1775 get: function () { 1776 passiveSupported = true; 1777 }, 1778 }); 1779 window.addEventListener('zeen', options, options); 1780 window.removeEventListener('zeen', options, options); 1781 } catch (err) { 1782 passiveSupported = false; 1783 } 1784 this.$listener = passiveSupported ? { passive: true } : false; 1785 }, 1786 bind: function () { 1787 this.$win.on('resize', this.resize.bind(this)); 1788 this.$win.on( 1789 'orientationchange', 1790 this.orientationchange.bind(this) 1791 ); 1792 this.$toTopA.on('click', this.toTopInit); 1793 this.$doc.on('keyup', this.keyUp.bind(this)); 1794 this.$body.on('click', '.block-more', this.blockMore); 1795 this.$body.on('click', '.inf-load-more', this.loadMoreButton); 1796 this.$body.on('click', '.media-tr, .modal-tr', this.modalOn); 1797 this.$body.on('click', '.close, .tipi-overlay', this.modalOff); 1798 this.$body.on('click', '.collapsible__title', this.collapsible); 1799 this.$body.on('click', '.trending-op', this.trending); 1800 this.$body.on('click', '.tipi-like-count', this.likes); 1801 if (this.$body.hasClass('body--mobile--limit')) { 1802 this.$body.on('click', '.mobile--limiter', this.mobLimiter); 1803 } 1804 if (this.$body.hasClass('single')) { 1805 this.$body.on( 1806 'click', 1807 '.zeen-comments-count', 1808 this.commentScroll 1809 ); 1810 } 1811 if (this.$modalSearchFound.length > 0) { 1812 this.$modalSearchField.on('keyup', this.liveSearch); 1813 } 1814 if (this.$skinMode.length > 0) { 1815 this.$skinMode.on('click', this.skinMode); 1816 if ( 1817 (parseInt(Cookies.get('wp_alt_mode')) === 1 || 1818 this.detectDark) && 1819 !this.$body.hasClass('body--dark--tr') 1820 ) { 1821 this.skinMode(); 1822 } 1823 } 1824 if (this.$dropSearchFound.length > 0) { 1825 this.$dropSearchField.on('keyup', function (event) { 1826 var wrapper = $(this).parent().parent(); 1827 var args = { 1828 field: $(this), 1829 wrapper: wrapper, 1830 ppp: 2, 1831 results: wrapper.find('.content-found'), 1832 }; 1833 zeenPrv.liveSearch(event, args); 1834 }); 1835 } 1836 if ( 1837 this.$dropSearchFound.length > 0 || 1838 this.$modalSearchFound.length 1839 ) { 1840 this.$searchResults.on('click', this.liveSearchTr); 1841 } 1842 1843 this.$siteNav 1844 .find('.horizontal-menu') 1845 .add(this.$secondaryWrap.find('.horizontal-menu')) 1846 .add(this.$header.find('.horizontal-menu')) 1847 .menuAim({ 1848 activateCallback: zeenPrv.menuAc, 1849 deactivateCallback: zeenPrv.menuDeac, 1850 submenuDirection: 'below', 1851 openClassName: 'active', 1852 tolerance: 0, 1853 exitMenuCallback: zeenPrv.menuEx, 1854 }); 1855 1856 this.$mobMenuClose.on('click', this.closeMobMenu.bind(this)); 1857 this.$mobMenuOpen.on('click', this.openMobMenu.bind(this)); 1858 this.$mobMenu.on('click', '.open-child', this.verticalMenuShow); 1859 1860 this.$slideMenuOpen.on('click', this.openSlideMenu.bind(this)); 1861 1862 this.$toolTip.on('mouseenter', this.toolTipInit); 1863 1864 this.$slideInX.on('click', this.slideInPX.bind(this)); 1865 this.$slideForm.on('submit', this.slideInSubmit.bind(this)); 1866 this.$sorter.on('click', this.sorter); 1867 if ( 1868 this.$body.hasClass('single') && 1869 !this.$body.hasClass('single-product') 1870 ) { 1871 this.$primary.on('click', '.reaction', this.reaction); 1872 this.$primary.on('click', '.zeen__up-down', this.upDown); 1873 } 1874 this.$win.on('load', function () { 1875 zeenPrv.loaded(); 1876 }); 1877 1878 if (this.$dropperChild.length > 0) { 1879 zeenPrv.dropperChild(); 1880 } 1881 if (this.wooActive === true) { 1882 if ( 1883 this.$body.hasClass('term-woocategory') || 1884 this.$body.hasClass('post-type-archive-product') || 1885 this.$body.hasClass('woocommerce-page') 1886 ) { 1887 this.wooArchive = true; 1888 this.$products = this.$entryContentWrap.find( 1889 '.products:not(.related):not(.upsells)' 1890 ); 1891 } 1892 this.wooGridM.on('click', this.wooLayoutChange); 1893 this.wooGridS.on('click', this.wooLayoutChange); 1894 zeenPrv.$doc.on('added_to_cart', function () { 1895 zeenPrv.modalOff(); 1896 }); 1897 } 1898 }, 1899 wooLayoutChange: function (e) { 1900 e.preventDefault(); 1901 var $this = $(this), 1902 size = $this.data('size'); 1903 if ($this.hasClass('active')) { 1904 return; 1905 } 1906 zeenPrv.wooGridM.add(zeenPrv.wooGridS).removeClass('active'); 1907 zeenPrv.$main 1908 .removeClass( 1909 'products-layout-3 products-layout-4 products-layout-12 products-layout-13' 1910 ) 1911 .addClass('products-layout-' + size)
1912 .data('ppl', size); 1913 $this.addClass('active'); 1914 zeenPrv.fillRunner(true); 1915 }, 1916 commentScroll: function (e) { 1917 const $this = $(this), 1918 postWrap = $this.closest('.post-wrap'); 1919 if (postWrap.length === 0) { 1920 return; 1921 } 1922 const commentsWrap = postWrap.find('.comments__wrap'); 1923 if (commentsWrap.length === 0) { 1924 return; 1925 } 1926 e.preventDefault(); 1927 1928 if (commentsWrap.hasClass('comments__type-2')) { 1929 commentsWrap.find('.collapsible__title').trigger('click'); 1930 } 1931 commentsWrap[0].scrollIntoView({ 1932 behavior: 'smooth', 1933 block: 'end', 1934 inline: 'nearest', 1935 }); 1936 }, 1937 collapsible: function (e) { 1938 e.preventDefault(); 1939 var $this = $(this), 1940 $collapsible = $this 1941 .closest('.collapsible__wrap') 1942 .find('> .collapsible__content'); 1943 if (!$this.hasClass('active')) { 1944 $this.addClass('active'); 1945 gsap.set($collapsible, { 1946 height: 'auto', 1947 marginBottom: 20, 1948 opacity: 1, 1949 }); 1950 gsap.from($collapsible, 0.3, { 1951 height: 0, 1952 opacity: 0, 1953 marginBottom: 0, 1954 ease: 'power4.inOut', 1955 }); 1956 } else { 1957 $this.removeClass('active'); 1958 gsap.to($collapsible, 0.3, { 1959 height: 0, 1960 opacity: 0, 1961 marginBottom: 0, 1962 ease: 'power4.inOut', 1963 }); 1964 } 1965 }, 1966 footerReveal: function (e) { 1967 if (!this.$body.hasClass('footer--reveal')) { 1968 return; 1969 } 1970 var _this = this; 1971 if (_this.$winWidth > 767) { 1972 this.$footer.imagesLoaded().always(function (instance) { 1973 _this.$content.css( 1974 'margin-bottom', 1975 parseInt(_this.$footer.outerHeight()) - 1 + 'px' 1976 ); 1977 }); 1978 } else { 1979 _this.$content.css('margin-bottom', ''); 1980 } 1981 }, 1982 trending: function (e) { 1983 var $selected = $(this); 1984 var $uid = $selected.parent().data('uid'); 1985 var $blockData = $('#block-wrap-' + $uid); 1986 var $blockLoading = $blockData.find(' > div'); 1987 if ($blockLoading.hasClass('loading')) { 1988 return; 1989 } 1990 var paged = $selected.data('r'), 1991 trendingName = 'now'; 1992 if (paged === 1) { 1993 paged = 2; 1994 } else if (paged === 2) { 1995 paged = 7; 1996 trendingName = 'week'; 1997 } else { 1998 paged = 30; 1999 trendingName = 'month'; 2000 } 2001 $selected.siblings().removeClass('trending-selected'); 2002 $selected.addClass('trending-selected'); 2003 var setter = 'zeen_' + $uid; 2004 var blockData = window[setter]; 2005 var args = { 2006 blockData: blockData, 2007 $blockData: $blockData, 2008 changer: false, 2009 append: 2, 2010 manual: true, 2011 response: '', 2012 mm: true, 2013 }; 2014 $.ajax({ 2015 method: 'GET', 2016 data: { 2017 uid: $uid, 2018 mm: true, 2019 excerpt_off: true, 2020 counter: true, 2021 counter_class: 'border', 2022 byline_off: true, 2023 review_off: true, 2024 data: blockData, 2025 trending: ['zeen-trending-' + trendingName, paged], 2026 }, 2027 dataType: 'html', 2028 url: zeenJS.root + 'block', 2029 beforeSend: function (xhr) { 2030 $blockLoading.addClass('loading'); 2031 xhr.setRequestHeader('X-WP-Nonce', zeenPrv.nonce); 2032 if (zeenPrv.ajaxChecker(setter + '_' + paged)) { 2033 args.response = zeenPrv.ajaxGetter( 2034 setter + '_' + paged 2035 ); 2036 zeenPrv.ajaxLoadMore(args); 2037 $blockData.addClass('loaded'); 2038 return false; 2039 } 2040 }, 2041 success: function (response) { 2042 response = JSON.parse(response); 2043 args.response = response; 2044 zeenPrv.ajaxLoadMore(args); 2045 zeenPrv.ajaxSetter(setter + '_' + paged, response); 2046 $blockData.addClass('loaded'); 2047 }, 2048 fail: function (response) { 2049 console.log('ERROR', response); 2050 }, 2051 }); 2052 }, 2053 hovererBlock: function () { 2054 if (this.$hovererBlock.length === 0) { 2055 return; 2056 } 2057 this.$hovererBlock.each(function () { 2058 var _this = $(this), 2059 maskWrap = _this.find('.mask__wrap'), 2060 article = _this.find('article'); 2061 _this.on('mouseenter', zeenPrv.hovererLazy); 2062 article.on('mouseenter mouseleave', function (e) { 2063 var _thisArticle = $(this), 2064 selection = _thisArticle.data('i'), 2065 excerpt = _thisArticle.find('.excerpt'); 2066 _thisArticle.siblings().removeClass('selected'); 2067 if (e.type === 'mouseenter') { 2068 maskWrap.children().removeClass('selected'); 2069 _thisArticle.addClass('selected'); 2070 maskWrap 2071 .find("> [data-i='" + selection + "']") 2072 .addClass('selected'); 2073 if (excerpt.length > 0) { 2074 gsap.set(excerpt, { height: 'auto', opacity: 1 }); 2075 gsap.from(excerpt, 0.3, { 2076 height: 0, 2077 opacity: 0, 2078 ease: 'power4.inOut', 2079 }); 2080 } else { 2081 _thisArticle.addClass('no-excerpt__ani'); 2082 } 2083 } else { 2084 if (excerpt.length > 0) { 2085 gsap.to(excerpt, 0.3, { 2086 height: 0, 2087 opacity: 0, 2088 ease: 'power4.inOut', 2089 }); 2090 } else { 2091 _thisArticle.removeClass('no-excerpt__ani'); 2092 } 2093 } 2094 }); 2095 }); 2096 }, 2097 hovererLazy: function () { 2098 var _this = $(this); 2099 _this.find('.zeen-hoverer-lazy-load').each(function () { 2100 zeenPrv.iframeAttrLoad($(this)[0]); 2101 }); 2102 _this.off('mouseenter'); 2103 }, 2104 videosBlock: function () { 2105 if (this.$videosBlock.length === 0) { 2106 return; 2107 } 2108 this.$videosBlock.each(function () { 2109 var _this = $(this), 2110 video = _this.find('.block-piece-2 article'); 2111 video.each(function () { 2112 $(this).on('click', function () { 2113 $(this).find('.media-tr').get(0).click(); 2114 }); 2115 }); 2116 }); 2117 }, 2118 metaLocation34: function () { 2119 if (this.$metaLocation34.length === 0) { 2120 return; 2121 } 2122 this.$metaLocation34.each(function () { 2123 var _this = $(this), 2124 article = _this.find('article'); 2125 article.on('mouseenter mouseleave', function (e) { 2126 var _thisArticle = $(this), 2127 excerpt = _thisArticle.find('.excerpt'); 2128 if (e.type === 'mouseenter') { 2129 if (excerpt.length > 0) { 2130 gsap.set(excerpt, { height: 'auto', opacity: 1 }); 2131 gsap.from(excerpt, 0.3, { 2132 height: 0, 2133 opacity: 0, 2134 ease: 'power4.inOut', 2135 }); 2136 } else { 2137 _thisArticle.addClass('no-excerpt__ani'); 2138 } 2139 } else { 2140 if (excerpt.length > 0) { 2141 gsap.to(excerpt, 0.3, { 2142 height: 0, 2143 opacity: 0, 2144 ease: 'power4.inOut', 2145 }); 2146 } else { 2147 _thisArticle.removeClass('no-excerpt__ani'); 2148 } 2149 } 2150 }); 2151 }); 2152 }, 2153 anchorTouch: function () { 2154 var touch = 2155 'ontouchstart' in document.documentElement ? true : false;
2156 2157 this.$dropper.each(function (index, elem) { 2158 var dropper = $(this), 2159 dropperA = dropper.find('> a'), 2160 href = dropperA.attr('href'); 2161 if (typeof href !== 'undefined' && href.indexOf('#') > -1) { 2162 if ( 2163 '#search' === href || 2164 '#latl' === href || 2165 '#subscribe' === href 2166 ) { 2167 dropperA 2168 .addClass('modal-tr') 2169 .attr('data-type', href.split('#')[1]); 2170 return; 2171 } else { 2172 dropperA.on('click.anchor', function (e) { 2173 var targetY = 0, 2174 targetElem = document.getElementById( 2175 href.split('#')[1] 2176 ); 2177 if (href !== '#') { 2178 if (!targetElem) { 2179 return; 2180 } 2181 targetY = zenscroll.getTopOf(targetElem); 2182 } 2183 e.preventDefault(); 2184 zenscroll.toY( 2185 targetY - 2186 zeenPrv.headAreaHeight - 2187 zeenPrv.$wpAdminBarHeight, 2188 null 2189 ); 2190 }); 2191 } 2192 } 2193 if (touch === false) { 2194 return true; 2195 } 2196 if (dropper.find('> .menu').length > 0) { 2197 dropperA.on('click', function (e) { 2198 var current = $(this); 2199 dropper.siblings('.tapped').removeClass('tapped'); 2200 if ( 2201 ((dropper.find('.menu').length === 0 && 2202 dropper.find('.sub-menu').length === 0) || 2203 dropper.hasClass('tapped')) && 2204 current.attr('href') !== '#' 2205 ) { 2206 return true; 2207 } else { 2208 e.preventDefault(); 2209 dropper.addClass('tapped'); 2210 } 2211 }); 2212 } 2213 }); 2214 }, 2215 topBlock: function () { 2216 if ( 2217 this.$topBlock.length === 0 || 2218 this.$topBlock.hasClass('standard-ani') || 2219 this.$topBlock.hasClass('loaded') 2220 ) { 2221 return; 2222 } 2223 var _this = this; 2224 this.$topBlock.imagesLoaded().always(function (instance) { 2225 var args = { y: 100 }; 2226 2227 if (_this.$winWidth > 767) { 2228 if ( 2229 _this.$topBlock.hasClass('zeen-top-block-92') || 2230 _this.$topBlock.hasClass('zeen-top-block-94') 2231 ) { 2232 args = {}; 2233 } 2234 } 2235 args.scrollTrigger = { 2236 start: 'top top', 2237 end: 'bottom top', 2238 trigger: _this.$topBlock, 2239 scrub: true, 2240 }; 2241 var img = _this.$topBlock.find('img'); 2242 if (img.length > 0) { 2243 gsap.to(img, args); 2244 } 2245 }); 2246 }, 2247 anis: function (e) { 2248 this.tempAni(); 2249 this.loopAni(); 2250 this.blockAni(); 2251 }, 2252 lrTempAni: function () { 2253 var box = document.querySelectorAll('.lets-review-unseen'), 2254 observer = new IntersectionObserver( 2255 function (entries) { 2256 entries.forEach(function (entry) { 2257 if (entry.intersectionRatio > 0) { 2258 entry.target.classList.add('lets-review-seen'); 2259 observer.unobserve(entry.target); 2260 } 2261 }); 2262 }, 2263 { threshold: [0] } 2264 ); 2265 for (var i = box.length - 1; i >= 0; i--) { 2266 observer.observe(box[i]); 2267 } 2268 }, 2269 tempAni: function () { 2270 var ani = document.getElementsByClassName('ani-base'), 2271 observer = new IntersectionObserver( 2272 function (entries) { 2273 entries.forEach(function (entry) { 2274 if (entry.isIntersecting) { 2275 imagesLoaded(entry.target, function (instance) { 2276 entry.target.classList.add( 2277 'article-window' 2278 ); 2279 }); 2280 entry.target.classList.remove('article-ani'); 2281 var revs = entry.target.getElementsByClassName( 2282 'lets-review-api-wrap' 2283 ); 2284 2285 if ( 2286 revs.length > 0 && 2287 (entry.target.parentElement.classList.contains( 2288 'preview-review-bot' 2289 ) || 2290 entry.target.parentElement.parentElement.classList.contains( 2291 'preview-review-bot' 2292 )) 2293 ) { 2294 setTimeout(function () { 2295 entry.target.classList.add( 2296 'review-ani-done' 2297 ); 2298 gsap.fromTo( 2299 revs[0], 2300 1, 2301 { width: '0' }, 2302 { 2303 width: 2304 revs[0].getAttribute( 2305 'data-api-100' 2306 ) + '%', 2307 ease: Power2.easeOut, 2308 } 2309 ); 2310 }, 300); 2311 } 2312 observer.unobserve(entry.target); 2313 } 2314 }); 2315 }, 2316 { threshold: [0] } 2317 ); 2318 for (var i = ani.length - 1; i >= 0; i--) { 2319 if (!ani[i].classList.contains('article-window')) { 2320 observer.observe(ani[i]); 2321 } 2322 } 2323 2324 var blockToSee = document.getElementsByClassName('block-to-see'), 2325 blockToSeeObs = new IntersectionObserver( 2326 function (entries) {
2327 entries.forEach(function (entry) { 2328 if (entry.isIntersecting) { 2329 entry.target.classList.add('tipi-seen'); 2330 blockToSeeObs.unobserve(entry.target); 2331 } 2332 }); 2333 }, 2334 { threshold: [0], rootMargin: '-100px 0px' } 2335 ); 2336 for (i = blockToSee.length - 1; i >= 0; i--) { 2337 if (!blockToSee[i].classList.contains('tipi-seen')) { 2338 blockToSeeObs.observe(blockToSee[i]); 2339 } 2340 } 2341 if (zeenJS.args.lazy !== true) { 2342 return; 2343 } 2344 var lazy = document.getElementsByClassName('zeen-lazy-load'); 2345 2346 for (i = lazy.length - 1; i >= 0; i--) { 2347 if (lazy[i].getAttribute('data-lazy-src') === null) { 2348 lazy[i].classList.remove('zeen-lazy-load'); 2349 } 2350 } 2351 2352 var lazyObs = new IntersectionObserver( 2353 function (entries) { 2354 entries.forEach(function (entry) { 2355 if (entry.isIntersecting) { 2356 lazyObs.unobserve(entry.target); 2357 zeenPrv.imgAttrLoad(entry.target); 2358 } 2359 }); 2360 }, 2361 { threshold: [0], rootMargin: '600px 0px' } 2362 ); 2363 for (i = lazy.length - 1; i >= 0; i--) { 2364 if (!lazy[i].classList.contains('zeen-lazy-loaded')) { 2365 lazyObs.observe(lazy[i]); 2366 } 2367 } 2368 }, 2369 iFrameLazy: function () { 2370 var iLazy = document.getElementsByClassName( 2371 'zeen-iframe-lazy-load' 2372 ), 2373 ilazyObs = new IntersectionObserver( 2374 function (entries) { 2375 entries.forEach(function (entry) { 2376 if (entry.isIntersecting) { 2377 ilazyObs.unobserve(entry.target); 2378 zeenPrv.iframeAttrLoad(entry.target); 2379 } 2380 }); 2381 }, 2382 { threshold: [0], rootMargin: '150px 0px' } 2383 ); 2384 for (var i = iLazy.length - 1; i >= 0; i--) { 2385 if (!iLazy[i].classList.contains('zeen-lazy-loaded')) { 2386 ilazyObs.observe(iLazy[i]); 2387 } 2388 } 2389 }, 2390 imgAttrLoad: function (img, imgLdd) { 2391 var el = img, 2392 src; 2393 if (el.tagName === 'PICTURE') { 2394 src = el.querySelectorAll('source')[0]; 2395 img = el.querySelectorAll('img')[0]; 2396 var srcSrcset = src.getAttribute('data-lazy-srcset'); 2397 var srcSizes = src.getAttribute('data-lazy-sizes'); 2398 if (srcSrcset) { 2399 src.srcset = srcSrcset; 2400 src.removeAttribute('data-lazy-srcset'); 2401 } 2402 if (srcSizes) { 2403 src.sizes = srcSizes; 2404 src.removeAttribute('data-lazy-sizes'); 2405 } 2406 } 2407 src = img.getAttribute('data-lazy-src'); 2408 var srcset = img.getAttribute('data-lazy-srcset'); 2409 var sizes = img.getAttribute('data-lazy-sizes'); 2410 if (src) { 2411 img.src = src; 2412 img.removeAttribute('data-lazy-src'); 2413 } 2414 if (srcset) { 2415 img.srcset = srcset; 2416 img.removeAttribute('data-lazy-srcset'); 2417 } 2418 if (sizes) { 2419 img.sizes = sizes; 2420 img.removeAttribute('data-lazy-sizes'); 2421 } 2422 var imgLddOn = el.classList.contains('zeen-images-loaded'); 2423 if (imgLdd === true || imgLddOn === true) { 2424 imagesLoaded(img, function (instance) { 2425 instance.images[0].img.classList.remove('zeen-lazy-load'); 2426 instance.images[0].img.classList.add('zeen-lazy-loaded'); 2427 if ( 2428 instance.images[0].img.parentElement.tagName === 2429 'PICTURE' 2430 ) { 2431 instance.images[0].img.parentElement.parentElement.classList.add( 2432 'zeen-lazy-loaded-wrap' 2433 ); 2434 } else { 2435 instance.images[0].img.parentElement.classList.add( 2436 'zeen-lazy-loaded-wrap' 2437 ); 2438 } 2439 }); 2440 } else { 2441 el.classList.remove('zeen-lazy-load'); 2442 el.classList.add('zeen-lazy-loaded'); 2443 } 2444 }, 2445 iframeAttrLoad: function (iframe) { 2446 var src = iframe.getAttribute('data-lazy-src'); 2447 iframe.setAttribute('src', src); 2448 $(iframe).on('load', function () { 2449 iframe.classList.add('zeen-lazy-loaded'); 2450 iframe.classList.add('loaded'); 2451 }); 2452 }, 2453 mobLimiter: function (e) { 2454 e.preventDefault(); 2455 $(this).closest('.post-wrap').addClass('mobile--limiter--more'); 2456 zeenPrv.progressScene.destroy(); 2457 zeenPrv.postTracks(); 2458 }, 2459 progressPosition: function () { 2460 if (this.$progress.length === 0) { 2461 return; 2462 } 2463 if (this.$winWidth < 767 && this.$mobHead.length > 0) { 2464 this.$progress.addClass('has--moved'); 2465 var progressData = this.$progress.data('parent'); 2466 if (typeof progressData === 'undefined') { 2467 this.$progress.data( 2468 'parent', 2469 this.$progress.closest('header').attr('id') 2470 ); 2471 } 2472 this.$mobHead.append(this.$progress); 2473 } else if (this.$progress.hasClass('has--moved')) { 2474 $('#' + this.$progress.data('parent')) 2475 .find('> .bg-area') 2476 .append(this.$progress); 2477 } 2478 }, 2479 loopAni: function (e) { 2480 if (this.$winWidth < 1200) { 2481 return; 2482 } 2483 this.$primary.find('> .post-wrap').each(function () { 2484 var current = $(this); 2485 if (current.hasClass('loop-ani-checked')) { 2486 return true; 2487 } 2488 if (current.hasClass('align-fade-up')) { 2489 var ani = current.find('.alignleft, .alignright'), 2490 observer = new IntersectionObserver( 2491 function (entries) {
2492 entries.forEach(function (entry) { 2493 if ( 2494 entry.boundingClientRect.top > 0 || 2495 entry.isIntersecting 2496 ) { 2497 entry.target.classList.add('tipi-seen'); 2498 observer.unobserve(entry.target); 2499 } 2500 }); 2501 }, 2502 { threshold: [0], rootMargin: '500px 0px 0px 0px' } 2503 ); 2504 for (var i = ani.length - 1; i >= 0; i--) { 2505 observer.observe(ani[i]); 2506 } 2507 } 2508 current.addClass('loop-ani-checked'); 2509 }); 2510 }, 2511 blockAni: function () { 2512 var ani = document.getElementsByClassName('block-ani'); 2513 if (ani.length === 0) { 2514 return; 2515 } 2516 var observer = new IntersectionObserver( 2517 function (entries) { 2518 entries.forEach(function (entry) { 2519 if (entry.isIntersecting) { 2520 entry.target.classList.add('loaded'); 2521 observer.unobserve(entry.target); 2522 } 2523 }); 2524 }, 2525 { threshold: [0] } 2526 ); 2527 for (var i = ani.length - 1; i >= 0; i--) { 2528 if (!ani[i].classList.contains('loaded')) { 2529 observer.observe(ani[i]); 2530 } 2531 } 2532 }, 2533 dropperChild: function () { 2534 var timer; 2535 this.$dropperChild.on('mouseover mouseleave', function (e) { 2536 clearTimeout(timer); 2537 if (e.type === 'mouseover') { 2538 var _this = $(this); 2539 timer = setTimeout(function () { 2540 zeenPrv.blockMore(e, _this); 2541 }, 300); 2542 } 2543 }); 2544 }, 2545 twitchLoad: function () { 2546 var ani = document.getElementsByClassName('twitch'); 2547 if (ani.length === 0) { 2548 return; 2549 } 2550 2551 var observer = new IntersectionObserver( 2552 function (entries) { 2553 entries.forEach(function (entry) { 2554 if (entry.isIntersecting) { 2555 var tw = $(entry.target); 2556 tw.append( 2557 '<iframe title="Twitch" width="1280" height="720" scrolling="no" class="twitch-frame" src="' + 2558 tw.data('src') + 2559 '" frameborder="0" seamless="seamless" allowfullscreen="true"></iframe>' 2560 ); 2561 tw.find('iframe').on('load', function () { 2562 tw.addClass('ani-in loaded'); 2563 }); 2564 observer.unobserve(entry.target); 2565 } 2566 }); 2567 }, 2568 { threshold: [0] } 2569 ); 2570 for (var i = ani.length - 1; i >= 0; i--) { 2571 if (!ani[i].classList.contains('loaded')) { 2572 observer.observe(ani[i]); 2573 } 2574 } 2575 }, 2576 sorter: function () { 2577 var $sorter = $(this); 2578 2579 if ($sorter.hasClass('load-more-wrap')) { 2580 return; 2581 } 2582 zeenPrv.activeFocus($sorter, 'active'); 2583 }, 2584 activeFocus: function (el, classes) {
2585 if (el.hasClass(classes)) { 2586 el.blur(); 2587 el.removeClass(classes); 2588 return; 2589 } 2590 el.addClass(classes); 2591 if ('ontouchstart' in document.documentElement) { 2592 zeenPrv.$doc.on('touchstart', function (e) { 2593 el.removeClass(classes); 2594 zeenPrv.$doc.off('touchstart'); 2595 el.off('touchstart'); 2596 }); 2597 el.on('touchstart', function (e) { 2598 e.stopPropagation(); 2599 }); 2600 } else { 2601 zeenPrv.activeFocusTarget = el; 2602 zeenPrv.$doc.on('click', zeenPrv.activeFocusClick); 2603 } 2604 }, 2605 activeFocusClick: function (e) { 2606 if (zeenPrv.activeFocusTarget.has(e.target).length === 0) { 2607 zeenPrv.activeFocusTarget.removeClass('active active-search'); 2608 zeenPrv.activeFocusTarget = ''; 2609 zeenPrv.$doc.off('click', zeenPrv.activeFocusClick); 2610 } 2611 }, 2612 loading: function (el, status) { 2613 if (status === 'on') { 2614 el.addClass('loading'); 2615 } else { 2616 el.removeClass('loading'); 2617 } 2618 }, 2619 slideInP: function () { 2620 var postSlide = this.$slideIn.hasClass('slide-in-2') ? true : false; 2621 if ( 2622 this.$slideIn.length === 0 || 2623 this.$winWidth < 767 || 2624 (Cookies.get('wp_sliding_box_p') === 'off' && 2625 postSlide === true) || 2626 (Cookies.get('wp_sliding_box') === 'off' && postSlide === false) 2627 ) { 2628 return; 2629 } 2630 2631 var trigger = this.$content, 2632 start = 2633 parseInt(zeenJS.args.slidingBoxStartPoint) > 0 2634 ? parseInt(zeenJS.args.slidingBoxStartPoint) 2635 : 50; 2636 if (postSlide === true && this.$entryContentWrap.length > 0) { 2637 // Wrap used for vertical galleries and sticky gets shifted 2638 trigger = this.$entryContentWrap; 2639 } 2640 this.slideInScene = ScrollTrigger.create({ 2641 trigger: trigger, 2642 start: 'top+=' + start + '% bottom', 2643 end: 'bottom center', 2644 toggleClass: { targets: this.$slideIn, className: 'active' }, 2645 }); 2646 }, 2647 slideInPX: function () { 2648 this.$body.removeClass('slide-in-active'); 2649 if (this.$slideIn.hasClass('slide-in-1')) { 2650 this.turnItOff(1); 2651 } 2652 if (this.$slideIn.hasClass('slide-in-2')) { 2653 this.turnItOff(2); 2654 } 2655 if (typeof this.slideInScene === 'object') { 2656 this.slideInScene.kill(); 2657 } 2658 }, 2659 slideInSubmit: function () { 2660 this.turnItOff(1); 2661 }, 2662 turnItOff: function (arg) { 2663 if (arg === 1) { 2664 Cookies.set('wp_sliding_box', 'off', { 2665 sameSite: 'lax', 2666 expires: zeenJS.args.cookieDuration, 2667 path: zeenJS.args.path, 2668 }); 2669 } else if (arg === 2) { 2670 Cookies.set('wp_sliding_box_p', 'off', { 2671 sameSite: 'lax', 2672 expires: zeenJS.args.cookieDuration, 2673 path: zeenJS.args.path, 2674 }); 2675 } else if (arg === 3) { 2676 Cookies.set('wp_timed_pp', 'off', { 2677 sameSite: 'lax', 2678 expires: zeenJS.args.cookieDuration, 2679 path: zeenJS.args.path, 2680 }); 2681 } else if (arg === 4) { 2682 Cookies.set('wp_top_bar', 'off', { 2683 sameSite: 'lax', 2684 expires: zeenJS.args.cookieDuration, 2685 path: zeenJS.args.path, 2686 }); 2687 } else if (arg === 5) { 2688 Cookies.set('subL', 'off', { 2689 sameSite: 'lax', 2690 expires: zeenJS.args.cookieDuration, 2691 path: zeenJS.args.path, 2692 }); 2693 } else if (arg === 6) { 2694 Cookies.set('wp_timed_sub', 'off', { 2695 sameSite: 'lax', 2696 expires: zeenJS.args.cookieDuration, 2697 path: zeenJS.args.path, 2698 }); 2699 } 2700 }, 2701 topBarMsg: function () { 2702 if (this.$topBarMsg.length === 0) { 2703 return; 2704 } 2705 $('#top-bar-message-close').on('click', function () { 2706 var closer = $(this); 2707 zeenPrv.$topBarMsg.slideUp(); 2708 closer.off('click'); 2709 zeenPrv.turnItOff(4); 2710 }); 2711 }, 2712 timedPup: function () { 2713 var els = this.$timedPup.add(this.$modal.find('.timed-sub')); 2714 if (els.length === 0 || Cookies.get('wp_timed_sub') === 'off') { 2715 return; 2716 } 2717 var _this = this; 2718 els.each(function () { 2719 var self = $(this), 2720 disabler = 3, 2721 timer = self.data('t'), 2722 disable = self.data('d'), 2723 type = self.data('type'); 2724 if (typeof timer === 'undefined') { 2725 timer = 15000; 2726 } else { 2727 timer = timer * 1000; 2728 } 2729 setTimeout(function () { 2730 _this.modalOff(); 2731 setTimeout(function () { 2732 if ('pup' === type) { 2733 _this.$baseOverlay.addClass('active'); 2734 _this.$body.addClass('modal-active'); 2735 _this.$timedPup.addClass('active'); 2736 if (disable === 1) { 2737 _this.$baseOverlay.on('click', function () { 2738 _this.turnItOff(disabler); 2739 _this.$baseOverlay.off('click'); 2740 }); 2741 } 2742 } else if ('sub' === type) { 2743 zeenPrv.modalSubscribe(); 2744 disabler = 6; 2745 if (disable === 1) { 2746 zeenPrv.$body.addClass('sub-pup'); 2747 } 2748 } 2749 }, 300); 2750 }, timer); 2751 }); 2752 }, 2753 postTracks: function () { 2754 if (this.$progress.length === 0 && this.$mobBotShare.length === 0) { 2755 return; 2756 } 2757 var targets = []; 2758 if (this.$progress.length > 0) { 2759 targets.push(zeenPrv.$progress); 2760 } 2761 if (this.$mobBotShare.length > 0) { 2762 targets.push(zeenPrv.$mobBotShare); 2763 } 2764 this.$entryContent.each(function (index, elem) { 2765 var $elem = $(elem); 2766 if ( 2767 $elem.hasClass('sticky-el') || 2768 ($elem.hasClass('woocommerce-Tabs-panel') && 2769 !$elem.hasClass('woocommerce-Tabs-panel--description')) 2770 ) { 2771 return true; 2772 } 2773 $elem.addClass('progresson'); 2774 $elem.find('img').imagesLoaded(function () { 2775 var $elemOuter = $elem.outerHeight(true); 2776 if (zeenPrv.$winHeight < $elemOuter + 50) { 2777 var ST = gsap.timeline({ 2778 scrollTrigger: { 2779 trigger: $elem, 2780 start: 'top center', 2781 end: 'bottom center', 2782 scrub: true, 2783 toggleClass: { 2784 targets: targets, 2785 className: 'active', 2786 }, 2787 }, 2788 }); 2789 } 2790 if (zeenPrv.$progress.length !== 0) { 2791 if (zeenPrv.$winHeight < $elemOuter + 50) { 2792 ST.fromTo( 2793 zeenPrv.$progress, 2794 { 2795 width: '0', 2796 ease: 'none', 2797 }, 2798 { 2799 width: '100%', 2800 ease: 'none', 2801 } 2802 ); 2803 } 2804 } 2805 }); 2806 }); 2807 }, 2808 keyUp: function (e) { 2809 if ( 2810 this.$modal.hasClass('inactive') && 2811 !this.$body.hasClass('slide-menu-open') 2812 ) { 2813 return; 2814 } 2815 var keyCheck = false;
2816 2817 if ('key' in e) { 2818 keyCheck = e.key === 'Escape' || e.key === 'Esc'; 2819 } else { 2820 keyCheck = e.keyCode === 27; 2821 } 2822 2823 if (keyCheck !== false) { 2824 this.closeSlideMenu(e); 2825 this.modalOff(); 2826 } 2827 }, 2828 header: function (resize) { 2829 if (this.$winWidth > 767) { 2830 var isStickyTop = false; 2831 2832 if ( 2833 this.$header.hasClass('sticky-top') && 2834 !this.$header.hasClass('evented') 2835 ) { 2836 var offset = zeenPrv.$header.hasClass('sticky-menu-4') 2837 ? { top: 0, left: 0 } 2838 : this.$header.offset(); 2839 window.addEventListener( 2840 'scroll', 2841 function (e) { 2842 var currentScroll = 2843 window.pageYOffset || 2844 document.documentElement.scrollTop; 2845 if (!zeenPrv.ticking) { 2846 window.requestAnimationFrame(function () { 2847 if ( 2848 currentScroll > 2849 Math.min( 2850 45, 2851 zeenPrv.$headerHeight 2852 ) && 2853 currentScroll >= 2854 offset.top - 2855 zeenPrv.$wpAdminBarHeight 2856 ) { 2857 if ( 2858 !zeenPrv.$header[0].classList.contains( 2859 'sticky-header--active' 2860 ) 2861 ) { 2862 zeenPrv.$header[0].classList.add( 2863 'sticky-header--active' 2864 ); 2865 } 2866 } else { 2867 zeenPrv.$header[0].classList.remove( 2868 'sticky-header--active' 2869 ); 2870 } 2871 zeenPrv.ticking = false; 2872 }); 2873 zeenPrv.ticking = true; 2874 } 2875 }, 2876 zeenPrv.$listener 2877 ); 2878 isStickyTop = true; 2879 this.$header.addClass('evented'); 2880 } 2881 if ( 2882 zeenJS.args.stickyHeaderCustomize === true && 2883 (isStickyTop || this.$header.hasClass('sticky-menu')) 2884 ) { 2885 var logo = this.$header.find('.logo-main img'); 2886 logo.imagesLoaded(function () { 2887 logo.css('height', '').css('height', logo.height()); 2888 zeenPrv.$header 2889 .css('height', '') 2890 .css('height', zeenPrv.$headerHeight) 2891 .addClass('size-set'); 2892 }); 2893 } 2894 } 2895 }, 2896 mobileMenuClass: function () { 2897 var $mobChild = this.$mobMenuChildren.find('> a'); 2898 $mobChild.each(function (index) { 2899 var $this = $(this); 2900 if ($this.attr('href') === '#') { 2901 $this.addClass('open-child text-link'); 2902 } else { 2903 $this.addClass('open-child text-link text-with-link'); 2904 } 2905 }); 2906 $mobChild.after( 2907 '<a href="#" class="open-child"><i class="tipi-i-chevron-down"></i></a>' 2908 ); 2909 }, 2910 verticalMenuShow: function (e) { 2911 var currentVerticalMenu = $(this); 2912 var currentParent = currentVerticalMenu.parent(); 2913 var currentSiblings = currentParent.siblings( 2914 '.menu-item-has-children' 2915 ); 2916 currentSiblings.find('> .opened-child').removeClass('opened-child'); 2917 currentSiblings 2918 .find('> .child-is-open') 2919 .removeClass('child-is-open'); 2920 var currentVerticalSubMenu = currentParent.find('> .sub-menu'); 2921 if (currentVerticalMenu.hasClass('child-is-open')) { 2922 if (!currentVerticalMenu.hasClass('text-with-link')) { 2923 e.preventDefault(); 2924 currentParent.find('a').removeClass('child-is-open'); 2925 currentVerticalSubMenu.removeClass('opened-child'); 2926 } 2927 } else { 2928 e.preventDefault(); 2929 currentParent.find('> a').addClass('child-is-open'); 2930 currentVerticalSubMenu.addClass('opened-child'); 2931 } 2932 }, 2933 secondaryImgs: function (event) { 2934 var hovered = $(this); 2935 if (event.type === 'mouseenter') { 2936 hovered.addClass('hovering'); 2937 } else { 2938 hovered.removeClass('hovering'); 2939 } 2940 }, 2941 stickyCheck: function () { 2942 var el = document.createElement('a'), 2943 check = el.style; 2944 check.cssText = 'position:sticky;position:-webkit-sticky;'; 2945 this.$stickyOff = check.position.indexOf('sticky') !== -1; 2946 if (this.$stickyOff === false) { 2947 this.$body.addClass('sticky-disabled'); 2948 } 2949 }, 2950 stickyEl: function () { 2951 var spacing; 2952 if (this.headAreaHeight === 0 || this.$stickyOff === false) { 2953 return; 2954 } 2955 $('.sticky-el').each(function (index, elem) { 2956 var $elem = $(this); 2957 if ( 2958 $elem.hasClass('block-wrap') && 2959 parseInt( 2960 $elem.find('> .tipi-row-inner-style').css('padding-top') 2961 ) > 0 2962 ) { 2963 spacing = 0; 2964 } else { 2965 spacing = 30; 2966 } 2967 if (zeenPrv.$winWidth < 767) { 2968 spacing = 15; 2969 } 2970 $elem.css( 2971 'top', 2972 zeenPrv.headAreaHeight + zeenPrv.$wpAdminBarHeight + spacing 2973 ); 2974 }); 2975 }, 2976 sticky: function () { 2977 if (this.$stickyMenu.length === 0) { 2978 return; 2979 } 2980 2981 this.$stickyMenu.each(function (index, elem) { 2982 var stickyElem = $(elem); 2983 if (stickyElem.hasClass('stickied')) { 2984 return; 2985 } 2986 stickyElem.addClass('stickied'); 2987 var media = 'd'; 2988 if (stickyElem.hasClass('site-mob-header')) { 2989 media = 'm'; 2990 } 2991 var args = { 2992 end: '99999999', 2993 trigger: $('#header-line'), 2994 }; 2995 var offset = 200, 2996 extras, 2997 stickyMenuType; 2998 if (stickyElem.hasClass('site-mob-header')) { 2999 offset = zeenPrv.$winHeight; 3000 args.trigger = $('#mob-line'); 3001 } 3002 args.start = zeenPrv.$wpAdminBarHeightNeg + 'px top'; 3003 var onUpdateKeep; 3004 if (stickyElem.hasClass('sticky-menu-2')) { 3005 stickyMenuType = 2; 3006 stickyElem.addClass('still'); 3007 var stickyElemHeight = stickyElem.outerHeight(true); 3008 args.onUpdate = function (_ref) { 3009 if (_ref.progress * _ref.end > stickyElemHeight) { 3010 stickyElem.addClass('stuck'); 3011 if (_ref.direction === 1) { 3012 stickyElem.removeClass('active'); 3013 } else if (_ref.direction === -1) { 3014 stickyElem 3015 .addClass('active') 3016 .removeClass('still'); 3017 } 3018 } else if (_ref.progress * _ref.end === 0) { 3019 stickyElem 3020 .removeClass('stuck active') 3021 .addClass('still'); 3022 if (_ref.direction === 1) { 3023 } else if (_ref.direction === -1) { 3024 } 3025 } 3026 }; 3027 } else if (stickyElem.hasClass('sticky-menu-3')) { 3028 stickyMenuType = 3; 3029 onUpdateKeep = true; 3030 args.onUpdate = function (_ref) { 3031 if (_ref.progress * _ref.end > offset) { 3032 stickyElem.addClass('slidedown stuck'); 3033 } else if (_ref.progress * _ref.end === 0) { 3034 stickyElem.removeClass('slidedown stuck'); 3035 } 3036 }; 3037 if ( 3038 zeenPrv.$body.hasClass('single-post') && 3039 stickyElem.hasClass('main-navigation') 3040 ) { 3041 extras = true; 3042 } 3043 } else if ( 3044 (stickyElem.hasClass('sticky-menu-1') || 3045 stickyElem.hasClass('sticky-menu-4')) && 3046 !stickyElem.hasClass('site-mob-header') 3047 ) { 3048 stickyMenuType = 1; 3049 if ( 3050 zeenPrv.$body.hasClass('single-post') && 3051 stickyElem.hasClass('main-navigation') 3052 ) { 3053 extras = true; 3054 } 3055 args.start = 3056 'top ' + zeenPrv.$wpAdminBarHeight > 0 3057 ? zeenPrv.$wpAdminBarHeight + 'px' 3058 : 'top'; 3059 args.onLeaveBack = function (_ref) { 3060 stickyElem.removeClass('stuck'); 3061 }; 3062 args.onEnter = function (_ref) { 3063 stickyElem.addClass('stuck'); 3064 }; 3065 } 3066 if (extras === true) { 3067 args.onUpdate = function (_ref) { 3068 if (_ref.progress * _ref.end > zeenPrv.$winHeight / 2) { 3069 stickyElem.addClass('stuck-full'); 3070 if (_ref.direction === 1) { 3071 stickyElem.removeClass('stuck-up'); 3072 } else if (_ref.direction === -1) { 3073 stickyElem.addClass('stuck-up'); 3074 } 3075 } 3076 if (onUpdateKeep === true) { 3077 if (_ref.progress * _ref.end > offset) { 3078 stickyElem.addClass('slidedown stuck'); 3079 } else if (_ref.progress * _ref.end === 0) { 3080 stickyElem.removeClass('slidedown stuck'); 3081 } 3082 } 3083 }; 3084 args.onLeaveBack = function (_ref) { 3085 stickyElem.removeClass('stuck-up stuck-full stuck'); 3086 }; 3087 } 3088 ScrollTrigger.matchMedia({ 3089 '(min-width: 860px)': function () { 3090 if (media === 'd') { 3091 zeenPrv.stickies.push(ScrollTrigger.create(args)); 3092 } 3093 }, 3094 '(max-width: 1199px)': function () { 3095 if (media === 'm') { 3096 zeenPrv.stickies.push(ScrollTrigger.create(args)); 3097 } 3098 }, 3099 }); 3100 }); 3101 }, 3102 liveSearchTr: function (e) { 3103 e.preventDefault(); 3104 $(this) 3105 .closest('.search-form-wrap') 3106 .find('> form') 3107 .trigger('submit'); 3108 }, 3109 liveSearch: function (e, args) { 3110 if (typeof args === 'undefined') { 3111 args = { 3112 field: zeenPrv.$modalSearchField, 3113 wrapper: zeenPrv.$modalSearch, 3114 results: zeenPrv.$modalSearchFound, 3115 }; 3116 } 3117 if (zeenPrv.timer) { 3118 clearTimeout(zeenPrv.timer); 3119 } 3120 if ($.inArray(e.keyCode, zeenPrv.ignoreCodes) === -1) { 3121 zeenPrv.timer = setTimeout(function () {
3122 zeenPrv.searchAjax(args); 3123 }, 800); 3124 } 3125 }, 3126 searchAjax: function (args) { 3127 var typing = args.field.val(); 3128 args.wrapper.removeClass('with-results'); 3129 if (typing.length < 2) { 3130 args.wrapper.addClass('zero-typo'); 3131 return; 3132 } 3133 var ppp = zeenJS.args.searchPpp; 3134 var child = 0; 3135 if (typeof args.ppp !== 'undefined') { 3136 ppp = args.ppp; 3137 child = 1; 3138 } 3139 3140 $.ajax({ 3141 method: 'GET', 3142 url: zeenJS.root + 's?kw=' + typing + '&ppp=' + ppp, 3143 dataType: 'html', 3144 beforeSend: function (xhr) { 3145 xhr.setRequestHeader('X-WP-Nonce', zeenPrv.nonce); 3146 args.wrapper.css('height', args.wrapper.height()); 3147 }, 3148 success: function (response) { 3149 args.results.empty(); 3150 args.results.append(response); 3151 args.wrapper.removeClass('zero-typo'); 3152 var articles = args.results.find('article'); 3153 if (articles.length === 0) { 3154 args.wrapper.addClass('no-results-found'); 3155 } else { 3156 args.wrapper.removeClass('no-results-found'); 3157 if ((articles.length + 1) % 3 === 0) { 3158 args.results 3159 .find('.block') 3160 .append('<article></article>'); 3161 } 3162 } 3163 3164 articles.imagesLoaded(function () { 3165 zeenPrv.blockAni(); 3166 args.wrapper.css('height', 'auto'); 3167 }); 3168 args.wrapper.addClass('with-results with-results-cache'); 3169 }, 3170 fail: function (response) { 3171 console.log('ERROR', response); 3172 }, 3173 }); 3174 }, 3175 mediaPlay: function () { 3176 zeenPrv.video.play(); 3177 zeenPrv.audio.play(); 3178 }, 3179 mediaStop: function () { 3180 zeenPrv.audio.pause(); 3181 zeenPrv.video.pause(); 3182 }, 3183 subL: function () { 3184 if (zeenJS.args.subL === false || Cookies.get('subL') === 'off') { 3185 return; 3186 } 3187 document.documentElement.addEventListener( 3188 'mouseleave', 3189 zeenPrv.subE, 3190 zeenPrv.$listener 3191 ); 3192 }, 3193 modalSubscribe: function () { 3194 zeenPrv.$modal.addClass('active active-4').removeClass('inactive'); 3195 zeenPrv.$body.addClass('modal-active'); 3196 setTimeout(function () { 3197 zeenPrv.$modal 3198 .find('.content-subscribe input[type=email]') 3199 .trigger('focus'); 3200 }, 400); 3201 }, 3202 modalOn: function (e) { 3203 e.preventDefault(); 3204 var trigger = $(this), 3205 modalData = trigger.data(), 3206 modalOutput; 3207 if (!zeenPrv.$body.hasClass('modal-skin-2')) { 3208 if ( 3209 modalData.type == 'frame' || 3210 modalData.type == 'qv' || 3211 modalData.type == 'embed' || 3212 modalData.type == '46' 3213 ) { 3214 zeenPrv.$modal 3215 .addClass('dark-overlay') 3216 .removeClass('light-overlay'); 3217 } else { 3218 zeenPrv.$modal 3219 .addClass('light-overlay') 3220 .removeClass('dark-overlay'); 3221 } 3222 } 3223 3224 if ( 3225 modalData.type == 'frame' || 3226 modalData.type == 'embed' || 3227 modalData.type == '46' 3228 ) { 3229 if (modalData.source == 'ext') { 3230 if (modalData.src === '') { 3231 modalOutput = 3232 '<span class="embed-error">' + 3233 zeenJS.i18n.embedError + 3234 '</span>'; 3235 } else { 3236 modalOutput = 3237 '<iframe title="media" width="560" height="315" class="frame" src="' + 3238 modalData.src + 3239 '" frameborder="0" seamless="seamless" allow="autoplay" allowfullscreen></iframe>'; 3240 } 3241 } else { 3242 if (modalData.format === 'audio') { 3243 if (zeenPrv.audio.canPlayType('audio/mpeg;')) { 3244 zeenPrv.audio.type = 'audio/mpeg'; 3245 if (modalData.srcA !== '') { 3246 zeenPrv.audio.src = modalData.srcA; 3247 } 3248 } else { 3249 zeenPrv.audio.type = 'audio/ogg'; 3250 if (modalData.srcB !== '') { 3251 zeenPrv.audio.src = modalData.srcB; 3252 } 3253 } 3254 zeenPrv.audio.controls = true; 3255 modalOutput = zeenPrv.audio; 3256 zeenPrv.audio.setAttribute( 3257 'controlsList', 3258 'nodownload' 3259 ); 3260 zeenPrv.audio.setAttribute('data-pid', modalData.pid); 3261 zeenPrv.mediaPlay(); 3262 } 3263 if (modalData.format === 'video') { 3264 if (zeenPrv.video.canPlayType('video/mp4;')) { 3265 zeenPrv.video.type = 'video/mp4'; 3266 if (modalData.srcA !== '') { 3267 zeenPrv.video.src = modalData.srcA; 3268 } 3269 } else { 3270 zeenPrv.video.type = 'video/ogg'; 3271 if (modalData.srcB !== '') { 3272 zeenPrv.video.src = modalData.srcB; 3273 } 3274 } 3275 zeenPrv.video.setAttribute('controls', 'controls'); 3276 zeenPrv.video.setAttribute( 3277 'controlsList', 3278 'nodownload' 3279 ); 3280 zeenPrv.mediaPlay(); 3281 modalOutput = zeenPrv.video; 3282 } 3283 setTimeout(function () { 3284 zeenPrv.$modalCustom.addClass('ani-in'); 3285 }, 350); 3286 } 3287 } 3288 if (modalData.type == 'frame') { 3289 zeenPrv.audio = new Audio(); 3290 zeenPrv.video = document.createElement('video'); 3291 zeenPrv.$modalCustom 3292 .addClass('is-' + modalData.format) 3293 .append(modalOutput); 3294 zeenPrv.$modal 3295 .addClass('active active-1') 3296 .removeClass('inactive'); 3297 zeenPrv.$body.addClass('modal-active'); 3298 zeenPrv.$modalCustom.addClass('tipi-spin ani-in'); 3299 if (modalData.source == 'ext') { 3300 zeenPrv.$modalCustom.find('iframe').on('load', function () { 3301 zeenPrv.$modalCustom 3302 .addClass('frame-ldd') 3303 .removeClass('tipi-spin'); 3304 }); 3305 } else { 3306 var obj = zeenPrv.$modalCustom.find('audio, video'); 3307 obj.on('loadstart', function () { 3308 zeenPrv.$modalCustom 3309 .addClass('frame-ldd') 3310 .removeClass('tipi-spin'); 3311 }); 3312 } 3313 } 3314 3315 if (modalData.type == 'embed') { 3316 var embedTarget = trigger.closest('.hero-wrap'); 3317 if ( 3318 typeof modalData.target !== 'undefined' && 3319 modalData.target !== 'hero-wrap' 3320 ) { 3321 embedTarget = embedTarget.find($(modalData.target)); 3322 } 3323 if (embedTarget.hasClass('active-embed')) { 3324 return; 3325 } 3326 var targetVal = parseInt(Math.random() * (9999 - 1000) + 1000); 3327 embedTarget 3328 .append( 3329 '<div id="frame-wrap-' + 3330 targetVal + 3331 '" class="frame-wrap media-wrap-' + 3332 modalData.format + 3333 '"></div>' 3334 ) 3335 .addClass('active-embed is-' + modalData.format) 3336 .removeClass('inactive-embed'); 3337 $('#frame-wrap-' + targetVal).append(modalOutput); 3338 } 3339 3340 if (modalData.type == '46') { 3341 var triggerArticle = trigger.closest('article'); 3342 if (triggerArticle.hasClass('playing')) { 3343 return; 3344 } 3345 var targetBlockWrap = $('#block-wrap-' + modalData.target); 3346 var targetBlockPiece1 = targetBlockWrap.find('.block-piece-1'); 3347 var target = targetBlockPiece1.find('.mask'); 3348 targetBlockPiece1 3349 .addClass('loading-embed') 3350 .removeClass('active-embed'); 3351 target.html( 3352 '<div class="frame-wrap-46-pad"><div id="frame-wrap-' + 3353 modalData.target + 3354 '" class="frame-wrap tipi-spin frame-wrap-46"></div></div>' 3355 ); 3356 $('#frame-wrap-' + modalData.target).append(modalOutput); 3357 3358 setTimeout(function () { 3359 targetBlockPiece1.addClass('active-embed embed-ldd-once'); 3360 }, 150); 3361 3362 if (trigger.hasClass('icon-size-s')) { 3363 triggerArticle 3364 .addClass('playing') 3365 .siblings() 3366 .removeClass('playing'); 3367 } 3368 } 3369 3370 if (modalData.type == 'search') { 3371 zeenPrv.$modal 3372 .addClass('active active-3') 3373 .removeClass('inactive'); 3374 zeenPrv.$body.addClass('modal-active'); 3375 if (zeenPrv.$winWidth > 1024) { 3376 setTimeout(function () { 3377 zeenPrv.$modalSearchField.trigger('focus'); 3378 }, 500); 3379 } 3380 } 3381 3382 if (modalData.type == 'subscribe') { 3383 zeenPrv.modalSubscribe(); 3384 } 3385 3386 if (modalData.type == 'latl') { 3387 zeenPrv.$modal 3388 .addClass('active active-2') 3389 .removeClass('inactive'); 3390 zeenPrv.$body.addClass('modal-active'); 3391 setTimeout(function () { 3392 zeenPrv.$modal 3393 .find('.latl-username > input') 3394 .trigger('focus'); 3395 }, 700); 3396 } 3397 3398 if (modalData.type == 'search-drop') { 3399 zeenPrv.activeFocus( 3400 trigger.closest('.drop-search-wrap'), 3401 'active-search' 3402 ); 3403 setTimeout(function () { 3404 trigger.parent().find('.search-field').trigger('focus'); 3405 }, 250); 3406 } 3407 3408 if (modalData.type == 'qv') { 3409 zeenPrv.$modal 3410 .addClass('active active-qv') 3411 .removeClass('inactive'); 3412 zeenPrv.$body.addClass('modal-active'); 3413 zeenPrv.ajaxCall = $.ajax({ 3414 method: 'GET', 3415 dataType: 'html', 3416 url: zeenJS.root + 'qv?id=' + modalData.pid, 3417 beforeSend: function (xhr) { 3418 zeenPrv.$modal.addClass('tipi-spin'); 3419 zeenPrv.$modalCustom 3420 .empty() 3421 .removeClass('is-video is-audio'); 3422 }, 3423 success: function (response) { 3424 zeenPrv.$modalCustom.html(DOMPurify.sanitize(response)); 3425 zeenPrv.$modalCustom 3426 .find('img') 3427 .imagesLoaded() 3428 .always(function (instance) { 3429 zeenPrv.$modal.removeClass('tipi-spin'); 3430 setTimeout(function () { 3431 zeenPrv.$modalCustom.addClass('ani-in'); 3432 }, 50); 3433 }); 3434 var forms = 3435 zeenPrv.$modalCustom.find('.variations_form'); 3436 $(document).trigger('zeenQVSuccess', { 3437 forms: forms, 3438 }); 3439 forms.each(function () { 3440 $(this) 3441 .find('.tipi-tip') 3442 .addClass('modal-tip') 3443 .on('mouseenter', zeenPrv.toolTipInit); 3444 }); 3445 }, 3446 fail: function (response) { 3447 console.log('ERROR', response); 3448 }, 3449 }); 3450 } 3451 return false;
3452 }, 3453 modalOff: function (e) { 3454 if (typeof e !== 'undefined') { 3455 e.preventDefault(); 3456 } 3457 zeenPrv.closeSlideMenu(e); 3458 zeenPrv.mediaStop(); 3459 var to = 0; 3460 if (zeenPrv.$modalCustom.hasClass('ani-in')) { 3461 zeenPrv.$modalCustom.removeClass('ani-in'); 3462 to = 220; 3463 } 3464 setTimeout(function () { 3465 zeenPrv.$modal 3466 .removeClass( 3467 'active active-qv active-4 active-3 active-2 active-1' 3468 ) 3469 .addClass('inactive'); 3470 zeenPrv.$body.removeClass('modal-active'); 3471 zeenPrv.$timedPup.removeClass('active'); 3472 }, to); 3473 setTimeout(function () { 3474 zeenPrv.$modalCustom.empty().removeClass('is-video is-audio'); 3475 }, to * 1.5); 3476 3477 setTimeout(function () { 3478 zeenPrv.$modalSearch.removeClass( 3479 'with-results-cache with-results' 3480 ); 3481 zeenPrv.$modalSearchField.val(''); 3482 }, 600); 3483 3484 if (zeenPrv.$body.hasClass('sub-l')) { 3485 zeenPrv.turnItOff(5); 3486 } 3487 if (zeenPrv.$body.hasClass('sub-pup')) { 3488 zeenPrv.turnItOff(6); 3489 } 3490 $(document).trigger('zeenModalOff'); 3491 }, 3492 parallax3s: function (override) { 3493 if ( 3494 this.$body.hasClass('tipi-builder-frame-inner') && 3495 override !== true 3496 ) { 3497 return; 3498 } 3499 var $parallax = $('.block-65'); 3500 if ($parallax.length === 0 || this.$winWidth < 480) { 3501 return; 3502 } 3503 $parallax.find('> article').each(function (index, elem) { 3504 var $elem = $(elem); 3505 if ($elem.hasClass('parallaxed')) { 3506 return true; 3507 } 3508 $elem.addClass('parallaxed'); 3509 $elem.imagesLoaded(function () { 3510 var elemOH = $elem.outerHeight(true); 3511 var $yData = $elem.hasClass('odd') 3512 ? elemOH * 0.35 3513 : elemOH * 0.15; 3514 zeenPrv.paraSaved.push( 3515 gsap 3516 .timeline({ 3517 scrollTrigger: { 3518 trigger: $elem, 3519 end: '+=' + (zeenPrv.$winHeight + elemOH), 3520 scrub: true, 3521 }, 3522 }) 3523 .fromTo( 3524 $elem.find('> .preview-mini-wrap'), 3525 { 3526 y: $yData + 'px', 3527 ease: 'none', 3528 }, 3529 { 3530 y: $yData * -1 + 'px', 3531 ease: 'none', 3532 } 3533 ) 3534 ); 3535 }); 3536 }); 3537 }, 3538 modalCheck: function () { 3539 var modalData = zeenPrv.$modal.data('fid'); 3540 if ( 3541 modalData !== '' && 3542 modalData === zeenPrv.$modal.find('.mc4wp-form').attr('id') 3543 ) { 3544 zeenPrv.modalSubscribe(); 3545 } 3546 }, 3547 maskLoader: function (el) { 3548 var ldd = 3549 typeof el === 'undefined' 3550 ? $('.hero-wrap') 3551 : el.find('.hero-wrap'); 3552 if (ldd.length === 0) { 3553 return; 3554 } 3555 ldd.imagesLoaded(function () { 3556 ldd.addClass('mask-loaded'); 3557 }); 3558 }, 3559 parallaxIt: function (override, el) { 3560 var $parallaxIt = 3561 typeof el === 'undefined' 3562 ? $('.parallax') 3563 : el.find('.parallax'); 3564 if ( 3565 $parallaxIt.length === 0 || 3566 (this.$body.hasClass('tipi-builder-frame-inner') && 3567 override !== true) 3568 ) { 3569 return; 3570 } 3571 3572 gsap.utils.toArray($parallaxIt).forEach(function (el, i) { 3573 if (el.classList.contains('parallaxed')) { 3574 return; 3575 } 3576 el.classList.add('parallaxed'); 3577 var args = { 3578 trigger: el, 3579 scrub: true, 3580 }; 3581 var img, 3582 imgWrap, 3583 hero = el.classList.contains('hero-wrap'); 3584 if ( 3585 el.classList.contains('hero-43') || 3586 el.classList.contains('hero-19') 3587 ) { 3588 imgWrap = el.querySelectorAll('.hero-background'); 3589 img = imgWrap[0].querySelectorAll('img '); 3590 } else { 3591 img = el.querySelectorAll('img:not(.avatar)'); 3592 imgWrap = el.classList.contains('hero-wrap') 3593 ? el.querySelectorAll('.hero') 3594 : el.querySelectorAll('.mask'); 3595 } 3596 if (imgWrap.length === 0) { 3597 return; 3598 } 3599 var $img = $(img), 3600 $imgWrap = $(imgWrap); 3601 $imgWrap.css('height', ''); 3602 3603 if (hero === false) { 3604 $img.imagesLoaded(function () { 3605 el.classList.add('mask-loaded'); 3606 }); 3607 } else { 3608 var parent = el 3609 .closest('.post-wrap') 3610 .classList.contains('ipl-wrap'); 3611 args.top = parent === true ? 'top bottom' : 'top top'; 3612 } 3613 3614 var imgHeight = imgWrap[0].offsetHeight, 3615 movement = imgHeight * 0.2; 3616 if (el.classList.contains('parallax--resized')) { 3617 $img.css('top', imgHeight * -0.1); 3618 $imgWrap.css('height', parseInt(imgHeight * 0.8) + 'px'); 3619 } 3620 if (el.classList.contains('parallax-tight')) { 3621 movement = imgHeight * 0.16; 3622 } else if (zeenPrv.$winHeight > zeenPrv.$winWidth) { 3623 movement = imgHeight * 0.125; 3624 } 3625 if (img.length > 0) { 3626 zeenPrv.roP = true; 3627 zeenPrv.resizeObs(); 3628 zeenPrv.paraSaved.push( 3629 gsap.timeline({ scrollTrigger: args }).fromTo( 3630 img[0], 3631 { 3632 y: movement * -1 + 'px', 3633 ease: 'none', 3634 }, 3635 { 3636 y: movement + 'px', 3637 ease: 'none', 3638 } 3639 ) 3640 ); 3641 } 3642 }); 3643 }, 3644 resizeObs: function () { 3645 if ('ResizeObserver' in window && zeenPrv.ro === false) { 3646 var obsHeight = 0; 3647 zeenPrv.ro = true; 3648 new ResizeObserver(function (entries) {
3649 var newHeight = entries[0].contentRect.height; 3650 if (parseInt(newHeight) !== obsHeight) { 3651 if (zeenPrv.roP === true) { 3652 zeenPrv.parallaxRefresh(); 3653 } 3654 if (zeenPrv.roS === true) { 3655 zeenPrv.reSidebars(); 3656 } 3657 obsHeight = parseInt(newHeight); 3658 } 3659 }).observe(zeenPrv.$page[0]); 3660 } 3661 }, 3662 hero31: function () { 3663 if (this.$hero31.length === 0) { 3664 return; 3665 } 3666 var $figure; 3667 if (this.$hero31.closest('.post-wrap').hasClass('format-gallery')) { 3668 $figure = this.$hero31.find('> .slider'); 3669 this.doHero31($figure); 3670 } else { 3671 $figure = this.$hero31.find('.fi-bg'); 3672 $figure.imagesLoaded({ background: true }, function () { 3673 $figure.addClass('fi-bg-ldd'); 3674 gsap.to($figure, 0.3, { opacity: 1 }); 3675 setTimeout(function () { 3676 zeenPrv.doHero31($figure); 3677 }, 300); 3678 }); 3679 } 3680 }, 3681 doHero31: function ($figure) { 3682 var height = this.$winHeight - this.$wpAdminBarHeight; 3683 if (zeenPrv.$winWidth > 767) { 3684 height -= 3685 this.$headerHeight - 3686 this.$siteNav.outerHeight() - 3687 this.$secondaryWrap.outerHeight(); 3688 } else { 3689 height -= this.$mobHead.outerHeight(); 3690 } 3691 height -= this.$winHeight * 0.1; 3692 this.$hero31.parent().height(height); 3693 3694 var ST = gsap 3695 .timeline({ 3696 scrollTrigger: { 3697 trigger: this.$body, 3698 scrub: true, 3699 start: 'top top', 3700 end: this.$winHeight * 0.1 + 'px', 3701 }, 3702 }) 3703 .fromTo( 3704 $figure, 3705 { 3706 opacity: '1', 3707 ease: 'none', 3708 }, 3709 { 3710 opacity: zeenJS.args.heroFade, 3711 ease: 'none', 3712 } 3713 ) 3714 .fromTo( 3715 this.$hero31.find('.mask-overlay'), 3716 { 3717 opacity: '0', 3718 ease: 'none', 3719 }, 3720 { 3721 opacity: 1, 3722 ease: 'none', 3723 } 3724 ); 3725 }, 3726 loadMoreButton: function (e) { 3727 e.preventDefault(); 3728 var $elem = $(this), 3729 $elemData = $elem.data(); 3730 if ($elem.hasClass('loaded')) { 3731 return; 3732 } 3733 zeenPrv.loadMore($elem, $elemData); 3734 }, 3735 infScr: function () { 3736 var infScr = $('.inf-scr'); 3737 if (infScr.length === 0) { 3738 return; 3739 } 3740 var $elem, $elemData; 3741 var mnp = infScr.first().data('mnp'); 3742 3743 infScr.each(function (index, elem) { 3744 $elem = $(elem); 3745 var $block = $elem.closest('.block-wrap'); 3746 if ( 3747 $elem.hasClass('loaded') || 3748 $elem.hasClass('inf-load-more') || 3749 ($block.hasClass('dt-off') && zeenPrv.$winWidth > 767) || 3750 ($block.hasClass('mob-off') && zeenPrv.$winWidth < 768) 3751 ) { 3752 return; 3753 } 3754 $elemData = $elem.data(); 3755 $elemData.mnp = mnp; 3756 var masonry = !$block.hasClass('block-wrap-masonry'); 3757 var ST = ScrollTrigger.create({ 3758 trigger: $elem, 3759 start: '-=500 bottom', 3760 once: masonry, 3761 onEnter: function (_ref) { 3762 zeenPrv.loadMore($elem, $elemData); 3763 $elem.addClass('loaded'); 3764 zeenPrv.infStRefresh(); 3765 }, 3766 }); 3767 if (masonry === false) { 3768 zeenPrv.infST.push(ST); 3769 } 3770 }); 3771 }, 3772 loaded: function () { 3773 if ( 3774 this.$body.hasClass('body--dark--tr') && 3775 this.$body.hasClass('skin-light') 3776 ) { 3777 this.skinMode(undefined); 3778 } 3779 this.slideInP(); 3780 this.subL(); 3781 this.timedPup(); 3782 this.verticalMenus(); 3783 this.iFrameLazy(); 3784 }, 3785 likes: function (e) { 3786 e.preventDefault(); 3787 var elem = $(this); 3788 if (elem.hasClass('liking') || elem.hasClass('liked')) { 3789 return; 3790 } 3791 var data = elem.data(); 3792 $.ajax({ 3793 method: 'POST', 3794 data: { pid: data.pid }, 3795 url: zeenJS.root + 'lk', 3796 beforeSend: function (xhr) { 3797 elem.addClass('liking'); 3798 xhr.setRequestHeader('X-WP-Nonce', zeenPrv.nonce); 3799 }, 3800 success: function (response) { 3801 elem.removeClass('liking').addClass('liked'); 3802 elem.find('.tipi-value').html( 3803 DOMPurify.sanitize(response[0]) 3804 ); 3805 var checker = Cookies.getJSON('wp_liked_articles'); 3806 if (typeof checker === 'undefined') { 3807 checker = response[1]; 3808 } else { 3809 checker.push(response[1][0]); 3810 } 3811 Cookies.set('wp_liked_articles', checker, { 3812 sameSite: 'lax', 3813 expires: zeenJS.args.cookieDuration, 3814 path: zeenJS.args.path, 3815 }); 3816 }, 3817 fail: function (response) { 3818 console.log('ERROR', response); 3819 }, 3820 }); 3821 }, 3822 upDown: function (e) { 3823 e.preventDefault(); 3824 var _this = $(this), 3825 type = _this.data('type'), 3826 _thisP = _this.closest('.zeen-up-down'), 3827 pid = _thisP.data('pid'); 3828 if (_this.hasClass('updown-do')) { 3829 return; 3830 } 3831 $.ajax({ 3832 method: 'POST', 3833 data: { 3834 type: type, 3835 pid: pid, 3836 }, 3837 url: zeenJS.root + 'ud', 3838 beforeSend: function (xhr) { 3839 _thisP.addClass('updown-do'); 3840 xhr.setRequestHeader('X-WP-Nonce', zeenPrv.nonce); 3841 }, 3842 success: function (response) { 3843 _thisP 3844 .find('.zeen__up .updown-count') 3845 .html(DOMPurify.sanitize(response['upNew'])); 3846 _thisP 3847 .find('.zeen__down .updown-count') 3848 .html(DOMPurify.sanitize(response['downNew'])); 3849 Cookies.set('updown', JSON.stringify(response['cook']), { 3850 sameSite: 'lax', 3851 expires: 30, 3852 }); 3853 _thisP.removeClass('updown-do'); 3854 }, 3855 error: function (response) { 3856 console.log('ERROR', response.responseText); 3857 }, 3858 }); 3859 }, 3860 reaction: function (e) { 3861 e.preventDefault(); 3862 var _this = $(this), 3863 reaction = _this.data('reaction'), 3864 _thisP = _this.closest('.reaction-wrap'), 3865 pid = _thisP.data('pid'); 3866 $.ajax({ 3867 method: 'POST', 3868 data: { 3869 reaction: reaction, 3870 pid: pid, 3871 }, 3872 url: zeenJS.root + 'rt', 3873 beforeSend: function (xhr) { 3874 _thisP.addClass('reacting--active'); 3875 _this.addClass('reacting'); 3876 xhr.setRequestHeader('X-WP-Nonce', zeenPrv.nonce); 3877 }, 3878 success: function (response) { 3879 if (parseInt(response.countStyle) === 2) { 3880 var oldScore = _this.find('.count').data('old-score'); 3881 if (typeof oldScore === 'undefined') { 3882 _this 3883 .find('.count') 3884 .data('old-score', _this.find('.count').html()); 3885 if (response.vote === 1) { 3886 _this.find('.count').html('+1'); 3887 } else { 3888 _this.find('.count').html('-1'); 3889 } 3890 } else { 3891 _this 3892 .find('.count') 3893 .html(_this.find('.count').data('old-score')) 3894 .removeData('old-score'); 3895 } 3896 } else { 3897 _this 3898 .find('.count') 3899 .html(DOMPurify.sanitize(response.newScore)); 3900 } 3901 Cookies.set('reaction', JSON.stringify(response.cook), { 3902 sameSite: 'lax', 3903 expires: zeenJS.args.cookieDuration, 3904 path: zeenJS.args.path, 3905 }); 3906 _thisP.removeClass('reacting--active'); 3907 _this.removeClass('reacting'); 3908 _this.toggleClass('reacted'); 3909 }, 3910 error: function (response) { 3911 thisP.removeClass('reacting--active'); 3912 _this.removeClass('reacting'); 3913 console.log('ERROR', response.responseText); 3914 }, 3915 }); 3916 }, 3917 ipl: function () { 3918 var $ipl = $('.ipl'); 3919 if ( 3920 $ipl.length === 0 || 3921 (zeenJS.args.iplMob !== true && zeenPrv.$winWidth < 768) 3922 ) { 3923 return; 3924 } 3925 $ipl.each(function (index, elem) { 3926 elem = $(this); 3927 var data = elem.data(); 3928 if (elem.hasClass('loaded')) { 3929 return; 3930 } 3931 ScrollTrigger.create({ 3932 trigger: $(elem), 3933 start: '-=' + zeenPrv.$winHeight * 2 + ' center', 3934 once: true, 3935 onEnter: function (_ref) { 3936 zeenPrv.runIpl(elem, data); 3937 elem.addClass('loaded'); 3938 }, 3939 }); 3940 }); 3941 }, 3942 updateHref: function (title, url) { 3943 if (zeenJS.args.infUrlChange === false) { 3944 return; 3945 } 3946 window.history.pushState('', title, url); 3947 if (title !== '') { 3948 document.title = title; 3949 } 3950 }, 3951 GA: function (url) { 3952 var index = url.indexOf(zeenJS.args.siteUrl); 3953 if (index !== -1) { 3954 url = 3955 url.slice(0, index) + 3956 url.slice(index + zeenJS.args.siteUrl.length); 3957 } 3958 if (typeof _gaq !== 'undefined' && _gaq !== null) {
3959 _gaq.push(['_trackPageview', url]); 3960 } 3961 if (typeof ga !== 'undefined' && ga !== null) { 3962 ga('send', 'pageview', url); 3963 } 3964 }, 3965 subE: function (e) { 3966 if ( 3967 Cookies.get('subL') === 'off' && 3968 zeenJS.args.subCookie === true 3969 ) { 3970 document.documentElement.removeEventListener( 3971 'mouseleave', 3972 zeenPrv.subE, 3973 zeenPrv.$listener 3974 ); 3975 return; 3976 } 3977 if (zeenPrv.$body.hasClass('modal-active') || e.clientY > 0) { 3978 return; 3979 } 3980 zeenPrv.$body.addClass('sub-l'); 3981 zeenPrv.modalSubscribe(); 3982 }, 3983 runIpl: function (elem, data) { 3984 if (typeof data === 'undefined') { 3985 elem = $(this); 3986 data = elem.data(); 3987 } 3988 var method = zeenJS.args.iplCached === true ? 'GET' : 'POST'; 3989 $.ajax({ 3990 method: method, 3991 data: { pid: data.pid, ipl: true }, 3992 dataType: 'html', 3993 url: zeenJS.root + 'ipl', 3994 beforeSend: function (xhr) { 3995 xhr.setRequestHeader('X-WP-Nonce', zeenPrv.nonce); 3996 }, 3997 success: function (response) { 3998 zeenPrv.$primary.append(response); 3999 var $currentPost = zeenPrv.$primary.find( 4000 '> .post-' + data.pid 4001 ); 4002 4003 var rect = $currentPost[0].getBoundingClientRect(), 4004 scrollTop = 4005 window.pageYOffset || 4006 document.documentElement.scrollTop, 4007 height = rect.top + scrollTop; 4008 if (zeenPrv.$winWidth > 767) { 4009 height -= 180; 4010 if ( 4011 zeenPrv.$header.hasClass('sticky-menu-1') || 4012 zeenPrv.$header.hasClass('sticky-menu-3') 4013 ) { 4014 height -= zeenPrv.$headerHeight; 4015 } 4016 if ( 4017 zeenPrv.$siteNav.hasClass('sticky-menu-1') || 4018 zeenPrv.$siteNav.hasClass('sticky-menu-3') 4019 ) { 4020 height -= zeenPrv.$siteNav.outerHeight(); 4021 } 4022 } 4023 if (scrollTop > height) { 4024 window.scrollTo(0, height); 4025 } 4026 $(document).trigger('zeenAfterInfinitePostLoad', { 4027 postid: data.pid, 4028 }); 4029 zeenPrv.blockAni(); 4030 zeenPrv.tempAni(); 4031 zeenPrv.iFrameLazy(); 4032 zeenPrv.lrTempAni(); 4033 zeenPrv.sliderInit(); 4034 4035 for (var i = zeenJS.args.ipl.length - 1; i >= 0; i--) { 4036 $.get( 4037 zeenJS.args.pluginsUrl + '/' + zeenJS.args.ipl[i] 4038 ); 4039 } 4040 if (typeof window.instgrm !== 'undefined') { 4041 window.instgrm.Embeds.process(); 4042 } 4043 4044 if ( 4045 zeenJS.args.fbComs === true && 4046 zeenJS.args.iplComs === true 4047 ) { 4048 FB.XFBML.parse($currentPost[0]); 4049 } 4050 var asr; 4051 4052 ScrollTrigger.create({ 4053 trigger: elem, 4054 start: 'top center', 4055 onLeaveBack: function (_ref) { 4056 if (zeenJS.args.disqus !== false) { 4057 asr = zeenPrv.$primary.find( 4058 '> .post-' + 4059 data.pidori + 4060 ' .disqus-replace' 4061 ); 4062 if (asr.length > 0) { 4063 $('#disqus_thread') 4064 .attr('id', '') 4065 .addClass('disqus-replace'); 4066 asr.attr('id', 'disqus_thread'); 4067 setTimeout(function () { 4068 DISQUS.reset({ 4069 reload: true, 4070 config: function () { 4071 this.page.identifier = 4072 data.pidori; 4073 this.page.url = data.prev; 4074 this.page.title = 4075 data.titlePrev; 4076 }, 4077 }); 4078 }, 50); 4079 } 4080 } 4081 if (zeenPrv.$progress.length > 0) { 4082 zeenPrv.$progress.css( 4083 'background-color', 4084 data.prevHex 4085 ); 4086 } 4087 zeenPrv.updateHref(data.titlePrev, data.prev); 4088 zeenPrv.GA(data.prev); 4089 zeenPrv.$iplTitle.html(data.titlePrev); 4090 if (zeenPrv.$stickyP2Share.length > 0) { 4091 zeenPrv.$stickyP2Share 4092 .find('.share-button-tw') 4093 .attr( 4094 'href', 4095 'https://twitter.com/share?url=' + 4096 encodeURIComponent(data.prev) 4097 ); 4098 zeenPrv.$stickyP2Share 4099 .find('.share-button-fb') 4100 .attr( 4101 'href', 4102 'https://www.facebook.com/sharer/sharer.php?u=' + 4103 encodeURIComponent(data.prev) 4104 ); 4105 } 4106 4107 if (zeenPrv.$mobBotShare.length > 0) { 4108 zeenPrv.$mobBotShare 4109 .find('.share-button-tw') 4110 .attr( 4111 'href', 4112 'https://twitter.com/share?url=' + 4113 encodeURIComponent(data.prev) 4114 ); 4115 zeenPrv.$mobBotShare 4116 .find('.share-button-fb') 4117 .attr( 4118 'href', 4119 'https://www.facebook.com/sharer/sharer.php?u=' + 4120 encodeURIComponent(data.prev) 4121 ); 4122 zeenPrv.$mobBotShare 4123 .find('.share-button-msg') 4124 .attr( 4125 'href', 4126 'fb-messenger://share/?link=' + 4127 encodeURIComponent(data.prev) 4128 ); 4129 zeenPrv.$mobBotShare 4130 .find('.share-button-wa') 4131 .attr( 4132 'href', 4133 'whatsapp://send?text=' + 4134 data.titlePrev + 4135 ' â ' + 4136 encodeURIComponent(data.prev) 4137 ); 4138 } 4139 }, 4140 onEnter: function (_ref) { 4141 if (zeenPrv.$progress.length > 0) { 4142 zeenPrv.$progress.css( 4143 'background-color', 4144 data.nextHex 4145 ); 4146 } 4147 zeenPrv.updateHref(data.titleNext, data.next); 4148 zeenPrv.GA(data.next); 4149 zeenPrv.$iplTitle.html(data.titleNext); 4150 if (zeenPrv.$stickyP2Share.length > 0) { 4151 zeenPrv.$stickyP2Share 4152 .find('.share-button-tw') 4153 .attr( 4154 'href', 4155 'https://twitter.com/share?url=' + 4156 encodeURIComponent(data.next) 4157 ); 4158 zeenPrv.$stickyP2Share 4159 .find('.share-button-fb') 4160 .attr( 4161 'href', 4162 'https://www.facebook.com/sharer/sharer.php?u=' + 4163 encodeURIComponent(data.next) 4164 ); 4165 } 4166 if (zeenPrv.$mobBotShare.length > 0) { 4167 zeenPrv.$mobBotShare 4168 .find('.share-button-tw') 4169 .attr( 4170 'href', 4171 'https://twitter.com/share?url=' + 4172 encodeURIComponent(data.next) 4173 ); 4174 zeenPrv.$mobBotShare 4175 .find('.share-button-fb') 4176 .attr( 4177 'href', 4178 'https://www.facebook.com/sharer/sharer.php?u=' + 4179 encodeURIComponent(data.next) 4180 ); 4181 zeenPrv.$mobBotShare 4182 .find('.share-button-msg') 4183 .attr( 4184 'href', 4185 'fb-messenger://share/?link=' + 4186 encodeURIComponent(data.next) 4187 ); 4188 zeenPrv.$mobBotShare 4189 .find('.share-button-wa') 4190 .attr( 4191 'href', 4192 'whatsapp://send?text=' + 4193 data.titleNext + 4194 ' â ' + 4195 encodeURIComponent(data.next) 4196 ); 4197 } 4198 4199 if (zeenJS.args.disqus !== false) { 4200 asr = $currentPost.find('.disqus-replace'); 4201 if (asr.length > 0) { 4202 $('#disqus_thread') 4203 .attr('id', '') 4204 .addClass('disqus-replace'); 4205 asr.attr('id', 'disqus_thread'); 4206 setTimeout(function () { 4207 DISQUS.reset({ 4208 reload: true, 4209 config: function () { 4210 this.page.identifier = data.pid; 4211 this.page.url = data.next; 4212 this.page.title = 4213 data.titleNext; 4214 }, 4215 }); 4216 }, 50); 4217 } 4218 } 4219 }, 4220 }); 4221 ScrollTrigger.create({ 4222 trigger: elem, 4223 start: 'top bottom', 4224 once: true, 4225 onEnter: function (_ref) { 4226 zeenPrv.$stickyP2.addClass('ipl-done'); 4227 $currentPost.removeClass('ipl-loading'); 4228 $currentPost.prev().addClass('ipl-bg'); 4229 setTimeout(function () { 4230 zeenPrv.parallaxIt(null, $currentPost); 4231 zeenPrv.maskLoader($currentPost); 4232 }, 500); 4233 setTimeout(function () { 4234 zeenPrv.sidebars(); 4235 zeenPrv.stickyEl(); 4236 zeenPrv.imgControl(); 4237 zeenPrv.lightboxInit(); 4238 }, 750); 4239 setTimeout(function () { 4240 zeenPrv.postTracks(); 4241 }, 900); 4242 }, 4243 }); 4244 zeenPrv.$entryContent = $( 4245 '.entry-content:not(.progresson)' 4246 ); 4247 zeenPrv.videoWrap(); 4248 zeenPrv.stickyEl(); 4249 zeenPrv.loopAni(); 4250 zeenPrv.ipl(); 4251 4252 if ( 4253 zeenPrv.$primary.find('.no-more-articles-wrap').length > 4254 0 4255 ) { 4256 $('#ipl-loader').addClass('ipl-end'); 4257 } 4258 if ( 4259 (zeenPrv.$skinMode.length > 0 && 4260 zeenPrv.$skinMode.hasClass('triggered')) || 4261 zeenPrv.$body.hasClass('body--dark--tr') 4262 ) { 4263 var reviewBlocks = $currentPost.find( 4264 '.lets-review-block__wrap' 4265 ); 4266 if ( 4267 zeenPrv.$skinMode.hasClass('mode--alt') || 4268 zeenPrv.$body.hasClass('body--dark--tr') 4269 ) { 4270 $currentPost 4271 .removeClass('article-layout-skin-1') 4272 .addClass('article-layout-skin-2'); 4273 reviewBlocks 4274 .removeClass('lets-review-skin-1') 4275 .addClass('lets-review-skin-2'); 4276 } else { 4277 reviewBlocks.each(function () { 4278 var _this = $(this); 4279 if (parseInt(_this.data('skin')) === 1) { 4280 _this 4281 .removeClass('lets-review-skin-2') 4282 .addClass('lets-review-skin-1'); 4283 } 4284 }); 4285 $currentPost 4286 .removeClass('article-layout-skin-2') 4287 .addClass('article-layout-skin-1'); 4288 } 4289 } 4290 }, 4291 fail: function (response) { 4292 console.log('ERROR', response); 4293 }, 4294 }); 4295 $('.inf-scr').removeClass('active'); 4296 }, 4297 blockMore: function (e, _ref) { 4298 var $elem = typeof _ref === 'undefined' ? $(this) : _ref; 4299 if (!$elem.hasClass('block-mm-changer')) { 4300 e.preventDefault(); 4301 } 4302 if ($elem.hasClass('no-more') || $elem.hasClass('active')) { 4303 return; 4304 } 4305 var $elemPa, $elemMenu, mm, mmChanger; 4306 if ($elem.hasClass('block-mm-changer')) { 4307 $elemMenu = $elem.closest('.menu'); 4308 if ( 4309 parseInt($elemMenu.data('mm')) < 10 || 4310 parseInt($elemMenu.data('mm')) > 50 4311 ) { 4312 return; 4313 } 4314 $elemPa = $elemMenu.find('.block-wrap'); 4315 mm = true; 4316 mmChanger = true; 4317 } else { 4318 $elemPa = $elem.closest('.block-wrap'); 4319 if ($elemPa.parent().hasClass('menu-wrap')) { 4320 mm = true; 4321 } 4322 } 4323 4324 var data = $elem.data(), 4325 parentData = $elemPa.data(); 4326 var $blockData = $('#block-wrap-' + parentData.id); 4327 var $blockLoading = $blockData.find('> div'); 4328 if ($blockLoading.hasClass('loading')) { 4329 return; 4330 } 4331 4332 var changer = $elem.hasClass('block-changer') ? true : false, 4333 dataDir = 4334 typeof data.dir !== 'undefined' && data.dir === 1 ? 1 : 2, 4335 trigger_type = typeof data.dir === 'undefined' ? 1 : 2, 4336 append = trigger_type, 4337 paged, 4338 loaders, 4339 term = { term: data.term, id: data.tid }, 4340 setter = 'zeen_' + parentData.id; 4341 4342 if ( 4343 window[setter].target !== 0 && 4344 (typeof data.tid === 'undefined' || data.tid === 0) 4345 ) { 4346 setter = setter + '_' + window[setter].target; 4347 } 4348 4349 if (data.tid > 0) { 4350 setter = setter + '_' + data.tid; 4351 if (typeof window[setter] === 'undefined') { 4352 window[setter] = $.extend( 4353 true, 4354 {}, 4355 window['zeen_' + parentData.id] 4356 ); 4357 window[setter].args.cat = ''; 4358 window[setter].args.tag__in = ''; 4359 window[setter].args.post__in = ''; 4360 window[setter].term = ''; 4361 if (data.term === 'category') { 4362 window[setter].args.cat = data.tid; 4363 } else if (data.term === 'post_tag') { 4364 window[setter].args.tag__in = data.tid; 4365 } else { 4366 window[setter].args.tax_query = { 4367 taxonomy: term.term, 4368 field: 'term_id', 4369 terms: term.id, 4370 }; 4371 window[setter].term = term; 4372 } 4373 } 4374 window['zeen_' + parentData.id].target = data.tid; 4375 } 4376 if (data.reset === 1) { 4377 setter = 'zeen_' + parentData.id; 4378 window[setter].target = 0; 4379 } 4380 var title = data.title, 4381 reset = data.reset, 4382 subtitle = data.subtitle, 4383 newUrl = data.ur, 4384 $elemN = $elemPa.find('.block-more-2'), 4385 $elemP = $elemPa.find('.block-more-1'), 4386 mnp; 4387 if ($elemN.length === 0) { 4388 $elemN = $elemPa.find('.block-more-3'); 4389 } else { 4390 if (typeof data.term !== 'undefined') { 4391 $elemN.data({ term: data.term, tid: data.tid }); 4392 $elemP.data({ term: data.term, tid: data.tid }); 4393 } else { 4394 $elemN.removeData('term').removeData('tid'); 4395 $elemP.removeData('term').removeData('tid'); 4396 } 4397 } 4398 if (changer === true) { 4399 paged = 1; 4400 append = 2; 4401 if ($elem.hasClass('block-mm-changer')) { 4402 $elemMenu.find('.active').removeClass('active'); 4403 } else { 4404 var $sorter = $elem.closest('.sorter'); 4405 $sorter.find('.block-changer').removeClass('active'); 4406 $sorter 4407 .find('.current-txt') 4408 .html(data.sorttitle + zeenJS.args.iconSorter); 4409 } 4410 if ($elem.hasClass('block-mm-init')) { 4411 $elemMenu 4412 .find('.block-mm-init') 4413 .removeClass('block-mm-init'); 4414 } 4415 $elem.addClass('active'); 4416 window[setter].next = 2; 4417 window[setter].prev = 0; 4418 mnp = data.mnp; 4419 if (mnp === 1) { 4420 loaders = 'off'; 4421 } 4422 } else { 4423 mnp = window[setter].mnp; 4424 if (dataDir === 1) { 4425 paged = window[setter].prev; 4426 window[setter].prev = parseInt(window[setter].prev) - 1; 4427 window[setter].next = parseInt(window[setter].next) - 1; 4428 } else { 4429 paged = window[setter].next; 4430 window[setter].prev = parseInt(window[setter].prev) + 1; 4431 window[setter].next = parseInt(window[setter].next) + 1; 4432 } 4433 } 4434 4435 var blockData = window[setter], 4436 args = { 4437 blockData: blockData, 4438 $blockData: $blockData, 4439 $elemN: $elemN, 4440 $elemP: $elemP, 4441 dir: data.dir, 4442 changer: changer, 4443 trigger_type: trigger_type, 4444 append: append, 4445 loaders: loaders, 4446 title: title, 4447 newUrl: newUrl, 4448 reset: reset, 4449 subtitle: subtitle, 4450 response: '', 4451 mm: mm, 4452 }; 4453 $.ajax({ 4454 method: 'GET', 4455 data: { 4456 paged: paged, 4457 type: trigger_type, 4458 mm: mm, 4459 term: term, 4460 data: blockData, 4461 }, 4462 dataType: 'html', 4463 url: zeenJS.root + 'block', 4464 beforeSend: function (xhr) { 4465 if (mmChanger === true) { 4466 if ( 4467 $elemMenu.parent().find('> a').data('ppp') >= 4468 data.count 4469 ) { 4470 args.loaders = 'off'; 4471 } 4472 } 4473 4474 $blockLoading.addClass('loading tipi-spin'); 4475 xhr.setRequestHeader('X-WP-Nonce', zeenPrv.nonce); 4476 if (zeenPrv.ajaxChecker(setter + '_' + paged)) { 4477 args.response = zeenPrv.ajaxGetter( 4478 setter + '_' + paged 4479 ); 4480 zeenPrv.ajaxLoadMore(args); 4481 4482 if (mmChanger === true) { 4483 $elemPa.closest('.mm-wrap').addClass('active-1'); 4484 } else if (mm === true) { 4485 $elemPa.closest('.mm-wrap').removeClass('active-1'); 4486 } 4487 if (append === 2) { 4488 if (dataDir === 1) { 4489 $elemPa 4490 .removeClass('loaded block-ani-r') 4491 .addClass('block-ani-l'); 4492 } else { 4493 $elemPa 4494 .removeClass('loaded block-ani-l') 4495 .addClass('block-ani-r'); 4496 } 4497 } 4498 zeenPrv.reSidebars(); 4499 $elemPa.addClass('loaded'); 4500 zeenPrv.parallaxRefresh(); 4501 zeenPrv.videoWrap(); 4502 return false;
4503 } 4504 }, 4505 success: function (response) { 4506 response = JSON.parse(response); 4507 args.response = response; 4508 zeenPrv.ajaxLoadMore(args); 4509 if (mmChanger === true) { 4510 $elemPa.closest('.mm-wrap').addClass('active-1'); 4511 } else if (mm === true) { 4512 $elemPa.closest('.mm-wrap').removeClass('active-1'); 4513 } 4514 zeenPrv.ajaxSetter(setter + '_' + paged, response); 4515 $elemPa.addClass('loaded'); 4516 zeenPrv.parallaxRefresh(); 4517 zeenPrv.videoWrap(); 4518 if (append === 2) { 4519 if (dataDir === 1) { 4520 $elemPa 4521 .removeClass('block-ani-r') 4522 .addClass('block-ani-l'); 4523 } else { 4524 $elemPa 4525 .removeClass('block-ani-l') 4526 .addClass('block-ani-r'); 4527 } 4528 } 4529 }, 4530 fail: function (response) { 4531 console.log('ERROR', response); 4532 }, 4533 }); 4534 return false; 4535 }, 4536 masonryAppend: function ($items, target) { 4537 $items.each(function () { 4538 var item = $(this); 4539 if (item.hasClass('masonry__col-1')) { 4540 target 4541 .find('.masonry__col-1') 4542 .append(item.children('article')); 4543 } else if (item.hasClass('masonry__col-2')) { 4544 target 4545 .find('.masonry__col-2') 4546 .append(item.children('article')); 4547 } else if (item.hasClass('masonry__col-3')) { 4548 target 4549 .find('.masonry__col-3') 4550 .append(item.children('article')); 4551 } else if (item.hasClass('pagination')) { 4552 target.append(item); 4553 } 4554 }); 4555 }, 4556 ajaxLoadMore: function (args) { 4557 var $items = $(args.response[1]); 4558 if ( 4559 typeof args.title !== 'undefined' || 4560 typeof args.subtitle !== 'undefined' 4561 ) { 4562 var titleTarget = args.$blockData.find('.block-title-wrap'); 4563 if (typeof args.title !== 'undefined') { 4564 if (typeof args.newUrl !== 'undefined') { 4565 titleTarget 4566 .find('.block-title-url') 4567 .attr('href', args.newUrl) 4568 .html(args.title); 4569 } else { 4570 titleTarget.find('.block-title').html(args.title); 4571 } 4572 } 4573 if (typeof args.subtitle !== 'undefined') { 4574 titleTarget.find('.block-subtitle').html(args.subtitle); 4575 } 4576 } 4577 var target = args.$blockData.find('.block'); 4578 var masonryTarget = target.find('> .block-masonry'); 4579 if (args.append === 1) { 4580 if (args.$blockData.hasClass('block-wrap-grid')) { 4581 target.last().after($items); 4582 } else if (masonryTarget.length > 0) { 4583 zeenPrv.masonryAppend($items, target); 4584 } else { 4585 target.append($items); 4586 } 4587 zeenPrv.reSidebars(); 4588 } else { 4589 if (args.$blockData.hasClass('block-wrap-grid')) { 4590 args.$blockData.css('height', args.$blockData.height()); 4591 if (target.length === 1) { 4592 target.replaceWith($items); 4593 } else { 4594 $items = $items.filter(function () { 4595 return this.nodeType === 1; 4596 }); 4597 for (var i = 0; i < target.length; i++) { 4598 target[i].replaceWith($items[i]); 4599 } 4600 } 4601 target.imagesLoaded(function () { 4602 args.$blockData.css('height', 'auto'); 4603 }); 4604 } else { 4605 target.css('height', target.height()); 4606 target.html($items); 4607 target.imagesLoaded(function () { 4608 target.css('height', 'auto'); 4609 }); 4610 } 4611 }
4612 if (args.manual !== true) { 4613 if (args.changer === true) { 4614 if (args.loaders === 'off') { 4615 args.$elemN.addClass('no-more'); 4616 args.$elemP.addClass('no-more'); 4617 if (args.$elemN.hasClass('block-more-3')) { 4618 args.$elemN.html(zeenJS.i18n.noMore); 4619 } 4620 } else { 4621 args.$elemN.removeClass('no-more'); 4622 args.$elemP.addClass('no-more'); 4623 if (args.$elemN.hasClass('block-more-3')) { 4624 args.$elemN.html(zeenJS.i18n.loadMore); 4625 } 4626 } 4627 } else { 4628 if (args.trigger_type === 1) { 4629 if ( 4630 args.blockData !== '' && 4631 args.blockData.next > args.response[0] 4632 ) { 4633 args.$elemP 4634 .html(zeenJS.i18n.noMore) 4635 .addClass('no-more'); 4636 } 4637 } else { 4638 args.$elemN.removeClass('no-more'); 4639 args.$elemP.removeClass('no-more'); 4640 if ( 4641 args.blockData !== '' && 4642 args.blockData.prev === 0 4643 ) { 4644 args.$elemP.addClass('no-more'); 4645 args.$elemN.removeClass('no-more'); 4646 } 4647 4648 if ( 4649 args.blockData !== '' && 4650 args.response[0] < args.blockData.next 4651 ) { 4652 if (args.blockData.prev !== 0) { 4653 args.$elemP.removeClass('no-more'); 4654 } 4655 args.$elemN.addClass('no-more'); 4656 } 4657 } 4658 } 4659 } 4660 4661 args.$blockData.find('> div').removeClass('loading tipi-spin'); 4662 zeenPrv.fillRunner(); 4663 zeenPrv.tempAni(); 4664 zeenPrv.iFrameLazy(); 4665 if (typeof args.mm !== 'undefined' && args.mm === true) { 4666 args.$blockData.find('.zeen-lazy-load-mm').each(function () { 4667 zeenPrv.imgAttrLoad($(this)[0], true); 4668 }); 4669 } 4670 }, 4671 ajaxGetter: function (ajaxCall) { 4672 return zeenPrv.ajaxData[ajaxCall]; 4673 }, 4674 ajaxSetter: function (ajaxCall, ajaxData) { 4675 zeenPrv.ajaxDeleter(ajaxCall); 4676 zeenPrv.ajaxData[ajaxCall] = ajaxData; 4677 }, 4678 videoWrap: function () { 4679 $('iframe').each(function () { 4680 var _this = $(this), 4681 src = _this.attr('src'), 4682 lazySrc = _this.data('lazy-src'), 4683 thisParent = _this.parent(), 4684 video = false; 4685 if ( 4686 src === 'about:blank' && 4687 typeof lazySrc !== 'undefined' && 4688 lazySrc.length > 0 4689 ) { 4690 src = lazySrc; 4691 } 4692 if (typeof src === 'undefined') { 4693 return; 4694 } 4695 src = src.toLowerCase(); 4696 if ( 4697 src.indexOf('yout') >= 0 || 4698 src.indexOf('vime') >= 0 || 4699 src.indexOf('dailymo') >= 0 4700 ) { 4701 video = true; 4702 } 4703 if (video === false) { 4704 return; 4705 } 4706 if ( 4707 !thisParent.hasClass('video-wrap') && 4708 !thisParent.hasClass('wp-block-embed__wrapper') && 4709 !thisParent.parent().hasClass('wp-block-embed__wrapper') && 4710 !thisParent.hasClass('frame-wrap') && 4711 !thisParent.hasClass('content-custom') && 4712 !_this.hasClass('elementor-video-iframe') && 4713 !_this.hasClass('skip-video') && 4714 !thisParent.hasClass('fluid-width-video-wrapper') 4715 ) { 4716 _this.wrap('<div class="video-wrap"></div>'); 4717 } 4718 }); 4719 }, 4720 videoBg: function () { 4721 if (this.$winWidth > 767) { 4722 var $media_bg = [], 4723 $header_bg = this.$header.find( 4724 '.bg-area > .background .media-bg' 4725 ), 4726 $footer_bg = this.$footerBgArea.find( 4727 '.background .media-bg' 4728 ); 4729 if ($header_bg.length > 0) { 4730 $media_bg.push($header_bg); 4731 } 4732 if ($footer_bg.length > 0) { 4733 $media_bg.push($footer_bg); 4734 } 4735 for (var i = $media_bg.length - 1; i >= 0; i--) { 4736 if ($media_bg[i].find('> source').length > 0) { 4737 var $media_bg_src = $media_bg[i].find('> source'); 4738 $media_bg_src 4739 .attr('src', $media_bg_src.data('src')) 4740 .removeAttr('data-src'); 4741 $media_bg[i][0].load(); 4742 } else { 4743 $media_bg[i].attr('src', $media_bg[i].data('src')); 4744 } 4745 $media_bg[i].addClass('active'); 4746 } 4747 } 4748 }, 4749 skinMode: function (e) { 4750 if (typeof e !== 'undefined') { 4751 e.preventDefault(); 4752 } 4753 if (zeenPrv.$body.hasClass('tipi-builder-frame-inner')) { 4754 return; 4755 } 4756 zeenPrv.$skinMode.addClass('triggered'); 4757 var logo = $('.logo'), 4758 logoImg = logo.find('img').add(logo.find('picture')), 4759 $primary = $('#primary'); 4760 if (zeenPrv.$skinMode.hasClass('mode--alt')) { 4761 zeenPrv.$skinMode.removeClass('mode--alt'); 4762 zeenPrv.$body.removeClass('mode--alt--b'); 4763 Cookies.remove('wp_alt_mode', { path: zeenJS.args.path }); 4764 logoImg.each(function () { 4765 var _this = $(this), 4766 el = _this, 4767 baseSrc = _this.data('base-src'); 4768 if (_this.is('picture')) { 4769 el = _this.find('source'); 4770 } 4771 if (typeof baseSrc !== 'undefined') { 4772 el.attr('src', baseSrc); 4773 var baseSrcset = _this.data('base-srcset');
4774 if (typeof baseSrcset !== 'undefined') { 4775 el.attr('srcset', baseSrcset); 4776 } 4777 } 4778 }); 4779 4780 if ( 4781 zeenPrv.$body.hasClass('single') || 4782 (zeenPrv.$body.hasClass('page') && 4783 !zeenPrv.$body.hasClass('tipi-builder-page')) 4784 ) { 4785 $primary 4786 .find('> .article-layout-skin-2') 4787 .removeClass('article-layout-skin-2') 4788 .addClass('article-layout-skin-1'); 4789 $primary 4790 .find('.entry-content >.lets-review-skin-2') 4791 .each(function () { 4792 var _this = $(this); 4793 if (parseInt(_this.data('skin')) === 1) { 4794 _this 4795 .removeClass('lets-review-skin-2') 4796 .addClass('lets-review-skin-1'); 4797 } 4798 }); 4799 } 4800 } else { 4801 zeenPrv.$skinMode.addClass('mode--alt'); 4802 zeenPrv.$body.addClass('mode--alt--b'); 4803 Cookies.set('wp_alt_mode', '1', { 4804 sameSite: 'lax', 4805 expires: zeenJS.args.cookieDuration, 4806 path: zeenJS.args.path, 4807 }); 4808 logoImg.each(function () { 4809 var _this = $(this), 4810 el = _this, 4811 altSrc = _this.data('alt-src'); 4812 if (_this.is('picture')) { 4813 el = _this.find('source'); 4814 } 4815 if (typeof altSrc !== 'undefined') { 4816 el.attr('src', altSrc); 4817 var altSrcset = _this.data('alt-srcset'); 4818 if (typeof altSrcset !== 'undefined') { 4819 el.attr('srcset', altSrcset); 4820 } 4821 } 4822 }); 4823 4824 if ( 4825 zeenPrv.$body.hasClass('single') || 4826 (zeenPrv.$body.hasClass('page') && 4827 !zeenPrv.$body.hasClass('tipi-builder-page')) 4828 ) { 4829 $primary 4830 .find('> .article-layout-skin-1') 4831 .removeClass('article-layout-skin-1') 4832 .addClass('article-layout-skin-2'); 4833 $primary 4834 .find('.entry-content >.lets-review-skin-1') 4835 .removeClass('lets-review-skin-1') 4836 .addClass('lets-review-skin-2'); 4837 } 4838 } 4839 }, 4840 imgControl: function (resize) { 4841 this.$primary.find('> .post-wrap').each(function () { 4842 var current = $(this); 4843 var img = current 4844 .find('.entry-content .alignnone') 4845 .add(current.find('.entry-content .aligncenter')); 4846 if (img.length > 0) { 4847 var imgObs = new IntersectionObserver( 4848 function (entries) { 4849 entries.forEach(function (entry) { 4850 if (entry.isIntersecting) { 4851 entry.target.classList.add('embed-vis'); 4852 imgObs.unobserve(entry.target); 4853 } 4854 }); 4855 }, 4856 { threshold: [0], rootMargin: '-100px 0px' } 4857 ); 4858 var currentImg; 4859 img.each(function (index, elem) { 4860 currentImg = $(this); 4861 if (!currentImg.hasClass('embed-vis')) { 4862 imgObs.observe(currentImg[0]); 4863 } 4864 }); 4865 } 4866 }); 4867 }, 4868 ajaxDeleter: function (ajaxCall, target) { 4869 if (target === true) { 4870 for (var el in zeenPrv.ajaxData) { 4871 if (el.indexOf(ajaxCall) === 0) { 4872 delete zeenPrv.ajaxData[el]; 4873 } 4874 } 4875 if (typeof window[ajaxCall + '_2'] !== 'undefined') { 4876 window[ajaxCall + '_2'] = ''; 4877 } 4878 } else { 4879 delete zeenPrv.ajaxData[ajaxCall]; 4880 } 4881 }, 4882 ajaxChecker: function (ajaxCall) { 4883 if ( 4884 typeof window[ajaxCall] !== 'undefined' && 4885 window[ajaxCall] !== '' 4886 ) { 4887 zeenPrv.ajaxData[ajaxCall] = window[ajaxCall]; 4888 return true; 4889 } 4890 4891 if (typeof zeenPrv.ajaxData[ajaxCall] !== 'undefined') { 4892 return true; 4893 } 4894 }, 4895 lightboxClasses: function () { 4896 this.$entryContent 4897 .find('a') 4898 .has('img') 4899 .each(function () { 4900 var attrTitle = $('img', this).attr('title'), 4901 $instance = $(this), 4902 attrHref = $instance.attr('href'); 4903 4904 if (typeof attrTitle !== 'undefined') { 4905 $instance.attr('title', attrTitle); 4906 } 4907 if ( 4908 typeof attrHref !== 'undefined' && 4909 $instance.data('rel') !== 'prettyPhoto[product-gallery]' 4910 ) { 4911 var splitHref = attrHref.split('.'), 4912 ext = $(splitHref)[$(splitHref).length - 1]; 4913 if ( 4914 ext.substring(0, 3) === 'jpg' || 4915 ext.substring(0, 4) === 'jpeg' || 4916 ext.substring(0, 3) === 'png' || 4917 ext.substring(0, 3) === 'gif' || 4918 ext.substring(0, 4) === 'webp' 4919 ) { 4920 $instance.addClass('tipi-lightbox'); 4921 } 4922 } 4923 }); 4924 if (parseInt(zeenJS.args.lightboxChoice) === 2) { 4925 var lists = this.$entryContent.find('> .zeen__list--1'); 4926 if (lists.length > 0) { 4927 lists.find('a').has('img').removeClass('tipi-lightbox'); 4928 } 4929 } 4930 }, 4931 loadMore: function (elem, data) { 4932 elem.addClass('loaded'); 4933 if ( 4934 typeof zeenPrv.thePaged === 'undefined' || 4935 zeenPrv.thePaged === 0 4936 ) { 4937 zeenPrv.thePaged = 1; 4938 } 4939 if (typeof data === 'undefined') { 4940 elem = $(this); 4941 data = elem.data(); 4942 } 4943 var elemBlockWrap = elem.closest('.block-wrap'); 4944 var type = data.type; 4945 if (type === 4) { 4946 type = 3; 4947 } 4948 var target = elemBlockWrap, 4949 masonry; 4950 4951 if (elemBlockWrap.hasClass('block-masonry-wrap')) { 4952 target = target.find('.block'); 4953 masonry = true; 4954 } else if (elemBlockWrap.hasClass('block-wrap-65')) { 4955 target = target.find('.block'); 4956 masonry = 65; 4957 } else { 4958 target = target.find( 4959 '> .tipi-row-inner-style > .tipi-row-inner-box' 4960 ); 4961 } 4962 var currentLoader, 4963 qry = zeenJS.qry, 4964 bid = elemBlockWrap.data('id'); 4965 if ( 4966 typeof bid !== 'undefined' && 4967 typeof window['zeen_' + bid] !== 'undefined' && 4968 !zeenPrv.$body.hasClass('blog') 4969 ) { 4970 qry = window['zeen_' + bid].args; 4971 } 4972 $.ajax({ 4973 method: 'POST', 4974 data: { 4975 preview: data.preview, 4976 img_shape: data.shape, 4977 byline_off: data.byline, 4978 excerpt_off: data.excerpt, 4979 mnp: data.mnp, 4980 qry: qry, 4981 paged: zeenPrv.thePaged, 4982 frontpage: zeenJS.args.frontpage, 4983 basePagi: window.location.pathname, 4984 type: type, 4985 }, 4986 url: zeenJS.root + 'pagi', 4987 dataType: 'html', 4988 beforeSend: function (xhr) { 4989 zeenPrv.thePaged = parseInt(zeenPrv.thePaged) + 1; 4990 xhr.setRequestHeader('X-WP-Nonce', zeenPrv.nonce); 4991 currentLoader = elemBlockWrap 4992 .find('.inf-load-more-wrap:not(.inf-loaded)') 4993 .addClass('tipi-spin inf-loading'); 4994 }, 4995 success: function (response) { 4996 var $items = $(response), 4997 item; 4998 var offset; 4999 if (masonry === 65) { 5000 offset = zeenPrv.getDetails(target); 5001 elemBlockWrap 5002 .find('.inf-scr:not(.inf-scr-masonry)') 5003 .css('top', offset.height - 200) 5004 .addClass('inf-scr-masonry'); 5005 currentLoader 5006 .addClass('inf-scr-masonry') 5007 .css('top', offset.height - 200); 5008 $items.each(function () { 5009 item = $(this); 5010 if ( 5011 item.hasClass('pagination') || 5012 item.hasClass('inf-scr') 5013 ) { 5014 elemBlockWrap.append(item); 5015 } else { 5016 target.append(item); 5017 } 5018 }); 5019 } else if (masonry === true) { 5020 zeenPrv.masonryAppend($items, target); 5021 } else { 5022 target.append($items); 5023 } 5024 currentLoader 5025 .removeClass('tipi-spin inf-loading') 5026 .addClass('inf-loaded'); 5027 zeenPrv.tempAni(); 5028 zeenPrv.iFrameLazy(); 5029 zeenPrv.parallaxRefresh(); 5030 zeenPrv.infScr(); 5031 zeenPrv.fillRunner(); 5032 if (masonry !== true) { 5033 zeenPrv.infPagi(elem, data); 5034 zeenPrv.reSidebars(); 5035 } 5036 zeenPrv.GA(data.next); 5037 zeenPrv.infStRefresh(); 5038 }, 5039 fail: function (response) { 5040 console.log('ERROR', response); 5041 }, 5042 }); 5043 $('.inf-scr').removeClass('active'); 5044 }, 5045 infStRefresh: function () { 5046 for (var i = zeenPrv.infST.length - 1; i >= 0; i--) { 5047 if (zeenPrv.infST[i].scrollTrigger !== null) { 5048 zeenPrv.infST[i].refresh(); 5049 } 5050 } 5051 }, 5052 infPagi: function (elem, data) { 5053 if (zeenJS.args.archiveUrlChange !== true) { 5054 return; 5055 } 5056 ScrollTrigger.create({ 5057 trigger: elem, 5058 start: 'top center', 5059 onEnter: function (_ref) { 5060 zeenPrv.updateHref(data.titleNext, data.next); 5061 }, 5062 onLeaveBack: function (_ref) { 5063 zeenPrv.updateHref(data.titlePrev, data.prev); 5064 }, 5065 }); 5066 }, 5067 menuAc: function (row) { 5068 var drop = $(row), 5069 _parent = drop.closest('.horizontal-menu'); 5070 if (!drop.hasClass('dropper')) { 5071 _parent.removeClass('menu--active'); 5072 if (zeenPrv.mmAni === 3) { 5073 var stopper = _parent.find('.menu--slid'); 5074 stopper.stop().slideUp(200); 5075 } 5076 return; 5077 } 5078 if (!drop.hasClass('zeen-lazy-loaded')) { 5079 drop.find('.zeen-lazy-load-mm').each(function () { 5080 zeenPrv.imgAttrLoad($(this)[0], true); 5081 }); 5082 } 5083 drop.addClass('active active-1 zeen-lazy-loaded'); 5084 if (zeenPrv.mmAni === 3) { 5085 var trigger = drop.find('> .menu'); 5086 if (trigger.hasClass('mm-1')) { 5087 trigger = trigger.find('> .menu-wrap > .sub-menu'); 5088 } 5089 _parent.find('.menu--slid').hide().removeClass('menu--slid'); 5090 trigger 5091 .css({ visibility: 'visible', opacity: '1' }) 5092 .addClass('menu--slid'); 5093 if (_parent.hasClass('menu--active')) { 5094 trigger.show(); 5095 } else { 5096 trigger.hide().stop().slideDown(200); 5097 } 5098 } 5099 setTimeout(function () { 5100 _parent.addClass('menu--active'); 5101 }, 220); 5102 }, 5103 menuDeac: function (row) { 5104 $(row).removeClass('active'); 5105 }, 5106 menuEx: function (item) { 5107 if (zeenPrv.mmAni === 3) { 5108 var trigger = $(item).find('.menu--slid'); 5109 trigger.stop().slideUp(200); 5110 } 5111 $(item).removeClass('menu--active'); 5112 }, 5113 reSidebars: function (index) { 5114 if (typeof index !== 'undefined') { 5115 zeenPrv.sbsSaved[index].refresh(); 5116 return; 5117 } 5118 for (var i = zeenPrv.sbsSaved.length - 1; i >= 0; i--) { 5119 if (zeenPrv.sbsSaved[i] !== null) { 5120 zeenPrv.sbsSaved[i].refresh(); 5121 } 5122 } 5123 }, 5124 sidebars: function () { 5125 var builder = ''; 5126 if (this.$body.hasClass('tipi-builder-frame-inner')) { 5127 builder = true; 5128 } 5129 var _this = this, 5130 stickies; 5131 if (zeenPrv.$winWidth < 1020) { 5132 stickies = $('.sticky-sb-on:not(.sidebar-wrap)'); 5133 } else { 5134 stickies = $('.sticky-sb-on'); 5135 } 5136 stickies.each(function () { 5137 var sb = $(this), 5138 heightCheck, 5139 isSb = false, 5140 tweaks = 0; 5141 sb.imagesLoaded(function () { 5142 var cont = sb.closest('.sticky--wrap'), 5143 contHeight; 5144 if (typeof cont !== 'undefined') { 5145 var totalHeight = 0; 5146 var $wrapP = sb.parent(), 5147 $wrap = $wrapP.hasClass('sticky--wrap') 5148 ? sb 5149 : $wrapP; 5150 $wrap.children().each(function () { 5151 totalHeight = 5152 totalHeight + $(this).outerHeight(true); 5153 }); 5154 contHeight = cont.outerHeight(); 5155 if (totalHeight >= contHeight) { 5156 return; 5157 } 5158 } 5159 if (sb.hasClass('sidebar-wrap')) { 5160 isSb = true; 5161 heightCheck = sb.find('> .sidebar').outerHeight(true); 5162 } else { 5163 heightCheck = sb.outerHeight(true); 5164 } 5165 if (contHeight > 0 && heightCheck >= contHeight) { 5166 return; 5167 } 5168 var navH = 0; 5169 if (_this.$siteNav.hasClass('sticky-menu')) { 5170 if (!_this.$siteNav.hasClass('sticky-menu-2')) { 5171 navH = _this.$siteNav.outerHeight(); 5172 } 5173 } else { 5174 var navP = _this.$siteNav.closest('.site-header'); 5175 if ( 5176 navP.length > 0 && 5177 !navP.hasClass('sticky-menu-2') 5178 ) { 5179 navH = navP.outerHeight(); 5180 } 5181 } 5182 5183 if (_this.headerIsSticky === true) { 5184 navH = 5185 _this.$headerHeight - 5186 _this.$header.data('ptDiff') - 5187 _this.$header.data('pbDiff'); 5188 tweaks = 15; 5189 } 5190 var top = 30 + zeenPrv.$wpAdminBarHeight + navH - tweaks; 5191 if ( 5192 (_this.$winWidth < 1020 && isSb === true) || 5193 _this.$winWidth < 767 5194 ) { 5195 top = 0; 5196 }
5197 if (_this.$winHeight < heightCheck + top) { 5198 if (sb.hasClass('sticky-on') || builder === true) { 5199 sb.removeClass('sticky-sb sticky-el'); 5200 return; 5201 } 5202 if (typeof cont !== 'undefined') { 5203 _this.pinner({ 5204 element: sb, 5205 top: top, 5206 start: 'top ' + top + 'px', 5207 end: 'bottom bottom', 5208 endTrigger: cont[0], 5209 cont: cont, 5210 }); 5211 } 5212 } else { 5213 sb.addClass('sticky-sb sticky-el'); 5214 sb.css('top', top); 5215 } 5216 }); 5217 }); 5218 }, 5219 sliderInit: function (reset) { 5220 zeenPrv.wooSliderInit(); 5221 var sliders = $('.slider'); 5222 if (sliders.length === 0) { 5223 return; 5224 } 5225 sliders.each(function () { 5226 var $slider = $(this), 5227 $sliderData = $slider.data(), 5228 arrows = true, 5229 artArrows = false, 5230 run = true, 5231 hideMeta, 5232 $sliderToArrow = $slider, 5233 sliderEffect = parseInt($sliderData.effect); 5234 var args = { 5235 wrapAround: true, 5236 imagesLoaded: true, 5237 draggable: false, 5238 pageDots: false, 5239 setGallerySize: false, 5240 prevNextButtons: false, 5241 cellSelector: 5242 typeof $sliderData.cell !== 'undefined' 5243 ? $sliderData.cell 5244 : '.slide', 5245 contain: true, 5246 rightToLeft: zeenPrv.$rtl, 5247 }; 5248 if (zeenPrv.$winWidth < 768) { 5249 args.draggable = true; 5250 } 5251 if ($slider.hasClass('flickity-enabled')) { 5252 run = false; 5253 } 5254 5255 if ($sliderData.s === 10) { 5256 hideMeta = true; 5257 args.draggable = true; 5258 args.lazyLoad = 1; 5259 if ($sliderData.fs === 's' || $sliderData.fs === 'm') { 5260 args.fullscreen = true; 5261 } 5262 args.autoPlay = zeenJS.args.galleryAutoplay; 5263 } 5264 5265 if ($sliderData.s > 50 && $sliderData.s < 60) { 5266 args.setGallerySize = true; 5267 args.adaptiveHeight = true; 5268 args.selectedAttraction = 0.0925; 5269 args.friction = 0.725; 5270 if ( 5271 sliderEffect === 2 || 5272 ($sliderData.s !== 51 && $sliderData.s !== 55) 5273 ) { 5274 args.autoPlay = zeenJS.args.sDelay; 5275 } 5276 } 5277 5278 if ($sliderData.s === 56) { 5279 args.draggable = true; 5280 args.adaptiveHeight = false; 5281 args.autoPlay = false; 5282 args.freeScroll = true; 5283 if ($sliderData.layout === 2) { 5284 args.wrapAround = true; 5285 } else { 5286 args.groupCells = zeenPrv.$winWidth < 768 ? 1 : 2; 5287 args.pageDots = true; 5288 args.wrapAround = false; 5289 arrows = false; 5290 } 5291 if ($sliderData.sWoo) { 5292 args.pageDots = true; 5293 args.freeScroll = false; 5294 args.adaptiveHeight = true; 5295 args.setGallerySize = true; 5296 } 5297 } 5298 if ($sliderData.s === 51 || $sliderData.s === 55) { 5299 artArrows = true; 5300 arrows = false; 5301 if (sliderEffect === 0) { 5302 args.selectedAttraction = 0.2; 5303 args.friction = 0.8; 5304 } 5305 } 5306 if (zeenPrv.$winWidth > 768) { 5307 if ($sliderData.s === 52) { 5308 args.groupCells = 2; 5309 } else if ($sliderData.s === 53) { 5310 args.groupCells = 3; 5311 } else if ($sliderData.s === 54) { 5312 args.groupCells = 4; 5313 } 5314 } 5315 5316 if ($sliderData.s === 15) { 5317 arrows = false; 5318 args.wrapAround = false; 5319 args.lazyLoad = 2; 5320 args.draggable = true; 5321 } 5322 if ($sliderData.s === 16) { 5323 args.wrapAround = false; 5324 args.cellAlign = 'left'; 5325 $sliderToArrow = $slider.prev(); 5326 args.asNavFor = $sliderToArrow[0]; 5327 } 5328 if ($sliderData.s === 21) { 5329 args.setGallerySize = true; 5330 args.wrapAround = false; 5331 args.adaptiveHeight = true; 5332 } 5333 // Gallery BLock 5334 if ($sliderData.s === 31) { 5335 args.setGallerySize = true; 5336 args.draggable = true; 5337 args.lazyLoad = 2; 5338 args.wrapAround = false; 5339 args.adaptiveHeight = true; 5340 args.freeScroll = true; 5341 args.fullscreen = true; 5342 args.cellAlign = 'left'; 5343 args.autoPlay = 5344 $sliderData.autoplay === 'on' ? 3000 : false; 5345 } 5346 5347 if (sliderEffect === 2) { 5348 args.contain = false; 5349 args.fade = true; 5350 args.pageDots = true; 5351 arrows = false; 5352 artArrows = false; 5353 } 5354 5355 if (run === true) { 5356 $slider.on('ready.flickity', function () { 5357 $slider.addClass('slider-ldd'); 5358 if ($sliderData.s === 21) { 5359 $slider.removeClass('tipi-spin'); 5360 } 5361 var slides; 5362 if ($sliderData.s > 50) { 5363 slides = $slider.find('article'); 5364 } else { 5365 slides = $slider.find('img'); 5366 } 5367 if ($sliderData.s === 51 || $sliderData.s === 55) { 5368 slides.first().imagesLoaded(function () { 5369 $slider.addClass('slider-rdy'); 5370 }); 5371 } else if ($sliderData.s === 52) { 5372 slides.slice(0, 1).imagesLoaded(function () { 5373 $slider.addClass('slider-rdy'); 5374 }); 5375 } else if ( 5376 $sliderData.s === 53 || 5377 $sliderData.s === 56 5378 ) { 5379 slides.slice(0, 2).imagesLoaded(function () { 5380 $slider.addClass('slider-rdy'); 5381 }); 5382 } else if ($sliderData.s === 54) { 5383 slides.slice(0, 3).imagesLoaded(function () { 5384 $slider.addClass('slider-rdy'); 5385 }); 5386 } else if ( 5387 $sliderData.s === 10 || 5388 $sliderData.s === 15 5389 ) { 5390 slides.imagesLoaded(function (e) { 5391 $slider.addClass('slider-rdy'); 5392 $slider 5393 .closest('.hero-wrap') 5394 .addClass('mask-loaded'); 5395 }); 5396 } else if ($sliderData.s === 16) { 5397 slides.imagesLoaded(function (e) { 5398 $slider.addClass('nav-slider-rdy'); 5399 }); 5400 } 5401 }); 5402 $slider.flickity(args); 5403 var flkty = ''; 5404 if (args.wrapAround === false) { 5405 flkty = $slider.data('flickity'); 5406 } 5407 if (arrows === true) { 5408 var prev = $slider.find('.slider-arrow-prev'); 5409 var next = $slider.find('.slider-arrow-next'); 5410 prev.on('click', function () { 5411 $sliderToArrow.flickity('previous'); 5412 if (args.wrapAround === false) { 5413 if (flkty.selectedIndex === 0) { 5414 prev.addClass('disabled'); 5415 } else { 5416 prev.removeClass('disabled'); 5417 } 5418 if ( 5419 flkty.selectedIndex === 5420 flkty.slides.length - 1 5421 ) { 5422 next.addClass('disabled'); 5423 } else { 5424 next.removeClass('disabled'); 5425 } 5426 } 5427 }); 5428 next.on('click', function () { 5429 $sliderToArrow.flickity('next'); 5430 if (args.wrapAround === false) { 5431 if (flkty.selectedIndex === 0) { 5432 prev.addClass('disabled'); 5433 } else { 5434 prev.removeClass('disabled'); 5435 } 5436 if ( 5437 flkty.selectedIndex === 5438 flkty.slides.length - 1 5439 ) { 5440 next.addClass('disabled'); 5441 } else { 5442 next.removeClass('disabled'); 5443 } 5444 } 5445 }); 5446 } 5447 if (hideMeta === true) { 5448 $slider.on('change.flickity', function (event, index) { 5449 var sliderHeroWrap = $slider.closest('.hero-wrap'); 5450 if (!sliderHeroWrap.hasClass('gallery-viewing')) { 5451 $slider.on('mouseleave', function () { 5452 sliderHeroWrap.removeClass( 5453 'gallery-viewing' 5454 ); 5455 $slider.off('mouseleave'); 5456 }); 5457 } 5458 sliderHeroWrap.addClass('gallery-viewing'); 5459 }); 5460 } 5461 if (artArrows === true) { 5462 flkty = $slider.data('flickity'); 5463 var $sliderArrows = $slider.find('.slider-arrow'); 5464 $sliderArrows.on('click', function () { 5465 var arrow = $(this); 5466 if (arrow.data('doing')) return; 5467 arrow.data('doing', true); 5468 var start = flkty.selectedIndex; 5469 if (arrow.hasClass('slider-arrow-next')) { 5470 $sliderToArrow.flickity('next'); 5471 } else { 5472 $sliderToArrow.flickity('previous'); 5473 } 5474 var finish = flkty.selectedIndex; 5475 if (flkty.cells.length > 1) { 5476 zeenPrv.sliderAlt( 5477 flkty, 5478 start, 5479 finish, 5480 $sliderData.effect
5481 ); 5482 } 5483 }); 5484 5485 if (zeenJS.args.sDelay > 0) { 5486 $slider.data('autoplay', true); 5487 setInterval(function () { 5488 if ($slider.data('autoplay') === true) { 5489 var start = flkty.selectedIndex; 5490 $sliderToArrow.flickity('next'); 5491 var finish = flkty.selectedIndex; 5492 if (flkty.cells.length > 1) { 5493 zeenPrv.sliderAlt( 5494 flkty, 5495 start, 5496 finish, 5497 $sliderData.effect 5498 ); 5499 } 5500 } 5501 }, zeenJS.args.sDelay); 5502 $slider.on('mouseenter', function () { 5503 $slider.data('autoplay', false); 5504 }); 5505 $slider.on('mouseleave', function () { 5506 $slider.data('autoplay', true); 5507 }); 5508 } 5509 5510 $slider.on('settle.flickity', function (event, index) { 5511 $sliderArrows.removeData('doing'); 5512 }); 5513 5514 $slider.on('settle.flickity', function (event, index) { 5515 $sliderArrows.removeData('doing'); 5516 }); 5517 } 5518 } else if (reset === true) { 5519 $slider.flickity('reposition').flickity('resize'); 5520 } 5521 }); 5522 }, 5523 sliderAlt: function (flkty, start, finish, effect) { 5524 if (parseInt(effect) !== 0) { 5525 return; 5526 } 5527 var length = flkty.cells.length; 5528 if (finish === length) { 5529 finish = 0; 5530 } 5531 var dir = 5532 !(start === 0 && finish === length - 1) && 5533 ((finish === 0 && start === length - 1) || start < finish) 5534 ? 'R' 5535 : 'L', 5536 $start = $(flkty.slides[start].cells[0].element), 5537 $finish = $(flkty.slides[finish].cells[0].element), 5538 outerWidth = flkty.slides[start].outerWidth, 5539 ease = Power2.easeInOut, 5540 outerWidthCalc = outerWidth - outerWidth * 0.2, 5541 finishR = 5542 dir === 'R' ? -Math.abs(outerWidthCalc) : outerWidthCalc, 5543 startMaskL = 5544 dir === 'L' ? -Math.abs(outerWidthCalc) : outerWidthCalc, 5545 startL = dir === 'L' ? -Math.abs(outerWidth) : outerWidth, 5546 startR = dir === 'R' ? -Math.abs(outerWidth) : outerWidth; 5547 for (var i = flkty.slides.length - 1; i >= 0; i--) { 5548 flkty.slides[i].cells[0].element.classList.remove( 5549 'old-slide', 5550 'new-slide' 5551 ); 5552 } 5553 $start.addClass('old-slide'); 5554 $finish.addClass('new-slide'); 5555 5556 gsap.fromTo($finish, 0.6, { x: startL }, { x: 0, ease: ease }); 5557 gsap.fromTo($start, 0.6, { x: 0 }, { x: startR, ease: ease }); 5558 var finishMask = $finish.find('> .mask'); 5559 if (finishMask.length > 0) { 5560 gsap.fromTo( 5561 finishMask, 5562 0.6, 5563 { x: finishR }, 5564 { x: 0, ease: ease } 5565 ); 5566 } 5567 var startMask = $start.find('> .mask'); 5568 if (startMask.length > 0) { 5569 gsap.fromTo( 5570 startMask, 5571 0.6, 5572 { x: 0 }, 5573 { x: startMaskL, ease: ease } 5574 ); 5575 } 5576 gsap.fromTo( 5577 $finish.find('> .meta'), 5578 0.6, 5579 { x: startR }, 5580 { x: 0, ease: ease } 5581 ); 5582 gsap.fromTo( 5583 $start.find('> .meta'), 5584 0.6, 5585 { x: 0 }, 5586 { x: startL, ease: ease } 5587 ); 5588 }, 5589 lightboxInit: function () { 5590 zeenPrv.lightboxClasses(); 5591 if (zeenJS.args.lightbox !== true) { 5592 return; 5593 } 5594 if (parseInt(zeenJS.args.lightboxChoice) === 2) { 5595 var parentCheck = false, 5596 _thisParent; 5597 $('.tipi-lightbox') 5598 .fluidbox({ 5599 loader: true, 5600 }) 5601 .on('openstart.fluidbox', function () { 5602 var _this = $(this); 5603 _thisParent = _this.parent(); 5604 if ( 5605 _thisParent.hasClass('alignwide') || 5606 _thisParent.hasClass('gallery-block__image') 5607 ) { 5608 parentCheck = true; 5609 _thisParent.addClass('lightboxing'); 5610 } 5611 zeenPrv.lastScrollY = window.scrollY; 5612 window.addEventListener( 5613 'scroll', 5614 zeenPrv.lbHandler, 5615 zeenPrv.$listener 5616 ); 5617 }) 5618 .on('closeend.fluidbox', function () { 5619 if (parentCheck === true) { 5620 _thisParent.removeClass('lightboxing'); 5621 parentCheck = false; 5622 } 5623 window.removeEventListener( 5624 'scroll', 5625 zeenPrv.lbHandler, 5626 zeenPrv.$listener 5627 ); 5628 }); 5629 } else { 5630 zeenPrv.$body.on( 5631 'click', 5632 '.tipi-lightbox', 5633 zeenPrv.openPhotoswipe 5634 ); 5635 this.$entryContent 5636 .find('.wp-block-gallery') 5637 .each(function (index) { 5638 var $this = $(this); 5639 $this.attr('id', 'gallery-uid-' + index); 5640 var links = $this.find('.tipi-lightbox'); 5641 links.attr('data-gallery-uid', index); 5642 links.each(function (index) { 5643 $(this).attr('data-index', index); 5644 }); 5645 }); 5646 } 5647 }, 5648 openPhotoswipe: function (e) { 5649 e.preventDefault(); 5650 var items = [], 5651 tipiLightbox = $(e.currentTarget), 5652 tipiLightboxGID = tipiLightbox.data('gallery-uid'), 5653 options = { 5654 bgOpacity: 0.9, 5655 showHideOpacity: true, 5656 shareButtons: [ 5657 { 5658 id: 'facebook', 5659 label: 5660 '<i class="tipi-i-facebook"></i> ' + 5661 zeenJS.i18n.share, 5662 url: 'https://facebook.com/sharer/sharer.php?u={{url}}', 5663 }, 5664 { 5665 id: 'twitter', 5666 label: 5667 '<i class="tipi-i-x"></i> ' + zeenJS.i18n.tweet, 5668 url: 'https://twitter.com/intent/tweet?text={{text}}&url={{url}}', 5669 }, 5670 { 5671 id: 'pinterest', 5672 label: 5673 '<i class="tipi-i-pinterest"></i> ' + 5674 zeenJS.i18n.pin, 5675 url: 'https://pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}', 5676 }, 5677 ], 5678 }; 5679 if (typeof tipiLightboxGID !== 'undefined') { 5680 options.index = tipiLightbox.data('index'); 5681 $('#gallery-uid-' + tipiLightboxGID) 5682 .find('.tipi-lightbox') 5683 .each(function () { 5684 items.push(zeenPrv.itemPusher($(this))); 5685 }); 5686 } else { 5687 items.push(zeenPrv.itemPusher(tipiLightbox)); 5688 } 5689 var photoswipe = new PhotoSwipe( 5690 $('#pswp')[0], 5691 PhotoSwipeUI_Default, 5692 items, 5693 options 5694 ); 5695 photoswipe.init(); 5696 }, 5697 itemPusher: function ($item) { 5698 var $img = $item.find('img'), 5699 title = $img.attr('data-caption') 5700 ? $img.attr('data-caption') 5701 : $img.attr('title'), 5702 caption; 5703 if (typeof title === 'undefined') { 5704 caption = $item.next(); 5705 if (caption.is('figcaption')) { 5706 title = caption.text(); 5707 } 5708 } 5709 return { 5710 alt: $img.attr('alt'), 5711 src: $item.attr('href'), 5712 title: title, 5713 }; 5714 }, 5715 pinner: function (vars) { 5716 var element = gsap.utils.toArray(vars.element)[0]; 5717 var placeholder = document.createElement('span'); 5718 element.insertAdjacentElement('beforebegin', placeholder); 5719 var keywords = { 5720 top: '0', 5721 center: '50%', 5722 bottom: '100%', 5723 }, 5724 overlap, 5725 topOffset, 5726 updateOverlap = function updateOverlap() { 5727 topOffset = 5728 ( 5729 (typeof vars.start === 'function' 5730 ? vars.start() 5731 : vars.start || '0 0') + '' 5732 ).split(' ')[1] || '0'; 5733 topOffset = keywords[topOffset] || topOffset; 5734 topOffset = ~topOffset.indexOf('%') 5735 ? (parseFloat(topOffset) / 100) * zeenPrv.$winWidth 5736 : parseFloat(topOffset) || 0; 5737 overlap = Math.max( 5738 0, 5739 element.offsetHeight - zeenPrv.$winHeight + topOffset 5740 ); 5741 }, 5742 _vars = vars,
5743 onUpdate = _vars.onUpdate, 5744 onRefresh = _vars.onRefresh, 5745 offset = 0, 5746 lastY = 0, 5747 pinned, 5748 pin = function pin(value, bottom) { 5749 pinned = value; 5750 if (pinned) { 5751 var bounds = element.getBoundingClientRect(); 5752 gsap.set(element, { 5753 position: 'fixed', 5754 left: bounds.left, 5755 width: bounds.width, 5756 y: 0, 5757 top: bottom ? topOffset - overlap : topOffset, 5758 }); 5759 } else { 5760 gsap.set(element, { 5761 position: 'relative', 5762 clearProps: 'left,top,width', 5763 y: offset, 5764 }); 5765 } 5766 }, 5767 self; 5768 updateOverlap(); 5769 vars.trigger = placeholder; 5770 vars.start = 'start' in vars ? vars.start : 'top top'; 5771 vars.onRefresh = function (self) { 5772 updateOverlap(); 5773 self.vars.onUpdate(self); 5774 onRefresh && onRefresh(self); 5775 }; 5776 vars.onUpdate = function (_ref) { 5777 if ( 5778 zeenPrv.$winWidth < 1020 && 5779 _ref.vars.element.hasClass('sidebar-wrap') 5780 ) { 5781 gsap.set(element, { 5782 position: 'relative', 5783 clearProps: 'left,top,width', 5784 y: '0', 5785 }); 5786 return; 5787 } 5788 var progress = _ref.progress, 5789 start = _ref.start, 5790 end = _ref.end, 5791 isActive = _ref.isActive; 5792 var y = progress * (end - start), 5793 delta = y - lastY, 5794 exceedsBottom = y + Math.max(0, delta) >= overlap + offset; 5795 if ( 5796 (exceedsBottom || y + Math.min(0, delta) < offset) && 5797 isActive 5798 ) { 5799 offset += exceedsBottom ? y - overlap - offset : y - offset; 5800 pinned || pin(true, exceedsBottom); 5801 } else if (pinned || !isActive) { 5802 isActive || 5803 (offset = 5804 y && typeof self !== 'undefined' 5805 ? self.end - self.start - overlap 5806 : 0); 5807 pin(false); 5808 } 5809 5810 lastY = y; 5811 onUpdate && onUpdate(self); 5812 }; 5813 var i = zeenPrv.sbsSaved.length; 5814 vars.endTrigger.setAttribute('data-sticky', i); 5815 if ('ResizeObserver' in window) { 5816 zeenPrv.roS = true; 5817 zeenPrv.resizeObs(); 5818 } else { 5819 new IntersectionObserver( 5820 function (entries) { 5821 entries.forEach(function (entry) { 5822 if (entry.intersectionRatio > 0) { 5823 zeenPrv.reSidebars( 5824 entry.target.getAttribute('data-sticky') 5825 ); 5826 } 5827 }); 5828 }, 5829 { 5830 threshold: [0], 5831 rootMargin: vars.top * -1 + 'px 0px 0px 0px', 5832 } 5833 ).observe(vars.endTrigger); 5834 } 5835 self = ScrollTrigger.create(vars); 5836 zeenPrv.sbsSaved.push(self); 5837 return self; 5838 }, 5839 toolTipInit: function (e, el) { 5840 zeenPrv.$toolTipCurrent = 5841 typeof el === 'undefined' ? $(this) : $(el); 5842 if ( 5843 zeenPrv.$winWidth < 1200 || 5844 zeenPrv.$toolTipCurrent.hasClass('tipi-tipped') 5845 ) 5846 return; 5847 zeenPrv.$toolTipCurrent.addClass('tipi-tipped'); 5848 var direction = 'tipi-tip-wrap-b'; 5849 var zIndex = ''; 5850 if (zeenPrv.$toolTipCurrent.hasClass('modal-tip')) { 5851 zIndex = ' z-index-override'; 5852 } 5853 5854 if (zeenPrv.$toolTipCurrent.hasClass('tipi-tip-r')) { 5855 direction = 'tipi-tip-wrap-r'; 5856 } else if (zeenPrv.$toolTipCurrent.hasClass('tipi-tip-l')) { 5857 direction = 'tipi-tip-wrap-l'; 5858 } else if (zeenPrv.$toolTipCurrent.hasClass('tipi-tip-t')) { 5859 direction = 'tipi-tip-wrap-t'; 5860 } 5861 5862 var output = 5863 '<div class="tipi-tip-wrap font-' + 5864 zeenJS.args.toolTipFont + 5865 ' ' + 5866 direction + 5867 zIndex + 5868 '">' + 5869 '<div class="inner">' + 5870 zeenPrv.$toolTipCurrent.data('title') + 5871 '</div>' + 5872 '<div class="detail"></div>' + 5873 '</div>'; 5874 5875 zeenPrv.$body.append(output); 5876 5877 zeenPrv.$toolTipOutput = zeenPrv.$body.find( 5878 ' > .tipi-tip-wrap:not(.removing)' 5879 ); 5880 5881 if (zeenPrv.$toolTipCurrent.hasClass('tipi-tip-move')) { 5882 zeenPrv.$toolTipCurrent.on('mousemove', zeenPrv.tooltipLive); 5883 zeenPrv.$toolTipOutput.addClass('tipi-tip-mover'); 5884 } else { 5885 zeenPrv.tooltipSetup(); 5886 } 5887 5888 zeenPrv.$toolTipCurrent.on('mouseleave', zeenPrv.tooltipDestroy); 5889 }, 5890 tooltipDestroy: function () { 5891 zeenPrv.$toolTipOutput.addClass('removing'); 5892 zeenPrv.$toolTipCurrent.removeClass('tipi-tipped'); 5893 setTimeout(function () { 5894 $('.removing').remove(); 5895 }, 500); 5896 zeenPrv.$toolTipCurrent.off('mouseleave mousemove'); 5897 }, 5898 tooltipLive: function (e) { 5899 zeenPrv.tooltipSetup({ left: e.clientX, top: e.clientY }); 5900 }, 5901 tooltipSetup: function (args) { 5902 if (typeof args === 'undefined') { 5903 args = {}; 5904 } 5905 if (typeof args.output === 'undefined') { 5906 args.output = zeenPrv.$toolTipOutput; 5907 } 5908 5909 if (typeof args.current === 'undefined') { 5910 args.current = zeenPrv.$toolTipCurrent; 5911 } 5912 5913 var instanceDetails = zeenPrv.getDetails(args.output); 5914 var offset = zeenPrv.getDetails(args.current); 5915 if (typeof args.left === 'undefined') { 5916 args.left = 5917 offset.left + offset.width / 2 - instanceDetails.width / 2; 5918 } else { 5919 args.left = args.left - instanceDetails.width / 2; 5920 } 5921 5922 if (typeof args.top === 'undefined') { 5923 args.top = offset.top; 5924 args.top = args.top + offset.height; 5925 } else { 5926 args.top = args.top + 10; 5927 } 5928
5929 if (args.current.hasClass('tipi-tip-r')) { 5930 args.top = 5931 offset.top + offset.height / 2 - instanceDetails.height / 2; 5932 args.left = offset.width + offset.left + 10; 5933 } else if (args.current.hasClass('tipi-tip-l')) { 5934 args.top = 5935 offset.top + offset.height / 2 - instanceDetails.height / 2; 5936 args.left = offset.left - instanceDetails.width - 10; 5937 } else if (args.current.hasClass('tipi-tip-t')) { 5938 args.top = offset.top - instanceDetails.height; 5939 } 5940 args.output 5941 .css({ 5942 left: args.left, 5943 top: args.top, 5944 }) 5945 .addClass('tipi-tip-wrap-visible'); 5946 }, 5947 getDetails: function (elem) { 5948 var output = elem[0].getBoundingClientRect(); 5949 return { 5950 left: output.left, 5951 top: output.top, 5952 width: output.width, 5953 height: output.height, 5954 }; 5955 }, 5956 orientationchange: function () { 5957 this.cleanUp(); 5958 this.parallaxRefresh(); 5959 }, 5960 resize: function () { 5961 this.resizing = true; 5962 var width = this.$winWidth; 5963 this.data(); 5964 var _this = this; 5965 clearTimeout(this.resizeTo); 5966 this.resizeTo = setTimeout(function () { 5967 if (width !== _this.$winWidth) { 5968 _this.cleanUp(); 5969 _this.header(); 5970 _this.sticky(); 5971 _this.sliderInit(); 5972 _this.sidebars(); 5973 _this.reSidebars(); 5974 _this.progressPosition(); 5975 if (_this.$winWidth > 767) { 5976 _this.$body.removeClass('mob-open'); 5977 } 5978 } 5979 _this.imgControl(true); 5980 _this.resizing = false; 5981 }, 275); 5982 }, 5983 cleanUp: function () { 5984 this.cleanUpParallax(); 5985 $('.parallaxed').removeClass('parallaxed'); 5986 this.parallaxIt(); 5987 this.footerReveal(); 5988 }, 5989 cleanUpParallax: function () { 5990 for (var i = zeenPrv.paraSaved.length - 1; i >= 0; i--) { 5991 if (zeenPrv.paraSaved[i].scrollTrigger !== null) { 5992 zeenPrv.paraSaved[i].kill(); 5993 zeenPrv.paraSaved[i].scrollTrigger.kill(); 5994 } 5995 } 5996 }, 5997 parallaxRefresh: function () { 5998 for (var i = zeenPrv.paraSaved.length - 1; i >= 0; i--) { 5999 if (zeenPrv.paraSaved[i].scrollTrigger !== null) { 6000 zeenPrv.paraSaved[i].scrollTrigger.refresh(); 6001 } 6002 } 6003 }, 6004 cleanupStickies: function () { 6005 for (var i = zeenPrv.stickies.length - 1; i >= 0; i--) { 6006 if (zeenPrv.stickies[i] !== null) { 6007 zeenPrv.stickies[i].kill(); 6008 } 6009 } 6010 }, 6011 lbHandler: function () { 6012 var currentScroll = 6013 window.pageYOffset || document.documentElement.scrollTop; 6014 if (!zeenPrv.tickingLb) { 6015 window.requestAnimationFrame(function () { 6016 if (Math.abs(currentScroll - zeenPrv.lastScrollY) > 45) { 6017 $('.tipi-lightbox').fluidbox('close'); 6018 } 6019 zeenPrv.tickingLb = false; 6020 }); 6021 zeenPrv.tickingLb = true; 6022 } 6023 }, 6024 fillRunner: function (override) { 6025 if ( 6026 this.$body.hasClass('tipi-builder-frame-inner') && 6027 override !== true 6028 ) { 6029 return; 6030 } 6031 if (override === true) { 6032 $('.tipi-fill').remove(); 6033 } 6034 if (this.wooArchive === true) { 6035 var woo = this.$entryContentWrap.data('ppl'); 6036 if (woo > 2 && this.$products.length > 0) { 6037 this.$products.each(function () { 6038 zeenPrv.fillIt($(this), woo, 'product'); 6039 }); 6040 } 6041 } 6042 var block = this.$primary 6043 .add(this.$dropper) 6044 .find('.ppl-l-4, .ppl-m-4'); 6045 if (block.length > 0) { 6046 block = block.find('.block:not(.block-65)'); 6047 block.each(function () { 6048 zeenPrv.fillIt($(this), 4); 6049 }); 6050 } 6051 block = this.$primary.add(this.$dropper).find('.ppl-l-5, .ppl-m-5'); 6052 if (block.length > 0) { 6053 block = block.find('.block:not(.block-65)'); 6054 block.each(function () { 6055 zeenPrv.fillIt($(this), 5); 6056 }); 6057 } 6058 block = this.$primary.add(this.$dropper).find('.ppl-l-3, .ppl-m-3'); 6059 if (block.length > 0) { 6060 block = block.find('.block:not(.block-65)'); 6061 block.each(function () { 6062 if (!block.hasClass('block-wrap-65')) { 6063 zeenPrv.fillIt($(this), 3); 6064 } 6065 }); 6066 } 6067 }, 6068 fillIt: function (block, count, classes) { 6069 if (this.$winWidth > 767) { 6070 var counter = block.children().length; 6071 if (counter === count) { 6072 return; 6073 } 6074 var remainder; 6075 if (counter < count) { 6076 remainder = count - counter; 6077 } else { 6078 remainder = counter - Math.floor(counter / count) * count; 6079 remainder = count - remainder; 6080 } 6081 if (remainder < count) { 6082 for (var i = 0; i < remainder; i++) { 6083 var article = document.createElement('article'); 6084 article.classList.add('tipi-fill'); 6085 if (typeof classes !== 'undefined') { 6086 article.classList.add(classes); 6087 } 6088 block.append(article); 6089 } 6090 } 6091 } else { 6092 $('.tipi-fill').remove(); 6093 } 6094 }, 6095 toTopInit: function (e) { 6096 e.preventDefault(); 6097 zenscroll.toY(0, 800); 6098 }, 6099 foldMid: function () { 6100 var togglers = this.$toTopWrap 6101 .add(this.$verticalMenu) 6102 .add($('#next-block__wrap')) 6103 .add($('#cart__float')) 6104 .add($('#prev-block__wrap')); 6105 if (togglers.length > 0) { 6106 ScrollTrigger.create({ 6107 trigger: this.$body, 6108 start: Math.min(400, this.$winHeight),
6109 toggleClass: { targets: togglers, className: 'past__mid' }, 6110 }); 6111 } 6112 }, 6113 openSlideMenu: function (e) { 6114 e.preventDefault(); 6115 this.$body.addClass('slide-menu-open'); 6116 this.$baseOverlay.addClass('active'); 6117 this.$slideInMenu.addClass('active'); 6118 }, 6119 closeSlideMenu: function (e) { 6120 if (typeof e !== 'undefined') { 6121 e.preventDefault(); 6122 } 6123 this.$body.removeClass('slide-menu-open'); 6124 this.$slideInMenu.removeClass('active'); 6125 this.$baseOverlay.removeClass('active'); 6126 }, 6127 openMobMenu: function (e) { 6128 e.preventDefault(); 6129 if (this.$body.hasClass('site-mob-menu-a-3')) { 6130 var currentTop = $(window).scrollTop(); 6131 zeenPrv.$body.addClass('mob-open mob-open-3'); 6132 this.$content 6133 .add(this.$topBlock) 6134 .add(this.$mobHead) 6135 .css('top', '-' + currentTop + 'px'); 6136 this.$page.css('height', this.$winHeight); 6137 } else { 6138 if (this.$body.hasClass('mob-open')) { 6139 this.$body.removeClass('mob-open'); 6140 } else { 6141 this.$body.addClass('mob-open'); 6142 } 6143 } 6144 }, 6145 mobMenuClear: function (e) { 6146 this.$body.removeClass('mob-open'); 6147 if (!this.$body.hasClass('site-mob-menu-a-3')) { 6148 return; 6149 } 6150 clearTimeout(zeenPrv.mobMenuClearTO); 6151 zeenPrv.mobMenuClearTO = setTimeout(function () { 6152 var scrollTo = zeenPrv.$content.css('top'); 6153 zeenPrv.$content 6154 .add(zeenPrv.$topBlock) 6155 .add(zeenPrv.$mobHead) 6156 .css('top', ''); 6157 zeenPrv.$page.css('height', ''); 6158 zeenPrv.$body.removeClass('mob-open mob-open-3'); 6159 window.scrollTo(0, scrollTo); 6160 }, 500); 6161 }, 6162 closeMobMenu: function (e) { 6163 e.preventDefault(); 6164 zeenPrv.mobMenuClear(); 6165 }, 6166 loadScript: function (src) { 6167 var js = document.createElement('script'); 6168 js.src = src; 6169 js.onload = function () { 6170 zeenPrv.initMethods(); 6171 }; 6172 js.onerror = function () { 6173 console.log('ERROR: JS'); 6174 }; 6175 document.head.appendChild(js); 6176 }, 6177 wooSliderInit: function () { 6178 if ( 6179 !( 6180 zeenPrv.$body.hasClass('single-product') && 6181 zeenPrv.$main.hasClass('product-hero-slider--off') 6182 ) 6183 ) { 6184 return; 6185 } 6186 var wrapper = zeenPrv.$main.find( 6187 '.woocommerce-product-gallery__wrapper' 6188 ); 6189 if (wrapper.length === 0) { 6190 return; 6191 } 6192 if (zeenPrv.$winWidth < 768) { 6193 wrapper.addClass('slider'); 6194 if (!wrapper.hasClass('slider--data')) { 6195 wrapper.addClass('slider-data').data({ 6196 s: 56, 6197 sWoo: true, 6198 cell: '.woocommerce-product-gallery__image', 6199 layout: 2, 6200 }); 6201 } 6202 } else { 6203 if (wrapper.data('flickity')) { 6204 wrapper.removeClass('slider').flickity('destroy'); 6205 } 6206 } 6207 }, 6208 pub: function () { 6209 var _this = this; 6210 clearTimeout(this.pubTimer); 6211 this.pubTimer = setTimeout(function () { 6212 _this.cleanUpParallax(); 6213 $('.parallaxed').removeClass('parallaxed'); 6214 $( 6215 '.tipi-parallax-ani .bg, .tipi-parallax-ani iframe, .tipi-parallax-ani img' 6216 ).css('transform', ''); 6217 _this.dom(); 6218 _this.data(); 6219 _this.anis(); 6220 _this.sliderInit(true); 6221 _this.sidebars(); 6222 _this.reSidebars(); 6223 _this.maskLoader(); 6224 _this.fillRunner(true); 6225 _this.stickyEl(); 6226 _this.parallaxIt(true); 6227 _this.parallax3s(true); 6228 }, 50); 6229 }, 6230 cus: function (setting) { 6231 if (setting === 'sticky') { 6232 zeenPrv.cleanupStickies(); 6233 } 6234 this.dom(); 6235 this.data(); 6236 this.bind(); 6237 if (setting === 'sticky') { 6238 this.$stickyMenu.removeClass( 6239 'slidedown stickied stuck active still' 6240 ); 6241 this.sticky(); 6242 } 6243 }, 6244 }; 6245 zeenPrv.init(); 6246 6247 window.zeenPub = function () { 6248 zeenPrv.pub(); 6249 }; 6250 6251 window.zeenCus = function (setting) { 6252 zeenPrv.cus(setting); 6253 }; 6254 6255 window.zeenToolTip = function (e) { 6256 zeenPrv.toolTipInitPub(e); 6257 }; 6258})(jQuery); 6259 6260/** 6261 * Zenscroll 4.0.2 6262 * https://github.com/zengabor/zenscroll/ 6263 * 6264 * Copyright 2015â2018 Gabor Lenard 6265 * 6266 * This is free and unencumbered software released into the public domain. 6267 * 6268 * Anyone is free to copy, modify, publish, use, compile, sell, or 6269 * distribute this software, either in source code form or as a compiled 6270 * binary, for any purpose, commercial or non-commercial, and by any 6271 * means. 6272 * 6273 * In jurisdictions that recognize copyright laws, the author or authors 6274 * of this software dedicate any and all copyright interest in the 6275 * software to the public domain. We make this dedication for the benefit 6276 * of the public at large and to the detriment of our heirs and 6277 * successors. We intend this dedication to be an overt act of 6278 * relinquishment in perpetuity of all present and future rights to this 6279 * software under copyright law. 6280 * 6281 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 6282 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 6283 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 6284 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 6285 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 6286 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 6287 * OTHER DEALINGS IN THE SOFTWARE. 6288 * 6289 * For more information, please refer to <http://unlicense.org> 6290 * 6291 */ 6292 6293 6294 /* CODETIPI CHANGES: 6295 6296 Removed auto smoothscroll entire section 6297 6298/*jshint devel:true, asi:true */ 6299 6300/*global define, module */ 6301 6302 6303(function (root, factory) { 6304 if (typeof define === "function" && define.amd) { 6305 define([], factory()) 6306 } else if (typeof module === "object" && module.exports) { 6307 module.exports = factory() 6308 } else { 6309 (function install() {
6310 // To make sure Zenscroll can be referenced from the header, before `body` is available 6311 if (document && document.body) { 6312 root.zenscroll = factory() 6313 } else { 6314 // retry 9ms later 6315 setTimeout(install, 9) 6316 } 6317 })() 6318 } 6319}(this, function () { 6320 "use strict" 6321 6322 6323 // Detect if the browser already supports native smooth scrolling (e.g., Firefox 36+ and Chrome 49+) and it is enabled: 6324 var isNativeSmoothScrollEnabledOn = function (elem) { 6325 return elem && "getComputedStyle" in window && 6326 window.getComputedStyle(elem)["scroll-behavior"] === "smooth" 6327 } 6328 6329 6330 // Exit if itâs not a browser environment: 6331 if (typeof window === "undefined" || !("document" in window)) { 6332 return {} 6333 } 6334 6335 6336 var makeScroller = function (container, defaultDuration, edgeOffset) { 6337 6338 // Use defaults if not provided 6339 defaultDuration = defaultDuration || 999 //ms 6340 if (!edgeOffset && edgeOffset !== 0) { 6341 // When scrolling, this amount of distance is kept from the edges of the container: 6342 edgeOffset = 9 //px 6343 } 6344 6345 // Handling the life-cycle of the scroller 6346 var scrollTimeoutId 6347 var setScrollTimeoutId = function (newValue) { 6348 scrollTimeoutId = newValue 6349 } 6350 6351 /** 6352 * Stop the current smooth scroll operation immediately 6353 */ 6354 var stopScroll = function () { 6355 clearTimeout(scrollTimeoutId) 6356 setScrollTimeoutId(0) 6357 } 6358 6359 var getTopWithEdgeOffset = function (elem) { 6360 return Math.max(0, container.getTopOf(elem) - edgeOffset) 6361 } 6362 6363 /** 6364 * Scrolls to a specific vertical position in the document. 6365 * 6366 * @param {targetY} The vertical position within the document. 6367 * @param {duration} Optionally the duration of the scroll operation. 6368 * If not provided the default duration is used. 6369 * @param {onDone} An optional callback function to be invoked once the scroll finished. 6370 */ 6371 var scrollToY = function (targetY, duration, onDone) { 6372 stopScroll() 6373 if (duration === 0 || (duration && duration < 0) || isNativeSmoothScrollEnabledOn(container.body)) { 6374 container.toY(targetY) 6375 if (onDone) { 6376 onDone() 6377 } 6378 } else { 6379 var startY = container.getY() 6380 var distance = Math.max(0, targetY) - startY 6381 var startTime = new Date().getTime() 6382 duration = duration || Math.min(Math.abs(distance), defaultDuration); 6383 (function loopScroll() { 6384 setScrollTimeoutId(setTimeout(function () { 6385 // Calculate percentage: 6386 var p = Math.min(1, (new Date().getTime() - startTime) / duration) 6387 // Calculate the absolute vertical position: 6388 var y = Math.max(0, Math.floor(startY + distance*(p < 0.5 ? 2*p*p : p*(4 - p*2)-1))) 6389 container.toY(y) 6390 if (p < 1 && (container.getHeight() + y) < container.body.scrollHeight) { 6391 loopScroll() 6392 } else { 6393 setTimeout(stopScroll, 99) // with cooldown time 6394 if (onDone) { 6395 onDone() 6396 } 6397 } 6398 }, 9)) 6399 })() 6400 } 6401 } 6402 6403 /** 6404 * Scrolls to the top of a specific element. 6405 * 6406 * @param {elem} The element to scroll to. 6407 * @param {duration} Optionally the duration of the scroll operation. 6408 * @param {onDone} An optional callback function to be invoked once the scroll finished. 6409 */ 6410 var scrollToElem = function (elem, duration, onDone) { 6411 scrollToY(getTopWithEdgeOffset(elem), duration, onDone) 6412 } 6413 6414 /** 6415 * Scrolls an element into view if necessary. 6416 * 6417 * @param {elem} The element. 6418 * @param {duration} Optionally the duration of the scroll operation. 6419 * @param {onDone} An optional callback function to be invoked once the scroll finished. 6420 */ 6421 var scrollIntoView = function (elem, duration, onDone) { 6422 var elemHeight = elem.getBoundingClientRect().height 6423 var elemBottom = container.getTopOf(elem) + elemHeight 6424 var containerHeight = container.getHeight() 6425 var y = container.getY() 6426 var containerBottom = y + containerHeight 6427 if (getTopWithEdgeOffset(elem) < y || (elemHeight + edgeOffset) > containerHeight) { 6428 // Element is clipped at top or is higher than screen. 6429 scrollToElem(elem, duration, onDone) 6430 } else if ((elemBottom + edgeOffset) > containerBottom) { 6431 // Element is clipped at the bottom. 6432 scrollToY(elemBottom - containerHeight + edgeOffset, duration, onDone) 6433 } else if (onDone) { 6434 onDone() 6435 } 6436 } 6437 6438 /** 6439 * Scrolls to the center of an element. 6440 * 6441 * @param {elem} The element. 6442 * @param {duration} Optionally the duration of the scroll operation. 6443 * @param {offset} Optionally the offset of the top of the element from the center of the screen. 6444 * A value of 0 is ignored. 6445 * @param {onDone} An optional callback function to be invoked once the scroll finished. 6446 */ 6447 var scrollToCenterOf = function (elem, duration, offset, onDone) { 6448 scrollToY(Math.max(0, container.getTopOf(elem) - container.getHeight()/2 + (offset || elem.getBoundingClientRect().height/2)), duration, onDone) 6449 } 6450 6451 /** 6452 * Changes default settings for this scroller. 6453 * 6454 * @param {newDefaultDuration} Optionally a new value for default duration, used for each scroll method by default. 6455 * Ignored if null or undefined. 6456 * @param {newEdgeOffset} Optionally a new value for the edge offset, used by each scroll method by default. Ignored if null or undefined. 6457 * @returns An object with the current values. 6458 */ 6459 var setup = function (newDefaultDuration, newEdgeOffset) { 6460 if (newDefaultDuration === 0 || newDefaultDuration) { 6461 defaultDuration = newDefaultDuration 6462 } 6463 if (newEdgeOffset === 0 || newEdgeOffset) { 6464 edgeOffset = newEdgeOffset 6465 } 6466 return { 6467 defaultDuration: defaultDuration, 6468 edgeOffset: edgeOffset 6469 } 6470 } 6471 6472 return { 6473 setup: setup, 6474 to: scrollToElem, 6475 toY: scrollToY, 6476 intoView: scrollIntoView, 6477 center: scrollToCenterOf, 6478 stop: stopScroll, 6479 moving: function () { return !!scrollTimeoutId }, 6480 getY: container.getY, 6481 getTopOf: container.getTopOf 6482 } 6483 6484 } 6485 6486 6487 var docElem = document.documentElement 6488 var getDocY = function () { return window.scrollY || docElem.scrollTop } 6489 6490 // Create a scroller for the document: 6491 var zenscroll = makeScroller({ 6492 body: document.scrollingElement || document.body, 6493 toY: function (y) { window.scrollTo(0, y) }, 6494 getY: getDocY, 6495 getHeight: function () { return document.documentElement.clientHeight || docElem.clientHeight }, 6496 getTopOf: function (elem) { return elem.getBoundingClientRect().top + getDocY() - docElem.offsetTop } 6497 }) 6498 6499 6500 /** 6501 * Creates a scroller from the provided container element (e.g., a DIV) 6502 * 6503 * @param {scrollContainer} The vertical position within the document. 6504 * @param {defaultDuration} Optionally a value for default duration, used for each scroll method by default. 6505 * Ignored if 0 or null or undefined. 6506 * @param {edgeOffset} Optionally a value for the edge offset, used by each scroll method by default. 6507 * Ignored if null or undefined. 6508 * @returns A scroller object, similar to `zenscroll` but controlling the provided element. 6509 */ 6510 zenscroll.createScroller = function (scrollContainer, defaultDuration, edgeOffset) { 6511 return makeScroller({
6512 body: scrollContainer, 6513 toY: function (y) { scrollContainer.scrollTop = y }, 6514 getY: function () { return scrollContainer.scrollTop }, 6515 getHeight: function () { return Math.min(scrollContainer.clientHeight, document.documentElement.clientHeight || docElem.clientHeight) }, 6516 getTopOf: function (elem) { return elem.offsetTop } 6517 }, defaultDuration, edgeOffset) 6518 } 6519 6520 return zenscroll 6521 6522 6523}));
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.