{"version":3,"file":"Focus.mjs","sourceRoot":"","sources":["../../../src/meta/Focus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAOvC,MAAM,cAAc,GAAG;IACtB,MAAM,EAAE,KAAK;IACb,aAAa,EAAE,KAAK;CACpB,CAAC;AAEF,MAAM,YAAa,SAAQ,IAAI;IAA/B;;QA0BS,mBAAc,GAAG,GAAG,EAAE;YAC7B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;YACpD,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC,CAAC;IAYH,CAAC;IAtCO,GAAG,CAAC,GAAoB;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE/B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACX,MAAM,mBAAM,cAAc,EAAG;QAC9B,CAAC;QAED,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;YACpD,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;QAED,MAAM,CAAC;YACN,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC,cAAc;YACpC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;SAC1E,CAAC;IACH,CAAC;IAEM,GAAG,CAAC,GAAoB;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAK,IAAoB,CAAC,KAAK,EAAE,CAAC;IACvC,CAAC;IAOO,eAAe;QACtB,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAClE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAEO,eAAe;QACtB,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACpE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACtE,CAAC;CACD;AAED,eAAe,KAAK,CAAC","sourcesContent":["import { Base } from './Base';\nimport { createHandle } from '@dojo/core/lang';\nimport global from '@dojo/shim/global';\n\nexport interface FocusResults {\n\tactive: boolean;\n\tcontainsFocus: boolean;\n}\n\nconst defaultResults = {\n\tactive: false,\n\tcontainsFocus: false\n};\n\nexport class Focus extends Base {\n\tprivate _activeElement: Element | undefined;\n\n\tpublic get(key: string | number): FocusResults {\n\t\tconst node = this.getNode(key);\n\n\t\tif (!node) {\n\t\t\treturn { ...defaultResults };\n\t\t}\n\n\t\tif (!this._activeElement) {\n\t\t\tthis._activeElement = global.document.activeElement;\n\t\t\tthis._createListener();\n\t\t}\n\n\t\treturn {\n\t\t\tactive: node === this._activeElement,\n\t\t\tcontainsFocus: !!this._activeElement && node.contains(this._activeElement)\n\t\t};\n\t}\n\n\tpublic set(key: string | number) {\n\t\tconst node = this.getNode(key);\n\t\tnode && (node as HTMLElement).focus();\n\t}\n\n\tprivate _onFocusChange = () => {\n\t\tthis._activeElement = global.document.activeElement;\n\t\tthis.invalidate();\n\t};\n\n\tprivate _createListener() {\n\t\tglobal.document.addEventListener('focusin', this._onFocusChange);\n\t\tglobal.document.addEventListener('focusout', this._onFocusChange);\n\t\tthis.own(createHandle(this._removeListener.bind(this)));\n\t}\n\n\tprivate _removeListener() {\n\t\tglobal.document.removeEventListener('focusin', this._onFocusChange);\n\t\tglobal.document.removeEventListener('focusout', this._onFocusChange);\n\t}\n}\n\nexport default Focus;\n"]}