{"version":3,"sources":["../../config-wrap-start-default.js","../../assets/js/lib/almond.js","models/formModel.js","models/formCollection.js","controllers/formsController.js","views/widgets/forms/formsFilter.js","views/widgets/forms/formsTableRow.js","views/widgets/forms/formsTableEmpty.js","views/widgets/forms/formsTableBody.js","views/widgets/forms/formsTableLoading.js","views/widgets/forms/formsTable.js","models/formTemplateModel.js","models/formTemplateCollection.js","views/widgets/forms/newFormTemplate.js","views/widgets/forms/newFormGrid.js","views/widgets/forms/forms.js","views/sections/widgets.js","views/sections/apps.js","views/sections/memberships.js","views/dashboardView.js","main.js"],"names":["requirejs","require","define","undef","hasProp","obj","prop","hasOwn","call","normalize","name","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","i","j","part","baseParts","split","map","config","starMap","charAt","length","nodeIdCompat","jsSuffixRegExp","test","replace","slice","concat","splice","join","indexOf","substring","makeRequire","relName","forceSync","args","aps","arguments","push","req","apply","makeNormalize","makeLoad","depName","value","defined","callDep","waiting","defining","main","Error","splitPrefix","prefix","index","makeConfig","makeMap","handlers","Object","prototype","hasOwnProperty","plugin","parts","f","n","pr","p","exports","e","module","id","uri","deps","callback","cjsModule","ret","usingExports","callbackType","load","undefined","alt","setTimeout","cfg","_defined","amd","jQuery","model","Backbone","Model","extend","defaults","objectType","title","created_at","url","ajaxurl","this","get","initialize","set","Number","initShortcode","shortcode","destroy","that","ajax","type","success","response","JSON","parse","collection","remove","FormModel","Collection","comparator","tmpNum","newIDs","listenTo","nfRadio","channel","modalConfirm","duplicate","modal","jBox","width","addClass","overlay","closeOnClick","options","data","view","message","setContent","setTitle","open","btnCancel","container","getElementsByClassName","addEventListener","modalClose","btnConfirm","confirmDelete","close","el","removeClass","animate","opacity","line-height","display","newID","new_form_id","clone","Date","add","FormCollection","controller","Marionette","forms","reply","getForms","fetch","trigger","View","template","ui","input","events","keyup @ui.input","clearFilter","updateFilter","term","getUI","val","updatePlaceholder","placeholder","attr","tagName","replaceElement","delete","edit","click @ui.delete","click @ui.duplicate","click @ui.edit","event","$el","toggleClass","siblings","templateContext","moment","format","TableRowView","TableEmptyView","CollectionView","childView","emptyView","className","setFilter","child","toLowerCase","TableBodyView","TableLoadingView","FormsCollection","formsTable","showChildView","regions","body","sortable","action2","more","less","onRender","hide","request","maybeHideMoreButton","click @ui.sortable","click @ui.more","click @ui.less","sortFormsTable","sortBy","target","reverse","getChildView","a","b","name1","name2","sort","models","showMore","show","showLess","TemplateModel","error","TemplateCollection","TemplateView","FilterView","FormsTableView","NewFormGridView","filter","content","cancel","showNewFormGrid","showFormsTable","window","location","hash","click @ui.add","click @ui.cancel","console","log","WidgetFormsView","WidgetView","AppsView","MembershipsView","currentView","click .widgets a","find","classList","click .apps a","click .memberships a","renderNav","_","each","nfDashItems","section","classes","slug","niceName","Radio","nfDebug","document","ready","$","FormsController","DashboardView","NinjaFormsDashboard","Application","region","controllers","dashboard","Renderer","render","onStart","showView","html","evaluate","interpolate","escape","variable","nfDashboard","start","on","preventDefault"],"mappings":"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","file":"dashboard.min.js","sourcesContent":["(function () {\n","/**\n * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/almond for details\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*jslint sloppy: true */\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name && name.charAt(0) === \".\") {\n            //If have a base name, try to normalize against it,\n            //otherwise, assume it is a top-level require that will\n            //be relative to baseUrl in the end.\n            if (baseName) {\n                name = name.split('/');\n                lastIndex = name.length - 1;\n\n                // Node .js allowance:\n                if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                    name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n                }\n\n                //Lop off the last part of baseParts, so that . matches the\n                //\"directory\" and not name of the baseName's module. For instance,\n                //baseName of \"one/two/three\", maps to \"one/two/three.js\", but we\n                //want the directory, \"one/two\" for this normalization.\n                name = baseParts.slice(0, baseParts.length - 1).concat(name);\n\n                //start trimDots\n                for (i = 0; i < name.length; i += 1) {\n                    part = name[i];\n                    if (part === \".\") {\n                        name.splice(i, 1);\n                        i -= 1;\n                    } else if (part === \"..\") {\n                        if (i === 1 && (name[2] === '..' || name[0] === '..')) {\n                            //End of the line. Keep at least one non-dot\n                            //path segment at the front so it can be mapped\n                            //correctly to disk. Otherwise, there is likely\n                            //no path mapping for a path starting with '..'.\n                            //This can still fail, but catches the most reasonable\n                            //uses of ..\n                            break;\n                        } else if (i > 0) {\n                            name.splice(i - 1, 2);\n                            i -= 2;\n                        }\n                    }\n                }\n                //end trimDots\n\n                name = name.join(\"/\");\n            } else if (name.indexOf('./') === 0) {\n                // No baseName, so this is ID is resolved relative\n                // to baseUrl, pull off the leading dot.\n                name = name.substring(2);\n            }\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relName) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relName));\n            } else {\n                name = normalize(name, relName);\n            }\n        } else {\n            name = normalize(name, relName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relName);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, callback).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\ndefine(\"../../assets/js/lib/almond\", function(){});\n\n","/**\n * Model that represents our form.\n * \n * @package Ninja Forms client\n * @copyright (c) 2017 WP Ninjas\n * @since 3.0\n */\ndefine( 'models/formModel',[], function() {\n\tvar model = Backbone.Model.extend( {\n\t\tdefaults: {\n            objectType: 'form',\n            id: 0,\n            title: 'unknown',\n            created_at: 'unknown'\n\t\t},\n\n        url: function() {\n            return ajaxurl + \"?action=nf_forms&form_id=\" + this.get( 'id' );\n        },\n\n\t\tinitialize: function() {\n\n            this.set( 'id', Number( this.get( 'id' ) ) );\n            \n            if( this.get( 'id' ) ) {\n                this.initShortcode( this.get( 'id' ) );\n            }\n\n            // Strip HTML tags from the form title.\n            if ( this.get( 'title' ) ) {\n               this.set( 'title', this.get( 'title' ).replace(/<\\/?[^>]+(>|$)/g, \"\") ); \n            }\n        },\n        \n        initShortcode: function( id ) {\n            var shortcode = '[ninja_form id=' + id + ']';\n            this.set( 'shortcode', shortcode);\n        },\n        \n        /* Overwrite the standard backbone delete method\n         * allowing us to send a POST request instead of DELETE\n         */\n        destroy: function() {\n            var that = this;\n            jQuery.ajax({\n                type: \"POST\",\n                url: ajaxurl + '?action=nf_forms&method_override=delete&form_id=' + this.get( 'id' ),\n                success: function( response ){\n                    var response = JSON.parse( response );\n                    that.collection.remove( that );\n                }\n            });\n        }\n        \n\t} );\n\t\n\treturn model;\n} );\n\n","/**\n * Collection that holds our form models.\n *\n * @package Ninja Forms client\n * @copyright (c) 2017 WP Ninjas\n * @since 3.0\n */\ndefine( 'models/formCollection',['models/formModel'], function( FormModel ) {\n\tvar collection = Backbone.Collection.extend( {\n\t\tmodel: FormModel,\n\t\tcomparator: 'title',\n\t\ttmpNum: 1,\n        url: function() {\n            return ajaxurl + \"?action=nf_forms\";\n        },\n\n\t\tinitialize: function() {\n\t\t\tthis.newIDs = [];\n            this.listenTo( nfRadio.channel( 'dashboard' ), 'forms:delete', this.modalConfirm );\n            this.listenTo( nfRadio.channel( 'dashboard' ), 'forms:duplicate', this.duplicate );\n            this.modal = new jBox( 'Modal', {\n                width: 300,\n                addClass: 'dashboard-modal',\n                overlay: true,\n                closeOnClick: 'body'\n            } );\n\t\t},\n\n        parse: function( response, options ){\n\t\t    return response.data;\n        },\n\n        modalConfirm: function( view ){\n            var message = '<div class=\"message\"><p>Once deleted, a Form cannot be recovered.<br />Are you sure you want to delete <em>' + view.model.get( 'title' ) + '</em>?</p></div>';\n            message +=  '<div class=\"buttons\"><div class=\"confirm nf-button primary\">Delete</div> <div style=\"float:right;\" class=\"cancel nf-button secondary\">Cancel</div></div>';\n\n            this.modal.setContent( message );\n            this.modal.setTitle( 'Confirm Delete' );\n\n            this.modal.open();\n\n            var that = this;\n\n            var btnCancel = this.modal.container[0].getElementsByClassName('cancel')[0];\n            btnCancel.addEventListener('click', function() {\n                that.modalClose();\n            } );\n\n            var btnConfirm = this.modal.container[0].getElementsByClassName('confirm')[0];\n            btnConfirm.addEventListener('click', function() {\n                that.confirmDelete( view );\n            } );\n        },\n\n        modalClose: function() {\n            this.modal.close();\n        },\n\n        confirmDelete: function( view ) {\n            jQuery( view.el ).removeClass( 'show-actions' );\n            jQuery( view.el ).addClass( 'deleting' );\n            jQuery( view.el ).animate({\n                'opacity': 0,\n                'line-height': 0,\n                'display': 'none'\n            }, 500 );\n            view.model.destroy();\n            this.modalClose();\n        },\n\n        duplicate: function( view ) {\n            var message = '<div class=\"message\">Duplicating <em>' + view.model.get( 'title' ) +\n                          '</em>...' + '<div class=\"nf-loading-spinner\"></div></div>';\n            this.modal.setContent( message );\n            this.modal.setTitle( 'Please Wait' );\n            this.modal.open();\n\n            var that = this;\n            jQuery.ajax({\n                type: \"POST\",\n                url: ajaxurl + '?action=nf_forms&clone_id=' + view.model.get( 'id' ),\n                success: function( response ){\n                    var response = JSON.parse( response );\n                    var newID = response.data.new_form_id;\n                    var clone = view.model.clone();\n                    clone.set({\n                        id: newID,\n                        title: clone.get( 'title' ) + ' - copy',\n                        created_at: new Date(),\n                    });\n                    clone.initShortcode( newID );\n                    view.model.collection.add( clone );\n                    that.modalClose();\n                }\n            });\n        }\n\t} );\n\n\treturn collection;\n} );\n\n","/*\n * Handles setting up our forms table.\n *\n * Holds a collection of our forms.\n * Replies to requests for form data.\n * Updates form models.\n */\ndefine('controllers/formsController',[ 'models/formModel', 'models/formCollection' ], function( FormModel, FormCollection ) {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\t\t\tthis.forms = new FormCollection();\n\n            nfRadio.channel( 'dashboard' ).reply( 'get:forms', this.getForms, this );\n\n\t\t\tthis.forms.fetch({\n\t\t\t\tsuccess: function( collection ){\n                    nfRadio.channel( 'dashboard' ).trigger( 'fetch:forms', collection );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tgetForms: function() {\n\t\t\treturn this.forms;\n\t\t},\n\t});\n\n\treturn controller;\n} );\n","/**\n * Forms Widget Filter View\n *\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/widgets/forms/formsFilter',[], function() {\n    var view = Marionette.View.extend( {\n        template: \"#tmpl-nf-widget-forms-filter\",\n\n        ui: {\n            input: 'input',\n        },\n\n        events: {\n            'keyup @ui.input': 'updateFilter'\n        },\n\n        initialize: function(){\n            this.listenTo( nfRadio.channel( 'widget-forms' ), 'change:content', this.clearFilter );\n        },\n\n        updateFilter: function(){\n            var term = this.getUI( 'input' ).val();\n            nfRadio.channel( 'widget-forms' ).trigger( 'update:filter', term );\n        },\n\n        clearFilter: function(){\n            this.getUI( 'input' ).val( '' );\n        },\n\n        updatePlaceholder: function( placeholder ){\n            this.getUI( 'input' ).attr( 'placeholder', placeholder );\n        }\n    } );\n    return view;\n} );\n\n","/**\n * Forms Widget Table Row View\n *\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/widgets/forms/formsTableRow',[], function() {\n    var view = Marionette.View.extend( {\n        template: \"#tmpl-nf-widget-forms-table-row\",\n        tagName: 'tr',\n        replaceElement: true,\n        ui: {\n            delete: '.delete',\n            duplicate: '.duplicate',\n            edit: '.nf-item-edit'\n        },\n        events: {\n            'click @ui.delete': function() {\n                nfRadio.channel( 'dashboard' ).trigger( 'forms:delete', this );\n            },\n            'click @ui.duplicate': function() {\n                nfRadio.channel( 'dashboard' ).trigger( 'forms:duplicate', this );\n            },\n            'click @ui.edit': function( event ) {\n                this.$el.toggleClass( 'show-actions' ).siblings().removeClass( 'show-actions' );\n            }\n        },\n\n        templateContext: function() {\n            var model = this.model;\n            return {\n                created_at: moment( model.get( 'created_at' ) ).format( 'MM/DD/YY h:mm A' )\n            }\n        }\n    } );\n    return view;\n} );\n\n","/**\n * Forms Widget Table Empty View\n *\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/widgets/forms/formsTableEmpty',[], function() {\n    var view = Marionette.View.extend( {\n        template: \"#tmpl-nf-widget-forms-table-empty\",\n        tagName: 'tr',\n    } );\n    return view;\n} );\n\n","/**\n * Forms Widget Table Body Collection View\n *\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/widgets/forms/formsTableBody',[\n    'views/widgets/forms/formsTableRow',\n    'views/widgets/forms/formsTableEmpty'\n], function( TableRowView, TableEmptyView ) {\n    var view = Marionette.CollectionView.extend( {\n        childView: TableRowView,\n        emptyView: TableEmptyView,\n        className: 'forms-collection',\n        tagName: 'tbody',\n\n        initialize: function(){\n            this.listenTo( nfRadio.channel( 'widget-forms' ), 'update:filter', this.updateFilter );\n        },\n\n        updateFilter: function( term ){\n            this.setFilter(function (child, index, collection) {\n                return 0 <= child.get( 'title' ).toLowerCase().indexOf( term.toLowerCase() );\n            });\n        }\n    } );\n    return view;\n} );\n\n","/**\n * Forms Widget Table Loading View\n *\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/widgets/forms/formsTableLoading',[], function() {\n    var view = Marionette.View.extend( {\n        template: \"#tmpl-nf-widget-forms-table-loading\",\n        tagName: 'tr',\n    } );\n    return view;\n} );\n\n","/**\n * Forms Widget Table View\n *\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/widgets/forms/formsTable',[\n    'views/widgets/forms/formsTableBody',\n    'views/widgets/forms/formsTableLoading',\n    'models/formCollection'\n], function( TableBodyView, TableLoadingView, FormsCollection ) {\n    var view = Marionette.View.extend( {\n        template: \"#tmpl-nf-widget-forms-table\",\n        className: 'nf-table-display',\n        tagName: 'table',\n\n        initialize: function(){\n            var formsTable = this;\n            this.listenTo( nfRadio.channel( 'dashboard' ), 'fetch:forms', function( collection ){\n                formsTable.showChildView( 'body', new TableBodyView( { collection: collection } ) );\n            });\n        },\n\n        regions: {\n            body: {\n                el: 'tbody',\n                replaceElement: true\n            }\n        },\n\n        ui: {\n            sortable: '.sortable',\n            body: 'tbody',\n            action2: '.action2',\n            more: '.more',\n            less: '.less'\n        },\n\n        onRender: function() {\n            this.getUI( 'less' ).hide();\n            var collection = nfRadio.channel( 'dashboard' ).request( 'get:forms' );\n            if( 'undefined' == typeof collection ) {\n                this.showChildView('body', new TableLoadingView());\n            } else {\n                this.showChildView( 'body', new TableBodyView( { collection: collection } ) );\n            }\n            this.maybeHideMoreButton();\n        },\n\n        events: {\n            'click @ui.sortable': 'sortFormsTable',\n            'click @ui.more': 'showMore',\n            'click @ui.less': 'showLess'\n        },\n\n        sortFormsTable: function( event ){\n            this.getUI( 'sortable' ).removeClass( 'sorted-asc' );\n            this.getUI( 'sortable' ).removeClass( 'sorted-desc' );\n            var sortBy = jQuery( event.target ).data( 'sort' );\n            var reverse = jQuery( event.target ).data( 'reverse' ) || 0;\n            if( reverse ){\n                jQuery( event.target ).addClass( 'sorted-desc' );\n                jQuery( event.target ).removeClass( 'sorted-asc' );\n            } else {\n                jQuery( event.target ).addClass( 'sorted-asc' );\n                jQuery( event.target ).removeClass( 'sorted-desc' );\n            }\n\n            var collection = this.getChildView( 'body' ).collection;\n\n            collection.comparator = function( a, b ) {\n                name1 = a.get( sortBy ).toLowerCase();\n                name2 = b.get( sortBy ).toLowerCase();\n\n                if ( name1 < name2 ) {\n                    ret = -1;\n                } else if ( name1 > name2 ) {\n                    ret = 1;\n                } else {\n                    ret = 0;\n                }\n\n                if( reverse ){\n                    ret = -ret;\n                }\n                return ret;\n            }\n            collection.sort();\n\n            if( reverse ){\n                collection.models.reverse();\n                jQuery( event.target ).data( 'reverse', 0 );\n            } else {\n                jQuery( event.target ).data( 'reverse', 1 );\n            }\n        },\n\n        showMore: function(){\n            this.getUI( 'more' ).hide();\n            this.getUI( 'less' ).show();\n            this.getUI( 'body' ).addClass( 'more' );\n        },\n\n        showLess: function(){\n            this.getUI( 'less' ).hide();\n            this.getUI( 'more' ).show();\n            this.getUI( 'body' ).removeClass( 'more' );\n        },\n\n        maybeHideMoreButton: function(){\n            if( 'undefined' !== typeof this.collection && 10 < this.collection.length ) return;\n            this.getUI( 'action2' ).hide();\n        },\n        \n    } );\n    return view;\n} );\n\n","/**\n * Model that represents our form template.\n * \n * @package Ninja Forms client\n * @copyright (c) 2017 WP Ninjas\n * @since 3.0\n */\ndefine( 'models/formTemplateModel',[], function() {\n\tvar model = Backbone.Model.extend( {\n\t\tdefaults: {\n            objectType: 'template',\n            id: 'none',\n            title: 'unknown' \n\t\t},\n\n\t\tinitialize: function() {\n            this.set( 'desc', this.get( 'template-desc' ) );\n        }\n        \n\t} );\n\t\n\treturn model;\n} );\n","/**\n * Collection that holds our form models.\n *\n * @package Ninja Forms client\n * @copyright (c) 2017 WP Ninjas\n * @since 3.0\n */\ndefine( 'models/formTemplateCollection',['models/formTemplateModel'], function( TemplateModel ) {\n\tvar collection = Backbone.Collection.extend( {\n\t\tmodel: TemplateModel,\n\t\ttmpNum: 1,\n        url: function() {\n            return ajaxurl + \"?action=nf_new_form_templates\";\n        },\n\n        parse: function( response, options ){\n            return response.data;\n        },\n\n\t\tinitialize: function() {\n            this.fetch( {\n                success: function(response) {\n                    // This section intentionally left blank.\n                },\n                error: function(response) {\n                    // This section intentionally left blank.\n                },\n            });\n\t\t}\n        \n\t} );\n\treturn collection;\n} );\n","/**\n * Forms Widget Individual Form Template View\n *\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/widgets/forms/newFormTemplate',[], function() {\n    var view = Marionette.View.extend( {\n        template: \"#tmpl-nf-widget-forms-template\",\n    } );\n    return view;\n} );\n\n","/**\n * Forms Widget Templates View\n *\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/widgets/forms/newFormGrid',[\n    'models/formTemplateCollection',\n    'views/widgets/forms/newFormTemplate'\n], function( TemplateCollection, TemplateView ) {\n    var view = Marionette.CollectionView.extend( {\n        tagName: 'div',\n        className: 'template-list',\n        collection: new TemplateCollection(),\n        childView: TemplateView,\n\n        initialize: function(){\n            this.listenTo( nfRadio.channel( 'widget-forms' ), 'update:filter', this.updateFilter );\n        },\n\n        updateFilter: function( term ){\n            this.setFilter(function (child, index, collection) {\n                return 0 <= child.get( 'title' ).toLowerCase().indexOf( term.toLowerCase() );\n            });\n        }\n    } );\n    return view;\n} );\n\n","/**\n * Forms Widget View\n *\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/widgets/forms/forms',[\n    'views/widgets/forms/formsFilter',\n    'views/widgets/forms/formsTable',\n    'views/widgets/forms/newFormGrid'\n], function( FilterView, FormsTableView, NewFormGridView ) {\n    var view = Marionette.View.extend( {\n        template: \"#tmpl-nf-widget-forms\",\n        \n        regions: {\n            filter: '.filter',\n            content: '.content'\n        },\n\n        ui: {\n            add: '.add',\n            cancel: '.cancel',\n        },\n\n        initialize: function(){\n            nfRadio.channel( 'widget-forms' ).reply( 'show:newFormsGrid', this.showNewFormGrid, this );\n            nfRadio.channel( 'widget-forms' ).reply( 'show:formsTable', this.showFormsTable, this );\n        },\n        \n        onRender: function() {\n            this.getUI( 'cancel' ).hide();\n            this.showChildView( 'filter', new FilterView() );\n\n            if( '#new-form' == window.location.hash ){\n                this.getUI( 'add' ).hide();\n                this.getUI( 'cancel' ).show();\n                this.showChildView('content', new NewFormGridView() );\n            } else {\n                this.showChildView('content', new FormsTableView() );\n            }\n        },\n        \n        events: {\n            'click @ui.add': 'showNewFormGrid',\n            'click @ui.cancel': 'showFormsTable',\n        },\n\n        showNewFormGrid: function(){\n            window.location.hash = 'new-form';\n            this.showChildView( 'content', new NewFormGridView() );\n            nfRadio.channel( 'widget-forms' ).trigger( 'change:content' );\n            this.getUI( 'add' ).hide();\n            this.getUI( 'cancel' ).show();\n            this.getChildView( 'filter' ).updatePlaceholder( 'Search Templates' );\n        },\n\n        showFormsTable: function(){\n            console.log( this );\n            window.location.hash = 'forms';\n            this.showChildView( 'content', new FormsTableView() );\n            nfRadio.channel( 'widget-forms' ).trigger( 'change:content' );\n            this.getUI( 'cancel' ).hide();\n            this.getUI( 'add' ).show();\n            this.getChildView( 'filter' ).updatePlaceholder('Search Forms' );\n        }\n    } );\n    return view;\n} );\n\n","/**\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/sections/widgets.js',[ 'views/widgets/forms/forms' ], function( WidgetFormsView ) {\n    var view = Marionette.View.extend( {\n        template: '#tmpl-nf-widgets',\n\n        regions: {\n            forms: '.widget-forms'\n        },\n\n        onRender: function() {\n            this.showChildView( 'forms', new WidgetFormsView() );\n        }\n    } );\n    return view;\n} );\n\n","/**\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/sections/apps.js',[], function() {\n    var view = Marionette.View.extend( {\n        template: '#tmpl-nf-apps'\n    } );\n    return view;\n} );\n\n","/**\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/sections/memberships.js',[], function() {\n    var view = Marionette.View.extend( {\n        template: '#tmpl-nf-memberships'\n    } );\n    return view;\n} );\n\n","/**\n * Dashboard Layout View\n *\n * @package Ninja Forms\n * @subpackage Dashboard\n * @copyright (c) 2017 WP Ninjas\n * @since 3.2\n */\ndefine( 'views/dashboardView',[ 'views/sections/widgets.js', 'views/sections/apps.js', 'views/sections/memberships.js' ], function( WidgetView, AppsView, MembershipsView ) {\n    var view = Marionette.View.extend( {\n        template: \"#tmpl-nf-dashboard\",\n        \n        currentView: 'widgets',\n\n        regions: {\n            content: '.content'\n        },\n\n        events: {\n            'click .widgets a': function(e){\n                this.showChildView( 'content', new WidgetView() );\n                jQuery( '.' + this.currentView).find( 'a' ).removeClass( 'active' );\n                e.target.classList.add( 'active' );\n                this.currentView = 'widgets';\n            },\n            'click .apps a': function(e){\n                this.showChildView( 'content', new AppsView() );\n                jQuery( '.' + this.currentView).find( 'a' ).removeClass( 'active' );\n                e.target.classList.add( 'active' );\n                this.currentView = 'apps';\n            },\n            'click .memberships a': function(e){\n                this.showChildView( 'content', new MembershipsView() );\n                jQuery( '.' + this.currentView).find( 'a' ).removeClass( 'active' );\n                e.target.classList.add( 'active' );\n                this.currentView = 'memberships';\n            },\n        },\n\n        initialize: function() {\n            switch( window.location.hash ) {\n                case '#apps':\n                    this.currentView = 'apps';\n                    break;\n                case '#memberships':\n                    this.currentView = 'memberships';\n                    break;\n                case '#widgets':\n                default:\n                    this.currentView = 'widgets';\n            }\n\n            /**\n             * Radio Routers\n             * TODO: Clean this up.\n             */\n            nfRadio.channel( 'dashboard' ).reply( 'show:widgets', function(){\n                this.showChildView('content', new WidgetView() );\n                jQuery( 'nav.sections a.active' ).removeClass( 'active' );\n                jQuery( 'nav.sections .widgets a' ).addClass( 'active' );\n                this.currentView = 'widgets';\n            }, this );\n            nfRadio.channel( 'dashboard' ).reply( 'show:apps', function(){\n                this.showChildView('content', new AppsView() );\n                jQuery( 'nav.sections a.active' ).removeClass( 'active' );\n                jQuery( 'nav.sections .apps a' ).addClass( 'active' );\n                this.currentView = 'apps';\n            }, this );\n        },\n\n        onRender: function() {\n            switch( window.location.hash ) {\n                case '#apps':\n                    var childView = new AppsView();\n                    break;\n                case '#memberships':\n                    var childView = new MembershipsView();\n                    break;\n                case '#widgets':\n                default:\n                    var childView = new WidgetView();\n            }\n            this.showChildView('content', childView );\n        },\n        \n        templateContext: function() {\n            var that = this;\n            return {\n                renderNav: function() {\n                    var content = '';\n                    _.each( nfDashItems, function(section) {\n                        var classes = (that.currentView == section.slug ) ? ' active' : '';\n                        content += '<li class=\"' + section.slug + '\"><a href=\"#' + section.slug + '\" class=\"' + classes + '\">' + section.niceName + '</a></li>';\n                    } );\n                    return content;\n                },\n            }\n        }\n    } );\n    return view;\n} );\n\n","var nfRadio = Backbone.Radio;\nvar nfDebug = false;\n\njQuery( document ).ready( function( $ ) {\n    require( [ 'controllers/formsController', 'views/dashboardView' ], function( FormsController, DashboardView ) {\n\n        var NinjaFormsDashboard = Marionette.Application.extend( {\n\n            // The root element for the application.\n            region: '#ninja-forms-dashboard',\n\n            controllers: {},\n\n            initialize: function( options ) {\n\n                // Assign this instance to a named variable.\n                var dashboard = this;\n\n                // Override the Renderer for WordPress compatibility.\n                Marionette.Renderer.render = function(template, data){\n                    var template = dashboard.template( template );\n                    return template( data );\n                };\n\n                /* DEBUG */ if( nfDebug ) console.log( 'Dashboard Initialized' );\n            },\n\n            onStart: function() {\n\n                // Show the root view for the application.\n                this.showView( new DashboardView() );\n\n                this.controllers.forms = new FormsController();\n\n                //var data = {id: 1, title: 'Contact Me', created: '10-23-2016'};\n                //var form = new FormModel(data);\n//                var formCollection = new FormCollection();\n//                formCollection.fetch( {\n//                    success: function(response) { console.log(response); }\n//                });\n\n                /* DEBUG */ if( nfDebug ) console.log( 'Dashboard Started' );\n            },\n\n            /**\n             * Custom render function for WordPress style templates.\n             * @param template\n             */\n            template: function( template ) {\n                return _.template( $( template ).html(),  {\n                    evaluate:    /<#([\\s\\S]+?)#>/g,\n                    interpolate: /\\{\\{\\{([\\s\\S]+?)\\}\\}\\}/g,\n                    escape:      /\\{\\{([^\\}]+?)\\}\\}(?!\\})/g,\n                    variable:    'data'\n                } );\n            }\n        } );\n\n        var nfDashboard = new NinjaFormsDashboard();\n        nfDashboard.start();\n    } );\n} );\n\n/**\n * Submenu Routing\n */\n\njQuery( 'a[href=\"admin.php?page=ninja-forms#new-form\"]' ).on( 'click', function(){\n    event.preventDefault();\n    window.location.hash = 'new-form';\n    nfRadio.channel( 'dashboard' ).request( 'show:widgets' );\n    nfRadio.channel( 'widget-forms' ).request( 'show:newFormsGrid' );\n} );\n\njQuery( 'a[href=\"admin.php?page=ninja-forms#apps\"]' ).on( 'click', function(){\n    event.preventDefault();\n    window.location.hash = 'apps';\n    nfRadio.channel( 'dashboard' ).request( 'show:apps' );\n\n} );\n\njQuery( 'a[href=\"admin.php?page=ninja-forms\"]' ).on( 'click', function( event ){\n    event.preventDefault();\n    window.location.hash = 'forms';\n    nfRadio.channel( 'dashboard' ).request( 'show:widgets' );\n    nfRadio.channel( 'widget-forms' ).request( 'show:formsTable' );\n} );\n\ndefine(\"main\", function(){});\n\n"]}