{"version":3,"sources":["../../../../src/elements/useParentElement/core.ts"],"sourcesContent":["import { type Observable, type OpaqueObject, ObservableHint, observable } from \"@legendapp/state\";\nimport { get, createObserve } from \"@usels/core\";\nimport type { MaybeEventTarget } from \"../../types\";\n\n/**\n * Framework-agnostic reactive parent-element tracker.\n *\n * Tracks the `parentElement` of a DOM node. Accepts `Ref$`, `Observable<Element|null>`,\n * or a raw `Element`. When the input is a `Ref$` or `Observable`, the parent is\n * re-read reactively whenever the underlying element reference changes.\n *\n * > NOTE: For a plain (non-Observable) element, the parent is read at construction\n * > time only — subsequent DOM moves are not detected. Use `Ref$` or `Observable<Element>`\n * > for dynamic parent tracking.\n *\n * `Document` / `Window` have no `parentElement`, so they resolve to `null`.\n *\n * @returns `Observable<OpaqueObject<HTMLElement | SVGElement> | null>` — current parent, wrapped opaquely.\n */\nexport function createParentElement(\n  element?: MaybeEventTarget\n): Observable<OpaqueObject<HTMLElement | SVGElement> | null> {\n  const parent$ = observable<OpaqueObject<HTMLElement | SVGElement> | null>(null);\n\n  createObserve(() => {\n    const el = element ? get(element) : null;\n    // Document / Window have no parentElement → null (SSR-safe)\n    const parent = (el as HTMLElement | null)?.parentElement ?? null;\n    parent$.set(\n      parent ? ObservableHint.opaque(parent as unknown as HTMLElement | SVGElement) : null\n    );\n  });\n\n  return parent$;\n}\n"],"mappings":"AAAA,SAA6C,gBAAgB,kBAAkB;AAC/E,SAAS,KAAK,qBAAqB;AAkB5B,SAAS,oBACd,SAC2D;AAC3D,QAAM,UAAU,WAA0D,IAAI;AAE9E,gBAAc,MAAM;AAClB,UAAM,KAAK,UAAU,IAAI,OAAO,IAAI;AAEpC,UAAM,SAAU,IAA2B,iBAAiB;AAC5D,YAAQ;AAAA,MACN,SAAS,eAAe,OAAO,MAA6C,IAAI;AAAA,IAClF;AAAA,EACF,CAAC;AAED,SAAO;AACT;","names":[]}