Merge pull request #197 from github/allow-hmr-plugins

Allow CustomElements to be redefined
This commit is contained in:
Manuel Puyol 2022-04-30 02:36:23 -05:00 коммит произвёл GitHub
Родитель ec2419827e 8b986327e0
Коммит 0775b4271d
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 11 добавлений и 4 удалений

Просмотреть файл

@ -53,7 +53,7 @@
{
"path": "lib/index.js",
"import": "{controller, attr, target, targets}",
"limit": "1.6kb"
"limit": "1.64kb"
}
]
}

Просмотреть файл

@ -10,10 +10,17 @@ import {dasherize} from './dasherize.js'
*/
export function register(classObject: CustomElement): void {
const name = dasherize(classObject.name).replace(/-element$/, '')
if (!window.customElements.get(name)) {
try {
window.customElements.define(name, classObject)
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
window[classObject.name] = classObject
window.customElements.define(name, classObject)
window[classObject.name] = customElements.get(name)
} catch (e: unknown) {
// The only reason for window.customElements.define to throw a `NotSupportedError`
// is if the element has already been defined.
if (e instanceof DOMException && e.name === 'NotSupportedError') return
throw e
}
}