{"version":3,"sources":["jsdelivr-header.js","/npm/alxnpm-mod-object-picker@5.0.0/script.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACJA,IAAI,OAAS,QAAQ,4BAEb,SAAW,2BAEJ,MAAM,qBAAqB,OACtC,WAAA,CAAY,EAAU,EAAW,EAAa,GAC1C,MAAM,EAAU,EAAW,EAAa,EAC5C,CAEA,MAAA,CAAO,GAEH,IAAI,EAEA,EADA,EAAO,KAAK,QAAQ,KAEpB,EAAO,GAGX,KAAK,eAAiB,GAGtB,KAAK,eAAiB,KAAK,SAAS,QAAQ,UAAW,GAEvD,EAAO,KAAK,YAAY,cAAc,SAK9B,EAHJ,EAEa,SAAT,EACQ,KAAK,MAAM,QAAO,SAAU,GAChC,OAAO,EAAI,MAAM,cAAc,SAAS,EAAO,gBAAkB,EAAI,YAAY,KAAK,KAAK,SAAS,EAAO,cAC/G,IAIQ,KAAK,OAAO,QAAO,SAAU,GACjC,OAAO,EAAI,MAAM,cAAc,SAAS,EAAO,cACnD,IAMK,SAAT,EAA0B,KAAK,MAAgB,KAAK,OAGxD,EAAM,SAAQ,SAAU,GACF,GAAT,SAAT,EAA0B,wBAAwB,EAAK,iBAAiB,EAAK,cACjE,2BAA2B,EAAK,iCAAiC,EAAK,eACtF,IAEA,EAAK,UAAY,EAIjB,IAAI,EAAgB,KAAK,YAAY,cAAc,wBAC/C,EAAc,KAAK,YAAY,iBAAiB,sBAEhD,IACA,EAAc,MAAQ,EACtB,EAAc,SAKlB,IAAI,EAAQ,KAGZ,eAAe,MAAM,KAAK,KAAI,GAAQ,EAAc,iBAAiB,GACjE,SAAU,GACN,EAAM,OAAO,EAAE,OAAO,MAC1B,IAAG,KAGP,EAAY,SAAQ,SAAU,GAC1B,EAAK,iBAAiB,QAAS,EAAM,QAAQ,kBAAkB,EACnE,IAEA,SAAS,KAAK,iBAAiB,SAAS,SAAU,GAGzC,EAAM,WAAW,aAAa,qBAC3B,EAAM,WAAW,aAAa,sBAC9B,EAAM,WAAW,UAAU,SAAS,kBAAkB,MACtD,EAAM,WAAW,cAAc,UAAU,SAAS,kBAAkB,MAExE,EAAM,MAEd,GAEJ","file":"/npm/alxnpm-mod-object-picker@5.0.0/script.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/alxnpm-mod-object-picker@5.0.0/script.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","//import { Module } from 'alxnpm-mod-module'\r\n\r\nlet Module = require('alxnpm-mod-module')\r\n\r\nimport {data} from './data.js'\r\n\r\nexport default class ObjectPicker extends Module {\r\n    constructor(moduleId, className, htmlElement, options) {\r\n        super(moduleId, className, htmlElement, options);\r\n    }\r\n\r\n    render(filter) {\r\n\r\n        let grid,\r\n            type = this.options.type,\r\n            items,\r\n            html = \"\"\r\n\r\n        //On every render, clear module wrapper content\r\n        this.wrapperContent = \"\"\r\n\r\n        //Then set new wrapper content\r\n        this.wrapperContent = data.template.replace(/{type}/g, type);\r\n\r\n        grid = this.htmlElement.querySelector(\".grid\");\r\n\r\n        if (filter) {\r\n\r\n            if (type === \"icon\") {\r\n                items = data.icons.filter(function (val) {\r\n                    return val.title.toLowerCase().includes(filter.toLowerCase()) || val.searchTerms.join(\" \").includes(filter.toLowerCase());\r\n                });\r\n            }\r\n\r\n            else {\r\n                items = data.colors.filter(function (val) {\r\n                    return val.title.toLowerCase().includes(filter.toLowerCase());\r\n                });\r\n            }\r\n\r\n        }\r\n\r\n        else {\r\n            type === \"icon\" ? items = data.icons : items = data.colors;\r\n        }\r\n\r\n        items.forEach(function (item) {\r\n            type === \"icon\" ? html += `<i data-pickervalue='${item.title}' class='${item.title}'></i>` :\r\n                html += `<span data-pickervalue='${item.code}' style='background-color:${item.code}'></span>`;\r\n        });\r\n\r\n        grid.innerHTML = html;\r\n\r\n        // After setting innerHTML content, add events\r\n\r\n        let searchElement = this.htmlElement.querySelector(\"input[type='search']\"),\r\n            pickerItems = this.htmlElement.querySelectorAll(\"[data-pickervalue]\");\r\n\r\n        if (filter) {\r\n            searchElement.value = filter;\r\n            searchElement.focus();\r\n        }\r\n\r\n\r\n        //Remember to save this when using inside forEach, map, addEventLister, etc.\r\n        let _this = this;\r\n\r\n        // Handle when user types into the search input item or when search input is cleared\r\n        \"keyup search\".split(\" \").map(name => searchElement.addEventListener(name,\r\n            function (e) {\r\n                _this.render(e.target.value);\r\n            }, false));\r\n\r\n        // Assign event when picker item is clicked which is just calling supplied handler\r\n        pickerItems.forEach(function (item) {\r\n            item.addEventListener(\"click\", _this.options.itemClickHandler, false);\r\n        });\r\n\r\n        document.body.addEventListener(\"click\", function (event) {\r\n            //console.log(event.srcElement.parentElement);\r\n\r\n            if (!event.srcElement.hasAttribute(\"data-pickervalue\")\r\n                && !event.srcElement.hasAttribute(\"data-pickersearch\")\r\n                && !event.srcElement.classList.contains(`picker-trigger-${type}`)\r\n                && !event.srcElement.parentElement.classList.contains(`picker-trigger-${type}`)\r\n            ) {\r\n                _this.hide();\r\n            }\r\n        });\r\n\r\n    }\r\n\r\n}"]}