{
  "version": 3,
  "sources": ["../src/index.ts"],
  "sourcesContent": ["import { match as _match } from './util.js'\n\ninterface WildcardListenerEntry {\n    listener:EventListenerOrEventListenerObject\n    options?:boolean|AddEventListenerOptions\n}\n\nexport abstract class WebComponent extends window.HTMLElement {\n    static TAG:string = ''\n    TAG:string = ''\n\n    /**\n     * Declare boolean attributes that should be reflected as properties.\n     * The base class auto-generates getters/setters and includes these in\n     * `observedAttributes`. Framework property assignment (e.g. Preact's\n     * `el.disabled = true`) will then correctly set the attribute.\n     */\n    static reflectedBooleanAttributes:string[] = []\n\n    /**\n     * Declare string attributes that should be reflected as properties.\n     * Getter returns `string|null` (null when attribute is absent).\n     * Setting `null` or `undefined` removes the attribute.\n     */\n    static reflectedStringAttributes:string[] = []\n\n    /**\n     * Auto-derived from `reflectedBooleanAttributes` and\n     * `reflectedStringAttributes`. Override with `super.observedAttributes`\n     * to add non-reflected observed attributes:\n     *\n     * ```ts\n     * static get observedAttributes () {\n     *     return [...super.observedAttributes, 'aria-label']\n     * }\n     * ```\n     */\n    static get observedAttributes ():string[] {\n        return [...new Set([\n            ...this.reflectedBooleanAttributes,\n            ...this.reflectedStringAttributes,\n        ])]\n    }\n\n    static match (el:HTMLElement):HTMLElement|null {\n        return _match(el, this.TAG)\n    }\n\n    /**\n     * Store global wildcard listeners (listen to all events)\n     * Triggered by ALL events dispatched through this element\n     * @private\n     */\n    private _globalWildcardListeners:Set<WildcardListenerEntry> = new Set()\n\n    /**\n     * Store namespaced wildcard listeners (listen to 'component-name:*')\n     * Triggered by events from emit() that match this component's namespace\n     * @private\n     */\n    private _namespacedWildcardListeners:Set<WildcardListenerEntry> = new Set()\n\n    static create (elementName:string):typeof WebComponent & {\n        new (...args:any[]):WebComponent;\n        TAG:string;\n        define: typeof WebComponent.define;\n        event: typeof WebComponent.event;\n    } {\n        const CreatedClass = class extends WebComponent {\n            static TAG = elementName\n            TAG = elementName\n            render () {\n                throw new Error('`render` should be implemented by children')\n            }\n        }\n\n        // Copy static methods with proper binding\n        CreatedClass.define = function () {\n            return WebComponent.define.call(this)\n        }\n        CreatedClass.event = function (evType:string) {\n            return WebComponent.event.call(this, evType)\n        }\n\n        return CreatedClass\n    }\n\n    static define<T extends {\n        new (...args:any[]):WebComponent;\n        TAG:string;\n    }>(this:T) {\n        define(this.TAG, this)\n    }\n\n    /**\n     * Runs when the value of an attribute is changed.\n     *\n     * Depends on `static observedAttributes`.\n     *\n     * Should name methods like `handleChange_disabled`.\n     *\n     * @param  {string} name     The attribute name\n     * @param  {string} oldValue The old attribute value\n     * @param  {string} newValue The new attribute value\n     */\n    async attributeChangedCallback (\n        name:string,\n        oldValue:string,\n        newValue:string\n    ):Promise<void> {\n        const handler = this[`handleChange_${name}`]\n        if (handler) {\n            await handler.call(this, oldValue, newValue)\n        }\n    }\n\n    /**\n     * Enhanced addEventListener that supports wildcards:\n     * - Component.event('*') - Listen to all namespaced events for this\n     *   component (e.g., 'my-component:*')\n     * - '*' - Listen to ALL events (namespaced and non-namespaced, including\n     *   normal DOM events)\n     *\n     * @param type - Event type, Component.event('*') for namespaced wildcard,\n     *   or '*' for global wildcard\n     * @param listener - Event listener function or object\n     * @param options - Event listener options\n     */\n    addEventListener (\n        type:string,\n        listener:EventListenerOrEventListenerObject,\n        options?:boolean|AddEventListenerOptions\n    ): void {\n        if (type === WebComponent.event.call(this, '*')) {\n            // Handle namespaced wildcard listener (component-name:*)\n            this._namespacedWildcardListeners.add({ listener, options })\n        } else if (type === '*') {\n            // Handle global wildcard listener (all events)\n            if (listener) {\n                this._globalWildcardListeners.add({ listener, options })\n            }\n        } else {\n            // Normal event listener - delegate to native implementation\n            super.addEventListener(type, listener, options)\n        }\n    }\n\n    /**\n     * Notify namespaced wildcard listeners of an event\n     * Only fires for events that match this component's namespace\n     *\n     * @param event - The event to dispatch to namespaced wildcard listeners\n     * @private\n     */\n    private _notifyNamespacedWildcardListeners (event: Event): void {\n        if (this._namespacedWildcardListeners.size === 0) {\n            return\n        }\n\n        const componentName = this.TAG\n\n        // Only trigger for events in this component's namespace\n        if (!componentName || !event.type.startsWith(`${componentName}:`)) {\n            return\n        }\n\n        // Call each namespaced wildcard listener\n        this._namespacedWildcardListeners.forEach(({ listener }) => {\n            try {\n                if (typeof listener === 'function') {\n                    listener.call(this, event)\n                } else if (listener && typeof listener.handleEvent === 'function') {\n                    listener.handleEvent(event)\n                }\n            } catch (error) {\n                // Log errors but don't let one listener break others\n                console.error(\n                    'Error in namespaced wildcard event listener:',\n                    error\n                )\n            }\n        })\n    }\n\n    /**\n     * Notify global wildcard listeners of an event\n     * Fires for ALL events dispatched through this element\n     *\n     * @param event - The event to dispatch to global wildcard listeners\n     * @private\n     */\n    private _notifyGlobalWildcardListeners (event: Event): void {\n        if (this._globalWildcardListeners.size === 0) {\n            return\n        }\n\n        // Call each global wildcard listener\n        this._globalWildcardListeners.forEach(({ listener }) => {\n            try {\n                if (typeof listener === 'function') {\n                    listener.call(this, event)\n                } else if (listener && typeof listener.handleEvent === 'function') {\n                    listener.handleEvent(event)\n                }\n            } catch (error) {\n            // Log errors but don't let one listener break others\n                console.error('Error in global wildcard event listener:', error)\n            }\n        })\n    }\n\n    connectedCallback () {\n        this.render()\n    }\n\n    abstract render ():any\n\n    qs<K extends keyof HTMLElementTagNameMap>(\n        selector:K\n    ):HTMLElementTagNameMap[K]|null;\n\n    qs<E extends Element = Element>(selector:string):E|null;\n    qs (selector:string):Element|null {\n        return this.querySelector(selector)\n    }\n\n    qsa<K extends keyof HTMLElementTagNameMap>(\n        selector:K\n    ):HTMLElementTagNameMap[K]|null;\n\n    qsa<E extends Element = Element>(selector:string):E|null;\n    qsa (selector:string):NodeListOf<Element> {\n        return this.querySelectorAll(selector)\n    }\n\n    /**\n     * Take a non-namepsaced event name, return namespace event name.\n     *\n     * @param {string} evType The non-namespace event name\n     * @returns {string} Namespaced event name, eg, `my-component:click`\n     */\n    static event (evType:string):string {\n        return eventName(this.TAG, evType)\n    }\n\n    /**\n     * Emit a namespaced event.\n     *\n     * @param type (non-namespaced) event type string\n     * @param opts `bubbles`, `detail`, and `cancelable`. Default is\n     * `{ bubbles: true, cancelable: true }`\n     * @returns {boolean}\n     */\n    emit<T = any> (type:string, opts:Partial<{\n        bubbles:boolean,\n        cancelable:boolean,\n        detail:CustomEvent<T>['detail']\n    }> = {}):boolean {\n        if (type === '*') throw new Error('Do not emit the literal \"*\"')\n\n        const { bubbles = true, cancelable = true, detail } = opts\n        const namespacedType = `${this.TAG}:${type}`\n\n        const event = new CustomEvent(namespacedType, {\n            bubbles,\n            cancelable,\n            detail\n        })\n\n        // This will trigger both specific listeners and global wildcard\n        // listeners (**)\n        const result = this.dispatchEvent(event)\n\n        // Notify namespaced wildcard listeners (*)\n        this._notifyNamespacedWildcardListeners(event)\n\n        return result\n    }\n\n    /**\n     * Override dispatchEvent to notify global wildcard listeners\n     * This ensures that '**' listeners catch ALL events\n     *\n     * @param event - The event to dispatch\n     * @returns true if the event was not cancelled\n     */\n    dispatchEvent (event: Event): boolean {\n        const result = super.dispatchEvent(event)\n\n        // Notify global wildcard listeners for ALL events\n        this._notifyGlobalWildcardListeners(event)\n\n        return result\n    }\n\n    /**\n     * Create and emit an event, no namespacing.\n     */\n    dispatch<T> (type:string, opts:Partial<{\n        bubbles:boolean,\n        cancelable:boolean,\n        detail:CustomEvent<T>['detail']\n    }> = {}):boolean {\n        const event = new CustomEvent(type, {\n            bubbles: (opts.bubbles === undefined) ? true : opts.bubbles,\n            cancelable: (opts.cancelable === undefined) ? true : opts.cancelable,\n            detail: opts.detail\n        })\n\n        return this.dispatchEvent(event)\n    }\n\n    /**\n     * Listen for namespaced events.\n     */\n    on<T extends Event = Event> (\n        evName:string,\n        handler:(ev:T)=>any,\n        options?:boolean|AddEventListenerOptions\n    ):void;\n\n    on (\n        evName:string,\n        handler:EventListenerObject,\n        options?:boolean|AddEventListenerOptions\n    ):void;\n\n    on (\n        evName:string,\n        handler:((ev:Event)=>any)|EventListenerObject,\n        options?:boolean|AddEventListenerOptions\n    ):void {\n        const fullEvName = WebComponent.event.call(this, evName)\n        this.addEventListener(fullEvName, handler as EventListenerOrEventListenerObject, options)\n    }\n\n    /**\n     * Remove a namespaced event listener.\n     */\n    off<T extends Event = Event> (\n        evName:string,\n        handler:(ev:T)=>any,\n        options?:boolean|EventListenerOptions\n    ):void;\n\n    off (\n        evName:string,\n        handler:EventListenerObject,\n        options?:boolean|EventListenerOptions\n    ):void;\n\n    off (\n        evName:string,\n        handler:((ev:Event)=>any)|EventListenerObject,\n        options?:boolean|EventListenerOptions\n    ):void {\n        const fullEvName = WebComponent.event.call(this, evName)\n        this.removeEventListener(fullEvName, handler as EventListenerOrEventListenerObject, options)\n    }\n\n    /**\n     * Enhanced removeEventListener that supports wildcards:\n     * - Component.event('*') - Remove namespaced wildcard listener\n     * - '*' - Remove global wildcard listener\n     *\n     * @param type - Event type, Component.event('*') for namespaced, or '*'\n     *   for global\n     * @param listener - Event listener function or object to remove\n     * @param options - Event listener options\n     */\n    removeEventListener (\n        type:string,\n        listener:EventListenerOrEventListenerObject,\n        options?: boolean | EventListenerOptions\n    ): void {\n        if (type === WebComponent.event.call(this, '*')) {\n            // Remove namespaced wildcard listener\n            if (listener && this._namespacedWildcardListeners) {\n                for (const entry of this._namespacedWildcardListeners) {\n                    if (entry.listener === listener) {\n                        this._namespacedWildcardListeners.delete(entry)\n                        break\n                    }\n                }\n            }\n        } else if (type === '*') {\n            // Remove global wildcard listener\n            if (listener && this._globalWildcardListeners) {\n                for (const entry of this._globalWildcardListeners) {\n                    if (entry.listener === listener) {\n                        this._globalWildcardListeners.delete(entry)\n                        break\n                    }\n                }\n            }\n        } else {\n            // Normal event listener - delegate to native implementation\n            super.removeEventListener(type, listener, options)\n        }\n    }\n}\n\nfunction eventName (namespace:string, evType:string) {\n    return `${namespace}:${evType}`\n}\n\n/**\n * Check if the given tag name has been registered.\n *\n * @see {@link https://stackoverflow.com/a/28210364 stackoverflow}\n * @param {string} elName The custom element tag name.\n * @returns {boolean} True if the given name has been registered already.\n */\nexport function isRegistered (elName:string):boolean {\n    return document.createElement(elName).constructor !== window.HTMLElement\n}\n\nexport function define (name:string, element:CustomElementConstructor) {\n    if (typeof window === 'undefined') return\n    if (!('customElements' in window)) return\n    if (isRegistered(name)) return\n\n    const ctor = element as unknown as typeof WebComponent\n    const boolAttrs:string[] = ctor.reflectedBooleanAttributes ?? []\n    const strAttrs:string[] = ctor.reflectedStringAttributes ?? []\n    const proto = (element as any).prototype\n\n    for (const attr of boolAttrs) {\n        // Skip built-in IDL attributes on HTMLElement and ancestors\n        // (covers Element.prototype, Node.prototype, etc.)\n        if (attr in HTMLElement.prototype) continue\n        // Skip if the subclass already defines an own-property accessor\n        if (Object.getOwnPropertyDescriptor(proto, attr)) continue\n        Object.defineProperty(proto, attr, {\n            get (this:HTMLElement):boolean {\n                return this.hasAttribute(attr)\n            },\n            set (this:HTMLElement, v:unknown) {\n                this.toggleAttribute(attr, Boolean(v))\n            },\n            configurable: true,\n            enumerable: true,\n        })\n    }\n\n    for (const attr of strAttrs) {\n        if (boolAttrs.includes(attr)) {\n            console.warn(\n                `[web-component] \"${attr}\" appears in both ` +\n                'reflectedBooleanAttributes and reflectedStringAttributes ' +\n                `on <${name}>. Boolean wins.`\n            )\n            continue\n        }\n        if (attr in HTMLElement.prototype) continue\n        if (Object.getOwnPropertyDescriptor(proto, attr)) continue\n        Object.defineProperty(proto, attr, {\n            get (this:HTMLElement):string|null {\n                return this.getAttribute(attr)\n            },\n            set (this:HTMLElement, v:unknown) {\n                // null and undefined both remove the attribute\n                if (v == null) {\n                    this.removeAttribute(attr)\n                } else {\n                    this.setAttribute(attr, String(v))\n                }\n            },\n            configurable: true,\n            enumerable: true,\n        })\n    }\n\n    window.customElements.define(name, element)\n}\n"],
  "mappings": "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",
  "names": ["_match"]
}
