{"version":3,"file":"notify.js","names":["extendDefaults","source","destination","property","hasOwnProperty","buildNotificationCard","messageText","iconClass","persist","id","notification","document","createElement","className","wrapper","iconContainer","icon","message","innerHTML","appendChild","_this","this","hideNotification","addEventListener","animationEnd","event","target","parentNode","container","removeChild","index","notifications","indexOf","splice","$","off","setTimeout","options","delay","one","style","cursor","animationEndSelect","t","el","transitions","transition","OTransition","MozTransition","WebkitTransition","undefined","Notify","defaults","alertIcon","confirmIcon","infoIcon","arguments","getElementsByClassName","length","docFrag","createDocumentFragment","notifyContainer","body","prototype","alert","alertMessage","isPersistent","idString","card","call","push","confirm","info"],"sources":["notify.js"],"mappings":"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","sourcesContent":["\r\n/* =======================================================================\r\n * FD Notify\r\n * Heavily inspired by Notyf, created by Carlos Roso\r\n * https://github.com/caroso1222/notyf\r\n * =======================================================================\r\n */\r\n(function () {\r\n this.Notify = function () {\r\n //List of notifications currently active\r\n this.notifications = [];\r\n\r\n var defaults = {\r\n delay: 5000,\r\n alertIcon: 'notify-alert-icon',\r\n confirmIcon: 'notify-confirm-icon',\r\n infoIcon: 'notify-info-icon'\r\n }\r\n\r\n if (arguments[0] && typeof arguments[0] == \"object\") {\r\n this.options = extendDefaults(defaults, arguments[0]);\r\n } else {\r\n this.options = defaults;\r\n }\r\n // Checks to see if a notify container already exists on the page.\r\n // If it doesn't, create one.\r\n if (document.getElementsByClassName('notify-container').length) {\r\n this.container = document.getElementsByClassName('notify-container')[0];\r\n } else {\r\n var docFrag = document.createDocumentFragment();\r\n var notifyContainer = document.createElement('div');\r\n notifyContainer.className = 'notify-container';\r\n docFrag.appendChild(notifyContainer);\r\n document.body.appendChild(docFrag);\r\n this.container = notifyContainer;\r\n }\r\n\r\n\r\n //Stores which transitionEnd event this browser supports\r\n this.animationEnd = animationEndSelect();\r\n }\r\n\r\n //---------- Public methods ---------------\r\n /**\r\n * Shows an alert card\r\n */\r\n\r\n this.Notify.prototype.alert = function (alertMessage, persist, id) {\r\n var isPersistent = persist || false;\r\n var idString = id || \"\";\r\n var card = buildNotificationCard.call(this, alertMessage, this.options.alertIcon, isPersistent, idString);\r\n card.className += ' alert';\r\n this.container.appendChild(card);\r\n this.notifications.push(card);\r\n }\r\n\r\n\r\n /**\r\n * Shows a confirm card\r\n */\r\n this.Notify.prototype.confirm = function (alertMessage, persist, id) {\r\n var isPersistent = persist || false;\r\n var idString = id || \"\";\r\n var card = buildNotificationCard.call(this, alertMessage, this.options.confirmIcon, isPersistent, idString);\r\n card.className += ' confirm';\r\n this.container.appendChild(card);\r\n this.notifications.push(card);\r\n }\r\n\r\n\r\n /**\r\n * Shows a info card\r\n */\r\n this.Notify.prototype.info = function (alertMessage, persist, id) {\r\n var isPersistent = persist || false;\r\n var idString = id || \"\";\r\n var card = buildNotificationCard.call(this, alertMessage, this.options.infoIcon, isPersistent, idString);\r\n card.className += ' info';\r\n this.container.appendChild(card);\r\n this.notifications.push(card);\r\n }\r\n\r\n\r\n //---------- Private methods ---------------\r\n\r\n /**\r\n * Populates the source object with the value from the same keys found in destination\r\n */\r\n function extendDefaults(source, destination) {\r\n for (property in destination) {\r\n //Avoid assigning inherited properties of destination, only assign to source the destination own properties\r\n if (destination.hasOwnProperty(property)) {\r\n source[property] = destination[property];\r\n }\r\n }\r\n return source;\r\n }\r\n\r\n\r\n /**\r\n * Creates a generic card with the param message. Returns a document fragment.\r\n */\r\n function buildNotificationCard(messageText, iconClass, persist, id) {\r\n //Card wrapper\r\n var notification = document.createElement('div');\r\n notification.className = 'notify';\r\n notification.id = id;\r\n\r\n var wrapper = document.createElement('div');\r\n wrapper.className = 'notify-wrapper';\r\n\r\n var iconContainer = document.createElement('div');\r\n iconContainer.className = 'notify-icon';\r\n\r\n var icon = document.createElement('i');\r\n icon.className = iconClass;\r\n\r\n var message = document.createElement('div');\r\n message.className = 'notify-message';\r\n message.innerHTML = messageText;\r\n\r\n //Build the card\r\n iconContainer.appendChild(icon);\r\n wrapper.appendChild(iconContainer);\r\n wrapper.appendChild(message);\r\n notification.appendChild(wrapper);\r\n\r\n var _this = this;\r\n\r\n var hideNotification = function () {\r\n notification.className += \" disappear\";\r\n notification.addEventListener(_this.animationEnd, function (event) {\r\n event.target == notification && (notification.parentNode !== _this.container || _this.container.removeChild(notification));\r\n });\r\n var index = _this.notifications.indexOf(notification);\r\n _this.notifications.splice(index, 1);\r\n $(notification).off('click');\r\n };\r\n\r\n if (!persist) {\r\n setTimeout(function () {\r\n hideNotification();\r\n }, _this.options.delay);\r\n }\r\n\r\n $(notification).one('click', function () {\r\n hideNotification();\r\n });\r\n\r\n notification.style.cursor = \"pointer\";\r\n\r\n return notification;\r\n }\r\n\r\n\r\n // Determine which animationend event is supported\r\n function animationEndSelect() {\r\n var t;\r\n var el = document.createElement('fake');\r\n var transitions = {\r\n 'transition': 'animationend',\r\n 'OTransition': 'oAnimationEnd',\r\n 'MozTransition': 'animationend',\r\n 'WebkitTransition': 'webkitAnimationEnd'\r\n }\r\n\r\n for (t in transitions) {\r\n if (el.style[t] !== undefined) {\r\n return transitions[t];\r\n }\r\n }\r\n }\r\n})();"]}