{"version":3,"sources":["jsdelivr-header.js","/npm/@github/hotkey@3.1.4/dist/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,CAAK,CACP,YAAY,EAAM,CACd,KAAK,SAAW,CAAA,EAChB,KAAK,OAAS,CAClB,CACA,OAAO,EAAO,CACV,MAAM,EAAQ,KAAK,SAAS,QAAQ,CAAK,EACzC,OAAI,IAAU,GACH,IACX,KAAK,SAAW,KAAK,SAAS,MAAM,EAAG,CAAK,EAAE,OAAO,KAAK,SAAS,MAAM,EAAQ,CAAC,CAAC,EAC/E,KAAK,SAAS,SAAW,GACzB,KAAK,OAAO,OAAO,IAAI,EAEpB,GACX,CACA,IAAI,EAAO,CACP,YAAK,SAAS,KAAK,CAAK,EACjB,IACX,CACJ,CACA,MAAM,CAAU,CACZ,YAAY,EAAM,CACd,KAAK,OAAS,KACd,KAAK,SAAW,CAAA,EAChB,KAAK,OAAS,GAAQ,IAC1B,CACA,IAAI,EAAM,CACN,OAAO,KAAK,SAAS,CAAI,CAC7B,CACA,OAAO,EAAO,CACV,IAAI,EAAc,KAClB,QAAS,EAAI,EAAG,EAAI,EAAM,OAAQ,GAAK,EAAG,CACtC,MAAM,EAAO,EAAM,CAAC,EACpB,IAAI,EAAW,EAAY,IAAI,CAAI,EACnC,GAAI,IAAM,EAAM,OAAS,EACrB,OAAI,aAAoB,IACpB,EAAY,OAAO,CAAQ,EAC3B,EAAW,MAEV,IACD,EAAW,IAAI,EAAK,CAAW,EAC/B,EAAY,SAAS,CAAI,EAAI,GAE1B,EAGH,aAAoB,IACpB,EAAW,MACV,IACD,EAAW,IAAI,EAAU,CAAW,EACpC,EAAY,SAAS,CAAI,EAAI,GAGrC,EAAc,CAClB,CACA,OAAO,CACX,CACA,OAAO,EAAM,CACT,UAAW,KAAQ,KAAK,SAEpB,GADoB,KAAK,SAAS,CAAI,IAClB,EAAM,CACtB,MAAM,EAAU,OAAO,KAAK,SAAS,CAAI,EACzC,OAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,SAAW,GAAK,KAAK,QAChD,KAAK,OAAO,OAAO,IAAI,EAEpB,CACX,CAEJ,MAAO,EACX,CACJ,CAEA,MAAM,EAAuB,CACxB,OAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,SAAM,IACN,SAAM,IACN,SAAM,IACN,SAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,SAAM,IACN,OAAM,KACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,SAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,SAAM,IACN,SAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,SAAM,IACN,SAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,OAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,SAAM,IACN,SAAM,IACN,OAAM,IACN,SAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,IACN,OAAM,IACN,SAAM,IACN,OAAM,GACX,EAEM,EAA0B,CAC3B,IAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACN,KAAO,IACP,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,IACN,EAAM,GACX,EAEM,EAAoB,CACtB,IAAK,QACL,IAAK,MACT,EACA,SAAS,EAAoB,EAAO,EAAW,UAAU,SAAU,CAC/D,IAAI,EAAI,EAAI,EACZ,KAAM,CAAE,QAAA,EAAS,OAAA,EAAQ,QAAA,EAAS,SAAA,EAAU,IAAA,CAAG,EAAK,EAC9C,EAAe,CAAA,EACf,EAAY,CAAC,EAAS,EAAQ,EAAS,CAAQ,EACrD,SAAW,CAAC,EAAG,CAAG,IAAK,EAAU,QAAO,EAChC,GACA,EAAa,KAAK,EAAiB,CAAC,CAAC,EAE7C,GAAI,CAAC,EAAiB,SAAS,CAAG,EAAG,CACjC,MAAM,EAAmB,EAAa,SAAS,KAAK,GAAK,EAAmB,KAAK,CAAQ,IAAK,EAAK,EAAqB,CAAG,KAAO,MAAQ,IAAO,OAAS,EAAW,EAC/J,EAAqB,EAAa,SAAS,OAAO,GAAK,EAAmB,KAAK,CAAQ,IACtF,EAAK,EAAwB,CAAgB,KAAO,MAAQ,IAAO,OAAS,EAC7E,EACA,GAAgB,EAAK,EAAkB,CAAkB,KAAO,MAAQ,IAAO,OAAS,EAAK,EACnG,EAAa,KAAK,CAAY,CAClC,CACA,OAAO,EAAa,KAAK,GAAG,CAChC,CACA,MAAM,EAAmB,CAAC,UAAW,MAAO,OAAQ,OAAO,EAC3D,SAAS,EAAgB,EAAQ,EAAU,CACvC,IAAI,EACJ,OAAA,EAAS,EAAY,EAAQ,CAAQ,EACrC,EAAS,EAAc,CAAM,EACtB,CACX,CACA,MAAM,EAAqB,wBAC3B,SAAS,EAAY,EAAQ,EAAU,CACnC,IAAI,EACJ,MAAM,EAAgB,OAAO,OAAW,IAAc,OAAY,OAC5D,GAAgB,EAAK,GAAoH,GAAc,UAAU,YAAc,MAAQ,IAAO,OAAS,EAAK,GAC5M,EAAgB,EAAmB,KAAK,CAAY,EAAI,OAAS,UACvE,OAAO,EAAO,QAAQ,MAAO,CAAa,CAC9C,CACA,MAAM,EAAmB,CACrB,QAAS,EACT,IAAK,EACL,KAAM,EACN,MAAO,CACX,EACA,SAAS,EAAc,EAAQ,CAC3B,OAAO,EACF,MAAM,GAAG,EACT,KAAK,CAAC,EAAG,IAAM,CAAE,IAAI,EAAI,EAAI,QAAS,EAAK,EAAiB,CAAC,KAAO,MAAQ,IAAO,OAAS,EAAK,OAAc,EAAK,EAAiB,CAAC,KAAO,MAAQ,IAAO,OAAS,EAAK,IAAW,CAAC,EACtL,KAAK,GAAG,CACjB,CAEA,MAAM,EAAqB,IAC3B,MAAM,CAAgB,CAClB,YAAY,CAAE,QAAA,CAAO,EAAK,CAAA,EAAI,CAC1B,KAAK,MAAQ,CAAA,EACb,KAAK,MAAQ,KACb,KAAK,QAAU,CACnB,CACA,IAAI,MAAO,CACP,OAAO,KAAK,KAChB,CACA,IAAI,UAAW,CACX,OAAO,KAAK,MAAM,KAAK,CAAkB,CAC7C,CACA,iBAAiB,EAAO,CACpB,KAAK,MAAQ,CAAC,GAAG,KAAK,MAAO,EAAoB,CAAK,CAAC,EACvD,KAAK,WAAU,CACnB,CACA,OAAQ,CACJ,IAAI,EACJ,KAAK,UAAS,EACd,KAAK,MAAQ,CAAA,GACZ,EAAK,KAAK,WAAa,MAAQ,IAAO,QAAkB,EAAG,KAAK,IAAI,CACzE,CACA,WAAY,CACJ,KAAK,OAAS,MACd,OAAO,aAAa,KAAK,KAAK,EAElC,KAAK,MAAQ,IACjB,CACA,YAAa,CACT,KAAK,UAAS,EACd,KAAK,MAAQ,OAAO,WAAW,IAAM,KAAK,MAAK,EAAI,EAAgB,aAAa,CACpF,CACJ,CACA,EAAgB,cAAgB,KAChC,SAAS,EAAkB,EAAU,CACjC,OAAO,EACF,MAAM,CAAkB,EACxB,IAAI,GAAK,EAAgB,CAAC,CAAC,EAC3B,KAAK,CAAkB,CAChC,CAEA,SAAS,EAAY,EAAS,CAC1B,GAAI,EAAE,aAAmB,aACrB,MAAO,GAEX,MAAM,EAAO,EAAQ,SAAS,YAAW,EACnC,GAAQ,EAAQ,aAAa,MAAM,GAAK,IAAI,YAAW,EAC7D,OAAQ,IAAS,UACb,IAAS,YACR,IAAS,SACN,IAAS,UACT,IAAS,SACT,IAAS,YACT,IAAS,SACT,IAAS,QACb,EAAQ,iBAChB,CACA,SAAS,EAAqB,EAAI,EAAM,CACpC,MAAM,EAAgB,IAAI,YAAY,cAAe,CAAE,WAAY,GAAM,OAAQ,CAAE,KAAA,CAAI,CAAE,CAAE,EACxE,EAAG,cAAc,CAAa,IAG7C,EAAY,CAAE,EACd,EAAG,MAAK,EAGR,EAAG,MAAK,EAEhB,CACA,SAAS,EAAoB,EAAQ,CACjC,MAAM,EAAS,CAAA,EACf,IAAI,EAAM,CAAC,EAAE,EACT,EAAmB,GACvB,QAAS,EAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACpC,GAAI,GAAoB,EAAO,CAAC,IAAM,IAAK,CACvC,EAAO,KAAK,CAAG,EACf,EAAM,CAAC,EAAE,EACT,EAAmB,GACnB,QACJ,CACA,GAAI,EAAO,CAAC,IAAM,EAAoB,CAClC,EAAI,KAAK,EAAE,EACX,EAAmB,GACnB,QACJ,MACS,EAAO,CAAC,IAAM,IACnB,EAAmB,GAGnB,EAAmB,GAEvB,EAAI,EAAI,OAAS,CAAC,GAAK,EAAO,CAAC,CACnC,CACA,OAAA,EAAO,KAAK,CAAG,EACR,EAAO,IAAI,GAAK,EAAE,IAAI,GAAK,EAAgB,CAAC,CAAC,EAAE,OAAO,GAAK,IAAM,EAAE,CAAC,EAAE,OAAO,GAAK,EAAE,OAAS,CAAC,CACzG,CAEA,MAAM,EAAkB,IAAI,EACtB,EAAiB,IAAI,QAC3B,IAAI,EAAsB,EAC1B,MAAM,EAAkB,IAAI,EAAgB,CACxC,SAAU,CACN,EAAsB,CAC1B,CACJ,CAAC,EACD,SAAS,EAAe,EAAO,CAG3B,GAFI,EAAM,kBAEN,EAAE,EAAM,kBAAkB,MAC1B,OACJ,GAAI,EAAY,EAAM,MAAM,EAAG,CAC3B,MAAM,EAAS,EAAM,OAGrB,GAFI,CAAC,EAAO,IAER,CAAC,EAAO,cAAc,cAAc,uBAAuB,EAAO,EAAE,IAAI,EACxE,MACR,CACA,MAAM,EAAkB,EAAoB,IAAI,EAAoB,CAAK,CAAC,EAC1E,GAAI,CAAC,EAAiB,CAClB,EAAgB,MAAK,EACrB,MACJ,CAGA,GAFA,EAAgB,iBAAiB,CAAK,EACtC,EAAsB,EAClB,aAA2B,EAAM,CACjC,MAAM,EAAS,EAAM,OACrB,IAAI,EAAa,GACb,EACJ,MAAM,EAAY,EAAY,CAAM,EACpC,QAAS,EAAI,EAAgB,SAAS,OAAS,EAAG,GAAK,EAAG,GAAK,EAAG,CAC9D,EAAgB,EAAgB,SAAS,CAAC,EAC1C,MAAM,EAAQ,EAAc,aAAa,mBAAmB,EAC5D,GAAK,CAAC,GAAa,CAAC,GAAW,GAAa,EAAO,KAAO,EAAQ,CAC9D,EAAa,GACb,KACJ,CACJ,CACI,GAAiB,IACjB,EAAqB,EAAe,EAAgB,IAAI,EACxD,EAAM,eAAc,GAExB,EAAgB,MAAK,CACzB,CACJ,CACA,SAAS,EAAQ,EAAS,EAAQ,CAC1B,OAAO,KAAK,EAAgB,QAAQ,EAAE,SAAW,GACjD,SAAS,iBAAiB,UAAW,CAAc,EAGvD,MAAM,EADU,EAAoB,GAAU,EAAQ,aAAa,aAAa,GAAK,EAAE,EAChE,IAAI,GAAK,EAAgB,OAAO,CAAC,EAAE,IAAI,CAAO,CAAC,EACtE,EAAe,IAAI,EAAS,CAAM,CACtC,CACA,SAAS,EAAU,EAAS,CACxB,MAAM,EAAS,EAAe,IAAI,CAAO,EACzC,GAAI,GAAU,EAAO,OACjB,UAAW,KAAQ,EACf,GAAQ,EAAK,OAAO,CAAO,EAG/B,OAAO,KAAK,EAAgB,QAAQ,EAAE,SAAW,GACjD,SAAS,oBAAoB,UAAW,CAAc,CAE9D","file":"/npm/@github/hotkey@3.1.4/dist/index.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.\n * Original file: /npm/@github/hotkey@3.1.4/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","class Leaf {\n    constructor(trie) {\n        this.children = [];\n        this.parent = trie;\n    }\n    delete(value) {\n        const index = this.children.indexOf(value);\n        if (index === -1)\n            return false;\n        this.children = this.children.slice(0, index).concat(this.children.slice(index + 1));\n        if (this.children.length === 0) {\n            this.parent.delete(this);\n        }\n        return true;\n    }\n    add(value) {\n        this.children.push(value);\n        return this;\n    }\n}\nclass RadixTrie {\n    constructor(trie) {\n        this.parent = null;\n        this.children = {};\n        this.parent = trie || null;\n    }\n    get(edge) {\n        return this.children[edge];\n    }\n    insert(edges) {\n        let currentNode = this;\n        for (let i = 0; i < edges.length; i += 1) {\n            const edge = edges[i];\n            let nextNode = currentNode.get(edge);\n            if (i === edges.length - 1) {\n                if (nextNode instanceof RadixTrie) {\n                    currentNode.delete(nextNode);\n                    nextNode = null;\n                }\n                if (!nextNode) {\n                    nextNode = new Leaf(currentNode);\n                    currentNode.children[edge] = nextNode;\n                }\n                return nextNode;\n            }\n            else {\n                if (nextNode instanceof Leaf)\n                    nextNode = null;\n                if (!nextNode) {\n                    nextNode = new RadixTrie(currentNode);\n                    currentNode.children[edge] = nextNode;\n                }\n            }\n            currentNode = nextNode;\n        }\n        return currentNode;\n    }\n    delete(node) {\n        for (const edge in this.children) {\n            const currentNode = this.children[edge];\n            if (currentNode === node) {\n                const success = delete this.children[edge];\n                if (Object.keys(this.children).length === 0 && this.parent) {\n                    this.parent.delete(this);\n                }\n                return success;\n            }\n        }\n        return false;\n    }\n}\n\nconst macosSymbolLayerKeys = {\n    ['¡']: '1',\n    ['™']: '2',\n    ['£']: '3',\n    ['¢']: '4',\n    ['∞']: '5',\n    ['§']: '6',\n    ['¶']: '7',\n    ['•']: '8',\n    ['ª']: '9',\n    ['º']: '0',\n    ['–']: '-',\n    ['≠']: '=',\n    ['⁄']: '!',\n    ['€']: '@',\n    ['‹']: '#',\n    ['›']: '$',\n    ['ﬁ']: '%',\n    ['ﬂ']: '^',\n    ['‡']: '&',\n    ['°']: '*',\n    ['·']: '(',\n    ['‚']: ')',\n    ['—']: '_',\n    ['±']: '+',\n    ['œ']: 'q',\n    ['∑']: 'w',\n    ['®']: 'r',\n    ['†']: 't',\n    ['¥']: 'y',\n    ['ø']: 'o',\n    ['π']: 'p',\n    ['“']: '[',\n    ['‘']: ']',\n    ['«']: '\\\\',\n    ['Œ']: 'Q',\n    ['„']: 'W',\n    ['´']: 'E',\n    ['‰']: 'R',\n    ['ˇ']: 'T',\n    ['Á']: 'Y',\n    ['¨']: 'U',\n    ['ˆ']: 'I',\n    ['Ø']: 'O',\n    ['∏']: 'P',\n    ['”']: '{',\n    ['’']: '}',\n    ['»']: '|',\n    ['å']: 'a',\n    ['ß']: 's',\n    ['∂']: 'd',\n    ['ƒ']: 'f',\n    ['©']: 'g',\n    ['˙']: 'h',\n    ['∆']: 'j',\n    ['˚']: 'k',\n    ['¬']: 'l',\n    ['…']: ';',\n    ['æ']: \"'\",\n    ['Å']: 'A',\n    ['Í']: 'S',\n    ['Î']: 'D',\n    ['Ï']: 'F',\n    ['˝']: 'G',\n    ['Ó']: 'H',\n    ['Ô']: 'J',\n    ['']: 'K',\n    ['Ò']: 'L',\n    ['Ú']: ':',\n    ['Æ']: '\"',\n    ['Ω']: 'z',\n    ['≈']: 'x',\n    ['ç']: 'c',\n    ['√']: 'v',\n    ['∫']: 'b',\n    ['µ']: 'm',\n    ['≤']: ',',\n    ['≥']: '.',\n    ['÷']: '/',\n    ['¸']: 'Z',\n    ['˛']: 'X',\n    ['Ç']: 'C',\n    ['◊']: 'V',\n    ['ı']: 'B',\n    ['˜']: 'N',\n    ['Â']: 'M',\n    ['¯']: '<',\n    ['˘']: '>',\n    ['¿']: '?'\n};\n\nconst macosUppercaseLayerKeys = {\n    ['`']: '~',\n    ['1']: '!',\n    ['2']: '@',\n    ['3']: '#',\n    ['4']: '$',\n    ['5']: '%',\n    ['6']: '^',\n    ['7']: '&',\n    ['8']: '*',\n    ['9']: '(',\n    ['0']: ')',\n    ['-']: '_',\n    ['=']: '+',\n    ['[']: '{',\n    [']']: '}',\n    ['\\\\']: '|',\n    [';']: ':',\n    [\"'\"]: '\"',\n    [',']: '<',\n    ['.']: '>',\n    ['/']: '?',\n    ['q']: 'Q',\n    ['w']: 'W',\n    ['e']: 'E',\n    ['r']: 'R',\n    ['t']: 'T',\n    ['y']: 'Y',\n    ['u']: 'U',\n    ['i']: 'I',\n    ['o']: 'O',\n    ['p']: 'P',\n    ['a']: 'A',\n    ['s']: 'S',\n    ['d']: 'D',\n    ['f']: 'F',\n    ['g']: 'G',\n    ['h']: 'H',\n    ['j']: 'J',\n    ['k']: 'K',\n    ['l']: 'L',\n    ['z']: 'Z',\n    ['x']: 'X',\n    ['c']: 'C',\n    ['v']: 'V',\n    ['b']: 'B',\n    ['n']: 'N',\n    ['m']: 'M'\n};\n\nconst syntheticKeyNames = {\n    ' ': 'Space',\n    '+': 'Plus'\n};\nfunction eventToHotkeyString(event, platform = navigator.platform) {\n    var _a, _b, _c;\n    const { ctrlKey, altKey, metaKey, shiftKey, key } = event;\n    const hotkeyString = [];\n    const modifiers = [ctrlKey, altKey, metaKey, shiftKey];\n    for (const [i, mod] of modifiers.entries()) {\n        if (mod)\n            hotkeyString.push(modifierKeyNames[i]);\n    }\n    if (!modifierKeyNames.includes(key)) {\n        const altNormalizedKey = hotkeyString.includes('Alt') && matchApplePlatform.test(platform) ? (_a = macosSymbolLayerKeys[key]) !== null && _a !== void 0 ? _a : key : key;\n        const shiftNormalizedKey = hotkeyString.includes('Shift') && matchApplePlatform.test(platform)\n            ? (_b = macosUppercaseLayerKeys[altNormalizedKey]) !== null && _b !== void 0 ? _b : altNormalizedKey\n            : altNormalizedKey;\n        const syntheticKey = (_c = syntheticKeyNames[shiftNormalizedKey]) !== null && _c !== void 0 ? _c : shiftNormalizedKey;\n        hotkeyString.push(syntheticKey);\n    }\n    return hotkeyString.join('+');\n}\nconst modifierKeyNames = ['Control', 'Alt', 'Meta', 'Shift'];\nfunction normalizeHotkey(hotkey, platform) {\n    let result;\n    result = localizeMod(hotkey, platform);\n    result = sortModifiers(result);\n    return result;\n}\nconst matchApplePlatform = /Mac|iPod|iPhone|iPad/i;\nfunction localizeMod(hotkey, platform) {\n    var _a;\n    const ssrSafeWindow = typeof window === 'undefined' ? undefined : window;\n    const safePlatform = (_a = platform !== null && platform !== void 0 ? platform : ssrSafeWindow === null || ssrSafeWindow === void 0 ? void 0 : ssrSafeWindow.navigator.platform) !== null && _a !== void 0 ? _a : '';\n    const localModifier = matchApplePlatform.test(safePlatform) ? 'Meta' : 'Control';\n    return hotkey.replace('Mod', localModifier);\n}\nconst orderedModifiers = {\n    Control: 0,\n    Alt: 1,\n    Meta: 2,\n    Shift: 3\n};\nfunction sortModifiers(hotkey) {\n    return hotkey\n        .split('+')\n        .sort((a, b) => { var _a, _b; return ((_a = orderedModifiers[a]) !== null && _a !== void 0 ? _a : Infinity) - ((_b = orderedModifiers[b]) !== null && _b !== void 0 ? _b : Infinity); })\n        .join('+');\n}\n\nconst SEQUENCE_DELIMITER = ' ';\nclass SequenceTracker {\n    constructor({ onReset } = {}) {\n        this._path = [];\n        this.timer = null;\n        this.onReset = onReset;\n    }\n    get path() {\n        return this._path;\n    }\n    get sequence() {\n        return this._path.join(SEQUENCE_DELIMITER);\n    }\n    registerKeypress(event) {\n        this._path = [...this._path, eventToHotkeyString(event)];\n        this.startTimer();\n    }\n    reset() {\n        var _a;\n        this.killTimer();\n        this._path = [];\n        (_a = this.onReset) === null || _a === void 0 ? void 0 : _a.call(this);\n    }\n    killTimer() {\n        if (this.timer != null) {\n            window.clearTimeout(this.timer);\n        }\n        this.timer = null;\n    }\n    startTimer() {\n        this.killTimer();\n        this.timer = window.setTimeout(() => this.reset(), SequenceTracker.CHORD_TIMEOUT);\n    }\n}\nSequenceTracker.CHORD_TIMEOUT = 1500;\nfunction normalizeSequence(sequence) {\n    return sequence\n        .split(SEQUENCE_DELIMITER)\n        .map(h => normalizeHotkey(h))\n        .join(SEQUENCE_DELIMITER);\n}\n\nfunction isFormField(element) {\n    if (!(element instanceof HTMLElement)) {\n        return false;\n    }\n    const name = element.nodeName.toLowerCase();\n    const type = (element.getAttribute('type') || '').toLowerCase();\n    return (name === 'select' ||\n        name === 'textarea' ||\n        (name === 'input' &&\n            type !== 'submit' &&\n            type !== 'reset' &&\n            type !== 'checkbox' &&\n            type !== 'radio' &&\n            type !== 'file') ||\n        element.isContentEditable);\n}\nfunction fireDeterminedAction(el, path) {\n    const delegateEvent = new CustomEvent('hotkey-fire', { cancelable: true, detail: { path } });\n    const cancelled = !el.dispatchEvent(delegateEvent);\n    if (cancelled)\n        return;\n    if (isFormField(el)) {\n        el.focus();\n    }\n    else {\n        el.click();\n    }\n}\nfunction expandHotkeyToEdges(hotkey) {\n    const output = [];\n    let acc = [''];\n    let commaIsSeparator = false;\n    for (let i = 0; i < hotkey.length; i++) {\n        if (commaIsSeparator && hotkey[i] === ',') {\n            output.push(acc);\n            acc = [''];\n            commaIsSeparator = false;\n            continue;\n        }\n        if (hotkey[i] === SEQUENCE_DELIMITER) {\n            acc.push('');\n            commaIsSeparator = false;\n            continue;\n        }\n        else if (hotkey[i] === '+') {\n            commaIsSeparator = false;\n        }\n        else {\n            commaIsSeparator = true;\n        }\n        acc[acc.length - 1] += hotkey[i];\n    }\n    output.push(acc);\n    return output.map(h => h.map(k => normalizeHotkey(k)).filter(k => k !== '')).filter(h => h.length > 0);\n}\n\nconst hotkeyRadixTrie = new RadixTrie();\nconst elementsLeaves = new WeakMap();\nlet currentTriePosition = hotkeyRadixTrie;\nconst sequenceTracker = new SequenceTracker({\n    onReset() {\n        currentTriePosition = hotkeyRadixTrie;\n    }\n});\nfunction keyDownHandler(event) {\n    if (event.defaultPrevented)\n        return;\n    if (!(event.target instanceof Node))\n        return;\n    if (isFormField(event.target)) {\n        const target = event.target;\n        if (!target.id)\n            return;\n        if (!target.ownerDocument.querySelector(`[data-hotkey-scope=\"${target.id}\"]`))\n            return;\n    }\n    const newTriePosition = currentTriePosition.get(eventToHotkeyString(event));\n    if (!newTriePosition) {\n        sequenceTracker.reset();\n        return;\n    }\n    sequenceTracker.registerKeypress(event);\n    currentTriePosition = newTriePosition;\n    if (newTriePosition instanceof Leaf) {\n        const target = event.target;\n        let shouldFire = false;\n        let elementToFire;\n        const formField = isFormField(target);\n        for (let i = newTriePosition.children.length - 1; i >= 0; i -= 1) {\n            elementToFire = newTriePosition.children[i];\n            const scope = elementToFire.getAttribute('data-hotkey-scope');\n            if ((!formField && !scope) || (formField && target.id === scope)) {\n                shouldFire = true;\n                break;\n            }\n        }\n        if (elementToFire && shouldFire) {\n            fireDeterminedAction(elementToFire, sequenceTracker.path);\n            event.preventDefault();\n        }\n        sequenceTracker.reset();\n    }\n}\nfunction install(element, hotkey) {\n    if (Object.keys(hotkeyRadixTrie.children).length === 0) {\n        document.addEventListener('keydown', keyDownHandler);\n    }\n    const hotkeys = expandHotkeyToEdges(hotkey || element.getAttribute('data-hotkey') || '');\n    const leaves = hotkeys.map(h => hotkeyRadixTrie.insert(h).add(element));\n    elementsLeaves.set(element, leaves);\n}\nfunction uninstall(element) {\n    const leaves = elementsLeaves.get(element);\n    if (leaves && leaves.length) {\n        for (const leaf of leaves) {\n            leaf && leaf.delete(element);\n        }\n    }\n    if (Object.keys(hotkeyRadixTrie.children).length === 0) {\n        document.removeEventListener('keydown', keyDownHandler);\n    }\n}\n\nexport { Leaf, RadixTrie, SequenceTracker, eventToHotkeyString, install, normalizeHotkey, normalizeSequence, uninstall };\n"]}