{"version":3,"sources":["../src/decorators/index.ts","/Users/aaroniker/Documents/GitHub/ease/web-kit/packages/core/src/decorators/Component.ts","/Users/aaroniker/Documents/GitHub/ease/web-kit/packages/core/src/decorators/Listen.ts","/Users/aaroniker/Documents/GitHub/ease/web-kit/packages/core/src/utils/dismiss-controller.ts","../src/utils/outside-click.ts","/Users/aaroniker/Documents/GitHub/ease/web-kit/packages/core/src/decorators/OutsideClick.ts","/Users/aaroniker/Documents/GitHub/ease/web-kit/packages/core/src/decorators/Prop.ts","/Users/aaroniker/Documents/GitHub/ease/web-kit/packages/core/src/decorators/Query.ts","/Users/aaroniker/Documents/GitHub/ease/web-kit/packages/core/src/decorators/Watch.ts"],"sourcesContent":["export { Component, type RenderContext } from './Component';\nexport { Listen } from './Listen';\nexport { OutsideClick } from './OutsideClick';\nexport { Prop } from './Prop';\nexport { Query } from './Query';\nexport { Watch } from './Watch';\n","import { html, render, type TemplateResult } from 'lit-html';\n\ntype Constructor<T extends HTMLElement> = new (...args: unknown[]) => T;\n\ninterface LifecycleElement {\n  connectedCallback?(): void;\n  disconnectedCallback?(): void;\n  attributeChangedCallback?(name: string, oldValue: string | null, newValue: string | null): void;\n}\n\ntype RenderableElement = HTMLElement & {\n  render?(): TemplateResult | null | undefined;\n  afterRender?(): void;\n  wrapRender?(commit: () => void, context: RenderContext): void;\n  onAttributeChange?(name: string, oldValue: string | null, newValue: string | null): void;\n  requestRender?(): void;\n  renderRoot?: ShadowRoot | HTMLElement;\n};\n\ntype TemplateValue<TElement extends RenderableElement> =\n  | TemplateResult\n  | null\n  | undefined\n  | ((this: TElement, host: TElement) => TemplateResult | null | undefined);\n\ninterface ComponentOptions<TElement extends RenderableElement = RenderableElement> {\n  tag: string;\n  template?: TemplateValue<TElement>;\n  styles?: string;\n  styleUrls?: string[];\n  observedAttributes?: string[];\n  shadowMode?: ShadowRootMode;\n  autoSlot?: boolean;\n}\n\n// Exporting RenderContext\nexport interface RenderContext {\n  fragment: DocumentFragment;\n  root: ShadowRoot | HTMLElement;\n}\n\nconst styleCache = new Map<string, Promise<string>>();\n\nconst normalizeTemplate = <TElement extends RenderableElement>(\n  template?: TemplateValue<TElement>\n): ((this: TElement, host: TElement) => TemplateResult | null | undefined) => {\n  if (typeof template === 'function') {\n    return template as (this: TElement, host: TElement) => TemplateResult | null | undefined;\n  }\n\n  if (template && typeof template === 'object' && '_$litTemplate$' in template) {\n    return function (this: TElement): TemplateResult | null | undefined {\n      return template as TemplateResult;\n    };\n  }\n\n  return function (this: TElement): TemplateResult | null | undefined {\n    return null;\n  };\n};\n\nconst fetchStyles = async (urls: readonly string[]): Promise<string[]> =>\n  Promise.all(\n    urls.map((url) => {\n      const cached = styleCache.get(url);\n      if (cached) {\n        return cached;\n      }\n\n      const request = fetch(url)\n        .then((response) => (response.ok ? response.text() : ''))\n        .catch(() => '');\n\n      styleCache.set(url, request);\n      return request;\n    })\n  );\n\nexport const Component =\n  <TElement extends RenderableElement = RenderableElement>(options: ComponentOptions<TElement>) =>\n  <TBase extends Constructor<TElement> & { observedAttributes?: string[] }>(\n    Base: TBase,\n    _context: ClassDecoratorContext\n  ): TBase => {\n    const {\n      tag,\n      template,\n      styles = '',\n      styleUrls = [],\n      observedAttributes = [],\n      shadowMode = 'open',\n      autoSlot = true\n    } = options;\n\n    if (!tag) {\n      throw new Error('@Component requires a \"tag\" option.');\n    }\n\n    const templateFn = normalizeTemplate<TElement>(template);\n\n    class Decorated extends (Base as unknown as Constructor<RenderableElement>) {\n      static get observedAttributes(): string[] {\n        const parent =\n          'observedAttributes' in Base && Array.isArray(Base.observedAttributes)\n            ? (Base.observedAttributes as string[])\n            : [];\n        const own = Array.isArray(observedAttributes) ? observedAttributes : [];\n        return Array.from(new Set([...parent, ...own]));\n      }\n\n      #shadow: ShadowRoot;\n      #styles = styles;\n      #styleUrls = [...styleUrls];\n      #renderScheduled = false;\n\n      constructor(...args: unknown[]) {\n        super(...args);\n        this.#shadow = this.attachShadow({ mode: shadowMode });\n        this.renderRoot = this.#shadow;\n      }\n\n      get shadow(): HTMLElement | ShadowRoot | undefined {\n        return this.renderRoot;\n      }\n\n      connectedCallback(): void {\n        (Base.prototype as LifecycleElement).connectedCallback?.call(this);\n\n        void this.#loadStyles().finally(() => {\n          this.requestRender();\n        });\n      }\n\n      disconnectedCallback(): void {\n        (Base.prototype as LifecycleElement).disconnectedCallback?.call(this);\n        this.#renderScheduled = false;\n      }\n\n      attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n        (Base.prototype as LifecycleElement).attributeChangedCallback?.call(this, name, oldValue, newValue);\n\n        if (oldValue !== newValue) {\n          this.onAttributeChange?.(name, oldValue, newValue);\n        }\n      }\n\n      requestRender(): void {\n        if (this.#renderScheduled) {\n          return;\n        }\n\n        this.#renderScheduled = true;\n\n        requestAnimationFrame(() => {\n          this.#renderScheduled = false;\n          this.#render();\n        });\n      }\n\n      async #loadStyles(): Promise<void> {\n        if (!this.#styleUrls.length) {\n          return;\n        }\n\n        const fetched = await fetchStyles(this.#styleUrls);\n        const inlineStyles = this.#styles ? [this.#styles] : [];\n        this.#styles = [...inlineStyles, ...fetched.filter(Boolean)].join('\\n');\n      }\n\n      #render(): void {\n        const root = this.#shadow;\n\n        let templateResult: TemplateResult | null | undefined;\n\n        if (typeof this.render === 'function') {\n          templateResult = this.render();\n        } else {\n          templateResult = templateFn.call(this as unknown as TElement, this as unknown as TElement);\n        }\n\n        const styleTemplate = this.#styles ? html`<style>${this.#styles}</style>` : null;\n        const slotTemplate = autoSlot ? html`<slot></slot>` : null;\n\n        const completeTemplate = html`\n          ${styleTemplate}\n          ${templateResult ?? null}\n          ${slotTemplate}\n        `;\n\n        const commit = (): void => {\n          render(completeTemplate, root);\n          this.afterRender?.();\n        };\n\n        if (typeof this.wrapRender === 'function') {\n          const fragment = document.createDocumentFragment();\n          const tempDiv = document.createElement('div');\n\n          render(completeTemplate, tempDiv);\n\n          fragment.append(...tempDiv.childNodes);\n\n          this.wrapRender(commit, { fragment, root });\n          return;\n        }\n\n        commit();\n      }\n    }\n\n    // SSR safety: only register in browser environments\n    if (typeof customElements !== 'undefined' && !customElements.get(tag)) {\n      customElements.define(tag, Decorated as unknown as CustomElementConstructor);\n    }\n\n    return Decorated as unknown as TBase;\n  };\n","type ListenHost = HTMLElement & {\n  renderRoot?: ShadowRoot | DocumentFragment | HTMLElement;\n};\n\ntype LifecycleHookName = 'connectedCallback' | 'disconnectedCallback';\n\ntype LifecycleCallback<THost extends ListenHost> = (this: THost) => void;\n\ntype ListenTargetResolver<THost extends ListenHost> =\n  | 'document'\n  | 'window'\n  | 'shadow'\n  | 'root'\n  | 'light'\n  | EventTarget\n  | ((host: THost) => EventTarget | null | undefined);\n\ntype Predicate<TEvent extends Event, TElement extends Element> = (event: TEvent, matched: TElement | null) => boolean;\n\ninterface ListenOptions<THost extends ListenHost, TElement extends Element, TEvent extends Event> {\n  selector?: string;\n  target?: ListenTargetResolver<THost>;\n  prevent?: boolean;\n  stop?: boolean;\n  stopImmediate?: boolean;\n  once?: boolean;\n  passive?: boolean;\n  capture?: boolean;\n  when?: Predicate<TEvent, TElement>;\n}\n\ntype Cleanup = () => void;\n\nconst lifecycleHooks: Record<LifecycleHookName, WeakMap<ListenHost, Set<LifecycleCallback<ListenHost>>>> = {\n  connectedCallback: new WeakMap(),\n  disconnectedCallback: new WeakMap()\n};\n\nconst cleanupRegistry = new WeakMap<ListenHost, Set<Cleanup>>();\n\nconst addLifecycleHook = <THost extends ListenHost>(\n  instance: THost,\n  hookName: LifecycleHookName,\n  handler: LifecycleCallback<THost>\n): void => {\n  const store = lifecycleHooks[hookName] as WeakMap<THost, Set<LifecycleCallback<THost>>>;\n  let callbacks = store.get(instance);\n\n  if (!callbacks) {\n    callbacks = new Set<LifecycleCallback<THost>>();\n    store.set(instance, callbacks);\n\n    const original = (instance as unknown as Record<LifecycleHookName, unknown>)[hookName];\n\n    (instance as unknown as Record<LifecycleHookName, unknown>)[hookName] = function (...args: unknown[]) {\n      callbacks?.forEach((callback) => {\n        callback.apply(this as THost);\n      });\n\n      if (typeof original === 'function') {\n        return (original as (...params: unknown[]) => unknown).apply(this, args);\n      }\n\n      return undefined;\n    };\n  }\n\n  callbacks.add(handler);\n};\n\nconst registerCleanup = <THost extends ListenHost>(instance: THost, cleanup: Cleanup): void => {\n  let callbacks = cleanupRegistry.get(instance);\n\n  if (!callbacks) {\n    callbacks = new Set();\n    cleanupRegistry.set(instance, callbacks);\n\n    addLifecycleHook(instance, 'disconnectedCallback', function (this: THost) {\n      const registered = cleanupRegistry.get(this);\n      registered?.forEach((fn) => {\n        try {\n          fn();\n        } catch (error) {\n          console.error('[Listen] cleanup failed', error);\n        }\n      });\n      cleanupRegistry.delete(this);\n    });\n  }\n\n  callbacks.add(cleanup);\n};\n\nconst resolveTarget = <THost extends ListenHost>(\n  host: THost,\n  target: ListenTargetResolver<THost> | undefined\n): EventTarget | null => {\n  if (typeof target === 'function') {\n    return target(host) ?? null;\n  }\n\n  if (target instanceof EventTarget) {\n    return target;\n  }\n\n  switch (target) {\n    case 'document':\n      return document;\n    case 'window':\n      return window;\n    case 'light':\n      return host;\n    default:\n      return host.renderRoot ?? host.shadowRoot ?? host;\n  }\n};\n\nconst normalizeOptions = <THost extends ListenHost, TElement extends Element, TEvent extends Event>(\n  selectorOrOptions: string | ListenOptions<THost, TElement, TEvent> | undefined\n): ListenOptions<THost, TElement, TEvent> => {\n  if (typeof selectorOrOptions === 'string') {\n    return { selector: selectorOrOptions };\n  }\n\n  return selectorOrOptions ?? {};\n};\n\nconst buildOptions = <THost extends ListenHost, TElement extends Element, TEvent extends Event>(\n  options: ListenOptions<THost, TElement, TEvent>\n) => {\n  return {\n    selector: options.selector ?? null,\n    target: options.target ?? 'shadow',\n    prevent: options.prevent ?? false,\n    stop: options.stop ?? false,\n    stopImmediate: options.stopImmediate ?? false,\n    once: options.once ?? false,\n    passive: options.passive,\n    capture: options.capture ?? false,\n    when: options.when ?? null\n  };\n};\n\nexport function Listen<THost extends ListenHost, TEvent extends Event = Event, TElement extends Element = Element>(\n  eventName: keyof HTMLElementEventMap | string,\n  selectorOrOptions?: string | ListenOptions<THost, TElement, TEvent>\n) {\n  if (!eventName) {\n    throw new Error('@Listen requires an event name.');\n  }\n\n  const listenConfig = buildOptions(normalizeOptions(selectorOrOptions));\n\n  return (\n    originalMethod: (this: THost, event: TEvent, matched?: TElement | null) => unknown,\n    context: ClassMethodDecoratorContext<THost, typeof originalMethod>\n  ): void => {\n    context.addInitializer(function (this: THost) {\n      let attached = false;\n\n      const attach = () => {\n        if (attached) {\n          return;\n        }\n\n        const target = resolveTarget(this, listenConfig.target);\n\n        if (!target || typeof (target as EventTarget).addEventListener !== 'function') {\n          console.warn(`@Listen unable to resolve target for ${String(eventName)}`);\n          return;\n        }\n\n        const eventOptions: AddEventListenerOptions = {\n          capture: listenConfig.capture,\n          once: listenConfig.once,\n          passive: listenConfig.passive !== undefined ? listenConfig.passive : !listenConfig.prevent\n        };\n\n        const handler = (event: Event): void => {\n          const typedEvent = event as TEvent;\n\n          if (listenConfig.prevent) {\n            typedEvent.preventDefault();\n          }\n\n          if (listenConfig.stopImmediate) {\n            typedEvent.stopImmediatePropagation();\n          } else if (listenConfig.stop) {\n            typedEvent.stopPropagation();\n          }\n\n          let matched: TElement | null = null;\n\n          if (listenConfig.selector) {\n            const path = typedEvent.composedPath();\n            matched =\n              path.find(\n                (node): node is TElement => node instanceof Element && node.matches(listenConfig.selector as string)\n              ) ?? null;\n\n            if (!matched) {\n              return;\n            }\n          }\n\n          if (listenConfig.when && !listenConfig.when(typedEvent, matched)) {\n            return;\n          }\n\n          if (listenConfig.selector) {\n            void originalMethod.call(this, typedEvent, matched);\n          } else {\n            const targetNode = (\n              typedEvent.target instanceof Element ? (typedEvent.target as TElement) : null\n            ) as TElement | null;\n            void originalMethod.call(this, typedEvent, targetNode);\n          }\n        };\n\n        target.addEventListener(eventName as string, handler, eventOptions);\n        attached = true;\n\n        registerCleanup(this, () => {\n          target.removeEventListener(eventName as string, handler, eventOptions);\n          attached = false;\n        });\n      };\n\n      // IMPORTANT:\n      // Many components are created inside templates/shadow DOM. At construction time they are often not connected yet,\n      // and patching instance lifecycle callbacks is not reliably invoked by the platform.\n      // Attach the listener ASAP (microtask) so it works for nested components as well.\n      queueMicrotask(attach);\n\n      // Best-effort attach on connect too (idempotent).\n      addLifecycleHook(this, 'connectedCallback', attach);\n    });\n  };\n}\n","export interface DismissContext {\n  owner: HTMLElement;\n  content?: HTMLElement | null;\n  triggers?: Array<HTMLElement | null | undefined>;\n}\n\nexport interface DismissControllerOptions {\n  onDismiss: (event: Event) => void;\n}\n\nexport class DismissController {\n  #onDismiss: (event: Event) => void;\n  #context: {\n    owner: HTMLElement;\n    content: HTMLElement | null;\n    triggers: HTMLElement[];\n  } | null = null;\n  #active = false;\n\n  constructor(options: DismissControllerOptions) {\n    this.#onDismiss = options.onDismiss;\n  }\n\n  connect(context: DismissContext): void {\n    this.#context = {\n      owner: context.owner,\n      content: context.content ?? null,\n      triggers: (context.triggers ?? []).filter((el): el is HTMLElement => el instanceof HTMLElement)\n    };\n\n    if (!this.#active) {\n      document.addEventListener('pointerdown', this.#handlePointerDown, true);\n      document.addEventListener('keydown', this.#handleKeyDown, true);\n      this.#active = true;\n    }\n  }\n\n  disconnect(): void {\n    if (!this.#active) {\n      return;\n    }\n\n    document.removeEventListener('pointerdown', this.#handlePointerDown, true);\n    document.removeEventListener('keydown', this.#handleKeyDown, true);\n    this.#active = false;\n    this.#context = null;\n  }\n\n  #handlePointerDown = (event: PointerEvent): void => {\n    if (!this.#context) {\n      return;\n    }\n\n    const { owner, content, triggers } = this.#context;\n    const path = event.composedPath();\n\n    if (path.some((node) => node instanceof Element && node.hasAttribute('data-select-ignore'))) {\n      return;\n    }\n\n    if (path.includes(owner)) {\n      return;\n    }\n\n    if (content && path.includes(content)) {\n      return;\n    }\n\n    if (triggers.some((trigger) => path.includes(trigger))) {\n      return;\n    }\n\n    this.#onDismiss(event);\n  };\n\n  #handleKeyDown = (event: KeyboardEvent): void => {\n    if (event.key !== 'Escape' || !this.#context) {\n      return;\n    }\n\n    event.preventDefault();\n\n    const active = document.activeElement as HTMLElement | null;\n\n    if (!active) {\n      this.#onDismiss(event);\n      return;\n    }\n\n    const { owner, content, triggers } = this.#context;\n    const path = event.composedPath();\n\n    if (path.includes(owner) || owner.contains(active)) {\n      this.#onDismiss(event);\n      return;\n    }\n\n    if (content && (path.includes(content) || content.contains(active))) {\n      this.#onDismiss(event);\n      return;\n    }\n\n    if (triggers.some((trigger) => path.includes(trigger) || trigger.contains(active))) {\n      this.#onDismiss(event);\n    }\n  };\n}\n","import type { DismissContext } from './dismiss-controller';\n\nimport { DismissController } from './dismiss-controller';\n\nexport interface OutsideClickResolution {\n  owner?: HTMLElement | null | undefined;\n  content?: HTMLElement | null | undefined;\n  triggers?: Array<HTMLElement | null | undefined>;\n}\n\nexport interface OutsideClickHandle {\n  update(): void;\n  disconnect(): void;\n}\n\nexport interface OutsideClickHandleOptions<THost extends HTMLElement> {\n  resolve: (host: THost) => OutsideClickResolution | null | undefined;\n  disabled?: (host: THost) => boolean;\n}\n\nconst registry = new WeakMap<HTMLElement, Set<OutsideClickHandle>>();\n\nconst toDismissContext = <THost extends HTMLElement>(\n  host: THost,\n  options: OutsideClickHandleOptions<THost>\n): DismissContext | null => {\n  if (options.disabled?.(host)) {\n    return null;\n  }\n\n  const resolved = options.resolve(host);\n\n  if (!resolved) {\n    return null;\n  }\n\n  const owner = resolved.owner ?? host ?? null;\n\n  if (!(owner instanceof HTMLElement)) {\n    return null;\n  }\n\n  const content = resolved.content && resolved.content instanceof HTMLElement ? resolved.content : null;\n\n  const triggers = resolved.triggers?.filter((element): element is HTMLElement => element instanceof HTMLElement) ?? [];\n\n  return {\n    owner,\n    content,\n    triggers\n  };\n};\n\nexport const createOutsideClickHandle = <THost extends HTMLElement>(\n  host: THost,\n  onDismiss: (this: THost, event: Event) => void,\n  options: OutsideClickHandleOptions<THost>\n): OutsideClickHandle => {\n  const controller = new DismissController({\n    onDismiss(event) {\n      if (options.disabled?.(host)) {\n        return;\n      }\n\n      onDismiss.call(host, event);\n    }\n  });\n\n  return {\n    update(): void {\n      const context = toDismissContext(host, options);\n      if (!context) {\n        controller.disconnect();\n        return;\n      }\n\n      controller.connect(context);\n    },\n    disconnect(): void {\n      controller.disconnect();\n    }\n  };\n};\n\nexport const registerOutsideClickHandle = (host: HTMLElement, handle: OutsideClickHandle): void => {\n  let handles = registry.get(host);\n\n  if (!handles) {\n    handles = new Set();\n    registry.set(host, handles);\n  }\n\n  handles.add(handle);\n};\n\nexport const updateOutsideClickHandles = (host: HTMLElement): void => {\n  const handles = registry.get(host);\n\n  if (!handles) {\n    return;\n  }\n\n  handles.forEach((handle) => {\n    handle.update();\n  });\n};\n\nexport const disconnectOutsideClickHandles = (host: HTMLElement): void => {\n  const handles = registry.get(host);\n\n  if (!handles) {\n    return;\n  }\n\n  handles.forEach((handle) => {\n    handle.disconnect();\n  });\n};\n\nexport const requestOutsideClickUpdate = (host: HTMLElement): void => {\n  updateOutsideClickHandles(host);\n};\n","import type { OutsideClickResolution } from '~/utils/outside-click';\n\nimport {\n  createOutsideClickHandle,\n  disconnectOutsideClickHandles,\n  registerOutsideClickHandle,\n  updateOutsideClickHandles\n} from '~/utils/outside-click';\n\ntype OutsideClickHost = HTMLElement & {\n  connectedCallback?: (...args: unknown[]) => unknown;\n  disconnectedCallback?: (...args: unknown[]) => unknown;\n  afterRender?: (...args: unknown[]) => unknown;\n};\n\ntype HookName = 'connectedCallback' | 'disconnectedCallback' | 'afterRender';\n\ninterface OutsideClickOptions<THost extends OutsideClickHost> {\n  resolve?: (host: THost) => OutsideClickResolution | null | undefined;\n  owner?: (host: THost) => HTMLElement | null | undefined;\n  content?: (host: THost) => HTMLElement | null | undefined;\n  triggers?: (host: THost) => Array<HTMLElement | null | undefined>;\n  disabled?: (host: THost) => boolean;\n}\n\nconst lifecycleApplied = new WeakSet<OutsideClickHost>();\n\nconst wrapMethod = (\n  host: OutsideClickHost,\n  name: HookName,\n  hook: (this: OutsideClickHost) => void,\n  callHookFirst = false\n): void => {\n  const original = host[name];\n\n  (host as Required<OutsideClickHost>)[name] = function (...args: unknown[]) {\n    if (callHookFirst) {\n      hook.call(this);\n    }\n\n    let result: unknown;\n\n    if (typeof original === 'function') {\n      result = (original as (...params: unknown[]) => unknown).apply(this, args);\n    }\n\n    if (!callHookFirst) {\n      hook.call(this);\n    }\n\n    return result;\n  };\n};\n\nconst ensureLifecycle = (host: OutsideClickHost): void => {\n  if (lifecycleApplied.has(host)) {\n    return;\n  }\n\n  lifecycleApplied.add(host);\n\n  wrapMethod(host, 'connectedCallback', function (this: OutsideClickHost) {\n    updateOutsideClickHandles(this);\n  });\n\n  wrapMethod(host, 'afterRender', function (this: OutsideClickHost) {\n    updateOutsideClickHandles(this);\n  });\n\n  wrapMethod(\n    host,\n    'disconnectedCallback',\n    function (this: OutsideClickHost) {\n      disconnectOutsideClickHandles(this);\n    },\n    true\n  );\n};\n\nexport function OutsideClick<THost extends OutsideClickHost, TEvent extends Event = Event>(\n  options: OutsideClickOptions<THost> = {}\n) {\n  return (\n    originalMethod: (this: THost, event: TEvent) => unknown,\n    context: ClassMethodDecoratorContext<THost, typeof originalMethod>\n  ): void => {\n    context.addInitializer(function (this: THost) {\n      ensureLifecycle(this);\n\n      const resolve =\n        options.resolve ??\n        ((host: THost): OutsideClickResolution => {\n          return {\n            owner: options.owner?.(host),\n            content: options.content?.(host),\n            triggers: options.triggers?.(host)\n          };\n        });\n\n      const handle = createOutsideClickHandle(\n        this,\n        (event) => {\n          originalMethod.call(this, event as TEvent);\n        },\n        {\n          resolve,\n          disabled: options.disabled\n        }\n      );\n\n      registerOutsideClickHandle(this, handle);\n\n      if (this.isConnected) {\n        updateOutsideClickHandles(this);\n      }\n    });\n  };\n}\n\nexport type { OutsideClickOptions };\n\nexport { requestOutsideClickUpdate } from '~/utils/outside-click';\n","type RenderHost = HTMLElement & {\n  requestRender?(): void;\n  render?(): void;\n  connectedCallback?(): void;\n  disconnectedCallback?(...args: unknown[]): void;\n};\n\ntype PropTypeDescriptor =\n  | BooleanConstructor\n  | NumberConstructor\n  | StringConstructor\n  | ObjectConstructor\n  | ArrayConstructor\n  | 'boolean'\n  | 'number'\n  | 'string'\n  | 'json';\n\ntype Formatter<TValue, THost extends RenderHost> = (this: THost, value: TValue) => string | null | undefined;\ntype Parser<TValue, THost extends RenderHost> = (this: THost, value: string | null) => TValue;\n\ninterface PropOptions<TValue, THost extends RenderHost> {\n  attribute?: string;\n  reflect?: boolean;\n  type?: PropTypeDescriptor;\n  parse?: Parser<TValue, THost>;\n  format?: Formatter<TValue, THost>;\n  defaultValue?: TValue | ((this: THost) => TValue);\n  compare?: (previous: TValue, next: TValue) => boolean;\n  onChange?: (this: THost, next: TValue, previous: TValue) => void;\n  onAttributeChange?: (this: THost, next: TValue, previous: TValue) => void;\n}\n\ninterface AttributeObserverEntry {\n  observer: MutationObserver;\n  callbacks: Map<string, Set<(value: string | null) => void>>;\n}\n\nconst renderQueue = new WeakMap<RenderHost, boolean>();\nconst cleanupRegistry = new WeakMap<RenderHost, Set<() => void>>();\nconst observerRegistry = new WeakMap<RenderHost, AttributeObserverEntry>();\nconst internalMutations = new WeakMap<RenderHost, Set<string>>();\n\nconst scheduleRender = (instance: RenderHost): void => {\n  if (typeof instance.requestRender === 'function') {\n    instance.requestRender();\n    return;\n  }\n\n  if (typeof instance.render !== 'function') {\n    return;\n  }\n\n  if (renderQueue.get(instance)) {\n    return;\n  }\n\n  renderQueue.set(instance, true);\n\n  requestAnimationFrame(() => {\n    renderQueue.delete(instance);\n    instance.render?.();\n  });\n};\n\nconst toKebabCase = (value: PropertyKey): string =>\n  String(value)\n    .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n    .replace(/[_\\s]+/g, '-')\n    .toLowerCase();\n\nconst registerCleanup = (instance: RenderHost, cleanup: () => void): void => {\n  let callbacks = cleanupRegistry.get(instance);\n\n  if (!callbacks) {\n    callbacks = new Set();\n    cleanupRegistry.set(instance, callbacks);\n\n    const original = instance.disconnectedCallback;\n\n    instance.disconnectedCallback = function (this: RenderHost, ...args: unknown[]) {\n      const registered = cleanupRegistry.get(this);\n      registered?.forEach((callback) => {\n        try {\n          callback();\n        } catch (error) {\n          console.error('[Prop] cleanup failed', error);\n        }\n      });\n      cleanupRegistry.delete(this);\n\n      if (typeof original === 'function') {\n        return original.apply(this, args as []);\n      }\n\n      return undefined;\n    } as typeof instance.disconnectedCallback;\n  }\n\n  callbacks.add(cleanup);\n};\n\nconst markInternalMutation = (host: RenderHost, attribute: string): void => {\n  let attributes = internalMutations.get(host);\n\n  if (!attributes) {\n    attributes = new Set();\n    internalMutations.set(host, attributes);\n  }\n\n  attributes.add(attribute);\n};\n\nconst isInternalMutation = (host: RenderHost, attribute: string): boolean => {\n  const attributes = internalMutations.get(host);\n\n  if (!attributes) {\n    return false;\n  }\n\n  const hasAttribute = attributes.has(attribute);\n\n  if (hasAttribute) {\n    attributes.delete(attribute);\n    if (attributes.size === 0) {\n      internalMutations.delete(host);\n    }\n  }\n\n  return hasAttribute;\n};\n\nconst observeAttribute = (host: RenderHost, attribute: string, handler: (value: string | null) => void): void => {\n  let entry = observerRegistry.get(host);\n\n  if (!entry) {\n    const callbacks = new Map<string, Set<(value: string | null) => void>>();\n    const observer = new MutationObserver((records) => {\n      records.forEach((record) => {\n        const attributeName = record.attributeName;\n\n        if (!attributeName) {\n          return;\n        }\n\n        if (isInternalMutation(host, attributeName)) {\n          return;\n        }\n\n        const listeners = callbacks.get(attributeName);\n        if (!listeners) {\n          return;\n        }\n\n        const currentValue = (record.target as Element).getAttribute(attributeName);\n\n        for (const listener of listeners) {\n          listener(currentValue);\n        }\n      });\n    });\n\n    observer.observe(host, { attributes: true });\n\n    entry = { observer, callbacks };\n    observerRegistry.set(host, entry);\n\n    registerCleanup(host, () => {\n      observer.disconnect();\n      observerRegistry.delete(host);\n    });\n  }\n\n  let listeners = entry.callbacks.get(attribute);\n\n  if (!listeners) {\n    listeners = new Set();\n    entry.callbacks.set(attribute, listeners);\n  }\n\n  listeners.add(handler);\n};\n\nconst updateAttribute = (host: RenderHost, attribute: string, value: string | null | undefined | boolean): void => {\n  markInternalMutation(host, attribute);\n\n  if (value === undefined || value === null || value === false) {\n    host.removeAttribute(attribute);\n    return;\n  }\n\n  if (value === true) {\n    host.setAttribute(attribute, '');\n    return;\n  }\n\n  host.setAttribute(attribute, String(value));\n};\n\nconst resolveType = (type: PropTypeDescriptor | undefined): 'boolean' | 'number' | 'json' | 'string' | null => {\n  if (!type) {\n    return null;\n  }\n\n  if (type === Boolean || type === 'boolean') {\n    return 'boolean';\n  }\n\n  if (type === Number || type === 'number') {\n    return 'number';\n  }\n\n  if (type === Object || type === Array || type === 'json') {\n    return 'json';\n  }\n\n  return 'string';\n};\n\nconst typeParsers: Record<'boolean' | 'number' | 'json' | 'string', Parser<unknown, RenderHost>> = {\n  boolean(value: string | null): boolean {\n    return value !== null;\n  },\n  number(value: string | null): number | null {\n    if (value === null || value === '') {\n      return null;\n    }\n\n    const parsed = Number(value);\n    return Number.isNaN(parsed) ? null : parsed;\n  },\n  json(value: string | null): unknown {\n    if (!value) {\n      return null;\n    }\n\n    try {\n      return JSON.parse(value);\n    } catch (error) {\n      console.warn('[Prop] failed to parse JSON attribute', error);\n      return null;\n    }\n  },\n  string(value: string | null): string | null {\n    return value;\n  }\n};\n\nconst typeFormatters: Record<'boolean' | 'number' | 'json' | 'string', Formatter<unknown, RenderHost>> = {\n  boolean(value: unknown): string | null {\n    return value ? '' : null;\n  },\n  number(value: unknown): string | null {\n    if (value === null || value === undefined || value === '') {\n      return null;\n    }\n    return String(value);\n  },\n  json(value: unknown): string | null {\n    if (value === null || value === undefined) {\n      return null;\n    }\n    try {\n      return JSON.stringify(value);\n    } catch {\n      return null;\n    }\n  },\n  string(value: unknown): string | null {\n    if (value === null || value === undefined) {\n      return null;\n    }\n    return String(value);\n  }\n};\n\nconst defaultCompare = <TValue>(previous: TValue, next: TValue): boolean => previous === next;\n\nexport function Prop<TValue, THost extends RenderHost = RenderHost>(options: PropOptions<TValue, THost> = {}) {\n  const {\n    attribute,\n    reflect = true,\n    type,\n    parse,\n    format,\n    defaultValue,\n    compare = defaultCompare,\n    onChange,\n    onAttributeChange\n  } = options;\n\n  const resolvedType = resolveType(type);\n\n  const parseValue: Parser<TValue, THost> = parse\n    ? parse\n    : function (this: THost, value) {\n        if (!resolvedType) {\n          return value as unknown as TValue;\n        }\n        return typeParsers[resolvedType].call(this, value) as TValue;\n      };\n\n  const formatValue: Formatter<TValue, THost> = format\n    ? format\n    : function (this: THost, value) {\n        if (!resolvedType) {\n          return (value as unknown as string | null | undefined) ?? null;\n        }\n        return typeFormatters[resolvedType].call(this, value as unknown) as string | null;\n      };\n\n  return (\n    accessor: ClassAccessorDecoratorTarget<THost, TValue>,\n    context: ClassAccessorDecoratorContext<THost, TValue>\n  ): ClassAccessorDecoratorResult<THost, TValue> => {\n    if (context.kind !== 'accessor') {\n      throw new Error('@Prop requires the \"accessor\" keyword on the property.');\n    }\n\n    const attributeName = attribute ?? toKebabCase(context.name);\n\n    context.addInitializer(function (this: THost) {\n      if (!reflect) {\n        return;\n      }\n\n      observeAttribute(this, attributeName, (rawValue) => {\n        if (isInternalMutation(this, attributeName)) {\n          return;\n        }\n\n        const parsed = parseValue.call(this, rawValue);\n        const previous = accessor.get.call(this);\n\n        if (compare(previous, parsed)) {\n          return;\n        }\n\n        accessor.set.call(this, parsed);\n\n        onAttributeChange?.call(this, parsed, previous);\n        scheduleRender(this);\n      });\n    });\n\n    return {\n      get(this: THost): TValue {\n        return accessor.get.call(this);\n      },\n      set(this: THost, value: TValue): void {\n        const previous = accessor.get.call(this);\n\n        if (compare(previous, value)) {\n          return;\n        }\n\n        accessor.set.call(this, value);\n\n        if (reflect) {\n          const formatted = formatValue.call(this, value);\n          updateAttribute(this, attributeName, formatted);\n        }\n\n        onChange?.call(this, value, previous);\n        scheduleRender(this);\n      },\n      init(this: THost, initialValue: TValue): TValue {\n        let value = initialValue;\n\n        if (this.hasAttribute(attributeName)) {\n          value = parseValue.call(this, this.getAttribute(attributeName));\n        } else if (value === undefined && defaultValue !== undefined) {\n          value =\n            typeof defaultValue === 'function' ? (defaultValue as (this: THost) => TValue).call(this) : defaultValue;\n        }\n\n        if (reflect) {\n          const formatted = formatValue.call(this, value);\n          updateAttribute(this, attributeName, formatted);\n        }\n\n        return value;\n      }\n    };\n  };\n}\n","type QueryRoot = 'shadow' | 'light' | 'document';\n\ntype QueryHost = HTMLElement & {\n  renderRoot?: ShadowRoot | DocumentFragment | HTMLElement;\n};\n\ntype QueryFallback<TResult, THost extends QueryHost> = TResult | ((host: THost) => TResult);\n\ninterface BaseQueryOptions<TResult, THost extends QueryHost> {\n  from?: QueryRoot;\n  fallback?: QueryFallback<TResult, THost>;\n}\n\ninterface QueryAllOptions<TElement extends Element, THost extends QueryHost>\n  extends BaseQueryOptions<TElement[], THost> {\n  all: true;\n  closest?: false;\n}\n\ninterface QueryClosestOptions<THost extends QueryHost> extends BaseQueryOptions<Element | null, THost> {\n  closest: true;\n  all?: false;\n}\n\ninterface QuerySingleOptions<TElement extends Element, THost extends QueryHost>\n  extends BaseQueryOptions<TElement | null, THost> {\n  all?: false;\n  closest?: false;\n}\n\ntype QueryOptions<TElement extends Element, THost extends QueryHost> =\n  | QueryAllOptions<TElement, THost>\n  | QueryClosestOptions<THost>\n  | QuerySingleOptions<TElement, THost>;\n\ntype QueryReturnType<\n  TElement extends Element,\n  THost extends QueryHost,\n  TOptions extends QueryOptions<TElement, THost>\n> =\n  TOptions extends QueryAllOptions<TElement, THost>\n    ? TElement[]\n    : TOptions extends QueryClosestOptions<THost>\n      ? Element | null\n      : TElement | null;\n\ntype QueryDecorator<\n  TElement extends Element,\n  THost extends QueryHost,\n  TOptions extends QueryOptions<TElement, THost>\n> = (\n  target: ClassAccessorDecoratorTarget<THost, QueryReturnType<TElement, THost, TOptions>> | undefined,\n  context:\n    | ClassFieldDecoratorContext<THost, QueryReturnType<TElement, THost, TOptions>>\n    | ClassAccessorDecoratorContext<THost, QueryReturnType<TElement, THost, TOptions>>\n) => ClassAccessorDecoratorResult<THost, QueryReturnType<TElement, THost, TOptions>> | undefined;\n\nconst defaultOptions = {\n  all: false,\n  closest: false,\n  from: 'shadow' as QueryRoot | undefined,\n  fallback: null\n} as const satisfies QuerySingleOptions<Element, QueryHost>;\n\nconst resolveFallback = <TResult, THost extends QueryHost>(\n  fallback: QueryFallback<TResult, THost> | undefined,\n  host: THost\n): TResult | undefined => {\n  if (typeof fallback === 'function') {\n    return (fallback as (instance: THost) => TResult)(host);\n  }\n\n  return fallback;\n};\n\nconst resolveRoot = (host: QueryHost, option: QueryRoot | undefined): ParentNode | null => {\n  switch (option) {\n    case 'document':\n      return document;\n    case 'light':\n      return host;\n    default:\n      return host.renderRoot ?? host.shadowRoot ?? host;\n  }\n};\n\nconst resolveQuery = <\n  TElement extends Element,\n  THost extends QueryHost,\n  TOptions extends QueryOptions<TElement, THost>\n>(\n  host: THost,\n  selector: string,\n  options: TOptions\n) => {\n  if (options.closest) {\n    const result = host.closest(selector);\n    return result ?? resolveFallback(options.fallback as QueryFallback<Element | null, THost>, host) ?? null;\n  }\n\n  const root = resolveRoot(host, options.from);\n\n  if (!root) {\n    return options.all\n      ? (resolveFallback(options.fallback as QueryFallback<TElement[], THost>, host) ?? [])\n      : (resolveFallback(options.fallback as QueryFallback<TElement | null, THost>, host) ?? null);\n  }\n\n  if (options.all) {\n    const elements = Array.from(root.querySelectorAll<TElement>(selector));\n    return elements.length > 0\n      ? elements\n      : (resolveFallback(options.fallback as QueryFallback<TElement[], THost>, host) ?? []);\n  }\n\n  const match = root.querySelector<TElement>(selector);\n  return match ?? resolveFallback(options.fallback as QueryFallback<TElement | null, THost>, host) ?? null;\n};\n\nconst createQueryDecorator = <\n  TElement extends Element,\n  THost extends QueryHost,\n  TOptions extends QueryOptions<TElement, THost>\n>(\n  selector: string,\n  options: TOptions\n): QueryDecorator<TElement, THost, TOptions> => {\n  type Result = QueryReturnType<TElement, THost, TOptions>;\n\n  return (\n    _target: ClassAccessorDecoratorTarget<THost, Result> | undefined,\n    context: ClassFieldDecoratorContext<THost, Result> | ClassAccessorDecoratorContext<THost, Result>\n  ): ClassAccessorDecoratorResult<THost, Result> | undefined => {\n    if (context.kind === 'accessor') {\n      const descriptor: ClassAccessorDecoratorResult<THost, Result> = {\n        get(this: THost) {\n          return resolveQuery<TElement, THost, TOptions>(this, selector, options) as Result;\n        },\n        set(_value: Result) {\n          // Readonly accessor\n        }\n      };\n      return descriptor;\n    }\n\n    context.addInitializer(function (this: THost) {\n      Object.defineProperty(this, context.name, {\n        configurable: true,\n        enumerable: true,\n        get: () => resolveQuery<TElement, THost, TOptions>(this, selector, options) as Result\n      });\n    });\n\n    return;\n  };\n};\n\nexport function Query<\n  TElement extends Element,\n  THost extends QueryHost,\n  TOptions extends QueryOptions<TElement, THost>\n>(selector: string, userOptions: TOptions): QueryDecorator<TElement, THost, TOptions>;\n\nexport function Query<TElement extends Element = Element, THost extends QueryHost = QueryHost>(\n  selector: string\n): QueryDecorator<TElement, THost, QuerySingleOptions<TElement, THost>>;\n\nexport function Query<TElement extends Element = Element, THost extends QueryHost = QueryHost>(\n  selector: string,\n  userOptions?: QueryOptions<TElement, THost>\n) {\n  if (!selector) {\n    throw new Error('@Query requires a selector.');\n  }\n\n  if (userOptions) {\n    const merged = { ...defaultOptions, ...userOptions } as QueryOptions<TElement, THost>;\n    return createQueryDecorator<TElement, THost, typeof merged>(selector, merged);\n  }\n\n  const merged = defaultOptions as QuerySingleOptions<TElement, THost>;\n  return createQueryDecorator<TElement, THost, typeof merged>(selector, merged);\n}\n","type RenderHost = HTMLElement & {\n  requestRender?(): void;\n  render?(): void;\n};\n\nconst renderQueue = new WeakMap<RenderHost, boolean>();\n\nconst scheduleRender = (instance: RenderHost): void => {\n  if (typeof instance.requestRender === 'function') {\n    instance.requestRender();\n    return;\n  }\n\n  if (typeof instance.render !== 'function') {\n    return;\n  }\n\n  if (renderQueue.get(instance)) {\n    return;\n  }\n\n  renderQueue.set(instance, true);\n\n  requestAnimationFrame(() => {\n    renderQueue.set(instance, false);\n\n    instance.render?.();\n  });\n};\n\nconst defaultCompare = <TValue>(previous: TValue, next: TValue): boolean => previous === next;\n\ninterface WatchOptions<TValue, THost extends RenderHost> {\n  compare?: (previous: TValue, next: TValue) => boolean;\n  onChange?: (this: THost, next: TValue, previous: TValue) => void;\n  transform?: (this: THost, initial: TValue) => TValue;\n}\n\nexport function Watch<TValue, THost extends RenderHost = RenderHost>(options: WatchOptions<TValue, THost> = {}) {\n  const { compare = defaultCompare, onChange, transform } = options;\n\n  return (\n    accessor: ClassAccessorDecoratorTarget<THost, TValue>,\n    context: ClassAccessorDecoratorContext<THost, TValue>\n  ): ClassAccessorDecoratorResult<THost, TValue> => {\n    if (context.kind !== 'accessor') {\n      throw new Error('@Watch requires the \"accessor\" keyword on the property.');\n    }\n\n    return {\n      get(this: THost): TValue {\n        return accessor.get.call(this);\n      },\n      set(this: THost, value: TValue): void {\n        const previous = accessor.get.call(this);\n\n        if (compare(previous, value)) {\n          return;\n        }\n\n        accessor.set.call(this, value);\n\n        if (onChange) {\n          onChange.call(this, value, previous);\n        }\n\n        scheduleRender(this);\n      },\n      init(this: THost, initialValue: TValue): TValue {\n        if (transform) {\n          return transform.call(this, initialValue);\n        }\n\n        return initialValue;\n      }\n    };\n  };\n}\n"],"mappings":"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","names":["styleCache","Map","normalizeTemplate","template","fetchStyles","urls","Promise","all","map","url","cached","get","request","fetch","then","response","ok","text","catch","set","Component","options","Base","_context","tag","styles","styleUrls","observedAttributes","shadowMode","autoSlot","Error","templateFn","Decorated","parent","Array","isArray","own","from","Set","args","attachShadow","mode","renderRoot","shadow","connectedCallback","prototype","call","finally","requestRender","disconnectedCallback","attributeChangedCallback","name","oldValue","newValue","onAttributeChange","requestAnimationFrame","length","fetched","inlineStyles","filter","Boolean","join","root","templateResult","render","styleTemplate","html","slotTemplate","completeTemplate","commit","afterRender","wrapRender","fragment","document","createDocumentFragment","tempDiv","createElement","append","childNodes","customElements","define","lifecycleHooks","connectedCallback","WeakMap","disconnectedCallback","cleanupRegistry","addLifecycleHook","instance","hookName","handler","store","callbacks","get","Set","set","original","args","forEach","callback","apply","undefined","add","registerCleanup","cleanup","registered","fn","error","console","delete","resolveTarget","host","target","EventTarget","document","window","renderRoot","shadowRoot","normalizeOptions","selectorOrOptions","selector","buildOptions","options","prevent","stop","stopImmediate","once","passive","capture","when","Listen","eventName","Error","listenConfig","originalMethod","context","addInitializer","attached","attach","addEventListener","warn","String","eventOptions","event","typedEvent","preventDefault","stopImmediatePropagation","stopPropagation","matched","path","composedPath","find","node","Element","matches","call","targetNode","removeEventListener","queueMicrotask","DismissController","options","event","owner","content","triggers","path","composedPath","some","node","Element","hasAttribute","includes","trigger","key","preventDefault","active","document","activeElement","contains","onDismiss","connect","context","filter","el","HTMLElement","addEventListener","disconnect","removeEventListener","registry","WeakMap","toDismissContext","host","options","disabled","resolved","resolve","owner","HTMLElement","content","triggers","filter","element","createOutsideClickHandle","onDismiss","controller","DismissController","event","call","update","context","disconnect","connect","registerOutsideClickHandle","handle","handles","get","Set","set","add","updateOutsideClickHandles","forEach","disconnectOutsideClickHandles","lifecycleApplied","WeakSet","wrapMethod","host","name","hook","callHookFirst","original","args","call","result","apply","ensureLifecycle","has","add","updateOutsideClickHandles","disconnectOutsideClickHandles","OutsideClick","options","originalMethod","context","addInitializer","resolve","owner","content","triggers","handle","createOutsideClickHandle","event","disabled","registerOutsideClickHandle","isConnected","renderQueue","WeakMap","cleanupRegistry","observerRegistry","internalMutations","scheduleRender","instance","requestRender","render","get","set","requestAnimationFrame","delete","toKebabCase","value","String","replace","toLowerCase","registerCleanup","cleanup","callbacks","Set","original","disconnectedCallback","args","registered","forEach","callback","error","console","apply","undefined","add","markInternalMutation","host","attribute","attributes","isInternalMutation","hasAttribute","has","size","observeAttribute","handler","entry","Map","observer","MutationObserver","records","record","attributeName","listeners","currentValue","target","getAttribute","listener","observe","disconnect","updateAttribute","removeAttribute","setAttribute","resolveType","type","Boolean","Number","Object","Array","typeParsers","boolean","number","parsed","isNaN","json","JSON","parse","warn","string","typeFormatters","stringify","defaultCompare","previous","next","Prop","options","reflect","format","defaultValue","compare","onChange","onAttributeChange","resolvedType","parseValue","call","formatValue","accessor","context","kind","Error","name","addInitializer","rawValue","formatted","init","initialValue","defaultOptions","all","closest","from","fallback","resolveFallback","host","resolveRoot","option","document","renderRoot","shadowRoot","resolveQuery","selector","options","result","root","elements","Array","querySelectorAll","length","match","querySelector","createQueryDecorator","_target","context","kind","descriptor","get","set","_value","addInitializer","Object","defineProperty","name","configurable","enumerable","Query","userOptions","Error","merged","renderQueue","WeakMap","scheduleRender","instance","requestRender","render","get","set","requestAnimationFrame","defaultCompare","previous","next","Watch","options","compare","onChange","transform","accessor","context","kind","Error","call","value","init","initialValue"]}