{"version":3,"sources":["personalisation.js"],"names":["Loop","this","object","obj","callback","keys","Object","i","length","array","reverse","Personalisation","self","loop","text","document","querySelector","colour","label","click","exists","init","textField","colourField","querySelectorAll","addEventListener","check","bind","changeColour","getFirstColour","getActiveColour","getAllActiveColours","value","deactivate","activate","e","target","checked","colours","id","dispatchEvent","CustomEvent","setlabel","parentNode","innerHTML","classList","add","remove","html","Soho","personalisation"],"mappings":"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","file":"../../javascript/personalisation.js","sourcesContent":["function Loop() {\n\n    this.object = function(obj, callback) {\n        var keys = Object.keys(obj);\n        for (var i = 0; i < keys.length; i++) {\n            (function(i) {\n                callback(keys, i);\n            })(i);\n        }\n    }\n\n    this.array = function(array, callback, reverse) {\n        if (reverse) {\n            for (var i = array.length - 1; i > -1; i--) {\n                (function(i) {\n                    callback(array, i);\n                })(i);\n            }\n        } else {\n            for (var i = 0; i < array.length; i++) {\n                (function(i) {\n                    callback(array, i);\n                })(i);\n            }\n        }\n    }\n}\n\n\nfunction Personalisation() {\n    var self = this;\n    var loop = new Loop();\n\n    this.text = document.querySelector('.js-personalisation-text');\n    this.colour = document.querySelector('.js-personalisation-colour');\n    this.label = document.querySelector('.js-personalisation-label');\n\n    this.click = true;\n\n    this.exists = function() {\n        return this.text;\n    }\n\n    this.init = function() {\n        this.textField = this.text.querySelector('input');\n        this.colourField = this.colour.querySelectorAll('input');\n\n        this.textField.addEventListener('keyup', this.check.bind(this));\n\n        loop.array(this.colourField, function(array, i) {\n            array[i].addEventListener('change', self.changeColour.bind(self));\n        });\n    }\n\n    this.getFirstColour = function() {\n        return this.colour.querySelector('input');\n    }\n\n    this.getActiveColour = function() {\n        return this.colour.querySelector('input:checked');\n    }\n\n    this.getAllActiveColours = function() {\n        return this.colour.querySelectorAll('input:checked');\n    }\n\n    this.check = function() {\n        if (this.textField.value == '') {\n            if (this.getActiveColour()) {\n                this.deactivate();\n            }\n        } else if (!this.getActiveColour()) {\n            this.activate();\n        }\n    }\n\n    this.changeColour = function(e) {\n        if (this.click) {\n            if (e.target.checked) {\n                var colours = this.getAllActiveColours();\n\n\n                this.click = false;\n                loop.array(colours, function(array, i) {\n                    if (array[i].id != e.target.id) {\n                        array[i].checked = null;\n                        array[i].dispatchEvent(new CustomEvent('change'));\n                    }\n                });\n                this.click = true;\n\n                this.setlabel(e.target.parentNode.querySelector('.swatch__text').innerHTML);\n            } else {\n                this.setlabel('');\n            }\n        }\n    }\n\n    this.activate = function() {\n        var colour = this.getFirstColour();\n\n        this.text.classList.add('product-detail__personalisation--active');\n        this.colour.classList.add('product-detail__personalisation--active');\n        colour.checked = true;\n        colour.dispatchEvent(new CustomEvent('change'));\n    }\n\n    this.deactivate = function() {\n        var colour = this.getActiveColour();\n\n        this.text.classList.remove('product-detail__personalisation--active');\n        this.colour.classList.remove('product-detail__personalisation--active');\n        colour.checked = null;\n        colour.dispatchEvent(new CustomEvent('change'));\n        this.setlabel('');\n    }\n\n    this.setlabel = function(html) {\n        this.label.innerHTML = html;\n    }\n}\n\n\nSoho.personalisation = new Personalisation();\nif (Soho.personalisation.exists()) {\n    Soho.personalisation.init();\n}\n"],"sourceRoot":"../../../../resources/javascript"}