@finqu/cool 1.2.21 → 1.2.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../js/src/util/perfect-scrollbar.js","../../js/src/util/animate-css.js","../../js/src/common.js","../../js/src/util/index.js","../../js/src/abstract-ui-component.js","../../js/src/popover.js","../../js/src/select.js","../../js/src/dropdown.js","../../js/src/tooltip.js","../../js/src/section-tabs.js","../../js/src/collapse.js","../../js/src/toast.js","../../js/src/dialog.js","../../js/index.esm.js"],"names":["get","element","getComputedStyle","set","obj","key","val","style","div","className","document","createElement","elMatches","Element","prototype","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","Error","call","remove","parentNode","removeChild","queryChildren","selector","Array","filter","children","child","cls","main","thumb","x","rail","consuming","state","focus","clicking","active","scrolling","scrollingClassTimeout","y","addScrollingClass","i","classList","contains","clearTimeout","add","removeScrollingClass","setTimeout","isAlive","settings","scrollingThreshold","setScrollingClassInstantly","EventElement","handlers","prototypeAccessors","isEmpty","configurable","bind","eventName","handler","this","push","addEventListener","unbind","target","this$1","removeEventListener","unbindAll","name","Object","keys","every","length","defineProperties","EventManager","eventElements","createEvent","window","CustomEvent","evt","initCustomEvent","undefined","eventElement","ee","splice","indexOf","forEach","e","once","onceHandler","processScrollDiff","axis","diff","useScrollingClass","forceFireReachEvent","fields","processScrollDiff$1","ref","contentHeight","containerHeight","scrollTop","up","down","reach","dispatchEvent","toInt","parseInt","isEditable","el","outerWidth","styles","width","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","env","isWebKit","documentElement","supportsTouch","DocumentTouch","supportsIePointer","navigator","msMaxTouchPoints","isChrome","test","userAgent","updateGeometry","roundedScrollTop","Math","floor","containerWidth","clientWidth","clientHeight","contentWidth","scrollWidth","scrollHeight","scrollbarXRail","appendChild","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","scrollLeft","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","updateCss","thumbSize","minScrollbarLength","max","maxScrollbarLength","min","xRailOffset","isRtl","left","isScrollbarXUsingBottom","bottom","scrollbarXBottom","top","scrollbarXTop","yRailOffset","height","isScrollbarYUsingRight","right","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","clickRail","event","stopPropagation","direction","pageY","pageYOffset","getBoundingClientRect","pageX","pageXOffset","dragThumb","bindMouseScrollHandler","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","preventDefault","mouseUpHandler","ownerDocument","keyboard","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","deltaX","deltaY","which","metaKey","altKey","shiftKey","wheelPropagation","shouldPreventDefault","wheel","mousewheelHandler","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","querySelector","cursor","overflow","overflowX","overflowY","join","match","maxScrollTop","maxScrollLeft","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","offsetHeight","isLeft","isRight","offsetWidth","abs","ctrlKey","onwheel","onmousewheel","touch","startOffset","startTime","speed","easingLoop","touchStart","touchMove","touchEnd","PointerEvent","MSPointerEvent","applyTouchMove","differenceX","differenceY","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","Date","getTime","clearInterval","currentOffset","currentTime","timeGap","magnitudeX","magnitudeY","scrollY","swipeEasing","setInterval","isInitialized","defaultSettings","PerfectScrollbar","userSettings","nodeName","result","originalScrollLeft","blur","isNegativeScroll","setAttribute","railXStyle","isNaN","display","marginLeft","marginRight","railYStyle","borderTopWidth","borderBottomWidth","marginTop","marginBottom","handlerName","lastScrollTop","lastScrollLeft","onScroll","update","destroy","removePsClasses","split","$","fn","extend","animateCss","animationName","callback","animationEnd","addClass","one","removeClass","on","Cool","Common","initialize","opts","coolPopover","popover","coolSelect","select","coolDropdown","dropdown","coolTooltip","tooltip","coolCollapse","collapse","coolSectionTabs","sectionTabs","coolToast","toast","coolDialog","dialog","hasClass","not","attr","$inputGroup","closest","each","formLabelGroup","find","trigger","$container","parents","href","data","linkDisabled","item","is","parent","open","location","$self","btn","btnDisabled","click","toggleClass","mousedown","mouseup","$sidebarLeftContent","$sidebarTabs","scrollContainer","$tab","first","css","last","debounce","func","wait","immediate","timeout","context","args","arguments","callNow","apply","touchEvents","special","destroyed","AbstractUIComponent","onInit","onUpdate","onDestroy","onShow","onClose","onReset","log","debug","console","_console","NAME","DATA_KEY","Popover","_this","defaults","init","buildCache","bindEvents","unbindEvents","$el","removeData","container","id","generateUUID","animation","animationIn","animationOut","animationSpeed","placement","placementChanged","title","content","_this2","$popover","close","show","setPosition","off","replace","c","r","random","toString","buildPopover","append","$arrow","arrowPos","popoverPosX","popoverPosY","containerInnerWidth","innerWidth","containerInnerHeight","innerHeight","popoverWidth","popoverHeight","outerHeight","popoverTriggerWidth","popoverTriggerHeight","popoverTriggerPosX","position","popoverTriggerPosY","arrowWidth","arrowHeight","round","transform","popoverOverflowCount","popoverPosition","popoverOverflow","removeAttr","fixPopoverPosition","overflowAmount","_this3","_jQueryInterface","config","TypeError","JQUERY_NO_CONFLICT","Constructor","noConflict","Select","then","buildScroll","setData","reset","items","$select","$selectItems","$selectIconContainer","html","selectIconDefault","dynamicTitle","dynamicTitleDefault","$selectTitle","text","trim","searchApi","dynamicTitleEmptyDefault","$selectHeader","showSearch","searchData","$searchInput","searchString","search","Promise","primaryResolve","primaryReject","self","faPro","scrollContentHeight","type","contentOpen","searchPlaceholder","btnCloseText","labelTemplate","confirmCheck","confirmUncheck","preventUncheck","allowNoneOnRadioSelect","showValidStateIcon","itemsToExclude","preventClose","map","Number","showFooter","secondaryResolve","secondaryReject","_renderItemList","_renderSearch","_renderFooter","$scrollableContent","$searchContainer","$searchIconContainer","$clearSearchButton","tabIndex","$footerContainer","$closeButton","buildSearchData","scroll","resolve","reject","_this4","selectLabels","_this5","checked","cb","onSelect","n","prop","has","getData","faNameSpace","searchUrl","itemCount","currentCount","value","encodeURIComponent","ajax","method","url","done","when","$input","results","toLocaleLowerCase","$otherSelects","zindex","_this6","scrollIntoView","behavior","block","inline","appendItems","selectItems","_this7","isArray","itemsArr","domItems","prepend","deselectItems","array","_this8","getItem","grep","getSelectedItems","segment","ids","getSelectedItem","label","onSearch","Dropdown","offset","minWidth","positionObserver","JSON","parse","closeOnItemClick","$dropdown","next","align","$dropdownItem","menuRight","after","onItemClick","str","dropdownWidth","dropdownHeight","dropdownTriggerWidth","dropdownTriggerHeight","dropdownTriggerPosX","dropdownTriggerPosY","dropdownPosX","dropdownPosY","offsetX","offsetY","offsets","$containingParent","index","toLowerCase","containingBoundingRect","containerBoundingRect","maxTop","maxLeft","maxRight","maxBottom","Tooltip","$tooltip","buildTooltip","tooltipPosX","tooltipPosY","tooltipWidth","tooltipHeight","tooltipTriggerWidth","tooltipTriggerHeight","tooltipTriggerPosX","tooltipTriggerPosY","tooltipOverflowCount","tooltipPosition","tooltipOverflow","fixTooltipPosition","SectionTabs","checkForChanges","$dropdownContainer","$dropdownList","tabsCount","tabs","_name","moveToList","insertBefore","moveToDropdown","appendTo","overflowStatus","dropdownItems","moveableTabs","usedSpace","freeSpace","Collapse","$target","expanded","targetHeight","$indicator","whichTransitionEvent","transEndEventNames","t","Toast","toasts","queue","processingQueue","onInitialize","addQueue","processQueue","shift","buildToast","uuid","placementX","placementY","dismiss","size","header","theme","template","maxBodyHeight","_renderTemplate","$inner","$closeBtn","toastPosX","toastPosY","toastWidth","toastHeight","body","bodyCloseBtn","_$$fn$NAME$defaults","Dialog","dialogs","buildDialog","footer","classes","centered","backdrop","preventScroll","closeBtn","callbacks","overflowVisible","actions","confirm","$prevDialog","eq","zIndex","checkForBackdrop","btnCancel","btnRemove","btnConfirm","visible","primary","attrs","overFlowVisible","_$$fn$NAME$defaults$1","index_esm"],"mappings":"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","sourcesContent":["/*!\n * perfect-scrollbar v1.4.0\n * (c) 2018 Hyunje Jun\n * @license MIT\n */\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n var this$1 = this;\n\n for (var name in this$1.handlers) {\n this$1.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nvar processScrollDiff = function(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n};\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n}\n\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nvar updateGeometry = function(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n i.containerWidth = element.clientWidth;\n i.containerHeight = element.clientHeight;\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt(i.railXWidth * i.containerWidth / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n (i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt(i.railYHeight * i.containerHeight / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n roundedScrollTop *\n (i.railYHeight - i.scrollbarYHeight) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n};\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nvar clickRail = function(i) {\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n};\n\nvar dragThumb = function(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n};\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n startingScrollTop = element[scrollTop];\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nvar keyboard = function(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n};\n\nvar wheel = function(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = -1 * e.wheelDeltaX / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for <select> issue in FF and IE #571\n if (!env.isWebKit && element.querySelector('select:focus')) {\n return true;\n }\n\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n ''\n );\n\n // if scrollable\n if (overflow.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n !(cursor.scrollTop === 0 && deltaY > 0) &&\n !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n ) {\n return true;\n }\n }\n var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n !(cursor.scrollLeft === 0 && deltaX < 0) &&\n !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function mousewheelHandler(e) {\n var ref = getDeltaFromEvent(e);\n var deltaX = ref[0];\n var deltaY = ref[1];\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n var shouldPrevent = false;\n if (!i.settings.useBothWheelAxes) {\n // deltaX will only be used for horizontal scrolling and deltaY will\n // only be used for vertical scrolling - this is the default\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n // only vertical scrollbar is active and useBothWheelAxes option is\n // active, so let's scroll vertical bar using both mouse wheel axes\n if (deltaY) {\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n } else {\n element.scrollTop += deltaX * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n // useBothWheelAxes and only horizontal bar is active, so use both\n // wheel axes for horizontal bar\n if (deltaX) {\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else {\n element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n }\n\n updateGeometry(i);\n\n shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent && !e.ctrlKey) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n if (typeof window.onwheel !== 'undefined') {\n i.event.bind(element, 'wheel', mousewheelHandler);\n } else if (typeof window.onmousewheel !== 'undefined') {\n i.event.bind(element, 'mousewheel', mousewheelHandler);\n }\n};\n\nvar touch = function(i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n var element = i.element;\n\n function shouldPrevent(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n var scrollLeft = element.scrollLeft;\n var magnitudeX = Math.abs(deltaX);\n var magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (\n (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n (deltaX > 0 && scrollLeft === 0)\n ) {\n return true;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n element.scrollTop -= differenceY;\n element.scrollLeft -= differenceX;\n\n updateGeometry(i);\n }\n\n var startOffset = {};\n var startTime = 0;\n var speed = {};\n var easingLoop = null;\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n\n function shouldHandle(e) {\n if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n return false;\n }\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (\n e.pointerType &&\n e.pointerType !== 'mouse' &&\n e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n ) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n var touch = getTouch(e);\n\n startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = new Date().getTime();\n\n if (easingLoop !== null) {\n clearInterval(easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n ''\n );\n\n // if scrollable\n if (overflow.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n !(cursor.scrollTop === 0 && deltaY > 0) &&\n !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n ) {\n return true;\n }\n }\n var maxScrollLeft = cursor.scrollLeft - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n !(cursor.scrollLeft === 0 && deltaX < 0) &&\n !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function touchMove(e) {\n if (shouldHandle(e)) {\n var touch = getTouch(e);\n\n var currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n var differenceX = currentOffset.pageX - startOffset.pageX;\n var differenceY = currentOffset.pageY - startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n var currentTime = new Date().getTime();\n\n var timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(easingLoop);\n easingLoop = setInterval(function() {\n if (i.isInitialized) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (env.supportsTouch) {\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (env.supportsIePointer) {\n if (window.PointerEvent) {\n i.event.bind(element, 'pointerdown', touchStart);\n i.event.bind(element, 'pointermove', touchMove);\n i.event.bind(element, 'pointerup', touchEnd);\n } else if (window.MSPointerEvent) {\n i.event.bind(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n};\n\nvar defaultSettings = function () { return ({\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1000,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: true,\n wheelSpeed: 1,\n}); };\n\nvar handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard: keyboard,\n wheel: wheel,\n touch: touch,\n};\n\nvar PerfectScrollbar = function PerfectScrollbar(element, userSettings) {\n var this$1 = this;\n if ( userSettings === void 0 ) userSettings = {};\n\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n if (!element || !element.nodeName) {\n throw new Error('no element is specified to initialize PerfectScrollbar');\n }\n\n this.element = element;\n\n element.classList.add(cls.main);\n\n this.settings = defaultSettings();\n for (var key in userSettings) {\n this$1.settings[key] = userSettings[key];\n }\n\n this.containerWidth = null;\n this.containerHeight = null;\n this.contentWidth = null;\n this.contentHeight = null;\n\n var focus = function () { return element.classList.add(cls.state.focus); };\n var blur = function () { return element.classList.remove(cls.state.focus); };\n\n this.isRtl = get(element).direction === 'rtl';\n this.isNegativeScroll = (function () {\n var originalScrollLeft = element.scrollLeft;\n var result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? element.scrollWidth - element.clientWidth\n : 0;\n this.event = new EventManager();\n this.ownerDocument = element.ownerDocument || document;\n\n this.scrollbarXRail = div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = div(cls.element.thumb('x'));\n this.scrollbarXRail.appendChild(this.scrollbarX);\n this.scrollbarX.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarX, 'focus', focus);\n this.event.bind(this.scrollbarX, 'blur', blur);\n this.scrollbarXActive = null;\n this.scrollbarXWidth = null;\n this.scrollbarXLeft = null;\n var railXStyle = get(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n if (isNaN(this.scrollbarXBottom)) {\n this.isScrollbarXUsingBottom = false;\n this.scrollbarXTop = toInt(railXStyle.top);\n } else {\n this.isScrollbarXUsingBottom = true;\n }\n this.railBorderXWidth =\n toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = div(cls.element.thumb('y'));\n this.scrollbarYRail.appendChild(this.scrollbarY);\n this.scrollbarY.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarY, 'focus', focus);\n this.event.bind(this.scrollbarY, 'blur', blur);\n this.scrollbarYActive = null;\n this.scrollbarYHeight = null;\n this.scrollbarYTop = null;\n var railYStyle = get(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(railYStyle.right, 10);\n if (isNaN(this.scrollbarYRight)) {\n this.isScrollbarYUsingRight = false;\n this.scrollbarYLeft = toInt(railYStyle.left);\n } else {\n this.isScrollbarYUsingRight = true;\n }\n this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n this.railBorderYWidth =\n toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight =\n toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n set(this.scrollbarYRail, { display: '' });\n this.railYHeight = null;\n this.railYRatio = null;\n\n this.reach = {\n x:\n element.scrollLeft <= 0\n ? 'start'\n : element.scrollLeft >= this.contentWidth - this.containerWidth\n ? 'end'\n : null,\n y:\n element.scrollTop <= 0\n ? 'start'\n : element.scrollTop >= this.contentHeight - this.containerHeight\n ? 'end'\n : null,\n };\n\n this.isAlive = true;\n\n this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); });\n\n this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n this.lastScrollLeft = element.scrollLeft; // for onScroll only\n this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); });\n updateGeometry(this);\n};\n\nPerfectScrollbar.prototype.update = function update () {\n if (!this.isAlive) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? this.element.scrollWidth - this.element.clientWidth\n : 0;\n\n // Recalculate rail margins\n set(this.scrollbarXRail, { display: 'block' });\n set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(get(this.scrollbarXRail).marginLeft) +\n toInt(get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(get(this.scrollbarYRail).marginTop) +\n toInt(get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n set(this.scrollbarXRail, { display: 'none' });\n set(this.scrollbarYRail, { display: 'none' });\n\n updateGeometry(this);\n\n processScrollDiff(this, 'top', 0, false, true);\n processScrollDiff(this, 'left', 0, false, true);\n\n set(this.scrollbarXRail, { display: '' });\n set(this.scrollbarYRail, { display: '' });\n};\n\nPerfectScrollbar.prototype.onScroll = function onScroll (e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(\n this,\n 'left',\n this.element.scrollLeft - this.lastScrollLeft\n );\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n};\n\nPerfectScrollbar.prototype.destroy = function destroy () {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n remove(this.scrollbarX);\n remove(this.scrollbarY);\n remove(this.scrollbarXRail);\n remove(this.scrollbarYRail);\n this.removePsClasses();\n\n // unset elements\n this.element = null;\n this.scrollbarX = null;\n this.scrollbarY = null;\n this.scrollbarXRail = null;\n this.scrollbarYRail = null;\n\n this.isAlive = false;\n};\n\nPerfectScrollbar.prototype.removePsClasses = function removePsClasses () {\n this.element.className = this.element.className\n .split(' ')\n .filter(function (name) { return !name.match(/^ps([-_].+|)$/); })\n .join(' ');\n};\n\nexport default PerfectScrollbar;","import 'jquery';\n\n$.fn.extend({\n animateCss: function (animationName, callback) {\n\n var el = this;\n var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';\n\n el.addClass('animated ' + animationName).one(animationEnd, function(e) {\n\n $(this).removeClass('animated ' + animationName);\n\n if (callback) {\n callback();\n }\n\n }).children().on(animationEnd, function(e) {\n\n e.stopPropagation();\n });\n }\n});","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport './util/animate-css';\n\nwindow.Cool = window.Cool || {};\nwindow.Cool.settings = window.Cool.settings || {};\n\nclass Common {\n\n\tstatic initialize(opts) {\n\n // There's an error if opts is not defined\n opts = opts || {};\n\n // Save settings for later use\n window.Cool.settings = opts;\n\n // Init plugins\n $('[data-toggle=\"popover\"]').coolPopover(opts.popover);\n $('[data-toggle=\"select\"]').coolSelect(opts.select);\n $('[data-toggle=\"dropdown\"]').coolDropdown(opts.dropdown);\n $('[data-toggle=\"tooltip\"]').coolTooltip(opts.tooltip);\n $('[data-toggle=\"collapse\"]').coolCollapse(opts.collapse);\n $('[data-toggle=\"section-tabs\"]').coolSectionTabs(opts.sectionTabs);\n $('body').coolToast(opts.toast);\n $('body').coolDialog(opts.dialog);\n\n // Dom ready\n\t\t$('html').addClass('dom-ready');\n\n // Input group focus in\n\t\t$(document).on('focus', '.form-control', function () {\n\n if (!$(this).hasClass('disabled') && $(this).not(':disabled') && !$(this).attr('readonly')) {\n\n let $inputGroup = $(this).closest('.input-group');\n\n if (!$inputGroup.hasClass('input-group-focus')) {\n $inputGroup.addClass('input-group-focus');\n }\n }\n });\n\n // Input group focus out\n $(document).on('blur', '.form-control', function () {\n\n if (!$(this).hasClass('disabled') && $(this).not(':disabled') && !$(this).attr('readonly')) {\n\n let $inputGroup = $(this).closest('.input-group');\n\n if ($inputGroup.hasClass('input-group-focus')) {\n $inputGroup.removeClass('input-group-focus');\n }\n }\n });\n\n // Custom Form group\n $('.form-label-group').each(function(i, formLabelGroup) {\n\n let $formLabelGroup = $(formLabelGroup);\n\n $formLabelGroup.find('input').on('blur input change', function () {\n\n let val = $(this).val();\n\n if (val) {\n $(formLabelGroup).addClass('label-on-top');\n } else {\n $(formLabelGroup).removeClass('label-on-top');\n }\n\n }).trigger('change');\n });\n\n // Table actions\n $.each($('.table'), function() {\n\n if ($(this).find('[data-table-link], [data-table-btn]').length && !$(this).hasClass('table-hover')) {\n $(this).addClass('table-hover');\n }\n });\n\n $(document).on('click', '[data-table-link]', function(e) {\n\n let $container = $(this).parents('table, .table');\n let href = $(this).data('tableLink');\n let target = $(e.target);\n let exceptions = ['input', 'button', 'a', 'label', 'td.col-select'];\n let linkDisabled = false;\n\n $.each(exceptions, function(item) {\n\n if (target.is(item) || (item == 'a' && target.parent().is(item))) {\n linkDisabled = true;\n }\n });\n\n if ($container.hasClass('bulk-actions-active')) {\n linkDisabled = true;\n }\n\n if (target.hasClass('table-link-exclude')) {\n linkDisabled = true;\n }\n\n if (target.is('td, .td, img') && !linkDisabled) {\n\n if (e.ctrlKey || e.metaKey) {\n\n window.open(href, '_blank');\n\n } else {\n\n window.location.href = href;\n }\n\n } else {\n\n return;\n }\n });\n\n $(document).on('click', '[data-table-btn]', function(e) {\n\n let $container = $(this).parents('table, .table');\n let $self = $(this);\n let btn = $(this).data('tableButton');\n let target = $(e.target);\n let exceptions = ['input', 'button', 'a', 'label', 'td.col-select'];\n let btnDisabled = false;\n\n if (!btn) {\n\n btn = $self.find('button')[0];\n\n if (!btn) {\n return;\n }\n }\n\n $.each(exceptions, function(item) {\n\n if (target.is(item) || (item == 'a' && target.parent().is(item))) {\n btnDisabled = true;\n }\n });\n\n if ($container.hasClass('bulk-actions-active')) {\n btnDisabled = true;\n }\n\n if (target.hasClass('table-btn-exclude')) {\n btnDisabled = true;\n }\n\n if (target.is('td, .td, img') && !btnDisabled) {\n\n $(btn).click();\n\n } else {\n\n return;\n }\n });\n\n // button toggle\n $(document).on('click', '.btn-group-toggle .btn > input', function(e) {\n e.stopPropagation();\n });\n\n $(document).on('click', '.btn-group-toggle .btn', function() {\n $(this).find('input').trigger('click');\n $(this).parent().find('input').trigger('change');\n });\n\n $(document).on('change', '.btn-group-toggle .btn > input', function() {\n if ($(this).is(':checked')) {\n $(this).parent().addClass('active');\n } else {\n $(this).parent().removeClass('active');\n }\n });\n\n // Force select element unfocus after change\n $('select').on('change', function() {\n $(this).blur();\n });\n\n // Tabs\n $('.tab-toggler').on('click', function(e) {\n\n e.stopPropagation();\n\n $(this).parent().toggleClass('open');\n });\n\n $(document).on('click', function() {\n\n $('.tabs-container').removeClass('open');\n });\n\n // Sidebar togglers\n $('.sidebar-left-toggler').on('click', function(e) {\n\n e.stopPropagation();\n\n $(this).toggleClass('open');\n $('body').toggleClass('sidebar-left-open');\n });\n\n $('.sidebar-right-toggler').on('click', function(e) {\n\n e.stopPropagation();\n\n $(this).toggleClass('open');\n $('body').toggleClass('sidebar-right-open');\n });\n\n // Sidebar scroll\n $('.sidebar-content .ps__thumb-y').mousedown(function() {\n $(this).parent().parent().addClass('ps-mousedown-scroll');\n });\n\n $(document).mouseup(function() {\n\n if ($('.sidebar-content').hasClass('ps-mousedown-scroll')) {\n $('.sidebar-content').removeClass('ps-mousedown-scroll');\n }\n });\n\n // Sidebar left scroll\n let $sidebarLeft = $('.sidebar-left');\n let $sidebarLeftContent = $sidebarLeft.find('.sidebar-content');\n\n if ($sidebarLeftContent.length) {\n\n let sidebarLeftScroll = new PerfectScrollbar($sidebarLeftContent[0], {\n wheelSpeed: 2,\n wheelPropagation: true,\n minScrollbarLength: 20,\n suppressScrollX: true\n });\n }\n\n // Sidebar tabs\n let $sidebarTabs = $(document).find('.sidebar-tab');\n\n if ($sidebarTabs.length) {\n\n $.each($sidebarTabs, function(i, el) {\n\n let scrollContainer = $(el).find('.tab-content');\n\n const sidebarTabsScroll = new PerfectScrollbar(scrollContainer[0], {\n wheelSpeed: 2,\n wheelPropagation: true,\n minScrollbarLength: 20,\n suppressScrollX: true\n });\n });\n\n $('[name=\"sidebar-tab-select\"]').on('click', function() {\n\n let val = $(this).val();\n let $tab = $('#sidebar-tab-'+val);\n\n $sidebarTabs.not($tab).removeClass('active');\n $tab.addClass('active');\n\n $('[name=\"sidebar-tab-select\"]').not($(this)).removeClass('active');\n $(this).addClass('active');\n\n if ($tab[0] == $sidebarTabs.first()[0]) {\n\n $sidebarTabs.not($tab).find('.tab-content').css({\n 'transform': 'translate3d(100%, 0px, 0px)'\n });\n\n } else if ($tab[0] == $sidebarTabs.last()[0]) {\n\n $sidebarTabs.not($tab).find('.tab-content').css({\n 'transform': 'translate3d(-100%, 0px, 0px)'\n });\n\n } else {\n\n $sidebarTabs.first().not($tab).find('.tab-content').css({\n 'transform': 'translate3d(-100%, 0px, 0px)'\n });\n\n $sidebarTabs.last().not($tab).find('.tab-content').css({\n 'transform': 'translate3d(100%, 0px, 0px)'\n });\n }\n\n $tab.find('.tab-content').css({\n 'transform': 'none'\n });\n });\n }\n\t}\n}\n\nwindow.Cool.initialize = Common.initialize;\n\nexport default Common;","import 'jquery';\n\nconst debounce = function (func, wait, immediate) {\n\n\tlet timeout;\n\n\treturn function() {\n\n\t\tlet context = this;\n\t\tlet args = arguments;\n\t\tlet later = function() {\n\n\t\t\ttimeout = null;\n\n\t\t\tif (!immediate) {\n\t\t\t\tfunc.apply(context, args)\n\t\t\t};\n\t\t};\n\n\t\tlet callNow = immediate && !timeout;\n\n\t\tclearTimeout(timeout);\n\n\t\ttimeout = setTimeout(later, wait);\n\n\t\tif (callNow) {\n\t\t\tfunc.apply(context, args);\n\t\t}\n\t};\n};\n\nconst shallowProperty = function(key) {\n\n\treturn function(obj) {\n\n\t\treturn obj == null ? void 0 : obj[key];\n\t};\n};\n\nconst isArrayLike = function(collection) {\n\n\tlet length = shallowProperty('length');\n\n\treturn typeof length == 'number' && length >= 0 && length <= Math.pow(2, 53) - 1;\n};\n\nconst optimizeCb = function(func, context, argCount) {\n\n if (context === void 0) {\n \treturn func;\n\t}\n\n\tswitch (argCount == null ? 3 : argCount) {\n\n\t\tcase 1: return function(value) {\n\t\t\treturn func.call(context, value);\n\t\t};\n\n\t\tcase 3: return function(value, index, collection) {\n\t\t\treturn func.call(context, value, index, collection);\n\t\t};\n\t\tcase 4: return function(accumulator, value, index, collection) {\n\t\t\treturn func.call(context, accumulator, value, index, collection);\n\t\t};\n\t}\n\n return function() {\n\t\treturn func.apply(context, arguments);\n };\n};\n\nconst each = function(obj, iteratee, context) {\n\n\titeratee = optimizeCb(iteratee, context);\n\n\tlet i;\n\tlet length;\n\n\tif (isArrayLike(obj)) {\n\n\t\tfor (i = 0, length = obj.length; i < length; i++) {\n\t\t\titeratee(obj[i], i, obj);\n\t\t}\n\n\t} else {\n\n\t\tlet keys = Object.keys(obj);\n\n\t\tfor (i = 0, length = keys.length; i < length; i++) {\n\t\t\titeratee(obj[keys[i]], keys[i], obj);\n\t\t}\n\t}\n\n\treturn obj;\n};\n\nconst touchEvents = function () {\n\n\tlet result = false;\n\n\tif (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n\t\tresult = true;\n\t}\n\n\treturn result;\n};\n\n$.event.special.destroyed = {\n\n\tremove: function(obj) {\n\n\t\tif (obj.handler) {\n\t\t\tobj.handler();\n\t\t}\n\t}\n}\n\nexport {\n\tdebounce,\n\ttouchEvents,\n\teach\n}","export default class AbstractUIComponent {\n\n\t// Init callback\n onInit() {\n\n let onInit = this.opts.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(this);\n }\n }\n\n // Update callback\n onUpdate() {\n\n let onUpdate = this.opts.onUpdate;\n\n if (typeof onUpdate === 'function') {\n\n onUpdate.call(this);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.opts.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this);\n }\n }\n\n // Show callback\n onShow() {\n\n let onShow = this.opts.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(this);\n }\n }\n\n // Close callback\n onClose() {\n\n let onClose = this.opts.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(this);\n }\n }\n\n // Reset callback\n onReset() {\n\n let onReset = this.opts.onReset;\n\n if (typeof onReset === 'function') {\n\n onReset.call(this);\n }\n }\n\n // Debug log\n log(...args) {\n\n \tif (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n \t \tconsole.log(...args);\n }\n \t}\n }\n}","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolPopover';\nconst DATA_KEY = 'plugin_coolPopover';\n\nclass Popover extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.popover) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.popover, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache();\n this.bindEvents();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$container = this.$el.data('container') ? $(this.$el.data('container')) : $(this.opts.container);\n this.id = 'popover-'+this.generateUUID();\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.trigger = this.$el.data('trigger') ? this.$el.data('trigger') : this.opts.trigger;\n this.placement = this.$el.data('placement') ? this.$el.data('placement') : this.opts.placement;\n this.placementChanged = false;\n this.title = this.$el.data('title') ? this.$el.data('title') : this.opts.title;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n if (this.trigger === 'click') {\n\n this.$el.on('click'+'.'+NAME, () => {\n\n if (this.$popover) {\n this.close();\n } else {\n this.show();\n }\n });\n\n } else if (this.trigger === 'hover') {\n\n this.$el.on('mouseenter'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('mouseleave'+'.'+NAME, () => {\n\n this.close();\n });\n\n } else if (this.trigger === 'focus') {\n\n this.$el.on('focusin'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('focusout'+'.'+NAME, () => {\n\n this.close();\n });\n }\n\n $(window).on('resize', debounce(() => {\n\n if (this.$popover) {\n this.setPosition();\n this.onUpdate();\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Build popover\n buildPopover() {\n\n let content;\n\n \tif (typeof this.content === 'function') {\n \t\tcontent = this.content();\n \t} else {\n content = this.content;\n }\n\n \tthis.$popover = $(`\n \t\t<div class=\"popover\" role=\"tooltip\" id=\"${this.id}\">\n\n\t\t\t <div class=\"arrow\"></div>\n\n\t\t\t <h3 class=\"popover-header\">${this.title}</h3>\n\n\t\t\t <div class=\"popover-body\">${content}</div>\n\n\t\t\t</div>\n \t`);\n\n this.$container.append(this.$popover);\n this.$arrow = this.$popover.find('.arrow') ? this.$popover.find('.arrow') : false;\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$popover);\n this.log(this.$arrow);\n this.log('Id: '+this.id);\n this.log('Trigger: '+this.trigger);\n this.log('Placement: '+this.placement);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Title: '+this.title);\n this.log('Content: '+this.content);\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof placement === 'undefined' || placement === null) {\n placement = this.placement;\n }\n\n this.$popover.addClass('popover-'+placement);\n\n let containerInnerWidth = this.$container.innerWidth();\n let containerInnerHeight = this.$container.innerHeight();\n let popoverWidth = this.$popover.outerWidth(true);\n let popoverHeight = this.$popover.outerHeight(true);\n let popoverTriggerWidth = this.$el.outerWidth();\n let popoverTriggerHeight = this.$el.outerHeight();\n let popoverTriggerPosX = this.$el.position().left;\n let popoverTriggerPosY = this.$el.position().top;\n let arrowWidth = this.$arrow.outerWidth(true);\n let arrowHeight = this.$arrow.outerHeight(true);\n let arrowPos;\n let popoverPosX;\n let popoverPosY;\n\n if (placement === 'top') {\n\n popoverPosX = Math.round(popoverTriggerPosX - (popoverWidth - popoverTriggerWidth) / 2);\n popoverPosY = Math.round(popoverTriggerPosY - popoverHeight);\n arrowPos = Math.round(popoverWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n popoverPosX = Math.round(popoverTriggerPosX + popoverTriggerWidth);\n popoverPosY = Math.round(popoverTriggerPosY - (popoverHeight - popoverTriggerHeight) / 2);\n arrowPos = Math.round(popoverHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n popoverPosX = Math.round(popoverTriggerPosX - (popoverWidth - popoverTriggerWidth) / 2);\n popoverPosY = Math.round(popoverTriggerPosY + popoverTriggerHeight);\n arrowPos = Math.round(popoverWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n popoverPosX = Math.round(popoverTriggerPosX - popoverWidth);\n popoverPosY = Math.round(popoverTriggerPosY - (popoverHeight - popoverTriggerHeight) / 2);\n arrowPos = Math.round(popoverHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$popover.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+popoverPosX+'px, '+popoverPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n // Correct placement if popover goes outside of container\n let popoverOverflowCount = 0;\n let popoverPosition = {\n left: this.$popover.position().left,\n top: this.$popover.position().top,\n right: containerInnerWidth - (this.$popover.position().left + popoverWidth),\n bottom: containerInnerHeight - (this.$popover.position().top + popoverHeight),\n };\n let popoverOverflow = {\n left: false,\n top: false,\n right: false,\n bottom: false\n };\n\n if (popoverPosition.right < 0) {\n\n popoverOverflow.right = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from right');\n }\n\n if (popoverPosition.left < 0) {\n\n popoverOverflow.left = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from left');\n }\n\n if (popoverPosition.bottom < 0) {\n\n popoverOverflow.bottom = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from bottom');\n }\n\n if (popoverPosition.top < 0) {\n\n popoverOverflow.top = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from top');\n }\n\n if (popoverOverflowCount > 0) {\n\n if (!this.placementChanged && popoverOverflow.left && popoverPosition.right > popoverWidth) {\n\n this.log('Changing popover placement to right');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('right');\n\n } else if (!this.placementChanged && popoverOverflow.top && popoverPosition.top > popoverHeight) {\n\n this.log('Changing popover placement to bottom');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n\n } else if (!this.placementChanged && popoverOverflow.right && popoverPosition.left > popoverWidth) {\n\n this.log('Changing popover placement to left');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('left');\n\n } else if (!this.placementChanged && popoverOverflow.bottom && popoverPosition.top > popoverHeight) {\n\n this.log('Changing popover placement to top');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else if (!this.placementChanged && (placement !== 'top' || placement !== 'bottom') && (popoverOverflow.left || popoverOverflow.right)) {\n\n if (popoverPosition.top > popoverPosition.bottom) {\n\n this.log('Changing popover placement to top');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else {\n\n this.log('Changing popover placement to bottom');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n }\n\n } else {\n\n this.fixPopoverPosition = true;\n }\n\n if (this.fixPopoverPosition) {\n\n this.log('Adjusting popover size or position in order to popover fit in the container');\n\n if (popoverOverflow.left) {\n\n this.log('Popover overflowing from left');\n\n let overflowAmount = Math.abs(popoverPosition.left);\n let excludePlacements = ['top', 'bottom'];\n\n if ((popoverTriggerPosX >= popoverPosX + overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Popover adjusting width');\n\n popoverWidth -= overflowAmount;\n popoverPosX += overflowAmount;\n\n } else {\n\n this.log('Popover adjusting position x');\n\n popoverPosX += overflowAmount;\n arrowPos -= overflowAmount;\n }\n }\n\n if (popoverOverflow.top) {\n\n this.log('Popover overflowing from top');\n\n let overflowAmount = Math.abs(popoverPosition.top);\n\n this.log('Popover adjusting position y');\n\n popoverPosY += overflowAmount;\n arrowPos -= overflowAmount;\n }\n\n if (popoverOverflow.right) {\n\n this.log('Popover overflowing from right');\n\n let overflowAmount = Math.abs(popoverPosition.right);\n let excludePlacements = ['top', 'bottom'];\n\n if ((popoverTriggerPosX <= popoverPosX - overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Popover adjusting width');\n\n popoverWidth -= overflowAmount;\n\n } else {\n\n this.log('Popover adjusting position x');\n\n popoverPosX -= overflowAmount;\n arrowPos += overflowAmount;\n }\n }\n\n if (popoverOverflow.bottom) {\n\n this.log('Popover overflowing from bottom');\n\n let overflowAmount = Math.abs(popoverPosition.bottom);\n\n this.log('Popover adjusting position y');\n\n popoverPosY -= overflowAmount;\n arrowPos += overflowAmount;\n }\n\n if (placement === 'top') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$popover.css({\n width: popoverWidth,\n transform: 'translate3d('+popoverPosX+'px, '+popoverPosY+'px, 0px)'\n });\n\n this.fixPopoverPosition = false;\n\n this.log('Popover placement changed: '+this.placementChanged);\n this.log('Popover container inner width: '+containerInnerWidth+'px');\n this.log('Popover container inner height: '+containerInnerHeight+'px');\n this.log('Popover trigger width: '+popoverTriggerWidth+'px');\n this.log('Popover trigger height: '+popoverTriggerHeight+'px');\n this.log('popover trigger position x: '+popoverTriggerPosX+'px');\n this.log('Popover trigger position Y: '+popoverTriggerPosY+'px');\n this.log('Popover width: '+popoverWidth+'px');\n this.log('Popover height: '+popoverHeight+'px');\n this.log('Popover position x: '+popoverPosX+'px');\n this.log('Popover position y: '+popoverPosY+'px');\n this.log('Popover position left: '+popoverPosition.left+'px');\n this.log('Popover position top: '+popoverPosition.top+'px');\n this.log('Popover position right: '+popoverPosition.right+'px');\n this.log('Popover position bottom: '+popoverPosition.bottom+'px');\n }\n\n } else {\n\n this.log('Popover placement changed: '+this.placementChanged);\n this.log('Popover container inner width: '+containerInnerWidth+'px');\n this.log('Popover container inner height: '+containerInnerHeight+'px');\n this.log('Popover trigger width: '+popoverTriggerWidth+'px');\n this.log('Popover trigger height: '+popoverTriggerHeight+'px');\n this.log('popover trigger position x: '+popoverTriggerPosX+'px');\n this.log('Popover trigger position Y: '+popoverTriggerPosY+'px');\n this.log('Popover width: '+popoverWidth+'px');\n this.log('Popover height: '+popoverHeight+'px');\n this.log('Popover position x: '+popoverPosX+'px');\n this.log('Popover position y: '+popoverPosY+'px');\n this.log('Popover position left: '+popoverPosition.left+'px');\n this.log('Popover position top: '+popoverPosition.top+'px');\n this.log('Popover position right: '+popoverPosition.right+'px');\n this.log('Popover position bottom: '+popoverPosition.bottom+'px');\n }\n }\n\n // Show\n show() {\n\n if (this.$popover) {\n return;\n }\n\n this.buildPopover();\n this.setPosition();\n\n if (this.animation) {\n\n this.$popover.addClass(this.animationSpeed);\n this.$popover.animateCss(this.animationIn);\n this.$popover.addClass('show');\n this.$popover.attr('id', this.id);\n this.$el.attr('data-popover', this.id);\n\n } else {\n\n this.$popover.addClass('show');\n this.$popover.attr('id', this.id);\n this.$el.attr('data-popover', this.id);\n }\n\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.$popover) {\n return;\n }\n\n if (this.animation && !this.$popover.hasClass('animated')) {\n\n this.$popover.animateCss(this.animationOut, () => {\n\n this.$popover.remove();\n this.$el.removeAttr('data-popover');\n this.$popover = null;\n this.placementChanged = false;\n\n this.onClose();\n });\n\n } else {\n\n this.$popover.remove();\n this.$el.removeAttr('data-popover');\n this.$popover = null;\n this.placementChanged = false;\n\n this.onClose();\n }\n }\n\n static _jQueryInterface(config) {\n\n \treturn this.each(function() {\n\n \t\tlet data = $(this).data(DATA_KEY);\n \t\tconst _config = typeof config === 'object' && config;\n\n \t\tif (!data) {\n \t\t\tdata = new Popover(this, _config);\n \t\t\t$(this).data(DATA_KEY, data);\n \t\t}\n\n \t\tif (typeof config === 'string') {\n\n \t\t\tif (typeof data[config] === 'undefined') {\n\t\t \tthrow new TypeError(`No method named \"${config}\"`)\n\t\t }\n\n\t\t data[config]()\n \t\t}\n\t });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Popover._jQueryInterface;\n $.fn[NAME].Constructor = Popover;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Popover._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n container: '.content-inner',\n trigger: 'focus',\n placement: 'bottom',\n animation: true,\n animationIn: 'fadeIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n title: '',\n content: '',\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n }\n}\n\nexport default Popover;","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolSelect';\nconst DATA_KEY = 'plugin_coolSelect';\n\nclass Select extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.select) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.select, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache().then(() => {\n\n this.buildScroll();\n this.bindEvents();\n\n if (this.data[this.name].length > 0) {\n this.setData();\n }\n\n this.onInit();\n });\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.bindEvents();\n this.onUpdate();\n }\n\n // Reset plugin data\n reset() {\n\n this.data = {};\n this.data[this.name] = [];\n this.items = [];\n this.$select.find('.select-item').remove();\n this.$selectItems = [];\n this.$selectIconContainer.html(this.selectIconDefault);\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectItems.length == 0 && !this.searchApi && this.dynamicTitle && this.dynamicTitleEmptyDefault && this.dynamicTitleEmptyDefault !== 0) {\n\n this.$selectHeader.css('cursor', 'default');\n this.$selectIconContainer.addClass('d-none');\n this.$selectTitle.html(this.dynamicTitleEmptyDefault);\n }\n\n if (this.showSearch) {\n\n this.searchData = [];\n this.$searchInput.val('');\n this.searchString = '';\n this.search.call(this);\n }\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n return new Promise((primaryResolve, primaryReject) => {\n\n let self = this;\n\n this.$el = $(this.el);\n this.$container = this.$el.parent();\n this.$selectHeader = this.$el.find('.select-header');\n this.$selectTitle = this.$el.find('.select-title');\n this.$selectIconContainer = this.$selectHeader.find('.select-icon');\n this.selectIconDefault = this.$selectHeader.find('.select-icon') ? this.$selectHeader.find('.select-icon').html() : '<i class=\"'+(this.opts.faPro ? 'fal' : 'fas')+'fa-angle-down icon\"></i>';\n this.name = this.$el.data('name') ? this.$el.data('name') : this.opts.name;\n this.scrollContentHeight = this.$el.data('scrollContentHeight') ? this.$el.data('scrollContentHeight') : this.opts.scrollContentHeight;\n this.items = this.$el.data('items') ? this.$el.data('items') : this.opts.items;\n this.data = {};\n this.data[this.name] = [];\n this.searchData = [];\n this.searchApi = this.$el.data('searchApi') ? this.$el.data('searchApi') : this.opts.searchApi;\n this.type = this.$el.data('type') ? this.$el.data('type') : this.opts.type;\n this.contentOpen = false;\n this.searchPlaceholder = this.$el.data('search-placeholder') ? this.$el.data('search-placeholder') : this.opts.searchPlaceholder;\n this.btnCloseText = this.$el.data('btn-close-text') ? this.$el.data('btn-close-text') : this.opts.btnCloseText;\n this.labelTemplate = this.opts.labelTemplate;\n this.confirmCheck = this.opts.confirmCheck;\n this.confirmUncheck = this.opts.confirmUncheck;\n this.preventUncheck = this.opts.preventUncheck;\n this.dynamicTitle = this.$el.data('dynamicTitle') ? this.$el.data('dynamicTitle') : this.opts.dynamicTitle;\n this.dynamicTitleDefault = this.$el.data('dynamicTitleDefault') ? this.$el.data('dynamicTitleDefault') : this.opts.dynamicTitleDefault;\n this.dynamicTitleEmptyDefault = this.$el.data('dynamicTitleEmptyDefault') ? this.$el.data('dynamicTitleEmptyDefault') : this.opts.dynamicTitleEmptyDefault;\n this.allowNoneOnRadioSelect = this.$el.data('allowNoneOnRadioSelect') ? this.$el.data('allowNoneOnRadioSelect') : this.opts.allowNoneOnRadioSelect;\n this.showValidStateIcon = this.$el.data('showValidStateIcon') ? this.$el.data('showValidStateIcon') : this.opts.showValidStateIcon;\n this.itemsToExclude = this.$el.data('itemsToExclude') ? this.$el.data('itemsToExclude').replace(/\\s/g, '').split(',') : this.opts.itemsToExclude;\n this.preventClose = false;\n\n if (this.itemsToExclude.length > 0) {\n this.itemsToExclude = this.itemsToExclude.map(Number);\n }\n\n if (this.opts.setData) {\n this.data = this.opts.setData;\n }\n\n if (this.$el.data('setData') && this.$el.data('setData') != '') {\n this.data = this.$el.data('setData');\n }\n\n if (typeof this.data[this.name].filter !== 'undefined' && self.itemsToExclude) {\n this.data[this.name] = this.data[this.name].filter(function(item) {\n return self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1;\n });\n }\n\n if (typeof this.items.filter !== 'undefined' && self.itemsToExclude) {\n this.items = this.items.filter(function(item) {\n return self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1;\n });\n }\n\n if (this.$el.find('.select-search').length) {\n this.showSearch = true;\n } else {\n this.showSearch = this.$el.data('showSearch') ? this.$el.data('showSearch') : this.opts.showSearch;\n }\n\n if (this.$el.find('.select-footer').length) {\n this.showFooter = true;\n } else {\n this.showFooter = this.$el.data('showFooter') ? this.$el.data('showFooter') : this.opts.showFooter;\n }\n\n this.$select = this.$el.find('.select-content');\n\n new Promise((secondaryResolve, secondaryReject) => {\n\n if (!this.$select.length) {\n\n let items = this._renderItemList(this.items);\n\n this.$select = $(`\n <div class=\"select-content\">\n\n ${this._renderSearch()}\n\n <div class=\"select-scrollable-content\">${items}</div>\n\n ${this._renderFooter()}\n\n </div>\n `);\n\n this.$el.append(this.$select);\n\n secondaryResolve();\n\n } else {\n\n secondaryResolve();\n }\n\n }).then(() => {\n\n this.$scrollableContent = this.$select.find('.select-scrollable-content') ? this.$select.find('.select-scrollable-content') : false;\n this.$selectItems = this.$select.find('.select-item');\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectItems.length == 0 && !this.searchApi && this.dynamicTitle && this.dynamicTitleEmptyDefault && this.dynamicTitleEmptyDefault !== 0) {\n\n this.$selectHeader.css('cursor', 'default');\n this.$selectIconContainer.addClass('d-none');\n this.$selectTitle.html(this.dynamicTitleEmptyDefault);\n }\n\n if (this.showSearch) {\n\n this.$searchContainer = this.$select.find('.select-search');\n this.$searchInput = this.$select.find('[name=\"select-search\"]');\n this.$searchIconContainer = this.$select.find('.select-search-icon');\n this.$clearSearchButton = this.$select.find('[data-clear-search]');\n\n // Prevent tabfocus from breaking select functionality\n this.$searchInput[0].tabIndex = -1;\n }\n\n if (this.showFooter) {\n\n this.$footerContainer = this.$select.find('.select-footer');\n this.$closeButton = this.$select.find('[data-select-close]');\n\n // Prevent tabfocus from breaking select functionality\n this.$closeButton[0].tabIndex = -1;\n }\n\n this.buildSearchData();\n\n this.log(this.$el);\n this.log(this.$select);\n this.log(this.$scrollableContent);\n this.log('Name: '+this.name);\n this.log('Show search: '+this.showSearch);\n this.log('Show footer: '+this.showFooter);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n this.log(this.items);\n this.log(this.searchData);\n\n primaryResolve();\n })\n });\n }\n\n // Build scroll\n buildScroll() {\n\n if (this.$scrollableContent.length > 0) {\n\n let scrollContentHeight = this.scrollContentHeight;\n\n if (this.showSearch) {\n scrollContentHeight = scrollContentHeight - (this.$searchContainer.outerHeight(true) || 0);\n }\n\n if (this.showFooter) {\n scrollContentHeight = scrollContentHeight - (this.$footerContainer.outerHeight(true) || 0);\n }\n\n this.$scrollableContent.css({\n 'max-height': (scrollContentHeight - parseInt(this.$scrollableContent.css('marginTop'), 10) - parseInt(this.$scrollableContent.css('marginBottom'), 10)) +'px'\n });\n\n if (touchEvents()) {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n } else {\n\n this.$scrollableContent.addClass('ps-dark');\n this.scroll = new PerfectScrollbar(this.$scrollableContent[0], {\n wheelSpeed: 1,\n wheelPropagation: false,\n minScrollbarLength: 20,\n scrollYMarginOffset : -1,\n suppressScrollY: true,\n suppressScrollX: true,\n });\n\n // Prevent tabfocus from breaking select functionality\n this.$scrollableContent.find('[tabindex=\"0\"]').attr('tabindex', -1);\n\n if (this.$scrollableContent[0].offsetHeight < this.$scrollableContent[0].scrollHeight) {\n\n this.$scrollableContent.addClass('ps-show-rail-y');\n this.scroll.settings.suppressScrollY = false;\n }\n }\n }\n }\n\n // Build search data\n buildSearchData() {\n\n return new Promise((resolve, reject) => {\n\n this.searchData = [];\n\n let selectLabels = this.$select.find('[data-label]');\n\n $.each(selectLabels, (i, el) => {\n\n this.searchData.push({\n id: i,\n val: $(el).text().trim()\n });\n });\n\n resolve();\n });\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n let self = this;\n\n this.$selectHeader.on('click'+'.'+NAME, () => {\n\n if (this.contentOpen) {\n this.close();\n } else if (this.$selectItems.length > 0 || this.searchApi) {\n this.show();\n }\n });\n\n this.$el.on('change'+'.'+NAME, 'input[type=\"checkbox\"]', function() {\n\n let el = this;\n let val = $(this).val();\n let closeTimeout = 600; // ms\n\n self.preventClose = true;\n\n if (typeof self.confirmCheck === 'function' && el.checked) {\n\n el.checked = false;\n\n self.confirmCheck((cb) => {\n\n if (cb == 'confirmed') {\n\n self.data[self.name].indexOf(val) === -1 ? self.data[self.name].push(val) : false;\n el.checked = true;\n self.onSelect(el);\n }\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }, el);\n\n } else if (el.checked) {\n\n self.data[self.name].indexOf(val) === -1 ? self.data[self.name].push(val) : false;\n self.onSelect(el);\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n\n } else if (typeof self.confirmUncheck === 'function' && !el.checked) {\n\n el.checked = true;\n\n self.confirmUncheck((cb) => {\n\n if (cb == 'confirmed') {\n\n self.data[self.name] = self.data[self.name].filter(n => n != val);\n el.checked = false;\n self.onSelect(el);\n }\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }, el);\n\n } else if (!el.checked && !self.preventUncheck) {\n\n self.data[self.name] = self.data[self.name].filter(n => n != val);\n self.onSelect(el);\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n\n } else if (!el.checked && self.preventUncheck) {\n\n el.checked = true;\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }\n });\n\n this.$el.on('change'+'.'+NAME, 'input[type=\"radio\"]', function() {\n\n let val = $(this).val();\n\n if (this.checked) {\n\n self.data[self.name] = val;\n self.$select.find('input[type=\"radio\"]').not($(this)).prop('checked', false);\n self.$select.find('input[type=\"radio\"]').not($(this)).removeClass('checked');\n\n } else {\n\n self.data[self.name] = [];\n }\n });\n\n this.$el.on('click'+'.'+NAME, 'input[type=\"radio\"]', function() {\n\n if ($(this).hasClass('checked') && self.allowNoneOnRadioSelect) {\n\n self.data[self.name] = [];\n $(this).prop('checked', false);\n $(this).removeClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html(self.dynamicTitleDefault);\n }\n\n } else {\n\n $(this).addClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html($(this).parent().find('[data-label]').text());\n }\n }\n\n self.onSelect(this);\n });\n\n if (this.scroll) {\n\n this.$scrollableContent.find('.ps__thumb-y').mousedown(function() {\n self.$scrollableContent.addClass('ps-mousedown-scroll');\n });\n\n $(document).mouseup(function() {\n\n if (self.$scrollableContent.hasClass('ps-mousedown-scroll')) {\n self.$scrollableContent.removeClass('ps-mousedown-scroll');\n }\n });\n }\n\n if (this.showSearch) {\n\n this.$searchInput.on('keydown'+'.'+NAME, debounce(function () {\n\n self.searchString = $(this).val().trim();\n self.search.call(self);\n\n }, 250));\n\n this.$searchInput.on('focusin'+'.'+NAME, function () {\n\n self.$searchContainer.addClass('focused');\n });\n\n this.$searchInput.on('focusout'+'.'+NAME, function () {\n\n self.$searchContainer.removeClass('focused');\n });\n\n this.$searchContainer.on('click'+'.'+NAME, '[data-clear-search]', function () {\n\n if (self.searchString.length) {\n\n self.$searchInput.val('');\n self.searchString = '';\n self.search.call(self);\n\n } else {\n\n return;\n }\n });\n }\n\n if (this.showFooter) {\n\n this.$closeButton.on('click'+'.'+NAME, () => {\n\n this.close();\n });\n }\n\n $(document).on('touchstart click', function(e) {\n\n if (!self.$el.is(e.target) && !self.$el.has(e.target).length && self.contentOpen && !self.preventClose) {\n\n self.close.call(self);\n }\n });\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Get data\n getData(data) {\n\n if (data) {\n return this.data[data];\n } else {\n return this.data;\n }\n }\n\n // Set data\n setData() {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if (this.showValidStateIcon) {\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-check text-green icon\"></i>`);\n } else {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n if (this.searchApi.length) {\n\n let searchUrl = this.searchApi;\n let itemCount = this.data[this.name].length;\n let currentCount = 0;\n\n this.data[this.name].forEach(function(value) {\n\n searchUrl += encodeURIComponent('#'+value);\n currentCount++;\n\n if (currentCount !== itemCount) {\n searchUrl += '+';\n }\n });\n\n $.ajax({\n method: 'GET',\n url: searchUrl\n }).done(function(data) {\n\n let items = data.map(item => {\n\n item.id = item.id.toString();\n\n return item;\n });\n\n items = items.filter(function(item) {\n return self.data[self.name].indexOf(item.id) > -1 && self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1 && parseInt(item.id, 10) > 0;\n });\n\n let result = $(self._renderItemList(items));\n\n $.when(self.$scrollableContent.append(result)).then(function() {\n\n if (self.$scrollableContent[0].offsetHeight < self.$scrollableContent[0].scrollHeight) {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = false;\n self.$scrollableContent.addClass('ps-show-rail-y');\n\n } else {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = true;\n self.$scrollableContent.removeClass('ps-show-rail-y');\n }\n\n if (self.$select.find(':input[type=\"checkbox\"]').length) {\n self.type = 'checkbox';\n } else if (self.$select.find(':input[type=\"radio\"]').length) {\n self.type = 'radio';\n }\n\n if (self.type == 'checkbox') {\n\n self.data[self.name].forEach(function(value) {\n\n let $input = self.$select.find(':input').filter(function() { return this.value == value });\n\n $input.prop('checked', true);\n\n self.onSelect($input[0]);\n });\n\n } else if (self.type == 'radio') {\n\n let $input = self.$select.find(':input').filter(function() { return this.value == self.data[self.name] });\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n self.onSelect($input[0]);\n }\n });\n });\n\n } else {\n\n if (this.$select.find(':input[type=\"checkbox\"]').length) {\n this.type = 'checkbox';\n } else if (this.$select.find(':input[type=\"radio\"]').length) {\n this.type = 'radio';\n }\n\n if (this.type == 'checkbox') {\n\n this.data[this.name].forEach(function(value) {\n\n let $input = self.$select.find(':input').filter(function() { return this.value == value });\n\n $input.prop('checked', true);\n\n self.onSelect($input[0]);\n });\n\n } else if (this.type == 'radio') {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == self.data[self.name] });\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n if (this.dynamicTitle) {\n this.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n this.onSelect($input[0]);\n }\n }\n }\n\n // Search\n search() {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if (this.searchString.length) {\n\n if (this.searchApi.length) {\n\n this.$scrollableContent.find('input:not(:checked)').parents('.select-item').not('.static-item').remove();\n\n $.ajax({\n method: 'GET',\n url: this.searchApi + this.searchString\n }).done(function(data) {\n\n let items = data.map(item => {\n\n item.id = item.id.toString();\n\n return item;\n });\n\n items = items.filter(function(item) {\n return self.data[self.name].indexOf(item.id) === -1 && self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1 && parseInt(item.id, 10) > 0;\n });\n\n let result = $(self._renderItemList(items));\n\n $.when(self.$scrollableContent.append(result)).then(function() {\n\n let faNameSpace = self.opts.faPro ? 'fal' : 'fas';\n\n self.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-times icon\"></i>`);\n self.$searchIconContainer.attr('data-clear-search', 'true');\n\n if (self.$scrollableContent[0].offsetHeight < self.$scrollableContent[0].scrollHeight) {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = false;\n self.$scrollableContent.addClass('ps-show-rail-y');\n\n } else {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = true;\n self.$scrollableContent.removeClass('ps-show-rail-y');\n }\n });\n });\n\n } else {\n\n let results = this.searchData.filter(function(item) {\n return item.val.toLocaleLowerCase().indexOf(self.searchString.toLocaleLowerCase()) > -1;\n });\n\n this.$selectItems.removeClass('d-none');\n this.$selectItems.removeClass('visible');\n\n results.forEach(function(item) {\n $(self.$selectItems[item.id]).addClass('visible');\n });\n\n this.$selectItems.not('.visible').addClass('d-none');\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-times icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', 'true');\n }\n\n } else {\n\n if (this.searchApi.length) {\n\n this.$scrollableContent.find('input:not(:checked)').parents('.select-item').not('.static-item').remove();\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-search icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', '');\n\n } else {\n\n this.$selectItems.removeClass('d-none');\n this.$selectItems.removeClass('visible');\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-search icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', '');\n }\n }\n\n if (this.scroll) {\n this.scroll.update();\n }\n\n this.onUpdate();\n }\n\n // Show\n show() {\n\n if (this.$el.hasClass('show')) {\n return;\n }\n\n let $otherSelects = $('.select.show');\n let zindex = 1;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if ($otherSelects.length) {\n zindex = parseInt($otherSelects.first().css('z-index'), 10) + 2;\n }\n\n this.$el.css({\n 'max-height': (this.scrollContentHeight + this.$selectHeader.outerHeight(true))+'px'\n });\n\n this.$el.addClass('show');\n\n if (!$otherSelects.length) {\n zindex = parseInt(this.$el.css('z-index'), 10) + 1;\n }\n\n this.$el.css({\n 'z-index': zindex\n });\n\n if (this.scroll && this.$scrollableContent.length) {\n\n if (this.$scrollableContent[0].offsetHeight < this.$scrollableContent[0].scrollHeight) {\n this.$scrollableContent[0].scrollTop = 1;\n this.$scrollableContent[0].scrollTop = 0;\n }\n }\n\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-angle-up icon\"></i>`);\n\n setTimeout(() => {\n this.$el[0].scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'nearest'});\n }, 300);\n\n this.contentOpen = true;\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.preventClose) {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n this.$el.css('max-height', '');\n this.$el.removeClass('show');\n\n setTimeout(() => {\n self.$el.removeAttr('style');\n }, 300);\n\n if (this.data[this.name].length > 0 && this.showValidStateIcon) {\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-check text-green icon\"></i>`);\n } else {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n this.contentOpen = false;\n this.onClose();\n }\n }\n\n // On select\n onSelect(el) {\n\n let onSelect = this.opts.onSelect;\n\n if (typeof onSelect === 'function') {\n\n onSelect.call(el);\n }\n }\n\n // Add more items after plugin is already initialized\n appendItems(items, selectItems) {\n\n return new Promise((resolve, reject) => {\n\n let self = this;\n\n if (!$.isArray(items)) {\n\n let itemsArr = [];\n\n itemsArr.push(items);\n items = itemsArr;\n }\n\n items = items.filter(function(item) {\n return self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1;\n });\n\n items.forEach(item => {\n\n this.items.push(item);\n });\n\n let domItems = this._renderItemList(items);\n\n this.$scrollableContent.prepend(domItems);\n this.$selectItems = this.$select.find('.select-item');\n\n this.buildSearchData().then(() => {\n\n if (this.$selectItems.length > 0) {\n\n if (this.$select.find(':input[type=\"checkbox\"]').length) {\n this.type = 'checkbox';\n } else if (this.$select.find(':input[type=\"radio\"]').length) {\n this.type = 'radio';\n }\n\n if (this.type == 'checkbox') {\n\n items.forEach(item => {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == item.id });\n let val = parseInt($input.val(), 10);\n\n $input.prop('checked', true);\n\n this.data[this.name].indexOf(val) === -1 ? this.data[this.name].push(val) : false;\n this.onSelect($input[0]);\n });\n\n } else if (this.type == 'radio') {\n\n let item = items[0];\n let $input = this.$select.find(':input').filter(function() { return this.value == item.id });\n let val = parseInt($input.val(), 10);\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n this.data[this.name].indexOf(val) === -1 ? this.data[this.name] = [val] : false;\n\n if (this.dynamicTitle) {\n this.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n this.$select.find('input[type=\"radio\"]').not($input).prop('checked', false);\n this.$select.find('input[type=\"radio\"]').not($input).removeClass('checked');\n this.onSelect($input[0]);\n }\n }\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectHeader.attr('style')) {\n this.$selectHeader.removeAttr('style');\n }\n\n if (this.$selectIconContainer.hasClass('d-none')) {\n this.$selectIconContainer.removeClass('d-none');\n }\n\n resolve();\n });\n });\n }\n\n // Deselect items\n deselectItems(array) {\n\n return new Promise((resolve, reject) => {\n\n array.forEach(id => {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == id });\n\n if ($input[0].checked) {\n\n $input.trigger('click');\n }\n });\n\n if (this.data[this.name].length == 0) {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n });\n }\n\n // Get item\n getItem(key, val) {\n\n let result = $.grep(this.items, function(item) { return item[key] == val })[0];\n\n return result ? result : null;\n }\n\n // Get selected items\n getSelectedItems(segment) {\n\n let ids = [];\n let result = [];\n let data = this.data[this.name];\n\n if (!$.isArray(data)) {\n\n ids.push(data);\n\n } else {\n\n ids = data;\n }\n\n ids = ids.map(Number);\n\n if (this.items.length > 0) {\n\n result = $.grep(this.items, function(item) { return ids.indexOf(parseInt(item.id, 10)) > -1 });\n\n if (segment) {\n\n result = result.map(obj => {\n return obj[segment];\n }).filter(obj => {\n return obj != null;\n });\n }\n\n } else {\n\n result = ids;\n }\n\n return result;\n }\n\n // Get selected item\n getSelectedItem(segment) {\n\n let ids = [];\n let result = [];\n let data = this.data[this.name];\n\n if (!$.isArray(data)) {\n\n ids.push(data);\n\n } else {\n\n ids = data;\n }\n\n ids = ids.map(Number);\n\n if (this.items.length > 0) {\n\n result = $.grep(this.items, function(item) { return ids.indexOf(parseInt(item.id, 10)) > -1 });\n\n if (segment) {\n\n result = result.map(obj => {\n return obj[segment];\n }).filter(obj => {\n return obj != null;\n });\n }\n\n } else {\n\n result = ids;\n }\n\n return result[0] == null ? null : result[0];\n }\n\n _renderItemList(items) {\n\n let result = '';\n\n for (let i = 0; i < items.length; ++i) {\n\n let item = items[i];\n let label = '';\n\n if (typeof this.labelTemplate === 'function') {\n\n label = this.labelTemplate(item);\n\n } else {\n\n if (item.name) {\n label = item.name;\n } else if (item.label) {\n label = item.label;\n } else if (item.value) {\n label = item.value;\n }\n }\n\n result += `\n\n <div class=\"select-item\">\n\n <div class=\"select-item-${this.type}\">\n\n <div class=\"styled-${this.type}\">\n\n <input type=\"${this.type}\" id=\"select-${this.name}-${items[i].id}\" value=\"${items[i].id}\" tabindex=\"-1\">\n\n <label for=\"select-${this.name}-${items[i].id}\">\n\n <span class=\"radio-inner\">\n <svg viewBox=\"0 0 18 18\">\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\n </svg>\n </span>\n\n <span class=\"${this.type}-label\"${typeof this.labelTemplate !== 'function' ? ' data-label' : ''}>\n ${label}\n </span>\n\n </label>\n\n </div>\n\n </div>\n\n </div>\n\n `;\n }\n\n return result;\n }\n\n _renderSearch() {\n\n if (!this.showSearch) {\n\n return '';\n\n } else {\n\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n return `\n\n <div class=\"select-search\">\n\n <div class=\"select-search-input\">\n\n <input type=\"text\" name=\"select-search\" value=\"\" placeholder=\"${this.searchPlaceholder}\" tabindex=\"-1\">\n\n </div>\n\n <div class=\"select-search-icon\">\n\n <i class=\"${faNameSpace} fa-search icon\"></i>\n\n </div>\n\n </div>\n\n `;\n }\n }\n\n _renderFooter() {\n\n if (!this.showFooter) {\n\n return '';\n\n } else {\n\n return `\n\n <div class=\"select-footer\">\n\n <button class=\"btn btn-block btn-secondary\" type=\"button\" tabindex=\"-1\" data-select-close >\n ${this.btnCloseText}\n </button>\n\n </div>\n\n `;\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Select(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Select._jQueryInterface;\n $.fn[NAME].Constructor = Select;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Select._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n name: '',\n type: 'checkbox',\n labelTemplate: null,\n confirmCheck: null,\n confirmUncheck: null,\n setData: null,\n scrollContentHeight: 100,\n faPro: false,\n items: [],\n showSearch: false,\n showFooter: false,\n searchApi: false,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n onReset: null,\n onSearch: null,\n onSelect: null,\n buildScroll: null,\n searchPlaceholder: null,\n btnCloseText: null,\n debug: false,\n dynamicTitle: false,\n dynamicTitleDefault: '',\n dynamicTitleEmptyDefault: '',\n allowNoneOnRadioSelect: true,\n preventUncheck: false,\n showValidStateIcon: true,\n itemsToExclude: []\n }\n}\n\nexport default Select;","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolDropdown';\nconst DATA_KEY = 'plugin_coolDropdown';\n\nclass Dropdown extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.dropdown) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.dropdown, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n $.when(this.buildCache()).then(() => {\n this.buildScroll();\n this.bindEvents();\n this.onInit();\n });\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$el.addClass('dropdown-trigger');\n this.$container = this.$el.parent('.dropdown');\n this.id = 'dropdown-'+this.generateUUID();\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.offset = this.$el.data('offset') ? this.$el.data('offset') : this.opts.offset;\n this.minWidth = this.$el.data('minWidth') ? this.$el.data('minWidth') : this.opts.minWidth;\n this.scroll = this.$el.data('scroll') ? this.$el.data('scroll') : this.opts.scroll;\n this.scrollContentHeight = this.$el.data('scrollContentHeight') ? this.$el.data('scrollContentHeight') : this.opts.scrollContentHeight;\n this.positionObserver = this.$el.attr('data-position-observer') ? JSON.parse(this.$el.attr('data-position-observer')) : this.opts.positionObserver;\n this.closeOnItemClick = this.$el.data('closeOnItemClick') ? this.$el.data('closeOnItemClick') : this.opts.closeOnItemClick;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n this.contentOpen = false;\n\n if (this.$container.hasClass('dropup')) {\n this.placement = 'top';\n } else if (this.$container.hasClass('dropright')) {\n this.placement = 'right';\n } else if (this.$container.hasClass('dropbottom')) {\n this.placement = 'bottom';\n } else {\n this.placement = 'left';\n }\n\n if (typeof this.content === 'function') {\n\n let menuRight = this.opts.align === 'end' ? ' dropdown-menu-right' : '';\n\n this.$dropdown = $(`\n <div class=\"dropdown-menu${menuRight}\" id=\"${this.id}\">\n ${this.content}\n </div>\n `);\n\n $.when(this.$el.after(this.$dropdown)).then(() => {\n\n this.$scrollableContent = this.$dropdown.find('.dropdown-scrollable-content') ? this.$dropdown.find('.dropdown-scrollable-content') : false;\n this.$dropdown.hasClass('dropdown-menu-right') ? this.align = 'end' : this.align = 'start';\n this.$dropdownItem = this.$dropdown.find('.dropdown-item');\n\n if (this.minWidth) {\n this.$dropdown.css('min-width', this.minWidth+'px');\n }\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$dropdown);\n this.log(this.$scrollableContent);\n this.log('Id: '+this.id);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Offset: '+this.offset);\n this.log('Min width: '+this.minWidth);\n this.log('Content: '+this.content);\n this.log('Scroll: '+this.scroll);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n\n return true;\n });\n\n } else {\n\n this.$dropdown = this.$el.next('.dropdown-menu') ? this.$el.next('.dropdown-menu') : false;\n this.$dropdown.hasClass('dropdown-menu-right') ? this.align = 'end' : this.align = 'start';\n this.$scrollableContent = this.$dropdown.find('.dropdown-scrollable-content') ? this.$dropdown.find('.dropdown-scrollable-content') : false;\n this.$dropdownItem = this.$dropdown.find('.dropdown-item');\n\n if (this.minWidth) {\n this.$dropdown.css('min-width', this.minWidth+'px');\n }\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$dropdown);\n this.log(this.$scrollableContent);\n this.log('Id: '+this.id);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Offset: '+this.offset);\n this.log('Min width: '+this.minWidth);\n this.log('Content: '+this.opts.content);\n this.log('Scroll: '+this.scroll);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n\n return true;\n }\n }\n\n // Build scroll\n buildScroll() {\n\n if (this.opts.scroll && this.$scrollableContent.length) {\n\n this.$scrollableContent.css({\n 'max-height': this.scrollContentHeight+'px'\n });\n\n if (touchEvents()) {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n } else {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n this.scroll = new PerfectScrollbar(this.$scrollableContent[0], {\n wheelSpeed: 1,\n wheelPropagation: false,\n minScrollbarLength: 20\n });\n\n this.$scrollableContent.addClass('ps-show-rail-y');\n }\n }\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n let self = this;\n\n this.$el.on('click'+'.'+NAME, () => {\n\n if (this.contentOpen) {\n this.close();\n } else {\n this.show();\n }\n });\n\n this.$dropdownItem.on('click'+'.'+NAME, function() {\n\n if (self.closeOnItemClick) {\n self.close();\n }\n\n self.onItemClick(this);\n });\n\n $(document).on('touchstart click', (e) => {\n\n if (!this.$el.is(e.target) && !this.$dropdown.is(e.target) && this.$dropdown.has(e.target).length === 0 && this.contentOpen) {\n this.close();\n }\n });\n\n $(window).on('resize', debounce(() => {\n\n this.setPosition();\n this.onUpdate();\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof str === 'undefined' || str === null) {\n placement = this.placement;\n }\n\n let dropdownWidth = this.$dropdown.outerWidth(true);\n let dropdownHeight = this.$dropdown.outerHeight(true);\n let dropdownTriggerWidth = this.$el.outerWidth(true);\n let dropdownTriggerHeight = this.$el.outerHeight(true);\n let dropdownTriggerPosX = this.$el.position().left;\n let dropdownTriggerPosY = this.$el.position().top;\n let dropdownPosX = 0;\n let dropdownPosY = 0;\n let offsetX = 0;\n let offsetY = 0;\n\n if (placement === 'top') {\n\n if (this.align === 'end') {\n dropdownPosX = dropdownTriggerWidth - dropdownWidth;\n } else {\n dropdownPosX = dropdownTriggerPosX;\n }\n\n dropdownPosY = dropdownTriggerPosY - dropdownHeight;\n\n } else if (placement === 'right') {\n\n dropdownPosX = dropdownTriggerPosX + dropdownTriggerWidth;\n dropdownPosY = dropdownTriggerPosY;\n\n } else if (placement === 'bottom') {\n\n if (this.align === 'end') {\n dropdownPosX = dropdownTriggerWidth - dropdownWidth;\n } else {\n dropdownPosX = dropdownTriggerPosX;\n }\n\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight;\n\n } else if (placement === 'left') {\n\n dropdownPosX = dropdownTriggerPosX - dropdownWidth;\n dropdownPosY = dropdownTriggerPosY;\n }\n\n if (this.offset) {\n\n const offsets = this.offset.split(',');\n\n offsetX = offsets[0];\n offsetY = offsets[1];\n dropdownPosX += parseInt(offsetX, 10);\n dropdownPosY += parseInt(offsetY, 10);\n }\n\n if (this.positionObserver && this.$container.length > 0) {\n\n // this is not set during init so we have to fetch it\n // and let's assume that this containing parent fits and is inside\n // viewport\n let $containingParent = this.$container.parent();\n let index = 0;\n while (\n $containingParent.css('overflow-x') !== 'hidden' && \n $containingParent.css('overflow') !== 'hidden' &&\n ($containingParent.prop('tagName') || '').toLowerCase() !== 'body' &&\n index < 100\n ) {\n $containingParent = $containingParent.parent();\n\n if (!$containingParent.get(0)) {\n return;\n }\n\n ++index;\n }\n\n if (!$containingParent.get(0)) {\n return;\n }\n\n const containingBoundingRect = $containingParent.get(0).getBoundingClientRect();\n const containerBoundingRect = this.$container.get(0).getBoundingClientRect();\n\n if (containingBoundingRect.width < dropdownWidth) {\n this.$dropdown.css('max-width', containingBoundingRect.width);\n dropdownWidth = containingBoundingRect.width;\n } else {\n this.$dropdown.css('max-width', '');\n }\n\n if (containingBoundingRect.height < dropdownHeight) {\n this.$dropdown.css('max-height', containingBoundingRect.height);\n dropdownHeight = containingBoundingRect.height;\n } else {\n this.$dropdown.css('max-height', '');\n }\n\n const maxTop = Math.max(Math.abs(containingBoundingRect.y - containerBoundingRect.y), 0);\n const maxLeft = Math.max(Math.abs(containingBoundingRect.x - containerBoundingRect.x), 0);\n const maxRight = $containingParent.get(0).scrollWidth - (containerBoundingRect.x + containerBoundingRect.width);\n const maxBottom = $containingParent.get(0).scrollHeight - (containerBoundingRect.y + (placement === 'dropbottom' ? containerBoundingRect.height : 0));\n\n if (maxLeft < dropdownWidth && dropdownPosX < dropdownTriggerPosX) {\n dropdownPosX = dropdownTriggerPosX;\n\n // would be on top of the trigger\n if (dropdownTriggerPosY + dropdownTriggerHeight > dropdownPosY) {\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + (offsetY > 0 ? offsetY : 0);\n }\n }\n\n if (maxRight < dropdownWidth && dropdownPosX + dropdownWidth > dropdownTriggerPosX + dropdownTriggerWidth) {\n dropdownPosX = dropdownTriggerPosX + dropdownTriggerWidth - dropdownWidth;\n\n if (dropdownTriggerPosY + dropdownTriggerHeight > dropdownPosY) {\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + (offsetY > 0 ? offsetY : 0);\n }\n }\n\n if (dropdownPosY < dropdownTriggerPosY && maxTop < dropdownHeight) {\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + offsetY;\n }\n\n if (dropdownPosY >= dropdownTriggerPosY && maxBottom < dropdownHeight) {\n if (dropdownPosX >= dropdownTriggerPosX + dropdownTriggerWidth || dropdownTriggerPosX >= dropdownPosX + dropdownWidth) {\n dropdownPosY = dropdownTriggerPosY - (dropdownHeight - maxBottom);\n } else {\n dropdownPosY = dropdownTriggerPosY - dropdownHeight - offsetY\n }\n }\n }\n\n this.$dropdown.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+Math.round(dropdownPosX)+'px, '+Math.round(dropdownPosY)+'px, 0px)',\n 'will-change': 'transform'\n });\n\n this.log('Dropdown trigger width: '+dropdownTriggerWidth+'px');\n this.log('Dropdown trigger height: '+dropdownTriggerHeight+'px');\n this.log('Dropdown trigger position x: '+dropdownTriggerPosX+'px');\n this.log('Dropdown trigger position Y: '+dropdownTriggerPosY+'px');\n this.log('Dropdown width: '+dropdownWidth+'px');\n this.log('Dropdown height: '+dropdownHeight+'px');\n this.log('Dropdown position x: '+dropdownPosX+'px');\n this.log('Dropdown position y: '+dropdownPosY+'px');\n }\n\n // Show\n show() {\n\n if (!this.$dropdown || this.$dropdown.hasClass('show')) {\n return;\n }\n\n this.setPosition();\n\n if (this.animation) {\n\n this.$dropdown.attr('x-placement', this.placement+'-'+this.align);\n this.$dropdown.addClass(this.animationSpeed);\n this.$dropdown.animateCss(this.animationIn);\n this.$dropdown.addClass('show');\n this.$dropdown.attr('id', this.id);\n this.$el.attr('data-dropdown', this.id);\n\n } else {\n\n this.$dropdown.attr('x-placement', this.placement+'-'+this.align);\n this.$dropdown.addClass('show');\n this.$dropdown.attr('id', this.id);\n this.$el.attr('data-dropdown', this.id);\n }\n\n if (this.opts.scroll && this.scroll && this.$scrollableContent.length) {\n this.$scrollableContent[0].scrollTop = 1;\n this.$scrollableContent[0].scrollTop = 0;\n }\n\n this.contentOpen = true;\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.$dropdown) {\n return;\n }\n\n if (this.animation && !this.$dropdown.hasClass('animated')) {\n\n this.$dropdown.animateCss(this.animationOut, () => {\n this.$dropdown.removeClass('show');\n this.$el.removeAttr('data-dropdown');\n });\n\n } else {\n\n this.$dropdown.removeClass('show');\n this.$el.removeAttr('data-dropdown');\n }\n\n this.contentOpen = false;\n this.onClose();\n }\n\n // Item callback\n onItemClick(el) {\n\n let onItemClick = this.opts.onItemClick;\n\n if (typeof onItemClick === 'function') {\n\n onItemClick.call(el);\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Dropdown._jQueryInterface;\n $.fn[NAME].Constructor = Dropdown;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Dropdown._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n animation: true,\n animationIn: 'zoomIn',\n animationOut: 'zoomOut',\n animationSpeed: 'fastest',\n offset: null,\n minWidth: null,\n align: 'start',\n closeOnItemClick: true,\n positionObserver: true,\n content: false,\n scroll: true,\n scrollContentHeight: 100,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n onItemClick: null,\n debug: false\n }\n}\n\nexport default Dropdown;","import 'jquery';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolTooltip';\nconst DATA_KEY = 'plugin_coolTooltip';\n\nclass Tooltip extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.tooltip) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.tooltip, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache();\n this.bindEvents();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$container = this.$el.data('container') ? $(this.$el.data('container')) : $(this.opts.container);\n this.id = 'tooltip-'+this.generateUUID();\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.placement = this.$el.data('placement') ? this.$el.data('placement') : this.opts.placement;\n this.placementChanged = false;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n this.$el.on('mouseenter'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('mouseleave'+'.'+NAME, () => {\n\n this.close();\n });\n\n this.$el.on('destroyed'+'.'+NAME, () => {\n\n this.close();\n });\n\n $(window).on('resize', debounce(() => {\n\n if (this.$tooltip) {\n this.setPosition();\n this.onUpdate();\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Build tooltip\n buildTooltip() {\n\n this.$tooltip = $(`\n\n <div class=\"tooltip\" role=\"tooltip\" id=\"${this.id}\">\n\n <div class=\"arrow\"></div>\n\n <div class=\"tooltip-inner\">${this.content}</div>\n\n </div>\n\n `);\n\n this.$container.append(this.$tooltip);\n this.$arrow = this.$tooltip.find('.arrow');\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$tooltip);\n this.log(this.$arrow);\n this.log('Id: '+this.id);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Placement: '+this.placement);\n this.log('Content: '+this.content);\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof placement === 'undefined' || placement === null) {\n placement = this.placement;\n }\n\n this.$tooltip.addClass('tooltip-'+placement);\n\n let containerInnerWidth = this.$container.innerWidth();\n let containerInnerHeight = this.$container.innerHeight();\n let tooltipWidth = this.$tooltip.outerWidth(true);\n let tooltipHeight = this.$tooltip.outerHeight(true);\n let tooltipTriggerWidth = this.$el.outerWidth();\n let tooltipTriggerHeight = this.$el.outerHeight();\n let tooltipTriggerPosX = this.$el.offset().left;\n let tooltipTriggerPosY = this.$el.offset().top;\n let arrowWidth = this.$arrow.outerWidth(true);\n let arrowHeight = this.$arrow.outerHeight(true);\n let arrowPos;\n let tooltipPosX;\n let tooltipPosY;\n\n if (placement === 'top') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX - (tooltipWidth - tooltipTriggerWidth) / 2);\n tooltipPosY = Math.round(tooltipTriggerPosY - tooltipHeight);\n arrowPos = Math.round(tooltipWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX + tooltipTriggerWidth);\n tooltipPosY = Math.round(tooltipTriggerPosY - (tooltipHeight - tooltipTriggerHeight) / 2);\n arrowPos = Math.round(tooltipHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX - (tooltipWidth - tooltipTriggerWidth) / 2);\n tooltipPosY = Math.round(tooltipTriggerPosY + tooltipTriggerHeight);\n arrowPos = Math.round(tooltipWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX - tooltipWidth);\n tooltipPosY = Math.round(tooltipTriggerPosY - (tooltipHeight - tooltipTriggerHeight) / 2);\n arrowPos = Math.round(tooltipHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$tooltip.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+tooltipPosX+'px, '+tooltipPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n // Correct placement if tooltip goes outside of container\n let tooltipOverflowCount = 0;\n let tooltipPosition = {\n left: this.$tooltip.position().left,\n top: this.$tooltip.position().top,\n right: containerInnerWidth - (this.$tooltip.position().left + tooltipWidth),\n bottom: containerInnerHeight - (this.$tooltip.position().top + tooltipHeight),\n };\n let tooltipOverflow = {\n left: false,\n top: false,\n right: false,\n bottom: false\n };\n\n if (tooltipPosition.right < 0) {\n\n tooltipOverflow.right = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from right');\n }\n\n if (tooltipPosition.left < 0) {\n\n tooltipOverflow.left = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from left');\n }\n\n if (tooltipPosition.bottom < 0) {\n\n tooltipOverflow.bottom = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from bottom');\n }\n\n if (tooltipPosition.top < 0) {\n\n tooltipOverflow.top = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from top');\n }\n\n if (tooltipOverflowCount > 0) {\n\n if (!this.placementChanged && tooltipOverflow.left && tooltipPosition.right > tooltipWidth) {\n\n this.log('Changing tooltip placement to right');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('right');\n\n } else if (!this.placementChanged && tooltipOverflow.top && tooltipPosition.top > tooltipHeight) {\n\n this.log('Changing tooltip placement to bottom');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n\n } else if (!this.placementChanged && tooltipOverflow.right && tooltipPosition.left > tooltipWidth) {\n\n this.log('Changing tooltip placement to left');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('left');\n\n } else if (!this.placementChanged && tooltipOverflow.bottom && tooltipPosition.top > tooltipHeight) {\n\n this.log('Changing tooltip placement to top');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else if (!this.placementChanged && (placement !== 'top' || placement !== 'bottom') && (tooltipOverflow.left || tooltipOverflow.right)) {\n\n if (tooltipPosition.top > tooltipPosition.bottom) {\n\n this.log('Changing tooltip placement to top');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else {\n\n this.log('Changing tooltip placement to bottom');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n }\n\n } else {\n\n this.fixTooltipPosition = true;\n }\n\n if (this.fixTooltipPosition) {\n\n this.log('Adjusting tooltip size or position in order to tooltip fit in the container');\n\n if (tooltipOverflow.left) {\n\n this.log('Tooltip overflowing from left');\n\n let overflowAmount = Math.abs(tooltipPosition.left);\n let excludePlacements = ['top', 'bottom'];\n\n if ((tooltipTriggerPosX >= tooltipPosX + overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Tooltip adjusting width');\n\n tooltipWidth -= overflowAmount;\n tooltipPosX += overflowAmount;\n\n } else {\n\n this.log('Tooltip adjusting position x');\n\n tooltipPosX += overflowAmount;\n arrowPos -= overflowAmount;\n }\n }\n\n if (tooltipOverflow.top) {\n\n this.log('Tooltip overflowing from top');\n\n let overflowAmount = Math.abs(tooltipPosition.top);\n\n this.log('Tooltip adjusting position y');\n\n tooltipPosY += overflowAmount;\n arrowPos -= overflowAmount;\n }\n\n if (tooltipOverflow.right) {\n\n this.log('Tooltip overflowing from right');\n\n let overflowAmount = Math.abs(tooltipPosition.right);\n let excludePlacements = ['top', 'bottom'];\n\n if ((tooltipTriggerPosX <= tooltipPosX - overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Tooltip adjusting width');\n\n tooltipWidth -= overflowAmount;\n\n } else {\n\n this.log('Tooltip adjusting position x');\n\n tooltipPosX -= overflowAmount;\n arrowPos += overflowAmount;\n }\n }\n\n if (tooltipOverflow.bottom) {\n\n this.log('Tooltip overflowing from bottom');\n\n let overflowAmount = Math.abs(tooltipPosition.bottom);\n\n this.log('Tooltip adjusting position y');\n\n tooltipPosY -= overflowAmount;\n arrowPos += overflowAmount;\n }\n\n if (placement === 'top') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$tooltip.css({\n width: tooltipWidth,\n transform: 'translate3d('+tooltipPosX+'px, '+tooltipPosY+'px, 0px)'\n });\n\n this.fixTooltipPosition = false;\n\n this.log('Tooltip placement changed: '+this.placementChanged);\n this.log('Tooltip container inner width: '+containerInnerWidth+'px');\n this.log('Tooltip container inner height: '+containerInnerHeight+'px');\n this.log('Tooltip trigger width: '+tooltipTriggerWidth+'px');\n this.log('Tooltip trigger height: '+tooltipTriggerHeight+'px');\n this.log('Tooltip trigger position x: '+tooltipTriggerPosX+'px');\n this.log('Tooltip trigger position Y: '+tooltipTriggerPosY+'px');\n this.log('Tooltip width: '+tooltipWidth+'px');\n this.log('Tooltip height: '+tooltipHeight+'px');\n this.log('Tooltip position x: '+tooltipPosX+'px');\n this.log('Tooltip position y: '+tooltipPosY+'px');\n this.log('Tooltip position left: '+tooltipPosition.left+'px');\n this.log('Tooltip position top: '+tooltipPosition.top+'px');\n this.log('Tooltip position right: '+tooltipPosition.right+'px');\n this.log('Tooltip position bottom: '+tooltipPosition.bottom+'px');\n }\n\n } else {\n\n this.log('Tooltip placement changed: '+this.placementChanged);\n this.log('Tooltip container inner width: '+containerInnerWidth+'px');\n this.log('Tooltip container inner height: '+containerInnerHeight+'px');\n this.log('Tooltip trigger width: '+tooltipTriggerWidth+'px');\n this.log('Tooltip trigger height: '+tooltipTriggerHeight+'px');\n this.log('Tooltip trigger position x: '+tooltipTriggerPosX+'px');\n this.log('Tooltip trigger position Y: '+tooltipTriggerPosY+'px');\n this.log('Tooltip width: '+tooltipWidth+'px');\n this.log('Tooltip height: '+tooltipHeight+'px');\n this.log('Tooltip position x: '+tooltipPosX+'px');\n this.log('Tooltip position y: '+tooltipPosY+'px');\n this.log('Tooltip position left: '+tooltipPosition.left+'px');\n this.log('Tooltip position top: '+tooltipPosition.top+'px');\n this.log('Tooltip position right: '+tooltipPosition.right+'px');\n this.log('Tooltip position bottom: '+tooltipPosition.bottom+'px');\n }\n }\n\n // Show\n show() {\n\n if (this.$tooltip) {\n return;\n }\n\n this.buildTooltip();\n this.setPosition();\n\n if (this.animation) {\n\n this.$tooltip.addClass(this.animationSpeed);\n this.$tooltip.animateCss(this.animationIn);\n this.$tooltip.addClass('show');\n this.$tooltip.attr('id', this.id);\n this.$el.attr('data-tooltip', this.id);\n\n } else {\n\n this.$tooltip.addClass('show');\n this.$tooltip.attr('id', this.id);\n this.$el.attr('data-tooltip', this.id);\n }\n\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.$tooltip) {\n return;\n }\n\n if (this.animation && !this.$tooltip.hasClass('animated')) {\n\n this.$tooltip.animateCss(this.animationOut, () => {\n\n this.$tooltip.remove();\n this.$el.removeAttr('data-tooltip');\n this.$tooltip = null;\n this.placementChanged = false;\n\n this.onClose();\n });\n\n } else {\n\n this.$tooltip.remove();\n this.$el.removeAttr('data-tooltip');\n this.$tooltip = null;\n this.placementChanged = false;\n\n this.onClose();\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Tooltip(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Tooltip._jQueryInterface;\n $.fn[NAME].Constructor = Tooltip;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Tooltip._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n container: 'body',\n animation: false,\n animationIn: 'fadeIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n placement: 'bottom',\n content: '',\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n }\n}\n\nexport default Tooltip;","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolSectionTabs';\nconst DATA_KEY = 'plugin_coolSectionTabs';\n\nclass SectionTabs extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.sectionTabs) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.sectionTabs, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache();\n this.bindEvents();\n this.checkForChanges();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$dropdownContainer = this.$el.find('.dropdown-container');\n this.$dropdownList = this.$el.find('.dropdown-list');\n this.tabsCount = this.$el.find('> .tab-item').length;\n this.tabs = this.$el.find('> .tab-item:visible');\n\n $.each(this.tabs, function(i, el) {\n $(el).data('width', $(el).outerWidth(true));\n });\n\n this.log(this.$el);\n this.log(this.$dropdownContainer);\n this.log(this.$dropdownList);\n this.log(this.tabsCount);\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n $(window).on('resize', debounce(() => {\n this.checkForChanges();\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+this._name);\n }\n\n // Move to list\n moveToList(el) {\n\n $(el).insertBefore(this.$dropdownContainer);\n\n this.checkForChanges();\n }\n\n // Move to dropdown\n moveToDropdown(el) {\n\n $(el).appendTo(this.$dropdownList);\n\n this.checkForChanges();\n }\n\n // Overflow status\n overflowStatus() {\n\n if (this.$el[0].offsetWidth < this.$el[0].scrollWidth) {\n return true;\n } else {\n return false;\n }\n }\n\n // CheckForChanges\n checkForChanges() {\n\n let dropdownItems = this.$dropdownList.children();\n let moveableTabs = this.$el.find('> .tab-item').not(this.$dropdownContainer);\n let tabs = this.$el.find('> .tab-item:visible');\n let usedSpace = 0;\n\n $.each(tabs, function(i, el) {\n usedSpace += $(el).outerWidth(true);\n });\n\n let freeSpace = this.$el[0].offsetWidth - usedSpace;\n\n if (dropdownItems.length > 0) {\n\n if (!this.$dropdownContainer.hasClass('visible')) {\n this.$dropdownContainer.addClass('visible');\n }\n\n } else {\n\n if (this.$dropdownContainer.hasClass('visible')) {\n this.$dropdownContainer.removeClass('visible');\n }\n }\n\n if (this.overflowStatus() == true) {\n\n if (moveableTabs.length > 0) {\n this.moveToDropdown(moveableTabs.last());\n }\n\n } else {\n\n if (dropdownItems.length > 0) {\n\n if (freeSpace > dropdownItems.last().data('width')) {\n this.moveToList(dropdownItems.last());\n }\n }\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new SectionTabs(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = SectionTabs._jQueryInterface;\n $.fn[NAME].Constructor = SectionTabs;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return SectionTabs._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n debug: false\n }\n}\n\nexport default SectionTabs;\n","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolCollapse';\nconst DATA_KEY = 'plugin_coolCollapse';\n\nclass Collapse extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.collapse) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.dialog, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache()\n this.bindEvents();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$target = this.$el.data('target') ? $(document).find(this.$el.data('target')) : $(document).find(this.opts.target);\n this.expanded = this.$el.attr('aria-expanded') == 'true' ? true : false;\n\n if (this.$target.length) {\n\n this.targetHeight = this.$target.height();\n this.$container = this.$target.closest('.section-collapse');\n this.$indicator = $(document).find('[data-collapse-indicator=\"' + this.$el.data('target') + '\"]');\n\n } else {\n\n this.$target = $(this.$el).parent().find('.collapse');\n this.targetHeight = this.$target.height();\n this.$container = this.$target.closest('.section-collapse');\n this.$indicator = $(this.$el).parent().find('[data-collapse-indicator]');\n }\n\n if (this.expanded) {\n this.$target.css('height', 'auto');\n }\n\n this.log(this.$el);\n this.log(this.$target);\n this.log(this.$container);\n this.log(this.$indicator);\n this.log('Expanded: '+this.expanded);\n this.log('Target height: '+this.targetHeight+'px');\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n this.$el.on('click'+'.'+this.name, (e) => {\n\n if (this.expanded) {\n this.close();\n } else {\n this.show();\n }\n });\n\n $(window).on('resize', debounce(() => {\n\n if (this.$target.length) {\n\n this.targetHeight = this.$target.height();\n this.log('Target height: '+this.targetHeight+'px');\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+this.name);\n }\n\n // Which transition\n whichTransitionEvent() {\n\n let el = document.createElement('text-transition');\n let transEndEventNames = {\n 'WebkitTransition': 'webkitTransitionEnd', // Saf 6, Android Browser\n 'MozTransition': 'transitionend', // only for FF < 15\n 'transition': 'transitionend' // IE10, Opera, Chrome, FF 15+, Saf 7+\n };\n\n for (let t in transEndEventNames) {\n\n if (el.style[t] !== undefined) {\n return transEndEventNames[t];\n }\n }\n }\n\n // Show\n show() {\n\n // Update target height if something is added to dom which causes height to change\n if (this.targetHeight !== this.$target.height()) {\n this.targetHeight = this.$target.height();\n }\n\n this.$target.removeClass('collapse show');\n this.$target.addClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', true);\n }\n\n if (this.$container.length) {\n this.$container.addClass('show');\n }\n\n this.$target.css('height');\n this.$target.css('height', this.targetHeight);\n\n if (this.$indicator.length) {\n this.$indicator.addClass('show');\n }\n\n this.$target.one(this.whichTransitionEvent(), () => {\n\n this.$target.removeClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', false);\n }\n\n this.$target.removeAttr('style');\n this.$target.addClass('collapse show');\n this.$el.attr('aria-expanded', true);\n this.$target.css('height', 'auto');\n this.expanded = true;\n });\n\n this.onShow();\n }\n\n // Close\n close() {\n\n this.$target.removeClass('collapse show');\n this.$target.addClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', true);\n }\n\n if (this.$container.length) {\n this.$container.removeClass('show');\n }\n\n this.$target.css('height', this.$target.height());\n\n setTimeout(() => {\n this.$target.css('height', 0);\n }, 10);\n\n if (this.$indicator.length && this.$indicator.hasClass('show')) {\n this.$indicator.removeClass('show');\n }\n\n this.$target.one(this.whichTransitionEvent(), () => {\n\n this.$target.removeClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', false);\n }\n\n this.$target.removeAttr('style');\n this.$target.addClass('collapse');\n this.$el.attr('aria-expanded', false);\n this.expanded = false;\n\n // Update target height if something is added to dom which causes height to change\n if (this.targetHeight !== this.$target.height()) {\n this.targetHeight = this.$target.height();\n }\n });\n\n this.onClose();\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Collapse(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Collapse._jQueryInterface;\n $.fn[NAME].Constructor = Collapse;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Collapse._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n target: null,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n }\n}\n\nexport default Collapse;","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolToast';\nconst DATA_KEY = 'plugin_coolToast';\n\nclass Toast {\n\n constructor(container, opts) {\n\n this.settings = {};\n\n if (window.Cool.settings.toast) {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, window.Cool.settings.toast, opts);\n\n } else {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, opts);\n }\n\n this.container = container;\n this.$container = $(this.container);\n this.debug = this.settings.debug;\n this.faPro = this.settings.faPro;\n this.toasts = [];\n this.queue = [];\n this.processingQueue = false;\n this.onInitialize = this.settings.onInitialize;\n this.onDestroy = this.settings.onDestroy;\n }\n\n // Add item to queue\n addQueue(toast) {\n\n this.queue.push(toast);\n\n if (this.processingQueue) {\n return;\n }\n\n return this.processQueue();\n }\n\n // Process queue\n processQueue() {\n\n if (this.processingQueue) {\n\n this.queue.shift();\n }\n\n if (!this.queue.length) {\n\n this.processingQueue = false;\n return;\n }\n\n this.processingQueue = true;\n\n return this.show(this.queue[0]);\n }\n\n // Init toast\n init(opts) {\n\n let settings = {};\n\n $.extend(true, settings, this.settings, opts);\n\n let toast = this.buildToast(settings);\n\n this.addQueue(toast);\n this.onInit(toast);\n\n return toast;\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.$container.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Build toast\n buildToast(settings) {\n\n let toast = {\n uuid: 'toast-'+this.generateUUID(),\n placement: settings.placement,\n placementX: settings.placementX,\n placementY: settings.placementY,\n offset: settings.offset,\n animation: settings.animation,\n animationIn: settings.animationIn,\n animationOut: settings.animationOut,\n animationSpeed: settings.animationSpeed,\n dismiss: settings.dismiss,\n size: settings.size,\n header: settings.header,\n theme: settings.theme,\n title: settings.title,\n content: settings.content,\n template: settings.template,\n maxBodyHeight: settings.maxBodyHeight,\n onInit: settings.onInit,\n onShow: settings.onShow,\n onClose: settings.onClose\n };\n\n if (typeof toast.content === 'function') {\n\n toast.$el = $(toast.template());\n\n } else {\n\n toast.$el = $(this._renderTemplate(toast));\n }\n\n toast.$inner = toast.$el.find('.toast-inner');\n toast.$closeBtn = toast.$el.find('[data-toast-close]');\n\n this.log(toast);\n this.toasts.push(toast);\n\n return toast;\n }\n\n // Bind events that trigger methods\n bindEvents(toast) {\n\n let self = this;\n\n toast.$el.on('click', '[data-toast-close]', () => {\n\n if (toast.$el) {\n self.close(toast);\n }\n });\n\n $(window).on('resize', debounce(() => {\n\n if (toast.$el) {\n this.setPosition(toast);\n }\n }, 250));\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Set positions\n setPosition(toast, placement, placementY, placementX) {\n\n if (typeof placementY === 'undefined' || placementY === null) {\n placementY = toast.placementY;\n }\n\n if (typeof placementX === 'undefined' || placementX === null) {\n placementX = toast.placementX;\n }\n\n if (!placementX || !placementY) {\n placement = toast.placement\n }\n\n if (toast.offset) {\n\n let offsets = toast.offset.split(',')\n let offsetX = parseInt(offsets[0], 10);\n let offsetY = parseInt(offsets[1], 10);\n }\n\n let toastWidth = toast.$el.outerWidth(true);\n let toastHeight = toast.$el.outerHeight(true);\n let toastPosX;\n let toastPosY;\n\n if (placement) {\n\n if (placement === 'top-left') {\n\n toastPosX = 0;\n toastPosY = 0;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += 30;\n toastPosY += 30;\n }\n\n } else if (placement === 'top-center') {\n\n toastPosX = (this.$container.width() / 2) - toastWidth / 2;\n toastPosY = 0;\n\n this.log(this.$container.width);\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n } else {\n toastPosY += 30;\n }\n\n } else if (placement === 'top-right') {\n\n toastPosX = this.$container.width() - toastWidth;\n toastPosY = 0;\n\n if (toast.offset) {\n toastPosX += -offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += -30;\n toastPosY += 30;\n }\n\n } else if (placement === 'center-left') {\n\n toastPosX = 0;\n toastPosY = (this.$container.height() / 2) - toastHeight / 2;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += 30;\n }\n\n } else if (placement === 'center-center') {\n\n toastPosX = (this.$container.width() / 2) - toastWidth / 2;\n toastPosY = (this.$container.height() / 2) - toastHeight / 2;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n }\n\n } else if (placement === 'center-right') {\n\n toastPosX = this.$container.width() - toastWidth;\n toastPosY = (this.$container.height() / 2) - toastHeight / 2;\n\n if (toast.offset) {\n toastPosX += -offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += -30;\n }\n\n } else if (placement === 'bottom-left') {\n\n toastPosX = 0;\n toastPosY = this.$container.height() - toastHeight;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += -offsetY;\n } else {\n toastPosX += 30;\n toastPosY += -30;\n }\n\n } else if (placement === 'bottom-center') {\n\n toastPosX = (this.$container.width() / 2) - toastWidth / 2;\n toastPosY = this.$container.height() - toastHeight;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += -offsetY;\n } else {\n toastPosY += -30;\n }\n\n } else if (placement === 'bottom-right') {\n\n toastPosX = this.$container.width() - toastWidth\n toastPosY = this.$container.height() - toastHeight;\n\n if (toast.offset) {\n toastPosX += -offsetX;\n toastPosY += -offsetY;\n } else {\n toastPosX += -30;\n toastPosY += -30;\n }\n }\n\n } else {\n\n toastPosX = placementX;\n toastPosY = placementY;\n }\n\n toast.$el.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+toastPosX+'px, '+toastPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n this.log('Toast width: '+toastWidth+'px');\n this.log('Toast height: '+toastHeight+'px');\n this.log('Toast position Y: '+toastPosX+'px');\n this.log('Toast position x: '+toastPosY+'px');\n }\n\n // Show\n show(toast) {\n\n this.$container.append(toast.$el);\n this.bindEvents(toast);\n this.setPosition(toast);\n\n if (toast.animation) {\n\n toast.$el.addClass('show');\n toast.$inner.addClass(toast.animationSpeed);\n toast.$inner.animateCss(toast.animationIn);\n\n } else {\n\n toast.$el.addClass('show');\n }\n\n if (toast.dismiss) {\n\n setTimeout(() => {\n this.close(toast);\n }, toast.dismiss * 1000);\n }\n\n this.onShow(toast);\n }\n\n // Close\n close(toast) {\n\n if (toast.animation && !toast.$inner.hasClass('animated')) {\n\n toast.$el.removeClass('show');\n toast.$inner.animateCss(toast.animationOut, () => {\n\n toast.$el.remove();\n\n this.toasts = $.grep(this.toasts, function(item) {\n return item.uuid != toast.uuid;\n });\n\n this.processQueue();\n this.onClose(toast);\n });\n\n } else {\n\n toast.$el.remove();\n\n this.toasts = $.grep(this.toasts, function(item) {\n return item.uuid != toast.uuid;\n });\n\n this.processQueue();\n this.onClose(toast);\n }\n }\n\n // Initialize callback\n onInitialize() {\n\n let onInitialize = this.onInitialize;\n\n if (typeof onInitialize === 'function') {\n\n onInitialize.call(this.container);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this.container);\n }\n }\n\n // Init callback\n onInit(toast) {\n\n let onInit = toast.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(toast);\n }\n }\n\n // Show callback\n onShow(toast) {\n\n let onShow = toast.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(toast);\n }\n }\n\n // Close callback\n onClose(toast) {\n\n let onClose = toast.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(toast);\n }\n }\n\n // Debug log\n log(...args) {\n\n if (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n console.log(...args);\n }\n }\n }\n\n // Render template\n _renderTemplate(toast) {\n\n let faNameSpace = this.faPro ? 'far' : 'fas';\n let content = '';\n let header = '';\n let body = '';\n let bodyCloseBtn = '';\n\n if (typeof toast.content === 'function') {\n\n content = toast.content();\n\n } else {\n\n content = toast.content;\n }\n\n if (toast.header) {\n\n header = `\n <div class=\"toast-header\">\n\n <span>${toast.title}</span>\n\n <button type=\"button\" data-toast-close>\n <i class=\"${faNameSpace} fa-times icon\"></i>\n </button>\n\n </div>\n `;\n\n } else {\n\n bodyCloseBtn = `\n <button type=\"button\" data-toast-close>\n\n <i class=\"${faNameSpace} fa-times icon\"></i>\n\n </button>\n `;\n }\n\n body = `\n <div class=\"toast-body\">\n\n <span>${content}</span>\n ${bodyCloseBtn}\n\n </div>\n `;\n\n return `\n <div class=\"toast toast-${toast.size} toast-${toast.theme}\" role=\"alert\" id=\"${toast.uuid}\">\n\n <div class=\"toast-inner\">\n\n ${header}\n ${body}\n\n </div>\n\n </div>\n `;\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Toast._jQueryInterface;\n $.fn[NAME].Constructor = Toast;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Toast._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n title: '',\n content: '',\n template: '',\n theme: 'dark',\n placement: 'bottom-center',\n placementX: null,\n placementY: null,\n animation: true,\n animationIn: 'slideInUp',\n animationOut: 'slideOutDown',\n animationSpeed: 'faster',\n offset: null,\n size: null,\n dismiss: 3,\n header: false,\n faPro: false,\n debug: false,\n onInitialize: null,\n onDestroy: null,\n onInit: null,\n onDestroy: null,\n onShow: null,\n onClose: null\n }\n}\n\nexport default Toast;","import 'jquery';\nimport { debounce, touchEvents } from './util/index';\n\nconst NAME = 'coolDialog';\nconst DATA_KEY = 'plugin_coolDialog';\n\nclass Dialog {\n\n constructor(container, opts) {\n\n this.settings = {};\n\n if (window.Cool.settings.dialog) {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, window.Cool.settings.dialog, opts);\n\n } else {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, opts);\n }\n\n this.container = container;\n this.$container = $(this.container);\n this.debug = this.settings.debug;\n this.faPro = this.settings.faPro;\n this.dialogs = [];\n this.onInitialize = this.settings.onInitialize;\n this.onDestroy = this.settings.onDestroy;\n }\n\n // Init dialog\n init(opts) {\n\n let settings = {};\n\n $.extend(true, settings, this.settings, opts);\n\n let dialog = this.buildDialog(settings);\n\n this.show(dialog);\n this.bindEvents(dialog);\n this.onInit(dialog);\n\n return dialog;\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.$container.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Build dialog\n buildDialog(settings) {\n\n let self = this;\n let dialog = {\n uuid: 'dialog-'+this.generateUUID(),\n title: settings.title,\n template: settings.template,\n body: settings.body,\n footer: settings.footer,\n size: settings.size,\n classes: settings.classes,\n centered: settings.centered,\n backdrop: settings.backdrop,\n preventScroll: settings.preventScroll,\n closeBtn: settings.closeBtn,\n animation: settings.animation,\n animationIn: settings.animationIn,\n animationOut: settings.animationOut,\n animationSpeed: settings.animationSpeed,\n callbacks: settings.callbacks,\n maxBodyHeight: settings.maxBodyHeight,\n overflowVisible: settings.overflowVisible,\n actions: settings.actions,\n onInit: settings.onInit,\n onShow: settings.onShow,\n onClose: settings.onClose\n };\n\n if (dialog.maxBodyHeight == null) {\n\n dialog.maxBodyHeight = window.innerHeight - 200;\n }\n\n if (typeof dialog.template === 'function') {\n\n dialog.$el = $(dialog.template());\n\n } else {\n\n dialog.$el = $(this._renderTemplate(dialog));\n }\n\n dialog.show = function() {\n self.show(dialog);\n };\n\n dialog.close = function() {\n self.close(dialog);\n };\n\n this.log(dialog);\n this.dialogs.push(dialog);\n\n return dialog;\n }\n\n // Bind events that trigger methods\n bindEvents(dialog) {\n\n let self = this;\n\n dialog.$el.on('click', '[data-dialog-close]', function (e) {\n\n dialog.$el.trigger('dialog.close');\n\n if (typeof dialog.callbacks.close === 'function') {\n\n dialog.callbacks.close.call(self, function () {\n self.close(dialog)\n }, dialog);\n\n } else {\n\n self.close(dialog);\n }\n });\n\n dialog.$el.on('click', '[data-dialog-remove]', function (e) {\n\n dialog.$el.trigger('dialog.remove');\n\n if (typeof dialog.callbacks.remove === 'function') {\n\n dialog.callbacks.remove.call(self, function () {\n self.close(dialog)\n }, dialog);\n }\n });\n\n dialog.$el.on('click', '[data-dialog-confirm]', debounce(function (e) {\n\n dialog.$el.trigger('dialog.close');\n\n if (typeof dialog.callbacks.confirm === 'function') {\n\n dialog.callbacks.confirm.call(self, function () {\n self.close(dialog)\n }, dialog);\n\n } else {\n\n self.close(dialog);\n }\n }));\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Show\n show(dialog) {\n\n if (!this.$container.hasClass('has-dialogs')) {\n this.$container.addClass('has-dialogs');\n }\n\n if (dialog.preventScroll && !this.$container.hasClass('dialog-prevent-scroll')) {\n this.$container.addClass('dialog-prevent-scroll');\n }\n\n if (this.dialogs.length > 1) {\n\n let $prevDialog = $(this.dialogs).eq(-2)[0].$el;\n let zIndex = parseInt($prevDialog.css('z-index'), 10) + 1;\n\n dialog.$el.css('z-index', zIndex);\n\n $prevDialog.css({\n 'transition': 'opacity 0.3s',\n 'opacity': 0,\n 'visibility': 'visible'\n });\n }\n\n if (dialog.backdrop && $('.dialog-backdrop').length < 1) {\n\n this.$container.append('<div class=\"dialog-backdrop\"></div>');\n\n let checkForBackdrop = setInterval(() => {\n\n if (this.dialogs.length == 0 && $('.dialog-backdrop').length) {\n\n $('.dialog-backdrop').remove();\n clearInterval(checkForBackdrop);\n }\n\n }, 100);\n }\n\n this.$container.append(dialog.$el);\n\n if (dialog.animation) {\n dialog.$el.find('.dialog-content').addClass(dialog.animationSpeed).animateCss(dialog.animationIn);\n }\n\n this.onShow(dialog);\n }\n\n // Close\n close(dialog) {\n\n let $prevDialog = null;\n\n if (this.dialogs.length > 1) {\n $prevDialog = $(this.dialogs).eq(-2)[0].$el;\n }\n\n if ($('.dialog[data-dialog-backdrop=\"true\"]').length === 0 && $('.dialog-backdrop').length) {\n $('.dialog-backdrop').remove();\n }\n\n if (dialog.animation) {\n\n dialog.$el.find('.dialog-content').animateCss(dialog.animationOut, () => {\n\n dialog.$el.remove();\n\n this.dialogs = $.grep(this.dialogs, function(item) {\n return item.uuid != dialog.uuid;\n });\n\n if (this.dialogs.length == 0) {\n\n this.$container.removeClass('has-dialogs');\n\n if (this.$container.hasClass('dialog-prevent-scroll')) {\n this.$container.removeClass('dialog-prevent-scroll');\n }\n\n } else {\n\n if ($prevDialog) {\n $prevDialog.css('opacity', 1);\n }\n }\n });\n\n } else {\n\n dialog.$el.remove();\n\n this.dialogs = $.grep(this.dialogs, function(item) {\n return item.uuid != dialog.uuid;\n });\n\n if (this.dialogs.length == 0) {\n\n this.$container.removeClass('has-dialogs');\n\n if (this.$container.hasClass('dialog-prevent-scroll')) {\n this.$container.removeClass('dialog-prevent-scroll');\n }\n\n } else {\n\n if ($prevDialog) {\n $prevDialog.css('opacity', 1);\n }\n }\n }\n\n this.onClose(dialog);\n }\n\n // Initialize callback\n onInitialize() {\n\n let onInitialize = this.onInitialize;\n\n if (typeof onInitialize === 'function') {\n\n onInitialize.call(this.container);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this.container);\n }\n }\n\n // Init callback\n onInit(dialog) {\n\n let onInit = dialog.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(dialog);\n }\n }\n\n // Show callback\n onShow(dialog) {\n\n let onShow = dialog.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(dialog);\n }\n }\n\n // Close callback\n onClose(dialog) {\n\n let onClose = dialog.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(dialog);\n }\n }\n\n // Debug log\n log(...args) {\n\n if (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n console.log(...args);\n }\n }\n }\n\n // Render footer\n _renderFooter(dialog) {\n\n let footer = '';\n\n if (typeof dialog.footer === 'function') {\n\n footer = dialog.footer();\n\n } else if (dialog.footer !== '' && dialog.footer !== false && dialog.footer !== true) {\n\n footer = dialog.footer;\n\n } else if (dialog.footer === true) {\n\n let btnCancel = '';\n let btnRemove = '';\n let btnConfirm = '';\n let btnStyle = '';\n let btnClasses = '';\n let btnAttrs = '';\n\n if (dialog.actions.close.visible) {\n\n btnStyle = dialog.actions.close.primary ? 'btn-primary' : 'btn-secondary';\n btnClasses = dialog.actions.close.classes ? ' '+dialog.actions.close.classes : '';\n btnAttrs = dialog.actions.close.attrs ? ' '+dialog.actions.close.attrs : '';\n btnCancel = `\n <button type=\"button\" class=\"btn ${btnStyle}${btnClasses}\"${btnAttrs} data-dialog-close>\n ${dialog.actions.close.content}\n </button>\n `;\n }\n\n if (dialog.actions.remove.visible) {\n\n btnStyle = dialog.actions.remove.primary ? 'btn-primary' : 'btn-secondary';\n btnClasses = dialog.actions.remove.classes ? ' '+dialog.actions.remove.classes : '';\n btnAttrs = dialog.actions.remove.attrs ? ' '+dialog.actions.remove.attrs : '';\n btnRemove = `\n <button type=\"button\" class=\"btn ${btnStyle}${btnClasses}\"${btnAttrs} data-dialog-remove>\n ${dialog.actions.remove.content}\n </button>\n `;\n }\n\n if (dialog.actions.confirm.visible) {\n\n btnStyle = dialog.actions.confirm.primary ? 'btn-primary' : 'btn-secondary';\n btnClasses = dialog.actions.confirm.classes ? ' '+dialog.actions.confirm.classes : '';\n btnAttrs = dialog.actions.confirm.attrs ? ' '+dialog.actions.confirm.attrs : '';\n btnConfirm = `\n <button type=\"button\" class=\"btn ${btnStyle}${btnClasses}\"${btnAttrs} data-dialog-confirm>\n ${dialog.actions.confirm.content}\n </button>\n `;\n }\n\n footer = `\n ${btnCancel}\n ${btnRemove}\n ${btnConfirm}\n `;\n\n } else {\n\n return footer;\n }\n\n if (footer) {\n\n return `\n <div class=\"dialog-footer\">\n ${footer}\n </div>\n `;\n }\n }\n\n // Render template\n _renderTemplate(dialog) {\n\n let faNameSpace = this.faPro ? 'far' : 'fas';\n let classes = dialog.classes ? ' '+dialog.classes : '';\n let centered = dialog.centered ? ' dialog-centered' : '';\n let size = dialog.size ? ' dialog-'+dialog.size : '';\n let overFlowVisible = dialog.overflowVisible ? ' dialog-overflow-visible' : '';\n let uuid = ' data-dialog-uuid=\"'+dialog.uuid+'\"';\n let backdrop = dialog.backdrop ? ' data-dialog-backdrop=\"true\"' : ' data-dialog-backdrop=\"false\"';\n let title = dialog.title;\n let closeBtn = dialog.closeBtn ? `<button type=\"button\" data-dialog-close><i class=\"${faNameSpace} fa-times icon\"></i></button>` : '';\n let maxBodyHeight = dialog.maxBodyHeight ? ' style=\"max-height: '+dialog.maxBodyHeight+'px\"' : '';\n let body = '';\n let footer = this._renderFooter(dialog);\n\n if (typeof dialog.body === 'function') {\n\n body = dialog.body();\n\n } else {\n\n body = dialog.body;\n }\n\n return `\n <div class=\"dialog${classes}${centered}${size}${overFlowVisible}\"${uuid}${backdrop}>\n\n <div class=\"dialog-container\">\n\n <div class=\"dialog-content\">\n\n <div class=\"dialog-header\">\n\n <span class=\"dialog-title\">\n ${title}\n </span>\n\n ${closeBtn}\n\n </div>\n\n <div class=\"dialog-body\"${maxBodyHeight}>\n\n ${body}\n\n </div>\n\n ${footer}\n\n </div>\n\n </div>\n\n </div>\n `;\n }\n\n static _jQueryInterface(config) {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Dialog(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Dialog._jQueryInterface;\n $.fn[NAME].Constructor = Dialog;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Dialog._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n title: '',\n template: '',\n body: '',\n footer: true,\n size: '', // sm/lg\n classes: '',\n centered: true,\n backdrop: true,\n preventScroll: true,\n closeBtn: true,\n animation: true,\n animationIn: 'zoomIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n callbacks: {},\n maxBodyHeight: null,\n overflowVisible: false,\n faPro: false,\n debug: true,\n onInitialize: null,\n onDestroy: null,\n onInit: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n actions: {\n close: {\n primary: false,\n visible: true,\n content: 'Close',\n classes: '',\n attrs: ''\n },\n remove: {\n primary: false,\n visible: true,\n content: 'Remove',\n classes: '',\n attrs: ''\n },\n confirm: {\n primary: true,\n visible: true,\n content: 'Confirm',\n classes: '',\n attrs: ''\n }\n }\n }\n}\n\nexport default Dialog;","import Common from './src/common';\nimport Popover from './src/popover.js';\nimport Select from './src/select';\nimport Dropdown from './src/dropdown';\nimport Tooltip from './src/tooltip';\nimport SectionTabs from './src/section-tabs';\nimport Collapse from './src/collapse';\nimport Toast from './src/toast';\nimport Dialog from './src/dialog';\n\nexport default {\n\tCommon,\n\tPopover,\n\tSelect,\n\tDropdown,\n\tTooltip,\n\tSectionTabs,\n\tCollapse,\n\tToast,\n\tDialog\n}"]}
1
+ {"version":3,"sources":["../../js/src/util/perfect-scrollbar.js","../../js/src/util/animate-css.js","../../js/src/common.js","../../js/src/util/index.js","../../js/src/abstract-ui-component.js","../../js/src/popover.js","../../js/src/select.js","../../js/src/dropdown.js","../../js/src/tooltip.js","../../js/src/section-tabs.js","../../js/src/collapse.js","../../js/src/toast.js","../../js/src/dialog.js","../../js/index.esm.js"],"names":["get","element","getComputedStyle","set","obj","key","val","style","div","className","document","createElement","elMatches","Element","prototype","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","Error","call","remove","parentNode","removeChild","queryChildren","selector","Array","filter","children","child","cls","main","thumb","x","rail","consuming","state","focus","clicking","active","scrolling","scrollingClassTimeout","y","addScrollingClass","i","classList","contains","clearTimeout","add","removeScrollingClass","setTimeout","isAlive","settings","scrollingThreshold","setScrollingClassInstantly","EventElement","handlers","prototypeAccessors","isEmpty","configurable","bind","eventName","handler","this","push","addEventListener","unbind","target","this$1","removeEventListener","unbindAll","name","Object","keys","every","length","defineProperties","EventManager","eventElements","createEvent","window","CustomEvent","evt","initCustomEvent","undefined","eventElement","ee","splice","indexOf","forEach","e","once","onceHandler","processScrollDiff","axis","diff","useScrollingClass","forceFireReachEvent","fields","processScrollDiff$1","ref","contentHeight","containerHeight","scrollTop","up","down","reach","dispatchEvent","toInt","parseInt","isEditable","el","outerWidth","styles","width","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","env","isWebKit","documentElement","supportsTouch","DocumentTouch","supportsIePointer","navigator","msMaxTouchPoints","isChrome","test","userAgent","updateGeometry","roundedScrollTop","Math","floor","containerWidth","clientWidth","clientHeight","contentWidth","scrollWidth","scrollHeight","scrollbarXRail","appendChild","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","scrollLeft","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","updateCss","thumbSize","minScrollbarLength","max","maxScrollbarLength","min","xRailOffset","isRtl","left","isScrollbarXUsingBottom","bottom","scrollbarXBottom","top","scrollbarXTop","yRailOffset","height","isScrollbarYUsingRight","right","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","clickRail","event","stopPropagation","direction","pageY","pageYOffset","getBoundingClientRect","pageX","pageXOffset","dragThumb","bindMouseScrollHandler","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","preventDefault","mouseUpHandler","ownerDocument","keyboard","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","deltaX","deltaY","which","metaKey","altKey","shiftKey","wheelPropagation","shouldPreventDefault","wheel","mousewheelHandler","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","querySelector","cursor","overflow","overflowX","overflowY","join","match","maxScrollTop","maxScrollLeft","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","offsetHeight","isLeft","isRight","offsetWidth","abs","ctrlKey","onwheel","onmousewheel","touch","startOffset","startTime","speed","easingLoop","touchStart","touchMove","touchEnd","PointerEvent","MSPointerEvent","applyTouchMove","differenceX","differenceY","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","Date","getTime","clearInterval","currentOffset","currentTime","timeGap","magnitudeX","magnitudeY","scrollY","swipeEasing","setInterval","isInitialized","defaultSettings","PerfectScrollbar","userSettings","nodeName","result","originalScrollLeft","blur","isNegativeScroll","setAttribute","railXStyle","isNaN","display","marginLeft","marginRight","railYStyle","borderTopWidth","borderBottomWidth","marginTop","marginBottom","handlerName","lastScrollTop","lastScrollLeft","onScroll","update","destroy","removePsClasses","split","$","fn","extend","animateCss","animationName","callback","animationEnd","addClass","one","removeClass","on","Cool","Common","initialize","opts","coolPopover","popover","coolSelect","select","coolDropdown","dropdown","coolTooltip","tooltip","coolCollapse","collapse","coolSectionTabs","sectionTabs","coolToast","toast","coolDialog","dialog","hasClass","not","attr","$inputGroup","closest","each","formLabelGroup","find","trigger","$container","parents","href","data","linkDisabled","item","is","parent","open","location","$self","btn","btnDisabled","click","toggleClass","mousedown","mouseup","$sidebarLeftContent","sidebarLeftScroll","$sidebarTabs","scrollContainer","$tab","first","css","last","debounce","func","wait","immediate","timeout","context","args","arguments","callNow","apply","touchEvents","special","destroyed","AbstractUIComponent","onInit","onUpdate","onDestroy","onShow","onClose","onReset","log","debug","console","_console","NAME","DATA_KEY","Popover","_this","defaults","init","buildCache","bindEvents","unbindEvents","$el","removeData","container","containerAutoDetect","id","generateUUID","animation","animationIn","animationOut","animationSpeed","placement","placementChanged","title","content","offsetParent","_this2","$popover","close","show","setPosition","off","replace","c","r","random","toString","buildPopover","append","$arrow","arrowPos","popoverPosX","popoverPosY","containerInnerWidth","innerWidth","containerInnerHeight","innerHeight","popoverWidth","popoverHeight","outerHeight","popoverTriggerWidth","popoverTriggerHeight","popoverTriggerPosX","position","popoverTriggerPosY","arrowWidth","arrowHeight","round","transform","popoverOverflowCount","popoverPosition","popoverOverflow","removeAttr","fixPopoverPosition","overflowAmount","_this3","_jQueryInterface","config","TypeError","JQUERY_NO_CONFLICT","Constructor","noConflict","Select","then","buildScroll","setData","reset","items","$select","$selectItems","$selectIconContainer","html","selectIconDefault","dynamicTitle","dynamicTitleDefault","$selectTitle","text","trim","searchApi","dynamicTitleEmptyDefault","$selectHeader","showSearch","searchData","$searchInput","searchString","search","Promise","primaryResolve","primaryReject","self","faPro","scrollContentHeight","searchRequest","type","contentOpen","searchPlaceholder","btnCloseText","labelTemplate","confirmCheck","confirmUncheck","preventUncheck","allowNoneOnRadioSelect","showValidStateIcon","itemsToExclude","primaryKeyword","preventClose","map","String","isArray","arr","showFooter","secondaryResolve","secondaryReject","selectItems","_renderItemList","_renderSearch","_renderFooter","$scrollableContent","$searchContainer","$searchIconContainer","$clearSearchButton","tabIndex","$footerContainer","$closeButton","buildSearchData","scroll","resolve","reject","_this4","selectLabels","_this5","checked","cb","onSelect","n","prop","has","getData","faNameSpace","searchUrl","itemCount","currentCount","value","encodeURIComponent","ajax","method","url","done","itemIds","when","$inputs","$input","inputValues","abort","results","toLocaleLowerCase","$otherSelects","zindex","_this6","scrollIntoView","behavior","block","inline","isEmptyObject","grep","appendItems","_this7","itemsArr","domItems","prepend","deselectItems","array","_this8","getItem","getSelectedItems","segment","ids","getSelectedItem","label","onSearch","Dropdown","offset","minWidth","positionObserver","JSON","parse","closeOnItemClick","$dropdown","next","align","$dropdownItem","menuRight","after","onItemClick","str","dropdownWidth","dropdownHeight","dropdownTriggerWidth","dropdownTriggerHeight","dropdownTriggerPosX","dropdownTriggerPosY","dropdownPosX","dropdownPosY","offsetX","offsetY","offsets","$containingParent","index","toLowerCase","containingBoundingRect","containerBoundingRect","maxTop","maxLeft","maxRight","maxBottom","Tooltip","$tooltip","buildTooltip","tooltipPosX","tooltipPosY","tooltipWidth","tooltipHeight","tooltipTriggerWidth","tooltipTriggerHeight","tooltipTriggerPosX","tooltipTriggerPosY","tooltipOverflowCount","tooltipPosition","tooltipOverflow","fixTooltipPosition","SectionTabs","checkForChanges","$dropdownContainer","$dropdownList","tabsCount","tabs","_name","moveToList","insertBefore","moveToDropdown","appendTo","overflowStatus","dropdownItems","moveableTabs","usedSpace","freeSpace","Collapse","$target","expanded","targetHeight","$indicator","whichTransitionEvent","transEndEventNames","t","Toast","toasts","queue","processingQueue","onInitialize","addQueue","processQueue","shift","buildToast","uuid","placementX","placementY","dismiss","size","header","theme","template","maxBodyHeight","_renderTemplate","$inner","$closeBtn","toastPosX","toastPosY","toastWidth","toastHeight","body","bodyCloseBtn","_$$fn$NAME$defaults","Dialog","dialogs","buildDialog","footer","classes","centered","backdrop","preventScroll","closeBtn","callbacks","overflowVisible","actions","confirm","$prevDialog","eq","zIndex","checkForBackdrop","btnCancel","btnRemove","btnConfirm","visible","primary","attrs","overFlowVisible","_$$fn$NAME$defaults$1","index_esm"],"mappings":"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","sourcesContent":["/*!\n * perfect-scrollbar v1.4.0\n * (c) 2018 Hyunje Jun\n * @license MIT\n */\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n var this$1 = this;\n\n for (var name in this$1.handlers) {\n this$1.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nvar processScrollDiff = function(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n};\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n}\n\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nvar updateGeometry = function(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n i.containerWidth = element.clientWidth;\n i.containerHeight = element.clientHeight;\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt(i.railXWidth * i.containerWidth / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n (i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt(i.railYHeight * i.containerHeight / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n roundedScrollTop *\n (i.railYHeight - i.scrollbarYHeight) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n};\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nvar clickRail = function(i) {\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n};\n\nvar dragThumb = function(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n};\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n startingScrollTop = element[scrollTop];\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nvar keyboard = function(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n};\n\nvar wheel = function(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = -1 * e.wheelDeltaX / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for <select> issue in FF and IE #571\n if (!env.isWebKit && element.querySelector('select:focus')) {\n return true;\n }\n\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n ''\n );\n\n // if scrollable\n if (overflow.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n !(cursor.scrollTop === 0 && deltaY > 0) &&\n !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n ) {\n return true;\n }\n }\n var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n !(cursor.scrollLeft === 0 && deltaX < 0) &&\n !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function mousewheelHandler(e) {\n var ref = getDeltaFromEvent(e);\n var deltaX = ref[0];\n var deltaY = ref[1];\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n var shouldPrevent = false;\n if (!i.settings.useBothWheelAxes) {\n // deltaX will only be used for horizontal scrolling and deltaY will\n // only be used for vertical scrolling - this is the default\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n // only vertical scrollbar is active and useBothWheelAxes option is\n // active, so let's scroll vertical bar using both mouse wheel axes\n if (deltaY) {\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n } else {\n element.scrollTop += deltaX * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n // useBothWheelAxes and only horizontal bar is active, so use both\n // wheel axes for horizontal bar\n if (deltaX) {\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else {\n element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n }\n\n updateGeometry(i);\n\n shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent && !e.ctrlKey) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n if (typeof window.onwheel !== 'undefined') {\n i.event.bind(element, 'wheel', mousewheelHandler);\n } else if (typeof window.onmousewheel !== 'undefined') {\n i.event.bind(element, 'mousewheel', mousewheelHandler);\n }\n};\n\nvar touch = function(i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n var element = i.element;\n\n function shouldPrevent(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n var scrollLeft = element.scrollLeft;\n var magnitudeX = Math.abs(deltaX);\n var magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (\n (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n (deltaX > 0 && scrollLeft === 0)\n ) {\n return true;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n element.scrollTop -= differenceY;\n element.scrollLeft -= differenceX;\n\n updateGeometry(i);\n }\n\n var startOffset = {};\n var startTime = 0;\n var speed = {};\n var easingLoop = null;\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n\n function shouldHandle(e) {\n if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n return false;\n }\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (\n e.pointerType &&\n e.pointerType !== 'mouse' &&\n e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n ) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n var touch = getTouch(e);\n\n startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = new Date().getTime();\n\n if (easingLoop !== null) {\n clearInterval(easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n ''\n );\n\n // if scrollable\n if (overflow.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n !(cursor.scrollTop === 0 && deltaY > 0) &&\n !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n ) {\n return true;\n }\n }\n var maxScrollLeft = cursor.scrollLeft - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n !(cursor.scrollLeft === 0 && deltaX < 0) &&\n !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function touchMove(e) {\n if (shouldHandle(e)) {\n var touch = getTouch(e);\n\n var currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n var differenceX = currentOffset.pageX - startOffset.pageX;\n var differenceY = currentOffset.pageY - startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n var currentTime = new Date().getTime();\n\n var timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(easingLoop);\n easingLoop = setInterval(function() {\n if (i.isInitialized) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (env.supportsTouch) {\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (env.supportsIePointer) {\n if (window.PointerEvent) {\n i.event.bind(element, 'pointerdown', touchStart);\n i.event.bind(element, 'pointermove', touchMove);\n i.event.bind(element, 'pointerup', touchEnd);\n } else if (window.MSPointerEvent) {\n i.event.bind(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n};\n\nvar defaultSettings = function () { return ({\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1000,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: true,\n wheelSpeed: 1,\n}); };\n\nvar handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard: keyboard,\n wheel: wheel,\n touch: touch,\n};\n\nvar PerfectScrollbar = function PerfectScrollbar(element, userSettings) {\n var this$1 = this;\n if ( userSettings === void 0 ) userSettings = {};\n\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n if (!element || !element.nodeName) {\n throw new Error('no element is specified to initialize PerfectScrollbar');\n }\n\n this.element = element;\n\n element.classList.add(cls.main);\n\n this.settings = defaultSettings();\n for (var key in userSettings) {\n this$1.settings[key] = userSettings[key];\n }\n\n this.containerWidth = null;\n this.containerHeight = null;\n this.contentWidth = null;\n this.contentHeight = null;\n\n var focus = function () { return element.classList.add(cls.state.focus); };\n var blur = function () { return element.classList.remove(cls.state.focus); };\n\n this.isRtl = get(element).direction === 'rtl';\n this.isNegativeScroll = (function () {\n var originalScrollLeft = element.scrollLeft;\n var result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? element.scrollWidth - element.clientWidth\n : 0;\n this.event = new EventManager();\n this.ownerDocument = element.ownerDocument || document;\n\n this.scrollbarXRail = div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = div(cls.element.thumb('x'));\n this.scrollbarXRail.appendChild(this.scrollbarX);\n this.scrollbarX.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarX, 'focus', focus);\n this.event.bind(this.scrollbarX, 'blur', blur);\n this.scrollbarXActive = null;\n this.scrollbarXWidth = null;\n this.scrollbarXLeft = null;\n var railXStyle = get(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n if (isNaN(this.scrollbarXBottom)) {\n this.isScrollbarXUsingBottom = false;\n this.scrollbarXTop = toInt(railXStyle.top);\n } else {\n this.isScrollbarXUsingBottom = true;\n }\n this.railBorderXWidth =\n toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = div(cls.element.thumb('y'));\n this.scrollbarYRail.appendChild(this.scrollbarY);\n this.scrollbarY.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarY, 'focus', focus);\n this.event.bind(this.scrollbarY, 'blur', blur);\n this.scrollbarYActive = null;\n this.scrollbarYHeight = null;\n this.scrollbarYTop = null;\n var railYStyle = get(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(railYStyle.right, 10);\n if (isNaN(this.scrollbarYRight)) {\n this.isScrollbarYUsingRight = false;\n this.scrollbarYLeft = toInt(railYStyle.left);\n } else {\n this.isScrollbarYUsingRight = true;\n }\n this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n this.railBorderYWidth =\n toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight =\n toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n set(this.scrollbarYRail, { display: '' });\n this.railYHeight = null;\n this.railYRatio = null;\n\n this.reach = {\n x:\n element.scrollLeft <= 0\n ? 'start'\n : element.scrollLeft >= this.contentWidth - this.containerWidth\n ? 'end'\n : null,\n y:\n element.scrollTop <= 0\n ? 'start'\n : element.scrollTop >= this.contentHeight - this.containerHeight\n ? 'end'\n : null,\n };\n\n this.isAlive = true;\n\n this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); });\n\n this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n this.lastScrollLeft = element.scrollLeft; // for onScroll only\n this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); });\n updateGeometry(this);\n};\n\nPerfectScrollbar.prototype.update = function update () {\n if (!this.isAlive) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? this.element.scrollWidth - this.element.clientWidth\n : 0;\n\n // Recalculate rail margins\n set(this.scrollbarXRail, { display: 'block' });\n set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(get(this.scrollbarXRail).marginLeft) +\n toInt(get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(get(this.scrollbarYRail).marginTop) +\n toInt(get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n set(this.scrollbarXRail, { display: 'none' });\n set(this.scrollbarYRail, { display: 'none' });\n\n updateGeometry(this);\n\n processScrollDiff(this, 'top', 0, false, true);\n processScrollDiff(this, 'left', 0, false, true);\n\n set(this.scrollbarXRail, { display: '' });\n set(this.scrollbarYRail, { display: '' });\n};\n\nPerfectScrollbar.prototype.onScroll = function onScroll (e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(\n this,\n 'left',\n this.element.scrollLeft - this.lastScrollLeft\n );\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n};\n\nPerfectScrollbar.prototype.destroy = function destroy () {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n remove(this.scrollbarX);\n remove(this.scrollbarY);\n remove(this.scrollbarXRail);\n remove(this.scrollbarYRail);\n this.removePsClasses();\n\n // unset elements\n this.element = null;\n this.scrollbarX = null;\n this.scrollbarY = null;\n this.scrollbarXRail = null;\n this.scrollbarYRail = null;\n\n this.isAlive = false;\n};\n\nPerfectScrollbar.prototype.removePsClasses = function removePsClasses () {\n this.element.className = this.element.className\n .split(' ')\n .filter(function (name) { return !name.match(/^ps([-_].+|)$/); })\n .join(' ');\n};\n\nexport default PerfectScrollbar;","import 'jquery';\n\n$.fn.extend({\n animateCss: function (animationName, callback) {\n\n var el = this;\n var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';\n\n el.addClass('animated ' + animationName).one(animationEnd, function(e) {\n\n $(this).removeClass('animated ' + animationName);\n\n if (callback) {\n callback();\n }\n\n }).children().on(animationEnd, function(e) {\n\n e.stopPropagation();\n });\n }\n});","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport './util/animate-css';\n\nwindow.Cool = window.Cool || {};\nwindow.Cool.settings = window.Cool.settings || {};\n\nclass Common {\n\n\tstatic initialize(opts) {\n\n // There's an error if opts is not defined\n opts = opts || {};\n\n // Save settings for later use\n window.Cool.settings = opts;\n\n // Init plugins\n $('[data-toggle=\"popover\"]').coolPopover(opts.popover);\n $('[data-toggle=\"select\"]').coolSelect(opts.select);\n $('[data-toggle=\"dropdown\"]').coolDropdown(opts.dropdown);\n $('[data-toggle=\"tooltip\"]').coolTooltip(opts.tooltip);\n $('[data-toggle=\"collapse\"]').coolCollapse(opts.collapse);\n $('[data-toggle=\"section-tabs\"]').coolSectionTabs(opts.sectionTabs);\n $('body').coolToast(opts.toast);\n $('body').coolDialog(opts.dialog);\n\n // Dom ready\n\t\t$('html').addClass('dom-ready');\n\n // Input group focus in\n\t\t$(document).on('focus', '.form-control', function () {\n\n if (!$(this).hasClass('disabled') && $(this).not(':disabled') && !$(this).attr('readonly')) {\n\n let $inputGroup = $(this).closest('.input-group');\n\n if (!$inputGroup.hasClass('input-group-focus')) {\n $inputGroup.addClass('input-group-focus');\n }\n }\n });\n\n // Input group focus out\n $(document).on('blur', '.form-control', function () {\n\n if (!$(this).hasClass('disabled') && $(this).not(':disabled') && !$(this).attr('readonly')) {\n\n let $inputGroup = $(this).closest('.input-group');\n\n if ($inputGroup.hasClass('input-group-focus')) {\n $inputGroup.removeClass('input-group-focus');\n }\n }\n });\n\n // Custom Form group\n $('.form-label-group').each(function(i, formLabelGroup) {\n\n let $formLabelGroup = $(formLabelGroup);\n\n $formLabelGroup.find('input').on('blur input change', function () {\n\n let val = $(this).val();\n\n if (val) {\n $(formLabelGroup).addClass('label-on-top');\n } else {\n $(formLabelGroup).removeClass('label-on-top');\n }\n\n }).trigger('change');\n });\n\n // Table actions\n $.each($('.table'), function() {\n\n if ($(this).find('[data-table-link], [data-table-btn]').length && !$(this).hasClass('table-hover')) {\n $(this).addClass('table-hover');\n }\n });\n\n $(document).on('click', '[data-table-link]', function(e) {\n\n let $container = $(this).parents('table, .table');\n let href = $(this).data('tableLink');\n let target = $(e.target);\n let exceptions = ['input', 'button', 'a', 'label', 'td.col-select'];\n let linkDisabled = false;\n\n $.each(exceptions, function(item) {\n\n if (target.is(item) || (item == 'a' && target.parent().is(item))) {\n linkDisabled = true;\n }\n });\n\n if ($container.hasClass('bulk-actions-active')) {\n linkDisabled = true;\n }\n\n if (target.hasClass('table-link-exclude')) {\n linkDisabled = true;\n }\n\n if (target.is('td, .td, img') && !linkDisabled) {\n\n if (e.ctrlKey || e.metaKey) {\n\n window.open(href, '_blank');\n\n } else {\n\n window.location.href = href;\n }\n\n } else {\n\n return;\n }\n });\n\n $(document).on('click', '[data-table-btn]', function(e) {\n\n let $container = $(this).parents('table, .table');\n let $self = $(this);\n let btn = $(this).data('tableButton');\n let target = $(e.target);\n let exceptions = ['input', 'button', 'a', 'label', 'td.col-select'];\n let btnDisabled = false;\n\n if (!btn) {\n\n btn = $self.find('button')[0];\n\n if (!btn) {\n return;\n }\n }\n\n $.each(exceptions, function(item) {\n\n if (target.is(item) || (item == 'a' && target.parent().is(item))) {\n btnDisabled = true;\n }\n });\n\n if ($container.hasClass('bulk-actions-active')) {\n btnDisabled = true;\n }\n\n if (target.hasClass('table-btn-exclude')) {\n btnDisabled = true;\n }\n\n if (target.is('td, .td, img') && !btnDisabled) {\n\n $(btn).click();\n\n } else {\n\n return;\n }\n });\n\n // button toggle\n $(document).on('click', '.btn-group-toggle .btn > input', function(e) {\n e.stopPropagation();\n });\n\n $(document).on('click', '.btn-group-toggle .btn', function() {\n $(this).find('input').trigger('click');\n $(this).parent().find('input').trigger('change');\n });\n\n $(document).on('change', '.btn-group-toggle .btn > input', function() {\n if ($(this).is(':checked')) {\n $(this).parent().addClass('active');\n } else {\n $(this).parent().removeClass('active');\n }\n });\n\n // Force select element unfocus after change\n $('select').on('change', function() {\n $(this).blur();\n });\n\n // Tabs\n $('.tab-toggler').on('click', function(e) {\n\n e.stopPropagation();\n\n $(this).parent().toggleClass('open');\n });\n\n $(document).on('click', function() {\n\n $('.tabs-container').removeClass('open');\n });\n\n // Sidebar togglers\n $('.sidebar-left-toggler').on('click', function(e) {\n\n e.stopPropagation();\n\n $(this).toggleClass('open');\n $('body').toggleClass('sidebar-left-open');\n });\n\n $('.sidebar-right-toggler').on('click', function(e) {\n\n e.stopPropagation();\n\n $(this).toggleClass('open');\n $('body').toggleClass('sidebar-right-open');\n });\n\n // Sidebar scroll\n $('.sidebar-content .ps__thumb-y').mousedown(function() {\n $(this).parent().parent().addClass('ps-mousedown-scroll');\n });\n\n $(document).mouseup(function() {\n\n if ($('.sidebar-content').hasClass('ps-mousedown-scroll')) {\n $('.sidebar-content').removeClass('ps-mousedown-scroll');\n }\n });\n\n // Sidebar left scroll\n let $sidebarLeft = $('.sidebar-left');\n let $sidebarLeftContent = $sidebarLeft.find('.sidebar-content');\n\n if ($sidebarLeftContent.length) {\n\n let sidebarLeftScroll = new PerfectScrollbar($sidebarLeftContent[0], {\n wheelSpeed: 2,\n wheelPropagation: true,\n minScrollbarLength: 20,\n suppressScrollX: true\n });\n\n $sidebarLeftContent.find('[data-toggle=\"collapse\"]').on('click', function() {\n\n setTimeout(() => {\n sidebarLeftScroll.update();\n }, 300);\n });\n }\n\n // Sidebar tabs\n let $sidebarTabs = $(document).find('.sidebar-tab');\n\n if ($sidebarTabs.length) {\n\n $.each($sidebarTabs, function(i, el) {\n\n let scrollContainer = $(el).find('.tab-content');\n\n const sidebarTabsScroll = new PerfectScrollbar(scrollContainer[0], {\n wheelSpeed: 2,\n wheelPropagation: true,\n minScrollbarLength: 20,\n suppressScrollX: true\n });\n });\n\n $('[name=\"sidebar-tab-select\"]').on('click', function() {\n\n let val = $(this).val();\n let $tab = $('#sidebar-tab-'+val);\n\n $sidebarTabs.not($tab).removeClass('active');\n $tab.addClass('active');\n\n $('[name=\"sidebar-tab-select\"]').not($(this)).removeClass('active');\n $(this).addClass('active');\n\n if ($tab[0] == $sidebarTabs.first()[0]) {\n\n $sidebarTabs.not($tab).find('.tab-content').css({\n 'transform': 'translate3d(100%, 0px, 0px)'\n });\n\n } else if ($tab[0] == $sidebarTabs.last()[0]) {\n\n $sidebarTabs.not($tab).find('.tab-content').css({\n 'transform': 'translate3d(-100%, 0px, 0px)'\n });\n\n } else {\n\n $sidebarTabs.first().not($tab).find('.tab-content').css({\n 'transform': 'translate3d(-100%, 0px, 0px)'\n });\n\n $sidebarTabs.last().not($tab).find('.tab-content').css({\n 'transform': 'translate3d(100%, 0px, 0px)'\n });\n }\n\n $tab.find('.tab-content').css({\n 'transform': 'none'\n });\n });\n }\n\t}\n}\n\nwindow.Cool.initialize = Common.initialize;\n\nexport default Common;","import 'jquery';\n\nconst debounce = function (func, wait, immediate) {\n\n\tlet timeout;\n\n\treturn function() {\n\n\t\tlet context = this;\n\t\tlet args = arguments;\n\t\tlet later = function() {\n\n\t\t\ttimeout = null;\n\n\t\t\tif (!immediate) {\n\t\t\t\tfunc.apply(context, args)\n\t\t\t};\n\t\t};\n\n\t\tlet callNow = immediate && !timeout;\n\n\t\tclearTimeout(timeout);\n\n\t\ttimeout = setTimeout(later, wait);\n\n\t\tif (callNow) {\n\t\t\tfunc.apply(context, args);\n\t\t}\n\t};\n};\n\nconst shallowProperty = function(key) {\n\n\treturn function(obj) {\n\n\t\treturn obj == null ? void 0 : obj[key];\n\t};\n};\n\nconst isArrayLike = function(collection) {\n\n\tlet length = shallowProperty('length');\n\n\treturn typeof length == 'number' && length >= 0 && length <= Math.pow(2, 53) - 1;\n};\n\nconst optimizeCb = function(func, context, argCount) {\n\n if (context === void 0) {\n \treturn func;\n\t}\n\n\tswitch (argCount == null ? 3 : argCount) {\n\n\t\tcase 1: return function(value) {\n\t\t\treturn func.call(context, value);\n\t\t};\n\n\t\tcase 3: return function(value, index, collection) {\n\t\t\treturn func.call(context, value, index, collection);\n\t\t};\n\t\tcase 4: return function(accumulator, value, index, collection) {\n\t\t\treturn func.call(context, accumulator, value, index, collection);\n\t\t};\n\t}\n\n return function() {\n\t\treturn func.apply(context, arguments);\n };\n};\n\nconst each = function(obj, iteratee, context) {\n\n\titeratee = optimizeCb(iteratee, context);\n\n\tlet i;\n\tlet length;\n\n\tif (isArrayLike(obj)) {\n\n\t\tfor (i = 0, length = obj.length; i < length; i++) {\n\t\t\titeratee(obj[i], i, obj);\n\t\t}\n\n\t} else {\n\n\t\tlet keys = Object.keys(obj);\n\n\t\tfor (i = 0, length = keys.length; i < length; i++) {\n\t\t\titeratee(obj[keys[i]], keys[i], obj);\n\t\t}\n\t}\n\n\treturn obj;\n};\n\nconst touchEvents = function () {\n\n\tlet result = false;\n\n\tif (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n\t\tresult = true;\n\t}\n\n\treturn result;\n};\n\n$.event.special.destroyed = {\n\n\tremove: function(obj) {\n\n\t\tif (obj.handler) {\n\t\t\tobj.handler();\n\t\t}\n\t}\n}\n\nexport {\n\tdebounce,\n\ttouchEvents,\n\teach\n}","export default class AbstractUIComponent {\n\n\t// Init callback\n onInit() {\n\n let onInit = this.opts.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(this);\n }\n }\n\n // Update callback\n onUpdate() {\n\n let onUpdate = this.opts.onUpdate;\n\n if (typeof onUpdate === 'function') {\n\n onUpdate.call(this);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.opts.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this);\n }\n }\n\n // Show callback\n onShow() {\n\n let onShow = this.opts.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(this);\n }\n }\n\n // Close callback\n onClose() {\n\n let onClose = this.opts.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(this);\n }\n }\n\n // Reset callback\n onReset() {\n\n let onReset = this.opts.onReset;\n\n if (typeof onReset === 'function') {\n\n onReset.call(this);\n }\n }\n\n // Debug log\n log(...args) {\n\n \tif (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n \t \tconsole.log(...args);\n }\n \t}\n }\n}","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolPopover';\nconst DATA_KEY = 'plugin_coolPopover';\n\nclass Popover extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.popover) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.popover, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache();\n this.bindEvents();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$container = this.$el.data('container') ? $(this.$el.data('container')) : $(this.opts.container);\n this.containerAutoDetect = this.$el.data('containerAutoDetect') ? this.$el.data('containerAutoDetect') : this.opts.containerAutoDetect;\n this.id = 'popover-'+this.generateUUID();\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.trigger = this.$el.data('trigger') ? this.$el.data('trigger') : this.opts.trigger;\n this.placement = this.$el.data('placement') ? this.$el.data('placement') : this.opts.placement;\n this.placementChanged = false;\n this.title = this.$el.data('title') ? this.$el.data('title') : this.opts.title;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n\n if (this.containerAutoDetect) {\n this.$container = this.$el.offsetParent();\n }\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n if (this.trigger === 'click') {\n\n this.$el.on('click'+'.'+NAME, () => {\n\n if (this.$popover) {\n this.close();\n } else {\n this.show();\n }\n });\n\n } else if (this.trigger === 'hover') {\n\n this.$el.on('mouseenter'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('mouseleave'+'.'+NAME, () => {\n\n this.close();\n });\n\n } else if (this.trigger === 'focus') {\n\n this.$el.on('focusin'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('focusout'+'.'+NAME, () => {\n\n this.close();\n });\n }\n\n $(window).on('resize', debounce(() => {\n\n if (this.$popover) {\n this.setPosition();\n this.onUpdate();\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Build popover\n buildPopover() {\n\n let content;\n\n \tif (typeof this.content === 'function') {\n \t\tcontent = this.content();\n \t} else {\n content = this.content;\n }\n\n \tthis.$popover = $(`\n \t\t<div class=\"popover\" role=\"tooltip\" id=\"${this.id}\">\n\n\t\t\t <div class=\"arrow\"></div>\n\n\t\t\t <h3 class=\"popover-header\">${this.title}</h3>\n\n\t\t\t <div class=\"popover-body\">${content}</div>\n\n\t\t\t</div>\n \t`);\n\n this.$container.append(this.$popover);\n this.$arrow = this.$popover.find('.arrow') ? this.$popover.find('.arrow') : false;\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$popover);\n this.log(this.$arrow);\n this.log('Id: '+this.id);\n this.log('Trigger: '+this.trigger);\n this.log('Placement: '+this.placement);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Title: '+this.title);\n this.log('Content: '+this.content);\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof placement === 'undefined' || placement === null) {\n placement = this.placement;\n }\n\n this.$popover.addClass('popover-'+placement);\n\n let containerInnerWidth = this.$container.innerWidth();\n let containerInnerHeight = this.$container.innerHeight();\n let popoverWidth = this.$popover.outerWidth(true);\n let popoverHeight = this.$popover.outerHeight(true);\n let popoverTriggerWidth = this.$el.outerWidth();\n let popoverTriggerHeight = this.$el.outerHeight();\n let popoverTriggerPosX = this.$el.position().left;\n let popoverTriggerPosY = this.$el.position().top;\n let arrowWidth = this.$arrow.outerWidth(true);\n let arrowHeight = this.$arrow.outerHeight(true);\n let arrowPos;\n let popoverPosX;\n let popoverPosY;\n\n if (placement === 'top') {\n\n popoverPosX = Math.round(popoverTriggerPosX - (popoverWidth - popoverTriggerWidth) / 2);\n popoverPosY = Math.round(popoverTriggerPosY - popoverHeight);\n arrowPos = Math.round(popoverWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n popoverPosX = Math.round(popoverTriggerPosX + popoverTriggerWidth);\n popoverPosY = Math.round(popoverTriggerPosY - (popoverHeight - popoverTriggerHeight) / 2);\n arrowPos = Math.round(popoverHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n popoverPosX = Math.round(popoverTriggerPosX - (popoverWidth - popoverTriggerWidth) / 2);\n popoverPosY = Math.round(popoverTriggerPosY + popoverTriggerHeight);\n arrowPos = Math.round(popoverWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n popoverPosX = Math.round(popoverTriggerPosX - popoverWidth);\n popoverPosY = Math.round(popoverTriggerPosY - (popoverHeight - popoverTriggerHeight) / 2);\n arrowPos = Math.round(popoverHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$popover.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+popoverPosX+'px, '+popoverPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n // Correct placement if popover goes outside of container\n let popoverOverflowCount = 0;\n let popoverPosition = {\n left: this.$popover.position().left,\n top: this.$popover.position().top,\n right: containerInnerWidth - (this.$popover.position().left + popoverWidth),\n bottom: containerInnerHeight - (this.$popover.position().top + popoverHeight),\n };\n let popoverOverflow = {\n left: false,\n top: false,\n right: false,\n bottom: false\n };\n\n if (popoverPosition.right < 0) {\n\n popoverOverflow.right = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from right');\n }\n\n if (popoverPosition.left < 0) {\n\n popoverOverflow.left = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from left');\n }\n\n if (popoverPosition.bottom < 0) {\n\n popoverOverflow.bottom = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from bottom');\n }\n\n if (popoverPosition.top < 0) {\n\n popoverOverflow.top = true;\n popoverOverflowCount++;\n\n this.log('Popover overflowing from top');\n }\n\n if (popoverOverflowCount > 0) {\n\n if (!this.placementChanged && popoverOverflow.left && popoverPosition.right > popoverWidth) {\n\n this.log('Changing popover placement to right');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('right');\n\n } else if (!this.placementChanged && popoverOverflow.top && popoverPosition.top > popoverHeight) {\n\n this.log('Changing popover placement to bottom');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n\n } else if (!this.placementChanged && popoverOverflow.right && popoverPosition.left > popoverWidth) {\n\n this.log('Changing popover placement to left');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('left');\n\n } else if (!this.placementChanged && popoverOverflow.bottom && popoverPosition.top > popoverHeight) {\n\n this.log('Changing popover placement to top');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else if (!this.placementChanged && (placement !== 'top' || placement !== 'bottom') && (popoverOverflow.left || popoverOverflow.right)) {\n\n if (popoverPosition.top > popoverPosition.bottom) {\n\n this.log('Changing popover placement to top');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else {\n\n this.log('Changing popover placement to bottom');\n\n this.placementChanged = true;\n this.$popover.removeClass('popover-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n }\n\n } else {\n\n this.fixPopoverPosition = true;\n }\n\n if (this.fixPopoverPosition) {\n\n this.log('Adjusting popover size or position in order to popover fit in the container');\n\n if (popoverOverflow.left) {\n\n this.log('Popover overflowing from left');\n\n let overflowAmount = Math.abs(popoverPosition.left);\n let excludePlacements = ['top', 'bottom'];\n\n if ((popoverTriggerPosX >= popoverPosX + overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Popover adjusting width');\n\n popoverWidth -= overflowAmount;\n popoverPosX += overflowAmount;\n\n } else {\n\n this.log('Popover adjusting position x');\n\n popoverPosX += overflowAmount;\n arrowPos -= overflowAmount;\n }\n }\n\n if (popoverOverflow.top) {\n\n this.log('Popover overflowing from top');\n\n let overflowAmount = Math.abs(popoverPosition.top);\n\n this.log('Popover adjusting position y');\n\n popoverPosY += overflowAmount;\n arrowPos -= overflowAmount;\n }\n\n if (popoverOverflow.right) {\n\n this.log('Popover overflowing from right');\n\n let overflowAmount = Math.abs(popoverPosition.right);\n let excludePlacements = ['top', 'bottom'];\n\n if ((popoverTriggerPosX <= popoverPosX - overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Popover adjusting width');\n\n popoverWidth -= overflowAmount;\n\n } else {\n\n this.log('Popover adjusting position x');\n\n popoverPosX -= overflowAmount;\n arrowPos += overflowAmount;\n }\n }\n\n if (popoverOverflow.bottom) {\n\n this.log('Popover overflowing from bottom');\n\n let overflowAmount = Math.abs(popoverPosition.bottom);\n\n this.log('Popover adjusting position y');\n\n popoverPosY -= overflowAmount;\n arrowPos += overflowAmount;\n }\n\n if (placement === 'top') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$popover.css({\n width: popoverWidth,\n transform: 'translate3d('+popoverPosX+'px, '+popoverPosY+'px, 0px)'\n });\n\n this.fixPopoverPosition = false;\n\n this.log('Popover placement changed: '+this.placementChanged);\n this.log('Popover container inner width: '+containerInnerWidth+'px');\n this.log('Popover container inner height: '+containerInnerHeight+'px');\n this.log('Popover trigger width: '+popoverTriggerWidth+'px');\n this.log('Popover trigger height: '+popoverTriggerHeight+'px');\n this.log('popover trigger position x: '+popoverTriggerPosX+'px');\n this.log('Popover trigger position Y: '+popoverTriggerPosY+'px');\n this.log('Popover width: '+popoverWidth+'px');\n this.log('Popover height: '+popoverHeight+'px');\n this.log('Popover position x: '+popoverPosX+'px');\n this.log('Popover position y: '+popoverPosY+'px');\n this.log('Popover position left: '+popoverPosition.left+'px');\n this.log('Popover position top: '+popoverPosition.top+'px');\n this.log('Popover position right: '+popoverPosition.right+'px');\n this.log('Popover position bottom: '+popoverPosition.bottom+'px');\n }\n\n } else {\n\n this.log('Popover placement changed: '+this.placementChanged);\n this.log('Popover container inner width: '+containerInnerWidth+'px');\n this.log('Popover container inner height: '+containerInnerHeight+'px');\n this.log('Popover trigger width: '+popoverTriggerWidth+'px');\n this.log('Popover trigger height: '+popoverTriggerHeight+'px');\n this.log('popover trigger position x: '+popoverTriggerPosX+'px');\n this.log('Popover trigger position Y: '+popoverTriggerPosY+'px');\n this.log('Popover width: '+popoverWidth+'px');\n this.log('Popover height: '+popoverHeight+'px');\n this.log('Popover position x: '+popoverPosX+'px');\n this.log('Popover position y: '+popoverPosY+'px');\n this.log('Popover position left: '+popoverPosition.left+'px');\n this.log('Popover position top: '+popoverPosition.top+'px');\n this.log('Popover position right: '+popoverPosition.right+'px');\n this.log('Popover position bottom: '+popoverPosition.bottom+'px');\n }\n }\n\n // Show\n show() {\n\n if (this.$popover) {\n return;\n }\n\n this.buildPopover();\n this.setPosition();\n\n if (this.animation) {\n\n this.$popover.addClass(this.animationSpeed);\n this.$popover.animateCss(this.animationIn);\n this.$popover.addClass('show');\n this.$popover.attr('id', this.id);\n this.$el.attr('data-popover', this.id);\n\n } else {\n\n this.$popover.addClass('show');\n this.$popover.attr('id', this.id);\n this.$el.attr('data-popover', this.id);\n }\n\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.$popover) {\n return;\n }\n\n if (this.animation && !this.$popover.hasClass('animated')) {\n\n this.$popover.animateCss(this.animationOut, () => {\n\n this.$popover.remove();\n this.$el.removeAttr('data-popover');\n this.$popover = null;\n this.placementChanged = false;\n\n this.onClose();\n });\n\n } else {\n\n this.$popover.remove();\n this.$el.removeAttr('data-popover');\n this.$popover = null;\n this.placementChanged = false;\n\n this.onClose();\n }\n }\n\n static _jQueryInterface(config) {\n\n \treturn this.each(function() {\n\n \t\tlet data = $(this).data(DATA_KEY);\n \t\tconst _config = typeof config === 'object' && config;\n\n \t\tif (!data) {\n \t\t\tdata = new Popover(this, _config);\n \t\t\t$(this).data(DATA_KEY, data);\n \t\t}\n\n \t\tif (typeof config === 'string') {\n\n \t\t\tif (typeof data[config] === 'undefined') {\n\t\t \tthrow new TypeError(`No method named \"${config}\"`)\n\t\t }\n\n\t\t data[config]()\n \t\t}\n\t });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Popover._jQueryInterface;\n $.fn[NAME].Constructor = Popover;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Popover._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n container: '.content-inner',\n containerAutoDetect: false,\n trigger: 'focus',\n placement: 'bottom',\n animation: true,\n animationIn: 'fadeIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n title: '',\n content: '',\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n }\n}\n\nexport default Popover;","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolSelect';\nconst DATA_KEY = 'plugin_coolSelect';\n\nclass Select extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.select) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.select, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache().then(() => {\n\n this.buildScroll();\n this.bindEvents();\n\n if (this.data[this.name].length > 0) {\n this.setData();\n }\n\n this.onInit();\n });\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.bindEvents();\n this.onUpdate();\n }\n\n // Reset plugin data\n reset() {\n\n this.data = {};\n this.data[this.name] = [];\n this.items = [];\n this.$select.find('.select-item').remove();\n this.$selectItems = [];\n this.$selectIconContainer.html(this.selectIconDefault);\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectItems.length == 0 && !this.searchApi && this.dynamicTitle && this.dynamicTitleEmptyDefault && this.dynamicTitleEmptyDefault !== 0) {\n\n this.$selectHeader.css('cursor', 'default');\n this.$selectIconContainer.addClass('d-none');\n this.$selectTitle.html(this.dynamicTitleEmptyDefault);\n }\n\n if (this.showSearch) {\n\n this.searchData = [];\n this.$searchInput.val('');\n this.searchString = '';\n this.search.call(this);\n }\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n return new Promise((primaryResolve, primaryReject) => {\n\n let self = this;\n\n this.$el = $(this.el);\n this.$container = this.$el.parent();\n this.$selectHeader = this.$el.find('.select-header');\n this.$selectTitle = this.$el.find('.select-title');\n this.$selectIconContainer = this.$selectHeader.find('.select-icon');\n this.selectIconDefault = this.$selectHeader.find('.select-icon') ? this.$selectHeader.find('.select-icon').html() : '<i class=\"'+(this.opts.faPro ? 'fal' : 'fas')+'fa-angle-down icon\"></i>';\n this.name = this.$el.data('name') ? this.$el.data('name') : this.opts.name;\n this.scrollContentHeight = this.$el.data('scrollContentHeight') ? this.$el.data('scrollContentHeight') : this.opts.scrollContentHeight;\n this.items = this.$el.data('items') ? this.$el.data('items') : this.opts.items;\n this.data = {};\n this.data[this.name] = [];\n this.searchData = [];\n this.searchApi = this.$el.data('searchApi') ? this.$el.data('searchApi') : this.opts.searchApi;\n this.searchRequest = null;\n this.type = this.$el.data('type') ? this.$el.data('type') : this.opts.type;\n this.contentOpen = false;\n this.searchPlaceholder = this.$el.data('search-placeholder') ? this.$el.data('search-placeholder') : this.opts.searchPlaceholder;\n this.btnCloseText = this.$el.data('btn-close-text') ? this.$el.data('btn-close-text') : this.opts.btnCloseText;\n this.labelTemplate = this.opts.labelTemplate;\n this.confirmCheck = this.opts.confirmCheck;\n this.confirmUncheck = this.opts.confirmUncheck;\n this.preventUncheck = this.opts.preventUncheck;\n this.dynamicTitle = this.$el.data('dynamicTitle') ? this.$el.data('dynamicTitle') : this.opts.dynamicTitle;\n this.dynamicTitleDefault = this.$el.data('dynamicTitleDefault') ? this.$el.data('dynamicTitleDefault') : this.opts.dynamicTitleDefault;\n this.dynamicTitleEmptyDefault = this.$el.data('dynamicTitleEmptyDefault') ? this.$el.data('dynamicTitleEmptyDefault') : this.opts.dynamicTitleEmptyDefault;\n this.allowNoneOnRadioSelect = this.$el.data('allowNoneOnRadioSelect') ? this.$el.data('allowNoneOnRadioSelect') : this.opts.allowNoneOnRadioSelect;\n this.showValidStateIcon = this.$el.data('showValidStateIcon') ? this.$el.data('showValidStateIcon') : this.opts.showValidStateIcon;\n this.itemsToExclude = this.$el.data('itemsToExclude') ? this.$el.data('itemsToExclude').replace(/\\s/g, '').split(',') : this.opts.itemsToExclude;\n this.primaryKeyword = this.$el.data('primaryKeyword') ? this.$el.data('primaryKeyword') : this.opts.primaryKeyword;\n this.preventClose = false;\n\n if (this.itemsToExclude.length > 0) {\n this.itemsToExclude = this.itemsToExclude.map(String);\n }\n\n if (this.opts.setData) {\n this.data = this.opts.setData;\n }\n\n if (this.$el.data('setData') && this.$el.data('setData') != '') {\n this.data = this.$el.data('setData');\n }\n\n // Convert data to be array so filters doesn't fail\n if (!Array.isArray(this.data[this.name]) && this.data[this.name] !== '' && this.data[this.name].length > 0) {\n\n const arr = this.data[this.name].toString().trim().split(',');\n\n this.data[this.name] = arr;\n }\n\n // Convert all values to string format to make filtering more simple\n if (this.data[this.name].length > 0) {\n this.data[this.name] = this.data[this.name].map(String);\n }\n\n if (this.data[this.name].length > 0 && this.itemsToExclude.length > 0) {\n\n this.data[this.name] = this.data[this.name].filter(function(item) {\n\n if (item[self.primaryKeyword]) {\n\n return self.itemsToExclude.indexOf(item[self.primaryKeyword].toString()) === -1;\n\n } else {\n\n return self.itemsToExclude.indexOf(item.toString()) === -1;\n }\n });\n }\n\n if (this.items.length > 0 && this.itemsToExclude.length > 0) {\n\n this.items = this.items.filter(function(item) {\n\n if (item[self.primaryKeyword]) {\n\n return self.itemsToExclude.indexOf(item[self.primaryKeyword].toString()) === -1;\n\n } else {\n\n return self.itemsToExclude.indexOf(item.toString()) === -1;\n }\n });\n }\n\n if (this.$el.find('.select-search').length) {\n this.showSearch = true;\n } else {\n this.showSearch = this.$el.data('showSearch') ? this.$el.data('showSearch') : this.opts.showSearch;\n }\n\n if (this.$el.find('.select-footer').length) {\n this.showFooter = true;\n } else {\n this.showFooter = this.$el.data('showFooter') ? this.$el.data('showFooter') : this.opts.showFooter;\n }\n\n this.$select = this.$el.find('.select-content');\n\n new Promise((secondaryResolve, secondaryReject) => {\n\n if (!this.$select.length) {\n\n let items = this._renderItemList(this.items);\n\n this.$select = $(`\n <div class=\"select-content\">\n\n ${this._renderSearch()}\n\n <div class=\"select-scrollable-content\"></div>\n\n ${this._renderFooter()}\n\n </div>\n `);\n\n this.$el.append(this.$select);\n this.$select.find('.select-scrollable-content').append(items);\n\n secondaryResolve();\n\n } else {\n\n const selectItems = this.$select.find('.select-item');\n\n if (selectItems.length > 0 && this.itemsToExclude.length > 0) {\n\n $.each(selectItems, (i, el) => {\n\n const val = $(el).find(':input').val();\n\n if (self.itemsToExclude.indexOf(val) > -1) {\n $(el).remove();\n }\n });\n }\n\n secondaryResolve();\n }\n\n }).then(() => {\n\n this.$scrollableContent = this.$select.find('.select-scrollable-content') ? this.$select.find('.select-scrollable-content') : false;\n this.$selectItems = this.$select.find('.select-item');\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectItems.length == 0 && !this.searchApi && this.dynamicTitle && this.dynamicTitleEmptyDefault && this.dynamicTitleEmptyDefault !== 0) {\n\n this.$selectHeader.css('cursor', 'default');\n this.$selectIconContainer.addClass('d-none');\n this.$selectTitle.html(this.dynamicTitleEmptyDefault);\n }\n\n if (this.showSearch) {\n\n this.$searchContainer = this.$select.find('.select-search');\n this.$searchInput = this.$select.find('[name=\"select-search\"]');\n this.$searchIconContainer = this.$select.find('.select-search-icon');\n this.$clearSearchButton = this.$select.find('[data-clear-search]');\n\n // Prevent tabfocus from breaking select functionality\n this.$searchInput[0].tabIndex = -1;\n }\n\n if (this.showFooter) {\n\n this.$footerContainer = this.$select.find('.select-footer');\n this.$closeButton = this.$select.find('[data-select-close]');\n\n // Prevent tabfocus from breaking select functionality\n this.$closeButton[0].tabIndex = -1;\n }\n\n this.buildSearchData();\n\n this.log(this.$el);\n this.log(this.$select);\n this.log(this.$scrollableContent);\n this.log('Name: '+this.name);\n this.log('Show search: '+this.showSearch);\n this.log('Show footer: '+this.showFooter);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n this.log(this.items);\n this.log(this.searchData);\n\n primaryResolve();\n })\n });\n }\n\n // Build scroll\n buildScroll() {\n\n if (this.$scrollableContent.length > 0) {\n\n let scrollContentHeight = this.scrollContentHeight;\n\n if (this.showSearch) {\n scrollContentHeight = scrollContentHeight - (this.$searchContainer.outerHeight(true) || 0);\n }\n\n if (this.showFooter) {\n scrollContentHeight = scrollContentHeight - (this.$footerContainer.outerHeight(true) || 0);\n }\n\n this.$scrollableContent.css({\n 'max-height': (scrollContentHeight - parseInt(this.$scrollableContent.css('marginTop'), 10) - parseInt(this.$scrollableContent.css('marginBottom'), 10)) +'px'\n });\n\n if (touchEvents()) {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n } else {\n\n this.$scrollableContent.addClass('ps-dark');\n this.scroll = new PerfectScrollbar(this.$scrollableContent[0], {\n wheelSpeed: 1,\n wheelPropagation: false,\n minScrollbarLength: 20,\n scrollYMarginOffset : -1,\n suppressScrollY: true,\n suppressScrollX: true,\n });\n\n // Prevent tabfocus from breaking select functionality\n this.$scrollableContent.find('[tabindex=\"0\"]').attr('tabindex', -1);\n\n if (this.$scrollableContent[0].offsetHeight < this.$scrollableContent[0].scrollHeight) {\n\n this.$scrollableContent.addClass('ps-show-rail-y');\n this.scroll.settings.suppressScrollY = false;\n }\n }\n }\n }\n\n // Build search data\n buildSearchData() {\n\n return new Promise((resolve, reject) => {\n\n this.searchData = [];\n\n let selectLabels = this.$select.find('[data-label]');\n\n $.each(selectLabels, (i, el) => {\n\n this.searchData.push({\n id: i,\n val: $(el).text().trim()\n });\n });\n\n resolve();\n });\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n let self = this;\n\n this.$selectHeader.on('click'+'.'+NAME, () => {\n\n if (this.contentOpen) {\n this.close();\n } else if (this.$selectItems.length > 0 || this.searchApi) {\n this.show();\n }\n });\n\n this.$el.on('change'+'.'+NAME, 'input[type=\"checkbox\"]', function() {\n\n let el = this;\n let val = $(this).val();\n let closeTimeout = 600; // ms\n\n self.preventClose = true;\n\n if (typeof self.confirmCheck === 'function' && el.checked) {\n\n el.checked = false;\n\n self.confirmCheck((cb) => {\n\n if (cb == 'confirmed') {\n\n self.data[self.name].indexOf(val) === -1 ? self.data[self.name].push(val) : false;\n el.checked = true;\n self.onSelect(el);\n }\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }, el);\n\n } else if (el.checked) {\n\n self.data[self.name].indexOf(val) === -1 ? self.data[self.name].push(val) : false;\n self.onSelect(el);\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n\n } else if (typeof self.confirmUncheck === 'function' && !el.checked) {\n\n el.checked = true;\n\n self.confirmUncheck((cb) => {\n\n if (cb == 'confirmed') {\n\n self.data[self.name] = self.data[self.name].filter(n => n != val);\n el.checked = false;\n self.onSelect(el);\n }\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }, el);\n\n } else if (!el.checked && !self.preventUncheck) {\n\n self.data[self.name] = self.data[self.name].filter(n => n != val);\n self.onSelect(el);\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n\n } else if (!el.checked && self.preventUncheck) {\n\n el.checked = true;\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }\n });\n\n this.$el.on('change'+'.'+NAME, 'input[type=\"radio\"]', function() {\n\n let val = $(this).val();\n\n if (this.checked) {\n\n self.data[self.name] = [val];\n self.$select.find('input[type=\"radio\"]').not($(this)).prop('checked', false);\n self.$select.find('input[type=\"radio\"]').not($(this)).removeClass('checked');\n\n } else {\n\n self.data[self.name] = [];\n }\n });\n\n this.$el.on('click'+'.'+NAME, 'input[type=\"radio\"]', function() {\n\n if ($(this).hasClass('checked') && self.allowNoneOnRadioSelect) {\n\n self.data[self.name] = [];\n $(this).prop('checked', false);\n $(this).removeClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html(self.dynamicTitleDefault);\n }\n\n } else {\n\n $(this).addClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html($(this).parent().find('[data-label]').text());\n }\n }\n\n self.onSelect(this);\n });\n\n if (this.scroll) {\n\n this.$scrollableContent.find('.ps__thumb-y').mousedown(function() {\n self.$scrollableContent.addClass('ps-mousedown-scroll');\n });\n\n $(document).mouseup(function() {\n\n if (self.$scrollableContent.hasClass('ps-mousedown-scroll')) {\n self.$scrollableContent.removeClass('ps-mousedown-scroll');\n }\n });\n }\n\n if (this.showSearch) {\n\n this.$searchInput.on('keydown'+'.'+NAME, debounce(function () {\n\n self.searchString = $(this).val().trim();\n self.search.call(self);\n\n }, 250));\n\n this.$searchInput.on('focusin'+'.'+NAME, function () {\n\n self.$searchContainer.addClass('focused');\n });\n\n this.$searchInput.on('focusout'+'.'+NAME, function () {\n\n self.$searchContainer.removeClass('focused');\n });\n\n this.$searchContainer.on('click'+'.'+NAME, '[data-clear-search]', function () {\n\n if (self.searchString.length) {\n\n self.$searchInput.val('');\n self.searchString = '';\n self.search.call(self);\n\n } else {\n\n return;\n }\n });\n }\n\n if (this.showFooter) {\n\n this.$closeButton.on('click'+'.'+NAME, () => {\n\n this.close();\n });\n }\n\n $(document).on('touchstart click', function(e) {\n\n if (!self.$el.is(e.target) && !self.$el.has(e.target).length && self.contentOpen && !self.preventClose) {\n\n self.close.call(self);\n }\n });\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Get data\n getData(data) {\n\n if (data) {\n return this.data[data];\n } else {\n return this.data;\n }\n }\n\n // Set data\n setData() {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if (this.showValidStateIcon) {\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-check text-green icon\"></i>`);\n } else {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n if (this.searchApi.length) {\n\n let searchUrl = this.searchApi;\n let itemCount = this.data[this.name].length;\n let currentCount = 0;\n\n this.data[this.name].forEach(function(value) {\n\n searchUrl += encodeURIComponent('#'+value);\n currentCount++;\n\n if (currentCount !== itemCount) {\n searchUrl += '+';\n }\n });\n\n $.ajax({\n method: 'GET',\n url: searchUrl\n }).done(function(data) {\n\n let items = data.map(item => {\n\n item.id = item[self.primaryKeyword].toString();\n\n return item;\n });\n\n let itemIds = items.map(item => {\n return item.id.toString()\n });\n\n // Remove value from data if it doesn't exist anymore\n self.data[self.name] = self.data[self.name].filter(function(value) {\n return itemIds.indexOf(value.toString()) > -1;\n });\n\n if (self.data[self.name].length == 0) {\n self.$selectIconContainer.html(self.selectIconDefault);\n }\n\n items = items.filter(function(item) {\n return self.data[self.name].indexOf(item.id) > -1 && self.itemsToExclude.indexOf(item.id) === -1 && item.id != 0;\n });\n\n let result = self._renderItemList(items);\n\n $.when(self.$scrollableContent.append(result)).then(function() {\n\n let $inputs = self.$scrollableContent.find(':input');\n\n if (self.$scrollableContent[0].offsetHeight < self.$scrollableContent[0].scrollHeight) {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = false;\n self.$scrollableContent.addClass('ps-show-rail-y');\n\n } else {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = true;\n self.$scrollableContent.removeClass('ps-show-rail-y');\n }\n\n if (self.$scrollableContent.find(':input[type=\"checkbox\"]').length) {\n self.type = 'checkbox';\n } else if (self.$scrollableContent.find(':input[type=\"radio\"]').length) {\n self.type = 'radio';\n }\n\n if (self.type == 'checkbox') {\n\n self.data[self.name].forEach(function(value) {\n\n let $input = $inputs.filter(function() {\n return this.value == value;\n });\n\n $input.prop('checked', true);\n\n self.onSelect($input[0]);\n });\n\n } else if (self.type == 'radio') {\n\n let $input = $inputs.filter(function() {\n return this.value == self.data[self.name][0];\n });\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n self.onSelect($input[0]);\n }\n });\n });\n\n } else {\n\n // Remove value from data if it doesn't exist anymore\n let $inputs = this.$scrollableContent.find(':input');\n let inputValues = $inputs.length > 0 ? $inputs.map(function() {\n return this.value.toString();\n }).get() : [];\n\n this.data[this.name] = this.data[this.name].filter(function(value) {\n return inputValues.indexOf(value.toString()) > -1;\n });\n\n if (this.data[this.name].length == 0) {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n if (this.$scrollableContent.find(':input[type=\"checkbox\"]').length) {\n this.type = 'checkbox';\n } else if (this.$scrollableContent.find(':input[type=\"radio\"]').length) {\n this.type = 'radio';\n }\n\n if (this.type == 'checkbox') {\n\n this.data[this.name].forEach(function(value) {\n\n let $input = $inputs.filter(function() {\n return this.value == value\n });\n\n $input.prop('checked', true);\n\n self.onSelect($input[0]);\n });\n\n } else if (this.type == 'radio') {\n\n let $input = $inputs.filter(function() {\n return this.value == self.data[self.name][0];\n });\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n if (this.dynamicTitle) {\n this.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n this.onSelect($input[0]);\n }\n }\n }\n\n // Search\n search() {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if (this.searchString.length) {\n\n if (this.searchApi.length) {\n\n this.$scrollableContent.find('input:not(:checked)').parents('.select-item').not('.static-item').remove();\n\n if (this.searchRequest !== null) {\n this.searchRequest.abort();\n }\n\n this.searchRequest = $.ajax({\n method: 'GET',\n url: this.searchApi + this.searchString\n }).done(function(data) {\n\n self.searchRequest = null;\n\n let items = data.map(item => {\n\n item.id = item[self.primaryKeyword].toString();\n\n return item;\n });\n\n items = items.filter(function(item) {\n return self.data[self.name].indexOf(item.id) === -1 && self.itemsToExclude.indexOf(item.id) === -1 && item.id != 0;\n });\n\n let result = self._renderItemList(items);\n\n $.when(self.$scrollableContent.append(result)).then(function() {\n\n let faNameSpace = self.opts.faPro ? 'fal' : 'fas';\n\n self.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-times icon\"></i>`);\n self.$searchIconContainer.attr('data-clear-search', 'true');\n\n if (self.$scrollableContent[0].offsetHeight < self.$scrollableContent[0].scrollHeight) {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = false;\n self.$scrollableContent.addClass('ps-show-rail-y');\n\n } else {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = true;\n self.$scrollableContent.removeClass('ps-show-rail-y');\n }\n });\n });\n\n } else {\n\n let results = this.searchData.filter(function(item) {\n return item.val.toLocaleLowerCase().indexOf(self.searchString.toLocaleLowerCase()) > -1;\n });\n\n this.$selectItems.removeClass('d-none');\n this.$selectItems.removeClass('visible');\n\n results.forEach(function(item) {\n $(self.$selectItems[item.id]).addClass('visible');\n });\n\n this.$selectItems.not('.visible').addClass('d-none');\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-times icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', 'true');\n }\n\n } else {\n\n if (this.searchApi.length) {\n\n this.$scrollableContent.find('input:not(:checked)').parents('.select-item').not('.static-item').remove();\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-search icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', '');\n\n } else {\n\n this.$selectItems.removeClass('d-none');\n this.$selectItems.removeClass('visible');\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-search icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', '');\n }\n }\n\n if (this.scroll) {\n this.scroll.update();\n }\n\n this.onUpdate();\n }\n\n // Show\n show() {\n\n if (this.$el.hasClass('show')) {\n return;\n }\n\n let $otherSelects = $('.select.show');\n let zindex = 1;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if ($otherSelects.length) {\n zindex = parseInt($otherSelects.first().css('z-index'), 10) + 2;\n }\n\n this.$el.css({\n 'max-height': (this.scrollContentHeight + this.$selectHeader.outerHeight(true))+'px'\n });\n\n this.$el.addClass('show');\n\n if (!$otherSelects.length) {\n zindex = parseInt(this.$el.css('z-index'), 10) + 1;\n }\n\n this.$el.css({\n 'z-index': zindex\n });\n\n if (this.scroll && this.$scrollableContent.length) {\n\n if (this.$scrollableContent[0].offsetHeight < this.$scrollableContent[0].scrollHeight) {\n this.$scrollableContent[0].scrollTop = 1;\n this.$scrollableContent[0].scrollTop = 0;\n }\n }\n\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-angle-up icon\"></i>`);\n\n setTimeout(() => {\n this.$el[0].scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'nearest'});\n }, 300);\n\n this.contentOpen = true;\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.preventClose) {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n this.$el.css('max-height', '');\n this.$el.removeClass('show');\n\n setTimeout(() => {\n self.$el.removeAttr('style');\n }, 300);\n\n if (this.data[this.name].length > 0 && this.showValidStateIcon) {\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-check text-green icon\"></i>`);\n } else {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n this.contentOpen = false;\n this.onClose();\n }\n }\n\n // On select\n onSelect(el) {\n\n let self = this;\n let onSelect = this.opts.onSelect;\n let data = $(el).parents('.select-item').data();\n\n if (this.searchApi.length && !$.isEmptyObject(data)) {\n\n if ($(el).length && el.checked) {\n\n this.items.push(data);\n\n } else {\n\n this.items = $.grep(this.items, function(item) { return item[self.primaryKeyword] != data.id });\n }\n }\n\n if (typeof onSelect === 'function') {\n\n onSelect.call(el, data, this);\n }\n }\n\n // Add more items after plugin is already initialized\n appendItems(items, selectItems) {\n\n return new Promise((resolve, reject) => {\n\n let self = this;\n\n if (!$.isArray(items)) {\n\n let itemsArr = [];\n\n itemsArr.push(items);\n items = itemsArr;\n }\n\n items = items.filter(function(item) {\n return self.itemsToExclude.indexOf(item[self.primaryKeyword].toString()) === -1;\n });\n\n items.forEach(item => {\n\n this.items.push(item);\n });\n\n let domItems = this._renderItemList(items);\n\n this.$scrollableContent.prepend(domItems);\n this.$selectItems = this.$select.find('.select-item');\n\n this.buildSearchData().then(() => {\n\n if (this.$selectItems.length > 0) {\n\n if (this.$select.find(':input[type=\"checkbox\"]').length) {\n this.type = 'checkbox';\n } else if (this.$select.find(':input[type=\"radio\"]').length) {\n this.type = 'radio';\n }\n\n if (this.type == 'checkbox') {\n\n items.forEach(item => {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == item.id });\n let val = $input.val().toString();\n\n $input.prop('checked', true);\n\n this.data[this.name].indexOf(val) === -1 ? this.data[this.name].push(val) : false;\n this.onSelect($input[0]);\n });\n\n } else if (this.type == 'radio') {\n\n let item = items[0];\n let $input = this.$select.find(':input').filter(function() { return this.value == item.id });\n let val = $input.val().toString();\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n this.data[this.name].indexOf(val) === -1 ? this.data[this.name] = [val] : false;\n\n if (this.dynamicTitle) {\n this.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n this.$select.find('input[type=\"radio\"]').not($input).prop('checked', false);\n this.$select.find('input[type=\"radio\"]').not($input).removeClass('checked');\n this.onSelect($input[0]);\n }\n }\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectHeader.attr('style')) {\n this.$selectHeader.removeAttr('style');\n }\n\n if (this.$selectIconContainer.hasClass('d-none')) {\n this.$selectIconContainer.removeClass('d-none');\n }\n\n resolve();\n });\n });\n }\n\n // Deselect items\n deselectItems(array) {\n\n return new Promise((resolve, reject) => {\n\n array.forEach(id => {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == id });\n\n if ($input[0].checked) {\n\n $input.trigger('click');\n }\n });\n\n if (this.data[this.name].length == 0) {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n });\n }\n\n // Get item\n getItem(key, val) {\n\n let result = $.grep(this.items, function(item) { return item[key] == val })[0];\n\n return result ? result : null;\n }\n\n // Get selected items\n getSelectedItems(segment) {\n\n let ids = [];\n let result = [];\n let data = this.data[this.name];\n\n if (!$.isArray(data)) {\n\n ids.push(data);\n\n } else {\n\n ids = data;\n }\n\n ids = ids.map(String);\n\n if (this.items.length > 0) {\n\n result = $.grep(this.items, function(item) { return ids.indexOf(item.id.toString()) > -1 });\n\n if (segment) {\n\n result = result.map(obj => {\n return obj[segment];\n }).filter(obj => {\n return obj != null;\n });\n }\n\n } else {\n\n result = ids;\n }\n\n return result;\n }\n\n // Get selected item\n getSelectedItem(segment) {\n\n let ids = [];\n let result = [];\n let data = this.data[this.name];\n\n if (!$.isArray(data)) {\n\n ids.push(data);\n\n } else {\n\n ids = data;\n }\n\n ids = ids.map(String);\n\n if (this.items.length > 0) {\n\n result = $.grep(this.items, function(item) { return ids.indexOf(item.id.toString()) > -1 });\n\n if (segment) {\n\n result = result.map(obj => {\n return obj[segment];\n }).filter(obj => {\n return obj != null;\n });\n }\n\n } else {\n\n result = ids;\n }\n\n return result[0] == null ? null : result[0];\n }\n\n _renderItemList(items) {\n\n let result = [];\n\n for (let i = 0; i < items.length; ++i) {\n\n let item = items[i];\n let label = '';\n\n if (typeof this.labelTemplate === 'function') {\n\n label = this.labelTemplate(item);\n\n } else {\n\n if (item.name) {\n label = item.name;\n } else if (item.label) {\n label = item.label;\n } else if (item.value) {\n label = item.value;\n }\n }\n\n result.push($(`\n\n <div class=\"select-item\">\n\n <div class=\"select-item-${this.type}\">\n\n <div class=\"styled-${this.type}\">\n\n <input type=\"${this.type}\" id=\"select-${this.name}-${items[i].id}\" value=\"${items[i].id}\" tabindex=\"-1\">\n\n <label for=\"select-${this.name}-${items[i].id}\">\n\n <span class=\"radio-inner\">\n <svg viewBox=\"0 0 18 18\">\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\n </svg>\n </span>\n\n <span class=\"${this.type}-label\"${typeof this.labelTemplate !== 'function' ? ' data-label' : ''}>\n ${label}\n </span>\n\n </label>\n\n </div>\n\n </div>\n\n </div>\n\n `).data(item));\n }\n\n return result;\n }\n\n _renderSearch() {\n\n if (!this.showSearch) {\n\n return '';\n\n } else {\n\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n return `\n\n <div class=\"select-search\">\n\n <div class=\"select-search-input\">\n\n <input type=\"text\" name=\"select-search\" value=\"\" placeholder=\"${this.searchPlaceholder}\" tabindex=\"-1\">\n\n </div>\n\n <div class=\"select-search-icon\">\n\n <i class=\"${faNameSpace} fa-search icon\"></i>\n\n </div>\n\n </div>\n\n `;\n }\n }\n\n _renderFooter() {\n\n if (!this.showFooter) {\n\n return '';\n\n } else {\n\n return `\n\n <div class=\"select-footer\">\n\n <button class=\"btn btn-block btn-secondary\" type=\"button\" tabindex=\"-1\" data-select-close >\n ${this.btnCloseText}\n </button>\n\n </div>\n\n `;\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Select(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Select._jQueryInterface;\n $.fn[NAME].Constructor = Select;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Select._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n name: '',\n type: 'checkbox',\n labelTemplate: null,\n confirmCheck: null,\n confirmUncheck: null,\n setData: null,\n scrollContentHeight: 100,\n faPro: false,\n items: [],\n showSearch: false,\n showFooter: false,\n searchApi: false,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n onReset: null,\n onSearch: null,\n onSelect: null,\n buildScroll: null,\n searchPlaceholder: null,\n btnCloseText: null,\n debug: false,\n dynamicTitle: false,\n dynamicTitleDefault: '',\n dynamicTitleEmptyDefault: '',\n allowNoneOnRadioSelect: true,\n preventUncheck: false,\n showValidStateIcon: true,\n itemsToExclude: [],\n primaryKeyword: 'id'\n }\n}\n\nexport default Select;","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolDropdown';\nconst DATA_KEY = 'plugin_coolDropdown';\n\nclass Dropdown extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.dropdown) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.dropdown, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n $.when(this.buildCache()).then(() => {\n this.buildScroll();\n this.bindEvents();\n this.onInit();\n });\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$el.addClass('dropdown-trigger');\n this.$container = this.$el.parent('.dropdown');\n this.id = 'dropdown-'+this.generateUUID();\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.offset = this.$el.data('offset') ? this.$el.data('offset') : this.opts.offset;\n this.minWidth = this.$el.data('minWidth') ? this.$el.data('minWidth') : this.opts.minWidth;\n this.scroll = this.$el.data('scroll') ? this.$el.data('scroll') : this.opts.scroll;\n this.scrollContentHeight = this.$el.data('scrollContentHeight') ? this.$el.data('scrollContentHeight') : this.opts.scrollContentHeight;\n this.positionObserver = this.$el.attr('data-position-observer') ? JSON.parse(this.$el.attr('data-position-observer')) : this.opts.positionObserver;\n this.closeOnItemClick = this.$el.data('closeOnItemClick') ? this.$el.data('closeOnItemClick') : this.opts.closeOnItemClick;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n this.contentOpen = false;\n\n if (this.$container.hasClass('dropup')) {\n this.placement = 'top';\n } else if (this.$container.hasClass('dropright')) {\n this.placement = 'right';\n } else if (this.$container.hasClass('dropbottom')) {\n this.placement = 'bottom';\n } else {\n this.placement = 'left';\n }\n\n if (typeof this.content === 'function') {\n\n let menuRight = this.opts.align === 'end' ? ' dropdown-menu-right' : '';\n\n this.$dropdown = $(`\n <div class=\"dropdown-menu${menuRight}\" id=\"${this.id}\">\n ${this.content}\n </div>\n `);\n\n $.when(this.$el.after(this.$dropdown)).then(() => {\n\n this.$scrollableContent = this.$dropdown.find('.dropdown-scrollable-content') ? this.$dropdown.find('.dropdown-scrollable-content') : false;\n this.$dropdown.hasClass('dropdown-menu-right') ? this.align = 'end' : this.align = 'start';\n this.$dropdownItem = this.$dropdown.find('.dropdown-item');\n\n if (this.minWidth) {\n this.$dropdown.css('min-width', this.minWidth+'px');\n }\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$dropdown);\n this.log(this.$scrollableContent);\n this.log('Id: '+this.id);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Offset: '+this.offset);\n this.log('Min width: '+this.minWidth);\n this.log('Content: '+this.content);\n this.log('Scroll: '+this.scroll);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n\n return true;\n });\n\n } else {\n\n this.$dropdown = this.$el.next('.dropdown-menu') ? this.$el.next('.dropdown-menu') : false;\n this.$dropdown.hasClass('dropdown-menu-right') ? this.align = 'end' : this.align = 'start';\n this.$scrollableContent = this.$dropdown.find('.dropdown-scrollable-content') ? this.$dropdown.find('.dropdown-scrollable-content') : false;\n this.$dropdownItem = this.$dropdown.find('.dropdown-item');\n\n if (this.minWidth) {\n this.$dropdown.css('min-width', this.minWidth+'px');\n }\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$dropdown);\n this.log(this.$scrollableContent);\n this.log('Id: '+this.id);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Offset: '+this.offset);\n this.log('Min width: '+this.minWidth);\n this.log('Content: '+this.opts.content);\n this.log('Scroll: '+this.scroll);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n\n return true;\n }\n }\n\n // Build scroll\n buildScroll() {\n\n if (this.opts.scroll && this.$scrollableContent.length) {\n\n this.$scrollableContent.css({\n 'max-height': this.scrollContentHeight+'px'\n });\n\n if (touchEvents()) {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n } else {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n this.scroll = new PerfectScrollbar(this.$scrollableContent[0], {\n wheelSpeed: 1,\n wheelPropagation: false,\n minScrollbarLength: 20\n });\n\n this.$scrollableContent.addClass('ps-show-rail-y');\n }\n }\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n let self = this;\n\n this.$el.on('click'+'.'+NAME, () => {\n\n if (this.contentOpen) {\n this.close();\n } else {\n this.show();\n }\n });\n\n this.$dropdownItem.on('click'+'.'+NAME, function() {\n\n if (self.closeOnItemClick) {\n self.close();\n }\n\n self.onItemClick(this);\n });\n\n $(document).on('touchstart click', (e) => {\n\n if (!this.$el.is(e.target) && !this.$dropdown.is(e.target) && this.$dropdown.has(e.target).length === 0 && this.contentOpen) {\n this.close();\n }\n });\n\n $(window).on('resize', debounce(() => {\n\n this.setPosition();\n this.onUpdate();\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof str === 'undefined' || str === null) {\n placement = this.placement;\n }\n\n let dropdownWidth = this.$dropdown.outerWidth(true);\n let dropdownHeight = this.$dropdown.outerHeight(true);\n let dropdownTriggerWidth = this.$el.outerWidth(true);\n let dropdownTriggerHeight = this.$el.outerHeight(true);\n let dropdownTriggerPosX = this.$el.position().left;\n let dropdownTriggerPosY = this.$el.position().top;\n let dropdownPosX = 0;\n let dropdownPosY = 0;\n let offsetX = 0;\n let offsetY = 0;\n\n if (placement === 'top') {\n\n if (this.align === 'end') {\n dropdownPosX = dropdownTriggerWidth - dropdownWidth;\n } else {\n dropdownPosX = dropdownTriggerPosX;\n }\n\n dropdownPosY = dropdownTriggerPosY - dropdownHeight;\n\n } else if (placement === 'right') {\n\n dropdownPosX = dropdownTriggerPosX + dropdownTriggerWidth;\n dropdownPosY = dropdownTriggerPosY;\n\n } else if (placement === 'bottom') {\n\n if (this.align === 'end') {\n dropdownPosX = dropdownTriggerWidth - dropdownWidth;\n } else {\n dropdownPosX = dropdownTriggerPosX;\n }\n\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight;\n\n } else if (placement === 'left') {\n\n dropdownPosX = dropdownTriggerPosX - dropdownWidth;\n dropdownPosY = dropdownTriggerPosY;\n }\n\n if (this.offset) {\n\n const offsets = this.offset.split(',');\n\n offsetX = offsets[0];\n offsetY = offsets[1];\n dropdownPosX += parseInt(offsetX, 10);\n dropdownPosY += parseInt(offsetY, 10);\n }\n\n if (this.positionObserver && this.$container.length > 0) {\n\n // this is not set during init so we have to fetch it\n // and let's assume that this containing parent fits and is inside\n // viewport\n let $containingParent = this.$container.parent();\n let index = 0;\n while (\n $containingParent.css('overflow-x') !== 'hidden' && \n $containingParent.css('overflow') !== 'hidden' &&\n ($containingParent.prop('tagName') || '').toLowerCase() !== 'body' &&\n index < 100\n ) {\n $containingParent = $containingParent.parent();\n\n if (!$containingParent.get(0)) {\n return;\n }\n\n ++index;\n }\n\n if (!$containingParent.get(0)) {\n return;\n }\n\n const containingBoundingRect = $containingParent.get(0).getBoundingClientRect();\n const containerBoundingRect = this.$container.get(0).getBoundingClientRect();\n\n if (containingBoundingRect.width < dropdownWidth) {\n this.$dropdown.css('max-width', containingBoundingRect.width);\n dropdownWidth = containingBoundingRect.width;\n } else {\n this.$dropdown.css('max-width', '');\n }\n\n if (containingBoundingRect.height < dropdownHeight) {\n this.$dropdown.css('max-height', containingBoundingRect.height);\n dropdownHeight = containingBoundingRect.height;\n } else {\n this.$dropdown.css('max-height', '');\n }\n\n const maxTop = Math.max(Math.abs(containingBoundingRect.y - containerBoundingRect.y), 0);\n const maxLeft = Math.max(Math.abs(containingBoundingRect.x - containerBoundingRect.x), 0);\n const maxRight = $containingParent.get(0).scrollWidth - (containerBoundingRect.x + containerBoundingRect.width);\n const maxBottom = $containingParent.get(0).scrollHeight - (containerBoundingRect.y + (placement === 'dropbottom' ? containerBoundingRect.height : 0));\n\n if (maxLeft < dropdownWidth && dropdownPosX < dropdownTriggerPosX) {\n dropdownPosX = dropdownTriggerPosX;\n\n // would be on top of the trigger\n if (dropdownTriggerPosY + dropdownTriggerHeight > dropdownPosY) {\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + (offsetY > 0 ? offsetY : 0);\n }\n }\n\n if (maxRight < dropdownWidth && dropdownPosX + dropdownWidth > dropdownTriggerPosX + dropdownTriggerWidth) {\n dropdownPosX = dropdownTriggerPosX + dropdownTriggerWidth - dropdownWidth;\n\n if (dropdownTriggerPosY + dropdownTriggerHeight > dropdownPosY) {\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + (offsetY > 0 ? offsetY : 0);\n }\n }\n\n if (dropdownPosY < dropdownTriggerPosY && maxTop < dropdownHeight) {\n dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + offsetY;\n }\n\n if (dropdownPosY >= dropdownTriggerPosY && maxBottom < dropdownHeight) {\n if (dropdownPosX >= dropdownTriggerPosX + dropdownTriggerWidth || dropdownTriggerPosX >= dropdownPosX + dropdownWidth) {\n dropdownPosY = dropdownTriggerPosY - (dropdownHeight - maxBottom);\n } else {\n dropdownPosY = dropdownTriggerPosY - dropdownHeight - offsetY\n }\n }\n }\n\n this.$dropdown.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+Math.round(dropdownPosX)+'px, '+Math.round(dropdownPosY)+'px, 0px)',\n 'will-change': 'transform'\n });\n\n this.log('Dropdown trigger width: '+dropdownTriggerWidth+'px');\n this.log('Dropdown trigger height: '+dropdownTriggerHeight+'px');\n this.log('Dropdown trigger position x: '+dropdownTriggerPosX+'px');\n this.log('Dropdown trigger position Y: '+dropdownTriggerPosY+'px');\n this.log('Dropdown width: '+dropdownWidth+'px');\n this.log('Dropdown height: '+dropdownHeight+'px');\n this.log('Dropdown position x: '+dropdownPosX+'px');\n this.log('Dropdown position y: '+dropdownPosY+'px');\n }\n\n // Show\n show() {\n\n if (!this.$dropdown || this.$dropdown.hasClass('show')) {\n return;\n }\n\n this.setPosition();\n\n if (this.animation) {\n\n this.$dropdown.attr('x-placement', this.placement+'-'+this.align);\n this.$dropdown.addClass(this.animationSpeed);\n this.$dropdown.animateCss(this.animationIn);\n this.$dropdown.addClass('show');\n this.$dropdown.attr('id', this.id);\n this.$el.attr('data-dropdown', this.id);\n\n } else {\n\n this.$dropdown.attr('x-placement', this.placement+'-'+this.align);\n this.$dropdown.addClass('show');\n this.$dropdown.attr('id', this.id);\n this.$el.attr('data-dropdown', this.id);\n }\n\n if (this.opts.scroll && this.scroll && this.$scrollableContent.length) {\n this.$scrollableContent[0].scrollTop = 1;\n this.$scrollableContent[0].scrollTop = 0;\n }\n\n this.contentOpen = true;\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.$dropdown) {\n return;\n }\n\n if (this.animation && !this.$dropdown.hasClass('animated')) {\n\n this.$dropdown.animateCss(this.animationOut, () => {\n this.$dropdown.removeClass('show');\n this.$el.removeAttr('data-dropdown');\n });\n\n } else {\n\n this.$dropdown.removeClass('show');\n this.$el.removeAttr('data-dropdown');\n }\n\n this.contentOpen = false;\n this.onClose();\n }\n\n // Item callback\n onItemClick(el) {\n\n let onItemClick = this.opts.onItemClick;\n\n if (typeof onItemClick === 'function') {\n\n onItemClick.call(el);\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Dropdown._jQueryInterface;\n $.fn[NAME].Constructor = Dropdown;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Dropdown._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n animation: true,\n animationIn: 'zoomIn',\n animationOut: 'zoomOut',\n animationSpeed: 'fastest',\n offset: null,\n minWidth: null,\n align: 'start',\n closeOnItemClick: true,\n positionObserver: true,\n content: false,\n scroll: true,\n scrollContentHeight: 100,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n onItemClick: null,\n debug: false\n }\n}\n\nexport default Dropdown;","import 'jquery';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolTooltip';\nconst DATA_KEY = 'plugin_coolTooltip';\n\nclass Tooltip extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.tooltip) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.tooltip, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache();\n this.bindEvents();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$container = this.$el.data('container') ? $(this.$el.data('container')) : $(this.opts.container);\n this.id = 'tooltip-'+this.generateUUID();\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.placement = this.$el.data('placement') ? this.$el.data('placement') : this.opts.placement;\n this.placementChanged = false;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n this.$el.on('mouseenter'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('mouseleave'+'.'+NAME, () => {\n\n this.close();\n });\n\n this.$el.on('blur'+'.'+NAME, () => {\n\n this.close();\n });\n\n this.$el.on('destroyed'+'.'+NAME, () => {\n\n this.close();\n });\n\n $(window).on('resize', debounce(() => {\n\n if (this.$tooltip) {\n this.setPosition();\n this.onUpdate();\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Build tooltip\n buildTooltip() {\n\n this.$tooltip = $(`\n\n <div class=\"tooltip\" role=\"tooltip\" id=\"${this.id}\">\n\n <div class=\"arrow\"></div>\n\n <div class=\"tooltip-inner\">${this.content}</div>\n\n </div>\n\n `);\n\n this.$container.append(this.$tooltip);\n this.$arrow = this.$tooltip.find('.arrow');\n\n this.log(this.$el);\n this.log(this.$container);\n this.log(this.$tooltip);\n this.log(this.$arrow);\n this.log('Id: '+this.id);\n this.log('Animation: '+this.animation);\n this.log('Animation in: '+this.animationIn);\n this.log('Animation out: '+this.animationOut);\n this.log('Animation speed: '+this.animationSpeed);\n this.log('Placement: '+this.placement);\n this.log('Content: '+this.content);\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof placement === 'undefined' || placement === null) {\n placement = this.placement;\n }\n\n this.$tooltip.addClass('tooltip-'+placement);\n\n let containerInnerWidth = this.$container.innerWidth();\n let containerInnerHeight = this.$container.innerHeight();\n let tooltipWidth = this.$tooltip.outerWidth(true);\n let tooltipHeight = this.$tooltip.outerHeight(true);\n let tooltipTriggerWidth = this.$el.outerWidth();\n let tooltipTriggerHeight = this.$el.outerHeight();\n let tooltipTriggerPosX = this.$el.offset().left;\n let tooltipTriggerPosY = this.$el.offset().top;\n let arrowWidth = this.$arrow.outerWidth(true);\n let arrowHeight = this.$arrow.outerHeight(true);\n let arrowPos;\n let tooltipPosX;\n let tooltipPosY;\n\n if (placement === 'top') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX - (tooltipWidth - tooltipTriggerWidth) / 2);\n tooltipPosY = Math.round(tooltipTriggerPosY - tooltipHeight);\n arrowPos = Math.round(tooltipWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX + tooltipTriggerWidth);\n tooltipPosY = Math.round(tooltipTriggerPosY - (tooltipHeight - tooltipTriggerHeight) / 2);\n arrowPos = Math.round(tooltipHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX - (tooltipWidth - tooltipTriggerWidth) / 2);\n tooltipPosY = Math.round(tooltipTriggerPosY + tooltipTriggerHeight);\n arrowPos = Math.round(tooltipWidth / 2 - arrowWidth / 2);\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n tooltipPosX = Math.round(tooltipTriggerPosX - tooltipWidth);\n tooltipPosY = Math.round(tooltipTriggerPosY - (tooltipHeight - tooltipTriggerHeight) / 2);\n arrowPos = Math.round(tooltipHeight / 2 - arrowHeight / 2);\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$tooltip.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+tooltipPosX+'px, '+tooltipPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n // Correct placement if tooltip goes outside of container\n let tooltipOverflowCount = 0;\n let tooltipPosition = {\n left: this.$tooltip.position().left,\n top: this.$tooltip.position().top,\n right: containerInnerWidth - (this.$tooltip.position().left + tooltipWidth),\n bottom: containerInnerHeight - (this.$tooltip.position().top + tooltipHeight),\n };\n let tooltipOverflow = {\n left: false,\n top: false,\n right: false,\n bottom: false\n };\n\n if (tooltipPosition.right < 0) {\n\n tooltipOverflow.right = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from right');\n }\n\n if (tooltipPosition.left < 0) {\n\n tooltipOverflow.left = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from left');\n }\n\n if (tooltipPosition.bottom < 0) {\n\n tooltipOverflow.bottom = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from bottom');\n }\n\n if (tooltipPosition.top < 0) {\n\n tooltipOverflow.top = true;\n tooltipOverflowCount++;\n\n this.log('Tooltip overflowing from top');\n }\n\n if (tooltipOverflowCount > 0) {\n\n if (!this.placementChanged && tooltipOverflow.left && tooltipPosition.right > tooltipWidth) {\n\n this.log('Changing tooltip placement to right');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('right');\n\n } else if (!this.placementChanged && tooltipOverflow.top && tooltipPosition.top > tooltipHeight) {\n\n this.log('Changing tooltip placement to bottom');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n\n } else if (!this.placementChanged && tooltipOverflow.right && tooltipPosition.left > tooltipWidth) {\n\n this.log('Changing tooltip placement to left');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('left');\n\n } else if (!this.placementChanged && tooltipOverflow.bottom && tooltipPosition.top > tooltipHeight) {\n\n this.log('Changing tooltip placement to top');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else if (!this.placementChanged && (placement !== 'top' || placement !== 'bottom') && (tooltipOverflow.left || tooltipOverflow.right)) {\n\n if (tooltipPosition.top > tooltipPosition.bottom) {\n\n this.log('Changing tooltip placement to top');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('top');\n\n } else {\n\n this.log('Changing tooltip placement to bottom');\n\n this.placementChanged = true;\n this.$tooltip.removeClass('tooltip-'+placement);\n this.$arrow.removeAttr('style');\n this.setPosition('bottom');\n }\n\n } else {\n\n this.fixTooltipPosition = true;\n }\n\n if (this.fixTooltipPosition) {\n\n this.log('Adjusting tooltip size or position in order to tooltip fit in the container');\n\n if (tooltipOverflow.left) {\n\n this.log('Tooltip overflowing from left');\n\n let overflowAmount = Math.abs(tooltipPosition.left);\n let excludePlacements = ['top', 'bottom'];\n\n if ((tooltipTriggerPosX >= tooltipPosX + overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Tooltip adjusting width');\n\n tooltipWidth -= overflowAmount;\n tooltipPosX += overflowAmount;\n\n } else {\n\n this.log('Tooltip adjusting position x');\n\n tooltipPosX += overflowAmount;\n arrowPos -= overflowAmount;\n }\n }\n\n if (tooltipOverflow.top) {\n\n this.log('Tooltip overflowing from top');\n\n let overflowAmount = Math.abs(tooltipPosition.top);\n\n this.log('Tooltip adjusting position y');\n\n tooltipPosY += overflowAmount;\n arrowPos -= overflowAmount;\n }\n\n if (tooltipOverflow.right) {\n\n this.log('Tooltip overflowing from right');\n\n let overflowAmount = Math.abs(tooltipPosition.right);\n let excludePlacements = ['top', 'bottom'];\n\n if ((tooltipTriggerPosX <= tooltipPosX - overflowAmount) && excludePlacements.indexOf(placement) < 0) {\n\n this.log('Tooltip adjusting width');\n\n tooltipWidth -= overflowAmount;\n\n } else {\n\n this.log('Tooltip adjusting position x');\n\n tooltipPosX -= overflowAmount;\n arrowPos += overflowAmount;\n }\n }\n\n if (tooltipOverflow.bottom) {\n\n this.log('Tooltip overflowing from bottom');\n\n let overflowAmount = Math.abs(tooltipPosition.bottom);\n\n this.log('Tooltip adjusting position y');\n\n tooltipPosY -= overflowAmount;\n arrowPos += overflowAmount;\n }\n\n if (placement === 'top') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$tooltip.css({\n width: tooltipWidth,\n transform: 'translate3d('+tooltipPosX+'px, '+tooltipPosY+'px, 0px)'\n });\n\n this.fixTooltipPosition = false;\n\n this.log('Tooltip placement changed: '+this.placementChanged);\n this.log('Tooltip container inner width: '+containerInnerWidth+'px');\n this.log('Tooltip container inner height: '+containerInnerHeight+'px');\n this.log('Tooltip trigger width: '+tooltipTriggerWidth+'px');\n this.log('Tooltip trigger height: '+tooltipTriggerHeight+'px');\n this.log('Tooltip trigger position x: '+tooltipTriggerPosX+'px');\n this.log('Tooltip trigger position Y: '+tooltipTriggerPosY+'px');\n this.log('Tooltip width: '+tooltipWidth+'px');\n this.log('Tooltip height: '+tooltipHeight+'px');\n this.log('Tooltip position x: '+tooltipPosX+'px');\n this.log('Tooltip position y: '+tooltipPosY+'px');\n this.log('Tooltip position left: '+tooltipPosition.left+'px');\n this.log('Tooltip position top: '+tooltipPosition.top+'px');\n this.log('Tooltip position right: '+tooltipPosition.right+'px');\n this.log('Tooltip position bottom: '+tooltipPosition.bottom+'px');\n }\n\n } else {\n\n this.log('Tooltip placement changed: '+this.placementChanged);\n this.log('Tooltip container inner width: '+containerInnerWidth+'px');\n this.log('Tooltip container inner height: '+containerInnerHeight+'px');\n this.log('Tooltip trigger width: '+tooltipTriggerWidth+'px');\n this.log('Tooltip trigger height: '+tooltipTriggerHeight+'px');\n this.log('Tooltip trigger position x: '+tooltipTriggerPosX+'px');\n this.log('Tooltip trigger position Y: '+tooltipTriggerPosY+'px');\n this.log('Tooltip width: '+tooltipWidth+'px');\n this.log('Tooltip height: '+tooltipHeight+'px');\n this.log('Tooltip position x: '+tooltipPosX+'px');\n this.log('Tooltip position y: '+tooltipPosY+'px');\n this.log('Tooltip position left: '+tooltipPosition.left+'px');\n this.log('Tooltip position top: '+tooltipPosition.top+'px');\n this.log('Tooltip position right: '+tooltipPosition.right+'px');\n this.log('Tooltip position bottom: '+tooltipPosition.bottom+'px');\n }\n }\n\n // Show\n show() {\n\n if (this.$tooltip) {\n return;\n }\n\n this.buildTooltip();\n this.setPosition();\n\n if (this.animation) {\n\n this.$tooltip.addClass(this.animationSpeed);\n this.$tooltip.animateCss(this.animationIn);\n this.$tooltip.addClass('show');\n this.$tooltip.attr('id', this.id);\n this.$el.attr('data-tooltip', this.id);\n\n } else {\n\n this.$tooltip.addClass('show');\n this.$tooltip.attr('id', this.id);\n this.$el.attr('data-tooltip', this.id);\n }\n\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.$tooltip) {\n return;\n }\n\n if (this.animation && !this.$tooltip.hasClass('animated')) {\n\n this.$tooltip.animateCss(this.animationOut, () => {\n\n this.$tooltip.remove();\n this.$el.removeAttr('data-tooltip');\n this.$tooltip = null;\n this.placementChanged = false;\n\n this.onClose();\n });\n\n } else {\n\n this.$tooltip.remove();\n this.$el.removeAttr('data-tooltip');\n this.$tooltip = null;\n this.placementChanged = false;\n\n this.onClose();\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Tooltip(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Tooltip._jQueryInterface;\n $.fn[NAME].Constructor = Tooltip;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Tooltip._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n container: 'body',\n animation: false,\n animationIn: 'fadeIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n placement: 'bottom',\n content: '',\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n }\n}\n\nexport default Tooltip;","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolSectionTabs';\nconst DATA_KEY = 'plugin_coolSectionTabs';\n\nclass SectionTabs extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.sectionTabs) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.sectionTabs, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache();\n this.bindEvents();\n this.checkForChanges();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$dropdownContainer = this.$el.find('.dropdown-container');\n this.$dropdownList = this.$el.find('.dropdown-list');\n this.tabsCount = this.$el.find('> .tab-item').length;\n this.tabs = this.$el.find('> .tab-item:visible');\n\n $.each(this.tabs, function(i, el) {\n $(el).data('width', $(el).outerWidth(true));\n });\n\n this.log(this.$el);\n this.log(this.$dropdownContainer);\n this.log(this.$dropdownList);\n this.log(this.tabsCount);\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n $(window).on('resize', debounce(() => {\n this.checkForChanges();\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+this._name);\n }\n\n // Move to list\n moveToList(el) {\n\n $(el).insertBefore(this.$dropdownContainer);\n\n this.checkForChanges();\n }\n\n // Move to dropdown\n moveToDropdown(el) {\n\n $(el).appendTo(this.$dropdownList);\n\n this.checkForChanges();\n }\n\n // Overflow status\n overflowStatus() {\n\n if (this.$el[0].offsetWidth < this.$el[0].scrollWidth) {\n return true;\n } else {\n return false;\n }\n }\n\n // CheckForChanges\n checkForChanges() {\n\n let dropdownItems = this.$dropdownList.children();\n let moveableTabs = this.$el.find('> .tab-item').not(this.$dropdownContainer);\n let tabs = this.$el.find('> .tab-item:visible');\n let usedSpace = 0;\n\n $.each(tabs, function(i, el) {\n usedSpace += $(el).outerWidth(true);\n });\n\n let freeSpace = this.$el[0].offsetWidth - usedSpace;\n\n if (dropdownItems.length > 0) {\n\n if (!this.$dropdownContainer.hasClass('visible')) {\n this.$dropdownContainer.addClass('visible');\n }\n\n } else {\n\n if (this.$dropdownContainer.hasClass('visible')) {\n this.$dropdownContainer.removeClass('visible');\n }\n }\n\n if (this.overflowStatus() == true) {\n\n if (moveableTabs.length > 0) {\n this.moveToDropdown(moveableTabs.last());\n }\n\n } else {\n\n if (dropdownItems.length > 0) {\n\n if (freeSpace > dropdownItems.last().data('width')) {\n this.moveToList(dropdownItems.last());\n }\n }\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new SectionTabs(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = SectionTabs._jQueryInterface;\n $.fn[NAME].Constructor = SectionTabs;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return SectionTabs._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n debug: false\n }\n}\n\nexport default SectionTabs;\n","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolCollapse';\nconst DATA_KEY = 'plugin_coolCollapse';\n\nclass Collapse extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.collapse) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.dialog, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache()\n this.bindEvents();\n this.onInit();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n this.$el = $(this.el);\n this.$target = this.$el.data('target') ? $(document).find(this.$el.data('target')) : $(document).find(this.opts.target);\n this.expanded = this.$el.attr('aria-expanded') == 'true' ? true : false;\n\n if (this.$target.length) {\n\n this.targetHeight = this.$target.height();\n this.$container = this.$target.closest('.section-collapse');\n this.$indicator = $(document).find('[data-collapse-indicator=\"' + this.$el.data('target') + '\"]');\n\n } else {\n\n this.$target = $(this.$el).parent().find('.collapse');\n this.targetHeight = this.$target.height();\n this.$container = this.$target.closest('.section-collapse');\n this.$indicator = $(this.$el).parent().find('[data-collapse-indicator]');\n }\n\n if (this.expanded) {\n this.$target.css('height', 'auto');\n }\n\n this.log(this.$el);\n this.log(this.$target);\n this.log(this.$container);\n this.log(this.$indicator);\n this.log('Expanded: '+this.expanded);\n this.log('Target height: '+this.targetHeight+'px');\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n this.$el.on('click'+'.'+this.name, (e) => {\n\n if (this.expanded) {\n this.close();\n } else {\n this.show();\n }\n });\n\n $(window).on('resize', debounce(() => {\n\n if (this.$target.length) {\n\n this.targetHeight = this.$target.height();\n this.log('Target height: '+this.targetHeight+'px');\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+this.name);\n }\n\n // Which transition\n whichTransitionEvent() {\n\n let el = document.createElement('text-transition');\n let transEndEventNames = {\n 'WebkitTransition': 'webkitTransitionEnd', // Saf 6, Android Browser\n 'MozTransition': 'transitionend', // only for FF < 15\n 'transition': 'transitionend' // IE10, Opera, Chrome, FF 15+, Saf 7+\n };\n\n for (let t in transEndEventNames) {\n\n if (el.style[t] !== undefined) {\n return transEndEventNames[t];\n }\n }\n }\n\n // Show\n show() {\n\n // Update target height if something is added to dom which causes height to change\n if (this.targetHeight !== this.$target.height()) {\n this.targetHeight = this.$target.height();\n }\n\n this.$target.removeClass('collapse show');\n this.$target.addClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', true);\n }\n\n if (this.$container.length) {\n this.$container.addClass('show');\n }\n\n this.$target.css('height');\n this.$target.css('height', this.targetHeight);\n\n if (this.$indicator.length) {\n this.$indicator.addClass('show');\n }\n\n this.$target.one(this.whichTransitionEvent(), () => {\n\n this.$target.removeClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', false);\n }\n\n this.$target.removeAttr('style');\n this.$target.addClass('collapse show');\n this.$el.attr('aria-expanded', true);\n this.$target.css('height', 'auto');\n this.expanded = true;\n });\n\n this.onShow();\n }\n\n // Close\n close() {\n\n this.$target.removeClass('collapse show');\n this.$target.addClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', true);\n }\n\n if (this.$container.length) {\n this.$container.removeClass('show');\n }\n\n this.$target.css('height', this.$target.height());\n\n setTimeout(() => {\n this.$target.css('height', 0);\n }, 10);\n\n if (this.$indicator.length && this.$indicator.hasClass('show')) {\n this.$indicator.removeClass('show');\n }\n\n this.$target.one(this.whichTransitionEvent(), () => {\n\n this.$target.removeClass('collapsing');\n\n if (this.$el.is('button')) {\n this.$el.attr('disabled', false);\n }\n\n this.$target.removeAttr('style');\n this.$target.addClass('collapse');\n this.$el.attr('aria-expanded', false);\n this.expanded = false;\n\n // Update target height if something is added to dom which causes height to change\n if (this.targetHeight !== this.$target.height()) {\n this.targetHeight = this.$target.height();\n }\n });\n\n this.onClose();\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Collapse(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Collapse._jQueryInterface;\n $.fn[NAME].Constructor = Collapse;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Collapse._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n target: null,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n }\n}\n\nexport default Collapse;","import 'jquery';\nimport { debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolToast';\nconst DATA_KEY = 'plugin_coolToast';\n\nclass Toast {\n\n constructor(container, opts) {\n\n this.settings = {};\n\n if (window.Cool.settings.toast) {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, window.Cool.settings.toast, opts);\n\n } else {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, opts);\n }\n\n this.container = container;\n this.$container = $(this.container);\n this.debug = this.settings.debug;\n this.faPro = this.settings.faPro;\n this.toasts = [];\n this.queue = [];\n this.processingQueue = false;\n this.onInitialize = this.settings.onInitialize;\n this.onDestroy = this.settings.onDestroy;\n }\n\n // Add item to queue\n addQueue(toast) {\n\n this.queue.push(toast);\n\n if (this.processingQueue) {\n return;\n }\n\n return this.processQueue();\n }\n\n // Process queue\n processQueue() {\n\n if (this.processingQueue) {\n\n this.queue.shift();\n }\n\n if (!this.queue.length) {\n\n this.processingQueue = false;\n return;\n }\n\n this.processingQueue = true;\n\n return this.show(this.queue[0]);\n }\n\n // Init toast\n init(opts) {\n\n let settings = {};\n\n $.extend(true, settings, this.settings, opts);\n\n let toast = this.buildToast(settings);\n\n this.addQueue(toast);\n this.onInit(toast);\n\n return toast;\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.$container.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Build toast\n buildToast(settings) {\n\n let toast = {\n uuid: 'toast-'+this.generateUUID(),\n placement: settings.placement,\n placementX: settings.placementX,\n placementY: settings.placementY,\n offset: settings.offset,\n animation: settings.animation,\n animationIn: settings.animationIn,\n animationOut: settings.animationOut,\n animationSpeed: settings.animationSpeed,\n dismiss: settings.dismiss,\n size: settings.size,\n header: settings.header,\n theme: settings.theme,\n title: settings.title,\n content: settings.content,\n template: settings.template,\n maxBodyHeight: settings.maxBodyHeight,\n onInit: settings.onInit,\n onShow: settings.onShow,\n onClose: settings.onClose\n };\n\n if (typeof toast.content === 'function') {\n\n toast.$el = $(toast.template());\n\n } else {\n\n toast.$el = $(this._renderTemplate(toast));\n }\n\n toast.$inner = toast.$el.find('.toast-inner');\n toast.$closeBtn = toast.$el.find('[data-toast-close]');\n\n this.log(toast);\n this.toasts.push(toast);\n\n return toast;\n }\n\n // Bind events that trigger methods\n bindEvents(toast) {\n\n let self = this;\n\n toast.$el.on('click', '[data-toast-close]', () => {\n\n if (toast.$el) {\n self.close(toast);\n }\n });\n\n $(window).on('resize', debounce(() => {\n\n if (toast.$el) {\n this.setPosition(toast);\n }\n }, 250));\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Set positions\n setPosition(toast, placement, placementY, placementX) {\n\n if (typeof placementY === 'undefined' || placementY === null) {\n placementY = toast.placementY;\n }\n\n if (typeof placementX === 'undefined' || placementX === null) {\n placementX = toast.placementX;\n }\n\n if (!placementX || !placementY) {\n placement = toast.placement\n }\n\n if (toast.offset) {\n\n let offsets = toast.offset.split(',')\n let offsetX = parseInt(offsets[0], 10);\n let offsetY = parseInt(offsets[1], 10);\n }\n\n let toastWidth = toast.$el.outerWidth(true);\n let toastHeight = toast.$el.outerHeight(true);\n let toastPosX;\n let toastPosY;\n\n if (placement) {\n\n if (placement === 'top-left') {\n\n toastPosX = 0;\n toastPosY = 0;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += 30;\n toastPosY += 30;\n }\n\n } else if (placement === 'top-center') {\n\n toastPosX = (this.$container.width() / 2) - toastWidth / 2;\n toastPosY = 0;\n\n this.log(this.$container.width);\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n } else {\n toastPosY += 30;\n }\n\n } else if (placement === 'top-right') {\n\n toastPosX = this.$container.width() - toastWidth;\n toastPosY = 0;\n\n if (toast.offset) {\n toastPosX += -offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += -30;\n toastPosY += 30;\n }\n\n } else if (placement === 'center-left') {\n\n toastPosX = 0;\n toastPosY = (this.$container.height() / 2) - toastHeight / 2;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += 30;\n }\n\n } else if (placement === 'center-center') {\n\n toastPosX = (this.$container.width() / 2) - toastWidth / 2;\n toastPosY = (this.$container.height() / 2) - toastHeight / 2;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += offsetY;\n }\n\n } else if (placement === 'center-right') {\n\n toastPosX = this.$container.width() - toastWidth;\n toastPosY = (this.$container.height() / 2) - toastHeight / 2;\n\n if (toast.offset) {\n toastPosX += -offsetX;\n toastPosY += offsetY;\n } else {\n toastPosX += -30;\n }\n\n } else if (placement === 'bottom-left') {\n\n toastPosX = 0;\n toastPosY = this.$container.height() - toastHeight;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += -offsetY;\n } else {\n toastPosX += 30;\n toastPosY += -30;\n }\n\n } else if (placement === 'bottom-center') {\n\n toastPosX = (this.$container.width() / 2) - toastWidth / 2;\n toastPosY = this.$container.height() - toastHeight;\n\n if (toast.offset) {\n toastPosX += offsetX;\n toastPosY += -offsetY;\n } else {\n toastPosY += -30;\n }\n\n } else if (placement === 'bottom-right') {\n\n toastPosX = this.$container.width() - toastWidth\n toastPosY = this.$container.height() - toastHeight;\n\n if (toast.offset) {\n toastPosX += -offsetX;\n toastPosY += -offsetY;\n } else {\n toastPosX += -30;\n toastPosY += -30;\n }\n }\n\n } else {\n\n toastPosX = placementX;\n toastPosY = placementY;\n }\n\n toast.$el.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+toastPosX+'px, '+toastPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n this.log('Toast width: '+toastWidth+'px');\n this.log('Toast height: '+toastHeight+'px');\n this.log('Toast position Y: '+toastPosX+'px');\n this.log('Toast position x: '+toastPosY+'px');\n }\n\n // Show\n show(toast) {\n\n this.$container.append(toast.$el);\n this.bindEvents(toast);\n this.setPosition(toast);\n\n if (toast.animation) {\n\n toast.$el.addClass('show');\n toast.$inner.addClass(toast.animationSpeed);\n toast.$inner.animateCss(toast.animationIn);\n\n } else {\n\n toast.$el.addClass('show');\n }\n\n if (toast.dismiss) {\n\n setTimeout(() => {\n this.close(toast);\n }, toast.dismiss * 1000);\n }\n\n this.onShow(toast);\n }\n\n // Close\n close(toast) {\n\n if (toast.animation && !toast.$inner.hasClass('animated')) {\n\n toast.$el.removeClass('show');\n toast.$inner.animateCss(toast.animationOut, () => {\n\n toast.$el.remove();\n\n this.toasts = $.grep(this.toasts, function(item) {\n return item.uuid != toast.uuid;\n });\n\n this.processQueue();\n this.onClose(toast);\n });\n\n } else {\n\n toast.$el.remove();\n\n this.toasts = $.grep(this.toasts, function(item) {\n return item.uuid != toast.uuid;\n });\n\n this.processQueue();\n this.onClose(toast);\n }\n }\n\n // Initialize callback\n onInitialize() {\n\n let onInitialize = this.onInitialize;\n\n if (typeof onInitialize === 'function') {\n\n onInitialize.call(this.container);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this.container);\n }\n }\n\n // Init callback\n onInit(toast) {\n\n let onInit = toast.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(toast);\n }\n }\n\n // Show callback\n onShow(toast) {\n\n let onShow = toast.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(toast);\n }\n }\n\n // Close callback\n onClose(toast) {\n\n let onClose = toast.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(toast);\n }\n }\n\n // Debug log\n log(...args) {\n\n if (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n console.log(...args);\n }\n }\n }\n\n // Render template\n _renderTemplate(toast) {\n\n let faNameSpace = this.faPro ? 'far' : 'fas';\n let content = '';\n let header = '';\n let body = '';\n let bodyCloseBtn = '';\n\n if (typeof toast.content === 'function') {\n\n content = toast.content();\n\n } else {\n\n content = toast.content;\n }\n\n if (toast.header) {\n\n header = `\n <div class=\"toast-header\">\n\n <span>${toast.title}</span>\n\n <button type=\"button\" data-toast-close>\n <i class=\"${faNameSpace} fa-times icon\"></i>\n </button>\n\n </div>\n `;\n\n } else {\n\n bodyCloseBtn = `\n <button type=\"button\" data-toast-close>\n\n <i class=\"${faNameSpace} fa-times icon\"></i>\n\n </button>\n `;\n }\n\n body = `\n <div class=\"toast-body\">\n\n <span>${content}</span>\n ${bodyCloseBtn}\n\n </div>\n `;\n\n return `\n <div class=\"toast toast-${toast.size} toast-${toast.theme}\" role=\"alert\" id=\"${toast.uuid}\">\n\n <div class=\"toast-inner\">\n\n ${header}\n ${body}\n\n </div>\n\n </div>\n `;\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Toast._jQueryInterface;\n $.fn[NAME].Constructor = Toast;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Toast._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n title: '',\n content: '',\n template: '',\n theme: 'dark',\n placement: 'bottom-center',\n placementX: null,\n placementY: null,\n animation: true,\n animationIn: 'slideInUp',\n animationOut: 'slideOutDown',\n animationSpeed: 'faster',\n offset: null,\n size: null,\n dismiss: 3,\n header: false,\n faPro: false,\n debug: false,\n onInitialize: null,\n onDestroy: null,\n onInit: null,\n onDestroy: null,\n onShow: null,\n onClose: null\n }\n}\n\nexport default Toast;","import 'jquery';\nimport { debounce, touchEvents } from './util/index';\n\nconst NAME = 'coolDialog';\nconst DATA_KEY = 'plugin_coolDialog';\n\nclass Dialog {\n\n constructor(container, opts) {\n\n this.settings = {};\n\n if (window.Cool.settings.dialog) {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, window.Cool.settings.dialog, opts);\n\n } else {\n\n $.extend(true, this.settings, $.fn[NAME].defaults, opts);\n }\n\n this.container = container;\n this.$container = $(this.container);\n this.debug = this.settings.debug;\n this.faPro = this.settings.faPro;\n this.dialogs = [];\n this.onInitialize = this.settings.onInitialize;\n this.onDestroy = this.settings.onDestroy;\n }\n\n // Init dialog\n init(opts) {\n\n let settings = {};\n\n $.extend(true, settings, this.settings, opts);\n\n let dialog = this.buildDialog(settings);\n\n this.show(dialog);\n this.bindEvents(dialog);\n this.onInit(dialog);\n\n return dialog;\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.$container.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Build dialog\n buildDialog(settings) {\n\n let self = this;\n let dialog = {\n uuid: 'dialog-'+this.generateUUID(),\n title: settings.title,\n template: settings.template,\n body: settings.body,\n footer: settings.footer,\n size: settings.size,\n classes: settings.classes,\n centered: settings.centered,\n backdrop: settings.backdrop,\n preventScroll: settings.preventScroll,\n closeBtn: settings.closeBtn,\n animation: settings.animation,\n animationIn: settings.animationIn,\n animationOut: settings.animationOut,\n animationSpeed: settings.animationSpeed,\n callbacks: settings.callbacks,\n maxBodyHeight: settings.maxBodyHeight,\n overflowVisible: settings.overflowVisible,\n actions: settings.actions,\n onInit: settings.onInit,\n onShow: settings.onShow,\n onClose: settings.onClose\n };\n\n if (dialog.maxBodyHeight == null) {\n\n dialog.maxBodyHeight = window.innerHeight - 200;\n }\n\n if (typeof dialog.template === 'function') {\n\n dialog.$el = $(dialog.template());\n\n } else {\n\n dialog.$el = $(this._renderTemplate(dialog));\n }\n\n dialog.show = function() {\n self.show(dialog);\n };\n\n dialog.close = function() {\n self.close(dialog);\n };\n\n this.log(dialog);\n this.dialogs.push(dialog);\n\n return dialog;\n }\n\n // Bind events that trigger methods\n bindEvents(dialog) {\n\n let self = this;\n\n dialog.$el.on('click', '[data-dialog-close]', function (e) {\n\n dialog.$el.trigger('dialog.close');\n\n if (typeof dialog.callbacks.close === 'function') {\n\n dialog.callbacks.close.call(self, function () {\n self.close(dialog)\n }, dialog);\n\n } else {\n\n self.close(dialog);\n }\n });\n\n dialog.$el.on('click', '[data-dialog-remove]', function (e) {\n\n dialog.$el.trigger('dialog.remove');\n\n if (typeof dialog.callbacks.remove === 'function') {\n\n dialog.callbacks.remove.call(self, function () {\n self.close(dialog)\n }, dialog);\n }\n });\n\n dialog.$el.on('click', '[data-dialog-confirm]', debounce(function (e) {\n\n dialog.$el.trigger('dialog.close');\n\n if (typeof dialog.callbacks.confirm === 'function') {\n\n dialog.callbacks.confirm.call(self, function () {\n self.close(dialog)\n }, dialog);\n\n } else {\n\n self.close(dialog);\n }\n }));\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Show\n show(dialog) {\n\n if (!this.$container.hasClass('has-dialogs')) {\n this.$container.addClass('has-dialogs');\n }\n\n if (dialog.preventScroll && !this.$container.hasClass('dialog-prevent-scroll')) {\n this.$container.addClass('dialog-prevent-scroll');\n }\n\n if (this.dialogs.length > 1) {\n\n let $prevDialog = $(this.dialogs).eq(-2)[0].$el;\n let zIndex = parseInt($prevDialog.css('z-index'), 10) + 1;\n\n dialog.$el.css('z-index', zIndex);\n\n $prevDialog.css({\n 'transition': 'opacity 0.3s',\n 'opacity': 0,\n 'visibility': 'visible'\n });\n }\n\n if (dialog.backdrop && $('.dialog-backdrop').length < 1) {\n\n this.$container.append('<div class=\"dialog-backdrop\"></div>');\n\n let checkForBackdrop = setInterval(() => {\n\n if (this.dialogs.length == 0 && $('.dialog-backdrop').length) {\n\n $('.dialog-backdrop').remove();\n clearInterval(checkForBackdrop);\n }\n\n }, 100);\n }\n\n this.$container.append(dialog.$el);\n\n if (dialog.animation) {\n dialog.$el.find('.dialog-content').addClass(dialog.animationSpeed).animateCss(dialog.animationIn);\n }\n\n this.onShow(dialog);\n }\n\n // Close\n close(dialog) {\n\n let $prevDialog = null;\n\n if (this.dialogs.length > 1) {\n $prevDialog = $(this.dialogs).eq(-2)[0].$el;\n }\n\n if ($('.dialog[data-dialog-backdrop=\"true\"]').length === 0 && $('.dialog-backdrop').length) {\n $('.dialog-backdrop').remove();\n }\n\n if (dialog.animation) {\n\n dialog.$el.find('.dialog-content').animateCss(dialog.animationOut, () => {\n\n dialog.$el.remove();\n\n this.dialogs = $.grep(this.dialogs, function(item) {\n return item.uuid != dialog.uuid;\n });\n\n if (this.dialogs.length == 0) {\n\n this.$container.removeClass('has-dialogs');\n\n if (this.$container.hasClass('dialog-prevent-scroll')) {\n this.$container.removeClass('dialog-prevent-scroll');\n }\n\n } else {\n\n if ($prevDialog) {\n $prevDialog.css('opacity', 1);\n }\n }\n });\n\n } else {\n\n dialog.$el.remove();\n\n this.dialogs = $.grep(this.dialogs, function(item) {\n return item.uuid != dialog.uuid;\n });\n\n if (this.dialogs.length == 0) {\n\n this.$container.removeClass('has-dialogs');\n\n if (this.$container.hasClass('dialog-prevent-scroll')) {\n this.$container.removeClass('dialog-prevent-scroll');\n }\n\n } else {\n\n if ($prevDialog) {\n $prevDialog.css('opacity', 1);\n }\n }\n }\n\n this.onClose(dialog);\n }\n\n // Initialize callback\n onInitialize() {\n\n let onInitialize = this.onInitialize;\n\n if (typeof onInitialize === 'function') {\n\n onInitialize.call(this.container);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this.container);\n }\n }\n\n // Init callback\n onInit(dialog) {\n\n let onInit = dialog.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(dialog);\n }\n }\n\n // Show callback\n onShow(dialog) {\n\n let onShow = dialog.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(dialog);\n }\n }\n\n // Close callback\n onClose(dialog) {\n\n let onClose = dialog.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(dialog);\n }\n }\n\n // Debug log\n log(...args) {\n\n if (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n console.log(...args);\n }\n }\n }\n\n // Render footer\n _renderFooter(dialog) {\n\n let footer = '';\n\n if (typeof dialog.footer === 'function') {\n\n footer = dialog.footer();\n\n } else if (dialog.footer !== '' && dialog.footer !== false && dialog.footer !== true) {\n\n footer = dialog.footer;\n\n } else if (dialog.footer === true) {\n\n let btnCancel = '';\n let btnRemove = '';\n let btnConfirm = '';\n let btnStyle = '';\n let btnClasses = '';\n let btnAttrs = '';\n\n if (dialog.actions.close.visible) {\n\n btnStyle = dialog.actions.close.primary ? 'btn-primary' : 'btn-secondary';\n btnClasses = dialog.actions.close.classes ? ' '+dialog.actions.close.classes : '';\n btnAttrs = dialog.actions.close.attrs ? ' '+dialog.actions.close.attrs : '';\n btnCancel = `\n <button type=\"button\" class=\"btn ${btnStyle}${btnClasses}\"${btnAttrs} data-dialog-close>\n ${dialog.actions.close.content}\n </button>\n `;\n }\n\n if (dialog.actions.remove.visible) {\n\n btnStyle = dialog.actions.remove.primary ? 'btn-primary' : 'btn-secondary';\n btnClasses = dialog.actions.remove.classes ? ' '+dialog.actions.remove.classes : '';\n btnAttrs = dialog.actions.remove.attrs ? ' '+dialog.actions.remove.attrs : '';\n btnRemove = `\n <button type=\"button\" class=\"btn ${btnStyle}${btnClasses}\"${btnAttrs} data-dialog-remove>\n ${dialog.actions.remove.content}\n </button>\n `;\n }\n\n if (dialog.actions.confirm.visible) {\n\n btnStyle = dialog.actions.confirm.primary ? 'btn-primary' : 'btn-secondary';\n btnClasses = dialog.actions.confirm.classes ? ' '+dialog.actions.confirm.classes : '';\n btnAttrs = dialog.actions.confirm.attrs ? ' '+dialog.actions.confirm.attrs : '';\n btnConfirm = `\n <button type=\"button\" class=\"btn ${btnStyle}${btnClasses}\"${btnAttrs} data-dialog-confirm>\n ${dialog.actions.confirm.content}\n </button>\n `;\n }\n\n footer = `\n ${btnCancel}\n ${btnRemove}\n ${btnConfirm}\n `;\n\n } else {\n\n return footer;\n }\n\n if (footer) {\n\n return `\n <div class=\"dialog-footer\">\n ${footer}\n </div>\n `;\n }\n }\n\n // Render template\n _renderTemplate(dialog) {\n\n let faNameSpace = this.faPro ? 'far' : 'fas';\n let classes = dialog.classes ? ' '+dialog.classes : '';\n let centered = dialog.centered ? ' dialog-centered' : '';\n let size = dialog.size ? ' dialog-'+dialog.size : '';\n let overFlowVisible = dialog.overflowVisible ? ' dialog-overflow-visible' : '';\n let uuid = ' data-dialog-uuid=\"'+dialog.uuid+'\"';\n let backdrop = dialog.backdrop ? ' data-dialog-backdrop=\"true\"' : ' data-dialog-backdrop=\"false\"';\n let title = dialog.title;\n let closeBtn = dialog.closeBtn ? `<button type=\"button\" data-dialog-close><i class=\"${faNameSpace} fa-times icon\"></i></button>` : '';\n let maxBodyHeight = dialog.maxBodyHeight ? ' style=\"max-height: '+dialog.maxBodyHeight+'px\"' : '';\n let body = '';\n let footer = this._renderFooter(dialog);\n\n if (typeof dialog.body === 'function') {\n\n body = dialog.body();\n\n } else {\n\n body = dialog.body;\n }\n\n return `\n <div class=\"dialog${classes}${centered}${size}${overFlowVisible}\"${uuid}${backdrop}>\n\n <div class=\"dialog-container\">\n\n <div class=\"dialog-content\">\n\n <div class=\"dialog-header\">\n\n <span class=\"dialog-title\">\n ${title}\n </span>\n\n ${closeBtn}\n\n </div>\n\n <div class=\"dialog-body\"${maxBodyHeight}>\n\n ${body}\n\n </div>\n\n ${footer}\n\n </div>\n\n </div>\n\n </div>\n `;\n }\n\n static _jQueryInterface(config) {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Dialog(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Dialog._jQueryInterface;\n $.fn[NAME].Constructor = Dialog;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Dialog._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n title: '',\n template: '',\n body: '',\n footer: true,\n size: '', // sm/lg\n classes: '',\n centered: true,\n backdrop: true,\n preventScroll: true,\n closeBtn: true,\n animation: true,\n animationIn: 'zoomIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n callbacks: {},\n maxBodyHeight: null,\n overflowVisible: false,\n faPro: false,\n debug: true,\n onInitialize: null,\n onDestroy: null,\n onInit: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n actions: {\n close: {\n primary: false,\n visible: true,\n content: 'Close',\n classes: '',\n attrs: ''\n },\n remove: {\n primary: false,\n visible: true,\n content: 'Remove',\n classes: '',\n attrs: ''\n },\n confirm: {\n primary: true,\n visible: true,\n content: 'Confirm',\n classes: '',\n attrs: ''\n }\n }\n }\n}\n\nexport default Dialog;","import Common from './src/common';\nimport Popover from './src/popover.js';\nimport Select from './src/select';\nimport Dropdown from './src/dropdown';\nimport Tooltip from './src/tooltip';\nimport SectionTabs from './src/section-tabs';\nimport Collapse from './src/collapse';\nimport Toast from './src/toast';\nimport Dialog from './src/dialog';\n\nexport default {\n\tCommon,\n\tPopover,\n\tSelect,\n\tDropdown,\n\tTooltip,\n\tSectionTabs,\n\tCollapse,\n\tToast,\n\tDialog\n}"]}