{"version":3,"file":"archive-recipe.19ef32.js","mappings":"oFAKA,IAAWA,IAkJRC,OAjJCC,OAAOC,eAsII,CACHC,KAAI,YAtIR,WACI,IAAMC,EAAWL,EAAE,sBACbM,EAAWN,EAAE,sBACbO,EAAWP,EAAE,sBAAsBQ,KAAK,iBACxCC,EAAkBP,OAAOQ,WAAW,mBACpCC,EAAiBF,EAAkBG,KAAKC,MAAMJ,GAAmB,GAEnEE,EAAeG,OAAS,GACxBd,EAAE,wBAAwBe,OAG9B,IAAMC,EAAgB,WAClB,IAAMC,EAAaC,OAAOC,SAASC,KAE7BC,EAAYJ,EAAWK,QAAQ,eAAiB,EAAIL,EAAa,GAAHM,OAAMN,EAAU,cACpFjB,EAAEwB,IAAIH,GAAW,SAACI,GACdnB,EAASoB,KAAKD,GACdE,IAEAzB,OAAO0B,eAAexB,MAC1B,IAAGyB,MAAK,WACJC,QAAQC,IAAI,qBAChB,GACJ,EAEMC,EAAe,WACjB3B,EAASG,KAAK,qBAAqByB,MAAK,SAAUC,GAC9ClC,EAAEmC,MAAMC,SAASC,YAAY,WACzBrC,EAAEmC,MAAMG,KAAK,YACbtC,EAAEmC,MAAMC,SAASG,SAAS,UAElC,GACJ,EAGMC,EAAc,WAChBnC,EAASG,KAAK,6BAA6B6B,YAAY,UAC3D,EAEMI,EAAgB,WAClBlC,EAAS8B,YAAY,WACEhC,EAASG,KAAK,YACtByB,MAAK,SAAUC,GAC1B,IAAMQ,EAAS1C,EAAEmC,MAAMQ,QAAQ,6BAA6BC,KAAK,MACjE5C,EAAE,gBAADuB,OAAiBmB,EAAM,MAAKH,SAAS,UAC1C,GACJ,EAEMM,EAAe,WACjBxC,EAASG,KAAK,qBAAqByB,MAAK,SAAUC,GAC9ClC,EAAEmC,MAAMW,WAAW,UACvB,IAEAzC,EAASG,KAAK,SAASyB,MAAK,SAAUC,GAClClC,EAAEmC,MAAME,YAAY,WACxB,SAE2C,IAAhCnB,OAAO6B,QAAQC,cACtB9B,OAAO6B,QAAQC,aAAa,KAAM,kBAAmB,KAGzDhB,IACAS,IACAD,IACAxB,GACJ,EAEMiC,EAAuB,WACzB1C,EAAS0B,MAAK,SAAUC,GACpBlC,EAAEmC,MAAME,YAAY,YACpBrC,EAAEmC,MAAME,YAAY,UACxB,GACJ,EAEMV,EAAgB,WAClB3B,EAAE,sBAAsBkD,GAAG,UAAU,WACjC,QAA2C,IAAhChC,OAAO6B,QAAQC,aAA8B,CACpD,IAAIG,EAAYnD,EAAE,sBAAsBmD,YAEpCxC,EAAeG,OAAS,GAAKqC,EAAU7B,QAAQ,0BAA4B,IAC3E6B,GAAaA,EAAU7B,QAAQ,eAAiB,EAAI,GAAK,aAAHC,OAAgBd,IAE1ES,OAAO6B,QAAQC,aAAa,KAAM,kBAAmB,IAAFzB,OAAM4B,GAC7D,CACAnB,IACAS,IACAzB,GACJ,GACJ,EAEAT,EAAS2C,GAAG,SAAS,WAKjB,GAJAD,IACAT,IACAxC,EAAEmC,MAAMI,SAAS,YAEbvC,EAAEmC,MAAMiB,IAAI,WAAY,CACxB,IAAMV,EAAS1C,EAAEmC,MAAMkB,KAAK,UAC5BrD,EAAE,IAADuB,OAAKmB,IAAUH,SAAS,WACzBvC,EAAE,IAADuB,OAAKmB,IAAUlC,KAAK,2BAA2B8C,QAAQC,OAC5D,CACJ,IAEAlD,EAASG,KAAK,2BAA2B0C,GAAG,WAAW,SAAUM,GAC7D,GAAoB,KAAhBA,EAAMC,MAGNzD,EAAEmC,MAAMuB,aACL,GAAoB,KAAhBF,EAAMC,MAAc,CAG3B,IAAME,EAAU3D,EAAEmC,MAAMQ,QAAQ,6BAA6BC,KAAK,MAClE5C,EAAE,gBAADuB,OAAiBoC,EAAO,MAAKJ,OAClC,CACJ,IAEAvD,EAAEO,EAAUF,GAAU6C,GAAG,WAAW,SAACM,GACb,IAAhBA,EAAMC,QAGNZ,IACAI,IAER,IAEAjD,EAAE,gBAAgBkD,GAAG,SAAS,WAC1BL,IACAI,GACJ,IAEAjB,IACAS,IACAd,GACJ,CAGQiC,EACJ,GAKR5D,EAAE6D,UAAUC,OAAM,WACd5D,OAAOC,eAAeC,MAC1B,G","sources":["webpack://soyvay-com/./js/src/pages/archive-recipe.js"],"sourcesContent":["/**\n * archive recipe js\n * js functions for the recipe finder and results page\n *\n */\n(function ($) {\n    SoyVay.archiveRecipes = (function () {\n        function privateInit() {\n            const $filters = $('.js-recipe-filters');\n            const $results = $('.js-recipe-results');\n            const $toggles = $('.js-recipe-toggles').find('[data-toggle]');\n            const favoritesCookie = SoyVay.readCookie('favoriteRecipes');\n            const favoritesArray = favoritesCookie ? JSON.parse(favoritesCookie) : [];\n\n            if (favoritesArray.length > 0) {\n                $('#my-favorites-filter').show();\n            }\n\n            const updateResults = function () {\n                const uriRequest = window.location.href;\n                // if js-load is not a param, add it to avoid page caching issues\n                const jsRequest = uriRequest.indexOf('&js-load=1') > -1 ? uriRequest : `${uriRequest}&js-load=1`;\n                $.get(jsRequest, (results) => {\n                    $results.html(results);\n                    updateFilters();\n                    // $('.js-count').text(SoyVay.resultsCount);\n                    SoyVay.handleFavorite.init();\n                }).fail(() => {\n                    console.log('could not get data');\n                });\n            };\n\n            const updateLabels = function () {\n                $filters.find('input[type=radio]').each(function (i) {\n                    $(this).parent().removeClass('checked');\n                    if ($(this).prop('checked')) {\n                        $(this).parent().addClass('checked');\n                    }\n                });\n            };\n\n            // reset state of visible filter groups\n            const hideFilters = function () {\n                $filters.find('.recipe-filters__fieldset').removeClass('visible');\n            };\n\n            const updateToggles = function () {\n                $toggles.removeClass('checked');\n                const checkedFilters = $filters.find('.checked');\n                checkedFilters.each(function (i) {\n                    const winner = $(this).parents('.recipe-filters__fieldset').attr('id');\n                    $(`[data-toggle=${winner}]`).addClass('checked');\n                });\n            };\n\n            const clearFilters = function () {\n                $filters.find('input[type=radio]').each(function (i) {\n                    $(this).removeAttr('checked');\n                });\n\n                $filters.find('label').each(function (i) {\n                    $(this).removeClass('selected');\n                });\n\n                if (typeof window.history.replaceState !== 'undefined') {\n                    window.history.replaceState(null, 'Updated filters', '?');\n                }\n\n                updateLabels();\n                updateToggles();\n                hideFilters();\n                updateResults();\n            };\n\n            const clearToggleSelection = function () {\n                $toggles.each(function (i) {\n                    $(this).removeClass('selected');\n                    $(this).removeClass('checked');\n                });\n            };\n\n            const updateFilters = function () {\n                $('.js-recipe-filters').on('change', () => {\n                    if (typeof window.history.replaceState !== 'undefined') {\n                        let serialize = $('.js-recipe-filters').serialize();\n                        // if request includes My Favorites include the cookie value to bypass caching\n                        if (favoritesArray.length > 0 && serialize.indexOf('category=my-favorites') > -1) {\n                            serialize += serialize.indexOf('&favorite=') > -1 ? '' : `&favorite=${favoritesCookie}`;\n                        }\n                        window.history.replaceState(null, 'Updated filters', `?${serialize}`);\n                    }\n                    updateLabels();\n                    updateToggles();\n                    updateResults();\n                });\n            };\n\n            $toggles.on('click', function () {\n                clearToggleSelection();\n                hideFilters();\n                $(this).addClass('selected');\n\n                if ($(this).not('checked')) {\n                    const winner = $(this).data('toggle');\n                    $(`#${winner}`).addClass('visible');\n                    $(`#${winner}`).find('.recipe-filters__filter').first().focus();\n                }\n            });\n\n            $filters.find('.recipe-filters__filter').on('keydown', function (event) {\n                if (event.which === 13) {\n                    // enter\n                    // simulate click to employ the filter\n                    $(this).click();\n                } else if (event.which === 27) {\n                    // escape\n                    // refocus to the toggle button that controls this set\n                    const control = $(this).parents('.recipe-filters__fieldset').attr('id');\n                    $(`[data-toggle=${control}]`).focus();\n                }\n            });\n\n            $($toggles, $filters).on('keydown', (event) => {\n                if (event.which === 8) {\n                    // backspace\n                    // clear all filters\n                    clearFilters();\n                    clearToggleSelection();\n                }\n            });\n\n            $('[data-clear]').on('click', () => {\n                clearFilters();\n                clearToggleSelection();\n            });\n\n            updateLabels();\n            updateToggles();\n            updateFilters();\n        }\n        return {\n            init() {\n                privateInit();\n            },\n        };\n    })();\n\n    // document ready\n    $(document).ready(() => {\n        SoyVay.archiveRecipes.init();\n    });\n})(jQuery);\n"],"names":["$","jQuery","SoyVay","archiveRecipes","init","$filters","$results","$toggles","find","favoritesCookie","readCookie","favoritesArray","JSON","parse","length","show","updateResults","uriRequest","window","location","href","jsRequest","indexOf","concat","get","results","html","updateFilters","handleFavorite","fail","console","log","updateLabels","each","i","this","parent","removeClass","prop","addClass","hideFilters","updateToggles","winner","parents","attr","clearFilters","removeAttr","history","replaceState","clearToggleSelection","on","serialize","not","data","first","focus","event","which","click","control","privateInit","document","ready"],"sourceRoot":""}