1;(function ($) { 2 "use strict" 3 4 var $window = $(window) 5 6 var DeoWidgetHandler = { 7 window: $(window), 8 html: $("html, body"), 9 ajax: {}, 10 11 document_ready: function () { 12 DeoWidgetHandler.ajax_filter_list() 13 }, 14 15 ajax_cache_obj: { 16 data: {}, 17 18 get: function (id) { 19 return DeoWidgetHandler.ajax_cache_obj.data[id] 20 }, 21 set: function (id, data) { 22 DeoWidgetHandler.ajax_cache_obj.remove(id) 23 DeoWidgetHandler.ajax_cache_obj.data[id] = data 24 }, 25 remove: function (id) { 26 delete DeoWidgetHandler.ajax_cache_obj.data[id] 27 }, 28 exist: function (id) { 29 return DeoWidgetHandler.ajax_cache_obj.data.hasOwnProperty(id) && DeoWidgetHandler.ajax_cache_obj.data[id] !== null 30 } 31 }, 32 33 ajax_block_data: function (block) { 34 var param = {} 35 param.block_id = block.data("block_id") 36 param.posts_per_page = block.data("posts_per_page") 37 param.category_id = block.data("category_id") 38 param.category_ids = block.data("category_ids") 39 param.orderby = block.data("orderby") 40 param.widget_type = block.data("widget_type") 41 param.category_hide = block.data("category_hide") 42 43 return param 44 }, 45 46 ajax_filter_list: function () { 47 $(".block-filter-link") 48 .off("click") 49 .on("click", function (e) { 50 e.preventDefault() 51 e.stopPropagation() 52 53 var filter_link = $(this) 54 var block = filter_link.parents(".content-section.section-recent-news") 55 56 var block_id = block.attr("block_id") 57 58 if (true == DeoWidgetHandler.ajax[block_id + "_processing"]) { 59 return 60 } 61 62 var filter_link_val = filter_link.data("ajax_filter_val") 63 DeoWidgetHandler.ajax[block_id + "_processing"] = true 64 65 //disable other link 66 block.find(".block-link").removeClass("is-active tabs__item--active") 67 block.find(".block-link").not(this).addClass("is-disable") 68 filter_link.addClass("is-active") 69 70 block.find(".block-inner-content").append('<div class="ajax-overlay"><div class="loader ajax-loader"><div></div></div></div>') 71 72 var param = DeoWidgetHandler.ajax_block_data(block) 73 DeoWidgetHandler.ajax_filter_reset_param(block, param, filter_link_val) 74 setTimeout(function () { 75 DeoWidgetHandler.ajax_filter_list_process(block, param) 76 }, 500) 77 }) 78 }, 79 80 ajax_filter_reset_param: function (block, param, filter_link_val) { 81 param.block_page_current = 1 82 83 block.data("block_page_current", 1) 84 var block_id = block.attr("id") 85 86 if ("undefined" == typeof DeoWidgetHandler.ajax[block_id + "_category_id"]) { 87 DeoWidgetHandler.ajax[block_id + "_category_id"] = 0 88 } 89 90 if (0 == filter_link_val) { 91 param.cat = DeoWidgetHandler.ajax[block_id + "_cat"] 92 param.category_ids = DeoWidgetHandler.ajax[block_id + "_category_ids"] 93 94 block.data("cat", DeoWidgetHandler.ajax[block_id + "_cat"]) 95 block.data("category_ids", DeoWidgetHandler.ajax[block_id + "_category_ids"]) 96 } else { 97 param.cat = filter_link_val 98 param.category_ids = 0 99 100 block.data("cat", filter_link_val) 101 block.data("category_ids", 0) 102 } 103 }, 104 105 ajax_filter_list_process: function (block, param) { 106 var param_cache = param 107 delete param_cache.block_page_max 108 var cache_id = JSON.stringify(param_cache) 109 110 if (DeoWidgetHandler.ajax_cache_obj.exist(cache_id)) { 111 var data = DeoWidgetHandler.ajax_cache_obj.get(cache_id) 112 if ("undefined" != data.block_page_max) { 113 block.data("block_page_max", data.block_page_max) 114 } 115 116 DeoWidgetHandler.ajax_end_result(block, data.content) 117 return false 118 } 119 120 $.ajax({ 121 type: "POST", 122 url: deo_vars.ajax_url, 123 data: { 124 action: "deo_widget_ajax_data", 125 data: param, 126 security: deo_vars.ajax_nonce 127 }, 128 success: function (data) { 129 data = $.parseJSON(data) 130 if ("undefined" != data.block_page_max) { 131 block.data("block_page_max", data.block_page_max) 132 } 133 DeoWidgetHandler.ajax_cache_obj.set(cache_id, data) 134 DeoWidgetHandler.ajax_end_result(block, data.content) 135 } 136 }) 137 }, 138 139 ajax_end_result: function (block, content) { 140 block.delay(100).queue(function () { 141 block.find(".block-link").removeClass("is-disable") 142 block.find(".block-filter-more").removeClass("is-disable") 143 144 var block_id = block.attr("block_id") 145 var content_wrap = block.find(".block-content-wrapper") 146 var content_inner = content_wrap.find(".block-inner-content") 147 148 content_inner.stop() 149 content_inner.html(content) 150 151 content_inner.removeClass("is-overflow") 152 153 DeoWidgetHandler.ajax[block_id + "_processing"] = false 154 155 block.dequeue() 156 }) 157 }, 158 159 //ajax blog data 160 ajax_blog_data: function (blog) { 161 var param = {} 162 param.posts_per_page = blog.data("posts_per_page") 163 param.category_id = blog.data("category_id") 164 165 return param 166 } 167 } 168 169 var DeoLoadMore = { 170 window: $(window), 171 html: $("html, body"), 172 173 document_ready: function () { 174 DeoLoadMore.ajax_load_more() 175 }, 176 177 ajax_load_more: function () { 178 $(".deo-load-more__button").on("click", function (e) { 179 var button = $(this) 180 181 if (!button.is(".clicked")) { 182 button.addClass("clicked") 183 184 e.preventDefault() 185 e.stopPropagation() 186 187 var block = button.parent(".deo-load-more").siblings(".deo-load-more-container") 188 var page = block.data("page") 189 var newPage = page + 1 190 191 var data = { 192 action: "deo_widget_load_more", 193 security: deo_vars.ajax_nonce, 194 data: { 195 page: page, 196 posts_per_page: block.data("posts_per_page"), 197 page_max: block.data("page_max"), 198 category_id: block.data("category_id"), 199 order_by: block.data("order_by"), 200 widget_type: block.data("widget_type"), 201 image_hide: block.data("image_hide"), 202 category_hide: block.data("category_hide"), 203 date_hide: block.data("date_hide"), 204 author_hide: block.data("author_hide"),
205 content_hide: block.data("content_hide"), 206 reviews_hide: block.data("reviews_hide"), 207 content_length: block.data("content_length"), 208 title_size: block.data("title_size"), 209 post_columns: block.data("post_columns"), 210 post_columns_tablet: block.data("post_columns_tablet"), 211 post_columns_mobile: block.data("post_columns_mobile") 212 } 213 } 214 215 $.ajax({ 216 type: "POST", 217 url: deo_vars.ajax_url, 218 data: data, 219 beforeSend: function (xhr) { 220 button.addClass("deo-loading") 221 button.append('<div class="loader"><div></div></div>') 222 }, 223 success: function (data) { 224 if (data) { 225 button.removeClass("deo-loading clicked") 226 button.find(".loader").remove() 227 228 block.data("page", newPage) 229 block.append(data) 230 231 if (block.data("page_max") == block.data("page")) { 232 button.remove() 233 } 234 } else { 235 button.remove() 236 } 237 } 238 }) 239 } 240 241 return false 242 }) 243 } 244 } 245 246 $(document).ready(function () { 247 DeoWidgetHandler.document_ready() 248 DeoLoadMore.document_ready() 249 }) 250 251 /* Tabs Post 252 -------------------------------------------------------*/ 253 var deoTabsPost = function ($scope, $) { 254 setTimeout(() => { 255 $(".carousel-thumbs").flickity("reloadCells") 256 }, 500) 257 initMasonry() 258 259 // 1st carousel, main 260 $(".carousel-main").flickity({ 261 cellAlign: "left", 262 contain: true, 263 pageDots: false, 264 prevNextButtons: false, 265 draggable: false, 266 lazyLoad: true, 267 setGallerySize: false 268 }) 269 270 // 2nd carousel, thumbs 271 $(".carousel-thumbs").each(function () { 272 var widgetID = $(this).closest(".elementor-element").data("id") 273 274 $(this).flickity({ 275 cellAlign: "left", 276 asNavFor: ".carousel-main-" + widgetID, 277 imagesLoaded: true, 278 contain: true, 279 pageDots: false, 280 prevNextButtons: false, 281 lazyLoad: true, 282 setGallerySize: false 283 }) 284 }) 285 286 // Watch the changes of hero height control 287 if (elementorFrontend.isEditMode()) { 288 elementor.channels.editor.on("change", function (view) { 289 let changed = view.elementSettingsModel.changed 290 291 if (changed.hero_height) { 292 $(".carousel-main").flickity("resize") 293 } 294 }) 295 } 296 } 297 298 /* Posts Carousel 299 -------------------------------------------------------*/ 300 var deoPostsCarousel = function ($scope, $) { 301 $(".carousel-posts").flickity({ 302 cellAlign: "left", 303 pageDots: false, 304 imagesLoaded: true, 305 wrapAround: true 306 }) 307 } 308 309 /* Masonry 310 -------------------------------------------------------*/ 311 function initMasonry() { 312 var $grid = $(".masonry-grid").imagesLoaded(function () { 313 $grid.masonry({ 314 itemSelector: ".masonry-item", 315 columnWidth: ".masonry-item", 316 percentPosition: true 317 }) 318 }) 319 } 320 321 $window.on("elementor/frontend/init", function () { 322 elementorFrontend.hooks.addAction("frontend/element_ready/deo-posts-carousel.default", deoPostsCarousel) 323 elementorFrontend.hooks.addAction("frontend/element_ready/deo-posts-featured-slider.default", deoPostsCarousel) 324 elementorFrontend.hooks.addAction("frontend/element_ready/deo-tabs-post.default", deoTabsPost) 325 }) 326})(jQuery)
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.