{"mappings":"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","sources":["src/jquery.gridder.js"],"sourcesContent":["(function(factory) {\r\n    factory(jQuery);\r\n  })(function($) {\r\n\r\n    /* Custom Easing */\r\n    $.fn.extend($.easing,{\r\n        def:\"easeInOutExpo\", easeInOutExpo:function(e,f,a,h,g){if(f===0){return a;}if(f===g){return a+h;}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a;}return h/2*(-Math.pow(2,-10*--f)+2)+a;}\r\n    });    \r\n    \r\n    /* KEYPRESS LEFT & RIGHT ARROW */\r\n    /* This will work only if a current gridder is opened. */\r\n    $(document).keydown(function(e) {\r\n        var keycode = e.keyCode;\r\n        var $current_gridder = $(\".currentGridder\");\r\n        var $current_target = $current_gridder.find(\".gridder-show\");\r\n        if($current_gridder.length){\r\n            if ( keycode === 37 ) {\r\n                //console.log(\"Pressed Left Arrow\");\r\n                $current_target.prev().prev().trigger(\"click\");\r\n                e.preventDefault();\r\n            }\r\n            if ( keycode === 39 ) {\r\n                //console.log(\"Pressed Right Arrow\");\r\n                $current_target.next().trigger(\"click\");\r\n                e.preventDefault();\r\n            }\r\n        }else{\r\n            //console.log(\"No active gridder.\");\r\n        }   \r\n    });\r\n    \r\n    $.fn.gridderExpander = function(options) {\r\n        \r\n        /* GET DEFAULT OPTIONS OR USE THE ONE PASSED IN THE FUNCTION  */\r\n        var settings = $.extend( {}, $.fn.gridderExpander.defaults, options );      \r\n\r\n        return this.each(function() {\r\n            \r\n            var mybloc;\r\n            var _this = $(this);\r\n            var visible = false;\r\n            \r\n            // START CALLBACK\r\n            settings.onStart(_this);\r\n            \r\n            // CLOSE FUNCTION\r\n            function closeExpander(base) {\r\n                \r\n                // SCROLL TO CORRECT POSITION FIRST\r\n                if(settings.scroll){\r\n                    $(\"html, body\").animate({\r\n                        scrollTop: base.find(\".selectedItem\").offset().top - settings.scrollOffset\r\n                    }, {\r\n                        duration: 200,\r\n                        easing: settings.animationEasing\r\n                    });\r\n                }\r\n                \r\n                _this.removeClass(\"hasSelectedItem\");\r\n\r\n                // REMOVES GRIDDER EXPAND AREA\r\n                visible = false;\r\n                base.find(\".selectedItem\").removeClass(\"selectedItem\");\r\n                \r\n                base.find(\".gridder-show\").slideUp(settings.animationSpeed, settings.animationEasing, function() {\r\n                    base.find(\".gridder-show\").remove();\r\n                    settings.onClosed(base);\r\n                });\r\n                \r\n                /* REMOVE CURRENT ACTIVE GRIDDER */\r\n                $(\".currentGridder\").removeClass(\"currentGridder\");\r\n            }\r\n            \r\n            // OPEN EXPANDER\r\n            function openExpander(myself) {\r\n                \r\n                /* CURRENT ACTIVE GRIDDER */\r\n                $(\".currentGridder\").removeClass(\"currentGridder\");\r\n                _this.addClass(\"currentGridder\");\r\n                \r\n                /* ENSURES THE CORRECT BLOC IS ACTIVE */\r\n                if (!myself.hasClass(\"selectedItem\")) {\r\n                    _this.find(\".selectedItem\").removeClass(\"selectedItem\");\r\n                    myself.addClass(\"selectedItem\");\r\n                } else {\r\n                    // THE SAME IS ALREADY OPEN, LET\"S CLOSE IT\r\n                    closeExpander(_this, settings);\r\n                    return;\r\n                }\r\n\r\n                /* REMOVES PREVIOUS BLOC */\r\n                _this.find(\".gridder-show\").remove();\r\n\r\n\r\n                /* ADD CLASS TO THE GRIDDER CONTAINER\r\n                 * So you can apply global style when item selected. \r\n                 */\r\n                if (!_this.hasClass(\"hasSelectedItem\")) {\r\n                    _this.addClass(\"hasSelectedItem\");\r\n                }\r\n\r\n                /* ADD LOADING BLOC */\r\n                var $htmlcontent = $(\"<div class=\\\"gridder-show loading\\\"></div>\");\r\n                mybloc = $htmlcontent.insertAfter(myself);\r\n                \r\n                /* GET CONTENT VIA AJAX OR #ID*/\r\n                var thecontent = \"\";\r\n                \r\n                if( myself.data(\"griddercontent\").indexOf(\"#\") === 0 ) {\r\n                    \r\n                    // Load #ID Content\r\n                    thecontent = $(myself.data(\"griddercontent\")).html();\r\n                    processContent(myself, thecontent);\r\n                }else{\r\n                    \r\n                    // Load AJAX Content\r\n                    $.ajax({\r\n                        type: \"GET\",\r\n                        url: myself.data(\"griddercontent\"),\r\n                        success: function(data) {\r\n                            thecontent = data;\r\n                            processContent(myself, thecontent);\r\n                        },\r\n                        error: function (request) {\r\n                            thecontent = request.responseText;\r\n                            processContent(myself, thecontent);\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            \r\n            // PROCESS CONTENT\r\n            function processContent(myself, thecontent){\r\n\r\n                /* FORMAT OUTPUT */   \r\n                var htmlcontent = \"<div class=\\\"gridder-padding\\\">\";\r\n                \r\n                if(settings.showNav){\r\n                    \r\n                    /* CHECK IF PREV AND NEXT BUTTON HAVE ITEMS */\r\n                    var prevItem = ($(\".selectedItem\").prev());\r\n                    var nextItem = ($(\".selectedItem\").next().next());\r\n                    \r\n                    htmlcontent += \"<div class=\\\"gridder-navigation\\\">\";\r\n                    htmlcontent += \"<a href=\\\"#\\\" class=\\\"gridder-close\\\">\"+settings.closeText+\"</a>\";\r\n                    htmlcontent += \"<a href=\\\"#\\\" class=\\\"gridder-nav prev \"+(!prevItem.length?\"disabled\":\"\")+\"\\\">\"+settings.prevText+\"</a>\";\r\n                    htmlcontent += \"<a href=\\\"#\\\" class=\\\"gridder-nav next \"+(!nextItem.length?\"disabled\":\"\")+\"\\\">\"+settings.nextText+\"</a>\";\r\n                    htmlcontent += \"</div>\";\r\n                }     \r\n                \r\n                htmlcontent += \"<div class=\\\"gridder-expanded-content\\\">\";\r\n                htmlcontent += thecontent;\r\n                htmlcontent += \"</div>\";\r\n                htmlcontent += \"</div>\";\r\n\r\n                // IF EXPANDER IS ALREADY EXPANDED \r\n                if (!visible) {\r\n                    mybloc.hide().append(htmlcontent).slideDown(settings.animationSpeed, settings.animationEasing, function () {\r\n                        visible = true;\r\n                        /* AFTER EXPAND CALLBACK */\r\n                        if (typeof(settings.onContent) === \"function\") {\r\n                            settings.onContent(mybloc);\r\n                        }\r\n                    });\r\n                } else {\r\n                    mybloc.html(htmlcontent);\r\n                    mybloc.find(\".gridder-padding\").fadeIn(settings.animationSpeed, settings.animationEasing, function () {\r\n                        visible = true;\r\n                        /* CHANGED CALLBACK */\r\n                        if (typeof(settings.onContent) === \"function\") {\r\n                            settings.onContent(mybloc);\r\n                        }\r\n                    });\r\n                }\r\n\r\n                /* SCROLL TO CORRECT POSITION AFTER */\r\n                if (settings.scroll) {\r\n                    var offset = (settings.scrollTo === \"panel\" ? myself.offset().top + myself.height() - settings.scrollOffset : myself.offset().top - settings.scrollOffset);\r\n                    $(\"html, body\").animate({\r\n                        scrollTop: offset\r\n                    }, {\r\n                        duration: settings.animationSpeed,\r\n                        easing: settings.animationEasing\r\n                    });\r\n                }\r\n                \r\n                /* REMOVE LOADING CLASS */\r\n                mybloc.removeClass(\"loading\");\r\n            }\r\n            \r\n            /* CLICK EVENT */\r\n            _this.on(\"click\", \".gridder-list\", function (e) {\r\n                e.preventDefault();\r\n                var myself = $(this);\r\n                openExpander(myself);\r\n            });\r\n            \r\n            /* NEXT BUTTON */\r\n            _this.on(\"click\", \".gridder-nav.next\", function(e) {\r\n                e.preventDefault();\r\n                $(this).parents(\".gridder-show\").next().trigger(\"click\");\r\n            });\r\n\r\n            /* PREVIOUS BUTTON */\r\n            _this.on(\"click\", \".gridder-nav.prev\", function(e) {\r\n                e.preventDefault();\r\n                $(this).parents(\".gridder-show\").prev().prev().trigger(\"click\");\r\n            });\r\n            \r\n            /* CLOSE BUTTON */\r\n            _this.on(\"click\", \".gridder-close\", function(e) {\r\n                e.preventDefault();\r\n                closeExpander(_this);\r\n            });\r\n        });\r\n    };\r\n    \r\n    // Default Options\r\n    $.fn.gridderExpander.defaults = {\r\n        scroll: true,\r\n        scrollOffset: 30,\r\n        scrollTo: \"panel\", // panel or listitem\r\n        animationSpeed: 400,\r\n        animationEasing: \"easeInOutExpo\",\r\n        showNav: true,\r\n        nextText: \"Next\",\r\n        prevText: \"Previous\",\r\n        closeText: \"Close\",    \r\n        onStart: function(){},\r\n        onContent: function(){},\r\n        onClosed: function(){}\r\n    };\r\n     \r\n});\r\n"],"names":["$","jQuery","fn","extend","easing","def","easeInOutExpo","e","f","a","h","g","Math","pow","document","keydown","keycode","keyCode","$current_gridder","$current_target","find","length","prev","trigger","preventDefault","next","gridderExpander","options","settings","defaults","this","each","mybloc","_this","visible","closeExpander","base","scroll","animate","scrollTop","offset","top","scrollOffset","duration","animationEasing","removeClass","slideUp","animationSpeed","remove","onClosed","openExpander","myself","addClass","hasClass","$htmlcontent","insertAfter","thecontent","data","indexOf","html","processContent","ajax","type","url","success","error","request","responseText","htmlcontent","showNav","prevItem","nextItem","closeText","prevText","nextText","fadeIn","onContent","hide","append","slideDown","scrollTo","height","onStart","on","parents"],"version":3,"file":"jquery.gridder.js.map"}