{"version":3,"sources":["jsdelivr-header.js","/npm/@lemonadejs/rating@5.8.1/dist/index.js"],"names":[],"mappings":"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","file":"/npm/@lemonadejs/rating@5.8.1/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@lemonadejs/rating@5.8.1/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","if (!lemonade && typeof (require) === 'function') {\r\n    var lemonade = require('lemonadejs');\r\n}\r\n\r\n;(function (global, factory) {\r\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n    typeof define === 'function' && define.amd ? define(factory) :\r\n    global.Rating = factory();\r\n}(this, (function () {\r\n\r\n    class CustomEvents extends Event {\r\n        constructor(type, props, options) {\r\n            super(type, {\r\n                bubbles: true,\r\n                composed: true,\r\n                ...options,\r\n            });\r\n\r\n            if (props) {\r\n                for (const key in props) {\r\n                    // Avoid assigning if property already exists anywhere on `this`\r\n                    if (! (key in this)) {\r\n                        this[key] = props[key];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    // Dispatcher\r\n    const Dispatch = function(method, type, options) {\r\n        // Try calling the method directly if provided\r\n        if (typeof method === 'function') {\r\n            let a = Object.values(options);\r\n            return method(...a);\r\n        } else if (this.tagName) {\r\n            this.dispatchEvent(new CustomEvents(type, options));\r\n        }\r\n    }\r\n\r\n    const Rating = function(children, { onchange, onload }) {\r\n        let self = this;\r\n\r\n        // Event\r\n        let change = self.onchange;\r\n        self.onchange = null;\r\n\r\n        if (! self.number) {\r\n            self.number = 5;\r\n        }\r\n\r\n        self.stars = [];\r\n\r\n        // Current self star\r\n        let current = null;\r\n\r\n        /**\r\n         * Update the number of stars\r\n         */\r\n        const len = function () {\r\n            // Remove stars\r\n            if (self.number < self.stars.length) {\r\n                self.stars.splice(self.number, self.stars.length);\r\n                if (self.value > self.number) {\r\n                    self.value = self.number;\r\n                }\r\n            }\r\n            // Add missing stars\r\n            for (let i = 0; i < self.number; i++) {\r\n                if (! self.stars[i]) {\r\n                    self.stars[i] = {\r\n                        icon: 'star',\r\n                    };\r\n                    if (self.tooltip[i]) {\r\n                        self.stars[i].title = self.tooltip[i];\r\n                    }\r\n                }\r\n            }\r\n            // Refresh\r\n            self.refresh('stars');\r\n        }\r\n\r\n        const val = function (index, events) {\r\n            if (typeof(index) === 'string') {\r\n                index = Number(index);\r\n            }\r\n            // Apply value to the selected property in each star\r\n            for (let i = 0; i < self.number; i++) {\r\n                self.stars[i].selected = i <= index - 1 ? 1 : 0;\r\n            }\r\n            // Keep current value\r\n            current = index;\r\n            // Dispatch method\r\n            if (events !== false) {\r\n                Dispatch.call(self, change, 'change', {\r\n                    instance: self,\r\n                    value: index,\r\n                });\r\n            }\r\n        }\r\n\r\n        const getElementPosition = function(child) {\r\n            if (child.tagName === 'I') {\r\n                let root = self.el;\r\n                for (let i = 0; i < root.children.length; i++) {\r\n                    let c = root.children[i];\r\n                    if (c === child) {\r\n                        return i;\r\n                    }\r\n                }\r\n            }\r\n            return -1;\r\n        }\r\n\r\n        const click = function(e, s) {\r\n            let ret = getElementPosition(e.target);\r\n            if (ret !== -1) {\r\n                let index = ret + 1;\r\n                if (index === current) {\r\n                    index = 0;\r\n                }\r\n                self.value = index;\r\n            }\r\n        }\r\n\r\n        const mouseover = function(e, s) {\r\n            let index = getElementPosition(e.target);\r\n            if (index !== -1) {\r\n                for (let i = 0; i < self.number; i++) {\r\n                    if (i <= index) {\r\n                        self.stars[i].hover = 1;\r\n                    } else {\r\n                        self.stars[i].hover = 0;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        const mouseout = function(e, s) {\r\n            for (let i = 0; i < self.number; i++) {\r\n                self.stars[i].hover = 0;\r\n            }\r\n        }\r\n\r\n        onchange((prop) => {\r\n            if (prop === 'number') {\r\n                len();\r\n            } else if (prop === 'value') {\r\n                val(self.value);\r\n            } else if (prop === 'tooltip') {\r\n                if (typeof(self.tooltip) === 'string') {\r\n                    self.tooltip = self.tooltip.split(',')\r\n                }\r\n                len();\r\n            }\r\n        })\r\n\r\n        onload(() => {\r\n            // Bind global method to be compatible with LemonadeJS forms\r\n            self.el.val = function (v) {\r\n                if (typeof (v) === 'undefined') {\r\n                    return self.value;\r\n                } else {\r\n                    self.value = v;\r\n                }\r\n            }\r\n\r\n            if (self.tooltip && typeof(self.tooltip) === 'string') {\r\n                self.tooltip = self.tooltip.split(',')\r\n            } else {\r\n                self.tooltip = '';\r\n            }\r\n            len();\r\n            // Ignore events\r\n            val(self.value, false);\r\n\r\n            self.el.addEventListener('click', click);\r\n            self.el.addEventListener('mouseout', mouseout);\r\n            self.el.addEventListener('mouseover', mouseover);\r\n        });\r\n\r\n        self.getValue = function () {\r\n            return Number(self.value);\r\n        }\r\n\r\n        self.setValue = function (index) {\r\n            self.value = index;\r\n        }\r\n\r\n        return `<div class=\"lm-rating\" value=\"{{self.value}}\" number=\"{{self.number}}\" name=\"{{self.name}}\" data-size=\"{{self.size}}\" :loop=\"self.stars\">\r\n            <i class=\"material-symbols-outlined material-icons\" data-selected=\"{{self.selected}}\" data-hover=\"{{self.hover}}\" title=\"{{self.title}}\">star</i>\r\n        </div>`;\r\n    }\r\n\r\n    // Register the LemonadeJS Component\r\n    lemonade.setComponents({ Rating: Rating });\r\n    // Register the web component\r\n    lemonade.createWebComponent('rating', Rating);\r\n\r\n    return function (root, options) {\r\n        if (typeof (root) === 'object') {\r\n            lemonade.render(Rating, root, options)\r\n            return options;\r\n        } else {\r\n            return Rating.call(this, root)\r\n        }\r\n    }\r\n\r\n})));"]}