{"version":3,"names":["contains","getNodeChildren","isOutsideMenuEvent","currentTarget","relatedTarget","params","popupElement","viewportElement","rootRef","tree","nodeId","nodeChildrenContains","nodesRef","current","some","node","context","elements","floating","floatingElement","hasAttribute"],"sources":["is-outside-menu-event.ts"],"sourcesContent":["/**\n * Solid 2 port of Base UI React's `isOutsideMenuEvent` helper\n * (`packages/react/src/navigation-menu/utils/isOutsideMenuEvent.ts`).\n *\n * Determines whether a focus event's `relatedTarget` is outside the navigation\n * menu surface. Used by the trigger + link parts to close the popup on\n * focus-out.\n */\n\nimport type { FloatingTreeStoreType } from \"../../internals/floating-ui/types\";\nimport { contains } from \"../../internals/floating-ui/utils/element\";\nimport { getNodeChildren } from \"../../internals/floating-ui/utils/nodes\";\n\ninterface Targets {\n\tcurrentTarget: HTMLElement | null;\n\trelatedTarget: HTMLElement | null;\n}\n\ninterface Params {\n\tpopupElement: HTMLElement | null;\n\tviewportElement?: HTMLElement | null | undefined;\n\trootRef: { current: HTMLElement | null };\n\ttree: FloatingTreeStoreType | null;\n\tnodeId: string | undefined;\n}\n\nexport function isOutsideMenuEvent(\n\t{ currentTarget, relatedTarget }: Targets,\n\tparams: Params,\n): boolean {\n\tconst { popupElement, viewportElement, rootRef, tree, nodeId } = params;\n\n\tconst nodeChildrenContains = tree\n\t\t? getNodeChildren(tree.nodesRef.current, nodeId).some((node) =>\n\t\t\t\tcontains(\n\t\t\t\t\t(node.context?.elements as { floating?: Element | null } | undefined)\n\t\t\t\t\t\t?.floating ?? null,\n\t\t\t\t\trelatedTarget,\n\t\t\t\t),\n\t\t\t)\n\t\t: false;\n\n\tif (!popupElement) {\n\t\treturn !contains(rootRef.current, relatedTarget) && !nodeChildrenContains;\n\t}\n\n\tconst floatingElement = popupElement || viewportElement;\n\n\treturn (\n\t\t!contains(floatingElement, currentTarget) &&\n\t\t!contains(floatingElement, relatedTarget) &&\n\t\t!contains(rootRef.current, relatedTarget) &&\n\t\t!nodeChildrenContains &&\n\t\t!(\n\t\t\tcontains(floatingElement, relatedTarget) &&\n\t\t\trelatedTarget?.hasAttribute(\"data-quoin-focus-guard\")\n\t\t)\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,QAAQ,QAAQ,2CAA2C;AACpE,SAASC,eAAe,QAAQ,yCAAyC;AAezE,OAAO,SAASC,kBAAkBA,CACjC;EAAEC,aAAa;EAAEC;AAAuB,CAAC,EACzCC,MAAc,EACJ;EACV,MAAM;IAAEC,YAAY;IAAEC,eAAe;IAAEC,OAAO;IAAEC,IAAI;IAAEC;EAAO,CAAC,GAAGL,MAAM;EAEvE,MAAMM,oBAAoB,GAAGF,IAAI,GAC9BR,eAAe,CAACQ,IAAI,CAACG,QAAQ,CAACC,OAAO,EAAEH,MAAM,CAAC,CAACI,IAAI,CAAEC,IAAI,IACzDf,QAAQ,CACNe,IAAI,CAACC,OAAO,EAAEC,QAAQ,EACpBC,QAAQ,IAAI,IAAI,EACnBd,aACD,CACD,CAAC,GACA,KAAK;EAER,IAAI,CAACE,YAAY,EAAE;IAClB,OAAO,CAACN,QAAQ,CAACQ,OAAO,CAACK,OAAO,EAAET,aAAa,CAAC,IAAI,CAACO,oBAAoB;EAC1E;EAEA,MAAMQ,eAAe,GAAGb,YAAY,IAAIC,eAAe;EAEvD,OACC,CAACP,QAAQ,CAACmB,eAAe,EAAEhB,aAAa,CAAC,IACzC,CAACH,QAAQ,CAACmB,eAAe,EAAEf,aAAa,CAAC,IACzC,CAACJ,QAAQ,CAACQ,OAAO,CAACK,OAAO,EAAET,aAAa,CAAC,IACzC,CAACO,oBAAoB,IACrB,EACCX,QAAQ,CAACmB,eAAe,EAAEf,aAAa,CAAC,IACxCA,aAAa,EAAEgB,YAAY,CAAC,wBAAwB,CAAC,CACrD;AAEH","ignoreList":[]}