{"version":3,"sources":["../../../config-wrap-start-default.js","../lib/almond.js","views/cellComposite.js","views/rowComposite.js","views/rowCollection.js","models/cellFieldCollection.js","models/cellModel.js","models/cellCollection.js","models/rowModel.js","models/rowCollection.js","controllers/formContentFilters.js","controllers/loadControllers.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","Marionette","CompositeView","extend","template","className","getChildView","nfRadio","channel","request","initialize","this","collection","model","get","el","css","onRender","html","attachHtml","collectionView","childView","find","append","cellComposite","onAttach","closest","addClass","rowComposite","CollectionView","tagName","Backbone","Collection","comparator","models","options","cellModel","_","each","set","cid","silent","listenTo","rowModel","validateFields","showFields","hideFields","formModel","on","resetCollection","fieldModel","trigger","invoke","visible","fieldModels","findWhere","key","reset","CellFieldCollection","Model","fieldCollection","search","findField","Number","triggerErrors","CellCollection","RowCollectionView","RowCollection","getFormContentView","formContentLoad","formContentData","empty","fields","formContentLoadFilters","mpEnabled","isArray","first","type","flatten","pluck","rowArray","cells","order","width","isEmpty","nfLayouts","rows","FormContentFilters","Radio","LoadControllers","Application","loadControllers","app","start"],"mappings":"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","file":"front-end.js","sourcesContent":["(function () {\n","/**\r\n * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.\r\n * Available via the MIT or new BSD license.\r\n * see: http://github.com/jrburke/almond for details\r\n */\r\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\r\n//be followed.\r\n/*jslint sloppy: true */\r\n/*global setTimeout: false */\r\n\r\nvar requirejs, require, define;\r\n(function (undef) {\r\n    var main, req, makeMap, handlers,\r\n        defined = {},\r\n        waiting = {},\r\n        config = {},\r\n        defining = {},\r\n        hasOwn = Object.prototype.hasOwnProperty,\r\n        aps = [].slice,\r\n        jsSuffixRegExp = /\\.js$/;\r\n\r\n    function hasProp(obj, prop) {\r\n        return hasOwn.call(obj, prop);\r\n    }\r\n\r\n    /**\r\n     * Given a relative module name, like ./something, normalize it to\r\n     * a real name that can be mapped to a path.\r\n     * @param {String} name the relative name\r\n     * @param {String} baseName a real name that the name arg is relative\r\n     * to.\r\n     * @returns {String} normalized name\r\n     */\r\n    function normalize(name, baseName) {\r\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\r\n            foundI, foundStarMap, starI, i, j, part,\r\n            baseParts = baseName && baseName.split(\"/\"),\r\n            map = config.map,\r\n            starMap = (map && map['*']) || {};\r\n\r\n        //Adjust any relative paths.\r\n        if (name && name.charAt(0) === \".\") {\r\n            //If have a base name, try to normalize against it,\r\n            //otherwise, assume it is a top-level require that will\r\n            //be relative to baseUrl in the end.\r\n            if (baseName) {\r\n                name = name.split('/');\r\n                lastIndex = name.length - 1;\r\n\r\n                // Node .js allowance:\r\n                if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\r\n                    name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\r\n                }\r\n\r\n                //Lop off the last part of baseParts, so that . matches the\r\n                //\"directory\" and not name of the baseName's module. For instance,\r\n                //baseName of \"one/two/three\", maps to \"one/two/three.js\", but we\r\n                //want the directory, \"one/two\" for this normalization.\r\n                name = baseParts.slice(0, baseParts.length - 1).concat(name);\r\n\r\n                //start trimDots\r\n                for (i = 0; i < name.length; i += 1) {\r\n                    part = name[i];\r\n                    if (part === \".\") {\r\n                        name.splice(i, 1);\r\n                        i -= 1;\r\n                    } else if (part === \"..\") {\r\n                        if (i === 1 && (name[2] === '..' || name[0] === '..')) {\r\n                            //End of the line. Keep at least one non-dot\r\n                            //path segment at the front so it can be mapped\r\n                            //correctly to disk. Otherwise, there is likely\r\n                            //no path mapping for a path starting with '..'.\r\n                            //This can still fail, but catches the most reasonable\r\n                            //uses of ..\r\n                            break;\r\n                        } else if (i > 0) {\r\n                            name.splice(i - 1, 2);\r\n                            i -= 2;\r\n                        }\r\n                    }\r\n                }\r\n                //end trimDots\r\n\r\n                name = name.join(\"/\");\r\n            } else if (name.indexOf('./') === 0) {\r\n                // No baseName, so this is ID is resolved relative\r\n                // to baseUrl, pull off the leading dot.\r\n                name = name.substring(2);\r\n            }\r\n        }\r\n\r\n        //Apply map config if available.\r\n        if ((baseParts || starMap) && map) {\r\n            nameParts = name.split('/');\r\n\r\n            for (i = nameParts.length; i > 0; i -= 1) {\r\n                nameSegment = nameParts.slice(0, i).join(\"/\");\r\n\r\n                if (baseParts) {\r\n                    //Find the longest baseName segment match in the config.\r\n                    //So, do joins on the biggest to smallest lengths of baseParts.\r\n                    for (j = baseParts.length; j > 0; j -= 1) {\r\n                        mapValue = map[baseParts.slice(0, j).join('/')];\r\n\r\n                        //baseName segment has  config, find if it has one for\r\n                        //this name.\r\n                        if (mapValue) {\r\n                            mapValue = mapValue[nameSegment];\r\n                            if (mapValue) {\r\n                                //Match, update name to the new value.\r\n                                foundMap = mapValue;\r\n                                foundI = i;\r\n                                break;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (foundMap) {\r\n                    break;\r\n                }\r\n\r\n                //Check for a star map match, but just hold on to it,\r\n                //if there is a shorter segment match later in a matching\r\n                //config, then favor over this star map.\r\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\r\n                    foundStarMap = starMap[nameSegment];\r\n                    starI = i;\r\n                }\r\n            }\r\n\r\n            if (!foundMap && foundStarMap) {\r\n                foundMap = foundStarMap;\r\n                foundI = starI;\r\n            }\r\n\r\n            if (foundMap) {\r\n                nameParts.splice(0, foundI, foundMap);\r\n                name = nameParts.join('/');\r\n            }\r\n        }\r\n\r\n        return name;\r\n    }\r\n\r\n    function makeRequire(relName, forceSync) {\r\n        return function () {\r\n            //A version of a require function that passes a moduleName\r\n            //value for items that may need to\r\n            //look up paths relative to the moduleName\r\n            var args = aps.call(arguments, 0);\r\n\r\n            //If first arg is not require('string'), and there is only\r\n            //one arg, it is the array form without a callback. Insert\r\n            //a null so that the following concat is correct.\r\n            if (typeof args[0] !== 'string' && args.length === 1) {\r\n                args.push(null);\r\n            }\r\n            return req.apply(undef, args.concat([relName, forceSync]));\r\n        };\r\n    }\r\n\r\n    function makeNormalize(relName) {\r\n        return function (name) {\r\n            return normalize(name, relName);\r\n        };\r\n    }\r\n\r\n    function makeLoad(depName) {\r\n        return function (value) {\r\n            defined[depName] = value;\r\n        };\r\n    }\r\n\r\n    function callDep(name) {\r\n        if (hasProp(waiting, name)) {\r\n            var args = waiting[name];\r\n            delete waiting[name];\r\n            defining[name] = true;\r\n            main.apply(undef, args);\r\n        }\r\n\r\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\r\n            throw new Error('No ' + name);\r\n        }\r\n        return defined[name];\r\n    }\r\n\r\n    //Turns a plugin!resource to [plugin, resource]\r\n    //with the plugin being undefined if the name\r\n    //did not have a plugin prefix.\r\n    function splitPrefix(name) {\r\n        var prefix,\r\n            index = name ? name.indexOf('!') : -1;\r\n        if (index > -1) {\r\n            prefix = name.substring(0, index);\r\n            name = name.substring(index + 1, name.length);\r\n        }\r\n        return [prefix, name];\r\n    }\r\n\r\n    /**\r\n     * Makes a name map, normalizing the name, and using a plugin\r\n     * for normalization if necessary. Grabs a ref to plugin\r\n     * too, as an optimization.\r\n     */\r\n    makeMap = function (name, relName) {\r\n        var plugin,\r\n            parts = splitPrefix(name),\r\n            prefix = parts[0];\r\n\r\n        name = parts[1];\r\n\r\n        if (prefix) {\r\n            prefix = normalize(prefix, relName);\r\n            plugin = callDep(prefix);\r\n        }\r\n\r\n        //Normalize according\r\n        if (prefix) {\r\n            if (plugin && plugin.normalize) {\r\n                name = plugin.normalize(name, makeNormalize(relName));\r\n            } else {\r\n                name = normalize(name, relName);\r\n            }\r\n        } else {\r\n            name = normalize(name, relName);\r\n            parts = splitPrefix(name);\r\n            prefix = parts[0];\r\n            name = parts[1];\r\n            if (prefix) {\r\n                plugin = callDep(prefix);\r\n            }\r\n        }\r\n\r\n        //Using ridiculous property names for space reasons\r\n        return {\r\n            f: prefix ? prefix + '!' + name : name, //fullName\r\n            n: name,\r\n            pr: prefix,\r\n            p: plugin\r\n        };\r\n    };\r\n\r\n    function makeConfig(name) {\r\n        return function () {\r\n            return (config && config.config && config.config[name]) || {};\r\n        };\r\n    }\r\n\r\n    handlers = {\r\n        require: function (name) {\r\n            return makeRequire(name);\r\n        },\r\n        exports: function (name) {\r\n            var e = defined[name];\r\n            if (typeof e !== 'undefined') {\r\n                return e;\r\n            } else {\r\n                return (defined[name] = {});\r\n            }\r\n        },\r\n        module: function (name) {\r\n            return {\r\n                id: name,\r\n                uri: '',\r\n                exports: defined[name],\r\n                config: makeConfig(name)\r\n            };\r\n        }\r\n    };\r\n\r\n    main = function (name, deps, callback, relName) {\r\n        var cjsModule, depName, ret, map, i,\r\n            args = [],\r\n            callbackType = typeof callback,\r\n            usingExports;\r\n\r\n        //Use name if no relName\r\n        relName = relName || name;\r\n\r\n        //Call the callback to define the module, if necessary.\r\n        if (callbackType === 'undefined' || callbackType === 'function') {\r\n            //Pull out the defined dependencies and pass the ordered\r\n            //values to the callback.\r\n            //Default to [require, exports, module] if no deps\r\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\r\n            for (i = 0; i < deps.length; i += 1) {\r\n                map = makeMap(deps[i], relName);\r\n                depName = map.f;\r\n\r\n                //Fast path CommonJS standard dependencies.\r\n                if (depName === \"require\") {\r\n                    args[i] = handlers.require(name);\r\n                } else if (depName === \"exports\") {\r\n                    //CommonJS module spec 1.1\r\n                    args[i] = handlers.exports(name);\r\n                    usingExports = true;\r\n                } else if (depName === \"module\") {\r\n                    //CommonJS module spec 1.1\r\n                    cjsModule = args[i] = handlers.module(name);\r\n                } else if (hasProp(defined, depName) ||\r\n                           hasProp(waiting, depName) ||\r\n                           hasProp(defining, depName)) {\r\n                    args[i] = callDep(depName);\r\n                } else if (map.p) {\r\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\r\n                    args[i] = defined[depName];\r\n                } else {\r\n                    throw new Error(name + ' missing ' + depName);\r\n                }\r\n            }\r\n\r\n            ret = callback ? callback.apply(defined[name], args) : undefined;\r\n\r\n            if (name) {\r\n                //If setting exports via \"module\" is in play,\r\n                //favor that over return value and exports. After that,\r\n                //favor a non-undefined return value over exports use.\r\n                if (cjsModule && cjsModule.exports !== undef &&\r\n                        cjsModule.exports !== defined[name]) {\r\n                    defined[name] = cjsModule.exports;\r\n                } else if (ret !== undef || !usingExports) {\r\n                    //Use the return value from the function.\r\n                    defined[name] = ret;\r\n                }\r\n            }\r\n        } else if (name) {\r\n            //May just be an object definition for the module. Only\r\n            //worry about defining if have a module name.\r\n            defined[name] = callback;\r\n        }\r\n    };\r\n\r\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\r\n        if (typeof deps === \"string\") {\r\n            if (handlers[deps]) {\r\n                //callback in this case is really relName\r\n                return handlers[deps](callback);\r\n            }\r\n            //Just return the module wanted. In this scenario, the\r\n            //deps arg is the module name, and second arg (if passed)\r\n            //is just the relName.\r\n            //Normalize module name, if it contains . or ..\r\n            return callDep(makeMap(deps, callback).f);\r\n        } else if (!deps.splice) {\r\n            //deps is a config object, not an array.\r\n            config = deps;\r\n            if (config.deps) {\r\n                req(config.deps, config.callback);\r\n            }\r\n            if (!callback) {\r\n                return;\r\n            }\r\n\r\n            if (callback.splice) {\r\n                //callback is an array, which means it is a dependency list.\r\n                //Adjust args if there are dependencies\r\n                deps = callback;\r\n                callback = relName;\r\n                relName = null;\r\n            } else {\r\n                deps = undef;\r\n            }\r\n        }\r\n\r\n        //Support require(['a'])\r\n        callback = callback || function () {};\r\n\r\n        //If relName is a function, it is an errback handler,\r\n        //so remove it.\r\n        if (typeof relName === 'function') {\r\n            relName = forceSync;\r\n            forceSync = alt;\r\n        }\r\n\r\n        //Simulate async callback;\r\n        if (forceSync) {\r\n            main(undef, deps, callback, relName);\r\n        } else {\r\n            //Using a non-zero value because of concern for what old browsers\r\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\r\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\r\n            //If want a value immediately, use require('id') instead -- something\r\n            //that works in almond on the global level, but not guaranteed and\r\n            //unlikely to work in other AMD implementations.\r\n            setTimeout(function () {\r\n                main(undef, deps, callback, relName);\r\n            }, 4);\r\n        }\r\n\r\n        return req;\r\n    };\r\n\r\n    /**\r\n     * Just drops the config on the floor, but returns req in case\r\n     * the config return value is used.\r\n     */\r\n    req.config = function (cfg) {\r\n        return req(cfg);\r\n    };\r\n\r\n    /**\r\n     * Expose module registry for debugging and tooling\r\n     */\r\n    requirejs._defined = defined;\r\n\r\n    define = function (name, deps, callback) {\r\n        if (typeof name !== 'string') {\r\n            throw new Error('See almond README: incorrect module build, no module name');\r\n        }\r\n\r\n        //This module may not have dependencies\r\n        if (!deps.splice) {\r\n            //deps is not an array, so probably means\r\n            //an object literal or factory function for\r\n            //the value. Adjust args.\r\n            callback = deps;\r\n            deps = [];\r\n        }\r\n\r\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\r\n            waiting[name] = [name, deps, callback];\r\n        }\r\n    };\r\n\r\n    define.amd = {\r\n        jQuery: true\r\n    };\r\n}());\r\n\ndefine(\"../lib/almond\", function(){});\n\n","define( 'views/cellComposite',[], function() {\r\n\tvar view = Marionette.CompositeView.extend( {\r\n\t\ttemplate: '#nf-tmpl-cell',\r\n\t\tclassName: 'nf-cell',\r\n\r\n\t\tgetChildView: function() {\r\n\t\t\treturn nfRadio.channel( 'views' ).request( 'get:fieldLayout' );\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.collection = this.model.get( 'fields' );\r\n\t\t\t// Get our fieldItem view.\r\n\t\t\tjQuery( this.el ).css( 'width', this.model.get( 'width' ) + '%' );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tif ( 0 == this.collection.length ) {\r\n\t\t\t\tjQuery( this.el ).html( '&nbsp;' );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tattachHtml: function( collectionView, childView ) {\r\n\t\t\tjQuery( collectionView.el ).find( 'nf-fields' ).append( childView.el );\r\n\t\t}\r\n\t} );\r\n\r\n\treturn view;\r\n} );\n","define( 'views/rowComposite',['views/cellComposite'], function( cellComposite ) {\r\n\tvar view = Marionette.CompositeView.extend( {\r\n\t\ttemplate: '#nf-tmpl-row',\r\n\t\tchildView: cellComposite,\r\n\t\tclassName: 'nf-row',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.collection = this.model.get( 'cells' );\r\n\r\n\t\t},\r\n\r\n\t\tonAttach: function() {\r\n\t\t\tif ( 1 < this.collection.length ) {\r\n\t\t\t\tjQuery( this.el ).closest( '.nf-form-wrap' ).addClass( 'nf-multi-cell' );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tattachHtml: function( collectionView, childView ) {\r\n\t\t\tjQuery( collectionView.el ).find( 'nf-cells' ).append( childView.el );\r\n\t\t}\r\n\t} );\r\n\r\n\treturn view;\r\n} );\n","define( 'views/rowCollection',['views/rowComposite'], function( rowComposite ) {\r\n\tvar view = Marionette.CollectionView.extend({\r\n\t\ttagName: 'nf-rows-wrap',\r\n\t\tchildView: rowComposite\r\n\r\n\t});\r\n\r\n\treturn view;\r\n} );\n","/**\r\n * Holds all of our cell field models.\r\n * \r\n * @package Ninja Forms Layouts\r\n * @subpackage Fields\r\n * @copyright (c) 2016 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/cellFieldCollection',[], function( ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tcomparator: 'order',\r\n\r\n\t\tinitialize: function( models, options ) {\r\n\t\t\t// We've been passed the cellModel to which this collection belongs.\r\n\t\t\tthis.cellModel = options.cellModel;\r\n\t\t\t_.each( models, function( model ) {\r\n\t\t\t\tmodel.set( 'cellcid', this.cellModel.cid, { silent: true } );\r\n\t\t\t}, this );\r\n\r\n\t\t\tthis.listenTo( this.cellModel.collection.rowModel.collection, 'validate:fields', this.validateFields );\r\n\t\t\tthis.listenTo( this.cellModel.collection.rowModel.collection, 'show:fields', this.showFields );\r\n\t\t\tthis.listenTo( this.cellModel.collection.rowModel.collection, 'hide:fields', this.hideFields );\r\n\t\t\r\n\t\t\tvar fieldCollection = this.cellModel.collection.formModel.get( 'fields' );\r\n\r\n\t\t\t// When we remove a model from our main field collection, make sure it's removed from this collection as well.\r\n\t\t\tfieldCollection.on( 'reset', this.resetCollection, this );\r\n\t\t},\r\n\r\n\t\tvalidateFields: function() {\r\n\t\t\t_.each( this.models, function( fieldModel ) {\r\n\t\t\t\tfieldModel.set( 'clean', false ); // @todo remove after this is released in core.\r\n\t\t\t\tnfRadio.channel( 'submit' ).trigger( 'validate:field', fieldModel );\r\n\t\t\t}, this );\r\n\t\t},\r\n\r\n\t\tshowFields: function() {\r\n\t\t\tthis.invoke( 'set', { visible: true } );\r\n            this.invoke( function() {\r\n                this.trigger( 'change:value', this );\r\n            });\r\n\t\t},\r\n\r\n\t\thideFields: function() {\r\n\t\t\tthis.invoke( 'set', { visible: false } );\r\n            this.invoke( function() {\r\n                this.trigger( 'change:value', this );\r\n            });\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we reset our main field collection, we need to reset any of those fields in this collection.\r\n\t\t * \r\n\t\t * @since  3.0.12\r\n\t\t * @param  Backbone.Collection \t\tcollection\r\n\t\t * @return void\r\n\t\t */\r\n\t\tresetCollection: function( collection ) {\r\n\t\t\tvar fieldModels = [];\r\n\t\t\t_.each( this.models, function( fieldModel ) {\r\n\t\t\t\tif ( 'submit' != fieldModel.get( 'type' ) ) {\r\n\t\t\t\t\tfieldModels.push( collection.findWhere( { key: fieldModel.get( 'key' ) } ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfieldModels.push( fieldModel );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t\tthis.reset( fieldModels );\r\n\t\t}\r\n\r\n\t} );\r\n\treturn collection;\r\n} );\r\n\n","/**\r\n * Model that holds our cell information\r\n * \r\n * @package Ninja Forms Layouts\r\n * @subpackage Layouts\r\n * @copyright (c) 2016 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/cellModel',['models/cellFieldCollection'], function( CellFieldCollection) {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tvar fieldCollection = this.collection.formModel.get( 'fields' );\r\n\t\t\tvar fieldModels = [];\r\n\t\t\t_.each( this.get( 'fields' ), function( search ) {\r\n\t\t\t\tif ( 'undefined' == typeof fieldCollection.get( search ) ) {\r\n\t\t\t\t\tvar findField = fieldCollection.findWhere( { key: search } );\r\n\t\t\t\t\tif ( 'undefined' != typeof findField ) {\r\n\t\t\t\t\t\tfieldModels.push( findField );\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfieldModels.push( fieldCollection.get( search ) );\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t} );\r\n\t\t\tthis.set( 'fields', new CellFieldCollection( fieldModels, { cellModel: this } ) );\r\n            this.set( 'order', Number( this.get( 'order' ) ) );\r\n\t\t\tthis.listenTo( this.get( 'fields' ), 'change:errors', this.triggerErrors );\r\n\t\t},\r\n\r\n\t\ttriggerErrors: function( fieldModel ) {\r\n\t\t\tthis.collection.trigger( 'change:errors', fieldModel );\r\n\t\t}\r\n\t\t\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n","/**\r\n * Holds all of our cell models.\r\n * \r\n * @package Ninja Forms Layouts\r\n * @subpackage Fields\r\n * @copyright (c) 2016 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/cellCollection',['models/cellModel'], function( cellModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: cellModel,\r\n\t\tcomparator: 'order',\r\n\r\n\t\tinitialize: function( models, options ) {\r\n\t\t\tthis.rowModel = options.rowModel;\r\n\t\t\tthis.formModel = options.formModel;\r\n\t\t}\r\n\t} );\r\n\treturn collection;\r\n} );\n","/**\r\n * Model that holds our row information\r\n * \r\n * @package Ninja Forms Layouts\r\n * @subpackage Fields\r\n * @copyright (c) 2016 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/rowModel',['models/cellCollection'], function( CellCollection ) {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tthis.set( 'cells', new CellCollection( this.get( 'cells' ), { rowModel: this, formModel: this.collection.formModel } ) );\r\n            this.set( 'order', Number( this.get( 'order' ) ) );\r\n\t\t\tthis.listenTo( this.get( 'cells' ), 'change:errors', this.triggerErrors );\r\n\t\t},\r\n\r\n\t\ttriggerErrors: function( fieldModel ) {\r\n\t\t\tthis.collection.trigger( 'change:errors', fieldModel );\r\n\t\t}\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n","/**\r\n * Holds all of our row models.\r\n * \r\n * @package Ninja Forms Layouts\r\n * @subpackage Fields\r\n * @copyright (c) 2016 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/rowCollection',['models/rowModel'], function( rowModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: rowModel,\r\n\t\tcomparator: 'order',\r\n\r\n\t\tinitialize: function( models, options ) {\r\n\t\t\tthis.formModel = options.formModel;\r\n\t\t},\r\n\r\n\t\tvalidateFields: function() {\r\n\t\t\t/*\r\n\t\t\t * Validate the fields in this row collection.\r\n\t\t\t */\r\n\t\t\tthis.trigger( 'validate:fields', this );\r\n\t\t},\r\n\r\n\t\tshowFields: function() {\r\n\t\t\tthis.trigger( 'show:fields', this );\r\n\t\t},\r\n\r\n\t\thideFields: function() {\r\n\t\t\tthis.trigger( 'hide:fields', this );\r\n\t\t}\r\n\t} );\r\n\treturn collection;\r\n} );\n","define( 'controllers/formContentFilters',[ 'views/rowCollection', 'models/rowCollection'], function( RowCollectionView, RowCollection ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tnfRadio.channel( 'formContent' ).request( 'add:viewFilter', this.getFormContentView, 4 );\r\n\t\t\tnfRadio.channel( 'formContent' ).request( 'add:loadFilter', this.formContentLoad, 4 );\r\n\t\t\t\r\n\t\t\t/*\r\n\t\t\t * In the RC for Ninja Forms, the 'formContent' channel was called 'fieldContents'.\r\n\t\t\t * This was changed in version 3.0. These radio messages are here to make sure nothing breaks.\r\n\t\t\t *\r\n\t\t\t * TODO: Remove this backwards compatibility radio calls.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'fieldContents' ).request( 'add:viewFilter', this.getFormContentView, 4 );\r\n\t\t\tnfRadio.channel( 'fieldContents' ).request( 'add:loadFilter', this.formContentLoad, 4 );\r\n\t\t},\r\n\r\n\t\tgetFormContentView: function( collection ) {\r\n\t\t\treturn RowCollectionView;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we load our builder view, we filter the formContentData.\r\n\t\t * This turns the saved object into a Backbone Collection.\r\n\t\t *\r\n\t\t * If we aren't passed any data, then this form hasn't been modified with layouts yet,\r\n\t\t * so we default to the nfLayouts.rows global variable that is localised for us.\r\n\t\t * \r\n\t\t * @since  3.0\r\n\t\t * @param  array formContentData current value of our formContentData.\r\n\t\t * @return Backbone.Collection\r\n\t\t */\r\n\t\tformContentLoad: function( formContentData, formModel, empty, fields ) {\r\n\t\t\tif ( true === formContentData instanceof RowCollection ) return formContentData;\r\n\t\t\t\r\n\t\t\tvar formContentLoadFilters = nfRadio.channel( 'formContent' ).request( 'get:loadFilters' );\r\n\r\n\t\t\t/*\r\n\t\t\t * TODO: This is a bandaid fix to prevent forms with layouts and parts from freaking out of layouts & styles are deactivated.\r\n\t\t\t * If Layouts is deactivated, it will send the field keys.\r\n\t\t\t */\r\n\t\t\tvar mpEnabled = ( 'undefined' != typeof formContentLoadFilters[1] ) ? true : false;\r\n\r\n\t\t\t/*\r\n\t\t\t * TODO: Bandaid fix for making sure that Layouts can interpret Multi-Part data if Multi-Part is disabled.\r\n\t\t\t */\r\n\t\t\tif ( ! mpEnabled && _.isArray( formContentData ) && 0 != _.isArray( formContentData ).length  && 'undefined' != typeof _.first( formContentData ) && 'part' == _.first( formContentData ).type ) {\r\n\t\t\t\t/* \r\n\t\t\t\t * Get our layout data from inside MP\r\n\t\t\t\t */\r\n\t\t\t\tformContentData = _.flatten( _.pluck( formContentData, 'formContentData' ) );\r\n\t\t\t}\r\n\r\n\t\t\tempty = empty || false;\r\n\t\t\tfields = fields || false;\r\n\t\t\tvar rowArray = [];\r\n\r\n\t\t\tif ( _.isArray( formContentData ) && 0 != formContentData.length && 'undefined' == typeof formContentData[0].cells ) {\r\n\t\t\t\t_.each( formContentData, function( key, index ) {\r\n\t\t\t\t\trowArray.push( {\r\n\t\t\t\t\t\torder: index,\r\n\t\t\t\t\t\tcells: [ {\r\n\t\t\t\t\t\t\torder: 0,\r\n\t\t\t\t\t\t\tfields: [ key ],\r\n\t\t\t\t\t\t\twidth: '100'\r\n\t\t\t\t\t\t} ]\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t} );\r\n\t\t\t} else if ( _.isEmpty( rowArray ) && 'undefined' != typeof nfLayouts && ! mpEnabled ) {\r\n\t\t\t\trowArray = nfLayouts.rows;\r\n\t\t\t} else {\r\n\t\t\t\trowArray = formContentData;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn new RowCollection( rowArray, { formModel: formModel } );\r\n\t\t}\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n","define( \r\n\t'controllers/loadControllers',[\r\n\t\t'controllers/formContentFilters',\r\n\t], \r\n\tfunction\r\n\t(\r\n\t\tFormContentFilters\r\n\t)\r\n\t{\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tnew FormContentFilters();\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n","var nfRadio = Backbone.Radio;\r\nrequire( ['controllers/loadControllers'], function( LoadControllers ) {\r\n\r\n\tvar NFLayouts = Marionette.Application.extend( {\r\n\r\n\t\tinitialize: function( options ) {\r\n\t\t\tthis.listenTo( nfRadio.channel( 'form' ), 'before:filterData', this.loadControllers );\r\n\t\t},\r\n\r\n\t\tloadControllers: function( app ) {\r\n\t\t\tnew LoadControllers();\r\n\t\t}\r\n\t} );\r\n\r\n\tvar nfLayouts = new NFLayouts();\r\n\tnfLayouts.start();\r\n} );\ndefine(\"main\", function(){});\n\n"]}