{"version":3,"sources":["jsdelivr-header.js","/npm/@lemonadejs/tabs@5.8.0/dist/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAAM,UAAiC,mBAAd,QACrB,IAAI,SAAW,QAAQ,eAGxB,SAAU,EAAQ,GACE,iBAAZ,SAA0C,oBAAX,OAAyB,OAAO,QAAU,IAC9D,mBAAX,QAAyB,OAAO,IAAM,OAAO,GACpD,EAAO,KAAO,GAClB,CAJE,CAIA,MAAM,WAEJ,MAAM,UAAqB,MACvB,WAAA,CAAY,EAAM,EAAO,GAOrB,GANA,MAAM,EAAM,CACR,SAAS,EACT,UAAU,KACP,IAGH,EACA,IAAK,MAAM,KAAO,EAEP,KAAO,OACV,KAAK,GAAO,EAAM,GAIlC,EAIJ,MAAM,EAAW,SAAS,EAAQ,EAAM,GAEpC,GAAsB,mBAAX,EAAuB,CAE9B,OAAO,KADC,OAAO,OAAO,GAE1B,CAAW,KAAK,SACZ,KAAK,cAAc,IAAI,EAAa,EAAM,GAElD,EAEM,EAAU,SAAS,EAAM,GAK3B,GAJM,MAAM,QAAQ,EAAK,QACrB,EAAK,KAAO,IAGZ,EAAK,QACL,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,SAAS,OAAQ,IACtC,EAAK,KAAK,KAAK,CACX,GAAI,EAAK,SAAS,UAI1B,EAAK,SAAS,IACV,EAAK,KAAK,KAAK,CACX,GAAI,EAAM,SACb,GAGb,EAkGM,EAAO,SAAS,GAAU,SAAE,EAAQ,OAAE,IACxC,IAUI,EAVA,EAAO,KAGP,EAAS,EAAK,SAClB,EAAK,SAAW,KAOhB,IAAI,EAAW,GAmBf,GAlBI,KAAK,QACL,EAAO,KAGkB,iBAAf,EAEN,EAAW,EACJ,GAAY,EAAS,SAE5B,EAAO,GAIX,GACA,EAAQ,EAAM,GAId,EAAK,KACL,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,KAAK,OAAQ,IAC5B,EAAK,KAAK,GAAG,KAEf,EAAK,KAAK,GAAG,GAAK,SAAS,cAAc,OAErC,EAAK,KAAK,GAAG,UACb,EAAK,KAAK,GAAG,GAAG,UAAY,EAAK,KAAK,GAAG,UAMzD,IAAI,EAAQ,CAAC,QAAS,WAAY,aAElC,MAcM,EAAO,SAAS,GAClB,IAAI,EAAO,GAEX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,KAAK,OAAQ,IAE9B,GACA,EAAM,SAAS,IACX,IAAI,EAAQ,EAAK,QAAQ,QAAS,IAClC,IAAM,EAAK,KAAK,GAAG,GAAQ,CACvB,IAAI,EAAM,EAAK,KAAK,GAAG,GAAG,aAAa,GAC5B,MAAP,IACA,EAAK,KAAK,GAAG,GAAS,EAE9B,KAIR,EAAK,GAAK,CACN,MAAO,EAAK,KAAK,GAAG,OAGpB,EAAK,KAAK,GAAG,WACb,EAAW,GAEX,EAAK,KAAK,GAAG,OACb,EAAK,GAAG,KAAO,EAAK,KAAK,GAAG,MAGhC,EAAK,KAAK,YAAY,EAAK,KAAK,GAAG,IAIvC,EAAK,KAAO,OAGa,IAAf,IACN,EAAK,SAAW,GAGhB,GAnMI,SAAS,EAAI,GAGzB,IAAI,EAAc,KAElB,EAAG,iBAAiB,aAAa,SAAS,GACtC,IAAI,EAAS,EAAE,OACf,GAAwB,IAApB,EAAO,SAAgB,CACvB,GAAoD,SAAhD,EAAO,WAAW,aAAa,aAK/B,OAFA,EAAE,sBACF,EAAE,kBAHF,EAAS,EAAO,UAMxB,CAEA,GAAyC,SAArC,EAAO,aAAa,aAAyB,CAC7C,IAAI,EAAW,MAAM,UAAU,QAAQ,KAAK,EAAO,WAAW,SAAU,GACxE,EAAc,CACV,QAAS,EACT,EAAG,EACH,EAAG,GAEP,EAAO,MAAM,QAAU,OACvB,EAAE,aAAa,aAAa,EAAO,EAAE,EACzC,CACJ,IAEA,EAAG,iBAAiB,YAAY,SAAS,GAGrC,GAFA,EAAE,iBAEE,GAAe,EAAW,EAAE,SAAiD,QAAtC,EAAE,OAAO,aAAa,cAA0B,EAAY,SAAW,EAAE,OAAQ,CACxH,IAAI,EAAU,EAAE,OAAO,YAAc,EAAI,EAAE,QAAU,EAAE,OAAS,EAAE,OAAO,YACzE,EAAE,OAAO,WAAW,aAAa,EAAY,QAAS,GACtD,EAAY,EAAI,MAAM,UAAU,QAAQ,KAAK,EAAE,OAAO,WAAW,SAAU,EAAY,QAC3F,CACJ,IAEA,EAAG,iBAAiB,aAAa,SAAS,GACtC,EAAE,gBACN,IAEA,EAAG,iBAAiB,WAAW,SAAS,GAGpC,GAFA,EAAE,iBAEE,EAAa,CACb,IAAI,EAAU,EAAY,EAAI,EAAY,EAAI,EAAE,OAAO,WAAW,SAAS,EAAY,GAAK,EAAE,OAAO,WAAW,SAAS,EAAY,GAAG,YACxI,EAAE,OAAO,WAAW,aAAa,EAAY,QAAS,GACtD,EAAY,QAAQ,MAAM,QAAU,GACpC,EAAc,IAClB,CACJ,IAEA,EAAG,iBAAiB,QAAQ,SAAS,GACjC,EAAE,iBAEE,IACI,EAAY,IAAM,EAAY,GACA,mBAAnB,EAAc,QACrB,EAAQ,OAAO,EAAI,EAAY,EAAG,EAAY,EAAG,EAAY,QAAS,EAAE,OAAQ,GAIxF,EAAY,QAAQ,MAAM,QAAU,GACpC,EAAc,KAEtB,IAEA,MAAM,EAAa,SAAS,GACxB,IAAI,GAAU,EAcd,OAZA,SAAS,EAAM,GACP,IAAY,IACZ,GAAU,GAGR,GACF,EAAK,EAAQ,WAErB,CAEA,CAAK,GAEE,CACX,EAEA,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,SAAS,OAAQ,IAC9B,EAAG,SAAS,GAAG,aAAa,cAC9B,EAAG,SAAS,GAAG,aAAa,YAAa,OAKrD,CA2GY,CAAQ,EAAK,GAAG,WAAW,WAAY,CACnC,OAAQ,CAAC,EAAI,EAAW,KAEpB,MAAO,GAAa,EAAK,KAAK,OAAO,EAAW,GAEhD,EAAK,KAAK,OAAO,EAAS,EAAG,GAE7B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,KAAK,OAAQ,IAClC,EAAK,KAAK,YAAY,EAAK,KAAK,GAAG,IAGvC,EAAK,SAAW,EAEhB,EAAS,KAAK,EAAM,EAAK,iBAAkB,iBAAkB,CACzD,SAAU,EACV,UAAW,EACX,QAAS,GACX,IAKd,EAAQ,IACZ,EAEM,EAAS,WAEX,EAAK,OAAO,CAAE,MAAO,YAAc,MAAM,EAC7C,EAEM,EAAO,SAAS,GAClB,GAAyB,OAArB,EAAE,OAAO,QAAkB,CAE3B,IAAI,EAAQ,MAAM,UAAU,QAAQ,KAAK,EAAE,OAAO,WAAW,SAAU,EAAE,QACrE,IAAU,EAAK,WACf,EAAK,SAAW,EAExB,CACJ,EAEM,EAAU,SAAS,EAAG,GACxB,IAAI,EAAQ,KACE,UAAV,EAAE,IACF,EAAK,MAAM,EAAG,GACG,YAAV,EAAE,KAA+B,cAAV,EAAE,KAChC,EAAQ,EAAK,SAAW,EACpB,EAAQ,IACR,EAAQ,IAEK,cAAV,EAAE,KAAiC,eAAV,EAAE,MAClC,EAAQ,EAAK,SAAW,EACpB,EAAQ,EAAK,KAAK,OAAO,IACzB,EAAQ,EAAK,KAAK,OAAO,IAKnB,OAAV,GACA,EAAK,KAAK,GAAO,GAAG,OAE5B,EAoFA,OAlFA,GAAO,KACC,GACA,EAAQ,EAAK,KAAM,GAGvB,EAAK,EAAK,UAAY,EAAE,IAG5B,GAAU,IACW,aAAb,KAlIO,SAAS,GAIpB,IAFA,EAAQ,SAAS,KAEJ,GAAK,EAAQ,EAAK,KAAK,OAAQ,CACxC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,KAAK,SAAS,OAAQ,IAC3C,EAAK,QAAQ,SAAS,GAAG,UAAU,OAAO,YAC1C,EAAK,KAAK,SAAS,GAAG,UAAU,OAAO,YAE3C,EAAK,QAAQ,SAAS,GAAO,UAAU,IAAI,YAC3C,EAAK,KAAK,SAAS,GAAO,UAAU,IAAI,WAC5C,CACJ,CAuHQ,CAAO,EAAK,UAEZ,EAAS,KAAK,EAAM,EAAK,OAAQ,OAAQ,CACrC,SAAU,EACV,SAAU,EAAK,WAGnB,EAAS,KAAK,EAAM,EAAQ,SAAU,CAClC,SAAU,EACV,MAAO,EAAK,WAEpB,IAGJ,EAAK,KAAO,SAAU,GAClB,EAAK,SAAW,CACpB,EAEA,EAAK,OAAS,SAAS,EAAM,EAAU,GAEnC,GAAqB,iBAAX,EACN,QAAQ,MAAM,8BACX,CAQH,IAAY,IANF,EAAS,KAAK,EAAM,EAAK,eAAgB,eAAgB,CAC/D,SAAU,EACV,KAAM,EACN,SAAU,IAIV,OAAO,EAIX,EAAK,GAAK,SAAS,cAAc,OAE7B,EAAK,UACL,EAAK,GAAG,UAAY,EAAK,SAIzB,MAAM,GAEN,EAAW,EAAK,KAAK,OAErB,EAAK,KAAK,KAAK,IAEf,EAAK,KAAK,OAAO,EAAU,EAAG,GAK9B,EAFA,EAEK,EAAK,KAAK,QAAQ,GAElB,EAAK,UAGd,EAAK,KAAK,SAAQ,IACd,EAAK,GAAG,aAAa,YAAa,OAAO,IAG7C,EAAS,KAAK,EAAM,EAAK,SAAU,SAAU,CACzC,SAAU,EACV,KAAM,EACN,SAAU,GAElB,CACJ,EAEA,EAAK,cAAiB,EAAK,YAEpB,GAAU,CAAM;;+FAEgE,iBAAoB,iBAAuB;oHACtB;;4DAExD;eAExD,EAMA,OAJA,SAAS,cAAc,CAAE,KAAM,IAE/B,SAAS,mBAAmB,OAAQ,GAE7B,SAAU,EAAM,GACnB,MAAsB,iBAAX,GACiB,iBAAd,IACN,EAAU,CAAC,GAGf,EAAQ,EAAM,GAEd,SAAS,OAAO,EAAM,EAAM,GAErB,GAEA,EAAK,KAAK,KAEzB,CACH","file":"/npm/@lemonadejs/tabs@5.8.0/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@lemonadejs/tabs@5.8.0/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.Tabs = 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 extract = function(root, self) {\r\n        if (! Array.isArray(self.data)) {\r\n            self.data = [];\r\n        }\r\n\r\n        if (root.tagName) {\r\n            for (let i = 0; i < root.children.length; i++) {\r\n                self.data.push({\r\n                    el: root.children[i],\r\n                })\r\n            }\r\n        } else {\r\n            root.forEach((child) => {\r\n                self.data.push({\r\n                    el: child.element,\r\n                })\r\n            });\r\n        }\r\n    }\r\n\r\n    const sorting = function(el, options) {\r\n        const obj = {};\r\n\r\n        let dragElement = null;\r\n\r\n        el.addEventListener('dragstart', function(e) {\r\n            let target = e.target;\r\n            if (target.nodeType === 3) {\r\n                if (target.parentNode.getAttribute('draggable') === 'true') {\r\n                    target = target.parentNode;\r\n                } else {\r\n                    e.preventDefault();\r\n                    e.stopPropagation();\r\n                    return;\r\n                }\r\n            }\r\n\r\n            if (target.getAttribute('draggable') === 'true') {\r\n                let position = Array.prototype.indexOf.call(target.parentNode.children, target);\r\n                dragElement = {\r\n                    element: target,\r\n                    o: position,\r\n                    d: position\r\n                }\r\n                target.style.opacity = '0.25';\r\n                e.dataTransfer.setDragImage(target,0,0);\r\n            }\r\n        });\r\n\r\n        el.addEventListener('dragover', function(e) {\r\n            e.preventDefault();\r\n\r\n            if (dragElement && getElement(e.target) && e.target.getAttribute('draggable') == 'true' && dragElement.element != e.target) {\r\n                let element = e.target.clientWidth / 2 > e.offsetX ? e.target : e.target.nextSibling;\r\n                e.target.parentNode.insertBefore(dragElement.element, element);\r\n                dragElement.d = Array.prototype.indexOf.call(e.target.parentNode.children, dragElement.element);\r\n            }\r\n        });\r\n\r\n        el.addEventListener('dragleave', function(e) {\r\n            e.preventDefault();\r\n        });\r\n\r\n        el.addEventListener('dragend', function(e) {\r\n            e.preventDefault();\r\n\r\n            if (dragElement) {\r\n                let element = dragElement.o < dragElement.d ? e.target.parentNode.children[dragElement.o] : e.target.parentNode.children[dragElement.o].nextSibling\r\n                e.target.parentNode.insertBefore(dragElement.element, element);\r\n                dragElement.element.style.opacity = '';\r\n                dragElement = null;\r\n            }\r\n        });\r\n\r\n        el.addEventListener('drop', function(e) {\r\n            e.preventDefault();\r\n\r\n            if (dragElement) {\r\n                if (dragElement.o !== dragElement.d) {\r\n                    if (typeof(options.ondrop) == 'function') {\r\n                        options.ondrop(el, dragElement.o, dragElement.d, dragElement.element, e.target, e);\r\n                    }\r\n                }\r\n\r\n                dragElement.element.style.opacity = '';\r\n                dragElement = null;\r\n            }\r\n        });\r\n\r\n        const getElement = function(element) {\r\n            var sorting = false;\r\n\r\n            function path (element) {\r\n                if (element === el) {\r\n                    sorting = true;\r\n                }\r\n\r\n                if (! sorting) {\r\n                    path(element.parentNode);\r\n                }\r\n            }\r\n\r\n            path(element);\r\n\r\n            return sorting;\r\n        }\r\n\r\n        for (let i = 0; i < el.children.length; i++) {\r\n            if (! el.children[i].hasAttribute('draggable')) {\r\n                el.children[i].setAttribute('draggable', 'true');\r\n            }\r\n        }\r\n\r\n        return el;\r\n    }\r\n\r\n    const Tabs = 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        // Add new tab\r\n        let createButton;\r\n\r\n        // Get the references from the root web component\r\n        let root;\r\n        let template = '';\r\n        if (this.tagName) {\r\n            root = this;\r\n        } else {\r\n            // References from LemonadeJS\r\n            if (typeof(children) === 'string') {\r\n                // Version 4\r\n                template = children;\r\n            } else if (children && children.length) {\r\n                // Version 5\r\n                root = children;\r\n            }\r\n        }\r\n\r\n        if (root) {\r\n            extract(root, self);\r\n        }\r\n\r\n        // Process the data\r\n        if (self.data) {\r\n            for (let i = 0; i < self.data.length; i++) {\r\n                if (! self.data[i].el) {\r\n                    // Create element\r\n                    self.data[i].el = document.createElement('div');\r\n                    // Create from content\r\n                    if (self.data[i].content) {\r\n                        self.data[i].el.innerHTML = self.data[i].content;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        let props = ['title', 'selected', 'data-icon'];\r\n\r\n        const select = function(index) {\r\n            // Make sure the index is a number\r\n            index = parseInt(index);\r\n            // Do not select tabs that does not exist\r\n            if (index >= 0 && index < self.data.length) {\r\n                for (let i = 0; i < self.root.children.length; i++) {\r\n                    self.headers.children[i].classList.remove('selected');\r\n                    self.root.children[i].classList.remove('selected');\r\n                }\r\n                self.headers.children[index].classList.add('selected');\r\n                self.root.children[index].classList.add('selected');\r\n            }\r\n        }\r\n\r\n        const init = function(selected) {\r\n            let tabs = [];\r\n\r\n            for (let i = 0; i < self.data.length; i++) {\r\n                // Extract meta information from the DOM\r\n                if (props) {\r\n                    props.forEach((prop) => {\r\n                        let short = prop.replace('data-', '');\r\n                        if (! self.data[i][short]) {\r\n                            let ret = self.data[i].el.getAttribute(prop);\r\n                            if (ret != null) {\r\n                                self.data[i][short] = ret;\r\n                            }\r\n                        }\r\n                    });\r\n                }\r\n                // Create tabs object\r\n                tabs[i] = {\r\n                    title: self.data[i].title,\r\n                }\r\n                // Which one is selected by default\r\n                if (self.data[i].selected) {\r\n                    selected = i;\r\n                }\r\n                if (self.data[i].icon) {\r\n                    tabs[i].icon = self.data[i].icon;\r\n                }\r\n\r\n                self.root.appendChild(self.data[i].el);\r\n            }\r\n\r\n            // Create headers\r\n            self.tabs = tabs;\r\n\r\n            // Default selected\r\n            if (typeof(selected) !== 'undefined') {\r\n                self.selected = selected;\r\n            }\r\n\r\n            if (props) {\r\n                // Add create new tab button\r\n                if (createButton) {\r\n                    self.headers.appendChild(createButton);\r\n                }\r\n                // Add sorting\r\n                sorting(self.el.firstChild.firstChild, {\r\n                    ondrop: (el, fromIndex, toIndex) => {\r\n                        // Remove the item from its original position\r\n                        const [movedItem] = self.data.splice(fromIndex, 1);\r\n                        // Insert it into the new position\r\n                        self.data.splice(toIndex, 0, movedItem);\r\n                        // Make sure correct order\r\n                        for (let i = 0; i < self.data.length; i++) {\r\n                            self.root.appendChild(self.data[i].el);\r\n                        }\r\n                        // Select new position\r\n                        self.selected = toIndex;\r\n                        // Dispatch event\r\n                        Dispatch.call(self, self.onchangeposition, 'changeposition', {\r\n                            instance: self,\r\n                            fromIndex: fromIndex,\r\n                            toIndex: toIndex,\r\n                        });\r\n                    }\r\n                })\r\n            }\r\n\r\n            props = null;\r\n        }\r\n\r\n        const create = function() {\r\n            // Create a new item\r\n            self.create({ title: 'Untitled' }, null, true);\r\n        }\r\n\r\n        const open = function(e) {\r\n            if (e.target.tagName === 'LI') {\r\n                // Avoid select something already selected\r\n                let index = Array.prototype.indexOf.call(e.target.parentNode.children, e.target);\r\n                if (index !== self.selected) {\r\n                    self.selected = index;\r\n                }\r\n            }\r\n        }\r\n\r\n        const keydown = function(e, s) {\r\n            let index = null;\r\n            if (e.key === 'Enter') {\r\n                self.click(e, s);\r\n            } else if (e.key === 'ArrowUp' || e.key === 'ArrowLeft') {\r\n                index = self.selected - 1;\r\n                if (index < 0) {\r\n                    index = 0;\r\n                }\r\n            } else if (e.key === 'ArrowDown' || e.key === 'ArrowRight') {\r\n                index = self.selected + 1;\r\n                if (index > self.tabs.length-1) {\r\n                    index = self.tabs.length-1;\r\n                }\r\n            }\r\n\r\n            // Make selection\r\n            if (index !== null) {\r\n                self.tabs[index].el.focus();\r\n            }\r\n        }\r\n\r\n        onload(() => {\r\n            if (template) {\r\n                extract(self.root, self);\r\n            }\r\n\r\n            init(self.selected || 0);\r\n        })\r\n\r\n        onchange((property) => {\r\n            if (property === 'selected') {\r\n                select(self.selected);\r\n\r\n                Dispatch.call(self, self.onopen, 'open', {\r\n                    instance: self,\r\n                    selected: self.selected,\r\n                });\r\n\r\n                Dispatch.call(self, change, 'change', {\r\n                    instance: self,\r\n                    value: self.selected,\r\n                });\r\n            }\r\n        })\r\n\r\n        self.open = function (index) {\r\n            self.selected = index;\r\n        }\r\n\r\n        self.create = function(item, position, select) {\r\n            // Create element\r\n            if (typeof(item) !== 'object') {\r\n                console.error('Item must be an object');\r\n            } else {\r\n\r\n                let ret = Dispatch.call(self, self.onbeforecreate, 'beforecreate', {\r\n                    instance: self,\r\n                    item: item,\r\n                    position: position,\r\n                });\r\n\r\n                if (ret === false) {\r\n                    return false;\r\n                }\r\n\r\n                // Create DOM\r\n                item.el = document.createElement('div');\r\n                // Create from content\r\n                if (item.content) {\r\n                    item.el.innerHTML = item.content;\r\n                }\r\n\r\n                // Add the new item in the end\r\n                if (typeof(position) === 'undefined' || position === null) {\r\n                    // Mew item\r\n                    position = self.data.length;\r\n                    // Add in the end\r\n                    self.data.push(item);\r\n                } else {\r\n                    self.data.splice(position, 0, item);\r\n                }\r\n                // New position\r\n                if (select) {\r\n                    // Refresh\r\n                    init(self.data.indexOf(item));\r\n                } else {\r\n                    init(self.selected);\r\n                }\r\n\r\n                self.tabs.forEach(item => {\r\n                    item.el.setAttribute('draggable', 'true');\r\n                })\r\n\r\n                Dispatch.call(self, self.oncreate, 'create', {\r\n                    instance: self,\r\n                    item: item,\r\n                    position: position,\r\n                });\r\n            }\r\n        }\r\n\r\n        self.allowCreate = !! self.allowCreate;\r\n\r\n        return render => render`<div class=\"lm-tabs\" data-position=\"{{self.position}}\" data-round=\"{{self.round}}\">\r\n            <div role=\"tabs\" class=\"lm-tabs-headers\">\r\n                <ul :ref=\"self.headers\" :loop=\"self.tabs\" :selected=\"self.selected\" onclick=\"${open}\" onkeydown=\"${keydown}\" onfocusin=\"${open}\"><li class=\"lm-tab\" tabindex=\"0\" role=\"tab\" data-icon=\"{{self.icon}}\">{{self.title}}</li></ul>\r\n                <div data-visible=\"{{self.allowCreate}}\" class=\"lm-tabs-insert-button\" role=\"insert-tab\" onclick=\"${create}\">add</div>\r\n            </div>\r\n            <div :ref=\"self.root\" class=\"lm-tabs-content\">${template}</div>\r\n        </div>`\r\n    }\r\n\r\n    lemonade.setComponents({ Tabs: Tabs });\r\n\r\n    lemonade.createWebComponent('tabs', Tabs);\r\n\r\n    return function (root, options) {\r\n        if (typeof (root) === 'object') {\r\n            if (typeof(options) !== 'object') {\r\n                options = {};\r\n            }\r\n            // Extract DOM references\r\n            extract(root, options);\r\n            // Create the modal\r\n            lemonade.render(Tabs, root, options);\r\n            // Return self\r\n            return options;\r\n        } else {\r\n            return Tabs.call(this);\r\n        }\r\n    };\r\n})));"]}