{"version":3,"names":["define","$","$container","listener","previousToast","toastId","toastType","toastr","clear","$toastElement","clearOptions","options","getOptions","getContainer","clearToast","toastsToClear","children","i","length","clearContainer","remove","removeToast","error","message","title","optionsOverride","notify","type","iconClass","iconClasses","info","subscribe","callback","success","version","warning","create","containerId","attr","addClass","positionClass","appendTo","target","createContainer","force","hideMethod","duration","hideDuration","easing","hideEasing","complete","publish","args","map","extend","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","response","state","startTime","Date","toastClass","append","titleClass","messageClass","closeButton","prepend","newestOnTop","hide","showMethod","showDuration","showEasing","onShown","timeOut","setTimeout","hideToast","parseFloat","getTime","setInterval","updateProgress","hover","stickAround","delayedHideToast","onclick","tapToDismiss","click","event","stopPropagation","undefined","cancelBubble","handleEvents","debug","console","log","override","clearTimeout","onHidden","endTime","extendedTimeOut","stop","percentage","width","is","amd","deps","factory","module","exports","require","window"],"sources":["toastr.js"],"sourcesContent":["/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n; (function (define) {\n    define(['jquery'], function ($) {\n        return (function () {\n            var $container;\n            var listener;\n            var toastId = 0;\n            var toastType = {\n                error: 'error',\n                info: 'info',\n                success: 'success',\n                warning: 'warning'\n            };\n\n            var toastr = {\n                clear: clear,\n                remove: remove,\n                error: error,\n                getContainer: getContainer,\n                info: info,\n                options: {},\n                subscribe: subscribe,\n                success: success,\n                version: '2.1.1',\n                warning: warning\n            };\n\n            var previousToast;\n\n            return toastr;\n\n            ////////////////\n\n            function error(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.error,\n                    iconClass: getOptions().iconClasses.error,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function getContainer(options, create) {\n                if (!options) { options = getOptions(); }\n                $container = $('#' + options.containerId);\n                if ($container.length) {\n                    return $container;\n                }\n                if (create) {\n                    $container = createContainer(options);\n                }\n                return $container;\n            }\n\n            function info(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.info,\n                    iconClass: getOptions().iconClasses.info,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function subscribe(callback) {\n                listener = callback;\n            }\n\n            function success(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.success,\n                    iconClass: getOptions().iconClasses.success,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function warning(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.warning,\n                    iconClass: getOptions().iconClasses.warning,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function clear($toastElement, clearOptions) {\n                var options = getOptions();\n                if (!$container) { getContainer(options); }\n                if (!clearToast($toastElement, options, clearOptions)) {\n                    clearContainer(options);\n                }\n            }\n\n            function remove($toastElement) {\n                var options = getOptions();\n                if (!$container) { getContainer(options); }\n                if ($toastElement && $(':focus', $toastElement).length === 0) {\n                    removeToast($toastElement);\n                    return;\n                }\n                if ($container.children().length) {\n                    $container.remove();\n                }\n            }\n\n            // internal functions\n\n            function clearContainer (options) {\n                var toastsToClear = $container.children();\n                for (var i = toastsToClear.length - 1; i >= 0; i--) {\n                    clearToast($(toastsToClear[i]), options);\n                }\n            }\n\n            function clearToast ($toastElement, options, clearOptions) {\n                var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n                if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n                    $toastElement[options.hideMethod]({\n                        duration: options.hideDuration,\n                        easing: options.hideEasing,\n                        complete: function () { removeToast($toastElement); }\n                    });\n                    return true;\n                }\n                return false;\n            }\n\n            function createContainer(options) {\n                $container = $('<div/>')\n                    .attr('id', options.containerId)\n                    .addClass(options.positionClass)\n                    .attr('aria-live', 'polite')\n                    .attr('role', 'alert');\n\n                $container.appendTo($(options.target));\n                return $container;\n            }\n\n            function getDefaults() {\n                return {\n                    tapToDismiss: true,\n                    toastClass: 'toast',\n                    containerId: 'toast-container',\n                    debug: false,\n\n                    showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n                    showDuration: 300,\n                    showEasing: 'swing', //swing and linear are built into jQuery\n                    onShown: undefined,\n                    hideMethod: 'fadeOut',\n                    hideDuration: 1000,\n                    hideEasing: 'swing',\n                    onHidden: undefined,\n\n                    extendedTimeOut: 1000,\n                    iconClasses: {\n                        error: 'toast-error',\n                        info: 'toast-info',\n                        success: 'toast-success',\n                        warning: 'toast-warning'\n                    },\n                    iconClass: 'toast-info',\n                    positionClass: 'toast-top-right',\n                    timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n                    titleClass: 'toast-title',\n                    messageClass: 'toast-message',\n                    target: 'body',\n                    closeHtml: '<button type=\"button\">&times;</button>',\n                    newestOnTop: true,\n                    preventDuplicates: false,\n                    progressBar: false\n                };\n            }\n\n            function publish(args) {\n                if (!listener) { return; }\n                listener(args);\n            }\n\n            function notify(map) {\n                var options = getOptions();\n                var iconClass = map.iconClass || options.iconClass;\n\n                if (typeof (map.optionsOverride) !== 'undefined') {\n                    options = $.extend(options, map.optionsOverride);\n                    iconClass = map.optionsOverride.iconClass || iconClass;\n                }\n\n                if (shouldExit(options, map)) { return; }\n\n                toastId++;\n\n                $container = getContainer(options, true);\n\n                var intervalId = null;\n                var $toastElement = $('<div/>');\n                var $titleElement = $('<div/>');\n                var $messageElement = $('<div/>');\n                var $progressElement = $('<div/>');\n                var $closeElement = $(options.closeHtml);\n                var progressBar = {\n                    intervalId: null,\n                    hideEta: null,\n                    maxHideTime: null\n                };\n                var response = {\n                    toastId: toastId,\n                    state: 'visible',\n                    startTime: new Date(),\n                    options: options,\n                    map: map\n                };\n\n                personalizeToast();\n\n                displayToast();\n\n                handleEvents();\n\n                publish(response);\n\n                if (options.debug && console) {\n                    console.log(response);\n                }\n\n                return $toastElement;\n\n                function personalizeToast() {\n                    setIcon();\n                    setTitle();\n                    setMessage();\n                    setCloseButton();\n                    setProgressBar();\n                    setSequence();\n                }\n\n                function handleEvents() {\n                    $toastElement.hover(stickAround, delayedHideToast);\n                    if (!options.onclick && options.tapToDismiss) {\n                        $toastElement.click(hideToast);\n                    }\n\n                    if (options.closeButton && $closeElement) {\n                        $closeElement.click(function (event) {\n                            if (event.stopPropagation) {\n                                event.stopPropagation();\n                            } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n                                event.cancelBubble = true;\n                            }\n                            hideToast(true);\n                        });\n                    }\n\n                    if (options.onclick) {\n                        $toastElement.click(function () {\n                            options.onclick();\n                            hideToast();\n                        });\n                    }\n                }\n\n                function displayToast() {\n                    $toastElement.hide();\n\n                    $toastElement[options.showMethod](\n                        {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n                    );\n\n                    if (options.timeOut > 0) {\n                        intervalId = setTimeout(hideToast, options.timeOut);\n                        progressBar.maxHideTime = parseFloat(options.timeOut);\n                        progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n                        if (options.progressBar) {\n                            progressBar.intervalId = setInterval(updateProgress, 10);\n                        }\n                    }\n                }\n\n                function setIcon() {\n                    if (map.iconClass) {\n                        $toastElement.addClass(options.toastClass).addClass(iconClass);\n                    }\n                }\n\n                function setSequence() {\n                    if (options.newestOnTop) {\n                        $container.prepend($toastElement);\n                    } else {\n                        $container.append($toastElement);\n                    }\n                }\n\n                function setTitle() {\n                    if (map.title) {\n                        $titleElement.append(map.title).addClass(options.titleClass);\n                        $toastElement.append($titleElement);\n                    }\n                }\n\n                function setMessage() {\n                    if (map.message) {\n                        $messageElement.append(map.message).addClass(options.messageClass);\n                        $toastElement.append($messageElement);\n                    }\n                }\n\n                function setCloseButton() {\n                    if (options.closeButton) {\n                        $closeElement.addClass('toast-close-button').attr('role', 'button');\n                        $toastElement.prepend($closeElement);\n                    }\n                }\n\n                function setProgressBar() {\n                    if (options.progressBar) {\n                        $progressElement.addClass('toast-progress');\n                        $toastElement.prepend($progressElement);\n                    }\n                }\n\n                function shouldExit(options, map) {\n                    if (options.preventDuplicates) {\n                        if (map.message === previousToast) {\n                            return true;\n                        } else {\n                            previousToast = map.message;\n                        }\n                    }\n                    return false;\n                }\n\n                function hideToast(override) {\n                    if ($(':focus', $toastElement).length && !override) {\n                        return;\n                    }\n                    clearTimeout(progressBar.intervalId);\n                    return $toastElement[options.hideMethod]({\n                        duration: options.hideDuration,\n                        easing: options.hideEasing,\n                        complete: function () {\n                            removeToast($toastElement);\n                            if (options.onHidden && response.state !== 'hidden') {\n                                options.onHidden();\n                            }\n                            response.state = 'hidden';\n                            response.endTime = new Date();\n                            publish(response);\n                        }\n                    });\n                }\n\n                function delayedHideToast() {\n                    if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n                        intervalId = setTimeout(hideToast, options.extendedTimeOut);\n                        progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n                        progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n                    }\n                }\n\n                function stickAround() {\n                    clearTimeout(intervalId);\n                    progressBar.hideEta = 0;\n                    $toastElement.stop(true, true)[options.showMethod](\n                        {duration: options.showDuration, easing: options.showEasing}\n                    );\n                }\n\n                function updateProgress() {\n                    var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n                    $progressElement.width(percentage + '%');\n                }\n            }\n\n            function getOptions() {\n                return $.extend({}, getDefaults(), toastr.options);\n            }\n\n            function removeToast($toastElement) {\n                if (!$container) { $container = getContainer(); }\n                if ($toastElement.is(':visible')) {\n                    return;\n                }\n                $toastElement.remove();\n                $toastElement = null;\n                if ($container.children().length === 0) {\n                    $container.remove();\n                    previousToast = undefined;\n                }\n            }\n\n        })();\n    });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n    if (typeof module !== 'undefined' && module.exports) { //Node\n        module.exports = factory(require('jquery'));\n    } else {\n        window['toastr'] = factory(window['jQuery']);\n    }\n}));\n"],"mappings":"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"}