PageSourceSearch

https://creately.com/blog/wp-content/themes/creately/js/script.js?ver=7.1

js creately.com collected 2026-10-02 02:12:22 UTC 10,748 bytes, 282 lines download raw bytes

1jQuery(function ($) {
2
3    /**
4     * Mobile Menu
5     */
6	function mobilecheck() {
7		var check = false;
8		(function(a){if(/(android|ipad|playbook|silk|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);
9		return check;
10	}
11
12	function init() {
13
14		var menu = document.getElementById( 'main-menu' ),
15			trigger = menu.querySelector( 'a.main-menu-trigger' ),
16			// event type (if mobile, use touch events)
17			eventtype = mobilecheck() ? 'touchstart' : 'click',
18			resetMenu = function() {
19				classie.remove( menu, 'main-menu-open' );
20				classie.remove( document.getElementById( 'logo' ), 'logo-fix' );
21				classie.remove( document.getElementById( 'logo' ), 'logo-fix' );
22                $('body').removeClass('overflow-hidden');
23                window.ontouchmove = null;
24				classie.add( menu, 'main-menu-close' );
25			},
26			closeClickFn = function( ev ) {
27				resetMenu();
28				overlay.removeEventListener( eventtype, closeClickFn );
29			};
30
31		var overlay = document.createElement('div');
32		overlay.className = 'main-overlay';
33		menu.appendChild( overlay );
34
35		trigger.addEventListener( eventtype, function( ev ) {
36			ev.stopPropagation();
37			ev.preventDefault();
38
39			if( classie.has( menu, 'main-menu-open' ) ) {
40				resetMenu();
41			}
42			else {
43				classie.remove( menu, 'main-menu-close' );
44				classie.add( menu, 'main-menu-open' );
45				classie.add( document.getElementById( 'logo' ), 'logo-fix' );
46                $('body').addClass('overflow-hidden');
47                window.ontouchmove  = preventDefault; // disable touch scroll
48				overlay.addEventListener( eventtype, closeClickFn );
49			}
50		});
51
52        // disable touch scroll
53        function preventDefault(e) {
54          e = e || window.event;
55          if (e.preventDefault)
56              e.preventDefault();
57          e.returnValue = false;
58        }
59
60	}
61
62	init();
63
64    /**
65     * Adjust mobile main menu accoding to window height
66     */
67    var $this = this;
68
69    $this.adjustMenuHeight = function() {
70
71      if( $(window).width() < 992 ){
72        var headerHeight = $("header").outerHeight();
73        var menuHeight =  $(window).height() - $(".header").height();
74        var MenuChildrenCount = $("#menu-main-menu").children().length;
75        var menuLineHeight = menuHeight/MenuChildrenCount;
76
77        if (menuLineHeight > 100){
78          menuLineHeight = 100;
79        }
80
81        $('.main-menu .site-menu > li > a').css('line-height',menuLineHeight + 'px');
82
83        if ( menuLineHeight < 50 ) {
84          $('.main-menu .site-menu > li > a').css('fontSize', '1.4em');
85        }
86        else {
87          $('.main-menu .site-menu > li > a').css('fontSize', '1.8em');
88        }
89      } else {
90        $('.main-menu .site-menu > li > a').css('line-height', '2.15em');
91        $('.main-menu .site-menu > li > a').css('fontSize', '17px');
92      }
93    }
94
95    $(window).on("resize", function() {
96        $this.adjustMenuHeight();
97    });
98
99    $this.adjustMenuHeight();
100
101    /**
102     * Toggle search bar
103     */
104    $("#search-btn").click(function(){
105      $("#search-bar").toggleClass("search-toggle");
106      $("#search-field").focus();
107    });
108
109    $("#search-btn").click(function(){
110      $("#search-pop-container").toggleClass("search-toggle");
111      $("#search-btn").toggleClass("is-active");
112      $("#search-field").focus();
113    });
114
115    $("#explore-category").mouseenter(function(){
116      $("#categories-dropdown-menu").addClass("categories-dropdown-menu-toggle");
117      $("#explore-category").addClass("explore-category-toggle");
118    });
119
120    $("#explore-category, #categories-dropdown-menu").mouseleave(function(){
121      if (!$("#categories-dropdown-menu").is(':hover')) {
122        $("#categories-dropdown-menu").removeClass("categories-dropdown-menu-toggle");
123        $("#explore-category").removeClass("explore-category-toggle");
124      }
125    });
126
127    /**
128     * Display lang menu
129     */
130    $(".pll-parent-menu-item").click(function(){
131      $(".pll-parent-menu-item").toggleClass("is-active");
132    });
133    $(".pll-parent-menu-item").mouseleave(function(){
134      $(".pll-parent-menu-item").removeClass("is-active");
135    });
136
137    /**
138     * Display sub menu
139     */
140    $(".main-menu ul li.menu-item-has-children").click(function(){
141      $(this).toggleClass("active");
142    });
143
144    /**
145     * Back to top in post pages
146     */
147    $('#back-to-top').click(function() {
148      $('body,html').animate({scrollTop:0},1000);
149    });
150
151    /**
152     * Validate the comment form when it is submitted
153     */
154    $(document).ready(function() {
155      $("#commentform").validate();
156    });
157
158    /**
159     * Search form submit in category dropdown change
160     */
161    $(".search-form .explore-category, .search-form .hvc-category").change(function() {
162      $(".search-form").submit();
163    });
164
165    /**
166     * Copy Embed Design
167     */
168    $('#embed-design-copy').click(function(){
169        $('#embed-design-textarea').copyme();
170    });
171
172    $.fn.copyme = function() {
173        this.select();
174        $(this).focus();
175        document.execCommand("copy");
176        document.getSelection().removeAllRanges();
177	};
178
179  /**
180   * Toggle open class on HVC centralize page share button
181   */
182  $(".hvc-centralize .share").hover(function () {
183    $(this).toggleClass('open');
184 });
185
186});
187
188function hideElement(elSelector, hiddenClass) {
189  const elTarget = document.querySelector(elSelector);
190  if (!elTarget) {
191    console.error(
192      `Unable to hide element: Selector '${elSelector}' not found!`
193    );
194    return;
195  }
196  elTarget.classList.add(hiddenClass);
197}
198
199document.addEventListener("DOMContentLoaded", function () {
200  const qs = new URLSearchParams(window.location.search);
201  const integrationParam = qs.get("integration");
202
203  if (integrationParam === "msteams") {
204    attachMutationObserver()
205    document.querySelectorAll("a").forEach(function (anchor) {
206      if (anchor.href.includes("?integration=msteams")) return;
207      anchor.href = anchor.href + "?integration=msteams";
208    });
209    hideElement("#main-menu > div:first-child", "is-invisible");
210    hideElement(".social-links", "hidden");
211    hideElement(".site-footer", "hidden");
212    hideElement(".blog-promo-sidebar", "hidden");
213    hideElement(".site-footer", "hidden");
214    hideElement(".auth-container", "hidden");
215  }
216
217  setUserFirstLandingPage();
218});
219
220// attached mutation observer to hide 'Add This' social links
221function attachMutationObserver() {
222  function onMutation(mutationList) {
223    for (const mutation of mutationList) {
224      if (mutation.type === 'childList') {
225        mutation.addedNodes.forEach(hideIfAddThisElement);
226      }
227    }
228  };
229
230  function hideIfAddThisElement(el) {
231    if (el.nodeType === Node.TEXT_NODE) return; // skip initial mutation
232    el.className.includes('at-share-dock-outer') && el.classList.add('hidden');
233    el.className.includes('addthis-smartlayers') && el.classList.add('hidden');
234  }
235
236  const observer = new MutationObserver(onMutation);
237  observer.observe(document.querySelector('body'), { attributes: false, childList: true, subtree: true });
238}
239
240/**
241 * Sets the user's first landing page as a GA4 user property.
242 * 
243 * Checks if the `first_landing_page` is already stored in cookie.
244 * If not, it saves the current page's pathname in cookie to persist across sessions.
245 * Sends this value as a user property (`first_landing_page`) to GA4 using `gtag('set', 'user_properties', ...)`.
246 * Ensures this only runs once per user, tracking their first-ever page visit.
247 */
248function setUserFirstLandingPage() {
249  if (!getCookie('first_landing_page')) {
250    setCookie('first_landing_page', window.location.pathname);
251
252    gtag('set', 'user_properties', {
253      'first_landing_page': window.location.pathname
254    });
255  }
256}
257
258/**
259 * Set cookie
260 * @param {string} cookieName - The name of the cookie
261 * @param {string} cookieValue - The value to store in the cookie
262 * @param {number} [expiryDays=365] - Number of days until cookie expires
263 */
264function setCookie(cookieName, cookieValue, expiryDays = 365) {
265  let expireDate = new Date();
266  expireDate.setDate(expireDate.getDate() + expiryDays);
267  // change domain to `localhost` for local testing
268  document.cookie = cookieName + '= ' + cookieValue + '; path=/; domain=.creately.com' + '; expires=' + expireDate.toUTCString();
269}
270
271/**
272 * Return cookie value for passing cookie name
273 * @param {string} cookieName 
274 */
275function getCookie(cookieName) {
276    let match = document.cookie.match(new RegExp('(^| )' + cookieName + '=([^;]+)'));
277    if (match) {
278        return match[2];
279    } else {
280        return false;
281    }
282}

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.