-
Notifications
You must be signed in to change notification settings - Fork 54
/
Copy pathcore.ts
40 lines (35 loc) · 1.29 KB
/
core.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import {register} from './register.js'
import {bind, bindShadow} from './bind.js'
import {autoShadowRoot} from './auto-shadow-root.js'
import {defineObservedAttributes, initializeAttrs} from './attr.js'
import type {CustomElement} from './custom-element.js'
const instances = new WeakSet<Element>()
export function initializeInstance(instance: HTMLElement, connect?: (this: HTMLElement) => void): void {
instance.toggleAttribute('data-catalyst', true)
customElements.upgrade(instance)
instances.add(instance)
autoShadowRoot(instance)
initializeAttrs(instance)
bind(instance)
if (connect) connect.call(instance)
if (instance.shadowRoot) bindShadow(instance.shadowRoot)
}
export function initializeAttributeChanged(
instance: HTMLElement,
name: string,
oldValue: unknown,
newValue: unknown,
attributeChangedCallback?: (this: HTMLElement, name: string, oldValue: unknown, newValue: unknown) => void
): void {
initializeAttrs(instance)
if (name !== 'data-catalyst' && attributeChangedCallback) {
attributeChangedCallback.call(instance, name, oldValue, newValue)
}
}
export function initializeClass(classObject: CustomElement): void {
defineObservedAttributes(classObject)
register(classObject)
}
export function initialized(el: Element): boolean {
return instances.has(el)
}