{"version":3,"sources":["webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/plugins/owl.carousel.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/directives/owlcarousel/owlcarousel.js"],"names":["$","Animate","window","document","undefined","Owl","element","options","this","settings","extend","Defaults","$element","_handlers","_plugins","_supress","_current","_speed","_coordinates","_breakpoint","_width","_items","_clones","_mergers","_widths","_invalidated","_pipe","_drag","time","target","pointer","stage","start","current","direction","_states","tags","each","proxy","i","handler","Plugins","key","plugin","charAt","toLowerCase","slice","Workers","priority","worker","push","filter","run","setup","initialize","items","loop","center","rewind","checkVisibility","mouseDrag","touchDrag","pullDrag","freeDrag","margin","stagePadding","merge","mergeFit","autoWidth","startPosition","rtl","smartSpeed","fluidSpeed","dragEndSpeed","responsive","responsiveRefreshRate","responsiveBaseElement","fallbackEasing","slideTransition","info","nestedItemSelector","itemElement","stageElement","refreshClass","loadedClass","loadingClass","rtlClass","responsiveClass","dragClass","itemClass","stageClass","stageOuterClass","grabClass","Width","Default","Inner","Outer","Type","Event","State","width","cache","relative","$stage","children","remove","grid","css","toFixed","iterator","length","widths","Math","min","clones","view","max","size","ceil","repeat","append","prepend","normalize","outerHTML","addClass","appendTo","prependTo","previous","coordinates","padding","abs","eq","removeAttr","index","minimum","maximum","reset","animate","inner","outer","n","begin","end","matches","op","removeClass","join","prototype","initializeStage","find","wrap","parent","initializeItems","$items","get","map","item","refresh","replace","not","isVisible","invalidate","imgs","nestedSelector","enter","trigger","toggleClass","is","preloadAutoWidthImages","registerEventHandlers","leave","viewport","overwrites","match","breakpoint","Number","attr","RegExp","property","name","value","optionsLogic","prepare","event","content","data","update","p","all","grep","dimension","onThrottledResize","clearTimeout","resizeTimer","setTimeout","onResize","isDefaultPrevented","support","transition","on","onTransitionEnd","onDragStart","onDragEnd","which","transform","x","split","y","position","left","top","stop","type","speed","Date","getTime","one","delta","difference","onDragMove","preventDefault","pull","off","closest","coordinate","transform3d","state","part","v","suppress","release","m","isNumeric","reciprocalItemsWidth","elementWidth","mergers","odd","even","multiplier","newPosition","duration","from","to","factor","revert","distance","next","prev","stopPropagation","srcElement","originalTarget","innerWidth","documentElement","clientWidth","empty","jQuery","nodeType","addBack","add","after","before","splice","images","Image","e","src","destroy","unwrap","contents","removeData","a","o","b","listener","capture","addEventListener","attachEvent","removeEventListener","detachEvent","namespace","status","count","camelCase","relatedTarget","onTrigger","register","call","concat","object","special","owl","_default","apply","indexOf","arguments","tag","inArray","events","result","originalEvent","touches","changedTouches","pageX","pageY","clientX","clientY","number","isNaN","parseFloat","first","second","fn","owlCarousel","option","args","Array","$this","Constructor","Zepto","AutoRefresh","carousel","_core","_interval","_visible","autoRefresh","watch","autoRefreshInterval","setInterval","clearInterval","Object","getOwnPropertyNames","Lazy","_loaded","lazyLoad","load","lazyLoadEager","$item","$elements","image","url","devicePixelRatio","onload","handlers","AutoHeight","_previousHeight","autoHeight","_intervalId","refThis","resize","autoHeightClass","lazyLoadEnabled","visible","toArray","heights","maxheight","height","Video","_videos","_playing","video","isInFullScreen","fetch","play","videoHeight","videoWidth","id","Error","thumbnail","tnLink","path","dimensions","customTn","srcType","lazyClass","create","ajax","jsonp","dataType","success","thumbnail_large","framegrab_url","html","insertAfter","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","hasClass","scope","core","swapping","animateOut","animateIn","swap","animation","clear","incoming","outgoing","Autoplay","_call","_time","_timeout","_paused","autoplay","t","s","autoplayHoverPause","pause","autoplayTimeout","autoplaySpeed","_next","round","read","hidden","timeout","elapsed","Navigation","_initialized","_pages","_controls","_templates","_overrides","dotsData","dotClass","pop","draw","nav","navText","navSpeed","navElement","navContainer","navContainerClass","navClass","slideBy","dotsClass","dots","dotsEach","dotsSpeed","dotsContainer","override","$relative","$previous","$next","prop","$absolute","control","overides","j","lower","upper","disabled","page","getPosition","successor","standard","style","prefixes","WebkitTransition","MozTransition","OTransition","WebkitAnimation","MozAnimation","OAnimation","tests","test","prefixed","toUpperCase","String","angular","module","factory","service","init","resizeProductsCarousels","resizeProductGallery","attrs","_scope","onInitialize","onInitialized","$apply","owlLoaded","$tab","onLoadedLazy","onRefreshed","isDefined","eval","onResized","hasOwnProperty","lazy","$eval","$on","$targ","cClass","equalHeights","body","active"],"mappings":"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","file":"owlcarousel.64e18bbd43644c9d25a5.js","sourcesContent":["/**\r\n * Owl Carousel v2.3.4\r\n * Copyright 2013-2018 David Deutsch\r\n * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE\r\n */\r\n/**\r\n * Owl carousel\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n * @todo Lazy Load Icon\r\n * @todo prevent animationend bubling\r\n * @todo itemsScaleUp\r\n * @todo Test Zepto\r\n * @todo stagePadding calculate wrong active classes\r\n */\r\n/* eslint-disable */\r\n;(function($, window, document, undefined) {\r\n\r\n /**\r\n * Creates a carousel.\r\n * @class The Owl Carousel.\r\n * @public\r\n * @param {HTMLElement|jQuery} element - The element to create the carousel for.\r\n * @param {Object} [options] - The options\r\n */\r\n function Owl(element, options) {\r\n\r\n /**\r\n * Current settings for the carousel.\r\n * @public\r\n */\r\n this.settings = null;\r\n\r\n /**\r\n * Current options set by the caller including defaults.\r\n * @public\r\n */\r\n this.options = $.extend({}, Owl.Defaults, options);\r\n\r\n /**\r\n * Plugin element.\r\n * @public\r\n */\r\n this.$element = $(element);\r\n\r\n /**\r\n * Proxied event handlers.\r\n * @protected\r\n */\r\n this._handlers = {};\r\n\r\n /**\r\n * References to the running plugins of this carousel.\r\n * @protected\r\n */\r\n this._plugins = {};\r\n\r\n /**\r\n * Currently suppressed events to prevent them from being retriggered.\r\n * @protected\r\n */\r\n this._supress = {};\r\n\r\n /**\r\n * Absolute current position.\r\n * @protected\r\n */\r\n this._current = null;\r\n\r\n /**\r\n * Animation speed in milliseconds.\r\n * @protected\r\n */\r\n this._speed = null;\r\n\r\n /**\r\n * Coordinates of all items in pixel.\r\n * @todo The name of this member is missleading.\r\n * @protected\r\n */\r\n this._coordinates = [];\r\n\r\n /**\r\n * Current breakpoint.\r\n * @todo Real media queries would be nice.\r\n * @protected\r\n */\r\n this._breakpoint = null;\r\n\r\n /**\r\n * Current width of the plugin element.\r\n */\r\n this._width = null;\r\n\r\n /**\r\n * All real items.\r\n * @protected\r\n */\r\n this._items = [];\r\n\r\n /**\r\n * All cloned items.\r\n * @protected\r\n */\r\n this._clones = [];\r\n\r\n /**\r\n * Merge values of all items.\r\n * @todo Maybe this could be part of a plugin.\r\n * @protected\r\n */\r\n this._mergers = [];\r\n\r\n /**\r\n * Widths of all items.\r\n */\r\n this._widths = [];\r\n\r\n /**\r\n * Invalidated parts within the update process.\r\n * @protected\r\n */\r\n this._invalidated = {};\r\n\r\n /**\r\n * Ordered list of workers for the update process.\r\n * @protected\r\n */\r\n this._pipe = [];\r\n\r\n /**\r\n * Current state information for the drag operation.\r\n * @todo #261\r\n * @protected\r\n */\r\n this._drag = {\r\n time: null,\r\n target: null,\r\n pointer: null,\r\n stage: {\r\n start: null,\r\n current: null\r\n },\r\n direction: null\r\n };\r\n\r\n /**\r\n * Current state information and their tags.\r\n * @type {Object}\r\n * @protected\r\n */\r\n this._states = {\r\n current: {},\r\n tags: {\r\n 'initializing': [ 'busy' ],\r\n 'animating': [ 'busy' ],\r\n 'dragging': [ 'interacting' ]\r\n }\r\n };\r\n\r\n $.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) {\r\n this._handlers[handler] = $.proxy(this[handler], this);\r\n }, this));\r\n\r\n $.each(Owl.Plugins, $.proxy(function(key, plugin) {\r\n this._plugins[key.charAt(0).toLowerCase() + key.slice(1)]\r\n = new plugin(this);\r\n }, this));\r\n\r\n $.each(Owl.Workers, $.proxy(function(priority, worker) {\r\n this._pipe.push({\r\n 'filter': worker.filter,\r\n 'run': $.proxy(worker.run, this)\r\n });\r\n }, this));\r\n\r\n this.setup();\r\n this.initialize();\r\n }\r\n\r\n /**\r\n * Default options for the carousel.\r\n * @public\r\n */\r\n Owl.Defaults = {\r\n items: 3,\r\n loop: false,\r\n center: false,\r\n rewind: false,\r\n checkVisibility: true,\r\n\r\n mouseDrag: true,\r\n touchDrag: true,\r\n pullDrag: true,\r\n freeDrag: false,\r\n\r\n margin: 0,\r\n stagePadding: 0,\r\n\r\n merge: false,\r\n mergeFit: true,\r\n autoWidth: false,\r\n\r\n startPosition: 0,\r\n rtl: false,\r\n\r\n smartSpeed: 250,\r\n fluidSpeed: false,\r\n dragEndSpeed: false,\r\n\r\n responsive: {},\r\n responsiveRefreshRate: 200,\r\n responsiveBaseElement: window,\r\n\r\n fallbackEasing: 'swing',\r\n slideTransition: '',\r\n\r\n info: false,\r\n\r\n nestedItemSelector: false,\r\n itemElement: 'div',\r\n stageElement: 'div',\r\n\r\n refreshClass: 'owl-refresh',\r\n loadedClass: 'owl-loaded',\r\n loadingClass: 'owl-loading',\r\n rtlClass: 'owl-rtl',\r\n responsiveClass: 'owl-responsive',\r\n dragClass: 'owl-drag',\r\n itemClass: 'owl-item',\r\n stageClass: 'owl-stage',\r\n stageOuterClass: 'owl-stage-outer',\r\n grabClass: 'owl-grab'\r\n };\r\n\r\n /**\r\n * Enumeration for width.\r\n * @public\r\n * @readonly\r\n * @enum {String}\r\n */\r\n Owl.Width = {\r\n Default: 'default',\r\n Inner: 'inner',\r\n Outer: 'outer'\r\n };\r\n\r\n /**\r\n * Enumeration for types.\r\n * @public\r\n * @readonly\r\n * @enum {String}\r\n */\r\n Owl.Type = {\r\n Event: 'event',\r\n State: 'state'\r\n };\r\n\r\n /**\r\n * Contains all registered plugins.\r\n * @public\r\n */\r\n Owl.Plugins = {};\r\n\r\n /**\r\n * List of workers involved in the update process.\r\n */\r\n Owl.Workers = [ {\r\n filter: [ 'width', 'settings' ],\r\n run: function() {\r\n this._width = this.$element.width();\r\n }\r\n }, {\r\n filter: [ 'width', 'items', 'settings' ],\r\n run: function(cache) {\r\n cache.current = this._items && this._items[this.relative(this._current)];\r\n }\r\n }, {\r\n filter: [ 'items', 'settings' ],\r\n run: function() {\r\n this.$stage.children('.cloned').remove();\r\n }\r\n }, {\r\n filter: [ 'width', 'items', 'settings' ],\r\n run: function(cache) {\r\n var margin = this.settings.margin || '',\r\n grid = !this.settings.autoWidth,\r\n rtl = this.settings.rtl,\r\n css = {\r\n 'width': 'auto',\r\n 'margin-left': rtl ? margin : '',\r\n 'margin-right': rtl ? '' : margin\r\n };\r\n\r\n !grid && this.$stage.children().css(css);\r\n\r\n cache.css = css;\r\n }\r\n }, {\r\n filter: [ 'width', 'items', 'settings' ],\r\n run: function(cache) {\r\n var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,\r\n merge = null,\r\n iterator = this._items.length,\r\n grid = !this.settings.autoWidth,\r\n widths = [];\r\n\r\n cache.items = {\r\n merge: false,\r\n width: width\r\n };\r\n\r\n while (iterator--) {\r\n merge = this._mergers[iterator];\r\n merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge;\r\n\r\n cache.items.merge = merge > 1 || cache.items.merge;\r\n\r\n widths[iterator] = !grid ? this._items[iterator].width() : width * merge;\r\n }\r\n\r\n this._widths = widths;\r\n }\r\n }, {\r\n filter: [ 'items', 'settings' ],\r\n run: function() {\r\n var clones = [],\r\n items = this._items,\r\n settings = this.settings,\r\n // TODO: Should be computed from number of min width items in stage\r\n view = Math.max(settings.items * 2, 4),\r\n size = Math.ceil(items.length / 2) * 2,\r\n repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0,\r\n append = '',\r\n prepend = '';\r\n\r\n repeat /= 2;\r\n\r\n while (repeat > 0) {\r\n // Switch to only using appended clones\r\n clones.push(this.normalize(clones.length / 2, true));\r\n append = append + items[clones[clones.length - 1]][0].outerHTML;\r\n clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true));\r\n prepend = items[clones[clones.length - 1]][0].outerHTML + prepend;\r\n repeat -= 1;\r\n }\r\n\r\n this._clones = clones;\r\n\r\n $(append).addClass('cloned').appendTo(this.$stage);\r\n $(prepend).addClass('cloned').prependTo(this.$stage);\r\n }\r\n }, {\r\n filter: [ 'width', 'items', 'settings' ],\r\n run: function() {\r\n var rtl = this.settings.rtl ? 1 : -1,\r\n size = this._clones.length + this._items.length,\r\n iterator = -1,\r\n previous = 0,\r\n current = 0,\r\n coordinates = [];\r\n\r\n while (++iterator < size) {\r\n previous = coordinates[iterator - 1] || 0;\r\n current = this._widths[this.relative(iterator)] + this.settings.margin;\r\n coordinates.push(previous + current * rtl);\r\n }\r\n\r\n this._coordinates = coordinates;\r\n }\r\n }, {\r\n filter: [ 'width', 'items', 'settings' ],\r\n run: function() {\r\n var padding = this.settings.stagePadding,\r\n coordinates = this._coordinates,\r\n css = {\r\n 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2,\r\n 'padding-left': padding || '',\r\n 'padding-right': padding || ''\r\n };\r\n\r\n this.$stage.css(css);\r\n }\r\n }, {\r\n filter: [ 'width', 'items', 'settings' ],\r\n run: function(cache) {\r\n var iterator = this._coordinates.length,\r\n grid = !this.settings.autoWidth,\r\n items = this.$stage.children();\r\n\r\n if (grid && cache.items.merge) {\r\n while (iterator--) {\r\n cache.css.width = this._widths[this.relative(iterator)];\r\n items.eq(iterator).css(cache.css);\r\n }\r\n } else if (grid) {\r\n cache.css.width = cache.items.width;\r\n items.css(cache.css);\r\n }\r\n }\r\n }, {\r\n filter: [ 'items' ],\r\n run: function() {\r\n this._coordinates.length < 1 && this.$stage.removeAttr('style');\r\n }\r\n }, {\r\n filter: [ 'width', 'items', 'settings' ],\r\n run: function(cache) {\r\n cache.current = cache.current ? this.$stage.children().index(cache.current) : 0;\r\n cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current));\r\n this.reset(cache.current);\r\n }\r\n }, {\r\n filter: [ 'position' ],\r\n run: function() {\r\n this.animate(this.coordinates(this._current));\r\n }\r\n }, {\r\n filter: [ 'width', 'position', 'items', 'settings' ],\r\n run: function() {\r\n var rtl = this.settings.rtl ? 1 : -1,\r\n padding = this.settings.stagePadding * 2,\r\n begin = this.coordinates(this.current()) + padding,\r\n end = begin + this.width() * rtl,\r\n inner, outer, matches = [], i, n;\r\n\r\n for (i = 0, n = this._coordinates.length; i < n; i++) {\r\n inner = this._coordinates[i - 1] || 0;\r\n outer = Math.abs(this._coordinates[i]) + padding * rtl;\r\n\r\n if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end)))\r\n || (this.op(outer, '<', begin) && this.op(outer, '>', end))) {\r\n matches.push(i);\r\n }\r\n }\r\n\r\n this.$stage.children('.active').removeClass('active');\r\n this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active');\r\n\r\n this.$stage.children('.center').removeClass('center');\r\n if (this.settings.center) {\r\n this.$stage.children().eq(this.current()).addClass('center');\r\n }\r\n }\r\n } ];\r\n\r\n /**\r\n * Create the stage DOM element\r\n */\r\n Owl.prototype.initializeStage = function() {\r\n this.$stage = this.$element.find('.' + this.settings.stageClass);\r\n\r\n // if the stage is already in the DOM, grab it and skip stage initialization\r\n if (this.$stage.length) {\r\n return;\r\n }\r\n\r\n this.$element.addClass(this.options.loadingClass);\r\n\r\n // create stage\r\n this.$stage = $('<' + this.settings.stageElement + '>', {\r\n \"class\": this.settings.stageClass\r\n }).wrap( $( '
', {\r\n \"class\": this.settings.stageOuterClass\r\n }));\r\n\r\n // append stage\r\n this.$element.append(this.$stage.parent());\r\n };\r\n\r\n /**\r\n * Create item DOM elements\r\n */\r\n Owl.prototype.initializeItems = function() {\r\n var $items = this.$element.find('.owl-item');\r\n\r\n // if the items are already in the DOM, grab them and skip item initialization\r\n if ($items.length) {\r\n this._items = $items.get().map(function(item) {\r\n return $(item);\r\n });\r\n\r\n this._mergers = this._items.map(function() {\r\n return 1;\r\n });\r\n\r\n this.refresh();\r\n\r\n return;\r\n }\r\n\r\n // append content\r\n this.replace(this.$element.children().not(this.$stage.parent()));\r\n\r\n // check visibility\r\n if (this.isVisible()) {\r\n // update view\r\n this.refresh();\r\n } else {\r\n // invalidate width\r\n this.invalidate('width');\r\n }\r\n\r\n this.$element\r\n .removeClass(this.options.loadingClass)\r\n .addClass(this.options.loadedClass);\r\n };\r\n\r\n /**\r\n * Initializes the carousel.\r\n * @protected\r\n */\r\n Owl.prototype.initialize = function() {\r\n this.enter('initializing');\r\n this.trigger('initialize');\r\n\r\n this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl);\r\n\r\n if (this.settings.autoWidth && !this.is('pre-loading')) {\r\n var imgs, nestedSelector, width;\r\n imgs = this.$element.find('img');\r\n nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;\r\n width = this.$element.children(nestedSelector).width();\r\n\r\n if (imgs.length && width <= 0) {\r\n this.preloadAutoWidthImages(imgs);\r\n }\r\n }\r\n\r\n this.initializeStage();\r\n this.initializeItems();\r\n\r\n // register event handlers\r\n this.registerEventHandlers();\r\n\r\n this.leave('initializing');\r\n this.trigger('initialized');\r\n };\r\n\r\n /**\r\n * @returns {Boolean} visibility of $element\r\n * if you know the carousel will always be visible you can set `checkVisibility` to `false` to\r\n * prevent the expensive browser layout forced reflow the $element.is(':visible') does\r\n */\r\n Owl.prototype.isVisible = function() {\r\n return this.settings.checkVisibility\r\n ? this.$element.is(':visible')\r\n : true;\r\n };\r\n\r\n /**\r\n * Setups the current settings.\r\n * @todo Remove responsive classes. Why should adaptive designs be brought into IE8?\r\n * @todo Support for media queries by using `matchMedia` would be nice.\r\n * @public\r\n */\r\n Owl.prototype.setup = function() {\r\n var viewport = this.viewport(),\r\n overwrites = this.options.responsive,\r\n match = -1,\r\n settings = null;\r\n\r\n if (!overwrites) {\r\n settings = $.extend({}, this.options);\r\n } else {\r\n $.each(overwrites, function(breakpoint) {\r\n if (breakpoint <= viewport && breakpoint > match) {\r\n match = Number(breakpoint);\r\n }\r\n });\r\n\r\n settings = $.extend({}, this.options, overwrites[match]);\r\n if (typeof settings.stagePadding === 'function') {\r\n settings.stagePadding = settings.stagePadding();\r\n }\r\n delete settings.responsive;\r\n\r\n // responsive class\r\n if (settings.responsiveClass) {\r\n this.$element.attr('class',\r\n this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\\\S+\\\\s', 'g'), '$1' + match)\r\n );\r\n }\r\n }\r\n\r\n this.trigger('change', { property: { name: 'settings', value: settings } });\r\n this._breakpoint = match;\r\n this.settings = settings;\r\n this.invalidate('settings');\r\n this.trigger('changed', { property: { name: 'settings', value: this.settings } });\r\n };\r\n\r\n /**\r\n * Updates option logic if necessery.\r\n * @protected\r\n */\r\n Owl.prototype.optionsLogic = function() {\r\n if (this.settings.autoWidth) {\r\n this.settings.stagePadding = false;\r\n this.settings.merge = false;\r\n }\r\n };\r\n\r\n /**\r\n * Prepares an item before add.\r\n * @todo Rename event parameter `content` to `item`.\r\n * @protected\r\n * @returns {jQuery|HTMLElement} - The item container.\r\n */\r\n Owl.prototype.prepare = function(item) {\r\n var event = this.trigger('prepare', { content: item });\r\n\r\n if (!event.data) {\r\n event.data = $('<' + this.settings.itemElement + '/>')\r\n .addClass(this.options.itemClass).append(item)\r\n }\r\n\r\n this.trigger('prepared', { content: event.data });\r\n\r\n return event.data;\r\n };\r\n\r\n /**\r\n * Updates the view.\r\n * @public\r\n */\r\n Owl.prototype.update = function() {\r\n var i = 0,\r\n n = this._pipe.length,\r\n filter = $.proxy(function(p) { return this[p] }, this._invalidated),\r\n cache = {};\r\n\r\n while (i < n) {\r\n if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) {\r\n this._pipe[i].run(cache);\r\n }\r\n i++;\r\n }\r\n\r\n this._invalidated = {};\r\n\r\n !this.is('valid') && this.enter('valid');\r\n };\r\n\r\n /**\r\n * Gets the width of the view.\r\n * @public\r\n * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return.\r\n * @returns {Number} - The width of the view in pixel.\r\n */\r\n Owl.prototype.width = function(dimension) {\r\n dimension = dimension || Owl.Width.Default;\r\n switch (dimension) {\r\n case Owl.Width.Inner:\r\n case Owl.Width.Outer:\r\n return this._width;\r\n default:\r\n return this._width - this.settings.stagePadding * 2 + this.settings.margin;\r\n }\r\n };\r\n\r\n /**\r\n * Refreshes the carousel primarily for adaptive purposes.\r\n * @public\r\n */\r\n Owl.prototype.refresh = function() {\r\n this.enter('refreshing');\r\n this.trigger('refresh');\r\n\r\n this.setup();\r\n\r\n this.optionsLogic();\r\n\r\n this.$element.addClass(this.options.refreshClass);\r\n\r\n this.update();\r\n\r\n this.$element.removeClass(this.options.refreshClass);\r\n\r\n this.leave('refreshing');\r\n this.trigger('refreshed');\r\n };\r\n\r\n /**\r\n * Checks window `resize` event.\r\n * @protected\r\n */\r\n Owl.prototype.onThrottledResize = function() {\r\n window.clearTimeout(this.resizeTimer);\r\n this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate);\r\n };\r\n\r\n /**\r\n * Checks window `resize` event.\r\n * @protected\r\n */\r\n Owl.prototype.onResize = function() {\r\n if (!this._items.length) {\r\n return false;\r\n }\r\n\r\n if (this._width === this.$element.width()) {\r\n return false;\r\n }\r\n\r\n if (!this.isVisible()) {\r\n return false;\r\n }\r\n\r\n this.enter('resizing');\r\n\r\n if (this.trigger('resize').isDefaultPrevented()) {\r\n this.leave('resizing');\r\n return false;\r\n }\r\n\r\n this.invalidate('width');\r\n\r\n this.refresh();\r\n\r\n this.leave('resizing');\r\n this.trigger('resized');\r\n };\r\n\r\n /**\r\n * Registers event handlers.\r\n * @todo Check `msPointerEnabled`\r\n * @todo #261\r\n * @protected\r\n */\r\n Owl.prototype.registerEventHandlers = function() {\r\n if ($.support.transition) {\r\n this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this));\r\n }\r\n\r\n if (this.settings.responsive !== false) {\r\n this.on(window, 'resize', this._handlers.onThrottledResize);\r\n }\r\n\r\n if (this.settings.mouseDrag) {\r\n this.$element.addClass(this.options.dragClass);\r\n this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this));\r\n this.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false });\r\n }\r\n\r\n if (this.settings.touchDrag){\r\n this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this));\r\n this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this));\r\n }\r\n };\r\n\r\n /**\r\n * Handles `touchstart` and `mousedown` events.\r\n * @todo Horizontal swipe threshold as option\r\n * @todo #261\r\n * @protected\r\n * @param {Event} event - The event arguments.\r\n */\r\n Owl.prototype.onDragStart = function(event) {\r\n var stage = null;\r\n\r\n if (event.which === 3) {\r\n return;\r\n }\r\n\r\n if ($.support.transform) {\r\n stage = this.$stage.css('transform').replace(/.*\\(|\\)| /g, '').split(',');\r\n stage = {\r\n x: stage[stage.length === 16 ? 12 : 4],\r\n y: stage[stage.length === 16 ? 13 : 5]\r\n };\r\n } else {\r\n stage = this.$stage.position();\r\n stage = {\r\n x: this.settings.rtl ?\r\n stage.left + this.$stage.width() - this.width() + this.settings.margin :\r\n stage.left,\r\n y: stage.top\r\n };\r\n }\r\n\r\n if (this.is('animating')) {\r\n $.support.transform ? this.animate(stage.x) : this.$stage.stop()\r\n this.invalidate('position');\r\n }\r\n\r\n this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown');\r\n\r\n this.speed(0);\r\n\r\n this._drag.time = new Date().getTime();\r\n this._drag.target = $(event.target);\r\n this._drag.stage.start = stage;\r\n this._drag.stage.current = stage;\r\n this._drag.pointer = this.pointer(event);\r\n\r\n $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this));\r\n\r\n $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) {\r\n var delta = this.difference(this._drag.pointer, this.pointer(event));\r\n\r\n $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this));\r\n\r\n if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n this.enter('dragging');\r\n this.trigger('drag');\r\n }, this));\r\n };\r\n\r\n /**\r\n * Handles the `touchmove` and `mousemove` events.\r\n * @todo #261\r\n * @protected\r\n * @param {Event} event - The event arguments.\r\n */\r\n Owl.prototype.onDragMove = function(event) {\r\n var minimum = null,\r\n maximum = null,\r\n pull = null,\r\n delta = this.difference(this._drag.pointer, this.pointer(event)),\r\n stage = this.difference(this._drag.stage.start, delta);\r\n\r\n if (!this.is('dragging')) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n if (this.settings.loop) {\r\n minimum = this.coordinates(this.minimum());\r\n maximum = this.coordinates(this.maximum() + 1) - minimum;\r\n stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum;\r\n } else {\r\n minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());\r\n maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());\r\n pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0;\r\n stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull);\r\n }\r\n\r\n this._drag.stage.current = stage;\r\n\r\n this.animate(stage.x);\r\n };\r\n\r\n /**\r\n * Handles the `touchend` and `mouseup` events.\r\n * @todo #261\r\n * @todo Threshold for click event\r\n * @protected\r\n * @param {Event} event - The event arguments.\r\n */\r\n Owl.prototype.onDragEnd = function(event) {\r\n var delta = this.difference(this._drag.pointer, this.pointer(event)),\r\n stage = this._drag.stage.current,\r\n direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right';\r\n\r\n $(document).off('.owl.core');\r\n\r\n this.$element.removeClass(this.options.grabClass);\r\n\r\n if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) {\r\n this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);\r\n this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction));\r\n this.invalidate('position');\r\n this.update();\r\n\r\n this._drag.direction = direction;\r\n\r\n if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) {\r\n this._drag.target.one('click.owl.core', function() { return false; });\r\n }\r\n }\r\n\r\n if (!this.is('dragging')) {\r\n return;\r\n }\r\n\r\n this.leave('dragging');\r\n this.trigger('dragged');\r\n };\r\n\r\n /**\r\n * Gets absolute position of the closest item for a coordinate.\r\n * @todo Setting `freeDrag` makes `closest` not reusable. See #165.\r\n * @protected\r\n * @param {Number} coordinate - The coordinate in pixel.\r\n * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`.\r\n * @return {Number} - The absolute position of the closest item.\r\n */\r\n Owl.prototype.closest = function(coordinate, direction) {\r\n var position = -1,\r\n pull = 30,\r\n width = this.width(),\r\n coordinates = this.coordinates();\r\n\r\n if (!this.settings.freeDrag) {\r\n // check closest item\r\n $.each(coordinates, $.proxy(function(index, value) {\r\n // on a left pull, check on current index\r\n if (direction === 'left' && coordinate > value - pull && coordinate < value + pull) {\r\n position = index;\r\n // on a right pull, check on previous index\r\n // to do so, subtract width from value and set position = index + 1\r\n } else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) {\r\n position = index + 1;\r\n } else if (this.op(coordinate, '<', value)\r\n && this.op(coordinate, '>', coordinates[index + 1] !== undefined ? coordinates[index + 1] : value - width)) {\r\n position = direction === 'left' ? index + 1 : index;\r\n }\r\n return position === -1;\r\n }, this));\r\n }\r\n\r\n if (!this.settings.loop) {\r\n // non loop boundries\r\n if (this.op(coordinate, '>', coordinates[this.minimum()])) {\r\n position = coordinate = this.minimum();\r\n } else if (this.op(coordinate, '<', coordinates[this.maximum()])) {\r\n position = coordinate = this.maximum();\r\n }\r\n }\r\n\r\n return position;\r\n };\r\n\r\n /**\r\n * Animates the stage.\r\n * @todo #270\r\n * @public\r\n * @param {Number} coordinate - The coordinate in pixels.\r\n */\r\n Owl.prototype.animate = function(coordinate) {\r\n var animate = this.speed() > 0;\r\n\r\n this.is('animating') && this.onTransitionEnd();\r\n\r\n if (animate) {\r\n this.enter('animating');\r\n this.trigger('translate');\r\n }\r\n\r\n if ($.support.transform3d && $.support.transition) {\r\n this.$stage.css({\r\n transform: 'translate3d(' + coordinate + 'px,0px,0px)',\r\n transition: (this.speed() / 1000) + 's' + (\r\n this.settings.slideTransition ? ' ' + this.settings.slideTransition : ''\r\n )\r\n });\r\n } else if (animate) {\r\n this.$stage.animate({\r\n left: coordinate + 'px'\r\n }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this));\r\n } else {\r\n this.$stage.css({\r\n left: coordinate + 'px'\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Checks whether the carousel is in a specific state or not.\r\n * @param {String} state - The state to check.\r\n * @returns {Boolean} - The flag which indicates if the carousel is busy.\r\n */\r\n Owl.prototype.is = function(state) {\r\n return this._states.current[state] && this._states.current[state] > 0;\r\n };\r\n\r\n /**\r\n * Sets the absolute position of the current item.\r\n * @public\r\n * @param {Number} [position] - The new absolute position or nothing to leave it unchanged.\r\n * @returns {Number} - The absolute position of the current item.\r\n */\r\n Owl.prototype.current = function(position) {\r\n if (position === undefined) {\r\n return this._current;\r\n }\r\n\r\n if (this._items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n position = this.normalize(position);\r\n\r\n if (this._current !== position) {\r\n var event = this.trigger('change', { property: { name: 'position', value: position } });\r\n\r\n if (event.data !== undefined) {\r\n position = this.normalize(event.data);\r\n }\r\n\r\n this._current = position;\r\n\r\n this.invalidate('position');\r\n\r\n this.trigger('changed', { property: { name: 'position', value: this._current } });\r\n }\r\n\r\n return this._current;\r\n };\r\n\r\n /**\r\n * Invalidates the given part of the update routine.\r\n * @param {String} [part] - The part to invalidate.\r\n * @returns {Array.} - The invalidated parts.\r\n */\r\n Owl.prototype.invalidate = function(part) {\r\n if ($.type(part) === 'string') {\r\n this._invalidated[part] = true;\r\n this.is('valid') && this.leave('valid');\r\n }\r\n return $.map(this._invalidated, function(v, i) { return i });\r\n };\r\n\r\n /**\r\n * Resets the absolute position of the current item.\r\n * @public\r\n * @param {Number} position - The absolute position of the new item.\r\n */\r\n Owl.prototype.reset = function(position) {\r\n position = this.normalize(position);\r\n\r\n if (position === undefined) {\r\n return;\r\n }\r\n\r\n this._speed = 0;\r\n this._current = position;\r\n\r\n this.suppress([ 'translate', 'translated' ]);\r\n\r\n this.animate(this.coordinates(position));\r\n\r\n this.release([ 'translate', 'translated' ]);\r\n };\r\n\r\n /**\r\n * Normalizes an absolute or a relative position of an item.\r\n * @public\r\n * @param {Number} position - The absolute or relative position to normalize.\r\n * @param {Boolean} [relative=false] - Whether the given position is relative or not.\r\n * @returns {Number} - The normalized position.\r\n */\r\n Owl.prototype.normalize = function(position, relative) {\r\n var n = this._items.length,\r\n m = relative ? 0 : this._clones.length;\r\n\r\n if (!this.isNumeric(position) || n < 1) {\r\n position = undefined;\r\n } else if (position < 0 || position >= n + m) {\r\n position = ((position - m / 2) % n + n) % n + m / 2;\r\n }\r\n\r\n return position;\r\n };\r\n\r\n /**\r\n * Converts an absolute position of an item into a relative one.\r\n * @public\r\n * @param {Number} position - The absolute position to convert.\r\n * @returns {Number} - The converted position.\r\n */\r\n Owl.prototype.relative = function(position) {\r\n position -= this._clones.length / 2;\r\n return this.normalize(position, true);\r\n };\r\n\r\n /**\r\n * Gets the maximum position for the current item.\r\n * @public\r\n * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\r\n * @returns {Number}\r\n */\r\n Owl.prototype.maximum = function(relative) {\r\n var settings = this.settings,\r\n maximum = this._coordinates.length,\r\n iterator,\r\n reciprocalItemsWidth,\r\n elementWidth;\r\n\r\n if (settings.loop) {\r\n maximum = this._clones.length / 2 + this._items.length - 1;\r\n } else if (settings.autoWidth || settings.merge) {\r\n iterator = this._items.length;\r\n if (iterator) {\r\n reciprocalItemsWidth = this._items[--iterator].width();\r\n elementWidth = this.$element.width();\r\n while (iterator--) {\r\n reciprocalItemsWidth += this._items[iterator].width() + this.settings.margin;\r\n if (reciprocalItemsWidth > elementWidth) {\r\n break;\r\n }\r\n }\r\n }\r\n maximum = iterator + 1;\r\n } else if (settings.center) {\r\n maximum = this._items.length - 1;\r\n } else {\r\n maximum = this._items.length - settings.items;\r\n }\r\n\r\n if (relative) {\r\n maximum -= this._clones.length / 2;\r\n }\r\n\r\n return Math.max(maximum, 0);\r\n };\r\n\r\n /**\r\n * Gets the minimum position for the current item.\r\n * @public\r\n * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\r\n * @returns {Number}\r\n */\r\n Owl.prototype.minimum = function(relative) {\r\n return relative ? 0 : this._clones.length / 2;\r\n };\r\n\r\n /**\r\n * Gets an item at the specified relative position.\r\n * @public\r\n * @param {Number} [position] - The relative position of the item.\r\n * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\r\n */\r\n Owl.prototype.items = function(position) {\r\n if (position === undefined) {\r\n return this._items.slice();\r\n }\r\n\r\n position = this.normalize(position, true);\r\n return this._items[position];\r\n };\r\n\r\n /**\r\n * Gets an item at the specified relative position.\r\n * @public\r\n * @param {Number} [position] - The relative position of the item.\r\n * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\r\n */\r\n Owl.prototype.mergers = function(position) {\r\n if (position === undefined) {\r\n return this._mergers.slice();\r\n }\r\n\r\n position = this.normalize(position, true);\r\n return this._mergers[position];\r\n };\r\n\r\n /**\r\n * Gets the absolute positions of clones for an item.\r\n * @public\r\n * @param {Number} [position] - The relative position of the item.\r\n * @returns {Array.} - The absolute positions of clones for the item or all if no position was given.\r\n */\r\n Owl.prototype.clones = function(position) {\r\n var odd = this._clones.length / 2,\r\n even = odd + this._items.length,\r\n map = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 };\r\n\r\n if (position === undefined) {\r\n return $.map(this._clones, function(v, i) { return map(i) });\r\n }\r\n\r\n return $.map(this._clones, function(v, i) { return v === position ? map(i) : null });\r\n };\r\n\r\n /**\r\n * Sets the current animation speed.\r\n * @public\r\n * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged.\r\n * @returns {Number} - The current animation speed in milliseconds.\r\n */\r\n Owl.prototype.speed = function(speed) {\r\n if (speed !== undefined) {\r\n this._speed = speed;\r\n }\r\n\r\n return this._speed;\r\n };\r\n\r\n /**\r\n * Gets the coordinate of an item.\r\n * @todo The name of this method is missleanding.\r\n * @public\r\n * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`.\r\n * @returns {Number|Array.} - The coordinate of the item in pixel or all coordinates.\r\n */\r\n Owl.prototype.coordinates = function(position) {\r\n var multiplier = 1,\r\n newPosition = position - 1,\r\n coordinate;\r\n\r\n if (position === undefined) {\r\n return $.map(this._coordinates, $.proxy(function(coordinate, index) {\r\n return this.coordinates(index);\r\n }, this));\r\n }\r\n\r\n if (this.settings.center) {\r\n if (this.settings.rtl) {\r\n multiplier = -1;\r\n newPosition = position + 1;\r\n }\r\n\r\n coordinate = this._coordinates[position];\r\n coordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier;\r\n } else {\r\n coordinate = this._coordinates[newPosition] || 0;\r\n }\r\n\r\n coordinate = Math.ceil(coordinate);\r\n\r\n return coordinate;\r\n };\r\n\r\n /**\r\n * Calculates the speed for a translation.\r\n * @protected\r\n * @param {Number} from - The absolute position of the start item.\r\n * @param {Number} to - The absolute position of the target item.\r\n * @param {Number} [factor=undefined] - The time factor in milliseconds.\r\n * @returns {Number} - The time in milliseconds for the translation.\r\n */\r\n Owl.prototype.duration = function(from, to, factor) {\r\n if (factor === 0) {\r\n return 0;\r\n }\r\n\r\n return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed));\r\n };\r\n\r\n /**\r\n * Slides to the specified item.\r\n * @public\r\n * @param {Number} position - The position of the item.\r\n * @param {Number} [speed] - The time in milliseconds for the transition.\r\n */\r\n Owl.prototype.to = function(position, speed) {\r\n var current = this.current(),\r\n revert = null,\r\n distance = position - this.relative(current),\r\n direction = (distance > 0) - (distance < 0),\r\n items = this._items.length,\r\n minimum = this.minimum(),\r\n maximum = this.maximum();\r\n\r\n if (this.settings.loop) {\r\n if (!this.settings.rewind && Math.abs(distance) > items / 2) {\r\n distance += direction * -1 * items;\r\n }\r\n\r\n position = current + distance;\r\n revert = ((position - minimum) % items + items) % items + minimum;\r\n\r\n if (revert !== position && revert - distance <= maximum && revert - distance > 0) {\r\n current = revert - distance;\r\n position = revert;\r\n this.reset(current);\r\n }\r\n } else if (this.settings.rewind) {\r\n maximum += 1;\r\n position = (position % maximum + maximum) % maximum;\r\n } else {\r\n position = Math.max(minimum, Math.min(maximum, position));\r\n }\r\n\r\n this.speed(this.duration(current, position, speed));\r\n this.current(position);\r\n\r\n if (this.isVisible()) {\r\n this.update();\r\n }\r\n };\r\n\r\n /**\r\n * Slides to the next item.\r\n * @public\r\n * @param {Number} [speed] - The time in milliseconds for the transition.\r\n */\r\n Owl.prototype.next = function(speed) {\r\n speed = speed || false;\r\n this.to(this.relative(this.current()) + 1, speed);\r\n };\r\n\r\n /**\r\n * Slides to the previous item.\r\n * @public\r\n * @param {Number} [speed] - The time in milliseconds for the transition.\r\n */\r\n Owl.prototype.prev = function(speed) {\r\n speed = speed || false;\r\n this.to(this.relative(this.current()) - 1, speed);\r\n };\r\n\r\n /**\r\n * Handles the end of an animation.\r\n * @protected\r\n * @param {Event} event - The event arguments.\r\n */\r\n Owl.prototype.onTransitionEnd = function(event) {\r\n\r\n // if css2 animation then event object is undefined\r\n if (event !== undefined) {\r\n event.stopPropagation();\r\n\r\n // Catch only owl-stage transitionEnd event\r\n if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) {\r\n return false;\r\n }\r\n }\r\n\r\n this.leave('animating');\r\n this.trigger('translated');\r\n };\r\n\r\n /**\r\n * Gets viewport width.\r\n * @protected\r\n * @return {Number} - The width in pixel.\r\n */\r\n Owl.prototype.viewport = function() {\r\n var width;\r\n if (this.options.responsiveBaseElement !== window) {\r\n width = $(this.options.responsiveBaseElement).width();\r\n } else if (window.innerWidth) {\r\n width = window.innerWidth;\r\n } else if (document.documentElement && document.documentElement.clientWidth) {\r\n width = document.documentElement.clientWidth;\r\n } else {\r\n console.warn('Can not detect viewport width.');\r\n }\r\n return width;\r\n };\r\n\r\n /**\r\n * Replaces the current content.\r\n * @public\r\n * @param {HTMLElement|jQuery|String} content - The new content.\r\n */\r\n Owl.prototype.replace = function(content) {\r\n this.$stage.empty();\r\n this._items = [];\r\n\r\n if (content) {\r\n content = (content instanceof jQuery) ? content : $(content);\r\n }\r\n\r\n if (this.settings.nestedItemSelector) {\r\n content = content.find('.' + this.settings.nestedItemSelector);\r\n }\r\n\r\n content.filter(function() {\r\n return this.nodeType === 1;\r\n }).each($.proxy(function(index, item) {\r\n item = this.prepare(item);\r\n this.$stage.append(item);\r\n this._items.push(item);\r\n this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n }, this));\r\n\r\n this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0);\r\n\r\n this.invalidate('items');\r\n };\r\n\r\n /**\r\n * Adds an item.\r\n * @todo Use `item` instead of `content` for the event arguments.\r\n * @public\r\n * @param {HTMLElement|jQuery|String} content - The item content to add.\r\n * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.\r\n */\r\n Owl.prototype.add = function(content, position) {\r\n var current = this.relative(this._current);\r\n\r\n position = position === undefined ? this._items.length : this.normalize(position, true);\r\n content = content instanceof jQuery ? content : $(content);\r\n\r\n this.trigger('add', { content: content, position: position });\r\n\r\n content = this.prepare(content);\r\n\r\n if (this._items.length === 0 || position === this._items.length) {\r\n this._items.length === 0 && this.$stage.append(content);\r\n this._items.length !== 0 && this._items[position - 1].after(content);\r\n this._items.push(content);\r\n this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n } else {\r\n this._items[position].before(content);\r\n this._items.splice(position, 0, content);\r\n this._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n }\r\n\r\n this._items[current] && this.reset(this._items[current].index());\r\n\r\n this.invalidate('items');\r\n\r\n this.trigger('added', { content: content, position: position });\r\n };\r\n\r\n /**\r\n * Removes an item by its position.\r\n * @todo Use `item` instead of `content` for the event arguments.\r\n * @public\r\n * @param {Number} position - The relative position of the item to remove.\r\n */\r\n Owl.prototype.remove = function(position) {\r\n position = this.normalize(position, true);\r\n\r\n if (position === undefined) {\r\n return;\r\n }\r\n\r\n this.trigger('remove', { content: this._items[position], position: position });\r\n\r\n this._items[position].remove();\r\n this._items.splice(position, 1);\r\n this._mergers.splice(position, 1);\r\n\r\n this.invalidate('items');\r\n\r\n this.trigger('removed', { content: null, position: position });\r\n };\r\n\r\n /**\r\n * Preloads images with auto width.\r\n * @todo Replace by a more generic approach\r\n * @protected\r\n */\r\n Owl.prototype.preloadAutoWidthImages = function(images) {\r\n images.each($.proxy(function(i, element) {\r\n this.enter('pre-loading');\r\n element = $(element);\r\n $(new Image()).one('load', $.proxy(function(e) {\r\n element.attr('src', e.target.src);\r\n element.css('opacity', 1);\r\n this.leave('pre-loading');\r\n !this.is('pre-loading') && !this.is('initializing') && this.refresh();\r\n }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina'));\r\n }, this));\r\n };\r\n\r\n /**\r\n * Destroys the carousel.\r\n * @public\r\n */\r\n Owl.prototype.destroy = function() {\r\n\r\n this.$element.off('.owl.core');\r\n this.$stage.off('.owl.core');\r\n $(document).off('.owl.core');\r\n\r\n if (this.settings.responsive !== false) {\r\n window.clearTimeout(this.resizeTimer);\r\n this.off(window, 'resize', this._handlers.onThrottledResize);\r\n }\r\n\r\n for (var i in this._plugins) {\r\n this._plugins[i].destroy();\r\n }\r\n\r\n this.$stage.children('.cloned').remove();\r\n\r\n this.$stage.unwrap();\r\n this.$stage.children().contents().unwrap();\r\n this.$stage.children().unwrap();\r\n this.$stage.remove();\r\n this.$element\r\n .removeClass(this.options.refreshClass)\r\n .removeClass(this.options.loadingClass)\r\n .removeClass(this.options.loadedClass)\r\n .removeClass(this.options.rtlClass)\r\n .removeClass(this.options.dragClass)\r\n .removeClass(this.options.grabClass)\r\n .attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\\\S+\\\\s', 'g'), ''))\r\n .removeData('owl.carousel');\r\n };\r\n\r\n /**\r\n * Operators to calculate right-to-left and left-to-right.\r\n * @protected\r\n * @param {Number} [a] - The left side operand.\r\n * @param {String} [o] - The operator.\r\n * @param {Number} [b] - The right side operand.\r\n */\r\n Owl.prototype.op = function(a, o, b) {\r\n var rtl = this.settings.rtl;\r\n switch (o) {\r\n case '<':\r\n return rtl ? a > b : a < b;\r\n case '>':\r\n return rtl ? a < b : a > b;\r\n case '>=':\r\n return rtl ? a <= b : a >= b;\r\n case '<=':\r\n return rtl ? a >= b : a <= b;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n * Attaches to an internal event.\r\n * @protected\r\n * @param {HTMLElement} element - The event source.\r\n * @param {String} event - The event name.\r\n * @param {Function} listener - The event handler to attach.\r\n * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not.\r\n */\r\n Owl.prototype.on = function(element, event, listener, capture) {\r\n if (element.addEventListener) {\r\n element.addEventListener(event, listener, capture);\r\n } else if (element.attachEvent) {\r\n element.attachEvent('on' + event, listener);\r\n }\r\n };\r\n\r\n /**\r\n * Detaches from an internal event.\r\n * @protected\r\n * @param {HTMLElement} element - The event source.\r\n * @param {String} event - The event name.\r\n * @param {Function} listener - The attached event handler to detach.\r\n * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not.\r\n */\r\n Owl.prototype.off = function(element, event, listener, capture) {\r\n if (element.removeEventListener) {\r\n element.removeEventListener(event, listener, capture);\r\n } else if (element.detachEvent) {\r\n element.detachEvent('on' + event, listener);\r\n }\r\n };\r\n\r\n /**\r\n * Triggers a public event.\r\n * @todo Remove `status`, `relatedTarget` should be used instead.\r\n * @protected\r\n * @param {String} name - The event name.\r\n * @param {*} [data=null] - The event data.\r\n * @param {String} [namespace=carousel] - The event namespace.\r\n * @param {String} [state] - The state which is associated with the event.\r\n * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not.\r\n * @returns {Event} - The event arguments.\r\n */\r\n Owl.prototype.trigger = function(name, data, namespace, state, enter) {\r\n var status = {\r\n item: { count: this._items.length, index: this.current() }\r\n }, handler = $.camelCase(\r\n $.grep([ 'on', name, namespace ], function(v) { return v })\r\n .join('-').toLowerCase()\r\n ), event = $.Event(\r\n [ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(),\r\n $.extend({ relatedTarget: this }, status, data)\r\n );\r\n\r\n if (!this._supress[name]) {\r\n $.each(this._plugins, function(name, plugin) {\r\n if (plugin.onTrigger) {\r\n plugin.onTrigger(event);\r\n }\r\n });\r\n\r\n this.register({ type: Owl.Type.Event, name: name });\r\n this.$element.trigger(event);\r\n\r\n if (this.settings && typeof this.settings[handler] === 'function') {\r\n this.settings[handler].call(this, event);\r\n }\r\n }\r\n\r\n return event;\r\n };\r\n\r\n /**\r\n * Enters a state.\r\n * @param name - The state name.\r\n */\r\n Owl.prototype.enter = function(name) {\r\n $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {\r\n if (this._states.current[name] === undefined) {\r\n this._states.current[name] = 0;\r\n }\r\n\r\n this._states.current[name]++;\r\n }, this));\r\n };\r\n\r\n /**\r\n * Leaves a state.\r\n * @param name - The state name.\r\n */\r\n Owl.prototype.leave = function(name) {\r\n $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {\r\n this._states.current[name]--;\r\n }, this));\r\n };\r\n\r\n /**\r\n * Registers an event or state.\r\n * @public\r\n * @param {Object} object - The event or state to register.\r\n */\r\n Owl.prototype.register = function(object) {\r\n if (object.type === Owl.Type.Event) {\r\n if (!$.event.special[object.name]) {\r\n $.event.special[object.name] = {};\r\n }\r\n\r\n if (!$.event.special[object.name].owl) {\r\n var _default = $.event.special[object.name]._default;\r\n $.event.special[object.name]._default = function(e) {\r\n if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) {\r\n return _default.apply(this, arguments);\r\n }\r\n return e.namespace && e.namespace.indexOf('owl') > -1;\r\n };\r\n $.event.special[object.name].owl = true;\r\n }\r\n } else if (object.type === Owl.Type.State) {\r\n if (!this._states.tags[object.name]) {\r\n this._states.tags[object.name] = object.tags;\r\n } else {\r\n this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags);\r\n }\r\n\r\n this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) {\r\n return $.inArray(tag, this._states.tags[object.name]) === i;\r\n }, this));\r\n }\r\n };\r\n\r\n /**\r\n * Suppresses events.\r\n * @protected\r\n * @param {Array.} events - The events to suppress.\r\n */\r\n Owl.prototype.suppress = function(events) {\r\n $.each(events, $.proxy(function(index, event) {\r\n this._supress[event] = true;\r\n }, this));\r\n };\r\n\r\n /**\r\n * Releases suppressed events.\r\n * @protected\r\n * @param {Array.} events - The events to release.\r\n */\r\n Owl.prototype.release = function(events) {\r\n $.each(events, $.proxy(function(index, event) {\r\n delete this._supress[event];\r\n }, this));\r\n };\r\n\r\n /**\r\n * Gets unified pointer coordinates from event.\r\n * @todo #261\r\n * @protected\r\n * @param {Event} - The `mousedown` or `touchstart` event.\r\n * @returns {Object} - Contains `x` and `y` coordinates of current pointer position.\r\n */\r\n Owl.prototype.pointer = function(event) {\r\n var result = { x: null, y: null };\r\n\r\n event = event.originalEvent || event || window.event;\r\n\r\n event = event.touches && event.touches.length ?\r\n event.touches[0] : event.changedTouches && event.changedTouches.length ?\r\n event.changedTouches[0] : event;\r\n\r\n if (event.pageX) {\r\n result.x = event.pageX;\r\n result.y = event.pageY;\r\n } else {\r\n result.x = event.clientX;\r\n result.y = event.clientY;\r\n }\r\n\r\n return result;\r\n };\r\n\r\n /**\r\n * Determines if the input is a Number or something that can be coerced to a Number\r\n * @protected\r\n * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested\r\n * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number\r\n */\r\n Owl.prototype.isNumeric = function(number) {\r\n return !isNaN(parseFloat(number));\r\n };\r\n\r\n /**\r\n * Gets the difference of two vectors.\r\n * @todo #261\r\n * @protected\r\n * @param {Object} - The first vector.\r\n * @param {Object} - The second vector.\r\n * @returns {Object} - The difference.\r\n */\r\n Owl.prototype.difference = function(first, second) {\r\n return {\r\n x: first.x - second.x,\r\n y: first.y - second.y\r\n };\r\n };\r\n\r\n /**\r\n * The jQuery Plugin for the Owl Carousel\r\n * @todo Navigation plugin `next` and `prev`\r\n * @public\r\n */\r\n $.fn.owlCarousel = function(option) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n return this.each(function() {\r\n var $this = $(this),\r\n data = $this.data('owl.carousel');\r\n\r\n if (!data) {\r\n data = new Owl(this, typeof option == 'object' && option);\r\n $this.data('owl.carousel', data);\r\n\r\n $.each([\r\n 'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove'\r\n ], function(i, event) {\r\n data.register({ type: Owl.Type.Event, name: event });\r\n data.$element.on(event + '.owl.carousel.core', $.proxy(function(e) {\r\n if (e.namespace && e.relatedTarget !== this) {\r\n this.suppress([ event ]);\r\n data[event].apply(this, [].slice.call(arguments, 1));\r\n this.release([ event ]);\r\n }\r\n }, data));\r\n });\r\n }\r\n\r\n if (typeof option == 'string' && option.charAt(0) !== '_') {\r\n data[option].apply(data, args);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * The constructor for the jQuery Plugin\r\n * @public\r\n */\r\n $.fn.owlCarousel.Constructor = Owl;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * AutoRefresh Plugin\r\n * @version 2.3.4\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n /**\r\n * Creates the auto refresh plugin.\r\n * @class The Auto Refresh Plugin\r\n * @param {Owl} carousel - The Owl Carousel\r\n */\r\n var AutoRefresh = function(carousel) {\r\n /**\r\n * Reference to the core.\r\n * @protected\r\n * @type {Owl}\r\n */\r\n this._core = carousel;\r\n\r\n /**\r\n * Refresh interval.\r\n * @protected\r\n * @type {number}\r\n */\r\n this._interval = null;\r\n\r\n /**\r\n * Whether the element is currently visible or not.\r\n * @protected\r\n * @type {Boolean}\r\n */\r\n this._visible = null;\r\n\r\n /**\r\n * All event handlers.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._handlers = {\r\n 'initialized.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && this._core.settings.autoRefresh) {\r\n this.watch();\r\n }\r\n }, this)\r\n };\r\n\r\n // set default options\r\n this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options);\r\n\r\n // register event handlers\r\n this._core.$element.on(this._handlers);\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n */\r\n AutoRefresh.Defaults = {\r\n autoRefresh: true,\r\n autoRefreshInterval: 500\r\n };\r\n\r\n /**\r\n * Watches the element.\r\n */\r\n AutoRefresh.prototype.watch = function() {\r\n if (this._interval) {\r\n return;\r\n }\r\n\r\n this._visible = this._core.isVisible();\r\n this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval);\r\n };\r\n\r\n /**\r\n * Refreshes the element.\r\n */\r\n AutoRefresh.prototype.refresh = function() {\r\n if (this._core.isVisible() === this._visible) {\r\n return;\r\n }\r\n\r\n this._visible = !this._visible;\r\n\r\n this._core.$element.toggleClass('owl-hidden', !this._visible);\r\n\r\n this._visible && (this._core.invalidate('width') && this._core.refresh());\r\n };\r\n\r\n /**\r\n * Destroys the plugin.\r\n */\r\n AutoRefresh.prototype.destroy = function() {\r\n var handler, property;\r\n\r\n window.clearInterval(this._interval);\r\n\r\n for (handler in this._handlers) {\r\n this._core.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Lazy Plugin\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n /**\r\n * Creates the lazy plugin.\r\n * @class The Lazy Plugin\r\n * @param {Owl} carousel - The Owl Carousel\r\n */\r\n var Lazy = function(carousel) {\r\n\r\n /**\r\n * Reference to the core.\r\n * @protected\r\n * @type {Owl}\r\n */\r\n this._core = carousel;\r\n\r\n /**\r\n * Already loaded items.\r\n * @protected\r\n * @type {Array.}\r\n */\r\n this._loaded = [];\r\n\r\n /**\r\n * Event handlers.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._handlers = {\r\n 'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function(e) {\r\n if (!e.namespace) {\r\n return;\r\n }\r\n\r\n if (!this._core.settings || !this._core.settings.lazyLoad) {\r\n return;\r\n }\r\n\r\n if ((e.property && e.property.name == 'position') || e.type == 'initialized') {\r\n var settings = this._core.settings,\r\n n = (settings.center && Math.ceil(settings.items / 2) || settings.items),\r\n i = ((settings.center && n * -1) || 0),\r\n position = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i,\r\n clones = this._core.clones().length,\r\n load = $.proxy(function(i, v) { this.load(v) }, this);\r\n //TODO: Need documentation for this new option\r\n if (settings.lazyLoadEager > 0) {\r\n n += settings.lazyLoadEager;\r\n // If the carousel is looping also preload images that are to the \"left\"\r\n if (settings.loop) {\r\n position -= settings.lazyLoadEager;\r\n n++;\r\n }\r\n }\r\n\r\n while (i++ < n) {\r\n this.load(clones / 2 + this._core.relative(position));\r\n clones && $.each(this._core.clones(this._core.relative(position)), load);\r\n position++;\r\n }\r\n }\r\n }, this)\r\n };\r\n\r\n // set the default options\r\n this._core.options = $.extend({}, Lazy.Defaults, this._core.options);\r\n\r\n // register event handler\r\n this._core.$element.on(this._handlers);\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n */\r\n Lazy.Defaults = {\r\n lazyLoad: false,\r\n lazyLoadEager: 0\r\n };\r\n\r\n /**\r\n * Loads all resources of an item at the specified position.\r\n * @param {Number} position - The absolute position of the item.\r\n * @protected\r\n */\r\n Lazy.prototype.load = function(position) {\r\n var $item = this._core.$stage.children().eq(position),\r\n $elements = $item && $item.find('.owl-lazy');\r\n\r\n if (!$elements || $.inArray($item.get(0), this._loaded) > -1) {\r\n return;\r\n }\r\n\r\n $elements.each($.proxy(function(index, element) {\r\n var $element = $(element), image,\r\n url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src') || $element.attr('data-srcset');\r\n\r\n if ($element.is('img') && !$element.attr('data-src')) {\r\n $element.css('opacity', 1);\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n } else {\r\n this._core.trigger('load', { element: $element, url: url }, 'lazy');\r\n\r\n if ($element.is('img')) {\r\n $element.one('load.owl.lazy', $.proxy(function() {\r\n $element.css('opacity', 1);\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n }, this)).attr('src', url);\r\n } else if ($element.is('source')) {\r\n $element.one('load.owl.lazy', $.proxy(function() {\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n }, this)).attr('srcset', url);\r\n } else {\r\n image = new Image();\r\n image.onload = $.proxy(function() {\r\n $element.css({\r\n 'background-image': 'url(\"' + url + '\")',\r\n 'opacity': '1'\r\n });\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n }, this);\r\n image.src = url;\r\n }\r\n }\r\n\r\n }, this));\r\n\r\n this._loaded.push($item.get(0));\r\n };\r\n\r\n /**\r\n * Destroys the plugin.\r\n * @public\r\n */\r\n Lazy.prototype.destroy = function() {\r\n var handler, property;\r\n\r\n for (handler in this.handlers) {\r\n this._core.$element.off(handler, this.handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * AutoHeight Plugin\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n /**\r\n * Creates the auto height plugin.\r\n * @class The Auto Height Plugin\r\n * @param {Owl} carousel - The Owl Carousel\r\n */\r\n var AutoHeight = function(carousel) {\r\n /**\r\n * Reference to the core.\r\n * @protected\r\n * @type {Owl}\r\n */\r\n this._core = carousel;\r\n\r\n this._previousHeight = null;\r\n\r\n /**\r\n * All event handlers.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._handlers = {\r\n 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && this._core.settings.autoHeight) {\r\n this.update();\r\n }\r\n }, this),\r\n 'changed.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && this._core.settings.autoHeight && e.property.name === 'position'){\r\n this.update();\r\n }\r\n }, this),\r\n 'loaded.owl.lazy': $.proxy(function(e) {\r\n if (e.namespace && this._core.settings.autoHeight\r\n && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) {\r\n this.update();\r\n }\r\n }, this)\r\n };\r\n\r\n // set default options\r\n this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);\r\n\r\n // register event handlers\r\n this._core.$element.on(this._handlers);\r\n this._intervalId = null;\r\n var refThis = this;\r\n\r\n // These changes have been taken from a PR by gavrochelegnou proposed in #1575\r\n // and have been made compatible with the latest jQuery version\r\n $(window).on('load', function() {\r\n if (refThis._core.settings.autoHeight) {\r\n refThis.update();\r\n }\r\n });\r\n\r\n // Autoresize the height of the carousel when window is resized\r\n // When carousel has images, the height is dependent on the width\r\n // and should also change on resize\r\n $(window).resize(function() {\r\n if (refThis._core.settings.autoHeight) {\r\n if (refThis._intervalId != null) {\r\n clearTimeout(refThis._intervalId);\r\n }\r\n\r\n refThis._intervalId = setTimeout(function() {\r\n refThis.update();\r\n }, 250);\r\n }\r\n });\r\n\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n */\r\n AutoHeight.Defaults = {\r\n autoHeight: false,\r\n autoHeightClass: 'owl-height'\r\n };\r\n\r\n /**\r\n * Updates the view.\r\n */\r\n AutoHeight.prototype.update = function() {\r\n var start = this._core._current,\r\n end = start + this._core.settings.items,\r\n lazyLoadEnabled = this._core.settings.lazyLoad,\r\n visible = this._core.$stage.children().toArray().slice(start, end),\r\n heights = [],\r\n maxheight = 0;\r\n\r\n $.each(visible, function(index, item) {\r\n heights.push($(item).height());\r\n });\r\n\r\n maxheight = Math.max.apply(null, heights);\r\n\r\n if (maxheight <= 1 && lazyLoadEnabled && this._previousHeight) {\r\n maxheight = this._previousHeight;\r\n }\r\n\r\n this._previousHeight = maxheight;\r\n\r\n this._core.$stage.parent()\r\n .height(maxheight)\r\n .addClass(this._core.settings.autoHeightClass);\r\n };\r\n\r\n AutoHeight.prototype.destroy = function() {\r\n var handler, property;\r\n\r\n for (handler in this._handlers) {\r\n this._core.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] !== 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Video Plugin\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n /**\r\n * Creates the video plugin.\r\n * @class The Video Plugin\r\n * @param {Owl} carousel - The Owl Carousel\r\n */\r\n var Video = function(carousel) {\r\n /**\r\n * Reference to the core.\r\n * @protected\r\n * @type {Owl}\r\n */\r\n this._core = carousel;\r\n\r\n /**\r\n * Cache all video URLs.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._videos = {};\r\n\r\n /**\r\n * Current playing item.\r\n * @protected\r\n * @type {jQuery}\r\n */\r\n this._playing = null;\r\n\r\n /**\r\n * All event handlers.\r\n * @todo The cloned content removale is too late\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._handlers = {\r\n 'initialized.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace) {\r\n this._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] });\r\n }\r\n }, this),\r\n 'resize.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && this._core.settings.video && this.isInFullScreen()) {\r\n e.preventDefault();\r\n }\r\n }, this),\r\n 'refreshed.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && this._core.is('resizing')) {\r\n this._core.$stage.find('.cloned .owl-video-frame').remove();\r\n }\r\n }, this),\r\n 'changed.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && e.property.name === 'position' && this._playing) {\r\n this.stop();\r\n }\r\n }, this),\r\n 'prepared.owl.carousel': $.proxy(function(e) {\r\n if (!e.namespace) {\r\n return;\r\n }\r\n\r\n var $element = $(e.content).find('.owl-video');\r\n\r\n if ($element.length) {\r\n $element.css('display', 'none');\r\n this.fetch($element, $(e.content));\r\n }\r\n }, this)\r\n };\r\n\r\n // set default options\r\n this._core.options = $.extend({}, Video.Defaults, this._core.options);\r\n\r\n // register event handlers\r\n this._core.$element.on(this._handlers);\r\n\r\n this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) {\r\n this.play(e);\r\n }, this));\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n */\r\n Video.Defaults = {\r\n video: false,\r\n videoHeight: false,\r\n videoWidth: false\r\n };\r\n\r\n /**\r\n * Gets the video ID and the type (YouTube/Vimeo/vzaar only).\r\n * @protected\r\n * @param {jQuery} target - The target containing the video data.\r\n * @param {jQuery} item - The item containing the video.\r\n */\r\n Video.prototype.fetch = function(target, item) {\r\n var type = (function() {\r\n if (target.attr('data-vimeo-id')) {\r\n return 'vimeo';\r\n } else if (target.attr('data-vzaar-id')) {\r\n return 'vzaar'\r\n } else {\r\n return 'youtube';\r\n }\r\n })(),\r\n id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'),\r\n width = target.attr('data-width') || this._core.settings.videoWidth,\r\n height = target.attr('data-height') || this._core.settings.videoHeight,\r\n url = target.attr('href');\r\n\r\n if (url) {\r\n\r\n /*\r\n Parses the id's out of the following urls (and probably more):\r\n https://www.youtube.com/watch?v=:id\r\n https://youtu.be/:id\r\n https://vimeo.com/:id\r\n https://vimeo.com/channels/:channel/:id\r\n https://vimeo.com/groups/:group/videos/:id\r\n https://app.vzaar.com/videos/:id\r\n\r\n Visual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F\r\n */\r\n\r\n id = url.match(/(http:|https:|)\\/\\/(player.|www.|app.)?(vimeo\\.com|youtu(be\\.com|\\.be|be\\.googleapis\\.com|be\\-nocookie\\.com)|vzaar\\.com)\\/(video\\/|videos\\/|embed\\/|channels\\/.+\\/|groups\\/.+\\/|watch\\?v=|v\\/)?([A-Za-z0-9._%-]*)(\\&\\S+)?/);\r\n\r\n if (id[3].indexOf('youtu') > -1) {\r\n type = 'youtube';\r\n } else if (id[3].indexOf('vimeo') > -1) {\r\n type = 'vimeo';\r\n } else if (id[3].indexOf('vzaar') > -1) {\r\n type = 'vzaar';\r\n } else {\r\n throw new Error('Video URL not supported.');\r\n }\r\n id = id[6];\r\n } else {\r\n throw new Error('Missing video URL.');\r\n }\r\n\r\n this._videos[url] = {\r\n type: type,\r\n id: id,\r\n width: width,\r\n height: height\r\n };\r\n\r\n item.attr('data-video', url);\r\n\r\n this.thumbnail(target, this._videos[url]);\r\n };\r\n\r\n /**\r\n * Creates video thumbnail.\r\n * @protected\r\n * @param {jQuery} target - The target containing the video data.\r\n * @param {Object} info - The video info object.\r\n * @see `fetch`\r\n */\r\n Video.prototype.thumbnail = function(target, video) {\r\n var tnLink,\r\n icon,\r\n path,\r\n dimensions = video.width && video.height ? 'width:' + video.width + 'px;height:' + video.height + 'px;' : '',\r\n customTn = target.find('img'),\r\n srcType = 'src',\r\n lazyClass = '',\r\n settings = this._core.settings,\r\n create = function(path) {\r\n icon = '
';\r\n\r\n if (settings.lazyLoad) {\r\n tnLink = '
';\r\n } else {\r\n tnLink = '
';\r\n }\r\n target.after(tnLink);\r\n target.after(icon);\r\n };\r\n\r\n // wrap video content into owl-video-wrapper div\r\n target.wrap( $( '
', {\r\n \"class\": \"owl-video-wrapper\",\r\n \"style\": dimensions\r\n }));\r\n\r\n if (this._core.settings.lazyLoad) {\r\n srcType = 'data-src';\r\n lazyClass = 'owl-lazy';\r\n }\r\n\r\n // custom thumbnail\r\n if (customTn.length) {\r\n create(customTn.attr(srcType));\r\n customTn.remove();\r\n return false;\r\n }\r\n\r\n if (video.type === 'youtube') {\r\n path = \"//img.youtube.com/vi/\" + video.id + \"/hqdefault.jpg\";\r\n create(path);\r\n } else if (video.type === 'vimeo') {\r\n $.ajax({\r\n type: 'GET',\r\n url: '//vimeo.com/api/v2/video/' + video.id + '.json',\r\n jsonp: 'callback',\r\n dataType: 'jsonp',\r\n success: function(data) {\r\n path = data[0].thumbnail_large;\r\n create(path);\r\n }\r\n });\r\n } else if (video.type === 'vzaar') {\r\n $.ajax({\r\n type: 'GET',\r\n url: '//vzaar.com/api/videos/' + video.id + '.json',\r\n jsonp: 'callback',\r\n dataType: 'jsonp',\r\n success: function(data) {\r\n path = data.framegrab_url;\r\n create(path);\r\n }\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Stops the current video.\r\n * @public\r\n */\r\n Video.prototype.stop = function() {\r\n this._core.trigger('stop', null, 'video');\r\n this._playing.find('.owl-video-frame').remove();\r\n this._playing.removeClass('owl-video-playing');\r\n this._playing = null;\r\n this._core.leave('playing');\r\n this._core.trigger('stopped', null, 'video');\r\n };\r\n\r\n /**\r\n * Starts the current video.\r\n * @public\r\n * @param {Event} event - The event arguments.\r\n */\r\n Video.prototype.play = function(event) {\r\n var target = $(event.target),\r\n item = target.closest('.' + this._core.settings.itemClass),\r\n video = this._videos[item.attr('data-video')],\r\n width = video.width || '100%',\r\n height = video.height || this._core.$stage.height(),\r\n html,\r\n iframe;\r\n\r\n if (this._playing) {\r\n return;\r\n }\r\n\r\n this._core.enter('playing');\r\n this._core.trigger('play', null, 'video');\r\n\r\n item = this._core.items(this._core.relative(item.index()));\r\n\r\n this._core.reset(item.index());\r\n\r\n html = $( '' );\r\n html.attr( 'height', height );\r\n html.attr( 'width', width );\r\n if (video.type === 'youtube') {\r\n html.attr( 'src', '//www.youtube.com/embed/' + video.id + '?autoplay=1&rel=0&v=' + video.id );\r\n } else if (video.type === 'vimeo') {\r\n html.attr( 'src', '//player.vimeo.com/video/' + video.id + '?autoplay=1' );\r\n } else if (video.type === 'vzaar') {\r\n html.attr( 'src', '//view.vzaar.com/' + video.id + '/player?autoplay=true' );\r\n }\r\n\r\n iframe = $(html).wrap( '
' ).insertAfter(item.find('.owl-video'));\r\n\r\n this._playing = item.addClass('owl-video-playing');\r\n };\r\n\r\n /**\r\n * Checks whether an video is currently in full screen mode or not.\r\n * @todo Bad style because looks like a readonly method but changes members.\r\n * @protected\r\n * @returns {Boolean}\r\n */\r\n Video.prototype.isInFullScreen = function() {\r\n var element = document.fullscreenElement || document.mozFullScreenElement ||\r\n document.webkitFullscreenElement;\r\n\r\n return element && $(element).parent().hasClass('owl-video-frame');\r\n };\r\n\r\n /**\r\n * Destroys the plugin.\r\n */\r\n Video.prototype.destroy = function() {\r\n var handler, property;\r\n\r\n this._core.$element.off('click.owl.video');\r\n\r\n for (handler in this._handlers) {\r\n this._core.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.Video = Video;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Animate Plugin\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n /**\r\n * Creates the animate plugin.\r\n * @class The Navigation Plugin\r\n * @param {Owl} scope - The Owl Carousel\r\n */\r\n var Animate = function(scope) {\r\n this.core = scope;\r\n this.core.options = $.extend({}, Animate.Defaults, this.core.options);\r\n this.swapping = true;\r\n this.previous = undefined;\r\n this.next = undefined;\r\n\r\n this.handlers = {\r\n 'change.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && e.property.name == 'position') {\r\n this.previous = this.core.current();\r\n this.next = e.property.value;\r\n }\r\n }, this),\r\n 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace) {\r\n this.swapping = e.type == 'translated';\r\n }\r\n }, this),\r\n 'translate.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {\r\n this.swap();\r\n }\r\n }, this)\r\n };\r\n\r\n this.core.$element.on(this.handlers);\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n */\r\n Animate.Defaults = {\r\n animateOut: false,\r\n animateIn: false\r\n };\r\n\r\n /**\r\n * Toggles the animation classes whenever an translations starts.\r\n * @protected\r\n * @returns {Boolean|undefined}\r\n */\r\n Animate.prototype.swap = function() {\r\n\r\n if (this.core.settings.items !== 1) {\r\n return;\r\n }\r\n\r\n if (!$.support.animation || !$.support.transition) {\r\n return;\r\n }\r\n\r\n this.core.speed(0);\r\n\r\n var left,\r\n clear = $.proxy(this.clear, this),\r\n previous = this.core.$stage.children().eq(this.previous),\r\n next = this.core.$stage.children().eq(this.next),\r\n incoming = this.core.settings.animateIn,\r\n outgoing = this.core.settings.animateOut;\r\n\r\n if (this.core.current() === this.previous) {\r\n return;\r\n }\r\n\r\n if (outgoing) {\r\n left = this.core.coordinates(this.previous) - this.core.coordinates(this.next);\r\n previous.one($.support.animation.end, clear)\r\n .css( { 'left': left + 'px' } )\r\n .addClass('animated owl-animated-out')\r\n .addClass(outgoing);\r\n }\r\n\r\n if (incoming) {\r\n next.one($.support.animation.end, clear)\r\n .addClass('animated owl-animated-in')\r\n .addClass(incoming);\r\n }\r\n };\r\n\r\n Animate.prototype.clear = function(e) {\r\n $(e.target).css( { 'left': '' } )\r\n .removeClass('animated owl-animated-out owl-animated-in')\r\n .removeClass(this.core.settings.animateIn)\r\n .removeClass(this.core.settings.animateOut);\r\n this.core.onTransitionEnd();\r\n };\r\n\r\n /**\r\n * Destroys the plugin.\r\n * @public\r\n */\r\n Animate.prototype.destroy = function() {\r\n var handler, property;\r\n\r\n for (handler in this.handlers) {\r\n this.core.$element.off(handler, this.handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.Animate = Animate;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Autoplay Plugin\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @author Tom De Caluw�\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n /**\r\n * Creates the autoplay plugin.\r\n * @class The Autoplay Plugin\r\n * @param {Owl} scope - The Owl Carousel\r\n */\r\n var Autoplay = function(carousel) {\r\n /**\r\n * Reference to the core.\r\n * @protected\r\n * @type {Owl}\r\n */\r\n this._core = carousel;\r\n\r\n /**\r\n * The autoplay timeout id.\r\n * @type {Number}\r\n */\r\n this._call = null;\r\n\r\n /**\r\n * Depending on the state of the plugin, this variable contains either\r\n * the start time of the timer or the current timer value if it's\r\n * paused. Since we start in a paused state we initialize the timer\r\n * value.\r\n * @type {Number}\r\n */\r\n this._time = 0;\r\n\r\n /**\r\n * Stores the timeout currently used.\r\n * @type {Number}\r\n */\r\n this._timeout = 0;\r\n\r\n /**\r\n * Indicates whenever the autoplay is paused.\r\n * @type {Boolean}\r\n */\r\n this._paused = true;\r\n\r\n /**\r\n * All event handlers.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._handlers = {\r\n 'changed.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && e.property.name === 'settings') {\r\n if (this._core.settings.autoplay) {\r\n this.play();\r\n } else {\r\n this.stop();\r\n }\r\n } else if (e.namespace && e.property.name === 'position' && this._paused) {\r\n // Reset the timer. This code is triggered when the position\r\n // of the carousel was changed through user interaction.\r\n this._time = 0;\r\n }\r\n }, this),\r\n 'initialized.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && this._core.settings.autoplay) {\r\n this.play();\r\n }\r\n }, this),\r\n 'play.owl.autoplay': $.proxy(function(e, t, s) {\r\n if (e.namespace) {\r\n this.play(t, s);\r\n }\r\n }, this),\r\n 'stop.owl.autoplay': $.proxy(function(e) {\r\n if (e.namespace) {\r\n this.stop();\r\n }\r\n }, this),\r\n 'mouseover.owl.autoplay': $.proxy(function() {\r\n if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n this.pause();\r\n }\r\n }, this),\r\n 'mouseleave.owl.autoplay': $.proxy(function() {\r\n if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n this.play();\r\n }\r\n }, this),\r\n 'touchstart.owl.core': $.proxy(function() {\r\n if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n this.pause();\r\n }\r\n }, this),\r\n 'touchend.owl.core': $.proxy(function() {\r\n if (this._core.settings.autoplayHoverPause) {\r\n this.play();\r\n }\r\n }, this)\r\n };\r\n\r\n // register event handlers\r\n this._core.$element.on(this._handlers);\r\n\r\n // set default options\r\n this._core.options = $.extend({}, Autoplay.Defaults, this._core.options);\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n */\r\n Autoplay.Defaults = {\r\n autoplay: false,\r\n autoplayTimeout: 5000,\r\n autoplayHoverPause: false,\r\n autoplaySpeed: false\r\n };\r\n\r\n /**\r\n * Transition to the next slide and set a timeout for the next transition.\r\n * @private\r\n * @param {Number} [speed] - The animation speed for the animations.\r\n */\r\n Autoplay.prototype._next = function(speed) {\r\n this._call = window.setTimeout(\r\n $.proxy(this._next, this, speed),\r\n this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read()\r\n );\r\n\r\n if (this._core.is('interacting') || document.hidden) {\r\n return;\r\n }\r\n this._core.next(speed || this._core.settings.autoplaySpeed);\r\n }\r\n\r\n /**\r\n * Reads the current timer value when the timer is playing.\r\n * @public\r\n */\r\n Autoplay.prototype.read = function() {\r\n return new Date().getTime() - this._time;\r\n };\r\n\r\n /**\r\n * Starts the autoplay.\r\n * @public\r\n * @param {Number} [timeout] - The interval before the next animation starts.\r\n * @param {Number} [speed] - The animation speed for the animations.\r\n */\r\n Autoplay.prototype.play = function(timeout, speed) {\r\n var elapsed;\r\n\r\n if (!this._core.is('rotating')) {\r\n this._core.enter('rotating');\r\n }\r\n\r\n timeout = timeout || this._core.settings.autoplayTimeout;\r\n\r\n // Calculate the elapsed time since the last transition. If the carousel\r\n // wasn't playing this calculation will yield zero.\r\n elapsed = Math.min(this._time % (this._timeout || timeout), timeout);\r\n\r\n if (this._paused) {\r\n // Start the clock.\r\n this._time = this.read();\r\n this._paused = false;\r\n } else {\r\n // Clear the active timeout to allow replacement.\r\n window.clearTimeout(this._call);\r\n }\r\n\r\n // Adjust the origin of the timer to match the new timeout value.\r\n this._time += this.read() % timeout - elapsed;\r\n\r\n this._timeout = timeout;\r\n this._call = window.setTimeout($.proxy(this._next, this, speed), timeout - elapsed);\r\n };\r\n\r\n /**\r\n * Stops the autoplay.\r\n * @public\r\n */\r\n Autoplay.prototype.stop = function() {\r\n if (this._core.is('rotating')) {\r\n // Reset the clock.\r\n this._time = 0;\r\n this._paused = true;\r\n\r\n window.clearTimeout(this._call);\r\n this._core.leave('rotating');\r\n }\r\n };\r\n\r\n /**\r\n * Pauses the autoplay.\r\n * @public\r\n */\r\n Autoplay.prototype.pause = function() {\r\n if (this._core.is('rotating') && !this._paused) {\r\n // Pause the clock.\r\n this._time = this.read();\r\n this._paused = true;\r\n\r\n window.clearTimeout(this._call);\r\n }\r\n };\r\n\r\n /**\r\n * Destroys the plugin.\r\n */\r\n Autoplay.prototype.destroy = function() {\r\n var handler, property;\r\n\r\n this.stop();\r\n\r\n for (handler in this._handlers) {\r\n this._core.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Navigation Plugin\r\n * @version 2.3.4\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n 'use strict';\r\n\r\n /**\r\n * Creates the navigation plugin.\r\n * @class The Navigation Plugin\r\n * @param {Owl} carousel - The Owl Carousel.\r\n */\r\n var Navigation = function(carousel) {\r\n /**\r\n * Reference to the core.\r\n * @protected\r\n * @type {Owl}\r\n */\r\n this._core = carousel;\r\n\r\n /**\r\n * Indicates whether the plugin is initialized or not.\r\n * @protected\r\n * @type {Boolean}\r\n */\r\n this._initialized = false;\r\n\r\n /**\r\n * The current paging indexes.\r\n * @protected\r\n * @type {Array}\r\n */\r\n this._pages = [];\r\n\r\n /**\r\n * All DOM elements of the user interface.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._controls = {};\r\n\r\n /**\r\n * Markup for an indicator.\r\n * @protected\r\n * @type {Array.}\r\n */\r\n this._templates = [];\r\n\r\n /**\r\n * The carousel element.\r\n * @type {jQuery}\r\n */\r\n this.$element = this._core.$element;\r\n\r\n /**\r\n * Overridden methods of the carousel.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._overrides = {\r\n next: this._core.next,\r\n prev: this._core.prev,\r\n to: this._core.to\r\n };\r\n\r\n /**\r\n * All event handlers.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._handlers = {\r\n 'prepared.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && this._core.settings.dotsData) {\r\n this._templates.push('
' +\r\n $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
');\r\n }\r\n }, this),\r\n 'added.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && this._core.settings.dotsData) {\r\n this._templates.splice(e.position, 0, this._templates.pop());\r\n }\r\n }, this),\r\n 'remove.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && this._core.settings.dotsData) {\r\n this._templates.splice(e.position, 1);\r\n }\r\n }, this),\r\n 'changed.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && e.property.name == 'position') {\r\n this.draw();\r\n }\r\n }, this),\r\n 'initialized.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && !this._initialized) {\r\n this._core.trigger('initialize', null, 'navigation');\r\n this.initialize();\r\n this.update();\r\n this.draw();\r\n this._initialized = true;\r\n this._core.trigger('initialized', null, 'navigation');\r\n }\r\n }, this),\r\n 'refreshed.owl.carousel': $.proxy(function(e) {\r\n if (e.namespace && this._initialized) {\r\n this._core.trigger('refresh', null, 'navigation');\r\n this.update();\r\n this.draw();\r\n this._core.trigger('refreshed', null, 'navigation');\r\n }\r\n }, this)\r\n };\r\n\r\n // set default options\r\n this._core.options = $.extend({}, Navigation.Defaults, this._core.options);\r\n\r\n // register event handlers\r\n this.$element.on(this._handlers);\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n * @todo Rename `slideBy` to `navBy`\r\n */\r\n Navigation.Defaults = {\r\n nav: false,\r\n navText: [\r\n '',\r\n ''\r\n ],\r\n navSpeed: false,\r\n navElement: 'div',\r\n navContainer: false,\r\n navContainerClass: 'owl-nav',\r\n navClass: [\r\n 'owl-prev',\r\n 'owl-next'\r\n ],\r\n slideBy: 1,\r\n dotClass: 'owl-dot',\r\n dotsClass: 'owl-dots',\r\n dots: true,\r\n dotsEach: false,\r\n dotsData: false,\r\n dotsSpeed: false,\r\n dotsContainer: false\r\n };\r\n\r\n /**\r\n * Initializes the layout of the plugin and extends the carousel.\r\n * @protected\r\n */\r\n Navigation.prototype.initialize = function() {\r\n var override,\r\n settings = this._core.settings;\r\n\r\n // create DOM structure for relative navigation\r\n this._controls.$relative = (settings.navContainer ? $(settings.navContainer)\r\n : $('
').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled');\r\n\r\n this._controls.$previous = $('<' + settings.navElement + '>')\r\n .addClass(settings.navClass[0])\r\n .html(settings.navText[0])\r\n .prependTo(this._controls.$relative)\r\n .on('click', $.proxy(function(e) {\r\n this.prev(settings.navSpeed);\r\n }, this));\r\n this._controls.$next = $('<' + settings.navElement + '>')\r\n .addClass(settings.navClass[1])\r\n .html(settings.navText[1])\r\n .appendTo(this._controls.$relative)\r\n .on('click', $.proxy(function(e) {\r\n this.next(settings.navSpeed);\r\n }, this));\r\n\r\n // create DOM structure for absolute navigation\r\n if (!settings.dotsData) {\r\n this._templates = [ $('
')\r\n .addClass(settings.dotClass)\r\n .append($(''))\r\n .prop('outerHTML') ];\r\n }\r\n\r\n this._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer)\r\n : $('
').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled');\r\n\r\n this._controls.$absolute.on('click', 'div', $.proxy(function(e) {\r\n var index = $(e.target).parent().is(this._controls.$absolute)\r\n ? $(e.target).index() : $(e.target).parent().index();\r\n\r\n e.preventDefault();\r\n\r\n this.to(index, settings.dotsSpeed);\r\n }, this));\r\n\r\n // override public methods of the carousel\r\n for (override in this._overrides) {\r\n this._core[override] = $.proxy(this[override], this);\r\n }\r\n };\r\n\r\n /**\r\n * Destroys the plugin.\r\n * @protected\r\n */\r\n Navigation.prototype.destroy = function() {\r\n var handler, control, property, override, settings;\r\n settings = this._core.settings;\r\n\r\n for (handler in this._handlers) {\r\n this.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (control in this._controls) {\r\n if (control === '$relative' && settings.navContainer) {\r\n this._controls[control].html('');\r\n } else {\r\n this._controls[control].remove();\r\n }\r\n }\r\n for (override in this.overides) {\r\n this._core[override] = this._overrides[override];\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n /**\r\n * Updates the internal state.\r\n * @protected\r\n */\r\n Navigation.prototype.update = function() {\r\n var i, j, k,\r\n lower = this._core.clones().length / 2,\r\n upper = lower + this._core.items().length,\r\n maximum = this._core.maximum(true),\r\n settings = this._core.settings,\r\n size = settings.center || settings.autoWidth || settings.dotsData\r\n ? 1 : settings.dotsEach || settings.items;\r\n\r\n if (settings.slideBy !== 'page') {\r\n settings.slideBy = Math.min(settings.slideBy, settings.items);\r\n }\r\n\r\n if (settings.dots || settings.slideBy == 'page') {\r\n this._pages = [];\r\n\r\n for (i = lower, j = 0, k = 0; i < upper; i++) {\r\n if (j >= size || j === 0) {\r\n this._pages.push({\r\n start: Math.min(maximum, i - lower),\r\n end: i - lower + size - 1\r\n });\r\n if (Math.min(maximum, i - lower) === maximum) {\r\n break;\r\n }\r\n j = 0, ++k;\r\n }\r\n j += this._core.mergers(this._core.relative(i));\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Draws the user interface.\r\n * @todo The option `dotsData` wont work.\r\n * @protected\r\n */\r\n Navigation.prototype.draw = function() {\r\n var difference,\r\n settings = this._core.settings,\r\n disabled = this._core.items().length <= settings.items,\r\n index = this._core.relative(this._core.current()),\r\n loop = settings.loop || settings.rewind;\r\n\r\n this._controls.$relative.toggleClass('disabled', !settings.nav || disabled);\r\n\r\n if (settings.nav) {\r\n this._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true));\r\n this._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true));\r\n }\r\n\r\n this._controls.$absolute.toggleClass('disabled', !settings.dots || disabled);\r\n\r\n if (settings.dots) {\r\n difference = this._pages.length - this._controls.$absolute.children().length;\r\n\r\n if (settings.dotsData && difference !== 0) {\r\n this._controls.$absolute.html(this._templates.join(''));\r\n } else if (difference > 0) {\r\n this._controls.$absolute.append(new Array(difference + 1).join(this._templates[0]));\r\n } else if (difference < 0) {\r\n this._controls.$absolute.children().slice(difference).remove();\r\n }\r\n\r\n this._controls.$absolute.find('.active').removeClass('active');\r\n this._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active');\r\n }\r\n };\r\n\r\n /**\r\n * Extends event data.\r\n * @protected\r\n * @param {Event} event - The event object which gets thrown.\r\n */\r\n Navigation.prototype.onTrigger = function(event) {\r\n var settings = this._core.settings;\r\n\r\n event.page = {\r\n index: $.inArray(this.current(), this._pages),\r\n count: this._pages.length,\r\n size: settings && (settings.center || settings.autoWidth || settings.dotsData\r\n ? 1 : settings.dotsEach || settings.items)\r\n };\r\n };\r\n\r\n /**\r\n * Gets the current page position of the carousel.\r\n * @protected\r\n * @returns {Number}\r\n */\r\n Navigation.prototype.current = function() {\r\n var current = this._core.relative(this._core.current());\r\n return $.grep(this._pages, $.proxy(function(page, index) {\r\n return page.start <= current && page.end >= current;\r\n }, this)).pop();\r\n };\r\n\r\n /**\r\n * Gets the current succesor/predecessor position.\r\n * @protected\r\n * @returns {Number}\r\n */\r\n Navigation.prototype.getPosition = function(successor) {\r\n var position, length,\r\n settings = this._core.settings;\r\n\r\n if (settings.slideBy == 'page') {\r\n position = $.inArray(this.current(), this._pages);\r\n length = this._pages.length;\r\n successor ? ++position : --position;\r\n position = this._pages[((position % length) + length) % length].start;\r\n } else {\r\n position = this._core.relative(this._core.current());\r\n length = this._core.items().length;\r\n successor ? position += settings.slideBy : position -= settings.slideBy;\r\n }\r\n\r\n return position;\r\n };\r\n\r\n /**\r\n * Slides to the next item or page.\r\n * @public\r\n * @param {Number} [speed=false] - The time in milliseconds for the transition.\r\n */\r\n Navigation.prototype.next = function(speed) {\r\n $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);\r\n };\r\n\r\n /**\r\n * Slides to the previous item or page.\r\n * @public\r\n * @param {Number} [speed=false] - The time in milliseconds for the transition.\r\n */\r\n Navigation.prototype.prev = function(speed) {\r\n $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);\r\n };\r\n\r\n /**\r\n * Slides to the specified item or page.\r\n * @public\r\n * @param {Number} position - The position of the item or page.\r\n * @param {Number} [speed] - The time in milliseconds for the transition.\r\n * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not.\r\n */\r\n Navigation.prototype.to = function(position, speed, standard) {\r\n var length;\r\n\r\n if (!standard && this._pages.length) {\r\n length = this._pages.length;\r\n $.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed);\r\n } else {\r\n $.proxy(this._overrides.to, this._core)(position, speed);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Support Plugin\r\n *\r\n * @version 2.3.4\r\n * @author Vivid Planet Software GmbH\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n var style = $('').get(0).style,\r\n prefixes = 'Webkit Moz O ms'.split(' '),\r\n events = {\r\n transition: {\r\n end: {\r\n WebkitTransition: 'webkitTransitionEnd',\r\n MozTransition: 'transitionend',\r\n OTransition: 'oTransitionEnd',\r\n transition: 'transitionend'\r\n }\r\n },\r\n animation: {\r\n end: {\r\n WebkitAnimation: 'webkitAnimationEnd',\r\n MozAnimation: 'animationend',\r\n OAnimation: 'oAnimationEnd',\r\n animation: 'animationend'\r\n }\r\n }\r\n },\r\n tests = {\r\n csstransforms: function() {\r\n return !!test('transform');\r\n },\r\n csstransforms3d: function() {\r\n return !!test('perspective');\r\n },\r\n csstransitions: function() {\r\n return !!test('transition');\r\n },\r\n cssanimations: function() {\r\n return !!test('animation');\r\n }\r\n };\r\n\r\n function test(property, prefixed) {\r\n var result = false,\r\n upper = property.charAt(0).toUpperCase() + property.slice(1);\r\n\r\n $.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) {\r\n if (style[property] !== undefined) {\r\n result = prefixed ? property : true;\r\n return false;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n function prefixed(property) {\r\n return test(property, true);\r\n }\r\n\r\n if (tests.csstransitions()) {\r\n /* jshint -W053 */\r\n $.support.transition = new String(prefixed('transition'))\r\n $.support.transition.end = events.transition.end[ $.support.transition ];\r\n }\r\n\r\n if (tests.cssanimations()) {\r\n /* jshint -W053 */\r\n $.support.animation = new String(prefixed('animation'))\r\n $.support.animation.end = events.animation.end[ $.support.animation ];\r\n }\r\n\r\n if (tests.csstransforms()) {\r\n /* jshint -W053 */\r\n $.support.transform = new String(prefixed('transform'));\r\n $.support.transform3d = tests.csstransforms3d();\r\n }\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n","import 'import/js/plugins/jquery.equalheights.js';\r\nimport 'import/js/plugins/owl.carousel.js';\r\n\r\nexport default angular\r\n .module('import.owl.carousel', [])\r\n\r\n /* @ngInject */\r\n .factory('CarouselService', function () {\r\n const service = {\r\n init,\r\n resizeProductsCarousels,\r\n resizeProductGallery\r\n };\r\n return service;\r\n\r\n ////////////\r\n\r\n function init(scope, element, attrs) {\r\n const _scope = scope;\r\n const options = angular.extend(\r\n {},\r\n {\r\n nav: true,\r\n navText: ['', ''],\r\n dots: true,\r\n lazyLoad: true,\r\n autoplayTimeout: 4000,\r\n loop: false,\r\n rewind: true,\r\n onInitialize: event => {\r\n $(event.target).closest('.tab-pane').addClass('in');\r\n },\r\n onInitialized: event => {\r\n _scope.$apply(() => {\r\n _scope.owlLoaded = true;\r\n });\r\n const $tab = $(event.target).closest('.tab-pane');\r\n if ($(event.target).hasClass('auto-height')) {\r\n $tab.height($tab.height());\r\n }\r\n $tab.removeClass('in');\r\n },\r\n onLoadedLazy: event => {\r\n _scope.$apply(() => {\r\n event.element.closest('.owl-item').find('[lazy=\"inview\"]').addClass('loaded');\r\n });\r\n },\r\n onRefreshed: angular.isDefined(attrs.resize) ? eval(attrs.resize) : null,\r\n onResized: event => {\r\n for (const i in this._items) {\r\n if (this._items.hasOwnProperty(i)) {\r\n const n = Number(i) + event.page.index;\r\n if (n < event.page.size) {\r\n this._plugins.lazy.load(i);\r\n }\r\n }\r\n }\r\n const $tab = $(event.target).closest('.tab-content').children('.tab-pane');\r\n if ($(event.target).hasClass('auto-height')) {\r\n $tab.css({ height: '' });\r\n }\r\n $tab.removeClass('in');\r\n }\r\n },\r\n scope.$eval(attrs.owlCarousel)\r\n );\r\n element.data('scope', scope);\r\n\r\n setTimeout(() => {\r\n element.owlCarousel(options);\r\n });\r\n\r\n scope.$on('$destroy', () => {\r\n element.trigger('destroy.owl.carousel');\r\n element.removeData('scope');\r\n });\r\n }\r\n\r\n function resizeProductsCarousels(event) {\r\n const $element = $(event.target);\r\n\r\n let i;\r\n const $targ = $element.find('.content');\r\n $targ.children().removeAttr('style');\r\n const n = $targ.eq(0).children().length;\r\n for (i = 0; i < n; i++) {\r\n const cClass = $($targ.eq(0).children().eq(i)).attr('class');\r\n if (cClass) {\r\n $targ.find(`.${cClass.split(' ')[0]}`).equalHeights();\r\n }\r\n }\r\n $element.addClass('owl-init');\r\n }\r\n\r\n function resizeProductGallery(event) {\r\n const $element = $(event.target);\r\n const size = $(document.body).data('size');\r\n\r\n $element.toggleClass('active', event.active);\r\n\r\n if (event.active && $element.data('size') !== size) {\r\n $element.data('size', size);\r\n setTimeout(() => {\r\n const owl = $element.data('owl.carousel');\r\n owl._width = 0;\r\n owl.onResize();\r\n }, 0);\r\n }\r\n $element.addClass('owl-init');\r\n }\r\n });\r\n"],"sourceRoot":""}