File "editor.js"

Full Path: /home/tekvhqgl/public_html/wp-content/plugins/responsive-owl-carousel-elementor/assets/js/editor.js
File size: 3.23 KB
MIME-type: text/plain
Charset: utf-8

(function ($) {
	elementor.hooks.addAction(
		"panel/open_editor/widget/owl-carousel-elementor",
		function (panel, model, view) {
			var $panelEl = panel.$el;
			var $viewEl = view.$el;

			if (!$panelEl.length) {
				return;
			}

			// when panel editor loads first time
			owce_repeater_field_hide($panelEl);

			// remember to add change, click-for repeater
			$panelEl.on(
				"input change",
				"textarea, input, select",
				function (e) {
					owce_do_bunch_of_stuff($(this), $panelEl, $viewEl, e);
				}
			);

			// this is required as elementor re-renders panel/repeater fields when go to/come back from other tabs(styles/advance)
			$panelEl.on("click", function () {
				owce_repeater_field_hide($panelEl);
			});
		}
	);

	function owce_do_bunch_of_stuff($this, $panelEl, $viewEl, event) {
		var dataSetting = $this.attr("data-setting");
		var val = $this.val();

		if ($this.is("select")) {
			if (dataSetting === "carousel_layout") {
				if (event.type === "change") {
					owce_repeater_field_hide($panelEl);
				}
				owce_modify_setting($panelEl, val);
			}
		}

		if ($this.closest(".js_repeater_single").length) {
			owce_update_carousel_item($this, $viewEl, dataSetting, val, event);
		}
	}

	// hide repeater fields depending on layout
	function owce_repeater_field_hide($element) {
		var $repeater = $element.find(".js_items_list_repeater");
		var currentLayout = owce_find_by_data(
			$element,
			"carousel_layout"
		).val();

		$repeater.find(".js_repeater_single").each(function () {
			var $this = $(this);
			if ($this.hasClass("js_hide_on_layout_" + currentLayout)) {
				// elementor removes the class 'elementor-hidden-control' when start typing on the other/visible field
				$this.css("display", "none");
			} else {
				$this.css("display", "block");
			}
		});
	} // owce_repeater_field_hide

	function owce_update_carousel_item( $this, $element, currentSetting, currentVal, event ) {
		// every repeater item has unique id
		var currentRepeaterItem = $this
			.closest(".elementor-repeater-row-controls")
			.find(".elementor-control-_id input")
			.val();

		var $currentViewItem = $element.find(
			".carousel-item-" + currentRepeaterItem
		);

		if (currentSetting !== "url") {
			owce_find_by_data($currentViewItem, currentSetting).html(
				currentVal
			);
		}

		// fires when focused out of the input/textarea
		if (event.type === "change" && currentSetting === "url") {
			$this.trigger("input");
		}
	} // owce_update_carousel_item

	function owce_modify_setting( $element, currentVal ) {
		var imgSize = owce_find_by_data($element, "carousel_thumbnail_size");

		var trigger = true;

		if (currentVal === "testimonial") {
			imgSize.val("owl_elementor_testimonial");
		} else if ( currentVal === "team" ) {
			imgSize.val("owl_elementor_team");
		} else {
			trigger = false;
			if ( imgSize.val() !== "owl_elementor_thumbnail" ) {
				imgSize.val("owl_elementor_thumbnail");
				trigger = true;
			}
		}
		// $this.add(imgSize).trigger("change");
		if (trigger) {
			imgSize.trigger("change");
		}
	} // owce_modify_setting

	// helpers
	function owce_find_by_data(element, val, attr = "setting") {
		var dataAttr = "[data-" + attr + '="' + val + '"]';
		return $(element).find(dataAttr).length
			? $(element).find(dataAttr)
			: $("");
	}
})(jQuery);