{"version":3,"names":["getSide","ownerDocument","ownerWindow","DEFAULT_SIDES","sideX","sideY","adaptiveOriginMiddleware","name","fn","state","x","rawX","y","rawY","rects","floating","floatRect","elements","platform","strategy","placement","win","styles","getComputedStyle","hasTransition","transitionDuration","data","offsetParent","getOffsetParent","offsetDimensions","width","height","visualViewport","doc","documentElement","clientWidth","clientHeight","isElement","getDimensions","currentSide"],"sources":["adaptive-origin-middleware.ts"],"sourcesContent":["/**\n * Solid 2 port of Base UI React's `adaptiveOrigin` middleware\n * (`packages/react/src/utils/adaptiveOriginMiddleware.ts`).\n *\n * When the floating element has a CSS transition active, this middleware\n * rewrites the positioning coordinates so the popup anchors to the side\n * opposite the transition's starting origin. That lets consumers animate\n * `transform` / `opacity` without the popup jumping from a stale rect\n * while the transition is mid-flight.\n */\nimport type { Middleware } from \"@floating-ui/dom\";\nimport { getSide } from \"@floating-ui/utils\";\nimport { ownerDocument } from \"../dom/owner-document\";\nimport { ownerWindow } from \"../dom/owner-window\";\n\nexport const DEFAULT_SIDES = {\n\tsideX: \"left\",\n\tsideY: \"top\",\n} as const;\n\nexport const adaptiveOriginMiddleware: Middleware = {\n\tname: \"adaptiveOrigin\",\n\tasync fn(state) {\n\t\tconst {\n\t\t\tx: rawX,\n\t\t\ty: rawY,\n\t\t\trects: { floating: floatRect },\n\t\t\telements: { floating },\n\t\t\tplatform,\n\t\t\tstrategy,\n\t\t\tplacement,\n\t\t} = state;\n\n\t\tconst win = ownerWindow(floating);\n\t\tconst styles = win.getComputedStyle(floating);\n\t\tconst hasTransition =\n\t\t\tstyles.transitionDuration !== \"0s\" && styles.transitionDuration !== \"\";\n\n\t\tif (!hasTransition) {\n\t\t\treturn {\n\t\t\t\tx: rawX,\n\t\t\t\ty: rawY,\n\t\t\t\tdata: DEFAULT_SIDES,\n\t\t\t};\n\t\t}\n\n\t\tconst offsetParent = await platform.getOffsetParent?.(floating);\n\n\t\tlet offsetDimensions = { width: 0, height: 0 };\n\n\t\tif (strategy === \"fixed\" && win?.visualViewport) {\n\t\t\toffsetDimensions = {\n\t\t\t\twidth: win.visualViewport.width,\n\t\t\t\theight: win.visualViewport.height,\n\t\t\t};\n\t\t} else if (offsetParent === win) {\n\t\t\tconst doc = ownerDocument(floating);\n\t\t\toffsetDimensions = {\n\t\t\t\twidth: doc.documentElement.clientWidth,\n\t\t\t\theight: doc.documentElement.clientHeight,\n\t\t\t};\n\t\t} else if (await platform.isElement?.(offsetParent)) {\n\t\t\toffsetDimensions = await platform.getDimensions(offsetParent as Element);\n\t\t}\n\n\t\tconst currentSide = getSide(placement);\n\t\tlet x = rawX;\n\t\tlet y = rawY;\n\n\t\tif (currentSide === \"left\") {\n\t\t\tx = offsetDimensions.width - (rawX + floatRect.width);\n\t\t}\n\t\tif (currentSide === \"top\") {\n\t\t\ty = offsetDimensions.height - (rawY + floatRect.height);\n\t\t}\n\n\t\tconst sideX = currentSide === \"left\" ? \"right\" : DEFAULT_SIDES.sideX;\n\t\tconst sideY = currentSide === \"top\" ? \"bottom\" : DEFAULT_SIDES.sideY;\n\t\treturn {\n\t\t\tx,\n\t\t\ty,\n\t\t\tdata: {\n\t\t\t\tsideX,\n\t\t\t\tsideY,\n\t\t\t},\n\t\t};\n\t},\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,aAAa,QAAQ,uBAAuB;AACrD,SAASC,WAAW,QAAQ,qBAAqB;AAEjD,OAAO,MAAMC,aAAa,GAAG;EAC5BC,KAAK,EAAE,MAAM;EACbC,KAAK,EAAE;AACR,CAAU;AAEV,OAAO,MAAMC,wBAAoC,GAAG;EACnDC,IAAI,EAAE,gBAAgB;EACtB,MAAMC,EAAEA,CAACC,KAAK,EAAE;IACf,MAAM;MACLC,CAAC,EAAEC,IAAI;MACPC,CAAC,EAAEC,IAAI;MACPC,KAAK,EAAE;QAAEC,QAAQ,EAAEC;MAAU,CAAC;MAC9BC,QAAQ,EAAE;QAAEF;MAAS,CAAC;MACtBG,QAAQ;MACRC,QAAQ;MACRC;IACD,CAAC,GAAGX,KAAK;IAET,MAAMY,GAAG,GAAGnB,WAAW,CAACa,QAAQ,CAAC;IACjC,MAAMO,MAAM,GAAGD,GAAG,CAACE,gBAAgB,CAACR,QAAQ,CAAC;IAC7C,MAAMS,aAAa,GAClBF,MAAM,CAACG,kBAAkB,KAAK,IAAI,IAAIH,MAAM,CAACG,kBAAkB,KAAK,EAAE;IAEvE,IAAI,CAACD,aAAa,EAAE;MACnB,OAAO;QACNd,CAAC,EAAEC,IAAI;QACPC,CAAC,EAAEC,IAAI;QACPa,IAAI,EAAEvB;MACP,CAAC;IACF;IAEA,MAAMwB,YAAY,GAAG,MAAMT,QAAQ,CAACU,eAAe,GAAGb,QAAQ,CAAC;IAE/D,IAAIc,gBAAgB,GAAG;MAAEC,KAAK,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAC;IAE9C,IAAIZ,QAAQ,KAAK,OAAO,IAAIE,GAAG,EAAEW,cAAc,EAAE;MAChDH,gBAAgB,GAAG;QAClBC,KAAK,EAAET,GAAG,CAACW,cAAc,CAACF,KAAK;QAC/BC,MAAM,EAAEV,GAAG,CAACW,cAAc,CAACD;MAC5B,CAAC;IACF,CAAC,MAAM,IAAIJ,YAAY,KAAKN,GAAG,EAAE;MAChC,MAAMY,GAAG,GAAGhC,aAAa,CAACc,QAAQ,CAAC;MACnCc,gBAAgB,GAAG;QAClBC,KAAK,EAAEG,GAAG,CAACC,eAAe,CAACC,WAAW;QACtCJ,MAAM,EAAEE,GAAG,CAACC,eAAe,CAACE;MAC7B,CAAC;IACF,CAAC,MAAM,IAAI,MAAMlB,QAAQ,CAACmB,SAAS,GAAGV,YAAY,CAAC,EAAE;MACpDE,gBAAgB,GAAG,MAAMX,QAAQ,CAACoB,aAAa,CAACX,YAAuB,CAAC;IACzE;IAEA,MAAMY,WAAW,GAAGvC,OAAO,CAACoB,SAAS,CAAC;IACtC,IAAIV,CAAC,GAAGC,IAAI;IACZ,IAAIC,CAAC,GAAGC,IAAI;IAEZ,IAAI0B,WAAW,KAAK,MAAM,EAAE;MAC3B7B,CAAC,GAAGmB,gBAAgB,CAACC,KAAK,IAAInB,IAAI,GAAGK,SAAS,CAACc,KAAK,CAAC;IACtD;IACA,IAAIS,WAAW,KAAK,KAAK,EAAE;MAC1B3B,CAAC,GAAGiB,gBAAgB,CAACE,MAAM,IAAIlB,IAAI,GAAGG,SAAS,CAACe,MAAM,CAAC;IACxD;IAEA,MAAM3B,KAAK,GAAGmC,WAAW,KAAK,MAAM,GAAG,OAAO,GAAGpC,aAAa,CAACC,KAAK;IACpE,MAAMC,KAAK,GAAGkC,WAAW,KAAK,KAAK,GAAG,QAAQ,GAAGpC,aAAa,CAACE,KAAK;IACpE,OAAO;MACNK,CAAC;MACDE,CAAC;MACDc,IAAI,EAAE;QACLtB,KAAK;QACLC;MACD;IACD,CAAC;EACF;AACD,CAAC","ignoreList":[]}