@react-hive/honey-layout 10.4.1 → 10.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.dev.cjs","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAsU;AAChR;;AAEtD;AACA;AACA;AACA;AACA,IAAI;AACJ,mBAAmB,+DAAW;AAC9B,wBAAwB,oEAAgB;AACxC,sBAAsB,iEAAa;AACnC,eAAe,2DAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gEAAY;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,kBAAkB,4BAA4B;AAC9C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,4DAAQ;AACd,wBAAwB,oEAAgB;AACxC;AACA;AACA,6BAA6B,oEAAgB;AAC7C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,4BAA4B,oEAAgB;AAC5C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM,EAAE,4DAAQ;AAChB;AACA;AACA;AACA,0BAA0B,oEAAgB;AAC1C;AACA;AACA;AACA;AACA,iBAAiB,oEAAgB;AACjC,mBAAmB,iEAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,uDAAG;AAC1B,uBAAuB,uDAAG;;AAE1B;AACA;AACA;AACA;AACA;AACA,mBAAmB,yDAAK;;AAExB;AACA;AACA;AACA;AACA,qDAAqD,gEAAY;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,CAAC;;AAED;AACA,mGAAmG,gEAAY,qEAAqE,gEAAY,oEAAoE,2DAAO;AAC3Q;AACA;AACA,aAAa,gEAAY,8CAA8C,iFAA6B;AACpG;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,4BAA4B,0DAAU;AACtC;AACA;AACA,QAAQ,EAAE,4DAAQ;AAClB,4EAA4E,0DAAU;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qEAAiB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,2DAAO;AAChD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gEAAY;AACtC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,MAAM,gEAAY;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,EAAE,4DAAQ;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2DAAO;AAC1B,8BAA8B,+DAAW;AACzC,8BAA8B,2DAAO;AACrC;AACA,sGAAsG,wEAAoB,sBAAsB,yEAAqB;AACrK;AACA;AACA,mCAAmC,6EAAyB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qEAAiB;AACvC;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F,+DAAW;AAC1G;AACA;AACA;AACA,mCAAmC,+DAAW;AAC9C;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,+DAAW;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qDAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ,EAAE,4DAAQ;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,uDAAG;AAClB,eAAe,uDAAG;AAClB,eAAe,uDAAG;AAClB,eAAe,uDAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,4BAA4B,oEAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,+BAA+B,KAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,EAAE,4DAAQ;AAClB;AACA;AACA,uBAAuB,oEAAgB;AACvC,4BAA4B,oEAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,+DAAW;AACzB;AACA;AACA,0BAA0B,2DAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2DAAO;AACpC,2BAA2B,uDAAG;AAC9B,0BAA0B,uDAAG;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,eAAe,2DAAO;AACtB,oBAAoB,gEAAY;AAChC,qBAAqB,+DAAW;AAChC;AACA;AACA,mBAAmB,4DAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ,EAAE,4DAAQ;AAClB;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAW,CAAC,2DAAO;AAC3C,uBAAuB,mEAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yDAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAK;AAC9B;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ,EAAE,4DAAQ;AAClB;AACA;AACA;AACA;AACA,wBAAwB,+DAAW;AACnC,uBAAuB,mEAAe;AACtC;AACA;AACA,wBAAwB,4DAAQ;AAChC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,2DAAO;AACpD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,wBAAwB;AACxB;AACA,QAAQ,EAAE,4DAAQ;AAClB;AACA,mBAAmB,2DAAO;AAC1B,wBAAwB,gEAAY;AACpC,sBAAsB,+DAAW;AACjC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,sCAAsC,uDAAG;AACzC,qCAAqC,uDAAG;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uDAAG;AACxB,qBAAqB,uDAAG;AACxB,qBAAqB,uDAAG;AACxB,qBAAqB,uDAAG;AACxB;AACA,iFAAiF,uDAAG;AACpF,UAAU;AACV,mFAAmF,uDAAG;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEsH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxhCmM;AAC/O;AACwQ;AACpR;;AAE9D;AACA,cAAc,wEAAkB;AAChC;AACA;AACA;AACA;AACA,oBAAoB,qEAAa;AACjC;AACA;AACA,yBAAyB,wDAAK,2BAA2B,wDAAK;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,iEAAS;AACnB;;AAEA;AACA;AACA,OAAO,qEAAa;AACpB,WAAW,+DAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,eAAe,wDAAK;AACpB,eAAe,wDAAK;;AAEpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,+DAAY;AAC3C;AACA,cAAc,iEAAS;AACvB,OAAO,gEAAQ;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,iEAAS;AAC5E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+DAAY;AAC1B;AACA;AACA,UAAU,iEAAS;AACnB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,2HAA2H,+DAAY;AACvI;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAS;AACzB,sCAAsC,iEAAS,iBAAiB,iEAAS;AACzE;AACA,wBAAwB,uEAAe;AACvC;AACA;AACA;AACA,kBAAkB,wEAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iEAAS;AAC5B,sBAAsB,uEAAe;AACrC;AACA;AACA,SAAS,mEAAgB;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,qBAAqB,qEAAa;AAClC;AACA,iCAAiC,0EAAkB;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,0BAA0B,0EAAkB;AAC5C,8BAA8B,kEAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+DAAY;AAC1B,kBAAkB,+DAAY;AAC9B,kCAAkC,qEAAa;AAC/C;AACA,QAAQ,mEAAW,6BAA6B,yEAAiB;AACjE,eAAe,qEAAa;AAC5B;AACA,QAAQ,qEAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,wHAAwH,+DAAY;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,0EAAkB;AACjC,iBAAiB,qEAAa;AAC9B;AACA,gBAAgB,sDAAG;AACnB,iBAAiB,sDAAG;AACpB;AACA;AACA,MAAM,wEAAkB;AACxB,SAAS,sDAAG;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,iEAAS;AACvB,eAAe,0EAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gEAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qEAAa,gCAAgC,+DAAY;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,2BAA2B,0EAAkB;AAC7C,IAAI,SAAS,iEAAS;AACtB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mEAAgB;AACzB;AACA;AACA,qBAAqB,qEAAa;AAClC,kCAAkC,iEAAS,gBAAgB,6EAAqB;AAChF;AACA;AACA,SAAS,wEAAkB;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4EAAoB,kCAAkC,iEAAS,QAAQ,mEAAW;AACjG;AACA,yBAAyB,wEAAkB;AAC3C,qCAAqC,qEAAa;;AAElD;AACA,SAAS,iEAAS,kBAAkB,6EAAqB;AACzD,0BAA0B,wEAAkB;AAC5C,oCAAoC,yEAAiB;AACrD;AACA;AACA;AACA,uSAAuS,yEAAiB;AACxT;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,kBAAkB,qEAAa;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,sEAAsE,kEAAU;AAChF;AACA;AACA;AACA;AACA,kBAAkB,sDAAG;AACrB,oBAAoB,sDAAG;AACvB,qBAAqB,sDAAG;AACxB,mBAAmB,sDAAG;AACtB;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,qEAAa;AAC/C,0BAA0B,0EAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+DAAY;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mEAAW,6BAA6B,yEAAiB;AACjE,eAAe,qEAAa;AAC5B;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,wHAAwH,+DAAY;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,wEAAkB;AAC3B;;AAEA;AACA,OAAO,qEAAa,aAAa,wEAAkB;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,0EAAkB;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,iEAAS;AACvB,MAAM,kEAAU;AAChB;AACA;AACA,OAAO,qEAAa;AACpB,0BAA0B,qEAAa;AACvC,+BAA+B,6EAAqB;AACpD,UAAU,iEAAS;AACnB;AACA;AACA,wBAAwB,qEAAa;AACrC;AACA;AACA;AACA;AACA,yBAAyB,sEAAc;AACvC;AACA;AACA,sBAAsB,6EAAqB,uDAAuD,yEAAiB;AACnH;AACA;AACA,yBAAyB,0EAAkB;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,wEAAkB;AAC3B;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,0EAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,wDAAK;AAC1B,uBAAuB,wDAAK;AAC5B,wBAAwB,wDAAK;AAC7B,sBAAsB,wDAAK;AAC3B;AACA;AACA;AACA,iBAAiB,sDAAG,IAAI,sDAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,0EAA0E,4EAAoB,wBAAwB,4EAAoB;AAC1I;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAgB;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qDAAQ;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4DAAe;;AAErC;AACA;AACA;AACA;AACA;AACA,cAAc,oDAAO;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mDAAM;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mDAAM;;AAEnB;AACA;AACA;AACA;AACA;AACA,aAAa,mDAAM;;AAEnB;AACA;AACA;AACA;AACA;AACA,cAAc,oDAAO;;AAErB;AACA;AACA;AACA;AACA;AACA,eAAe,qDAAQ;;AAEvB;AACA;AACA;AACA,mBAAmB,yDAAY;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kEAAiB;AAC1B;AACA;AACA,GAAG;AACH;;AAE4I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxwBiG;AAC9H;AAChF;AACS;AACF;;AAEtC;;AAEA;AACA,uBAAuB,kDAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,UAAU;AAC/B,aAAa;AACb;AACA;AACA;AACA,qBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAc,yCAAY;AAC1B;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI;AACV;AACA;AACA;AACA,IAAI;AACJ,0BAA0B,2CAAc;AACxC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,GAAG;AACH,kDAAkD,2CAAc;AAChE;AACA;AACA;AACA,sCAAsC,2CAAc;AACpD,oCAAoC,2CAAc;AAClD,uBAAuB,8CAAiB;AACxC;AACA;AACA;AACA;AACA,GAAG;AACH,sBAAsB,8CAAiB;AACvC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uBAAuB,yCAAY;AACnC,sBAAsB,yCAAY;AAClC,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA,iBAAiB,8CAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iEAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAkB;AAC1B;AACA,SAAS;AACT;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,uBAAuB,yCAAY;AACnC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,eAAe,0CAAa;AAC5B;AACA;AACA;AACA;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA,GAAG;AACH,yBAAyB,0CAAa;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,iBAAiB,uDAAO;AACxB;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,eAAe,uDAAO;AACtB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,wDAAQ;AACb;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,uDAAO;AACZ;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK,4DAAY;AACjB;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,sDAAM;AACX;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,sDAAM;AACX;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,+DAAe;AACpB;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,sDAAM;AACX;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,wDAAQ;AACb;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEiG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClXnE;AACsxB;AAC7vB;AAC0H;AACvH;AACrB;AAC8E;AAC4E;AACjI;;AAE/D;AACA;AACA;AACA;AACA;AACA,qBAAqB,yCAAY;AACjC,oBAAoB,8CAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gDAAmB;AAC5D,oBAAoB;AACpB,sBAAsB;AACtB;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,4BAA4B,2CAAc;AAC1C,mBAAmB,8CAAiB;AACpC;AACA,GAAG;AACH,qBAAqB,8CAAiB;AACtC;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,cAAc,0CAAa;AAC3B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,sBAAsB,sDAAG;AACzB,WAAW,0CAAa;AACxB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,6CAAgB;AACtB,4BAA4B,2CAAc;AAC1C,uBAAuB,yCAAY;AACnC,cAAc,8CAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+CAAkB;AAC1C;AACA,sBAAsB,sDAAG;AACzB;AACA,GAAG;AACH;AACA,sCAAsC,gDAAmB;AACzD;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,wDAAwD,2CAAc;AACtE;AACA,qBAAqB,wEAAc;AACnC,sBAAsB,yCAAY;AAClC;AACA,uBAAuB,0CAAa;AACpC;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,qBAAqB,yEAAe;AACpC,qBAAqB,yEAAe;AACpC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,sBAAsB,2EAAiB;AACvC,wEAAwE,6EAAmB;AAC3F;AACA,8FAA8F,6EAAmB;AACjH,qCAAqC,+EAAqB;AAC1D;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4EAAkB,gHAAgH,6EAAmB;AAC9K;AACA;AACA,mBAAmB,kFAAwB;AAC3C;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR,oBAAoB,kFAAwB;AAC5C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sCAAsC,gFAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sDAAG;AACzB;AACA,2BAA2B,sDAAG;AAC9B;AACA;AACA,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA,mCAAmC,6CAAgB;AACnD;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,EAAE,6CAAgB;AACtB;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,KAAK,yLAAK;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2CAAc;AACpC,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA,0EAA0E,aAAa;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,eAAe;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,6CAAgB;AACnD;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI;AACV;AACA,IAAI;AACJ,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA,4BAA4B,2CAAc;;AAE1C;AACA,EAAE,+EAAqB;AACvB;AACA,kBAAkB,wEAAgB;AAClC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,sBAAsB,uDAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,uDAAuD,sDAAG;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,gBAAgB,sDAAG;AACxB;AACA;AACA,KAAK,gBAAgB,sDAAG;AACxB;AACA,6BAA6B,sDAAG;AAChC;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,gDAAmB;AAC5D,yCAAyC,gDAAmB;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAgB;AAC/C;;AAEA;AACA;AACA;AACA,8BAA8B,6CAAgB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,sBAAsB,sDAAG;AACzB,WAAW,0CAAa;AACxB;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,mBAAmB,yCAAY;AAC/B,kBAAkB,8CAAiB;AACnC;AACA,GAAG;AACH,qBAAqB,8CAAiB;AACtC;AACA,GAAG;AACH,mBAAmB,2CAAc;AACjC,sBAAsB,sDAAG;AACzB,WAAW,0CAAa;AACxB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,gFAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,yBAAyB,sEAAY;AACrC,mBAAmB,sEAAY;AAC/B,kBAAkB,sEAAY;AAC9B,oBAAoB,sEAAY;AAChC,yBAAyB,yCAAY;AACrC,qBAAqB,yCAAY;AACjC,qBAAqB,yCAAY;AACjC,yBAAyB,yCAAY;AACrC,4BAA4B,yCAAY;AACxC,4CAA4C,yCAAY;AACxD,6BAA6B,yCAAY,SAAS;AAClD,gCAAgC,yCAAY;AAC5C,sBAAsB,wEAAc;AACpC;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qEAAa;AAC9B;AACA;AACA;AACA;AACA,GAAG;AACH,yBAAyB,8CAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH,kCAAkC,wEAAc;AAChD;AACA;AACA,GAAG;AACH,6BAA6B,wEAAc;AAC3C;AACA,mBAAmB,qEAAa;AAChC;AACA;AACA;AACA;AACA,GAAG;AACH,+BAA+B,wEAAc;AAC7C;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA,wBAAwB,gFAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qEAAa;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gEAAgE,kEAAU;AAC1E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA,UAAU,iEAAS;AACnB;AACA,qBAAqB,qEAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,0CAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,0BAA0B,gFAAsB;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA,IAAI,IAAI;AACR;;AAEA;AACA,+CAA+C,gDAAmB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,mCAAmC,6CAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,4BAA4B,6CAAgB;AAC5C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,8BAA8B,yCAAY;AAC1C,uBAAuB,8CAAiB;AACxC;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS;AACT;AACA,MAAM;AACN;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;AACH,sBAAsB,sDAAG;AACzB,WAAW,0CAAa;AACxB;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,mDAAmD,gDAAmB;AACtE;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,mBAAmB,yCAAY;AAC/B,0BAA0B,yCAAY;AACtC,uBAAuB,yCAAY;AACnC,4BAA4B,yCAAY;AACxC,uBAAuB,yCAAY;AACnC,sBAAsB,sDAAG;AACzB,WAAW,0CAAa;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ,uBAAuB,6CAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,8CAA8C,2CAAc;AAC5D,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,oEAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mEAAW;AACrB;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAAgB;AAChD,0BAA0B,2CAAc;AACxC,EAAE,+EAAqB;AACvB,QAAQ,kEAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sDAAG;AACzB;AACA;AACA,GAAG;AACH,CAAC;;AAED,mCAAmC,gDAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,sCAAsC,2CAAc;AACpD,wBAAwB,yCAAY;AACpC,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8DAAM;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH,oDAAoD,2CAAc;AAClE,2BAA2B,yCAAY;AACvC,0BAA0B,yCAAY;AACtC,0BAA0B,yCAAY;AACtC,yBAAyB,yCAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,4CAAe;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,wEAAc;AACtC;AACA,uCAAuC,uEAAiB,GAAG,wEAAkB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA,IAAI,2EAAiB;AACrB,GAAG;AACH,sBAAsB,uDAAI;AAC1B,WAAW,0CAAa;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gEAAgE,sDAAG;AACnE;AACA;AACA;AACA,YAAY,wEAAc;AAC1B;AACA;AACA,UAAU;AACV;AACA,+BAA+B,6EAAmB;AAClD;AACA;AACA;AACA,KAAK,oDAAoD,sDAAG;AAC5D;AACA;AACA,KAAK,8BAA8B,mDAAqB,yEAAyE,sDAAG;AACpI;AACA;AACA;AACA,YAAY,wEAAc;AAC1B;AACA;AACA,UAAU;AACV;AACA,+BAA+B,yEAAe;AAC9C;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA,+BAA+B,6CAAgB;;AAE/C;AACA,SAAS,0CAAa;AACtB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mEAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4EAAkB;AAC5C,MAAM,oDAAU;AAChB;AACA;AACA,SAAS,kDAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,4EAAkB;AACpC,4BAA4B,mDAAS;AACrC;AACA;AACA,WAAW,oDAAU;AACrB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,2CAA2C,6CAAgB;AAC3D,sBAAsB,sDAAG;AACzB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,oBAAoB,wEAAc;AAClC;AACA;AACA,GAAG;AACH,4BAA4B,wEAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,4EAAkB;;AAExD;AACA;AACA;AACA;AACA,mBAAmB,sEAAY;AAC/B,0BAA0B,sEAAY;AACtC,yBAAyB,sEAAY;AACrC;AACA;AACA,gCAAgC,yCAAY;AAC5C,8BAA8B,yCAAY;AAC1C,gCAAgC,yCAAY;AAC5C,2BAA2B,yCAAY;AACvC,2BAA2B,yCAAY;AACvC,yBAAyB,yCAAY;AACrC;AACA,+BAA+B,iFAAuB;AACtD,6BAA6B,wEAAc;AAC3C;AACA;AACA;AACA,uBAAuB,kDAAQ,YAAY,4EAAkB;AAC7D,GAAG;AACH,8BAA8B,wEAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAU,uBAAuB,uEAAa,CAAC,qEAAa;AACxE,UAAU,mEAAS;AACnB;AACA;AACA,uBAAuB,mEAAW;AAClC;AACA,UAAU,mEAAS;AACnB;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,UAAU,mEAAS;AACnB;AACA;AACA;AACA;AACA,gBAAgB,qEAAa;AAC7B;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA,qBAAqB,mEAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,qBAAqB,mEAAW;AAChC;AACA;AACA,uCAAuC,kEAAU,iCAAiC,kEAAU,6BAA6B,kEAAU,6BAA6B,kEAAU,8KAA8K,yEAAiB;AACzW;AACA,iBAAiB,kEAAU,sGAAsG,kEAAU;AAC3I,SAAS,KAAK,0EAAgB;AAC9B;AACA,uGAAuG,iFAAuB;AAC9H,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,yGAAyG,uEAAa,CAAC,qEAAa,4BAA4B,qEAAa;AAC7K;AACA;AACA,cAAc,qEAAa;AAC3B;AACA;AACA;AACA;AACA;AACA,cAAc,qEAAa;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,oBAAoB,qEAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,yBAAyB,yCAAY;AACrC,wBAAwB,yCAAY;AACpC;AACA;AACA,EAAE,4CAAe;AACjB;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,0EAAgB;AAC7C;AACA;AACA,aAAa,4EAAkB;AAC/B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB,qBAAqB,qEAAa;AAClC,gBAAgB,qEAAa;AAC7B,qCAAqC,uEAAa;;AAElD;AACA;AACA;AACA;AACA;AACA,2CAA2C,kEAAU;AACrD;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA,gBAAgB,qEAAa;AAC7B,qCAAqC,uEAAa;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,SAAS,wEAAc,WAAW,+EAAqB;AAC/D;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAa;AACpC,wCAAwC,kEAAU,gCAAgC,yEAAiB;AACnG;AACA,eAAe,kEAAU;AACzB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,qEAAa;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,EAAE,4CAAe;AACjB,iEAAiE;AACjE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,wBAAwB,sDAAG;AAC3B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB,uDAAI,CAAC,uDAAQ;AACnC,kDAAkD,sDAAG;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,cAAc,wEAAc;AAC5B,iCAAiC,yEAAe;AAChD;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,KAAK,0IAA0I,sDAAG;AAClJ;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,cAAc,wEAAc;AAC5B,iCAAiC,6EAAmB;AACpD;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA,mBAAmB,qEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,6CAAgB;AACrD;AACA;AACA;AACA,IAAI;AACJ,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,sBAAsB,sDAAG;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA,SAAS,qEAAa;AACtB;AACA;AACA,SAAS,qEAAa;AACtB;AACA;AACA,SAAS,2EAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,yBAAyB,yCAAY;AACrC,wBAAwB,yCAAY;AACpC,oBAAoB,0CAAa;AACjC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU,gFAAsB;AAChC;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gFAAsB;AAChC;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,qBAAqB,yCAAY;AACjC,6BAA6B,yCAAY;AACzC,wCAAwC,2CAAc;AACtD,kCAAkC,2CAAc;AAChD,uBAAuB,wEAAc;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,qCAAqC,wEAAc;AACnD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,oBAAoB,gFAAsB;AAC1C,sBAAsB,8CAAiB;AACvC;AACA;AACA,gBAAgB,iEAAS;AACzB;AACA,qBAAqB,mEAAW;AAChC,WAAW,kEAAU;AACrB;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,0CAAa;AACjC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,yBAAyB,wEAAc;AACvC;AACA,kCAAkC,yCAAY;AAC9C;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ,yBAAyB,yCAAY;AACrC,+BAA+B,wEAAc;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,sEAAY;AACpC,GAAG;AACH,sCAAsC,wEAAc;AACpD;AACA;AACA;AACA;AACA,oBAAoB,mEAAW;AAC/B;AACA,mBAAmB,mEAAW;AAC9B,GAAG;AACH,8BAA8B,wEAAc;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mEAAW;AAC9B;AACA,oBAAoB,qEAAa;AACjC,6BAA6B,iEAAS;AACtC,kCAAkC,6EAAqB;AACvD,yBAAyB,qEAAa;AACtC,UAAU,6EAAqB,iBAAiB,iEAAS;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,iEAAS,aAAa,uEAAa;AAC7D;AACA,KAAK,kEAAU;AACf;AACA;AACA,yCAAyC,kEAAU;AACnD;AACA;;AAEA;AACA,QAAQ,qEAAa;AACrB,kCAAkC,6EAAqB;AACvD,oBAAoB,wEAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,yEAAiB;AAC5D;AACA,aAAa,6EAAmB;AAChC,KAAK;AACL,QAAQ,6EAAmB,8BAA8B,6EAAmB;AAC5E;AACA;AACA,4BAA4B,yEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,qCAAqC,wEAAc;AACnD;AACA;AACA;AACA;AACA,qBAAqB,mEAAW;AAChC;AACA,mBAAmB,mEAAW;AAC9B,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,MAAM,gEAAQ;AACd;AACA,gBAAgB,qEAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,iEAAS;AACnB,oBAAoB,4EAAoB;AACxC;AACA,UAAU,iEAAS;AACnB,qCAAqC,4EAAoB;AACzD;AACA,WAAW,iEAAS;AACpB,qCAAqC,4EAAoB;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA,GAAG;AACH,oBAAoB,0CAAa;AACjC;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,kBAAkB,yCAAY,GAAG;AACjC,mBAAmB,2CAAc;AACjC;AACA,MAAM,IAAqC;AAC3C;AACA,+BAA+B,iEAAS;AACxC;AACA;AACA;AACA,oDAAoD,2CAAc;AAClE,uBAAuB,wEAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,eAAe,0CAAa;AAC5B;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2CAA2C,2CAAc;AACzD,qDAAqD,2CAAc;AACnE;AACA;AACA,0BAA0B,yCAAY;AACtC;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA,GAAG;AACH,mBAAmB,mEAAa;AAChC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,+BAA+B,8CAAiB;AAChD,sCAAsC,iEAAS;AAC/C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,8CAAiB;AACxC,QAAQ,iEAAS;AACjB;AACA;AACA;;AAEA;AACA;AACA,QAAQ,iEAAS;AACjB;AACA;AACA;AACA,sBAAsB,iEAAS;AAC/B;AACA;AACA,GAAG;AACH,eAAe,0CAAa;AAC5B;AACA;AACA;AACA;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA,GAAG;AACH,kBAAkB,0CAAa;AAC/B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,SAAS,+DAAK,MAAM,kEAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ,wBAAwB,yCAAY;AACpC,qBAAqB,yCAAY;AACjC,8BAA8B,yCAAY;AAC1C,EAAE,4CAAe;AACjB;AACA,gBAAgB,iEAAS;;AAEzB;AACA;AACA;AACA;AACA,mBAAmB,qEAAa,qDAAqD,uEAAa,CAAC,qEAAa;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA,GAAG;AACH,oBAAoB,0CAAa;AACjC;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB,mEAAW;AAChC,yBAAyB,iEAAS;AAClC;AACA;AACA;AACA,+CAA+C,2EAAiB;AAChE;AACA;AACA,UAAU,UAAU,6EAAmB;AACvC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,iEAAS;;AAEzC;AACA;AACA;AACA,yBAAyB,uEAAa;;AAEtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAU,wIAAwI,kEAAU;AACxK;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,aAAa;AAC/F;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8CAAiB;AAC7C;AACA;AACA,2BAA2B,8CAAiB;AAC5C;AACA;AACA,uBAAuB,8CAAiB;AACxC;AACA;AACA,SAAS,0CAAa;AACtB;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iFAAuB;AACtD,kCAAkC,sEAAY;AAC9C;AACA;AACA,EAAE,+EAAqB;AACvB;AACA,GAAG;AACH,qBAAqB,wEAAc;AACnC;AACA,GAAG;AACH,oCAAoC,4EAAkB;AACtD,6BAA6B,yCAAY;AACzC,mBAAmB,yCAAY;AAC/B,iBAAiB,yCAAY;AAC7B,+BAA+B,yCAAY;AAC3C,gCAAgC,yCAAY;AAC5C,6BAA6B,yCAAY;AACzC,0BAA0B,yCAAY;AACtC,4BAA4B,yCAAY;AACxC,iCAAiC,yCAAY;AAC7C,6BAA6B,sEAAY;AACzC,wBAAwB,sEAAY;AACpC,gCAAgC,sEAAY;AAC5C,2BAA2B,sEAAY;AACvC,kCAAkC,2CAAc;AAChD,oCAAoC,2CAAc;AAClD,oBAAoB,wEAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,iIAAiI,yEAAe,wCAAwC,yEAAe;AACvM;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,gFAAsB;AACtC;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAa,CAAC,qEAAa;AAChD,oEAAoE,kEAAU;AAC9E;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,eAAe,0CAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,GAAG;AACH,+BAA+B,8CAAiB;AAChD;AACA;AACA,GAAG;AACH,0BAA0B,wEAAc;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mEAAS;AACjB;AACA;AACA,UAAU,qEAAa;AACvB;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yEAAe;AACpC,qBAAqB,yEAAe;AACpC;AACA;AACA,QAAQ,mEAAS;AACjB;AACA;AACA;AACA;AACA,QAAQ,mEAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,sBAAsB,2EAAiB;AACvC,wEAAwE,6EAAmB;AAC3F;AACA,8FAA8F,6EAAmB;AACjH,4BAA4B,+EAAqB;AACjD;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4EAAkB,4GAA4G,6EAAmB;AAC1K;AACA;AACA,mBAAmB,kFAAwB;AAC3C;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mEAAS;;AAEf;AACA,8BAA8B,uEAAa;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,iIAAiI,kFAAwB;AACzJ;AACA;AACA,WAAW;AACX,UAAU;AACV,gDAAgD,kFAAwB;AACxE;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA,iIAAiI,kFAAwB;AACzJ;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV,gDAAgD,kFAAwB;AACxE;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,UAAU,gFAAsB;AAChC;AACA;AACA;AACA;AACA,GAAG;AACH,mCAAmC,0CAAa;AAChD;AACA;AACA;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,0CAAa;AACjC;AACA,wCAAwC,wEAAc;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+EAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,wEAAc;AAC/D;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,gBAAgB,mEAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mEAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mEAAS;AACrB;AACA,iCAAiC,yEAAe;AAChD;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mEAAS;AACnB;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA,IAAI,IAAI;AACR;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,qBAAqB,0CAAa;AAClC;AACA,qCAAqC,iFAAuB;AAC5D,GAAG;AACH;AACA;AACA;AACA,oBAAoB,0CAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,eAAe,8CAAiB;AAChC;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2CAAc;AAClD;AACA;AACA;AACA,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA,8BAA8B,2CAAc;AAC5C;AACA;AACA;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAkB;AAC1B;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,iBAAiB,0CAAa;AAC9B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,2CAAc;AAC5C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH,qBAAqB,sEAAY;AACjC,kBAAkB,sEAAY;AAC9B,mBAAmB,sEAAY;AAC/B,oBAAoB,sEAAY;AAChC,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,uBAAuB,yCAAY;AACnC,oBAAoB,yCAAY;AAChC,uBAAuB,yCAAY;AACnC,wBAAwB,yCAAY;AACpC,kBAAkB,wEAAc;AAChC,yBAAyB,wEAAc;AACvC,uBAAuB,sEAAY;AACnC,wBAAwB,sEAAY;AACpC,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B,wEAAc;AACxC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,wEAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,QAAQ,mEAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mEAAS;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH,oBAAoB,0CAAa;AACjC;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE,4DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAM;AACtB;AACA,2BAA2B,sEAAc;AACzC,8BAA8B,sEAAc;AAC5C;AACA;AACA,KAAK;AACL,kBAAkB,uDAAG;AACrB;AACA;AACA,4CAA4C,qDAAK;AACjD,8BAA8B,uDAAG,2HAA2H,uDAAG;AAC/J;AACA;;AAEA;AACA;AACA,yEAAyE,uDAAG;AAC5E,MAAM,gDAAkB;AACxB;AACA;AACA,kCAAkC,sEAAc;AAChD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,mBAAmB,wEAAc;AACjC,iCAAiC,yCAAY;AAC7C,2BAA2B,yCAAY;AACvC,6BAA6B,yCAAY;AACzC,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAkB;AAC1B;AACA,SAAS;AACT,QAAQ,yBAAyB,sEAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAkB;AAC5B;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,YAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,iEAAS;AAC9B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEslB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3+IjhB;AACtC;AACS;AACG;AACP;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,oEAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qEAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,uBAAuB,kDAAe;;AAEtC;AACA;AACA,KAAK,yLAAK;AACV;;AAEA;AACA,cAAc,yCAAY;AAC1B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,cAAc,yCAAY;AAC1B,QAAQ,IAAqC;AAC7C;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,SAAS,8CAAiB;AAC1B,wEAAwE,aAAa;AACrF;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,wBAAwB;AAC5B;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,yDAAK;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oBAAoB,yDAAK;AACzB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,WAAW;AACjC,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,eAAe,kDAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kDAAQ;AACnC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;;AAEmwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxhBnwB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEgV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChKhV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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EA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,qBAAM,gBAAgB,qBAAM,IAAI,qBAAM,sBAAsB,qBAAM;;AAE1F;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,GAAG;AACd,WAAW,OAAO;AAClB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,IAAI;AACJ,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,QAAQ,UAAU;AAC7B,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA,8BAA8B,mBAAmB;AACjD;AACA;AACA;AACA;AACA;AACA,+CAA+C,mBAAmB;AAClE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,WAAW;AACX;AACA,cAAc,QAAQ;AACtB,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,WAAW;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,aAAa,QAAQ,IAAI,QAAQ;AACjC;AACA;AACA;AACA,aAAa,QAAQ,IAAI,QAAQ;AACjC;AACA;AACA;AACA,WAAW,QAAQ,gBAAgB,IAAI,gBAAgB;AACvD;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,UAAU;AACvB;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA,YAAY,QAAQ,IAAI,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,GAAG;AAChB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACx7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB,qBAAM,gBAAgB,qBAAM,IAAI,qBAAM,sBAAsB,qBAAM;;AAE1F;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ,WAAW;AAC9B,WAAW,SAAS;AACpB;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,+CAA+C,iBAAiB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ,WAAW;AAC9B,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,mBAAmB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,KAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAO,CAAC,oBAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,oEAAoE;AACxE;AACA,IAAI,oBAAoB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,IAAI,qBAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,UAAU;AACV;AACA,IAAI,eAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,IAAI,qBAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,IAAI,wBAAwB;AAC5B;AACA;AACA,IAAI,+BAA+B;AACnC;AACA;AACA,IAAI,oBAAoB;AACxB;AACA;AACA,IAAI,qBAAqB;AACzB;AACA;AACA,IAAI,eAAe;AACnB;AACA;AACA;AACA;AACA,GAAG;;;;;;;;;;;;ACvaU;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AAOC;AACH;;AAEA,IAAI,KAAqC,EAAE;AAAA,EAK1C,CAAC;AACF,EAAE,mIAA0D;AAC5D;;;;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,KAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+CAA+C,6BAA6B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB,gDAAgD;AAChE,gBAAgB,aAAa;AAC7B;AACA;AACA,gCAAgC,kCAAkC,OAAO;AACzE;AACA,gGAAgG,SAAS,UAAU,sFAAsF,aAAa,UAAU,UAAU;AAC1O;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAO,CAAC,oBAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB;AACpB,IAAI,WAAW;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;;;;;;;;;;AC/VU;;AAEb,IAAI,KAAqC,EAAE;AAAA,EAE1C,CAAC;AACF,EAAE,+IAAkE;AACpE;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,4BAA4B;AACvC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,oBAAoB;AACjC;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;;AAEA;AACA,aAAa,QAAQ;AACrB,cAAc,SAAS;AACvB,cAAc,WAAW;AACzB;;AAEA;AACA,aAAa,QAAQ;AACrB,cAAc,uBAAuB,iDAAiD;AACtF;AACA;AACA,cAAc,4BAA4B;AAC1C,cAAc,SAAS;AACvB,cAAc,kBAAkB;AAChC;;AAEA;AACA,WAAW,WAAW;AACtB,WAAW,SAAS;AACpB,WAAW,kBAAkB;AAC7B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,SAAS;AACT;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS,YAAY;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sEAAsE;AACtE,+BAA+B;AAC/B;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF;AACvF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B,0DAA0D;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gCAAgC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,gCAAgC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEqE;AACrE;;;;;;;;;;;;;;;;;;;AC5kByE;AAIL;AAGpE,MAAM,qBAAqB,GAAG,CAAC,UAA+B,EAAE,EAAE,CAChE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,sDAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,+DAAqB,CAAC,UAAU,CAAC,CAAC;AAS9E,MAAM,QAAQ,GAAG,+DAAM,CAAgB,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7D,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,WAAW;CACnD,CAAC,CAAC;IACC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,4DAAG;MAClB,OAAO;;MAEP,sEAAiB,CAAC,GAAG,CAAC,qBAAqB,CAAC;GAC/C;CACF,CAAC;;;;;;;;;;;;;;;;;ACzByB;;;;;;;;;;;;;;;;;;;;ACKgB;AACyB;AAsB7D,MAAM,gBAAgB,GAAG,CAK9B,EACA,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,WAAW,EACX,YAAY,EACZ,OAAO,EACP,GAAG,UAAU,EACkD,EAAE,EAAE;IACnE,MAAM,EAAE,YAAY,EAAE,GAAG,UA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","sources":["webpack://@react-hive/honey-layout/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://@react-hive/honey-layout/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://@react-hive/honey-layout/./node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","webpack://@react-hive/honey-layout/./node_modules/@floating-ui/react/dist/floating-ui.react.mjs","webpack://@react-hive/honey-layout/./node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","webpack://@react-hive/honey-layout/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://@react-hive/honey-layout/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://@react-hive/honey-layout/./node_modules/@react-hive/honey-utils/dist/index.mjs","webpack://@react-hive/honey-layout/./node_modules/lodash.merge/index.js","webpack://@react-hive/honey-layout/./node_modules/lodash.throttle/index.js","webpack://@react-hive/honey-layout/./node_modules/react-dom/cjs/react-dom.development.js","webpack://@react-hive/honey-layout/./node_modules/react-dom/index.js","webpack://@react-hive/honey-layout/./node_modules/react/cjs/react-jsx-runtime.development.js","webpack://@react-hive/honey-layout/./node_modules/react/jsx-runtime.js","webpack://@react-hive/honey-layout/./node_modules/tabbable/dist/index.esm.js","webpack://@react-hive/honey-layout/./src/components/HoneyBox/HoneyBox.ts","webpack://@react-hive/honey-layout/./src/components/HoneyBox/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyContextMenu/HoneyContextMenu.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyContextMenu/HoneyContextMenu.types.ts","webpack://@react-hive/honey-layout/./src/components/HoneyContextMenu/HoneyContextMenuContent.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyContextMenu/HoneyContextMenuContentOption.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyContextMenu/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyFlex/HoneyFlex.ts","webpack://@react-hive/honey-layout/./src/components/HoneyFlex/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGrid/HoneyGrid.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyGrid/HoneyGridContext.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGrid/HoneyGridStyled.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGrid/hooks/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGrid/hooks/use-honey-grid-context.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGrid/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGridColumn/HoneyGridColumn.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyGridColumn/HoneyGridColumn.types.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGridColumn/HoneyGridColumnStyled.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGridColumn/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyLazyContent/HoneyLazyContent.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyLazyContent/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyList/HoneyList.helpers.ts","webpack://@react-hive/honey-layout/./src/components/HoneyList/HoneyList.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyList/HoneyList.types.ts","webpack://@react-hive/honey-layout/./src/components/HoneyList/HoneyListStyled.ts","webpack://@react-hive/honey-layout/./src/components/HoneyList/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyOverlay.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopup.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopup.types.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopupContent.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopupContext.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopupPortal.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopupStyled.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopupTree.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/hooks/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/hooks/use-honey-popup-context.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/hooks/use-honey-popup-interactions.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/hooks/use-honey-popup.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyStatusContent.tsx","webpack://@react-hive/honey-layout/./src/components/index.ts","webpack://@react-hive/honey-layout/./src/constants.ts","webpack://@react-hive/honey-layout/./src/contexts/HoneyLayoutContext.ts","webpack://@react-hive/honey-layout/./src/contexts/index.ts","webpack://@react-hive/honey-layout/./src/effects.ts","webpack://@react-hive/honey-layout/./src/helpers/helpers.ts","webpack://@react-hive/honey-layout/./src/helpers/index.ts","webpack://@react-hive/honey-layout/./src/helpers/react.helpers.ts","webpack://@react-hive/honey-layout/./src/hooks/index.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-document-key-up-handler.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-drag.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-layout.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-media-query.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-on-change.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-overlay.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-resize.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-synthetic-scroll-x.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-synthetic-scroll-y.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-synthetic-scroll.ts","webpack://@react-hive/honey-layout/./src/hooks/use-register-honey-overlay.ts","webpack://@react-hive/honey-layout/./src/providers/HoneyLayoutProvider.tsx","webpack://@react-hive/honey-layout/./src/providers/HoneyLayoutThemeOverride.tsx","webpack://@react-hive/honey-layout/./src/providers/hooks/index.ts","webpack://@react-hive/honey-layout/./src/providers/hooks/use-honey-overlays.ts","webpack://@react-hive/honey-layout/./src/providers/index.ts","webpack://@react-hive/honey-layout/./src/types/css.types.ts","webpack://@react-hive/honey-layout/./src/types/data.types.ts","webpack://@react-hive/honey-layout/./src/types/dom.types.ts","webpack://@react-hive/honey-layout/./src/types/index.ts","webpack://@react-hive/honey-layout/./src/types/state.types.ts","webpack://@react-hive/honey-layout/./src/types/utility.types.ts","webpack://@react-hive/honey-layout/./src/utils/data-utils.ts","webpack://@react-hive/honey-layout/./src/utils/feedback.ts","webpack://@react-hive/honey-layout/./src/utils/index.ts","webpack://@react-hive/honey-layout/external commonjs2 \"@react-hive/honey-style\"","webpack://@react-hive/honey-layout/external commonjs2 \"react\"","webpack://@react-hive/honey-layout/webpack/bootstrap","webpack://@react-hive/honey-layout/webpack/runtime/compat get default export","webpack://@react-hive/honey-layout/webpack/runtime/create fake namespace object","webpack://@react-hive/honey-layout/webpack/runtime/define property getters","webpack://@react-hive/honey-layout/webpack/runtime/global","webpack://@react-hive/honey-layout/webpack/runtime/hasOwnProperty shorthand","webpack://@react-hive/honey-layout/webpack/runtime/make namespace object","webpack://@react-hive/honey-layout/webpack/runtime/node module decorator","webpack://@react-hive/honey-layout/./src/index.ts"],"sourcesContent":["import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","import * as React from 'react';\nimport { useModernLayoutEffect, useEffectEvent, getMinListIndex, getMaxListIndex, createGridCellMap, isListIndexDisabled, getGridNavigatedIndex, getGridCellIndexOfCorner, getGridCellIndices, findNonDisabledListIndex, isIndexOutOfListBounds, useLatestRef, getDocument as getDocument$1, isMouseLikePointerType, contains as contains$1, isSafari, enableFocusInside, isOutsideEvent, getPreviousTabbable, getNextTabbable, disableFocusInside, isTypeableCombobox, getFloatingFocusElement, getTabbableOptions, getNodeAncestors, activeElement, getNodeChildren as getNodeChildren$1, stopEvent, getTarget as getTarget$1, isVirtualClick, isVirtualPointerEvent, getPlatform, isTypeableElement, isReactEvent, isRootElement, isEventTargetWithin, matchesFocusVisible, isMac, getDeepestNode, getUserAgent } from '@floating-ui/react/utils';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { getComputedStyle, isElement, isShadowRoot, getNodeName, isNode, isHTMLElement, getWindow, isLastTraversableNode, getParentNode, isWebKit } from '@floating-ui/utils/dom';\nimport { tabbable, isTabbable, focusable } from 'tabbable';\nimport * as ReactDOM from 'react-dom';\nimport { getOverflowAncestors, useFloating as useFloating$1, offset, detectOverflow } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\nimport { evaluate, max, round, min } from '@floating-ui/utils';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nfunction useMergeRefs(refs) {\n const cleanupRef = React.useRef(undefined);\n const refEffect = React.useCallback(instance => {\n const cleanups = refs.map(ref => {\n if (ref == null) {\n return;\n }\n if (typeof ref === 'function') {\n const refCallback = ref;\n const refCleanup = refCallback(instance);\n return typeof refCleanup === 'function' ? refCleanup : () => {\n refCallback(null);\n };\n }\n ref.current = instance;\n return () => {\n ref.current = null;\n };\n });\n return () => {\n cleanups.forEach(refCleanup => refCleanup == null ? void 0 : refCleanup());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = undefined;\n }\n if (value != null) {\n cleanupRef.current = refEffect(value);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n\nfunction sortByDocumentPosition(a, b) {\n const position = a.compareDocumentPosition(b);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n return 0;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n map: /*#__PURE__*/new Map(),\n elementsRef: {\n current: []\n }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(props) {\n const {\n children,\n elementsRef,\n labelsRef\n } = props;\n const [nodes, setNodes] = React.useState(() => new Set());\n const register = React.useCallback(node => {\n setNodes(prevSet => new Set(prevSet).add(node));\n }, []);\n const unregister = React.useCallback(node => {\n setNodes(prevSet => {\n const set = new Set(prevSet);\n set.delete(node);\n return set;\n });\n }, []);\n const map = React.useMemo(() => {\n const newMap = new Map();\n const sortedNodes = Array.from(nodes.keys()).sort(sortByDocumentPosition);\n sortedNodes.forEach((node, index) => {\n newMap.set(node, index);\n });\n return newMap;\n }, [nodes]);\n return /*#__PURE__*/jsx(FloatingListContext.Provider, {\n value: React.useMemo(() => ({\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n }), [register, unregister, map, elementsRef, labelsRef]),\n children: children\n });\n}\n/**\n * Used to register a list item and its index (DOM position) in the\n * `FloatingList`.\n * @see https://floating-ui.com/docs/FloatingList#uselistitem\n */\nfunction useListItem(props) {\n if (props === void 0) {\n props = {};\n }\n const {\n label\n } = props;\n const {\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n } = React.useContext(FloatingListContext);\n const [index, setIndex] = React.useState(null);\n const componentRef = React.useRef(null);\n const ref = React.useCallback(node => {\n componentRef.current = node;\n if (index !== null) {\n elementsRef.current[index] = node;\n if (labelsRef) {\n var _node$textContent;\n const isLabelDefined = label !== undefined;\n labelsRef.current[index] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n }\n }\n }, [index, elementsRef, labelsRef, label]);\n useModernLayoutEffect(() => {\n const node = componentRef.current;\n if (node) {\n register(node);\n return () => {\n unregister(node);\n };\n }\n }, [register, unregister]);\n useModernLayoutEffect(() => {\n const index = componentRef.current ? map.get(componentRef.current) : null;\n if (index != null) {\n setIndex(index);\n }\n }, [map]);\n return React.useMemo(() => ({\n ref,\n index: index == null ? -1 : index\n }), [index, ref]);\n}\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nconst ACTIVE_KEY = 'active';\nconst SELECTED_KEY = 'selected';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\n\nfunction renderJsx(render, computedProps) {\n if (typeof render === 'function') {\n return render(computedProps);\n }\n if (render) {\n return /*#__PURE__*/React.cloneElement(render, computedProps);\n }\n return /*#__PURE__*/jsx(\"div\", {\n ...computedProps\n });\n}\nconst CompositeContext = /*#__PURE__*/React.createContext({\n activeIndex: 0,\n onNavigate: () => {}\n});\nconst horizontalKeys = [ARROW_LEFT, ARROW_RIGHT];\nconst verticalKeys = [ARROW_UP, ARROW_DOWN];\nconst allKeys = [...horizontalKeys, ...verticalKeys];\n\n/**\n * Creates a single tab stop whose items are navigated by arrow keys, which\n * provides list navigation outside of floating element contexts.\n *\n * This is useful to enable navigation of a list of items that aren’t part of a\n * floating element. A menubar is an example of a composite, with each reference\n * element being an item.\n * @see https://floating-ui.com/docs/Composite\n */\nconst Composite = /*#__PURE__*/React.forwardRef(function Composite(props, forwardedRef) {\n const {\n render,\n orientation = 'both',\n loop = true,\n rtl = false,\n cols = 1,\n disabledIndices,\n activeIndex: externalActiveIndex,\n onNavigate: externalSetActiveIndex,\n itemSizes,\n dense = false,\n ...domProps\n } = props;\n const [internalActiveIndex, internalSetActiveIndex] = React.useState(0);\n const activeIndex = externalActiveIndex != null ? externalActiveIndex : internalActiveIndex;\n const onNavigate = useEffectEvent(externalSetActiveIndex != null ? externalSetActiveIndex : internalSetActiveIndex);\n const elementsRef = React.useRef([]);\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const contextValue = React.useMemo(() => ({\n activeIndex,\n onNavigate\n }), [activeIndex, onNavigate]);\n const isGrid = cols > 1;\n function handleKeyDown(event) {\n if (!allKeys.includes(event.key)) return;\n let nextIndex = activeIndex;\n const minIndex = getMinListIndex(elementsRef, disabledIndices);\n const maxIndex = getMaxListIndex(elementsRef, disabledIndices);\n const horizontalEndKey = rtl ? ARROW_LEFT : ARROW_RIGHT;\n const horizontalStartKey = rtl ? ARROW_RIGHT : ARROW_LEFT;\n if (isGrid) {\n const sizes = itemSizes || Array.from({\n length: elementsRef.current.length\n }, () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = createGridCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(elementsRef, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(elementsRef, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const maybeNextIndex = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex ? elementsRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loop,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || elementsRef.current.map((_, index) => isListIndexDisabled(elementsRef, index, disabledIndices) ? index : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getGridCellIndexOfCorner(activeIndex > maxIndex ? minIndex : activeIndex, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction we're\n // moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n event.key === ARROW_DOWN ? 'bl' : event.key === horizontalEndKey ? 'tr' : 'tl')\n })];\n if (maybeNextIndex != null) {\n nextIndex = maybeNextIndex;\n }\n }\n const toEndKeys = {\n horizontal: [horizontalEndKey],\n vertical: [ARROW_DOWN],\n both: [horizontalEndKey, ARROW_DOWN]\n }[orientation];\n const toStartKeys = {\n horizontal: [horizontalStartKey],\n vertical: [ARROW_UP],\n both: [horizontalStartKey, ARROW_UP]\n }[orientation];\n const preventedKeys = isGrid ? allKeys : {\n horizontal: horizontalKeys,\n vertical: verticalKeys,\n both: allKeys\n }[orientation];\n if (nextIndex === activeIndex && [...toEndKeys, ...toStartKeys].includes(event.key)) {\n if (loop && nextIndex === maxIndex && toEndKeys.includes(event.key)) {\n nextIndex = minIndex;\n } else if (loop && nextIndex === minIndex && toStartKeys.includes(event.key)) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledListIndex(elementsRef, {\n startingIndex: nextIndex,\n decrement: toStartKeys.includes(event.key),\n disabledIndices\n });\n }\n }\n if (nextIndex !== activeIndex && !isIndexOutOfListBounds(elementsRef, nextIndex)) {\n var _elementsRef$current$;\n event.stopPropagation();\n if (preventedKeys.includes(event.key)) {\n event.preventDefault();\n }\n onNavigate(nextIndex);\n (_elementsRef$current$ = elementsRef.current[nextIndex]) == null || _elementsRef$current$.focus();\n }\n }\n const computedProps = {\n ...domProps,\n ...renderElementProps,\n ref: forwardedRef,\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n onKeyDown(e) {\n domProps.onKeyDown == null || domProps.onKeyDown(e);\n renderElementProps.onKeyDown == null || renderElementProps.onKeyDown(e);\n handleKeyDown(e);\n }\n };\n return /*#__PURE__*/jsx(CompositeContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/jsx(FloatingList, {\n elementsRef: elementsRef,\n children: renderJsx(render, computedProps)\n })\n });\n});\n/**\n * @see https://floating-ui.com/docs/Composite\n */\nconst CompositeItem = /*#__PURE__*/React.forwardRef(function CompositeItem(props, forwardedRef) {\n const {\n render,\n ...domProps\n } = props;\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const {\n activeIndex,\n onNavigate\n } = React.useContext(CompositeContext);\n const {\n ref,\n index\n } = useListItem();\n const mergedRef = useMergeRefs([ref, forwardedRef, renderElementProps.ref]);\n const isActive = activeIndex === index;\n const computedProps = {\n ...domProps,\n ...renderElementProps,\n ref: mergedRef,\n tabIndex: isActive ? 0 : -1,\n 'data-active': isActive ? '' : undefined,\n onFocus(e) {\n domProps.onFocus == null || domProps.onFocus(e);\n renderElementProps.onFocus == null || renderElementProps.onFocus(e);\n onNavigate(index);\n }\n };\n return renderJsx(render, computedProps);\n});\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n ...React\n};\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => // Ensure the id is unique with multiple independent versions of Floating UI\n// on <React 18\n\"floating-ui-\" + Math.random().toString(36).slice(2, 6) + count++;\nfunction useFloatingId() {\n const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n useModernLayoutEffect(() => {\n if (id == null) {\n setId(genId());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n React.useEffect(() => {\n serverHandoffComplete = true;\n }, []);\n return id;\n}\nconst useReactId = SafeReact.useId;\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/react-utils#useid\n */\nconst useId = useReactId || useFloatingId;\n\nlet devMessageSet;\nif (process.env.NODE_ENV !== \"production\") {\n devMessageSet = /*#__PURE__*/new Set();\n}\nfunction warn() {\n var _devMessageSet;\n for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n const message = \"Floating UI: \" + messages.join(' ');\n if (!((_devMessageSet = devMessageSet) != null && _devMessageSet.has(message))) {\n var _devMessageSet2;\n (_devMessageSet2 = devMessageSet) == null || _devMessageSet2.add(message);\n console.warn(message);\n }\n}\nfunction error() {\n var _devMessageSet3;\n for (var _len2 = arguments.length, messages = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n messages[_key2] = arguments[_key2];\n }\n const message = \"Floating UI: \" + messages.join(' ');\n if (!((_devMessageSet3 = devMessageSet) != null && _devMessageSet3.has(message))) {\n var _devMessageSet4;\n (_devMessageSet4 = devMessageSet) == null || _devMessageSet4.add(message);\n console.error(message);\n }\n}\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(props, ref) {\n const {\n context: {\n placement,\n elements: {\n floating\n },\n middlewareData: {\n arrow,\n shift\n }\n },\n width = 14,\n height = 7,\n tipRadius = 0,\n strokeWidth = 0,\n staticOffset,\n stroke,\n d,\n style: {\n transform,\n ...restStyle\n } = {},\n ...rest\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (!ref) {\n warn('The `ref` prop is required for `FloatingArrow`.');\n }\n }\n const clipPathId = useId();\n const [isRTL, setIsRTL] = React.useState(false);\n\n // https://github.com/floating-ui/floating-ui/issues/2932\n useModernLayoutEffect(() => {\n if (!floating) return;\n const isRTL = getComputedStyle(floating).direction === 'rtl';\n if (isRTL) {\n setIsRTL(true);\n }\n }, [floating]);\n if (!floating) {\n return null;\n }\n const [side, alignment] = placement.split('-');\n const isVerticalSide = side === 'top' || side === 'bottom';\n let computedStaticOffset = staticOffset;\n if (isVerticalSide && shift != null && shift.x || !isVerticalSide && shift != null && shift.y) {\n computedStaticOffset = null;\n }\n\n // Strokes must be double the border width, this ensures the stroke's width\n // works as you'd expect.\n const computedStrokeWidth = strokeWidth * 2;\n const halfStrokeWidth = computedStrokeWidth / 2;\n const svgX = width / 2 * (tipRadius / -8 + 1);\n const svgY = height / 2 * tipRadius / 4;\n const isCustomShape = !!d;\n const yOffsetProp = computedStaticOffset && alignment === 'end' ? 'bottom' : 'top';\n let xOffsetProp = computedStaticOffset && alignment === 'end' ? 'right' : 'left';\n if (computedStaticOffset && isRTL) {\n xOffsetProp = alignment === 'end' ? 'left' : 'right';\n }\n const arrowX = (arrow == null ? void 0 : arrow.x) != null ? computedStaticOffset || arrow.x : '';\n const arrowY = (arrow == null ? void 0 : arrow.y) != null ? computedStaticOffset || arrow.y : '';\n const dValue = d || 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n const rotation = {\n top: isCustomShape ? 'rotate(180deg)' : '',\n left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n bottom: isCustomShape ? '' : 'rotate(180deg)',\n right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n }[side];\n return /*#__PURE__*/jsxs(\"svg\", {\n ...rest,\n \"aria-hidden\": true,\n ref: ref,\n width: isCustomShape ? width : width + computedStrokeWidth,\n height: width,\n viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n [xOffsetProp]: arrowX,\n [yOffsetProp]: arrowY,\n [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + computedStrokeWidth / 2 + \"px)\",\n transform: [rotation, transform].filter(t => !!t).join(' '),\n ...restStyle\n },\n children: [computedStrokeWidth > 0 && /*#__PURE__*/jsx(\"path\", {\n clipPath: \"url(#\" + clipPathId + \")\",\n fill: \"none\",\n stroke: stroke\n // Account for the stroke on the fill path rendered below.\n ,\n strokeWidth: computedStrokeWidth + (d ? 0 : 1),\n d: dValue\n }), /*#__PURE__*/jsx(\"path\", {\n stroke: computedStrokeWidth && !d ? rest.fill : 'none',\n d: dValue\n }), /*#__PURE__*/jsx(\"clipPath\", {\n id: clipPathId,\n children: /*#__PURE__*/jsx(\"rect\", {\n x: -halfStrokeWidth,\n y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n width: width + computedStrokeWidth,\n height: width\n })\n })]\n });\n});\n\nfunction createEventEmitter() {\n const map = new Map();\n return {\n emit(event, data) {\n var _map$get;\n (_map$get = map.get(event)) == null || _map$get.forEach(listener => listener(data));\n },\n on(event, listener) {\n if (!map.has(event)) {\n map.set(event, new Set());\n }\n map.get(event).add(listener);\n },\n off(event, listener) {\n var _map$get2;\n (_map$get2 = map.get(event)) == null || _map$get2.delete(listener);\n }\n };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the parent node id for nested floating elements, if available.\n * Returns `null` for top-level floating elements.\n */\nconst useFloatingParentNodeId = () => {\n var _React$useContext;\n return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\n\n/**\n * Returns the nearest floating tree context, if available.\n */\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the `FloatingTree`, returning its id.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction useFloatingNodeId(customParentId) {\n const id = useId();\n const tree = useFloatingTree();\n const reactParentId = useFloatingParentNodeId();\n const parentId = customParentId || reactParentId;\n useModernLayoutEffect(() => {\n if (!id) return;\n const node = {\n id,\n parentId\n };\n tree == null || tree.addNode(node);\n return () => {\n tree == null || tree.removeNode(node);\n };\n }, [tree, id, parentId]);\n return id;\n}\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(props) {\n const {\n children,\n id\n } = props;\n const parentId = useFloatingParentNodeId();\n return /*#__PURE__*/jsx(FloatingNodeContext.Provider, {\n value: React.useMemo(() => ({\n id,\n parentId\n }), [id, parentId]),\n children: children\n });\n}\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM.\n * This is not necessary in all cases, except when there must be explicit communication between parent and child floating elements. It is necessary for:\n * - The `bubbles` option in the `useDismiss()` Hook\n * - Nested virtual list navigation\n * - Nested floating elements that each open on hover\n * - Custom communication between parent and child floating elements\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(props) {\n const {\n children\n } = props;\n const nodesRef = React.useRef([]);\n const addNode = React.useCallback(node => {\n nodesRef.current = [...nodesRef.current, node];\n }, []);\n const removeNode = React.useCallback(node => {\n nodesRef.current = nodesRef.current.filter(n => n !== node);\n }, []);\n const [events] = React.useState(() => createEventEmitter());\n return /*#__PURE__*/jsx(FloatingTreeContext.Provider, {\n value: React.useMemo(() => ({\n nodesRef,\n addNode,\n removeNode,\n events\n }), [addNode, removeNode, events]),\n children: children\n });\n}\n\nfunction createAttribute(name) {\n return \"data-floating-ui-\" + name;\n}\n\nfunction clearTimeoutIfSet(timeoutRef) {\n if (timeoutRef.current !== -1) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = -1;\n }\n}\n\nconst safePolygonIdentifier = /*#__PURE__*/createAttribute('safe-polygon');\nfunction getDelay(value, prop, pointerType) {\n if (pointerType && !isMouseLikePointerType(pointerType)) {\n return 0;\n }\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'function') {\n const result = value();\n if (typeof result === 'number') {\n return result;\n }\n return result == null ? void 0 : result[prop];\n }\n return value == null ? void 0 : value[prop];\n}\nfunction getRestMs(value) {\n if (typeof value === 'function') {\n return value();\n }\n return value;\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n events,\n elements\n } = context;\n const {\n enabled = true,\n delay = 0,\n handleClose = null,\n mouseOnly = false,\n restMs = 0,\n move = true\n } = props;\n const tree = useFloatingTree();\n const parentId = useFloatingParentNodeId();\n const handleCloseRef = useLatestRef(handleClose);\n const delayRef = useLatestRef(delay);\n const openRef = useLatestRef(open);\n const restMsRef = useLatestRef(restMs);\n const pointerTypeRef = React.useRef();\n const timeoutRef = React.useRef(-1);\n const handlerRef = React.useRef();\n const restTimeoutRef = React.useRef(-1);\n const blockMouseMoveRef = React.useRef(true);\n const performedPointerEventsMutationRef = React.useRef(false);\n const unbindMouseMoveRef = React.useRef(() => {});\n const restTimeoutPendingRef = React.useRef(false);\n const isHoverOpen = useEffectEvent(() => {\n var _dataRef$current$open;\n const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n });\n\n // When closing before opening, clear the delay timeouts to cancel it\n // from showing.\n React.useEffect(() => {\n if (!enabled) return;\n function onOpenChange(_ref) {\n let {\n open\n } = _ref;\n if (!open) {\n clearTimeoutIfSet(timeoutRef);\n clearTimeoutIfSet(restTimeoutRef);\n blockMouseMoveRef.current = true;\n restTimeoutPendingRef.current = false;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [enabled, events]);\n React.useEffect(() => {\n if (!enabled) return;\n if (!handleCloseRef.current) return;\n if (!open) return;\n function onLeave(event) {\n if (isHoverOpen()) {\n onOpenChange(false, event, 'hover');\n }\n }\n const html = getDocument$1(elements.floating).documentElement;\n html.addEventListener('mouseleave', onLeave);\n return () => {\n html.removeEventListener('mouseleave', onLeave);\n };\n }, [elements.floating, open, onOpenChange, enabled, handleCloseRef, isHoverOpen]);\n const closeWithDelay = React.useCallback(function (event, runElseBranch, reason) {\n if (runElseBranch === void 0) {\n runElseBranch = true;\n }\n if (reason === void 0) {\n reason = 'hover';\n }\n const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n if (closeDelay && !handlerRef.current) {\n clearTimeoutIfSet(timeoutRef);\n timeoutRef.current = window.setTimeout(() => onOpenChange(false, event, reason), closeDelay);\n } else if (runElseBranch) {\n clearTimeoutIfSet(timeoutRef);\n onOpenChange(false, event, reason);\n }\n }, [delayRef, onOpenChange]);\n const cleanupMouseMoveHandler = useEffectEvent(() => {\n unbindMouseMoveRef.current();\n handlerRef.current = undefined;\n });\n const clearPointerEvents = useEffectEvent(() => {\n if (performedPointerEventsMutationRef.current) {\n const body = getDocument$1(elements.floating).body;\n body.style.pointerEvents = '';\n body.removeAttribute(safePolygonIdentifier);\n performedPointerEventsMutationRef.current = false;\n }\n });\n const isClickLikeOpenEvent = useEffectEvent(() => {\n return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n });\n\n // Registering the mouse events on the reference directly to bypass React's\n // delegation system. If the cursor was on a disabled element and then entered\n // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n React.useEffect(() => {\n if (!enabled) return;\n function onReferenceMouseEnter(event) {\n clearTimeoutIfSet(timeoutRef);\n blockMouseMoveRef.current = false;\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || getRestMs(restMsRef.current) > 0 && !getDelay(delayRef.current, 'open')) {\n return;\n }\n const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n if (openDelay) {\n timeoutRef.current = window.setTimeout(() => {\n if (!openRef.current) {\n onOpenChange(true, event, 'hover');\n }\n }, openDelay);\n } else if (!open) {\n onOpenChange(true, event, 'hover');\n }\n }\n function onReferenceMouseLeave(event) {\n if (isClickLikeOpenEvent()) {\n clearPointerEvents();\n return;\n }\n unbindMouseMoveRef.current();\n const doc = getDocument$1(elements.floating);\n clearTimeoutIfSet(restTimeoutRef);\n restTimeoutPendingRef.current = false;\n if (handleCloseRef.current && dataRef.current.floatingContext) {\n // Prevent clearing `onScrollMouseLeave` timeout.\n if (!open) {\n clearTimeoutIfSet(timeoutRef);\n }\n handlerRef.current = handleCloseRef.current({\n ...dataRef.current.floatingContext,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event, true, 'safe-polygon');\n }\n }\n });\n const handler = handlerRef.current;\n doc.addEventListener('mousemove', handler);\n unbindMouseMoveRef.current = () => {\n doc.removeEventListener('mousemove', handler);\n };\n return;\n }\n\n // Allow interactivity without `safePolygon` on touch devices. With a\n // pointer, a short close delay is an alternative, so it should work\n // consistently.\n const shouldClose = pointerTypeRef.current === 'touch' ? !contains$1(elements.floating, event.relatedTarget) : true;\n if (shouldClose) {\n closeWithDelay(event);\n }\n }\n\n // Ensure the floating element closes after scrolling even if the pointer\n // did not move.\n // https://github.com/floating-ui/floating-ui/discussions/1692\n function onScrollMouseLeave(event) {\n if (isClickLikeOpenEvent()) return;\n if (!dataRef.current.floatingContext) return;\n handleCloseRef.current == null || handleCloseRef.current({\n ...dataRef.current.floatingContext,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event);\n }\n }\n })(event);\n }\n function onFloatingMouseEnter() {\n clearTimeoutIfSet(timeoutRef);\n }\n function onFloatingMouseLeave(event) {\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event, false);\n }\n }\n if (isElement(elements.domReference)) {\n const reference = elements.domReference;\n const floating = elements.floating;\n if (open) {\n reference.addEventListener('mouseleave', onScrollMouseLeave);\n }\n if (move) {\n reference.addEventListener('mousemove', onReferenceMouseEnter, {\n once: true\n });\n }\n reference.addEventListener('mouseenter', onReferenceMouseEnter);\n reference.addEventListener('mouseleave', onReferenceMouseLeave);\n if (floating) {\n floating.addEventListener('mouseleave', onScrollMouseLeave);\n floating.addEventListener('mouseenter', onFloatingMouseEnter);\n floating.addEventListener('mouseleave', onFloatingMouseLeave);\n }\n return () => {\n if (open) {\n reference.removeEventListener('mouseleave', onScrollMouseLeave);\n }\n if (move) {\n reference.removeEventListener('mousemove', onReferenceMouseEnter);\n }\n reference.removeEventListener('mouseenter', onReferenceMouseEnter);\n reference.removeEventListener('mouseleave', onReferenceMouseLeave);\n if (floating) {\n floating.removeEventListener('mouseleave', onScrollMouseLeave);\n floating.removeEventListener('mouseenter', onFloatingMouseEnter);\n floating.removeEventListener('mouseleave', onFloatingMouseLeave);\n }\n };\n }\n }, [elements, enabled, context, mouseOnly, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, openRef, tree, delayRef, handleCloseRef, dataRef, isClickLikeOpenEvent, restMsRef]);\n\n // Block pointer-events of every element other than the reference and floating\n // while the floating element is open and has a `handleClose` handler. Also\n // handles nested floating elements.\n // https://github.com/floating-ui/floating-ui/issues/1722\n useModernLayoutEffect(() => {\n var _handleCloseRef$curre;\n if (!enabled) return;\n if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && (_handleCloseRef$curre = _handleCloseRef$curre.__options) != null && _handleCloseRef$curre.blockPointerEvents && isHoverOpen()) {\n performedPointerEventsMutationRef.current = true;\n const floatingEl = elements.floating;\n if (isElement(elements.domReference) && floatingEl) {\n var _tree$nodesRef$curren;\n const body = getDocument$1(elements.floating).body;\n body.setAttribute(safePolygonIdentifier, '');\n const ref = elements.domReference;\n const parentFloating = tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren.elements.floating;\n if (parentFloating) {\n parentFloating.style.pointerEvents = '';\n }\n body.style.pointerEvents = 'none';\n ref.style.pointerEvents = 'auto';\n floatingEl.style.pointerEvents = 'auto';\n return () => {\n body.style.pointerEvents = '';\n ref.style.pointerEvents = '';\n floatingEl.style.pointerEvents = '';\n };\n }\n }\n }, [enabled, open, parentId, elements, tree, handleCloseRef, isHoverOpen]);\n useModernLayoutEffect(() => {\n if (!open) {\n pointerTypeRef.current = undefined;\n restTimeoutPendingRef.current = false;\n cleanupMouseMoveHandler();\n clearPointerEvents();\n }\n }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n React.useEffect(() => {\n return () => {\n cleanupMouseMoveHandler();\n clearTimeoutIfSet(timeoutRef);\n clearTimeoutIfSet(restTimeoutRef);\n clearPointerEvents();\n };\n }, [enabled, elements.domReference, cleanupMouseMoveHandler, clearPointerEvents]);\n const reference = React.useMemo(() => {\n function setPointerRef(event) {\n pointerTypeRef.current = event.pointerType;\n }\n return {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n onMouseMove(event) {\n const {\n nativeEvent\n } = event;\n function handleMouseMove() {\n if (!blockMouseMoveRef.current && !openRef.current) {\n onOpenChange(true, nativeEvent, 'hover');\n }\n }\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) {\n return;\n }\n if (open || getRestMs(restMsRef.current) === 0) {\n return;\n }\n\n // Ignore insignificant movements to account for tremors.\n if (restTimeoutPendingRef.current && event.movementX ** 2 + event.movementY ** 2 < 2) {\n return;\n }\n clearTimeoutIfSet(restTimeoutRef);\n if (pointerTypeRef.current === 'touch') {\n handleMouseMove();\n } else {\n restTimeoutPendingRef.current = true;\n restTimeoutRef.current = window.setTimeout(handleMouseMove, getRestMs(restMsRef.current));\n }\n }\n };\n }, [mouseOnly, onOpenChange, open, openRef, restMsRef]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nconst NOOP = () => {};\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n delay: 0,\n initialDelay: 0,\n timeoutMs: 0,\n currentId: null,\n setCurrentId: NOOP,\n setState: NOOP,\n isInstantPhase: false\n});\n\n/**\n * @deprecated\n * Use the return value of `useDelayGroup()` instead.\n */\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction FloatingDelayGroup(props) {\n const {\n children,\n delay,\n timeoutMs = 0\n } = props;\n const [state, setState] = React.useReducer((prev, next) => ({\n ...prev,\n ...next\n }), {\n delay,\n timeoutMs,\n initialDelay: delay,\n currentId: null,\n isInstantPhase: false\n });\n const initialCurrentIdRef = React.useRef(null);\n const setCurrentId = React.useCallback(currentId => {\n setState({\n currentId\n });\n }, []);\n useModernLayoutEffect(() => {\n if (state.currentId) {\n if (initialCurrentIdRef.current === null) {\n initialCurrentIdRef.current = state.currentId;\n } else if (!state.isInstantPhase) {\n setState({\n isInstantPhase: true\n });\n }\n } else {\n if (state.isInstantPhase) {\n setState({\n isInstantPhase: false\n });\n }\n initialCurrentIdRef.current = null;\n }\n }, [state.currentId, state.isInstantPhase]);\n return /*#__PURE__*/jsx(FloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n ...state,\n setState,\n setCurrentId\n }), [state, setCurrentId]),\n children: children\n });\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `FloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useDelayGroup(context, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n open,\n onOpenChange,\n floatingId\n } = context;\n const {\n id: optionId,\n enabled = true\n } = options;\n const id = optionId != null ? optionId : floatingId;\n const groupContext = useDelayGroupContext();\n const {\n currentId,\n setCurrentId,\n initialDelay,\n setState,\n timeoutMs\n } = groupContext;\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (!currentId) return;\n setState({\n delay: {\n open: 1,\n close: getDelay(initialDelay, 'close')\n }\n });\n if (currentId !== id) {\n onOpenChange(false);\n }\n }, [enabled, id, onOpenChange, setState, currentId, initialDelay]);\n useModernLayoutEffect(() => {\n function unset() {\n onOpenChange(false);\n setState({\n delay: initialDelay,\n currentId: null\n });\n }\n if (!enabled) return;\n if (!currentId) return;\n if (!open && currentId === id) {\n if (timeoutMs) {\n const timeout = window.setTimeout(unset, timeoutMs);\n return () => {\n clearTimeout(timeout);\n };\n }\n unset();\n }\n }, [enabled, open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (setCurrentId === NOOP || !open) return;\n setCurrentId(id);\n }, [enabled, open, setCurrentId, id]);\n return groupContext;\n}\n\nconst NextFloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n hasProvider: false,\n timeoutMs: 0,\n delayRef: {\n current: 0\n },\n initialDelayRef: {\n current: 0\n },\n timeoutIdRef: {\n current: -1\n },\n currentIdRef: {\n current: null\n },\n currentContextRef: {\n current: null\n }\n});\n/**\n * Experimental next version of `FloatingDelayGroup` to become the default\n * in the future. This component is not yet stable.\n * Provides context for a group of floating elements that should share a\n * `delay`. Unlike `FloatingDelayGroup`, `useNextDelayGroup` with this\n * component does not cause a re-render of unrelated consumers of the\n * context when the delay changes.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction NextFloatingDelayGroup(props) {\n const {\n children,\n delay,\n timeoutMs = 0\n } = props;\n const delayRef = React.useRef(delay);\n const initialDelayRef = React.useRef(delay);\n const currentIdRef = React.useRef(null);\n const currentContextRef = React.useRef(null);\n const timeoutIdRef = React.useRef(-1);\n return /*#__PURE__*/jsx(NextFloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n hasProvider: true,\n delayRef,\n initialDelayRef,\n currentIdRef,\n timeoutMs,\n currentContextRef,\n timeoutIdRef\n }), [timeoutMs]),\n children: children\n });\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `NextFloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useNextDelayGroup(context, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n open,\n onOpenChange,\n floatingId\n } = context;\n const {\n enabled = true\n } = options;\n const groupContext = React.useContext(NextFloatingDelayGroupContext);\n const {\n currentIdRef,\n delayRef,\n timeoutMs,\n initialDelayRef,\n currentContextRef,\n hasProvider,\n timeoutIdRef\n } = groupContext;\n const [isInstantPhase, setIsInstantPhase] = React.useState(false);\n useModernLayoutEffect(() => {\n function unset() {\n var _currentContextRef$cu;\n setIsInstantPhase(false);\n (_currentContextRef$cu = currentContextRef.current) == null || _currentContextRef$cu.setIsInstantPhase(false);\n currentIdRef.current = null;\n currentContextRef.current = null;\n delayRef.current = initialDelayRef.current;\n }\n if (!enabled) return;\n if (!currentIdRef.current) return;\n if (!open && currentIdRef.current === floatingId) {\n setIsInstantPhase(false);\n if (timeoutMs) {\n timeoutIdRef.current = window.setTimeout(unset, timeoutMs);\n return () => {\n clearTimeout(timeoutIdRef.current);\n };\n }\n unset();\n }\n }, [enabled, open, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeoutIdRef]);\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (!open) return;\n const prevContext = currentContextRef.current;\n const prevId = currentIdRef.current;\n currentContextRef.current = {\n onOpenChange,\n setIsInstantPhase\n };\n currentIdRef.current = floatingId;\n delayRef.current = {\n open: 0,\n close: getDelay(initialDelayRef.current, 'close')\n };\n if (prevId !== null && prevId !== floatingId) {\n clearTimeoutIfSet(timeoutIdRef);\n setIsInstantPhase(true);\n prevContext == null || prevContext.setIsInstantPhase(true);\n prevContext == null || prevContext.onOpenChange(false);\n } else {\n setIsInstantPhase(false);\n prevContext == null || prevContext.setIsInstantPhase(false);\n }\n }, [enabled, open, floatingId, onOpenChange, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeoutIdRef]);\n useModernLayoutEffect(() => {\n return () => {\n currentContextRef.current = null;\n };\n }, [currentContextRef]);\n return React.useMemo(() => ({\n hasProvider,\n delayRef,\n isInstantPhase\n }), [hasProvider, delayRef, isInstantPhase]);\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n preventScroll = false,\n cancelPrevious = true,\n sync = false\n } = options;\n cancelPrevious && cancelAnimationFrame(rafId);\n const exec = () => el == null ? void 0 : el.focus({\n preventScroll\n });\n if (sync) {\n exec();\n } else {\n rafId = requestAnimationFrame(exec);\n }\n}\n\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\n\n// Modified to add conditional `aria-hidden` support:\n// https://github.com/theKashey/aria-hidden/blob/9220c8f4a4fd35f63bee5510a9f41a37264382d4/src/index.ts\nconst counters = {\n inert: /*#__PURE__*/new WeakMap(),\n 'aria-hidden': /*#__PURE__*/new WeakMap(),\n none: /*#__PURE__*/new WeakMap()\n};\nfunction getCounterMap(control) {\n if (control === 'inert') return counters.inert;\n if (control === 'aria-hidden') return counters['aria-hidden'];\n return counters.none;\n}\nlet uncontrolledElementsSet = /*#__PURE__*/new WeakSet();\nlet markerMap = {};\nlet lockCount$1 = 0;\nconst supportsInert = () => typeof HTMLElement !== 'undefined' && 'inert' in HTMLElement.prototype;\nconst unwrapHost = node => node && (node.host || unwrapHost(node.parentNode));\nconst correctElements = (parent, targets) => targets.map(target => {\n if (parent.contains(target)) {\n return target;\n }\n const correctedTarget = unwrapHost(target);\n if (parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n return null;\n}).filter(x => x != null);\nfunction applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert) {\n const markerName = 'data-floating-ui-inert';\n const controlAttribute = inert ? 'inert' : ariaHidden ? 'aria-hidden' : null;\n const avoidElements = correctElements(body, uncorrectedAvoidElements);\n const elementsToKeep = new Set();\n const elementsToStop = new Set(avoidElements);\n const hiddenElements = [];\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n const markerCounter = markerMap[markerName];\n avoidElements.forEach(keep);\n deep(body);\n elementsToKeep.clear();\n function keep(el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n el.parentNode && keep(el.parentNode);\n }\n function deep(parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n [].forEach.call(parent.children, node => {\n if (getNodeName(node) === 'script') return;\n if (elementsToKeep.has(node)) {\n deep(node);\n } else {\n const attr = controlAttribute ? node.getAttribute(controlAttribute) : null;\n const alreadyHidden = attr !== null && attr !== 'false';\n const counterMap = getCounterMap(controlAttribute);\n const counterValue = (counterMap.get(node) || 0) + 1;\n const markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenElements.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledElementsSet.add(node);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, '');\n }\n if (!alreadyHidden && controlAttribute) {\n node.setAttribute(controlAttribute, controlAttribute === 'inert' ? '' : 'true');\n }\n }\n });\n }\n lockCount$1++;\n return () => {\n hiddenElements.forEach(element => {\n const counterMap = getCounterMap(controlAttribute);\n const currentCounterValue = counterMap.get(element) || 0;\n const counterValue = currentCounterValue - 1;\n const markerValue = (markerCounter.get(element) || 0) - 1;\n counterMap.set(element, counterValue);\n markerCounter.set(element, markerValue);\n if (!counterValue) {\n if (!uncontrolledElementsSet.has(element) && controlAttribute) {\n element.removeAttribute(controlAttribute);\n }\n uncontrolledElementsSet.delete(element);\n }\n if (!markerValue) {\n element.removeAttribute(markerName);\n }\n });\n lockCount$1--;\n if (!lockCount$1) {\n counters.inert = new WeakMap();\n counters['aria-hidden'] = new WeakMap();\n counters.none = new WeakMap();\n uncontrolledElementsSet = new WeakSet();\n markerMap = {};\n }\n };\n}\nfunction markOthers(avoidElements, ariaHidden, inert) {\n if (ariaHidden === void 0) {\n ariaHidden = false;\n }\n if (inert === void 0) {\n inert = false;\n }\n const body = getDocument(avoidElements[0]).body;\n return applyAttributeToOthers(avoidElements.concat(Array.from(body.querySelectorAll('[aria-live],[role=\"status\"],output'))), body, ariaHidden, inert);\n}\n\nconst HIDDEN_STYLES = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'fixed',\n whiteSpace: 'nowrap',\n width: '1px',\n top: 0,\n left: 0\n};\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n const [role, setRole] = React.useState();\n useModernLayoutEffect(() => {\n if (isSafari()) {\n // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n // on VoiceOver does trigger the onFocus event, so we can use the focus\n // trap element. On Safari, only buttons trigger the onFocus event.\n // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n // button role.\n setRole('button');\n }\n }, []);\n const restProps = {\n ref,\n tabIndex: 0,\n // Role is only for VoiceOver\n role,\n 'aria-hidden': role ? undefined : true,\n [createAttribute('focus-guard')]: '',\n style: HIDDEN_STYLES\n };\n return /*#__PURE__*/jsx(\"span\", {\n ...props,\n ...restProps\n });\n});\n\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nconst attr = /*#__PURE__*/createAttribute('portal');\n/**\n * @see https://floating-ui.com/docs/FloatingPortal#usefloatingportalnode\n */\nfunction useFloatingPortalNode(props) {\n if (props === void 0) {\n props = {};\n }\n const {\n id,\n root\n } = props;\n const uniqueId = useId();\n const portalContext = usePortalContext();\n const [portalNode, setPortalNode] = React.useState(null);\n const portalNodeRef = React.useRef(null);\n useModernLayoutEffect(() => {\n return () => {\n portalNode == null || portalNode.remove();\n // Allow the subsequent layout effects to create a new node on updates.\n // The portal node will still be cleaned up on unmount.\n // https://github.com/floating-ui/floating-ui/issues/2454\n queueMicrotask(() => {\n portalNodeRef.current = null;\n });\n };\n }, [portalNode]);\n useModernLayoutEffect(() => {\n // Wait for the uniqueId to be generated before creating the portal node in\n // React <18 (using `useFloatingId` instead of the native `useId`).\n // https://github.com/floating-ui/floating-ui/issues/2778\n if (!uniqueId) return;\n if (portalNodeRef.current) return;\n const existingIdRoot = id ? document.getElementById(id) : null;\n if (!existingIdRoot) return;\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n existingIdRoot.appendChild(subRoot);\n portalNodeRef.current = subRoot;\n setPortalNode(subRoot);\n }, [id, uniqueId]);\n useModernLayoutEffect(() => {\n // Wait for the root to exist before creating the portal node. The root must\n // be stored in state, not a ref, for this to work reactively.\n if (root === null) return;\n if (!uniqueId) return;\n if (portalNodeRef.current) return;\n let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n if (container && !isNode(container)) container = container.current;\n container = container || document.body;\n let idWrapper = null;\n if (id) {\n idWrapper = document.createElement('div');\n idWrapper.id = id;\n container.appendChild(idWrapper);\n }\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n container = idWrapper || container;\n container.appendChild(subRoot);\n portalNodeRef.current = subRoot;\n setPortalNode(subRoot);\n }, [id, root, uniqueId, portalContext]);\n return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * This is necessary to ensure the floating element can appear outside any\n * potential parent containers that cause clipping (such as `overflow: hidden`),\n * while retaining its location in the React tree.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(props) {\n const {\n children,\n id,\n root,\n preserveTabOrder = true\n } = props;\n const portalNode = useFloatingPortalNode({\n id,\n root\n });\n const [focusManagerState, setFocusManagerState] = React.useState(null);\n const beforeOutsideRef = React.useRef(null);\n const afterOutsideRef = React.useRef(null);\n const beforeInsideRef = React.useRef(null);\n const afterInsideRef = React.useRef(null);\n const modal = focusManagerState == null ? void 0 : focusManagerState.modal;\n const open = focusManagerState == null ? void 0 : focusManagerState.open;\n const shouldRenderGuards =\n // The FocusManager and therefore floating element are currently open/\n // rendered.\n !!focusManagerState &&\n // Guards are only for non-modal focus management.\n !focusManagerState.modal &&\n // Don't render if unmount is transitioning.\n focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n React.useEffect(() => {\n if (!portalNode || !preserveTabOrder || modal) {\n return;\n }\n\n // Make sure elements inside the portal element are tabbable only when the\n // portal has already been focused, either by tabbing into a focus trap\n // element outside or using the mouse.\n function onFocus(event) {\n if (portalNode && isOutsideEvent(event)) {\n const focusing = event.type === 'focusin';\n const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n manageFocus(portalNode);\n }\n }\n // Listen to the event on the capture phase so they run before the focus\n // trap elements onFocus prop is called.\n portalNode.addEventListener('focusin', onFocus, true);\n portalNode.addEventListener('focusout', onFocus, true);\n return () => {\n portalNode.removeEventListener('focusin', onFocus, true);\n portalNode.removeEventListener('focusout', onFocus, true);\n };\n }, [portalNode, preserveTabOrder, modal]);\n React.useEffect(() => {\n if (!portalNode) return;\n if (open) return;\n enableFocusInside(portalNode);\n }, [open, portalNode]);\n return /*#__PURE__*/jsxs(PortalContext.Provider, {\n value: React.useMemo(() => ({\n preserveTabOrder,\n beforeOutsideRef,\n afterOutsideRef,\n beforeInsideRef,\n afterInsideRef,\n portalNode,\n setFocusManagerState\n }), [preserveTabOrder, portalNode]),\n children: [shouldRenderGuards && portalNode && /*#__PURE__*/jsx(FocusGuard, {\n \"data-type\": \"outside\",\n ref: beforeOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _beforeInsideRef$curr;\n (_beforeInsideRef$curr = beforeInsideRef.current) == null || _beforeInsideRef$curr.focus();\n } else {\n const domReference = focusManagerState ? focusManagerState.domReference : null;\n const prevTabbable = getPreviousTabbable(domReference);\n prevTabbable == null || prevTabbable.focus();\n }\n }\n }), shouldRenderGuards && portalNode && /*#__PURE__*/jsx(\"span\", {\n \"aria-owns\": portalNode.id,\n style: HIDDEN_STYLES\n }), portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/jsx(FocusGuard, {\n \"data-type\": \"outside\",\n ref: afterOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _afterInsideRef$curre;\n (_afterInsideRef$curre = afterInsideRef.current) == null || _afterInsideRef$curre.focus();\n } else {\n const domReference = focusManagerState ? focusManagerState.domReference : null;\n const nextTabbable = getNextTabbable(domReference);\n nextTabbable == null || nextTabbable.focus();\n (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent, 'focus-out'));\n }\n }\n })]\n });\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nfunction useLiteMergeRefs(refs) {\n return React.useMemo(() => {\n return value => {\n refs.forEach(ref => {\n if (ref) {\n ref.current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements = [];\nfunction clearDisconnectedPreviouslyFocusedElements() {\n previouslyFocusedElements = previouslyFocusedElements.filter(el => el.isConnected);\n}\nfunction addPreviouslyFocusedElement(element) {\n clearDisconnectedPreviouslyFocusedElements();\n if (element && getNodeName(element) !== 'body') {\n previouslyFocusedElements.push(element);\n if (previouslyFocusedElements.length > LIST_LIMIT) {\n previouslyFocusedElements = previouslyFocusedElements.slice(-20);\n }\n }\n}\nfunction getPreviouslyFocusedElement() {\n clearDisconnectedPreviouslyFocusedElements();\n return previouslyFocusedElements[previouslyFocusedElements.length - 1];\n}\nfunction getFirstTabbableElement(container) {\n const tabbableOptions = getTabbableOptions();\n if (isTabbable(container, tabbableOptions)) {\n return container;\n }\n return tabbable(container, tabbableOptions)[0] || container;\n}\nfunction handleTabIndex(floatingFocusElement, orderRef) {\n var _floatingFocusElement;\n if (!orderRef.current.includes('floating') && !((_floatingFocusElement = floatingFocusElement.getAttribute('role')) != null && _floatingFocusElement.includes('dialog'))) {\n return;\n }\n const options = getTabbableOptions();\n const focusableElements = focusable(floatingFocusElement, options);\n const tabbableContent = focusableElements.filter(element => {\n const dataTabIndex = element.getAttribute('data-tabindex') || '';\n return isTabbable(element, options) || element.hasAttribute('data-tabindex') && !dataTabIndex.startsWith('-');\n });\n const tabIndex = floatingFocusElement.getAttribute('tabindex');\n if (orderRef.current.includes('floating') || tabbableContent.length === 0) {\n if (tabIndex !== '0') {\n floatingFocusElement.setAttribute('tabindex', '0');\n }\n } else if (tabIndex !== '-1' || floatingFocusElement.hasAttribute('data-tabindex') && floatingFocusElement.getAttribute('data-tabindex') !== '-1') {\n floatingFocusElement.setAttribute('tabindex', '-1');\n floatingFocusElement.setAttribute('data-tabindex', '-1');\n }\n}\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n return /*#__PURE__*/jsx(\"button\", {\n ...props,\n type: \"button\",\n ref: ref,\n tabIndex: -1,\n style: HIDDEN_STYLES\n });\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n const {\n context,\n children,\n disabled = false,\n order = ['content'],\n guards: _guards = true,\n initialFocus = 0,\n returnFocus = true,\n restoreFocus = false,\n modal = true,\n visuallyHiddenDismiss = false,\n closeOnFocusOut = true,\n outsideElementsInert = false,\n getInsideElements: _getInsideElements = () => []\n } = props;\n const {\n open,\n onOpenChange,\n events,\n dataRef,\n elements: {\n domReference,\n floating\n }\n } = context;\n const getNodeId = useEffectEvent(() => {\n var _dataRef$current$floa;\n return (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n });\n const getInsideElements = useEffectEvent(_getInsideElements);\n const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n // If the reference is a combobox and is typeable (e.g. input/textarea),\n // there are different focus semantics. The guards should not be rendered, but\n // aria-hidden should be applied to all nodes still. Further, the visually\n // hidden dismiss button should only appear at the end of the list, not the\n // start.\n const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;\n\n // Force the guards to be rendered if the `inert` attribute is not supported.\n const inertSupported = supportsInert();\n const guards = inertSupported ? _guards : true;\n const useInert = !guards || inertSupported && outsideElementsInert;\n const orderRef = useLatestRef(order);\n const initialFocusRef = useLatestRef(initialFocus);\n const returnFocusRef = useLatestRef(returnFocus);\n const tree = useFloatingTree();\n const portalContext = usePortalContext();\n const startDismissButtonRef = React.useRef(null);\n const endDismissButtonRef = React.useRef(null);\n const preventReturnFocusRef = React.useRef(false);\n const isPointerDownRef = React.useRef(false);\n const tabbableIndexRef = React.useRef(-1);\n const blurTimeoutRef = React.useRef(-1);\n const isInsidePortal = portalContext != null;\n const floatingFocusElement = getFloatingFocusElement(floating);\n const getTabbableContent = useEffectEvent(function (container) {\n if (container === void 0) {\n container = floatingFocusElement;\n }\n return container ? tabbable(container, getTabbableOptions()) : [];\n });\n const getTabbableElements = useEffectEvent(container => {\n const content = getTabbableContent(container);\n return orderRef.current.map(type => {\n if (domReference && type === 'reference') {\n return domReference;\n }\n if (floatingFocusElement && type === 'floating') {\n return floatingFocusElement;\n }\n return content;\n }).filter(Boolean).flat();\n });\n React.useEffect(() => {\n if (disabled) return;\n if (!modal) return;\n function onKeyDown(event) {\n if (event.key === 'Tab') {\n // The focus guards have nothing to focus, so we need to stop the event.\n if (contains$1(floatingFocusElement, activeElement(getDocument$1(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {\n stopEvent(event);\n }\n const els = getTabbableElements();\n const target = getTarget$1(event);\n if (orderRef.current[0] === 'reference' && target === domReference) {\n stopEvent(event);\n if (event.shiftKey) {\n enqueueFocus(els[els.length - 1]);\n } else {\n enqueueFocus(els[1]);\n }\n }\n if (orderRef.current[1] === 'floating' && target === floatingFocusElement && event.shiftKey) {\n stopEvent(event);\n enqueueFocus(els[0]);\n }\n }\n }\n const doc = getDocument$1(floatingFocusElement);\n doc.addEventListener('keydown', onKeyDown);\n return () => {\n doc.removeEventListener('keydown', onKeyDown);\n };\n }, [disabled, domReference, floatingFocusElement, modal, orderRef, isUntrappedTypeableCombobox, getTabbableContent, getTabbableElements]);\n React.useEffect(() => {\n if (disabled) return;\n if (!floating) return;\n function handleFocusIn(event) {\n const target = getTarget$1(event);\n const tabbableContent = getTabbableContent();\n const tabbableIndex = tabbableContent.indexOf(target);\n if (tabbableIndex !== -1) {\n tabbableIndexRef.current = tabbableIndex;\n }\n }\n floating.addEventListener('focusin', handleFocusIn);\n return () => {\n floating.removeEventListener('focusin', handleFocusIn);\n };\n }, [disabled, floating, getTabbableContent]);\n React.useEffect(() => {\n if (disabled) return;\n if (!closeOnFocusOut) return;\n\n // In Safari, buttons lose focus when pressing them.\n function handlePointerDown() {\n isPointerDownRef.current = true;\n setTimeout(() => {\n isPointerDownRef.current = false;\n });\n }\n function handleFocusOutside(event) {\n const relatedTarget = event.relatedTarget;\n const currentTarget = event.currentTarget;\n const target = getTarget$1(event);\n queueMicrotask(() => {\n const nodeId = getNodeId();\n const movedToUnrelatedNode = !(contains$1(domReference, relatedTarget) || contains$1(floating, relatedTarget) || contains$1(relatedTarget, floating) || contains$1(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute(createAttribute('focus-guard')) || tree && (getNodeChildren$1(tree.nodesRef.current, nodeId).find(node => {\n var _node$context, _node$context2;\n return contains$1((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains$1((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n }) || getNodeAncestors(tree.nodesRef.current, nodeId).find(node => {\n var _node$context3, _node$context4, _node$context5;\n return [(_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating, getFloatingFocusElement((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.floating)].includes(relatedTarget) || ((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.domReference) === relatedTarget;\n })));\n if (currentTarget === domReference && floatingFocusElement) {\n handleTabIndex(floatingFocusElement, orderRef);\n }\n\n // Restore focus to the previous tabbable element index to prevent\n // focus from being lost outside the floating tree.\n if (restoreFocus && currentTarget !== domReference && !(target != null && target.isConnected) && activeElement(getDocument$1(floatingFocusElement)) === getDocument$1(floatingFocusElement).body) {\n // Let `FloatingPortal` effect knows that focus is still inside the\n // floating tree.\n if (isHTMLElement(floatingFocusElement)) {\n floatingFocusElement.focus();\n }\n const prevTabbableIndex = tabbableIndexRef.current;\n const tabbableContent = getTabbableContent();\n const nodeToFocus = tabbableContent[prevTabbableIndex] || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;\n if (isHTMLElement(nodeToFocus)) {\n nodeToFocus.focus();\n }\n }\n\n // https://github.com/floating-ui/floating-ui/issues/3060\n if (dataRef.current.insideReactTree) {\n dataRef.current.insideReactTree = false;\n return;\n }\n\n // Focus did not move inside the floating tree, and there are no tabbable\n // portal guards to handle closing.\n if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n // Fix React 18 Strict Mode returnFocus due to double rendering.\n relatedTarget !== getPreviouslyFocusedElement()) {\n preventReturnFocusRef.current = true;\n onOpenChange(false, event, 'focus-out');\n }\n });\n }\n const shouldHandleBlurCapture = Boolean(!tree && portalContext);\n function markInsideReactTree() {\n clearTimeoutIfSet(blurTimeoutRef);\n dataRef.current.insideReactTree = true;\n blurTimeoutRef.current = window.setTimeout(() => {\n dataRef.current.insideReactTree = false;\n });\n }\n if (floating && isHTMLElement(domReference)) {\n domReference.addEventListener('focusout', handleFocusOutside);\n domReference.addEventListener('pointerdown', handlePointerDown);\n floating.addEventListener('focusout', handleFocusOutside);\n if (shouldHandleBlurCapture) {\n floating.addEventListener('focusout', markInsideReactTree, true);\n }\n return () => {\n domReference.removeEventListener('focusout', handleFocusOutside);\n domReference.removeEventListener('pointerdown', handlePointerDown);\n floating.removeEventListener('focusout', handleFocusOutside);\n if (shouldHandleBlurCapture) {\n floating.removeEventListener('focusout', markInsideReactTree, true);\n }\n };\n }\n }, [disabled, domReference, floating, floatingFocusElement, modal, tree, portalContext, onOpenChange, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, orderRef, dataRef]);\n const beforeGuardRef = React.useRef(null);\n const afterGuardRef = React.useRef(null);\n const mergedBeforeGuardRef = useLiteMergeRefs([beforeGuardRef, portalContext == null ? void 0 : portalContext.beforeInsideRef]);\n const mergedAfterGuardRef = useLiteMergeRefs([afterGuardRef, portalContext == null ? void 0 : portalContext.afterInsideRef]);\n React.useEffect(() => {\n var _portalContext$portal, _ancestors$find;\n if (disabled) return;\n if (!floating) return;\n\n // Don't hide portals nested within the parent portal.\n const portalNodes = Array.from((portalContext == null || (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll(\"[\" + createAttribute('portal') + \"]\")) || []);\n const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : [];\n const rootAncestorComboboxDomReference = (_ancestors$find = ancestors.find(node => {\n var _node$context6;\n return isTypeableCombobox(((_node$context6 = node.context) == null ? void 0 : _node$context6.elements.domReference) || null);\n })) == null || (_ancestors$find = _ancestors$find.context) == null ? void 0 : _ancestors$find.elements.domReference;\n const insideElements = [floating, rootAncestorComboboxDomReference, ...portalNodes, ...getInsideElements(), startDismissButtonRef.current, endDismissButtonRef.current, beforeGuardRef.current, afterGuardRef.current, portalContext == null ? void 0 : portalContext.beforeOutsideRef.current, portalContext == null ? void 0 : portalContext.afterOutsideRef.current, orderRef.current.includes('reference') || isUntrappedTypeableCombobox ? domReference : null].filter(x => x != null);\n const cleanup = modal || isUntrappedTypeableCombobox ? markOthers(insideElements, !useInert, useInert) : markOthers(insideElements);\n return () => {\n cleanup();\n };\n }, [disabled, domReference, floating, modal, orderRef, portalContext, isUntrappedTypeableCombobox, guards, useInert, tree, getNodeId, getInsideElements]);\n useModernLayoutEffect(() => {\n if (disabled || !isHTMLElement(floatingFocusElement)) return;\n const doc = getDocument$1(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n\n // Wait for any layout effect state setters to execute to set `tabIndex`.\n queueMicrotask(() => {\n const focusableElements = getTabbableElements(floatingFocusElement);\n const initialFocusValue = initialFocusRef.current;\n const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floatingFocusElement;\n const focusAlreadyInsideFloatingEl = contains$1(floatingFocusElement, previouslyFocusedElement);\n if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n enqueueFocus(elToFocus, {\n preventScroll: elToFocus === floatingFocusElement\n });\n }\n });\n }, [disabled, open, floatingFocusElement, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n useModernLayoutEffect(() => {\n if (disabled || !floatingFocusElement) return;\n const doc = getDocument$1(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n addPreviouslyFocusedElement(previouslyFocusedElement);\n\n // Dismissing via outside press should always ignore `returnFocus` to\n // prevent unwanted scrolling.\n function onOpenChange(_ref) {\n let {\n reason,\n event,\n nested\n } = _ref;\n if (['hover', 'safe-polygon'].includes(reason) && event.type === 'mouseleave') {\n preventReturnFocusRef.current = true;\n }\n if (reason !== 'outside-press') return;\n if (nested) {\n preventReturnFocusRef.current = false;\n } else if (isVirtualClick(event) || isVirtualPointerEvent(event)) {\n preventReturnFocusRef.current = false;\n } else {\n let isPreventScrollSupported = false;\n document.createElement('div').focus({\n get preventScroll() {\n isPreventScrollSupported = true;\n return false;\n }\n });\n if (isPreventScrollSupported) {\n preventReturnFocusRef.current = false;\n } else {\n preventReturnFocusRef.current = true;\n }\n }\n }\n events.on('openchange', onOpenChange);\n const fallbackEl = doc.createElement('span');\n fallbackEl.setAttribute('tabindex', '-1');\n fallbackEl.setAttribute('aria-hidden', 'true');\n Object.assign(fallbackEl.style, HIDDEN_STYLES);\n if (isInsidePortal && domReference) {\n domReference.insertAdjacentElement('afterend', fallbackEl);\n }\n function getReturnElement() {\n if (typeof returnFocusRef.current === 'boolean') {\n const el = domReference || getPreviouslyFocusedElement();\n return el && el.isConnected ? el : fallbackEl;\n }\n return returnFocusRef.current.current || fallbackEl;\n }\n return () => {\n events.off('openchange', onOpenChange);\n const activeEl = activeElement(doc);\n const isFocusInsideFloatingTree = contains$1(floating, activeEl) || tree && getNodeChildren$1(tree.nodesRef.current, getNodeId(), false).some(node => {\n var _node$context7;\n return contains$1((_node$context7 = node.context) == null ? void 0 : _node$context7.elements.floating, activeEl);\n });\n const returnElement = getReturnElement();\n queueMicrotask(() => {\n // This is `returnElement`, if it's tabbable, or its first tabbable child.\n const tabbableReturnElement = getFirstTabbableElement(returnElement);\n if (\n // eslint-disable-next-line react-hooks/exhaustive-deps\n returnFocusRef.current && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && (\n // If the focus moved somewhere else after mount, avoid returning focus\n // since it likely entered a different element which should be\n // respected: https://github.com/floating-ui/floating-ui/issues/2607\n tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {\n tabbableReturnElement.focus({\n preventScroll: true\n });\n }\n fallbackEl.remove();\n });\n };\n }, [disabled, floating, floatingFocusElement, returnFocusRef, dataRef, events, tree, isInsidePortal, domReference, getNodeId]);\n React.useEffect(() => {\n // The `returnFocus` cleanup behavior is inside a microtask; ensure we\n // wait for it to complete before resetting the flag.\n queueMicrotask(() => {\n preventReturnFocusRef.current = false;\n });\n return () => {\n queueMicrotask(clearDisconnectedPreviouslyFocusedElements);\n };\n }, [disabled]);\n\n // Synchronize the `context` & `modal` value to the FloatingPortal context.\n // It will decide whether or not it needs to render its own guards.\n useModernLayoutEffect(() => {\n if (disabled) return;\n if (!portalContext) return;\n portalContext.setFocusManagerState({\n modal,\n closeOnFocusOut,\n open,\n onOpenChange,\n domReference\n });\n return () => {\n portalContext.setFocusManagerState(null);\n };\n }, [disabled, portalContext, modal, open, onOpenChange, closeOnFocusOut, domReference]);\n useModernLayoutEffect(() => {\n if (disabled) return;\n if (!floatingFocusElement) return;\n handleTabIndex(floatingFocusElement, orderRef);\n }, [disabled, floatingFocusElement, orderRef]);\n function renderDismissButton(location) {\n if (disabled || !visuallyHiddenDismiss || !modal) {\n return null;\n }\n return /*#__PURE__*/jsx(VisuallyHiddenDismiss, {\n ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n onClick: event => onOpenChange(false, event.nativeEvent),\n children: typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss'\n });\n }\n const shouldRenderGuards = !disabled && guards && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);\n return /*#__PURE__*/jsxs(Fragment, {\n children: [shouldRenderGuards && /*#__PURE__*/jsx(FocusGuard, {\n \"data-type\": \"inside\",\n ref: mergedBeforeGuardRef,\n onFocus: event => {\n if (modal) {\n const els = getTabbableElements();\n enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n preventReturnFocusRef.current = false;\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const nextTabbable = getNextTabbable(domReference);\n nextTabbable == null || nextTabbable.focus();\n } else {\n var _portalContext$before;\n (_portalContext$before = portalContext.beforeOutsideRef.current) == null || _portalContext$before.focus();\n }\n }\n }\n }), !isUntrappedTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/jsx(FocusGuard, {\n \"data-type\": \"inside\",\n ref: mergedAfterGuardRef,\n onFocus: event => {\n if (modal) {\n enqueueFocus(getTabbableElements()[0]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n if (closeOnFocusOut) {\n preventReturnFocusRef.current = true;\n }\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const prevTabbable = getPreviousTabbable(domReference);\n prevTabbable == null || prevTabbable.focus();\n } else {\n var _portalContext$afterO;\n (_portalContext$afterO = portalContext.afterOutsideRef.current) == null || _portalContext$afterO.focus();\n }\n }\n }\n })]\n });\n}\n\nlet lockCount = 0;\nconst scrollbarProperty = '--floating-ui-scrollbar-width';\nfunction enableScrollLock() {\n const platform = getPlatform();\n const isIOS = /iP(hone|ad|od)|iOS/.test(platform) ||\n // iPads can claim to be MacIntel\n platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n const bodyStyle = document.body.style;\n // RTL <body> scrollbar\n const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.scrollX;\n const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.scrollY;\n bodyStyle.overflow = 'hidden';\n bodyStyle.setProperty(scrollbarProperty, scrollbarWidth + \"px\");\n if (scrollbarWidth) {\n bodyStyle[paddingProp] = scrollbarWidth + \"px\";\n }\n\n // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n // technique has fewer side effects.\n if (isIOS) {\n var _window$visualViewpor, _window$visualViewpor2;\n // iOS 12 does not support `visualViewport`.\n const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n Object.assign(bodyStyle, {\n position: 'fixed',\n top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n right: '0'\n });\n }\n return () => {\n Object.assign(bodyStyle, {\n overflow: '',\n [paddingProp]: ''\n });\n bodyStyle.removeProperty(scrollbarProperty);\n if (isIOS) {\n Object.assign(bodyStyle, {\n position: '',\n top: '',\n left: '',\n right: ''\n });\n window.scrollTo(scrollX, scrollY);\n }\n };\n}\nlet cleanup = () => {};\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(props, ref) {\n const {\n lockScroll = false,\n ...rest\n } = props;\n useModernLayoutEffect(() => {\n if (!lockScroll) return;\n lockCount++;\n if (lockCount === 1) {\n cleanup = enableScrollLock();\n }\n return () => {\n lockCount--;\n if (lockCount === 0) {\n cleanup();\n }\n };\n }, [lockScroll]);\n return /*#__PURE__*/jsx(\"div\", {\n ref: ref,\n ...rest,\n style: {\n position: 'fixed',\n overflow: 'auto',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...rest.style\n }\n });\n});\n\nfunction isButtonTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isAnchorTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === 'A';\n}\nfunction isSpaceIgnored(element) {\n return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n elements: {\n domReference\n }\n } = context;\n const {\n enabled = true,\n event: eventOption = 'click',\n toggle = true,\n ignoreMouse = false,\n keyboardHandlers = true,\n stickIfOpen = true\n } = props;\n const pointerTypeRef = React.useRef();\n const didKeyDownRef = React.useRef(false);\n const reference = React.useMemo(() => ({\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n const pointerType = pointerTypeRef.current;\n\n // Ignore all buttons except for the \"main\" button.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button !== 0) return;\n if (eventOption === 'click') return;\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n // Prevent stealing focus from the floating element\n event.preventDefault();\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onClick(event) {\n const pointerType = pointerTypeRef.current;\n if (eventOption === 'mousedown' && pointerTypeRef.current) {\n pointerTypeRef.current = undefined;\n return;\n }\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'click' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onKeyDown(event) {\n pointerTypeRef.current = undefined;\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n return;\n }\n if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n // Prevent scrolling\n event.preventDefault();\n didKeyDownRef.current = true;\n }\n if (isAnchorTarget(event)) {\n return;\n }\n if (event.key === 'Enter') {\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n },\n onKeyUp(event) {\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n return;\n }\n if (event.key === ' ' && didKeyDownRef.current) {\n didKeyDownRef.current = false;\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n }\n }), [dataRef, domReference, eventOption, ignoreMouse, keyboardHandlers, onOpenChange, open, stickIfOpen, toggle]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nfunction createVirtualElement(domElement, data) {\n let offsetX = null;\n let offsetY = null;\n let isAutoUpdateEvent = false;\n return {\n contextElement: domElement || undefined,\n getBoundingClientRect() {\n var _data$dataRef$current;\n const domRect = (domElement == null ? void 0 : domElement.getBoundingClientRect()) || {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n const isXAxis = data.axis === 'x' || data.axis === 'both';\n const isYAxis = data.axis === 'y' || data.axis === 'both';\n const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n let width = domRect.width;\n let height = domRect.height;\n let x = domRect.x;\n let y = domRect.y;\n if (offsetX == null && data.x && isXAxis) {\n offsetX = domRect.x - data.x;\n }\n if (offsetY == null && data.y && isYAxis) {\n offsetY = domRect.y - data.y;\n }\n x -= offsetX || 0;\n y -= offsetY || 0;\n width = 0;\n height = 0;\n if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n width = data.axis === 'y' ? domRect.width : 0;\n height = data.axis === 'x' ? domRect.height : 0;\n x = isXAxis && data.x != null ? data.x : x;\n y = isYAxis && data.y != null ? data.y : y;\n } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n height = data.axis === 'x' ? domRect.height : height;\n width = data.axis === 'y' ? domRect.width : width;\n }\n isAutoUpdateEvent = true;\n return {\n width,\n height,\n x,\n y,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x\n };\n }\n };\n}\nfunction isMouseBasedEvent(event) {\n return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n dataRef,\n elements: {\n floating,\n domReference\n },\n refs\n } = context;\n const {\n enabled = true,\n axis = 'both',\n x = null,\n y = null\n } = props;\n const initialRef = React.useRef(false);\n const cleanupListenerRef = React.useRef(null);\n const [pointerType, setPointerType] = React.useState();\n const [reactive, setReactive] = React.useState([]);\n const setReference = useEffectEvent((x, y) => {\n if (initialRef.current) return;\n\n // Prevent setting if the open event was not a mouse-like one\n // (e.g. focus to open, then hover over the reference element).\n // Only apply if the event exists.\n if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n return;\n }\n refs.setPositionReference(createVirtualElement(domReference, {\n x,\n y,\n axis,\n dataRef,\n pointerType\n }));\n });\n const handleReferenceEnterOrMove = useEffectEvent(event => {\n if (x != null || y != null) return;\n if (!open) {\n setReference(event.clientX, event.clientY);\n } else if (!cleanupListenerRef.current) {\n // If there's no cleanup, there's no listener, but we want to ensure\n // we add the listener if the cursor landed on the floating element and\n // then back on the reference (i.e. it's interactive).\n setReactive([]);\n }\n });\n\n // If the pointer is a mouse-like pointer, we want to continue following the\n // mouse even if the floating element is transitioning out. On touch\n // devices, this is undesirable because the floating element will move to\n // the dismissal touch point.\n const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n const addListener = React.useCallback(() => {\n // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n if (!openCheck || !enabled || x != null || y != null) return;\n const win = getWindow(floating);\n function handleMouseMove(event) {\n const target = getTarget$1(event);\n if (!contains$1(floating, target)) {\n setReference(event.clientX, event.clientY);\n } else {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n }\n }\n if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n win.addEventListener('mousemove', handleMouseMove);\n const cleanup = () => {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n };\n cleanupListenerRef.current = cleanup;\n return cleanup;\n }\n refs.setPositionReference(domReference);\n }, [openCheck, enabled, x, y, floating, dataRef, refs, domReference, setReference]);\n React.useEffect(() => {\n return addListener();\n }, [addListener, reactive]);\n React.useEffect(() => {\n if (enabled && !floating) {\n initialRef.current = false;\n }\n }, [enabled, floating]);\n React.useEffect(() => {\n if (!enabled && open) {\n initialRef.current = true;\n }\n }, [enabled, open]);\n useModernLayoutEffect(() => {\n if (enabled && (x != null || y != null)) {\n initialRef.current = false;\n setReference(x, y);\n }\n }, [enabled, x, y, setReference]);\n const reference = React.useMemo(() => {\n function setPointerTypeRef(_ref) {\n let {\n pointerType\n } = _ref;\n setPointerType(pointerType);\n }\n return {\n onPointerDown: setPointerTypeRef,\n onPointerEnter: setPointerTypeRef,\n onMouseMove: handleReferenceEnterOrMove,\n onMouseEnter: handleReferenceEnterOrMove\n };\n }, [handleReferenceEnterOrMove]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nconst bubbleHandlerKeys = {\n pointerdown: 'onPointerDown',\n mousedown: 'onMouseDown',\n click: 'onClick'\n};\nconst captureHandlerKeys = {\n pointerdown: 'onPointerDownCapture',\n mousedown: 'onMouseDownCapture',\n click: 'onClickCapture'\n};\nconst normalizeProp = normalizable => {\n var _normalizable$escapeK, _normalizable$outside;\n return {\n escapeKey: typeof normalizable === 'boolean' ? normalizable : (_normalizable$escapeK = normalizable == null ? void 0 : normalizable.escapeKey) != null ? _normalizable$escapeK : false,\n outsidePress: typeof normalizable === 'boolean' ? normalizable : (_normalizable$outside = normalizable == null ? void 0 : normalizable.outsidePress) != null ? _normalizable$outside : true\n };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n elements,\n dataRef\n } = context;\n const {\n enabled = true,\n escapeKey = true,\n outsidePress: unstable_outsidePress = true,\n outsidePressEvent = 'pointerdown',\n referencePress = false,\n referencePressEvent = 'pointerdown',\n ancestorScroll = false,\n bubbles,\n capture\n } = props;\n const tree = useFloatingTree();\n const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n const endedOrStartedInsideRef = React.useRef(false);\n const {\n escapeKey: escapeKeyBubbles,\n outsidePress: outsidePressBubbles\n } = normalizeProp(bubbles);\n const {\n escapeKey: escapeKeyCapture,\n outsidePress: outsidePressCapture\n } = normalizeProp(capture);\n const isComposingRef = React.useRef(false);\n const closeOnEscapeKeyDown = useEffectEvent(event => {\n var _dataRef$current$floa;\n if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n return;\n }\n\n // Wait until IME is settled. Pressing `Escape` while composing should\n // close the compose menu, but not the floating element.\n if (isComposingRef.current) {\n return;\n }\n const nodeId = (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n const children = tree ? getNodeChildren$1(tree.nodesRef.current, nodeId) : [];\n if (!escapeKeyBubbles) {\n event.stopPropagation();\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context;\n if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n }\n onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event, 'escape-key');\n });\n const closeOnEscapeKeyDownCapture = useEffectEvent(event => {\n var _getTarget2;\n const callback = () => {\n var _getTarget;\n closeOnEscapeKeyDown(event);\n (_getTarget = getTarget$1(event)) == null || _getTarget.removeEventListener('keydown', callback);\n };\n (_getTarget2 = getTarget$1(event)) == null || _getTarget2.addEventListener('keydown', callback);\n });\n const closeOnPressOutside = useEffectEvent(event => {\n var _dataRef$current$floa2;\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = dataRef.current.insideReactTree;\n dataRef.current.insideReactTree = false;\n\n // When click outside is lazy (`click` event), handle dragging.\n // Don't close if:\n // - The click started inside the floating element.\n // - The click ended inside the floating element.\n const endedOrStartedInside = endedOrStartedInsideRef.current;\n endedOrStartedInsideRef.current = false;\n if (outsidePressEvent === 'click' && endedOrStartedInside) {\n return;\n }\n if (insideReactTree) {\n return;\n }\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n const target = getTarget$1(event);\n const inertSelector = \"[\" + createAttribute('inert') + \"]\";\n const markers = getDocument$1(elements.floating).querySelectorAll(inertSelector);\n let targetRootAncestor = isElement(target) ? target : null;\n while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n const nextParent = getParentNode(targetRootAncestor);\n if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n break;\n }\n targetRootAncestor = nextParent;\n }\n\n // Check if the click occurred on a third-party element injected after the\n // floating element rendered.\n if (markers.length && isElement(target) && !isRootElement(target) &&\n // Clicked on a direct ancestor (e.g. FloatingOverlay).\n !contains$1(target, elements.floating) &&\n // If the target root element contains none of the markers, then the\n // element was injected after the floating element rendered.\n Array.from(markers).every(marker => !contains$1(targetRootAncestor, marker))) {\n return;\n }\n\n // Check if the click occurred on the scrollbar\n if (isHTMLElement(target) && floating) {\n const lastTraversableNode = isLastTraversableNode(target);\n const style = getComputedStyle(target);\n const scrollRe = /auto|scroll/;\n const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);\n const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY);\n const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n const isRTL = style.direction === 'rtl';\n\n // Check click position relative to scrollbar.\n // In some browsers it is possible to change the <body> (or window)\n // scrollbar to the left side, but is very rare and is difficult to\n // check for. Plus, for modal dialogs with backdrops, it is more\n // important that the backdrop is checked but not so much the window.\n const pressedVerticalScrollbar = canScrollY && (isRTL ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);\n const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;\n if (pressedVerticalScrollbar || pressedHorizontalScrollbar) {\n return;\n }\n }\n const nodeId = (_dataRef$current$floa2 = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa2.nodeId;\n const targetIsInsideChildren = tree && getNodeChildren$1(tree.nodesRef.current, nodeId).some(node => {\n var _node$context;\n return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n });\n if (isEventTargetWithin(event, elements.floating) || isEventTargetWithin(event, elements.domReference) || targetIsInsideChildren) {\n return;\n }\n const children = tree ? getNodeChildren$1(tree.nodesRef.current, nodeId) : [];\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context2;\n if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n onOpenChange(false, event, 'outside-press');\n });\n const closeOnPressOutsideCapture = useEffectEvent(event => {\n var _getTarget4;\n const callback = () => {\n var _getTarget3;\n closeOnPressOutside(event);\n (_getTarget3 = getTarget$1(event)) == null || _getTarget3.removeEventListener(outsidePressEvent, callback);\n };\n (_getTarget4 = getTarget$1(event)) == null || _getTarget4.addEventListener(outsidePressEvent, callback);\n });\n React.useEffect(() => {\n if (!open || !enabled) {\n return;\n }\n dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n let compositionTimeout = -1;\n function onScroll(event) {\n onOpenChange(false, event, 'ancestor-scroll');\n }\n function handleCompositionStart() {\n window.clearTimeout(compositionTimeout);\n isComposingRef.current = true;\n }\n function handleCompositionEnd() {\n // Safari fires `compositionend` before `keydown`, so we need to wait\n // until the next tick to set `isComposing` to `false`.\n // https://bugs.webkit.org/show_bug.cgi?id=165004\n compositionTimeout = window.setTimeout(() => {\n isComposingRef.current = false;\n },\n // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.\n // Only apply to WebKit for the test to remain 0ms.\n isWebKit() ? 5 : 0);\n }\n const doc = getDocument$1(elements.floating);\n if (escapeKey) {\n doc.addEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n doc.addEventListener('compositionstart', handleCompositionStart);\n doc.addEventListener('compositionend', handleCompositionEnd);\n }\n outsidePress && doc.addEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n let ancestors = [];\n if (ancestorScroll) {\n if (isElement(elements.domReference)) {\n ancestors = getOverflowAncestors(elements.domReference);\n }\n if (isElement(elements.floating)) {\n ancestors = ancestors.concat(getOverflowAncestors(elements.floating));\n }\n if (!isElement(elements.reference) && elements.reference && elements.reference.contextElement) {\n ancestors = ancestors.concat(getOverflowAncestors(elements.reference.contextElement));\n }\n }\n\n // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n ancestors = ancestors.filter(ancestor => {\n var _doc$defaultView;\n return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n });\n ancestors.forEach(ancestor => {\n ancestor.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n return () => {\n if (escapeKey) {\n doc.removeEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n doc.removeEventListener('compositionstart', handleCompositionStart);\n doc.removeEventListener('compositionend', handleCompositionEnd);\n }\n outsidePress && doc.removeEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n ancestors.forEach(ancestor => {\n ancestor.removeEventListener('scroll', onScroll);\n });\n window.clearTimeout(compositionTimeout);\n };\n }, [dataRef, elements, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, escapeKeyCapture, closeOnEscapeKeyDownCapture, closeOnPressOutside, outsidePressCapture, closeOnPressOutsideCapture]);\n React.useEffect(() => {\n dataRef.current.insideReactTree = false;\n }, [dataRef, outsidePress, outsidePressEvent]);\n const reference = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n ...(referencePress && {\n [bubbleHandlerKeys[referencePressEvent]]: event => {\n onOpenChange(false, event.nativeEvent, 'reference-press');\n },\n ...(referencePressEvent !== 'click' && {\n onClick(event) {\n onOpenChange(false, event.nativeEvent, 'reference-press');\n }\n })\n })\n }), [closeOnEscapeKeyDown, onOpenChange, referencePress, referencePressEvent]);\n const floating = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n onMouseDown() {\n endedOrStartedInsideRef.current = true;\n },\n onMouseUp() {\n endedOrStartedInsideRef.current = true;\n },\n [captureHandlerKeys[outsidePressEvent]]: () => {\n dataRef.current.insideReactTree = true;\n }\n }), [closeOnEscapeKeyDown, outsidePressEvent, dataRef]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nfunction useFloatingRootContext(options) {\n const {\n open = false,\n onOpenChange: onOpenChangeProp,\n elements: elementsProp\n } = options;\n const floatingId = useId();\n const dataRef = React.useRef({});\n const [events] = React.useState(() => createEventEmitter());\n const nested = useFloatingParentNodeId() != null;\n if (process.env.NODE_ENV !== \"production\") {\n const optionDomReference = elementsProp.reference;\n if (optionDomReference && !isElement(optionDomReference)) {\n error('Cannot pass a virtual element to the `elements.reference` option,', 'as it must be a real DOM element. Use `refs.setPositionReference()`', 'instead.');\n }\n }\n const [positionReference, setPositionReference] = React.useState(elementsProp.reference);\n const onOpenChange = useEffectEvent((open, event, reason) => {\n dataRef.current.openEvent = open ? event : undefined;\n events.emit('openchange', {\n open,\n event,\n reason,\n nested\n });\n onOpenChangeProp == null || onOpenChangeProp(open, event, reason);\n });\n const refs = React.useMemo(() => ({\n setPositionReference\n }), []);\n const elements = React.useMemo(() => ({\n reference: positionReference || elementsProp.reference || null,\n floating: elementsProp.floating || null,\n domReference: elementsProp.reference\n }), [positionReference, elementsProp.reference, elementsProp.floating]);\n return React.useMemo(() => ({\n dataRef,\n open,\n onOpenChange,\n elements,\n events,\n floatingId,\n refs\n }), [open, onOpenChange, elements, events, floatingId, refs]);\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n nodeId\n } = options;\n const internalRootContext = useFloatingRootContext({\n ...options,\n elements: {\n reference: null,\n floating: null,\n ...options.elements\n }\n });\n const rootContext = options.rootContext || internalRootContext;\n const computedElements = rootContext.elements;\n const [_domReference, setDomReference] = React.useState(null);\n const [positionReference, _setPositionReference] = React.useState(null);\n const optionDomReference = computedElements == null ? void 0 : computedElements.domReference;\n const domReference = optionDomReference || _domReference;\n const domReferenceRef = React.useRef(null);\n const tree = useFloatingTree();\n useModernLayoutEffect(() => {\n if (domReference) {\n domReferenceRef.current = domReference;\n }\n }, [domReference]);\n const position = useFloating$1({\n ...options,\n elements: {\n ...computedElements,\n ...(positionReference && {\n reference: positionReference\n })\n }\n });\n const setPositionReference = React.useCallback(node => {\n const computedPositionReference = isElement(node) ? {\n getBoundingClientRect: () => node.getBoundingClientRect(),\n getClientRects: () => node.getClientRects(),\n contextElement: node\n } : node;\n // Store the positionReference in state if the DOM reference is specified externally via the\n // `elements.reference` option. This ensures that it won't be overridden on future renders.\n _setPositionReference(computedPositionReference);\n position.refs.setReference(computedPositionReference);\n }, [position.refs]);\n const setReference = React.useCallback(node => {\n if (isElement(node) || node === null) {\n domReferenceRef.current = node;\n setDomReference(node);\n }\n\n // Backwards-compatibility for passing a virtual element to `reference`\n // after it has set the DOM reference.\n if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n // Don't allow setting virtual elements using the old technique back to\n // `null` to support `positionReference` + an unstable `reference`\n // callback ref.\n node !== null && !isElement(node)) {\n position.refs.setReference(node);\n }\n }, [position.refs]);\n const refs = React.useMemo(() => ({\n ...position.refs,\n setReference,\n setPositionReference,\n domReference: domReferenceRef\n }), [position.refs, setReference, setPositionReference]);\n const elements = React.useMemo(() => ({\n ...position.elements,\n domReference: domReference\n }), [position.elements, domReference]);\n const context = React.useMemo(() => ({\n ...position,\n ...rootContext,\n refs,\n elements,\n nodeId\n }), [position, refs, elements, nodeId, rootContext]);\n useModernLayoutEffect(() => {\n rootContext.dataRef.current.floatingContext = context;\n const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n if (node) {\n node.context = context;\n }\n });\n return React.useMemo(() => ({\n ...position,\n context,\n refs,\n elements\n }), [position, refs, elements, context]);\n}\n\nfunction isMacSafari() {\n return isMac() && isSafari();\n}\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n events,\n dataRef,\n elements\n } = context;\n const {\n enabled = true,\n visibleOnly = true\n } = props;\n const blockFocusRef = React.useRef(false);\n const timeoutRef = React.useRef(-1);\n const keyboardModalityRef = React.useRef(true);\n React.useEffect(() => {\n if (!enabled) return;\n const win = getWindow(elements.domReference);\n\n // If the reference was focused and the user left the tab/window, and the\n // floating element was not open, the focus should be blocked when they\n // return to the tab/window.\n function onBlur() {\n if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument$1(elements.domReference))) {\n blockFocusRef.current = true;\n }\n }\n function onKeyDown() {\n keyboardModalityRef.current = true;\n }\n function onPointerDown() {\n keyboardModalityRef.current = false;\n }\n win.addEventListener('blur', onBlur);\n if (isMacSafari()) {\n win.addEventListener('keydown', onKeyDown, true);\n win.addEventListener('pointerdown', onPointerDown, true);\n }\n return () => {\n win.removeEventListener('blur', onBlur);\n if (isMacSafari()) {\n win.removeEventListener('keydown', onKeyDown, true);\n win.removeEventListener('pointerdown', onPointerDown, true);\n }\n };\n }, [elements.domReference, open, enabled]);\n React.useEffect(() => {\n if (!enabled) return;\n function onOpenChange(_ref) {\n let {\n reason\n } = _ref;\n if (reason === 'reference-press' || reason === 'escape-key') {\n blockFocusRef.current = true;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [events, enabled]);\n React.useEffect(() => {\n return () => {\n clearTimeoutIfSet(timeoutRef);\n };\n }, []);\n const reference = React.useMemo(() => ({\n onMouseLeave() {\n blockFocusRef.current = false;\n },\n onFocus(event) {\n if (blockFocusRef.current) return;\n const target = getTarget$1(event.nativeEvent);\n if (visibleOnly && isElement(target)) {\n // Safari fails to match `:focus-visible` if focus was initially\n // outside the document.\n if (isMacSafari() && !event.relatedTarget) {\n if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n return;\n }\n } else if (!matchesFocusVisible(target)) {\n return;\n }\n }\n onOpenChange(true, event.nativeEvent, 'focus');\n },\n onBlur(event) {\n blockFocusRef.current = false;\n const relatedTarget = event.relatedTarget;\n const nativeEvent = event.nativeEvent;\n\n // Hit the non-modal focus management portal guard. Focus will be\n // moved into the floating element immediately after.\n const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute('focus-guard')) && relatedTarget.getAttribute('data-type') === 'outside';\n\n // Wait for the window blur listener to fire.\n timeoutRef.current = window.setTimeout(() => {\n var _dataRef$current$floa;\n const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);\n\n // Focus left the page, keep it open.\n if (!relatedTarget && activeEl === elements.domReference) return;\n\n // When focusing the reference element (e.g. regular click), then\n // clicking into the floating element, prevent it from hiding.\n // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n // We can not rely on relatedTarget to point to the correct element\n // as it will only point to the shadow host of the newly focused element\n // and not the element that actually has received focus if it is located\n // inside a shadow root.\n if (contains$1((_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.refs.floating.current, activeEl) || contains$1(elements.domReference, activeEl) || movedToFocusGuard) {\n return;\n }\n onOpenChange(false, nativeEvent, 'focus');\n });\n }\n }), [dataRef, elements.domReference, onOpenChange, visibleOnly]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nfunction mergeProps(userProps, propsList, elementKey) {\n const map = new Map();\n const isItem = elementKey === 'item';\n let domUserProps = userProps;\n if (isItem && userProps) {\n const {\n [ACTIVE_KEY]: _,\n [SELECTED_KEY]: __,\n ...validProps\n } = userProps;\n domUserProps = validProps;\n }\n return {\n ...(elementKey === 'floating' && {\n tabIndex: -1,\n [FOCUSABLE_ATTRIBUTE]: ''\n }),\n ...domUserProps,\n ...propsList.map(value => {\n const propsOrGetProps = value ? value[elementKey] : null;\n if (typeof propsOrGetProps === 'function') {\n return userProps ? propsOrGetProps(userProps) : null;\n }\n return propsOrGetProps;\n }).concat(userProps).reduce((acc, props) => {\n if (!props) {\n return acc;\n }\n Object.entries(props).forEach(_ref => {\n let [key, value] = _ref;\n if (isItem && [ACTIVE_KEY, SELECTED_KEY].includes(key)) {\n return;\n }\n if (key.indexOf('on') === 0) {\n if (!map.has(key)) {\n map.set(key, []);\n }\n if (typeof value === 'function') {\n var _map$get;\n (_map$get = map.get(key)) == null || _map$get.push(value);\n acc[key] = function () {\n var _map$get2;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n };\n }\n } else {\n acc[key] = value;\n }\n });\n return acc;\n }, {})\n };\n}\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/useInteractions\n */\nfunction useInteractions(propsList) {\n if (propsList === void 0) {\n propsList = [];\n }\n const referenceDeps = propsList.map(key => key == null ? void 0 : key.reference);\n const floatingDeps = propsList.map(key => key == null ? void 0 : key.floating);\n const itemDeps = propsList.map(key => key == null ? void 0 : key.item);\n const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n referenceDeps);\n const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n floatingDeps);\n const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n itemDeps);\n return React.useMemo(() => ({\n getReferenceProps,\n getFloatingProps,\n getItemProps\n }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nconst ESCAPE = 'Escape';\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case 'vertical':\n return vertical;\n case 'horizontal':\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl, cols) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n if (orientation === 'both' || orientation === 'horizontal' && cols && cols > 1) {\n return key === ESCAPE;\n }\n return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nfunction useListNavigation(context, props) {\n const {\n open,\n onOpenChange,\n elements,\n floatingId\n } = context;\n const {\n listRef,\n activeIndex,\n onNavigate: unstable_onNavigate = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loop = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = 'auto',\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = undefined,\n orientation = 'vertical',\n parentOrientation,\n cols = 1,\n scrollItemIntoView = true,\n virtualItemRef,\n itemSizes,\n dense = false\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (allowEscape) {\n if (!loop) {\n warn('`useListNavigation` looping must be enabled to allow escaping.');\n }\n if (!virtual) {\n warn('`useListNavigation` must be virtual to allow escaping.');\n }\n }\n if (orientation === 'vertical' && cols > 1) {\n warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n }\n }\n const floatingFocusElement = getFloatingFocusElement(elements.floating);\n const floatingFocusElementRef = useLatestRef(floatingFocusElement);\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree();\n useModernLayoutEffect(() => {\n context.dataRef.current.orientation = orientation;\n }, [context, orientation]);\n const onNavigate = useEffectEvent(() => {\n unstable_onNavigate(indexRef.current === -1 ? null : indexRef.current);\n });\n const typeableComboboxReference = isTypeableCombobox(elements.domReference);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const previousOnNavigateRef = React.useRef(onNavigate);\n const previousMountedRef = React.useRef(!!elements.floating);\n const previousOpenRef = React.useRef(open);\n const forceSyncFocusRef = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const disabledIndicesRef = useLatestRef(disabledIndices);\n const latestOpenRef = useLatestRef(open);\n const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n const selectedIndexRef = useLatestRef(selectedIndex);\n const [activeId, setActiveId] = React.useState();\n const [virtualId, setVirtualId] = React.useState();\n const focusItem = useEffectEvent(() => {\n function runFocus(item) {\n if (virtual) {\n var _item$id;\n if ((_item$id = item.id) != null && _item$id.endsWith('-fui-option')) {\n item.id = floatingId + \"-\" + Math.random().toString(16).slice(2, 10);\n }\n setActiveId(item.id);\n tree == null || tree.events.emit('virtualfocus', item);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n } else {\n enqueueFocus(item, {\n sync: forceSyncFocusRef.current,\n preventScroll: true\n });\n }\n }\n const initialItem = listRef.current[indexRef.current];\n const forceScrollIntoView = forceScrollIntoViewRef.current;\n if (initialItem) {\n runFocus(initialItem);\n }\n const scheduler = forceSyncFocusRef.current ? v => v() : requestAnimationFrame;\n scheduler(() => {\n const waitedItem = listRef.current[indexRef.current] || initialItem;\n if (!waitedItem) return;\n if (!initialItem) {\n runFocus(waitedItem);\n }\n const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n const shouldScrollIntoView = scrollIntoViewOptions && item && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n // by all browsers.\n waitedItem.scrollIntoView == null || waitedItem.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n block: 'nearest',\n inline: 'nearest'\n } : scrollIntoViewOptions);\n }\n });\n });\n\n // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n // element. Also, reset `activeIndex` upon closing the floating element.\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (open && elements.floating) {\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n // Regardless of the pointer modality, we want to ensure the selected\n // item comes into view when the floating element is opened.\n forceScrollIntoViewRef.current = true;\n indexRef.current = selectedIndex;\n onNavigate();\n }\n } else if (previousMountedRef.current) {\n // Since the user can specify `onNavigate` conditionally\n // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n // we store and call the previous function.\n indexRef.current = -1;\n previousOnNavigateRef.current();\n }\n }, [enabled, open, elements.floating, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (!open) return;\n if (!elements.floating) return;\n if (activeIndex == null) {\n forceSyncFocusRef.current = false;\n if (selectedIndexRef.current != null) {\n return;\n }\n\n // Reset while the floating element was open (e.g. the list changed).\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem();\n }\n\n // Initial sync.\n if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n // Avoid letting the browser paint if possible on the first try,\n // otherwise use rAF. Don't try more than twice, since something\n // is wrong otherwise.\n if (runs < 2) {\n const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs++;\n } else {\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef, disabledIndicesRef.current) : getMaxListIndex(listRef, disabledIndicesRef.current);\n keyRef.current = null;\n onNavigate();\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfListBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem();\n forceScrollIntoViewRef.current = false;\n }\n }, [enabled, open, elements.floating, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n // Ensure the parent floating element has focus when a nested child closes\n // to allow arrow key navigation to work after the pointer leaves the child.\n useModernLayoutEffect(() => {\n var _nodes$find;\n if (!enabled || elements.floating || !tree || virtual || !previousMountedRef.current) {\n return;\n }\n const nodes = tree.nodesRef.current;\n const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null || (_nodes$find = _nodes$find.context) == null ? void 0 : _nodes$find.elements.floating;\n const activeEl = activeElement(getDocument$1(elements.floating));\n const treeContainsActiveEl = nodes.some(node => node.context && contains$1(node.context.elements.floating, activeEl));\n if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n parent.focus({\n preventScroll: true\n });\n }\n }, [enabled, elements.floating, tree, parentId, virtual]);\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (!tree) return;\n if (!virtual) return;\n if (parentId) return;\n function handleVirtualFocus(item) {\n setVirtualId(item.id);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n }\n tree.events.on('virtualfocus', handleVirtualFocus);\n return () => {\n tree.events.off('virtualfocus', handleVirtualFocus);\n };\n }, [enabled, tree, virtual, parentId, virtualItemRef]);\n useModernLayoutEffect(() => {\n previousOnNavigateRef.current = onNavigate;\n previousOpenRef.current = open;\n previousMountedRef.current = !!elements.floating;\n });\n useModernLayoutEffect(() => {\n if (!open) {\n keyRef.current = null;\n focusItemOnOpenRef.current = focusItemOnOpen;\n }\n }, [open, focusItemOnOpen]);\n const hasActiveIndex = activeIndex != null;\n const item = React.useMemo(() => {\n function syncCurrentTarget(currentTarget) {\n if (!latestOpenRef.current) return;\n const index = listRef.current.indexOf(currentTarget);\n if (index !== -1 && indexRef.current !== index) {\n indexRef.current = index;\n onNavigate();\n }\n }\n const props = {\n onFocus(_ref) {\n let {\n currentTarget\n } = _ref;\n forceSyncFocusRef.current = true;\n syncCurrentTarget(currentTarget);\n },\n onClick: _ref2 => {\n let {\n currentTarget\n } = _ref2;\n return currentTarget.focus({\n preventScroll: true\n });\n },\n // Safari\n onMouseMove(_ref3) {\n let {\n currentTarget\n } = _ref3;\n forceSyncFocusRef.current = true;\n forceScrollIntoViewRef.current = false;\n if (focusItemOnHover) {\n syncCurrentTarget(currentTarget);\n }\n },\n onPointerLeave(_ref4) {\n let {\n pointerType\n } = _ref4;\n if (!isPointerModalityRef.current || pointerType === 'touch') {\n return;\n }\n forceSyncFocusRef.current = true;\n if (!focusItemOnHover) {\n return;\n }\n indexRef.current = -1;\n onNavigate();\n if (!virtual) {\n var _floatingFocusElement;\n (_floatingFocusElement = floatingFocusElementRef.current) == null || _floatingFocusElement.focus({\n preventScroll: true\n });\n }\n }\n };\n return props;\n }, [latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, virtual]);\n const getParentOrientation = React.useCallback(() => {\n var _tree$nodesRef$curren;\n return parentOrientation != null ? parentOrientation : tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.dataRef) == null ? void 0 : _tree$nodesRef$curren.current.orientation;\n }, [parentId, tree, parentOrientation]);\n const commonOnKeyDown = useEffectEvent(event => {\n isPointerModalityRef.current = false;\n forceSyncFocusRef.current = true;\n\n // When composing a character, Chrome fires ArrowDown twice. Firefox/Safari\n // don't appear to suffer from this. `event.isComposing` is avoided due to\n // Safari not supporting it properly (although it's not needed in the first\n // place for Safari, just avoiding any possible issues).\n if (event.which === 229) {\n return;\n }\n\n // If the floating element is animating out, ignore navigation. Otherwise,\n // the `activeIndex` gets set to 0 despite not being open so the next time\n // the user ArrowDowns, the first item won't be focused.\n if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, cols)) {\n // If the nested list's close key is also the parent navigation key,\n // let the parent navigate. Otherwise, stop propagating the event.\n if (!isMainOrientationKey(event.key, getParentOrientation())) {\n stopEvent(event);\n }\n onOpenChange(false, event.nativeEvent, 'list-navigation');\n if (isHTMLElement(elements.domReference)) {\n if (virtual) {\n tree == null || tree.events.emit('virtualfocus', elements.domReference);\n } else {\n elements.domReference.focus();\n }\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinListIndex(listRef, disabledIndices);\n const maxIndex = getMaxListIndex(listRef, disabledIndices);\n if (!typeableComboboxReference) {\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate();\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate();\n }\n }\n\n // Grid navigation.\n if (cols > 1) {\n const sizes = itemSizes || Array.from({\n length: listRef.current.length\n }, () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = createGridCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(listRef, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(listRef, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const index = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex != null ? listRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loop,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || listRef.current.map((_, index) => isListIndexDisabled(listRef, index, disabledIndices) ? index : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getGridCellIndexOfCorner(indexRef.current > maxIndex ? minIndex : indexRef.current, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction\n // we're moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n event.key === ARROW_DOWN ? 'bl' : event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT) ? 'tr' : 'tl'),\n stopEvent: true\n })];\n if (index != null) {\n indexRef.current = index;\n onNavigate();\n }\n if (orientation === 'both') {\n return;\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n\n // Reset the index if no item is focused.\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate();\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loop) {\n indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else {\n if (loop) {\n indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n }\n if (isIndexOutOfListBounds(listRef, indexRef.current)) {\n indexRef.current = -1;\n }\n onNavigate();\n }\n });\n const ariaActiveDescendantProp = React.useMemo(() => {\n return virtual && open && hasActiveIndex && {\n 'aria-activedescendant': virtualId || activeId\n };\n }, [virtual, open, hasActiveIndex, virtualId, activeId]);\n const floating = React.useMemo(() => {\n return {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...(!typeableComboboxReference ? ariaActiveDescendantProp : {}),\n onKeyDown: commonOnKeyDown,\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n };\n }, [ariaActiveDescendantProp, commonOnKeyDown, orientation, typeableComboboxReference]);\n const reference = React.useMemo(() => {\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n function checkVirtualPointer(event) {\n // `pointerdown` fires first, reset the state then perform the checks.\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n return {\n ...ariaActiveDescendantProp,\n onKeyDown(event) {\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.startsWith('Arrow');\n const isHomeOrEndKey = ['Home', 'End'].includes(event.key);\n const isMoveKey = isArrowKey || isHomeOrEndKey;\n const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n const isCrossCloseKey = isCrossOrientationCloseKey(event.key, orientation, rtl, cols);\n const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n if (virtual && open) {\n const rootNode = tree == null ? void 0 : tree.nodesRef.current.find(node => node.parentId == null);\n const deepestNode = tree && rootNode ? getDeepestNode(tree.nodesRef.current, rootNode.id) : null;\n if (isMoveKey && deepestNode && virtualItemRef) {\n const eventObject = new KeyboardEvent('keydown', {\n key: event.key,\n bubbles: true\n });\n if (isCrossOpenKey || isCrossCloseKey) {\n var _deepestNode$context, _deepestNode$context2;\n const isCurrentTarget = ((_deepestNode$context = deepestNode.context) == null ? void 0 : _deepestNode$context.elements.domReference) === event.currentTarget;\n const dispatchItem = isCrossCloseKey && !isCurrentTarget ? (_deepestNode$context2 = deepestNode.context) == null ? void 0 : _deepestNode$context2.elements.domReference : isCrossOpenKey ? listRef.current.find(item => (item == null ? void 0 : item.id) === activeId) : null;\n if (dispatchItem) {\n stopEvent(event);\n dispatchItem.dispatchEvent(eventObject);\n setVirtualId(undefined);\n }\n }\n if ((isMainKey || isHomeOrEndKey) && deepestNode.context) {\n if (deepestNode.context.open && deepestNode.parentId && event.currentTarget !== deepestNode.context.elements.domReference) {\n var _deepestNode$context$;\n stopEvent(event);\n (_deepestNode$context$ = deepestNode.context.elements.domReference) == null || _deepestNode$context$.dispatchEvent(eventObject);\n return;\n }\n }\n }\n return commonOnKeyDown(event);\n }\n // If a floating element should not open on arrow key down, avoid\n // setting `activeIndex` while it's closed.\n if (!open && !openOnArrowKeyDown && isArrowKey) {\n return;\n }\n if (isNavigationKey) {\n const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation());\n keyRef.current = nested && isParentMainKey ? null : event.key;\n }\n if (nested) {\n if (isParentCrossOpenKey) {\n stopEvent(event);\n if (open) {\n indexRef.current = getMinListIndex(listRef, disabledIndicesRef.current);\n onNavigate();\n } else {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n }\n }\n return;\n }\n if (isMainKey) {\n if (selectedIndex != null) {\n indexRef.current = selectedIndex;\n }\n stopEvent(event);\n if (!open && openOnArrowKeyDown) {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n } else {\n commonOnKeyDown(event);\n }\n if (open) {\n onNavigate();\n }\n }\n },\n onFocus() {\n if (open && !virtual) {\n indexRef.current = -1;\n onNavigate();\n }\n },\n onPointerDown: checkVirtualPointer,\n onPointerEnter: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n };\n }, [activeId, ariaActiveDescendantProp, cols, commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, onOpenChange, open, openOnArrowKeyDown, orientation, getParentOrientation, rtl, selectedIndex, tree, virtual, virtualItemRef]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item\n } : {}, [enabled, reference, floating, item]);\n}\n\nconst componentRoleToAriaRoleMap = /*#__PURE__*/new Map([['select', 'listbox'], ['combobox', 'listbox'], ['label', false]]);\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n var _elements$domReferenc, _componentRoleToAriaR;\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n elements,\n floatingId: defaultFloatingId\n } = context;\n const {\n enabled = true,\n role = 'dialog'\n } = props;\n const defaultReferenceId = useId();\n const referenceId = ((_elements$domReferenc = elements.domReference) == null ? void 0 : _elements$domReferenc.id) || defaultReferenceId;\n const floatingId = React.useMemo(() => {\n var _getFloatingFocusElem;\n return ((_getFloatingFocusElem = getFloatingFocusElement(elements.floating)) == null ? void 0 : _getFloatingFocusElem.id) || defaultFloatingId;\n }, [elements.floating, defaultFloatingId]);\n const ariaRole = (_componentRoleToAriaR = componentRoleToAriaRoleMap.get(role)) != null ? _componentRoleToAriaR : role;\n const parentId = useFloatingParentNodeId();\n const isNested = parentId != null;\n const reference = React.useMemo(() => {\n if (ariaRole === 'tooltip' || role === 'label') {\n return {\n [\"aria-\" + (role === 'label' ? 'labelledby' : 'describedby')]: open ? floatingId : undefined\n };\n }\n return {\n 'aria-expanded': open ? 'true' : 'false',\n 'aria-haspopup': ariaRole === 'alertdialog' ? 'dialog' : ariaRole,\n 'aria-controls': open ? floatingId : undefined,\n ...(ariaRole === 'listbox' && {\n role: 'combobox'\n }),\n ...(ariaRole === 'menu' && {\n id: referenceId\n }),\n ...(ariaRole === 'menu' && isNested && {\n role: 'menuitem'\n }),\n ...(role === 'select' && {\n 'aria-autocomplete': 'none'\n }),\n ...(role === 'combobox' && {\n 'aria-autocomplete': 'list'\n })\n };\n }, [ariaRole, floatingId, isNested, open, referenceId, role]);\n const floating = React.useMemo(() => {\n const floatingProps = {\n id: floatingId,\n ...(ariaRole && {\n role: ariaRole\n })\n };\n if (ariaRole === 'tooltip' || role === 'label') {\n return floatingProps;\n }\n return {\n ...floatingProps,\n ...(ariaRole === 'menu' && {\n 'aria-labelledby': referenceId\n })\n };\n }, [ariaRole, floatingId, referenceId, role]);\n const item = React.useCallback(_ref => {\n let {\n active,\n selected\n } = _ref;\n const commonProps = {\n role: 'option',\n ...(active && {\n id: floatingId + \"-fui-option\"\n })\n };\n\n // For `menu`, we are unable to tell if the item is a `menuitemradio`\n // or `menuitemcheckbox`. For backwards-compatibility reasons, also\n // avoid defaulting to `menuitem` as it may overwrite custom role props.\n switch (role) {\n case 'select':\n case 'combobox':\n return {\n ...commonProps,\n 'aria-selected': selected\n };\n }\n return {};\n }, [floatingId, role]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item\n } : {}, [enabled, reference, floating, item]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n const [isMounted, setIsMounted] = React.useState(open);\n if (open && !isMounted) {\n setIsMounted(true);\n }\n React.useEffect(() => {\n if (!open && isMounted) {\n const timeout = setTimeout(() => setIsMounted(false), durationMs);\n return () => clearTimeout(timeout);\n }\n }, [open, isMounted, durationMs]);\n return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n elements: {\n floating\n }\n } = context;\n const {\n duration = 250\n } = props;\n const isNumberDuration = typeof duration === 'number';\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [status, setStatus] = React.useState('unmounted');\n const isMounted = useDelayUnmount(open, closeDuration);\n if (!isMounted && status === 'close') {\n setStatus('unmounted');\n }\n useModernLayoutEffect(() => {\n if (!floating) return;\n if (open) {\n setStatus('initial');\n const frame = requestAnimationFrame(() => {\n // Ensure it opens before paint. With `FloatingDelayGroup`,\n // this avoids a flicker when moving between floating elements\n // to ensure one is always open with no missing frames.\n ReactDOM.flushSync(() => {\n setStatus('open');\n });\n });\n return () => {\n cancelAnimationFrame(frame);\n };\n }\n setStatus('close');\n }, [open, floating]);\n return {\n isMounted,\n status\n };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n initial: unstable_initial = {\n opacity: 0\n },\n open: unstable_open,\n close: unstable_close,\n common: unstable_common,\n duration = 250\n } = props;\n const placement = context.placement;\n const side = placement.split('-')[0];\n const fnArgs = React.useMemo(() => ({\n side,\n placement\n }), [side, placement]);\n const isNumberDuration = typeof duration === 'number';\n const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [styles, setStyles] = React.useState(() => ({\n ...execWithArgsOrReturn(unstable_common, fnArgs),\n ...execWithArgsOrReturn(unstable_initial, fnArgs)\n }));\n const {\n isMounted,\n status\n } = useTransitionStatus(context, {\n duration\n });\n const initialRef = useLatestRef(unstable_initial);\n const openRef = useLatestRef(unstable_open);\n const closeRef = useLatestRef(unstable_close);\n const commonRef = useLatestRef(unstable_common);\n useModernLayoutEffect(() => {\n const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n acc[key] = '';\n return acc;\n }, {});\n if (status === 'initial') {\n setStyles(styles => ({\n transitionProperty: styles.transitionProperty,\n ...commonStyles,\n ...initialStyles\n }));\n }\n if (status === 'open') {\n setStyles({\n transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n transitionDuration: openDuration + \"ms\",\n ...commonStyles,\n ...openStyles\n });\n }\n if (status === 'close') {\n const styles = closeStyles || initialStyles;\n setStyles({\n transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n transitionDuration: closeDuration + \"ms\",\n ...commonStyles,\n ...styles\n });\n }\n }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n return {\n isMounted,\n styles\n };\n}\n\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nfunction useTypeahead(context, props) {\n var _ref;\n const {\n open,\n dataRef\n } = context;\n const {\n listRef,\n activeIndex,\n onMatch: unstable_onMatch,\n onTypingChange: unstable_onTypingChange,\n enabled = true,\n findMatch = null,\n resetMs = 750,\n ignoreKeys = [],\n selectedIndex = null\n } = props;\n const timeoutIdRef = React.useRef(-1);\n const stringRef = React.useRef('');\n const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n const matchIndexRef = React.useRef(null);\n const onMatch = useEffectEvent(unstable_onMatch);\n const onTypingChange = useEffectEvent(unstable_onTypingChange);\n const findMatchRef = useLatestRef(findMatch);\n const ignoreKeysRef = useLatestRef(ignoreKeys);\n useModernLayoutEffect(() => {\n if (open) {\n clearTimeoutIfSet(timeoutIdRef);\n matchIndexRef.current = null;\n stringRef.current = '';\n }\n }, [open]);\n useModernLayoutEffect(() => {\n // Sync arrow key navigation but not typeahead navigation.\n if (open && stringRef.current === '') {\n var _ref2;\n prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n }\n }, [open, selectedIndex, activeIndex]);\n const setTypingChange = useEffectEvent(value => {\n if (value) {\n if (!dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n } else {\n if (dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n }\n });\n const onKeyDown = useEffectEvent(event => {\n function getMatchingIndex(list, orderedList, string) {\n const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : text.toLocaleLowerCase().indexOf(string.toLocaleLowerCase())) === 0);\n return str ? list.indexOf(str) : -1;\n }\n const listContent = listRef.current;\n if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n setTypingChange(false);\n } else if (event.key === ' ') {\n stopEvent(event);\n }\n }\n if (listContent == null || ignoreKeysRef.current.includes(event.key) ||\n // Character key.\n event.key.length !== 1 ||\n // Modifier key.\n event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n if (open && event.key !== ' ') {\n stopEvent(event);\n setTypingChange(true);\n }\n\n // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n // allow it in this case, too.\n const allowRapidSuccessionOfFirstLetter = listContent.every(text => {\n var _text$, _text$2;\n return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n });\n\n // Allows the user to cycle through items that start with the same letter\n // in rapid succession.\n if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n }\n stringRef.current += event.key;\n clearTimeoutIfSet(timeoutIdRef);\n timeoutIdRef.current = window.setTimeout(() => {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n }, resetMs);\n const prevIndex = prevIndexRef.current;\n const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n if (index !== -1) {\n onMatch(index);\n matchIndexRef.current = index;\n } else if (event.key !== ' ') {\n stringRef.current = '';\n setTypingChange(false);\n }\n });\n const reference = React.useMemo(() => ({\n onKeyDown\n }), [onKeyDown]);\n const floating = React.useMemo(() => {\n return {\n onKeyDown,\n onKeyUp(event) {\n if (event.key === ' ') {\n setTypingChange(false);\n }\n }\n };\n }, [onKeyDown, setTypingChange]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n return {\n ...state,\n rects: {\n ...state.rects,\n floating: {\n ...state.rects.floating,\n height\n }\n }\n };\n}\n/**\n * Positions the floating element such that an inner element inside of it is\n * anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n * @deprecated\n */\nconst inner = props => ({\n name: 'inner',\n options: props,\n async fn(state) {\n const {\n listRef,\n overflowRef,\n onFallbackChange,\n offset: innerOffset = 0,\n index = 0,\n minItemsVisible = 4,\n referenceOverflowThreshold = 0,\n scrollRef,\n ...detectOverflowOptions\n } = evaluate(props, state);\n const {\n rects,\n elements: {\n floating\n }\n } = state;\n const item = listRef.current[index];\n const scrollEl = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n\n // Valid combinations:\n // 1. Floating element is the scrollRef and has a border (default)\n // 2. Floating element is not the scrollRef, floating element has a border\n // 3. Floating element is not the scrollRef, scrollRef has a border\n // Floating > {...getFloatingProps()} wrapper > scrollRef > items is not\n // allowed as VoiceOver doesn't work.\n const clientTop = floating.clientTop || scrollEl.clientTop;\n const floatingIsBordered = floating.clientTop !== 0;\n const scrollElIsBordered = scrollEl.clientTop !== 0;\n const floatingIsScrollEl = floating === scrollEl;\n if (process.env.NODE_ENV !== \"production\") {\n if (!state.placement.startsWith('bottom')) {\n warn('`placement` side must be \"bottom\" when using the `inner`', 'middleware.');\n }\n }\n if (!item) {\n return {};\n }\n const nextArgs = {\n ...state,\n ...(await offset(-item.offsetTop - floating.clientTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n };\n const overflow = await detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, scrollEl.scrollHeight + clientTop + floating.clientTop), detectOverflowOptions);\n const refOverflow = await detectOverflow(nextArgs, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const diffY = max(0, overflow.top);\n const nextY = nextArgs.y + diffY;\n const isScrollable = scrollEl.scrollHeight > scrollEl.clientHeight;\n const rounder = isScrollable ? v => v : round;\n const maxHeight = rounder(max(0, scrollEl.scrollHeight + (floatingIsBordered && floatingIsScrollEl || scrollElIsBordered ? clientTop * 2 : 0) - diffY - max(0, overflow.bottom)));\n scrollEl.style.maxHeight = maxHeight + \"px\";\n scrollEl.scrollTop = diffY;\n\n // There is not enough space, fallback to standard anchored positioning\n if (onFallbackChange) {\n const shouldFallback = scrollEl.offsetHeight < item.offsetHeight * min(minItemsVisible, listRef.current.length) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold;\n ReactDOM.flushSync(() => onFallbackChange(shouldFallback));\n }\n if (overflowRef) {\n overflowRef.current = await detectOverflow(getArgsWithCustomFloatingHeight({\n ...nextArgs,\n y: nextY\n }, scrollEl.offsetHeight + clientTop + floating.clientTop), detectOverflowOptions);\n }\n return {\n y: nextY\n };\n }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n * @deprecated\n */\nfunction useInnerOffset(context, props) {\n const {\n open,\n elements\n } = context;\n const {\n enabled = true,\n overflowRef,\n scrollRef,\n onChange: unstable_onChange\n } = props;\n const onChange = useEffectEvent(unstable_onChange);\n const controlledScrollingRef = React.useRef(false);\n const prevScrollTopRef = React.useRef(null);\n const initialOverflowRef = React.useRef(null);\n React.useEffect(() => {\n if (!enabled) return;\n function onWheel(e) {\n if (e.ctrlKey || !el || overflowRef.current == null) {\n return;\n }\n const dY = e.deltaY;\n const isAtTop = overflowRef.current.top >= -0.5;\n const isAtBottom = overflowRef.current.bottom >= -0.5;\n const remainingScroll = el.scrollHeight - el.clientHeight;\n const sign = dY < 0 ? -1 : 1;\n const method = dY < 0 ? 'max' : 'min';\n if (el.scrollHeight <= el.clientHeight) {\n return;\n }\n if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n e.preventDefault();\n ReactDOM.flushSync(() => {\n onChange(d => d + Math[method](dY, remainingScroll * sign));\n });\n } else if (/firefox/i.test(getUserAgent())) {\n // Needed to propagate scrolling during momentum scrolling phase once\n // it gets limited by the boundary. UX improvement, not critical.\n el.scrollTop += dY;\n }\n }\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (open && el) {\n el.addEventListener('wheel', onWheel);\n\n // Wait for the position to be ready.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n if (overflowRef.current != null) {\n initialOverflowRef.current = {\n ...overflowRef.current\n };\n }\n });\n return () => {\n prevScrollTopRef.current = null;\n initialOverflowRef.current = null;\n el.removeEventListener('wheel', onWheel);\n };\n }\n }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n const floating = React.useMemo(() => ({\n onKeyDown() {\n controlledScrollingRef.current = true;\n },\n onWheel() {\n controlledScrollingRef.current = false;\n },\n onPointerMove() {\n controlledScrollingRef.current = false;\n },\n onScroll() {\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n return;\n }\n if (prevScrollTopRef.current !== null) {\n const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n ReactDOM.flushSync(() => onChange(d => d + scrollDiff));\n }\n }\n\n // [Firefox] Wait for the height change to have been applied.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n });\n }\n }), [elements.floating, onChange, overflowRef, scrollRef]);\n return React.useMemo(() => enabled ? {\n floating\n } : {}, [enabled, floating]);\n}\n\nfunction getNodeChildren(nodes, id, onlyOpenChildren) {\n if (onlyOpenChildren === void 0) {\n onlyOpenChildren = true;\n }\n const directChildren = nodes.filter(node => {\n var _node$context;\n return node.parentId === id && (!onlyOpenChildren || ((_node$context = node.context) == null ? void 0 : _node$context.open));\n });\n return directChildren.flatMap(child => [child, ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n const [x, y] = point;\n let isInside = false;\n const length = polygon.length;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const [xi, yi] = polygon[i] || [0, 0];\n const [xj, yj] = polygon[j] || [0, 0];\n const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) {\n isInside = !isInside;\n }\n }\n return isInside;\n}\nfunction isInside(point, rect) {\n return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safepolygon\n */\nfunction safePolygon(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n buffer = 0.5,\n blockPointerEvents = false,\n requireIntent = true\n } = options;\n const timeoutRef = {\n current: -1\n };\n let hasLanded = false;\n let lastX = null;\n let lastY = null;\n let lastCursorTime = typeof performance !== 'undefined' ? performance.now() : 0;\n function getCursorSpeed(x, y) {\n const currentTime = performance.now();\n const elapsedTime = currentTime - lastCursorTime;\n if (lastX === null || lastY === null || elapsedTime === 0) {\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return null;\n }\n const deltaX = x - lastX;\n const deltaY = y - lastY;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n const speed = distance / elapsedTime; // px / ms\n\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return speed;\n }\n const fn = _ref => {\n let {\n x,\n y,\n placement,\n elements,\n onClose,\n nodeId,\n tree\n } = _ref;\n return function onMouseMove(event) {\n function close() {\n clearTimeoutIfSet(timeoutRef);\n onClose();\n }\n clearTimeoutIfSet(timeoutRef);\n if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n return;\n }\n const {\n clientX,\n clientY\n } = event;\n const clientPoint = [clientX, clientY];\n const target = getTarget(event);\n const isLeave = event.type === 'mouseleave';\n const isOverFloatingEl = contains(elements.floating, target);\n const isOverReferenceEl = contains(elements.domReference, target);\n const refRect = elements.domReference.getBoundingClientRect();\n const rect = elements.floating.getBoundingClientRect();\n const side = placement.split('-')[0];\n const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n const isOverReferenceRect = isInside(clientPoint, refRect);\n const isFloatingWider = rect.width > refRect.width;\n const isFloatingTaller = rect.height > refRect.height;\n const left = (isFloatingWider ? refRect : rect).left;\n const right = (isFloatingWider ? refRect : rect).right;\n const top = (isFloatingTaller ? refRect : rect).top;\n const bottom = (isFloatingTaller ? refRect : rect).bottom;\n if (isOverFloatingEl) {\n hasLanded = true;\n if (!isLeave) {\n return;\n }\n }\n if (isOverReferenceEl) {\n hasLanded = false;\n }\n if (isOverReferenceEl && !isLeave) {\n hasLanded = true;\n return;\n }\n\n // Prevent overlapping floating element from being stuck in an open-close\n // loop: https://github.com/floating-ui/floating-ui/issues/1910\n if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n return;\n }\n\n // If any nested child is open, abort.\n if (tree && getNodeChildren(tree.nodesRef.current, nodeId).length) {\n return;\n }\n\n // If the pointer is leaving from the opposite side, the \"buffer\" logic\n // creates a point where the floating element remains open, but should be\n // ignored.\n // A constant of 1 handles floating point rounding errors.\n if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n return close();\n }\n\n // Ignore when the cursor is within the rectangular trough between the\n // two elements. Since the triangle is created from the cursor point,\n // which can start beyond the ref element's edge, traversing back and\n // forth from the ref to the floating element can cause it to close. This\n // ensures it always remains open in that case.\n let rectPoly = [];\n switch (side) {\n case 'top':\n rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n break;\n case 'bottom':\n rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n break;\n case 'left':\n rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n break;\n case 'right':\n rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n break;\n }\n function getPolygon(_ref2) {\n let [x, y] = _ref2;\n switch (side) {\n case 'top':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'bottom':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'left':\n {\n const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n return [...commonPoints, cursorPointOne, cursorPointTwo];\n }\n case 'right':\n {\n const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n }\n }\n if (isPointInPolygon([clientX, clientY], rectPoly)) {\n return;\n }\n if (hasLanded && !isOverReferenceRect) {\n return close();\n }\n if (!isLeave && requireIntent) {\n const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n const cursorSpeedThreshold = 0.1;\n if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n return close();\n }\n }\n if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n close();\n } else if (!hasLanded && requireIntent) {\n timeoutRef.current = window.setTimeout(close, 40);\n }\n };\n };\n fn.__options = {\n blockPointerEvents\n };\n return fn;\n}\n\nexport { Composite, CompositeItem, FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, NextFloatingDelayGroup, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingRootContext, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useNextDelayGroup, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport { floor } from '@floating-ui/utils';\nimport { tabbable } from 'tabbable';\n\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData != null && uaData.platform) {\n return uaData.platform;\n }\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(_ref => {\n let {\n brand,\n version\n } = _ref;\n return brand + \"/\" + version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\nfunction isSafari() {\n // Chrome DevTools does not complain about navigator.vendor\n return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n const re = /android/i;\n return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n return getUserAgent().includes('jsdom/');\n}\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\n\nfunction activeElement(doc) {\n let activeElement = doc.activeElement;\n while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n var _activeElement;\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nfunction isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const e = event;\n return e.target != null && node.contains(e.target);\n}\nfunction isRootElement(element) {\n return element.matches('html,body');\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction isTypeableCombobox(element) {\n if (!element) return false;\n return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\nfunction matchesFocusVisible(element) {\n // We don't want to block focus from working with `visibleOnly`\n // (JSDOM doesn't match `:focus-visible` when the element has `:focus`)\n if (!element || isJSDOM()) return true;\n try {\n return element.matches(':focus-visible');\n } catch (_e) {\n return true;\n }\n}\nfunction getFloatingFocusElement(floatingElement) {\n if (!floatingElement) {\n return null;\n }\n // Try to find the element that has `{...getFloatingProps()}` spread on it.\n // This indicates the floating element is acting as a positioning wrapper, and\n // so focus should be managed on the child element with the event handlers and\n // aria props.\n return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(\"[\" + FOCUSABLE_ATTRIBUTE + \"]\") || floatingElement;\n}\n\nfunction getNodeChildren(nodes, id, onlyOpenChildren) {\n if (onlyOpenChildren === void 0) {\n onlyOpenChildren = true;\n }\n const directChildren = nodes.filter(node => {\n var _node$context;\n return node.parentId === id && (!onlyOpenChildren || ((_node$context = node.context) == null ? void 0 : _node$context.open));\n });\n return directChildren.flatMap(child => [child, ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);\n}\nfunction getDeepestNode(nodes, id) {\n let deepestNodeId;\n let maxDepth = -1;\n function findDeepest(nodeId, depth) {\n if (depth > maxDepth) {\n deepestNodeId = nodeId;\n maxDepth = depth;\n }\n const children = getNodeChildren(nodes, nodeId);\n children.forEach(child => {\n findDeepest(child.id, depth + 1);\n });\n }\n findDeepest(id, 0);\n return nodes.find(node => node.id === deepestNodeId);\n}\nfunction getNodeAncestors(nodes, id) {\n var _nodes$find;\n let allAncestors = [];\n let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n while (currentParentId) {\n const currentNode = nodes.find(node => node.id === currentParentId);\n currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n if (currentNode) {\n allAncestors = allAncestors.concat(currentNode);\n }\n }\n return allAncestors;\n}\n\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\nfunction isReactEvent(event) {\n return 'nativeEvent' in event;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n // Try to find a workaround for this. `react-aria` source still has the check.\n if (event.mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n if (isAndroid() && event.pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n if (isJSDOM()) return false;\n return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n // iOS VoiceOver returns 0.333• for width/height.\n event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n const values = ['mouse', 'pen'];\n if (!strict) {\n values.push('', undefined);\n }\n return values.includes(pointerType);\n}\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n ...React\n};\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\nconst useInsertionEffect = SafeReact.useInsertionEffect;\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n const ref = React.useRef(() => {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error('Cannot call an event handler while rendering.');\n }\n });\n useSafeInsertionEffect(() => {\n ref.current = callback;\n });\n return React.useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return ref.current == null ? void 0 : ref.current(...args);\n }, []);\n}\n\nfunction isDifferentGridRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfListBounds(listRef, index) {\n return index < 0 || index >= listRef.current.length;\n}\nfunction getMinListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef, {\n disabledIndices\n });\n}\nfunction getMaxListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\nfunction findNonDisabledListIndex(listRef, _temp) {\n let {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n } = _temp === void 0 ? {} : _temp;\n let index = startingIndex;\n do {\n index += decrement ? -amount : amount;\n } while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));\n return index;\n}\nfunction getGridNavigatedIndex(listRef, _ref) {\n let {\n event,\n orientation,\n loop,\n rtl,\n cols,\n disabledIndices,\n minIndex,\n maxIndex,\n prevIndex,\n stopEvent: stop = false\n } = _ref;\n let nextIndex = prevIndex;\n if (event.key === ARROW_UP) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: nextIndex,\n amount: cols,\n decrement: true,\n disabledIndices\n });\n if (loop && (prevIndex - cols < minIndex || nextIndex < 0)) {\n const col = prevIndex % cols;\n const maxCol = maxIndex % cols;\n const offset = maxIndex - (maxCol - col);\n if (maxCol === col) {\n nextIndex = maxIndex;\n } else {\n nextIndex = maxCol > col ? offset : offset - cols;\n }\n }\n }\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === ARROW_DOWN) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = minIndex;\n } else {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n amount: cols,\n disabledIndices\n });\n if (loop && prevIndex + cols > maxIndex) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex % cols - cols,\n amount: cols,\n disabledIndices\n });\n }\n }\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n\n // Remains on the same row/column.\n if (orientation === 'both') {\n const prevRow = floor(prevIndex / cols);\n if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {\n stop && stopEvent(event);\n if (prevIndex % cols !== cols - 1) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loop && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n stop && stopEvent(event);\n if (prevIndex % cols !== 0) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n decrement: true,\n disabledIndices\n });\n if (loop && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n const lastRow = floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n if (loop && lastRow) {\n nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n } else {\n nextIndex = prevIndex;\n }\n }\n }\n return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nfunction createGridCellMap(sizes, cols, dense) {\n const cellMap = [];\n let startIndex = 0;\n sizes.forEach((_ref2, index) => {\n let {\n width,\n height\n } = _ref2;\n if (width > cols) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"[Floating UI]: Invalid grid - item width at index \" + index + \" is greater than grid columns\");\n }\n }\n let itemPlaced = false;\n if (dense) {\n startIndex = 0;\n }\n while (!itemPlaced) {\n const targetCells = [];\n for (let i = 0; i < width; i++) {\n for (let j = 0; j < height; j++) {\n targetCells.push(startIndex + i + j * cols);\n }\n }\n if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n targetCells.forEach(cell => {\n cellMap[cell] = index;\n });\n itemPlaced = true;\n } else {\n startIndex++;\n }\n }\n });\n\n // convert into a non-sparse array\n return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nfunction getGridCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n if (index === -1) return -1;\n const firstCellIndex = cellMap.indexOf(index);\n const sizeItem = sizes[index];\n switch (corner) {\n case 'tl':\n return firstCellIndex;\n case 'tr':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + sizeItem.width - 1;\n case 'bl':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + (sizeItem.height - 1) * cols;\n case 'br':\n return cellMap.lastIndexOf(index);\n }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nfunction getGridCellIndices(indices, cellMap) {\n return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nfunction isListIndexDisabled(listRef, index, disabledIndices) {\n if (typeof disabledIndices === 'function') {\n return disabledIndices(index);\n } else if (disabledIndices) {\n return disabledIndices.includes(index);\n }\n const element = listRef.current[index];\n return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nconst getTabbableOptions = () => ({\n getShadowRoot: true,\n displayCheck:\n // JSDOM does not support the `tabbable` library. To solve this we can\n // check if `ResizeObserver` is a real function (not polyfilled), which\n // determines if the current environment is JSDOM-like.\n typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, dir) {\n const list = tabbable(container, getTabbableOptions());\n const len = list.length;\n if (len === 0) return;\n const active = activeElement(getDocument(container));\n const index = list.indexOf(active);\n const nextIndex = index === -1 ? dir === 1 ? 0 : len - 1 : index + dir;\n return list[nextIndex];\n}\nfunction getNextTabbable(referenceElement) {\n return getTabbableIn(getDocument(referenceElement).body, 1) || referenceElement;\n}\nfunction getPreviousTabbable(referenceElement) {\n return getTabbableIn(getDocument(referenceElement).body, -1) || referenceElement;\n}\nfunction isOutsideEvent(event, container) {\n const containerElement = container || event.currentTarget;\n const relatedTarget = event.relatedTarget;\n return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n const tabbableElements = tabbable(container, getTabbableOptions());\n tabbableElements.forEach(element => {\n element.dataset.tabindex = element.getAttribute('tabindex') || '';\n element.setAttribute('tabindex', '-1');\n });\n}\nfunction enableFocusInside(container) {\n const elements = container.querySelectorAll('[data-tabindex]');\n elements.forEach(element => {\n const tabindex = element.dataset.tabindex;\n delete element.dataset.tabindex;\n if (tabindex) {\n element.setAttribute('tabindex', tabindex);\n } else {\n element.removeAttribute('tabindex');\n }\n });\n}\n\nexport { activeElement, contains, createGridCellMap, disableFocusInside, enableFocusInside, findNonDisabledListIndex, getDeepestNode, getDocument, getFloatingFocusElement, getGridCellIndexOfCorner, getGridCellIndices, getGridNavigatedIndex, getMaxListIndex, getMinListIndex, getNextTabbable, getNodeAncestors, getNodeChildren, getPlatform, getPreviousTabbable, getTabbableOptions, getTarget, getUserAgent, isAndroid, isDifferentGridRow, isEventTargetWithin, isIndexOutOfListBounds, isJSDOM, isListIndexDisabled, isMac, isMouseLikePointerType, isOutsideEvent, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, matchesFocusVisible, stopEvent, useEffectEvent, useLatestRef, index as useModernLayoutEffect };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (_e) {\n return false;\n }\n });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","var e={};function t(e,t){if(!e)throw new Error(t)}e.d=(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const n=e=>null===e,r=e=>null==e,a=e=>null!=e,l=e=>void 0===e,i=e=>\"number\"==typeof e,o=e=>\"boolean\"==typeof e,s=e=>\"object\"==typeof e,c=e=>s(e)&&!n(e)&&0===Object.keys(e).length,u=e=>e instanceof Date,f=e=>e instanceof Blob,h=e=>e instanceof Error,d=e=>u(e)&&!isNaN(e.getTime()),m=e=>e instanceof RegExp,y=e=>e instanceof Map,w=e=>e instanceof Set,g=e=>\"symbol\"==typeof e,p=e=>i(e)&&isFinite(e),b=e=>i(e)&&Number.isInteger(e),x=e=>p(e)&&!Number.isInteger(e),S=e=>Array.isArray(e),v=e=>S(e)&&0===e.length,A=e=>e.filter(Boolean),M=e=>[...new Set(e)],O=(e,n)=>(t(n>0,\"Chunk size must be greater than 0\"),Array.from({length:Math.ceil(e.length/n)},(t,r)=>e.slice(r*n,(r+1)*n))),k=(...e)=>{if(0===e.length)return[];if(1===e.length)return[...e[0]];const[t,...n]=e;return M(t).filter(e=>n.every(t=>t.includes(e)))},E=(e,t)=>e.filter(e=>!t.includes(e)),T=(...e)=>t=>e.reduce((e,t)=>t(e),t),X=(...e)=>t=>e.reduceRight((e,t)=>t(e),t),_=()=>{},P=e=>\"function\"==typeof e,z=e=>(...t)=>!e(...t),L=e=>{let t,n=!1;return function(...r){return n||(n=!0,t=e.apply(this,r)),t}},Y=e=>P(e?.then),C=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++)n.push(await t(e[r],r,e));return n},R=async(e,t)=>Promise.all(e.map(t)),N=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++){const a=e[r];await t(a,r,e)&&n.push(a)}return n},j=async(e,t)=>{const n=await R(e,async(e,n,r)=>!!await t(e,n,r)&&e);return A(n)},F=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return!0;return!1},I=async(e,t)=>{for(let n=0;n<e.length;n++)if(!await t(e[n],n,e))return!1;return!0},$=async(e,t,n)=>{let r=n;for(let n=0;n<e.length;n++)r=await t(r,e[n],n,e);return r},H=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return e[n];return null},U=e=>new Promise(t=>setTimeout(t,e)),W=async(e,t,n=\"Operation timed out\")=>{try{return await Promise.race([e,U(t).then(()=>Promise.reject(new Error(n)))])}finally{}},B=(e,{maxAttempts:t=3,delayMs:n=300,backoff:r=!0,onRetry:a}={})=>async(...l)=>{let i;for(let o=1;o<=t;o++)try{return await e(...l)}catch(e){if(i=e,o<t){a?.(o,e);const t=r?n*2**(o-1):n;await U(t)}}throw i},D=e=>\"string\"==typeof e,V=e=>e.replace(/([a-z0-9])([A-Z])/g,\"$1-$2\").toLowerCase(),Z=e=>{const t=e.charAt(0),n=e.slice(1);return t.toLowerCase()+n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)},G=e=>e.replace(/([a-z0-9])([A-Z])/g,\"$1 $2\"),q=e=>e.split(\" \").filter(Boolean),J=e=>\"\"===e||r(e),K=e=>{const t=e.lastIndexOf(\".\");return t<=0||t===e.length-1?[e,\"\"]:[e.slice(0,t),e.slice(t+1).toLowerCase()]},Q=(e,...t)=>\"function\"==typeof e?e(...t):e,ee=(e,t,n,r)=>{const a=n-e,l=r-t;return Math.hypot(a,l)},te=(e,t)=>Math.abs(e/t),ne=(e,t)=>e*t/100,re=e=>{let t=5381;for(let n=0;n<e.length;n++)t=33*t^e.charCodeAt(n);return(t>>>0).toString(36)},ae=e=>new Blob([e],{type:e.type}),le=e=>new DOMRect(e.offsetLeft,e.offsetTop,e.clientWidth,e.clientHeight),ie=e=>\"A\"===e.tagName,oe=e=>\"true\"===e.getAttribute(\"contenteditable\"),se=(e,{fileName:n,target:r}={})=>{if(l(document))return;const a=document.createElement(\"a\");let i=null;try{const t=D(e)?e:i=URL.createObjectURL(e);a.href=t,n&&(a.download=n),r&&(a.target=r),document.body.appendChild(a),a.click()}finally{a.remove(),i&&setTimeout(()=>{t(i,\"Object URL should not be null\"),URL.revokeObjectURL(i)},0)}},ce=e=>e.scrollWidth>e.clientWidth,ue=e=>Math.max(0,e.scrollWidth-e.clientWidth),fe=e=>e.scrollHeight>e.clientHeight,he=e=>Math.max(0,e.scrollHeight-e.clientHeight),de=({overflowSize:e,containerSize:t,elementOffset:n,elementSize:r})=>{if(e<=0)return 0;const a=n+r/2-t/2;return-Math.max(0,Math.min(a,e))},me=(e,t,{axis:n=\"both\"}={})=>{let r=0,a=0;\"x\"!==n&&\"both\"!==n||(r=de({overflowSize:ue(e),containerSize:e.clientWidth,elementOffset:t.offsetLeft,elementSize:t.clientWidth})),\"y\"!==n&&\"both\"!==n||(a=de({overflowSize:he(e),containerSize:e.clientHeight,elementOffset:t.offsetTop,elementSize:t.clientHeight})),e.style.transform=`translate(${r}px, ${a}px)`},ye=e=>{const t=window.getComputedStyle(e).getPropertyValue(\"transform\").match(/^matrix\\((.+)\\)$/);if(!t)return{translateX:0,translateY:0,scaleX:1,scaleY:1,skewX:0,skewY:0};const[n,r,a,l,i,o]=t[1].split(\", \").map(parseFloat);return{translateX:i,translateY:o,scaleX:n,scaleY:l,skewX:a,skewY:r}},we=e=>e instanceof File,ge=e=>{if(!e)return[];const t=[];for(let n=0;n<e.length;n++)t.push(e[n]);return t},pe=(e,t)=>new File([e],t,{type:e.type}),be=async(e,{skipFiles:t=[\".DS_Store\",\"Thumbs.db\",\"desktop.ini\",\"ehthumbs.db\",\".Spotlight-V100\",\".Trashes\",\".fseventsd\",\"__MACOSX\"]}={})=>{const n=new Set(t),r=await(async e=>{const t=e.createReader(),n=async()=>new Promise((e,r)=>{t.readEntries(async t=>{if(t.length)try{const r=await n();e([...t,...r])}catch(e){r(e)}else e([])},r)});return n()})(e);return(await R(r,async e=>e.isDirectory?be(e,{skipFiles:t}):n.has(e.name)?[]:[await new Promise((t,n)=>{e.file(t,n)})])).flat()},xe=async(e,t={})=>{const n=e?.items;if(!n)return[];const r=[];for(let e=0;e<n.length;e++){const a=n[e];if(\"webkitGetAsEntry\"in a){const e=a.webkitGetAsEntry?.();if(e?.isDirectory){r.push(be(e,t));continue}if(e?.isFile){r.push(new Promise((t,n)=>e.file(e=>t([e]),n)));continue}}const l=a.getAsFile();l&&r.push(Promise.resolve([l]))}return(await Promise.all(r)).flat()},Se=e=>Object.entries(e).reduce((e,[t,n])=>(void 0!==n&&(e[t]=n),e),{}),ve=({delta:e,value:t,min:n,max:r})=>{if(0===e)return null;const a=t+e;return e<0?t<=n?null:Math.max(a,n):e>0?t>=r?null:Math.min(a,r):null},Ae=({value:e,min:t,max:n,velocity:r,deltaTime:a,friction:l=.002,minVelocity:i=.01})=>{if(Math.abs(r)<i)return null;const o=ve({delta:r*a,value:e,min:t,max:n});return null===o?null:{value:o,velocity:r*Math.exp(-l*a)}},Me=(e,t)=>Math.max(0,Math.min(e.right,t.right)-Math.max(e.left,t.left))*Math.max(0,Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top))/(t.width*t.height),Oe=(e,t,{allowFallback:n=!0,invert:r=!0}={})=>{const a=r?-1:1;switch(t){case\"x\":return{deltaX:a*(0!==e.deltaX?e.deltaX:n?e.deltaY:0),deltaY:0};case\"y\":return{deltaX:0,deltaY:a*e.deltaY};default:return{deltaX:a*e.deltaX,deltaY:a*e.deltaY}}},ke=[\"INPUT\",\"SELECT\",\"TEXTAREA\",\"BUTTON\",\"A\"],Ee=e=>{if(!e)return!1;const t=window.getComputedStyle(e);if(\"hidden\"===t.visibility||\"none\"===t.display)return!1;if(\"disabled\"in e&&e.disabled)return!1;const n=e.getAttribute(\"tabindex\");return\"-1\"!==n&&(ke.includes(e.tagName)?!ie(e)||\"\"!==e.href:!!oe(e)||null!==n)},Te=e=>Array.from(e.querySelectorAll(\"*\")).filter(Ee),Xe=(e,t=null,{wrap:n=!0,getNextIndex:r}={})=>{const a=document.activeElement,l=t??a?.parentElement;if(!a||!l)return;const i=Te(l);if(0===i.length)return;const o=i.indexOf(a);if(-1===o)return;let s;r?s=r(o,e,i):\"next\"===e?(s=o+1,s>=i.length&&(s=n?0:null)):(s=o-1,s<0&&(s=n?i.length-1:null)),null!==s&&i[s]?.focus()},_e=()=>{if(\"undefined\"==typeof window||!window.localStorage)return!1;try{return window.localStorage.getItem(\"__non_existing_key__\"),!0}catch{return!1}},Pe=()=>{if(!_e())return{readable:!1,writable:!1};try{const e=\"__test_write__\";return window.localStorage.setItem(e,\"1\"),window.localStorage.removeItem(e),{readable:!0,writable:!0}}catch{}return{readable:!0,writable:!1}};export{ke as FOCUSABLE_HTML_TAGS,Ae as applyInertiaStep,t as assert,pe as blobToFile,de as calculateCenterOffset,ee as calculateEuclideanDistance,te as calculateMovingSpeed,ne as calculatePercentage,Z as camelToDashCase,G as camelToWords,me as centerElementInContainer,O as chunk,ae as cloneBlob,A as compact,X as compose,Se as definedProps,U as delay,E as difference,se as downloadFile,I as everyAsync,ge as fileListToFiles,j as filterParallel,N as filterSequential,H as findAsync,Me as getDOMRectIntersectionRatio,le as getElementOffsetRect,Te as getFocusableHtmlElements,Pe as getLocalStorageCapabilities,ue as getXOverflowWidth,he as getYOverflowHeight,ce as hasXOverflow,fe as hasYOverflow,re as hashString,k as intersection,Q as invokeIfFunction,ie as isAnchorHtmlElement,S as isArray,f as isBlob,o as isBool,oe as isContentEditableHtmlElement,u as isDate,x as isDecimal,a as isDefined,v as isEmptyArray,c as isEmptyObject,h as isError,we as isFile,p as isFiniteNumber,P as isFunction,Ee as isHtmlElementFocusable,b as isInteger,_e as isLocalStorageReadable,y as isMap,r as isNil,J as isNilOrEmptyString,n as isNull,i as isNumber,s as isObject,Y as isPromise,m as isRegExp,w as isSet,D as isString,g as isSymbol,l as isUndefined,d as isValidDate,Xe as moveFocusWithinContainer,_ as noop,z as not,L as once,ye as parse2DMatrix,K as parseFileName,T as pipe,xe as readFilesFromDataTransfer,$ as reduceAsync,Oe as resolveAxisDelta,ve as resolveBoundedDelta,B as retry,R as runParallel,C as runSequential,F as someAsync,q as splitStringIntoWords,W as timeout,V as toKebabCase,be as traverseFileSystemDirectory,M as unique};\n//# sourceMappingURL=index.mjs.map","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/**\n * @license React\n * react-dom.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function noop() {}\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n try {\n testStringCoercion(key);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n JSCompiler_inline_result &&\n (console.error(\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n key[Symbol.toStringTag]) ||\n key.constructor.name ||\n \"Object\"\n ),\n testStringCoercion(key));\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n }\n function getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n }\n function getValueDescriptorExpectingObjectForWarning(thing) {\n return null === thing\n ? \"`null`\"\n : void 0 === thing\n ? \"`undefined`\"\n : \"\" === thing\n ? \"an empty string\"\n : 'something with type \"' + typeof thing + '\"';\n }\n function getValueDescriptorExpectingEnumForWarning(thing) {\n return null === thing\n ? \"`null`\"\n : void 0 === thing\n ? \"`undefined`\"\n : \"\" === thing\n ? \"an empty string\"\n : \"string\" === typeof thing\n ? JSON.stringify(thing)\n : \"number\" === typeof thing\n ? \"`\" + thing + \"`\"\n : 'something with type \"' + typeof thing + '\"';\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(\n \"Invalid form element. requestFormReset must be passed a form that was rendered by React.\"\n );\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n (\"function\" === typeof Map &&\n null != Map.prototype &&\n \"function\" === typeof Map.prototype.forEach &&\n \"function\" === typeof Set &&\n null != Set.prototype &&\n \"function\" === typeof Set.prototype.clear &&\n \"function\" === typeof Set.prototype.forEach) ||\n console.error(\n \"React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\"\n );\n exports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\n exports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(\"Target container is not a DOM element.\");\n return createPortal$1(children, container, null, key);\n };\n exports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn))\n return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f() &&\n console.error(\n \"flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.\"\n );\n }\n };\n exports.preconnect = function (href, options) {\n \"string\" === typeof href && href\n ? null != options && \"object\" !== typeof options\n ? console.error(\n \"ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.\",\n getValueDescriptorExpectingEnumForWarning(options)\n )\n : null != options &&\n \"string\" !== typeof options.crossOrigin &&\n console.error(\n \"ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.\",\n getValueDescriptorExpectingObjectForWarning(options.crossOrigin)\n )\n : console.error(\n \"ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\",\n getValueDescriptorExpectingObjectForWarning(href)\n );\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n };\n exports.prefetchDNS = function (href) {\n if (\"string\" !== typeof href || !href)\n console.error(\n \"ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\",\n getValueDescriptorExpectingObjectForWarning(href)\n );\n else if (1 < arguments.length) {\n var options = arguments[1];\n \"object\" === typeof options && options.hasOwnProperty(\"crossOrigin\")\n ? console.error(\n \"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.\",\n getValueDescriptorExpectingEnumForWarning(options)\n )\n : console.error(\n \"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.\",\n getValueDescriptorExpectingEnumForWarning(options)\n );\n }\n \"string\" === typeof href && Internals.d.D(href);\n };\n exports.preinit = function (href, options) {\n \"string\" === typeof href && href\n ? null == options || \"object\" !== typeof options\n ? console.error(\n \"ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.\",\n getValueDescriptorExpectingEnumForWarning(options)\n )\n : \"style\" !== options.as &&\n \"script\" !== options.as &&\n console.error(\n 'ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are \"style\" and \"script\".',\n getValueDescriptorExpectingEnumForWarning(options.as)\n )\n : console.error(\n \"ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\",\n getValueDescriptorExpectingObjectForWarning(href)\n );\n if (\n \"string\" === typeof href &&\n options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence\n ? options.precedence\n : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n };\n exports.preinitModule = function (href, options) {\n var encountered = \"\";\n (\"string\" === typeof href && href) ||\n (encountered +=\n \" The `href` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(href) +\n \".\");\n void 0 !== options && \"object\" !== typeof options\n ? (encountered +=\n \" The `options` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options) +\n \".\")\n : options &&\n \"as\" in options &&\n \"script\" !== options.as &&\n (encountered +=\n \" The `as` option encountered was \" +\n getValueDescriptorExpectingEnumForWarning(options.as) +\n \".\");\n if (encountered)\n console.error(\n \"ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s\",\n encountered\n );\n else\n switch (\n ((encountered =\n options && \"string\" === typeof options.as ? options.as : \"script\"),\n encountered)\n ) {\n case \"script\":\n break;\n default:\n (encountered =\n getValueDescriptorExpectingEnumForWarning(encountered)),\n console.error(\n 'ReactDOM.preinitModule(): Currently the only supported \"as\" type for this function is \"script\" but received \"%s\" instead. This warning was generated for `href` \"%s\". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)',\n encountered,\n href\n );\n }\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as)\n (encountered = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n )),\n Internals.d.M(href, {\n crossOrigin: encountered,\n integrity:\n \"string\" === typeof options.integrity\n ? options.integrity\n : void 0,\n nonce:\n \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n } else null == options && Internals.d.M(href);\n };\n exports.preload = function (href, options) {\n var encountered = \"\";\n (\"string\" === typeof href && href) ||\n (encountered +=\n \" The `href` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(href) +\n \".\");\n null == options || \"object\" !== typeof options\n ? (encountered +=\n \" The `options` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options) +\n \".\")\n : (\"string\" === typeof options.as && options.as) ||\n (encountered +=\n \" The `as` option encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options.as) +\n \".\");\n encountered &&\n console.error(\n 'ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `<link rel=\"preload\" as=\"...\" />` tag.%s',\n encountered\n );\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n encountered = options.as;\n var crossOrigin = getCrossOriginStringAs(\n encountered,\n options.crossOrigin\n );\n Internals.d.L(href, encountered, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet\n ? options.imageSrcSet\n : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes\n ? options.imageSizes\n : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n };\n exports.preloadModule = function (href, options) {\n var encountered = \"\";\n (\"string\" === typeof href && href) ||\n (encountered +=\n \" The `href` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(href) +\n \".\");\n void 0 !== options && \"object\" !== typeof options\n ? (encountered +=\n \" The `options` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options) +\n \".\")\n : options &&\n \"as\" in options &&\n \"string\" !== typeof options.as &&\n (encountered +=\n \" The `as` option encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options.as) +\n \".\");\n encountered &&\n console.error(\n 'ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `<link rel=\"modulepreload\" as=\"...\" />` tag.%s',\n encountered\n );\n \"string\" === typeof href &&\n (options\n ? ((encountered = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n )),\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: encountered,\n integrity:\n \"string\" === typeof options.integrity\n ? options.integrity\n : void 0\n }))\n : Internals.d.m(href));\n };\n exports.requestFormReset = function (form) {\n Internals.d.r(form);\n };\n exports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n };\n exports.useFormState = function (action, initialState, permalink) {\n return resolveDispatcher().useFormState(action, initialState, permalink);\n };\n exports.useFormStatus = function () {\n return resolveDispatcher().useHostTransitionStatus();\n };\n exports.version = \"19.2.3\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/*!\n* tabbable 6.4.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\n// NOTE: separate `:not()` selectors has broader browser support than the newer\n// `:not([inert], [inert] *)` (Feb 2023)\nvar candidateSelectors = ['input:not([inert]):not([inert] *)', 'select:not([inert]):not([inert] *)', 'textarea:not([inert]):not([inert] *)', 'a[href]:not([inert]):not([inert] *)', 'button:not([inert]):not([inert] *)', '[tabindex]:not(slot):not([inert]):not([inert] *)', 'audio[controls]:not([inert]):not([inert] *)', 'video[controls]:not([inert]):not([inert] *)', '[contenteditable]:not([contenteditable=\"false\"]):not([inert]):not([inert] *)', 'details>summary:first-of-type:not([inert]):not([inert] *)', 'details:not([inert]):not([inert] *)'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar NoElement = typeof Element === 'undefined';\nvar matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {\n var _element$getRootNode;\n return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n} : function (element) {\n return element === null || element === void 0 ? void 0 : element.ownerDocument;\n};\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Node} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n * see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n * False if `node` is falsy.\n */\nvar _isInert = function isInert(node, lookUp) {\n var _node$getAttribute;\n if (lookUp === void 0) {\n lookUp = true;\n }\n // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n // JS API property; we have to check the attribute, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's an active element\n var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');\n var inert = inertAtt === '' || inertAtt === 'true';\n\n // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n // if it weren't for `matches()` not being a function on shadow roots; the following\n // code works for any kind of node\n var result = inert || lookUp && node && (\n // closest does not exist on shadow roots, so we fall back to a manual\n // lookup upward, in case it is not defined.\n typeof node.closest === 'function' ? node.closest('[inert]') : _isInert(node.parentNode));\n return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nvar isContentEditable = function isContentEditable(node) {\n var _node$getAttribute2;\n // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n // to use the attribute directly to check for this, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's a non-editable element\n var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');\n return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n // even if `includeContainer=false`, we still have to check it for inertness because\n // if it's inert (either by itself or via its parent), then all its children are inert\n if (_isInert(el)) {\n return [];\n }\n var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n candidates = candidates.filter(filter);\n return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n * if a function, implies shadow support is enabled and either returns the shadow root of an element\n * or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nvar _getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {\n var candidates = [];\n var elementsToCheck = Array.from(elements);\n while (elementsToCheck.length) {\n var element = elementsToCheck.shift();\n if (_isInert(element, false)) {\n // no need to look up since we're drilling down\n // anything inside this container will also be inert\n continue;\n }\n if (element.tagName === 'SLOT') {\n // add shadow dom slot scope (slot itself cannot be focusable)\n var assigned = element.assignedElements();\n var content = assigned.length ? assigned : element.children;\n var nestedCandidates = _getCandidatesIteratively(content, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: nestedCandidates\n });\n }\n } else {\n // check candidate element\n var validCandidate = matches.call(element, candidateSelector);\n if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n candidates.push(element);\n }\n\n // iterate over shadow content if possible\n var shadowRoot = element.shadowRoot ||\n // check for an undisclosed shadow\n typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);\n\n // no inert look up because we're already drilling down and checking for inertness\n // on the way down, so all containers to this root node should have already been\n // vetted as non-inert\n var validShadowRoot = !_isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));\n if (shadowRoot && validShadowRoot) {\n // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n // shadow exists, so look at light dom children as fallback BUT create a scope for any\n // child candidates found because they're likely slotted elements (elements that are\n // children of the web component element (which has the shadow), in the light dom, but\n // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n // _after_ we return from this recursive call\n var _nestedCandidates = _getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, _nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: _nestedCandidates\n });\n }\n } else {\n // there's not shadow so just dig into the element's (light dom) children\n // __without__ giving the element special scope treatment\n elementsToCheck.unshift.apply(elementsToCheck, element.children);\n }\n }\n }\n return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nvar hasTabIndex = function hasTabIndex(node) {\n return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nvar getTabIndex = function getTabIndex(node) {\n if (!node) {\n throw new Error('No node provided');\n }\n if (node.tabIndex < 0) {\n // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if ((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && !hasTabIndex(node)) {\n return 0;\n }\n }\n return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n * has tabIndex -1, but needs to be sorted by document order in order for its content to be\n * inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nvar getSortOrderTabIndex = function getSortOrderTabIndex(node, isScope) {\n var tabIndex = getTabIndex(node);\n if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n return 0;\n }\n return tabIndex;\n};\nvar sortOrderedTabbables = function sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n};\nvar isInput = function isInput(node) {\n return node.tagName === 'INPUT';\n};\nvar isHiddenInput = function isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n};\nvar isDetailsWithSummary = function isDetailsWithSummary(node) {\n var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {\n return child.tagName === 'SUMMARY';\n });\n return r;\n};\nvar getCheckedRadio = function getCheckedRadio(nodes, form) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked && nodes[i].form === form) {\n return nodes[i];\n }\n }\n};\nvar isTabbableRadio = function isTabbableRadio(node) {\n if (!node.name) {\n return true;\n }\n var radioScope = node.form || getRootNode(node);\n var queryRadios = function queryRadios(name) {\n return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n };\n var radioSet;\n if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {\n radioSet = queryRadios(window.CSS.escape(node.name));\n } else {\n try {\n radioSet = queryRadios(node.name);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);\n return false;\n }\n }\n var checked = getCheckedRadio(radioSet, node.form);\n return !checked || checked === node;\n};\nvar isRadio = function isRadio(node) {\n return isInput(node) && node.type === 'radio';\n};\nvar isNonTabbableRadio = function isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nvar isNodeAttached = function isNodeAttached(node) {\n var _nodeRoot;\n // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n // (but NOT _the_ document; see second 'If' comment below for more).\n // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n // is attached, and the one we need to check if it's in the document or not (because the\n // shadow, and all nodes it contains, is never considered in the document since shadows\n // behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n // is hidden, or is not in the document itself but is detached, it will affect the shadow's\n // visibility, including all the nodes it contains). The host could be any normal node,\n // or a custom element (i.e. web component). Either way, that's the one that is considered\n // part of the document, not the shadow root, nor any of its children (i.e. the node being\n // tested).\n // To further complicate things, we have to look all the way up until we find a shadow HOST\n // that is attached (or find none) because the node might be in nested shadows...\n // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n // document (per the docs) and while it's a Document-type object, that document does not\n // appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n // to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n // using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n // node is actually detached.\n // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n // if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n // from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n // `ownerDocument` will be `null`, hence the optional chaining on it.\n var nodeRoot = node && getRootNode(node);\n var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;\n\n // in some cases, a detached node will return itself as the root instead of a document or\n // shadow root object, in which case, we shouldn't try to look further up the host chain\n var attached = false;\n if (nodeRoot && nodeRoot !== node) {\n var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;\n attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));\n while (!attached && nodeRootHost) {\n var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;\n // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n // which means we need to get the host's host and check if that parent host is contained\n // in (i.e. attached to) the document\n nodeRoot = getRootNode(nodeRootHost);\n nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;\n attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));\n }\n }\n return attached;\n};\nvar isZeroArea = function isZeroArea(node) {\n var _node$getBoundingClie = node.getBoundingClientRect(),\n width = _node$getBoundingClie.width,\n height = _node$getBoundingClie.height;\n return width === 0 && height === 0;\n};\nvar isHidden = function isHidden(node, _ref) {\n var displayCheck = _ref.displayCheck,\n getShadowRoot = _ref.getShadowRoot;\n if (displayCheck === 'full-native') {\n if ('checkVisibility' in node) {\n // Chrome >= 105, Edge >= 105, Firefox >= 106, Safari >= 17.4\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility#browser_compatibility\n var visible = node.checkVisibility({\n // Checking opacity might be desirable for some use cases, but natively,\n // opacity zero elements _are_ focusable and tabbable.\n checkOpacity: false,\n opacityProperty: false,\n contentVisibilityAuto: true,\n visibilityProperty: true,\n // This is an alias for `visibilityProperty`. Contemporary browsers\n // support both. However, this alias has wider browser support (Chrome\n // >= 105 and Firefox >= 106, vs. Chrome >= 121 and Firefox >= 122), so\n // we include it anyway.\n checkVisibilityCSS: true\n });\n return !visible;\n }\n // Fall through to manual visibility checks\n }\n\n // NOTE: visibility will be `undefined` if node is detached from the document\n // (see notes about this further down), which means we will consider it visible\n // (this is legacy behavior from a very long way back)\n // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n // _visibility_ check, not a _display_ check\n if (getComputedStyle(node).visibility === 'hidden') {\n return true;\n }\n var isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n return true;\n }\n if (!displayCheck || displayCheck === 'full' ||\n // full-native can run this branch when it falls through in case\n // Element#checkVisibility is unsupported\n displayCheck === 'full-native' || displayCheck === 'legacy-full') {\n if (typeof getShadowRoot === 'function') {\n // figure out if we should consider the node to be in an undisclosed shadow and use the\n // 'non-zero-area' fallback\n var originalNode = node;\n while (node) {\n var parentElement = node.parentElement;\n var rootNode = getRootNode(node);\n if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n ) {\n // node has an undisclosed shadow which means we can only treat it as a black box, so we\n // fall back to a non-zero-area test\n return isZeroArea(node);\n } else if (node.assignedSlot) {\n // iterate up slot\n node = node.assignedSlot;\n } else if (!parentElement && rootNode !== node.ownerDocument) {\n // cross shadow boundary\n node = rootNode.host;\n } else {\n // iterate up normal dom\n node = parentElement;\n }\n }\n node = originalNode;\n }\n // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n // (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n // it might be a falsy value, which means shadow DOM support is disabled\n\n // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n // now we can just test to see if it would normally be visible or not, provided it's\n // attached to the main document.\n // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n // `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n if (isNodeAttached(node)) {\n // this works wherever the node is: if there's at least one client rect, it's\n // somehow displayed; it also covers the CSS 'display: contents' case where the\n // node itself is hidden in place of its contents; and there's no need to search\n // up the hierarchy either\n return !node.getClientRects().length;\n }\n\n // Else, the node isn't attached to the document, which means the `getClientRects()`\n // API will __always__ return zero rects (this can happen, for example, if React\n // is used to render nodes onto a detached tree, as confirmed in this thread:\n // https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n //\n // It also means that even window.getComputedStyle(node).display will return `undefined`\n // because styles are only computed for nodes that are in the document.\n //\n // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n // somehow. Though it was never stated officially, anyone who has ever used tabbable\n // APIs on nodes in detached containers has actually implicitly used tabbable in what\n // was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n // considering __everything__ to be visible because of the innability to determine styles.\n //\n // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n // nodes as visible with the 'none' fallback.__\n if (displayCheck !== 'legacy-full') {\n return true; // hidden\n }\n // else, fallback to 'none' mode and consider the node visible\n } else if (displayCheck === 'non-zero-area') {\n // NOTE: Even though this tests that the node's client rect is non-zero to determine\n // whether it's displayed, and that a detached node will __always__ have a zero-area\n // client rect, we don't special-case for whether the node is attached or not. In\n // this mode, we do want to consider nodes that have a zero area to be hidden at all\n // times, and that includes attached or not.\n return isZeroArea(node);\n }\n\n // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n // it's visible\n return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n// unless they are in the _first_ <legend> element of the top-most disabled\n// fieldset\nvar isDisabledFromFieldset = function isDisabledFromFieldset(node) {\n if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n var parentNode = node.parentElement;\n // check if `node` is contained in a disabled <fieldset>\n while (parentNode) {\n if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n // look for the first <legend> among the children of the disabled <fieldset>\n for (var i = 0; i < parentNode.children.length; i++) {\n var child = parentNode.children.item(i);\n // when the first <legend> (in document order) is found\n if (child.tagName === 'LEGEND') {\n // if its parent <fieldset> is not nested in another disabled <fieldset>,\n // return whether `node` is a descendant of its first <legend>\n return matches.call(parentNode, 'fieldset[disabled] *') ? true : !child.contains(node);\n }\n }\n // the disabled <fieldset> containing `node` has no <legend>\n return true;\n }\n parentNode = parentNode.parentElement;\n }\n }\n\n // else, node's tabbable/focusable state should not be affected by a fieldset's\n // enabled/disabled state\n return false;\n};\nvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {\n if (node.disabled || isHiddenInput(node) || isHidden(node, options) ||\n // For a details element with a summary, the summary element gets the focus\n isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {\n return false;\n }\n return true;\n};\nvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {\n if (isNonTabbableRadio(node) || getTabIndex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {\n return false;\n }\n return true;\n};\nvar isShadowRootTabbable = function isShadowRootTabbable(shadowHostNode) {\n var tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n if (isNaN(tabIndex) || tabIndex >= 0) {\n return true;\n }\n // If a custom element has an explicit negative tabindex,\n // browsers will not allow tab targeting said element's children.\n return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nvar _sortByOrder = function sortByOrder(candidates) {\n var regularTabbables = [];\n var orderedTabbables = [];\n candidates.forEach(function (item, i) {\n var isScope = !!item.scopeParent;\n var element = isScope ? item.scopeParent : item;\n var candidateTabindex = getSortOrderTabIndex(element, isScope);\n var elements = isScope ? _sortByOrder(item.candidates) : element;\n if (candidateTabindex === 0) {\n isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n item: item,\n isScope: isScope,\n content: elements\n });\n }\n });\n return orderedTabbables.sort(sortOrderedTabbables).reduce(function (acc, sortable) {\n sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);\n return acc;\n }, []).concat(regularTabbables);\n};\nvar tabbable = function tabbable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = _getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorTabbable.bind(null, options),\n flatten: false,\n getShadowRoot: options.getShadowRoot,\n shadowRootFilter: isShadowRootTabbable\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n }\n return _sortByOrder(candidates);\n};\nvar focusable = function focusable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = _getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorFocusable.bind(null, options),\n flatten: true,\n getShadowRoot: options.getShadowRoot\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n }\n return candidates;\n};\nvar isTabbable = function isTabbable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, candidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorTabbable(options, node);\n};\nvar focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe:not([inert]):not([inert] *)').join(',');\nvar isFocusable = function isFocusable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, focusableCandidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { focusable, getTabIndex, isFocusable, isTabbable, tabbable };\n//# sourceMappingURL=index.esm.js.map\n","import { HONEY_BREAKPOINTS, styled, css } from '@react-hive/honey-style';\nimport type { ElementType } from 'react';\nimport type { HoneyBreakpointName, HoneyStyledProps } from '@react-hive/honey-style';\n\nimport { applyBreakpointStyles, createStyles } from '../../helpers';\nimport type { Honey$PrefixedCSSProperties, HoneyEffectResultFn } from '../../types';\n\nconst applyResponsiveStyles = (breakpoint: HoneyBreakpointName) =>\n breakpoint === 'xs' ? createStyles(breakpoint) : applyBreakpointStyles(breakpoint);\n\nexport type HoneyBoxProps<Element extends ElementType = 'div'> = HoneyStyledProps<\n Element,\n Honey$PrefixedCSSProperties & {\n effects?: HoneyEffectResultFn<object>[];\n }\n>;\n\nexport const HoneyBox = styled<HoneyBoxProps>('div', props => ({\n 'data-testid': props['data-testid'] ?? 'honey-box',\n}))`\n ${({ effects }) => css`\n ${effects};\n\n ${HONEY_BREAKPOINTS.map(applyResponsiveStyles)};\n `}\n`;\n","export * from './HoneyBox';\n","import React from 'react';\nimport type { ReactNode } from 'react';\nimport type { ReferenceType } from '@floating-ui/react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport { HoneyPopup } from '../HoneyPopup';\nimport { HoneyContextMenuContent } from './HoneyContextMenuContent';\nimport type { HoneyPopupContextValue, HoneyPopupProps } from '../HoneyPopup';\nimport type { HoneyContextMenuOption } from './HoneyContextMenu.types';\nimport type { HoneyContextMenuContentProps } from './HoneyContextMenuContent';\n\nexport interface HoneyContextMenuProps<\n Option extends HoneyContextMenuOption<Context, Reference>,\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n> extends FastOmit<HoneyPopupProps<Context, Reference, UseAutoSize>, 'content'>,\n Pick<\n HoneyContextMenuContentProps<Option, Context, Reference, UseAutoSize>,\n 'options' | 'optionProps'\n > {\n children: ReactNode | ((context: HoneyPopupContextValue<Context, Reference>) => ReactNode);\n subProps?: FastOmit<\n HoneyContextMenuContentProps<Option, Context, Reference, UseAutoSize>,\n 'options' | 'optionProps'\n >;\n}\n\nexport const HoneyContextMenu = <\n Option extends HoneyContextMenuOption<Context, Reference>,\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n>({\n children,\n subProps,\n options,\n optionProps,\n clickOptions,\n context,\n ...popupProps\n}: HoneyContextMenuProps<Option, Context, Reference, UseAutoSize>) => {\n const { contentProps } = popupProps;\n\n return (\n <>\n <HoneyPopup\n context={context}\n content={\n <HoneyContextMenuContent\n options={options}\n optionProps={optionProps}\n contentProps={contentProps}\n {...subProps}\n />\n }\n clickOptions={{\n toggle: false,\n ...clickOptions,\n }}\n useArrow={true}\n {...popupProps}\n >\n {children}\n </HoneyPopup>\n </>\n );\n};\n","import type { FloatingContext, ReferenceType } from '@floating-ui/react';\n\ninterface HoneyContextMenuOptionExecutionContext<Context, Reference extends ReferenceType> {\n context: Context | undefined;\n floatingContext: FloatingContext<Reference>;\n}\n\nexport interface HoneyContextMenuOption<\n Context = undefined,\n Reference extends ReferenceType = ReferenceType,\n> {\n id: string;\n label: string;\n options?: HoneyContextMenuOption<Context, Reference>[];\n visible?:\n | boolean\n | ((executionContext: HoneyContextMenuOptionExecutionContext<Context, Reference>) => boolean);\n onClick?: (executionContext: HoneyContextMenuOptionExecutionContext<Context, Reference>) => void;\n}\n","import React, { useMemo } from 'react';\nimport type { ReferenceType } from '@floating-ui/react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport { HoneyList } from '../HoneyList';\nimport { HoneyPopup, useHoneyPopupContext } from '../HoneyPopup';\nimport { HoneyContextMenuContentOption } from './HoneyContextMenuContentOption';\nimport type { HoneyPopupProps } from '../HoneyPopup';\nimport type { HoneyContextMenuOption } from './HoneyContextMenu.types';\nimport type { HoneyContextMenuContentOptionProps } from './HoneyContextMenuContentOption';\n\nexport interface HoneyContextMenuContentProps<\n Option extends HoneyContextMenuOption<Context, Reference>,\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n> extends FastOmit<\n HoneyPopupProps<Context, Reference, UseAutoSize>,\n 'children' | 'context' | 'content'\n > {\n options: Option[] | undefined;\n optionProps?: FastOmit<HoneyContextMenuContentOptionProps<Option, Context, Reference>, 'option'>;\n}\n\nexport const HoneyContextMenuContent = <\n Option extends HoneyContextMenuOption<Context, Reference>,\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n>({\n options,\n optionProps,\n floatingOptions,\n ...popupProps\n}: HoneyContextMenuContentProps<Option, Context, Reference, UseAutoSize>) => {\n const { contentProps } = popupProps;\n\n const { context, floatingContext } = useHoneyPopupContext<Context, Reference>();\n\n const visibleOptions = useMemo<Option[] | undefined>(\n () =>\n options?.filter(option =>\n typeof option.visible === 'function'\n ? option.visible({ context, floatingContext })\n : option.visible !== false,\n ),\n [options],\n );\n\n return (\n <HoneyList items={visibleOptions} itemKey=\"id\" emptyContent=\"No options\">\n {option =>\n option.options?.length ? (\n <HoneyPopup\n context={context}\n content={\n <HoneyContextMenuContent\n options={option.options}\n optionProps={optionProps}\n contentProps={contentProps}\n />\n }\n event=\"hover\"\n referenceProps={{\n $width: '100%',\n }}\n floatingOptions={{\n placement: 'right-start',\n ...floatingOptions,\n }}\n useArrow={true}\n {...popupProps}\n >\n <HoneyContextMenuContentOption\n option={option as HoneyContextMenuOption<unknown, any>}\n {...optionProps}\n >\n {option.label}\n </HoneyContextMenuContentOption>\n </HoneyPopup>\n ) : (\n <HoneyContextMenuContentOption\n option={option as HoneyContextMenuOption<unknown, any>}\n {...optionProps}\n />\n )\n }\n </HoneyList>\n );\n};\n","import React from 'react';\nimport type { ReferenceType } from '@floating-ui/react';\n\nimport { HoneyBox } from '../HoneyBox';\nimport { useHoneyPopupContext } from '../HoneyPopup';\nimport type { HoneyBoxProps } from '../HoneyBox';\nimport type { HoneyContextMenuOption } from './HoneyContextMenu.types';\n\nexport interface HoneyContextMenuContentOptionProps<\n Option extends HoneyContextMenuOption<Context, Reference>,\n Context,\n Reference extends ReferenceType,\n> extends HoneyBoxProps {\n option: Option;\n}\n\nexport const HoneyContextMenuContentOption = <\n Option extends HoneyContextMenuOption<Context, Reference>,\n Context,\n Reference extends ReferenceType,\n>({\n option,\n ...props\n}: HoneyContextMenuContentOptionProps<Option, Context, Reference>) => {\n const { context, floatingContext } = useHoneyPopupContext<Context, Reference>();\n\n const handleClick = () => {\n option.onClick?.({ context, floatingContext });\n };\n\n return (\n <HoneyBox onClick={handleClick} {...props}>\n {option.label}\n </HoneyBox>\n );\n};\n","export * from './HoneyContextMenu.types';\nexport * from './HoneyContextMenu';\n","import { styled } from '@react-hive/honey-style';\nimport type { ElementType } from 'react';\n\nimport { __DEV__ } from '../../constants';\nimport { warnOnce } from '../../utils';\nimport { HoneyBox } from '../HoneyBox';\nimport type { HoneyBoxProps } from '../HoneyBox';\n\nexport type HoneyFlexProps<Element extends ElementType = 'div'> = HoneyBoxProps<Element> & {\n /**\n * Enables inline flex layout.\n *\n * When enabled, this prop applies:\n * - `display: inline-flex`\n *\n * When disabled (default), the layout uses:\n * - `display: flex`\n *\n * This is a semantic convenience prop intended for inline alignment scenarios\n * (e.g. buttons, badges, form controls).\n *\n * If `$display` is explicitly provided, it always takes precedence over this prop.\n *\n * @default false\n */\n inline?: boolean;\n /**\n * Enables horizontal (row-based) layout.\n *\n * When enabled, this prop applies:\n * - `flex-direction: row`\n *\n * When disabled (default), the layout uses:\n * - `flex-direction: column`\n *\n * This is a semantic convenience prop. If `$flexDirection` is explicitly provided,\n * it will always take precedence.\n *\n * @default false\n */\n row?: boolean;\n /**\n * Centers children along both the main and cross axes.\n *\n * When enabled, this applies:\n * - `align-items: center`\n * - `justify-content: center`\n *\n * This prop is intended for common centering use cases and improves readability\n * over manually specifying flex styles.\n *\n * Explicit style props (`$alignItems`, `$justifyContent`)\n * always override this behavior.\n *\n * @default false\n */\n center?: boolean;\n /**\n * Centers children along the horizontal axis.\n *\n * - In column layouts: maps to `align-items: center`\n * - In row layouts: maps to `justify-content: center`\n *\n * Ignored if `center` is enabled or if the corresponding explicit style prop is provided.\n *\n * @default false\n */\n centerX?: boolean;\n /**\n * Centers children along the vertical axis.\n *\n * - In column layouts: maps to `justify-content: center`\n * - In row layouts: maps to `align-items: center`\n *\n * Ignored if `center` is enabled or if the corresponding explicit style prop is provided.\n *\n * @default false\n */\n centerY?: boolean;\n};\n\n/**\n * A flexbox-based layout primitive built on top of {@link HoneyBox}.\n *\n * `HoneyFlex` is the canonical flex container within the Honey design system.\n * It provides sensible defaults, readable semantic helpers, and full access\n * to low-level flexbox customization when needed.\n *\n * ---\n *\n * ### Default behavior\n * - `display: flex`\n * - `flex-direction: column`\n *\n * ---\n *\n * ### Semantic helpers\n * - `inline` → switches layout to `inline-flex`\n * - `row` → switches layout to horizontal flow\n * - `center` → centers content on both axes\n * - `centerX`, `centerY` → axis-aware centering helpers\n *\n * Semantic helpers exist purely for convenience and readability.\n * Any explicitly provided style props **always take precedence**.\n *\n * ---\n *\n * @remarks\n * This component is intended to be the primary flex layout primitive\n * in the Honey ecosystem. Prefer it over raw flexbox usage to ensure\n * consistent behavior, defaults, and testability.\n *\n * ---\n *\n * @example Inline layout\n * ```tsx\n * <HoneyFlex inline centerY>\n * <Icon />\n * <Text>Label</Text>\n * </HoneyFlex>\n * ```\n *\n * @example Horizontal layout\n * ```tsx\n * <HoneyFlex $gap={2} row/>\n * ```\n *\n * @example Column layout\n * ```tsx\n * <HoneyFlex $gap={3} />\n * ```\n *\n * @example Centered fullscreen container\n * ```tsx\n * <HoneyFlex $minHeight=\"100vh\" center>\n * <Spinner />\n * </HoneyFlex>\n * ```\n */\nexport const HoneyFlex = styled<HoneyFlexProps>(\n HoneyBox,\n ({\n inline = false,\n row = false,\n center = false,\n centerX = false,\n centerY = false,\n $display,\n $flexDirection,\n $alignItems,\n $justifyContent,\n ...props\n }) => {\n const display = inline ? 'inline-flex' : ($display ?? 'flex');\n const flexDirection = $flexDirection ?? (row ? 'row' : 'column');\n const isRow = flexDirection === 'row';\n\n const shouldCenterAlignItems = center || (isRow ? centerY : centerX);\n const shouldCenterJustifyContent = center || (isRow ? centerX : centerY);\n\n const alignItems = $alignItems ?? (shouldCenterAlignItems ? 'center' : undefined);\n const justifyContent = $justifyContent ?? (shouldCenterJustifyContent ? 'center' : undefined);\n\n if (__DEV__) {\n const hasAlignConflict = shouldCenterAlignItems && $alignItems !== undefined;\n const hasJustifyConflict = shouldCenterJustifyContent && $justifyContent !== undefined;\n\n if (hasAlignConflict || hasJustifyConflict) {\n warnOnce(\n `HoneyFlex:${hasAlignConflict}:${hasJustifyConflict}`,\n [\n '[@react-hive/honey-layout]: HoneyFlex.',\n 'Semantic centering props conflict with explicit flex alignment styles:',\n hasAlignConflict && ` - align-items is controlled by both semantics and $alignItems`,\n hasJustifyConflict &&\n ` - justify-content is controlled by both semantics and $justifyContent`,\n 'Explicit styles always win. Remove one side to silence this warning.',\n ]\n .filter(Boolean)\n .join('\\n'),\n );\n }\n }\n\n return {\n $display: display,\n $flexDirection: flexDirection,\n $alignItems: alignItems,\n $justifyContent: justifyContent,\n // Data\n 'data-testid': props['data-testid'] ?? 'honey-flex',\n };\n },\n)``;\n","export * from './HoneyFlex';\n","import React, { useMemo } from 'react';\n\nimport { HoneyGridContext } from './HoneyGridContext';\nimport { HoneyGridStyled } from './HoneyGridStyled';\nimport type { HoneyGridContextProps } from './HoneyGridContext';\nimport type { HoneyGridStyledProps } from './HoneyGridStyled';\nimport type { HoneyGridColumnStyledProps } from '../HoneyGridColumn';\n\nexport interface HoneyGridProps extends HoneyGridStyledProps {\n /**\n * The number of columns in the grid layout.\n */\n columns: number;\n /**\n * Specifies whether columns should grow to fill available space.\n *\n * @default true\n */\n columnsGrowing?: boolean;\n /**\n * Specifies the breakpoint at which the max-width should be applied to the columns or disables it if set to `false`.\n * Can be a breakpoint name.\n *\n * @default false\n */\n applyColumnMaxWidth?: HoneyGridColumnStyledProps['applyMaxWidth'];\n}\n\nexport const HoneyGrid = ({\n ref,\n children,\n columns,\n spacing,\n columnsGrowing = true,\n applyColumnMaxWidth = false,\n ...props\n}: HoneyGridProps) => {\n const contextValue = useMemo<HoneyGridContextProps>(\n () => ({\n columns,\n spacing,\n isColumnsGrowing: columnsGrowing,\n applyColumnMaxWidth,\n }),\n [columns, spacing, columnsGrowing, applyColumnMaxWidth],\n );\n\n return (\n <HoneyGridContext value={contextValue}>\n <HoneyGridStyled ref={ref} spacing={spacing} data-testid=\"honey-grid\" {...props}>\n {children}\n </HoneyGridStyled>\n </HoneyGridContext>\n );\n};\n","import { createContext } from 'react';\nimport type { HoneyBreakpointName } from '@react-hive/honey-style';\n\nexport interface HoneyGridContextProps {\n columns: number;\n spacing: number | undefined;\n isColumnsGrowing: boolean;\n applyColumnMaxWidth: HoneyBreakpointName | false;\n}\n\nexport const HoneyGridContext = createContext<HoneyGridContextProps | undefined>(undefined);\n","import * as CSS from 'csstype';\nimport { css, styled, resolveSpacing } from '@react-hive/honey-style';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport { HoneyBox } from '../HoneyBox';\nimport { HoneyGridColumnStyled } from '../HoneyGridColumn/HoneyGridColumnStyled';\nimport type { HoneyBoxProps } from '../HoneyBox';\n\nexport interface HoneyGridStyledProps\n // Omit the `$gap` because `spacing` prop overrides that value\n extends FastOmit<HoneyBoxProps, '$gap'> {\n /**\n * The height of each grid column.\n */\n columnHeight?: CSS.Properties['height'];\n /**\n * The minimum height of each grid column.\n */\n minColumnHeight?: CSS.Properties['minHeight'];\n /**\n * The spacing between grid columns.\n *\n * @default 0\n */\n spacing?: number;\n}\n\nexport const HoneyGridStyled = styled<HoneyGridStyledProps>(HoneyBox, ({ $flexWrap = 'wrap' }) => ({\n $flexWrap,\n}))`\n ${({ columnHeight, minColumnHeight, spacing = 0 }) => css`\n display: flex;\n gap: ${resolveSpacing(spacing)};\n\n > ${HoneyGridColumnStyled} {\n height: ${columnHeight};\n min-height: ${minColumnHeight};\n }\n `}\n`;\n","export * from './use-honey-grid-context';\n","import { useContext } from 'react';\n\nimport { HoneyGridContext } from '../HoneyGridContext';\n\nexport const useHoneyGridContext = () => {\n const context = useContext(HoneyGridContext);\n if (!context) {\n throw new Error(\n 'The `useHoneyGridContext()` hook can only be used inside <HoneyGrid/> component!',\n );\n }\n\n return context;\n};\n","export * from './HoneyGrid';\nexport * from './hooks';\n","import React from 'react';\nimport type { ElementType } from 'react';\n\nimport { useHoneyGridContext } from '../HoneyGrid/hooks';\nimport { HoneyGridColumnStyled } from './HoneyGridColumnStyled';\nimport type { HoneyGridColumnProps } from './HoneyGridColumn.types';\n\nexport const HoneyGridColumn = <Element extends ElementType = 'div'>({\n children,\n ...props\n}: HoneyGridColumnProps<Element>) => {\n const { columns, spacing, isColumnsGrowing, applyColumnMaxWidth } = useHoneyGridContext();\n\n return (\n <HoneyGridColumnStyled\n columns={columns}\n spacing={spacing}\n applyMaxWidth={applyColumnMaxWidth}\n $flexGrow={isColumnsGrowing ? 1 : 0}\n // Data\n data-testid=\"honey-grid-column\"\n {...props}\n >\n {children}\n </HoneyGridColumnStyled>\n );\n};\n","import type { ElementType } from 'react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport type { HoneyGridColumnStyledProps } from './HoneyGridColumnStyled';\n\nexport type HoneyGridColumnProps<Element extends ElementType = 'div'> = FastOmit<\n HoneyGridColumnStyledProps<Element>,\n 'columns' | 'spacing' | 'totalColumns' | 'totalTakeColumns' | 'applyMaxWidth'\n>;\n","import { css, styled, resolveSpacing } from '@react-hive/honey-style';\nimport type { ElementType } from 'react';\nimport type { HoneyBreakpointName } from '@react-hive/honey-style';\n\nimport { bpMedia } from '../../helpers';\nimport { HoneyFlex } from '../HoneyFlex';\nimport type { HoneyFlexProps } from '../HoneyFlex';\n\nexport type HoneyGridColumnStyledProps<Element extends ElementType = 'div'> =\n HoneyFlexProps<Element> & {\n /**\n * Total number of columns in the grid.\n */\n columns: number;\n /**\n * Spacing between grid columns.\n *\n * @default 0\n */\n spacing: number | undefined;\n /**\n * The number of columns this column should take.\n *\n * @default 1\n */\n takeColumns?: number;\n /**\n * Specifies the breakpoint at which the max-width should be applied or disables it if set to `false`.\n * Can be a breakpoint name.\n */\n applyMaxWidth?: HoneyBreakpointName | false;\n };\n\n/**\n * This component defines the layout and styling for individual columns in a grid layout.\n * It provides flexibility in specifying the number of columns to take, the total number of columns in the grid,\n * and the spacing between columns.\n */\nexport const HoneyGridColumnStyled = styled<HoneyGridColumnStyledProps>(HoneyFlex)`\n ${({ columns, takeColumns = 1, spacing = 0, applyMaxWidth, theme }) => {\n const fractionalWidth = 100 / columns;\n\n const columnSpacing = resolveSpacing(spacing, null)({ theme });\n const columnWidthPercent = takeColumns * fractionalWidth;\n const columnGap = (columns - takeColumns) * (columnSpacing / columns);\n\n const columnWidth = `calc(${columnWidthPercent}% - ${columnGap}px)`;\n\n return css`\n flex-basis: ${columnWidth};\n\n ${applyMaxWidth &&\n css`\n ${bpMedia(applyMaxWidth).up} {\n max-width: ${columnWidth};\n }\n `}\n `;\n }}\n`;\n","export * from './HoneyGridColumn.types';\nexport * from './HoneyGridColumnStyled';\nexport * from './HoneyGridColumn';\n","import type { PropsWithChildren } from 'react';\nimport { useLayoutEffect, useRef, useState } from 'react';\n\nimport type { TimeoutId } from '../../types';\n\nexport interface HoneyLazyContentProps {\n /**\n * Determines whether the content should be mounted or unmounted.\n */\n mount: boolean;\n /**\n * The delay in milliseconds before unmounting the content when `mount` is set to `false`.\n */\n unmountDelay: number;\n /**\n * Determines whether the content should always remain mounted, regardless of the value of `mount`.\n * If `true`, the content will never be unmounted.\n *\n * @default false\n */\n alwaysMounted?: boolean;\n /**\n * Determines whether the content should remain mounted after the mount.\n * If `true`, the content will not be unmounted after the time it's mounted.\n *\n * @default false\n */\n keepAfterMount?: boolean;\n}\n\n/**\n * Component for lazy loading/unloading content based on a mount/unmount state.\n */\nexport const HoneyLazyContent = ({\n children,\n mount,\n unmountDelay,\n alwaysMounted = false,\n keepAfterMount = false,\n}: PropsWithChildren<HoneyLazyContentProps>) => {\n const [isMountContent, setIsMountContent] = useState(alwaysMounted || mount);\n\n const mountContentTimeoutIdRef = useRef<TimeoutId>(undefined);\n\n useLayoutEffect(() => {\n if (!mount || alwaysMounted) {\n return;\n }\n\n clearTimeout(mountContentTimeoutIdRef.current);\n\n setIsMountContent(true);\n\n return () => {\n if (!keepAfterMount) {\n mountContentTimeoutIdRef.current = setTimeout(() => setIsMountContent(false), unmountDelay);\n }\n };\n }, [mount, alwaysMounted, unmountDelay]);\n\n return isMountContent ? children : null;\n};\n","export * from './HoneyLazyContent';\n","import type { HoneyListItem, HoneyListItemId, HoneyListItemKey } from './HoneyList.types';\n\nexport const getHoneyListItemId = <Item extends HoneyListItem>(\n item: Item,\n itemKey: HoneyListItemKey<Item> | undefined,\n itemIndex: number,\n): HoneyListItemId<Item> => {\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n\n if (typeof item === 'string' || typeof item === 'number') {\n return item;\n }\n\n return itemKey ? item[itemKey] : itemIndex;\n};\n","import React, { Fragment } from 'react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport { HoneyStatusContent } from '../HoneyStatusContent';\nimport { getHoneyListItemId } from './HoneyList.helpers';\nimport { HoneyListStyled } from './HoneyListStyled';\nimport type { HoneyListGenericProps, HoneyListItem } from './HoneyList.types';\nimport type { HoneyStatusContentProps } from '../HoneyStatusContent';\nimport type { HoneyListStyledProps } from './HoneyListStyled';\n\nexport interface HoneyListProps<Item extends HoneyListItem>\n extends FastOmit<HoneyListStyledProps, 'children'>,\n HoneyListGenericProps<Item>,\n HoneyStatusContentProps {}\n\n/**\n * A generic and reusable list component that handles different states such as loading, error, or no content,\n * and dynamically renders a list of items with custom content for each item.\n *\n * This component provides a flexible and accessible way to display lists, with built-in support for\n * various states to enhance the user experience. It accepts a `ref` to access the underlying HTML element\n * for greater control and customization.\n *\n * @template Item - Represents the type of the items to be rendered in the list. This allows the component\n * to be used with any item type.\n */\nexport const HoneyList = <Item extends HoneyListItem>({\n children,\n items,\n itemKey,\n loading,\n loadingOverContent,\n loadingContent,\n error,\n errorContent,\n empty = false,\n emptyContent,\n ...props\n}: HoneyListProps<Item>) => {\n return (\n <HoneyListStyled\n role=\"list\"\n // ARIA\n aria-busy={loading}\n // Data\n data-testid=\"honey-list\"\n {...props}\n >\n <HoneyStatusContent\n loading={loading}\n loadingOverContent={loadingOverContent}\n loadingContent={loadingContent}\n error={error}\n errorContent={errorContent}\n empty={empty || items?.length === 0}\n emptyContent={emptyContent}\n >\n {items?.map((item, itemIndex, thisItems) => (\n <Fragment key={String(getHoneyListItemId(item, itemKey, itemIndex))}>\n {children(item, itemIndex, thisItems)}\n </Fragment>\n ))}\n </HoneyStatusContent>\n </HoneyListStyled>\n );\n};\n","import type { ReactNode } from 'react';\n\nexport type HoneyListItem = object | string | number;\n\nexport type HoneyListItemKey<Item extends HoneyListItem> = ((item: Item) => string) | keyof Item;\n\nexport type HoneyListItemId<Item extends HoneyListItem> = Item[keyof Item] | string | number;\n\n/**\n * Generic props for HoneyList component.\n *\n * @template Item - The type of the items to be rendered in the list.\n * @template T - Additional props type.\n */\nexport interface HoneyListGenericProps<Item extends HoneyListItem> {\n /**\n * Function to render each item in the list.\n *\n * @param item - The current item to be rendered.\n * @param itemIndex - The index of the current item.\n * @param thisItems - The array of all items.\n *\n * @returns The node to be rendered for each item.\n */\n children: (item: Item, itemIndex: number, thisItems: Item[]) => ReactNode;\n /**\n * The array of items to be displayed in the list.\n */\n items: Item[] | undefined;\n /**\n * Optional function or key to uniquely identify each item in the list.\n */\n itemKey?: HoneyListItemKey<Item>;\n}\n","import { styled } from '@react-hive/honey-style';\n\nimport { HoneyFlex } from '../HoneyFlex';\nimport type { HoneyFlexProps } from '../HoneyFlex';\n\nexport type HoneyListStyledProps = HoneyFlexProps;\n\nexport const HoneyListStyled = styled<HoneyListStyledProps>(\n HoneyFlex,\n ({ $overflow = 'hidden auto' }) => ({\n $overflow,\n }),\n)``;\n","export * from './HoneyList.types';\nexport * from './HoneyList.helpers';\nexport * from './HoneyList';\n","import React, { useCallback } from 'react';\nimport { invokeIfFunction } from '@react-hive/honey-utils';\nimport type { FastOmit } from '@react-hive/honey-style';\nimport type { ReactNode } from 'react';\n\nimport { useRegisterHoneyOverlay } from '../hooks';\nimport { mergeRefs } from '../helpers';\nimport type { HoneyActiveOverlay, HoneyOverlayId, Nullable } from '~/types';\nimport type { HoneyFlexProps } from './HoneyFlex';\nimport { HoneyFlex } from './HoneyFlex';\n\nexport interface HoneyOverlayContext {\n /**\n * The current overlay instance, including methods and metadata for managing the overlay.\n */\n overlay: Nullable<HoneyActiveOverlay>;\n /**\n * Function to deactivate the overlay. Typically, triggers the `onDeactivate` callback.\n */\n deactivateOverlay: () => void;\n}\n\nexport interface HoneyOverlayProps extends FastOmit<HoneyFlexProps, 'children'> {\n /**\n * The content of the overlay, either as static nodes or a function that receives the object\n * with the current overlay state and helper methods.\n */\n children: ReactNode | ((overlayContext: HoneyOverlayContext) => ReactNode);\n /**\n * Determines whether the overlay is currently active.\n */\n active: boolean;\n /**\n * An optional unique identifier for the overlay.\n */\n overlayId?: HoneyOverlayId;\n /**\n * Callback function invoked when the overlay is deactivated.\n * Typically called when the \"Escape\" key is pressed or another user-defined action triggers deactivation.\n */\n onDeactivate: () => void;\n}\n\n/**\n * A reusable overlay component integrated with the `HoneyLayoutProvider` system.\n *\n * Automatically registers/unregisters itself with the layout system and handles key events.\n *\n * @param props - Component configuration.\n *\n * @example\n * ```tsx\n * <HoneyOverlay\n * active={isOpen}\n * onDeactivate={() => setIsOpen(false)}\n * >\n * {({ deactivateOverlay }) => (\n * <div>\n * <h2>Settings</h2>\n * <button onClick={deactivateOverlay}>Close</button>\n * </div>\n * )}\n * </HoneyOverlay>\n * ```\n */\nexport const HoneyOverlay = ({\n ref,\n children,\n active,\n overlayId,\n onDeactivate,\n ...props\n}: HoneyOverlayProps) => {\n const overlay = useRegisterHoneyOverlay(active, {\n id: overlayId,\n onKeyUp: useCallback(\n keyCode => {\n if (keyCode === 'Escape') {\n onDeactivate();\n }\n },\n [onDeactivate],\n ),\n });\n\n const mergedRef = mergeRefs(overlay?.setContainerRef, ref);\n\n return (\n <HoneyFlex ref={mergedRef} inert={!active} {...props}>\n {invokeIfFunction(children, {\n overlay,\n deactivateOverlay: onDeactivate,\n })}\n </HoneyFlex>\n );\n};\n","import React from 'react';\nimport type { ReferenceType } from '@floating-ui/react';\n\nimport { HoneyPopupTree } from './HoneyPopupTree';\nimport { HoneyPopupContent } from './HoneyPopupContent';\nimport type { HoneyPopupContentProps } from './HoneyPopupContent';\n\nexport interface HoneyPopupProps<\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n> extends HoneyPopupContentProps<Context, Reference, UseAutoSize> {\n /**\n * Whether to wrap the popup in a `FloatingTree`.\n * Required if you're using nested floating elements like tooltips or popups within a popup.\n *\n * @default false\n *\n * @see https://floating-ui.com/docs/floatingtree\n */\n useTree?: boolean;\n}\n\n/**\n * A popup component that provides floating behavior with customizable options.\n *\n * @template Context - Optional context type passed to floating UI.\n * @template Reference - The reference type used for positioning.\n * @template UseAutoSize - Enables auto-sizing behavior for content if `true`.\n */\nexport const HoneyPopup = <Context, Reference extends ReferenceType, UseAutoSize extends boolean>({\n useTree = false,\n ...props\n}: HoneyPopupProps<Context, Reference, UseAutoSize>) => {\n return (\n <HoneyPopupTree enabled={useTree}>\n <HoneyPopupContent {...props} />\n </HoneyPopupTree>\n );\n};\n","export {};\n","import React, { useMemo, useCallback } from 'react';\nimport { FloatingArrow, FloatingFocusManager, FloatingNode } from '@floating-ui/react';\nimport { invokeIfFunction } from '@react-hive/honey-utils';\nimport type { CSSProperties, ReactNode } from 'react';\nimport type {\n ReferenceType,\n FloatingArrowProps,\n FloatingFocusManagerProps,\n MiddlewareData,\n} from '@floating-ui/react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport { HoneyOverlay } from '../HoneyOverlay';\nimport { HoneyPopupContext } from './HoneyPopupContext';\nimport { HoneyPopupStyled } from './HoneyPopupStyled';\nimport { HoneyPopupPortal } from './HoneyPopupPortal';\nimport { useHoneyPopup } from './hooks';\nimport type { HoneyPopupPortalProps } from './HoneyPopupPortal';\nimport type { HoneyPopupStyledProps } from './HoneyPopupStyled';\nimport type { HoneyPopupContextValue } from './HoneyPopupContext';\nimport type { UseHoneyPopupOptions } from './hooks';\nimport type { HoneyOverlayProps } from '../HoneyOverlay';\n\ntype InheritedHoneyOverlayProps = FastOmit<\n HoneyOverlayProps,\n 'children' | 'active' | 'onDeactivate' | '$position'\n>;\n\nexport interface HoneyPopupContentProps<\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n> extends UseHoneyPopupOptions<Reference, UseAutoSize> {\n children: ReactNode | ((context: HoneyPopupContextValue<Context, Reference>) => ReactNode);\n referenceProps?: FastOmit<HoneyPopupStyledProps, 'children' | 'content'>;\n /**\n * Content inside the popup.\n */\n content: ReactNode | ((context: HoneyPopupContextValue<Context, Reference>) => ReactNode);\n /**\n * Additional props for the floating content.\n */\n contentProps?: UseAutoSize extends true\n ? // Omit `minWidth`, `minHeight`, `maxWidth` and `maxHeight` because they will be overwritten by size() middleware\n FastOmit<InheritedHoneyOverlayProps, '$minWidth' | '$minHeight' | '$maxWidth' | '$maxHeight'>\n : InheritedHoneyOverlayProps;\n /**\n * Props for managing focus inside the popup.\n *\n * @see https://floating-ui.com/docs/floatingfocusmanager#props\n */\n focusManagerProps?: FastOmit<FloatingFocusManagerProps, 'children' | 'context'>;\n /**\n * Properties for an arrow component.\n *\n * @see https://floating-ui.com/docs/FloatingArrow#props\n */\n arrowProps?: FastOmit<FloatingArrowProps, 'ref' | 'context'>;\n /**\n * Properties for `HoneyPopupPortal` component.\n */\n portalProps?: FastOmit<HoneyPopupPortalProps, 'children'>;\n /**\n * Function to adjust the floating content's styles before rendering.\n */\n adjustStyles?: (\n styles: CSSProperties,\n executionContext: {\n middlewareData: MiddlewareData;\n },\n ) => CSSProperties;\n /**\n * Optional context for the popup.\n */\n context?: Context;\n}\n\nexport const HoneyPopupContent = <\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n>({\n children,\n referenceProps,\n content,\n contentProps,\n focusManagerProps,\n arrowProps,\n portalProps,\n adjustStyles,\n context,\n ...popupOptions\n}: HoneyPopupContentProps<Context, Reference, UseAutoSize>) => {\n const { useArrow, onClose } = popupOptions;\n\n const { nodeId, floating, isOpen, arrowRef, interactions, transition } =\n useHoneyPopup(popupOptions);\n\n const handleDeactivateOverlay = useCallback(() => {\n onClose?.('escape-key');\n }, [onClose]);\n\n const popupContext = useMemo<HoneyPopupContextValue<Context, Reference>>(\n () => ({\n context,\n floatingContext: floating.context,\n }),\n [context, floating.context],\n );\n\n return (\n <HoneyPopupStyled\n ref={floating.refs.setReference}\n {...interactions.getReferenceProps()}\n {...referenceProps}\n // Data\n data-testid=\"honey-popup\"\n >\n <HoneyPopupContext value={popupContext}>\n {invokeIfFunction(children, popupContext)}\n\n <FloatingNode id={nodeId}>\n {transition.isMounted && (\n <HoneyPopupPortal {...portalProps}>\n <FloatingFocusManager\n context={floating.context}\n disabled={!isOpen}\n {...focusManagerProps}\n >\n <HoneyOverlay\n ref={floating.refs.setFloating}\n active={isOpen}\n style={\n adjustStyles?.(\n {\n ...floating.floatingStyles,\n ...transition.styles,\n },\n {\n middlewareData: floating.middlewareData,\n },\n ) ?? {\n ...floating.floatingStyles,\n ...transition.styles,\n }\n }\n onDeactivate={handleDeactivateOverlay}\n {...interactions.getFloatingProps()}\n {...contentProps}\n // Data\n data-testid=\"honey-popup-floating-content\"\n >\n {useArrow && (\n <FloatingArrow\n ref={arrowRef}\n context={floating.context}\n fill=\"white\"\n {...arrowProps}\n />\n )}\n\n {invokeIfFunction(content, popupContext)}\n </HoneyOverlay>\n </FloatingFocusManager>\n </HoneyPopupPortal>\n )}\n </FloatingNode>\n </HoneyPopupContext>\n </HoneyPopupStyled>\n );\n};\n","import { createContext } from 'react';\nimport type { FloatingContext, ReferenceType } from '@floating-ui/react';\n\nexport interface HoneyPopupContextValue<Context, Reference extends ReferenceType> {\n context: Context | undefined;\n floatingContext: FloatingContext<Reference>;\n}\n\nexport const HoneyPopupContext = createContext<HoneyPopupContextValue<any, any> | undefined>(\n undefined,\n);\n","import React from 'react';\nimport { FloatingPortal } from '@floating-ui/react';\nimport type { FloatingPortalProps } from '@floating-ui/react';\n\n/**\n * @see https://floating-ui.com/docs/floatingportal#props\n */\nexport interface HoneyPopupPortalProps extends FloatingPortalProps {\n /**\n * @default true\n */\n enabled?: boolean;\n}\n\nexport const HoneyPopupPortal = ({ children, enabled = true, ...props }: HoneyPopupPortalProps) => {\n return enabled ? <FloatingPortal {...props}>{children}</FloatingPortal> : children;\n};\n","import { styled } from '@react-hive/honey-style';\n\nimport { HoneyFlex } from '../HoneyFlex';\nimport type { HoneyFlexProps } from '../HoneyFlex';\n\nexport type HoneyPopupStyledProps = HoneyFlexProps;\n\nexport const HoneyPopupStyled = styled<HoneyPopupStyledProps>(\n HoneyFlex,\n ({ $width = 'max-content' }) => ({\n $width,\n }),\n)``;\n","import React from 'react';\nimport { FloatingTree, useFloatingParentNodeId } from '@floating-ui/react';\nimport type { FloatingTreeProps } from '@floating-ui/react';\n\n/**\n * @see https://floating-ui.com/docs/floatingtree\n */\ninterface HoneyPopupTreeProps extends FloatingTreeProps {\n /**\n * Whether to render the `FloatingTree` component.\n * Automatically disables if there is a parent floating node.\n *\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * Wrapper component for `FloatingTree` that conditionally renders based on whether there is a parent floating node.\n *\n * @see https://floating-ui.com/docs/floatingtree\n */\nexport const HoneyPopupTree = ({ children, enabled = true, ...props }: HoneyPopupTreeProps) => {\n const parentNodeId = useFloatingParentNodeId();\n\n if (!enabled || parentNodeId) {\n return children;\n }\n\n return <FloatingTree {...props}>{children}</FloatingTree>;\n};\n","export * from './use-honey-popup';\nexport * from './use-honey-popup-context';\n","import { useContext } from 'react';\nimport { assert } from '@react-hive/honey-utils';\nimport type { ReferenceType } from '@floating-ui/react';\n\nimport { HoneyPopupContext } from '../HoneyPopupContext';\nimport type { HoneyPopupContextValue } from '../HoneyPopupContext';\n\nexport const useHoneyPopupContext = <\n Context,\n Reference extends ReferenceType = ReferenceType,\n>() => {\n const context = useContext<HoneyPopupContextValue<Context, Reference> | undefined>(\n HoneyPopupContext,\n );\n\n assert(\n context,\n 'The `useHoneyPopupContext()` hook can only be used inside <HoneyPopup/> component!',\n );\n\n return context;\n};\n","import {\n safePolygon,\n useClick,\n useClientPoint,\n useDismiss,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n} from '@floating-ui/react';\nimport type {\n ElementProps,\n ReferenceType,\n FloatingContext,\n UseDismissProps,\n UseClickProps,\n UseHoverProps,\n UseFocusProps,\n UseClientPointProps,\n UseRoleProps,\n} from '@floating-ui/react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nexport type HoneyPopupExtraInteraction = <Props extends object>(\n context: FloatingContext,\n props?: Props,\n) => ElementProps;\n\n/**\n * Options for configuring popup interactions.\n */\nexport interface UseHoneyPopupInteractionsOptions {\n /**\n * @default true\n */\n enabled?: boolean;\n /**\n * Determines the trigger event for opening the popup.\n *\n * @default 'click'\n */\n event?: 'click' | 'hover' | 'focus' | 'point' | 'manual';\n /**\n * Configuration for dismiss behavior.\n *\n * @see https://floating-ui.com/docs/usedismiss\n */\n dismissOptions?: FastOmit<UseDismissProps, 'escapeKey'>;\n /**\n * Configuration for click interactions.\n *\n * @see https://floating-ui.com/docs/useclick\n */\n clickOptions?: FastOmit<UseClickProps, 'enabled'>;\n /**\n * Configuration for hover interactions.\n *\n * @prop restMs Default is 150.\n * @prop handleClose Default is `safePolygon()`.\n *\n * @see https://floating-ui.com/docs/usehover\n */\n hoverOptions?: FastOmit<UseHoverProps, 'enabled'>;\n /**\n * Configuration for focus interactions.\n *\n * @see https://floating-ui.com/docs/usefocus\n */\n focusOptions?: FastOmit<UseFocusProps, 'enabled'>;\n /**\n * Configuration for pointer interactions.\n *\n * @see https://floating-ui.com/docs/useclientpoint\n */\n clientPointsOptions?: FastOmit<UseClientPointProps, 'enabled'>;\n /**\n * Configuration for role assignment.\n *\n * @see https://floating-ui.com/docs/userole\n */\n roleOptions?: FastOmit<UseRoleProps, 'enabled'>;\n /**\n * Additional custom interactions to be merged with default ones.\n * Useful for extending or overriding the default behavior.\n *\n * To define custom interaction, please use the ` HoneyPopupExtraInteraction ` type.\n *\n * @default []\n *\n * @see https://floating-ui.com/docs/custom-hooks\n */\n extraInteractions?: ElementProps[];\n}\n\nexport const useHoneyPopupInteractions = <Reference extends ReferenceType>(\n context: FloatingContext<Reference>,\n {\n enabled = true,\n event = 'click',\n dismissOptions,\n clickOptions,\n hoverOptions,\n focusOptions,\n clientPointsOptions,\n roleOptions,\n extraInteractions = [],\n }: UseHoneyPopupInteractionsOptions,\n) => {\n const dismiss = useDismiss(context, {\n escapeKey: false,\n ...dismissOptions,\n });\n\n const click = useClick(context, {\n enabled: enabled && event === 'click',\n ...clickOptions,\n });\n\n const hover = useHover(context, {\n restMs: 150,\n enabled: enabled && event === 'hover',\n handleClose: safePolygon(),\n ...hoverOptions,\n });\n\n const focus = useFocus(context, {\n enabled: enabled && event === 'focus',\n ...focusOptions,\n });\n\n const clientPoint = useClientPoint(context, {\n enabled: enabled && event === 'point',\n ...clientPointsOptions,\n });\n\n const role = useRole(context, roleOptions);\n\n return useInteractions([dismiss, click, hover, focus, clientPoint, role, ...extraInteractions]);\n};\n","import { useEffect, useRef, useState } from 'react';\nimport {\n arrow,\n autoUpdate,\n flip,\n offset,\n shift,\n size,\n autoPlacement,\n useFloating,\n useFloatingNodeId,\n useTransitionStyles,\n} from '@floating-ui/react';\nimport { isFunction } from '@react-hive/honey-utils';\nimport type { RefObject } from 'react';\nimport type { Derivable } from '@floating-ui/dom';\nimport type {\n Rect,\n ReferenceType,\n AutoUpdateOptions,\n AutoPlacementOptions,\n ArrowOptions,\n FlipOptions,\n OffsetOptions,\n ShiftOptions,\n SizeOptions,\n Middleware,\n OpenChangeReason,\n UseFloatingOptions,\n UseFloatingReturn,\n UseInteractionsReturn,\n UseTransitionStylesProps,\n} from '@floating-ui/react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport { useHoneyLayout, useHoneyOnChange } from '../../../hooks';\nimport { useHoneyPopupInteractions } from './use-honey-popup-interactions';\nimport type { Nullable } from '../../../types';\nimport type { UseHoneyPopupInteractionsOptions } from './use-honey-popup-interactions';\n\nexport interface UseHoneyPopupOptions<\n Reference extends ReferenceType,\n UseAutoSize extends boolean = boolean,\n> extends UseHoneyPopupInteractionsOptions {\n open?: boolean;\n /**\n * Options for configuring the floating UI behavior.\n */\n floatingOptions?: FastOmit<\n UseFloatingOptions<Reference>,\n 'nodeId' | 'open' | 'whileElementsMounted' | 'onOpenChange'\n >;\n /**\n * Whether to use the offset middleware.\n *\n * @default true\n */\n useOffset?: boolean;\n /**\n * Configuration for offset middleware.\n *\n * @see https://floating-ui.com/docs/offset\n */\n offsetOptions?: OffsetOptions;\n /**\n * Whether to use the flip middleware.\n *\n * @default true\n */\n useFlip?: boolean;\n /**\n * Configuration for flip middleware.\n *\n * @prop crossAxis - Default is `false`.\n * See details by https://floating-ui.com/docs/flip#combining-with-shift\n * @prop fallbackStrategy - Default is `bestFit`.\n */\n flipOptions?: FlipOptions;\n /**\n * Whether to use the shift middleware.\n *\n * @default true\n */\n useShift?: boolean;\n /**\n * Configuration for shift middleware.\n *\n * @see https://floating-ui.com/docs/shift\n */\n shiftOptions?: ShiftOptions;\n /**\n * Whether to show an arrow indicator.\n *\n * @default false\n */\n useArrow?: boolean;\n /**\n * Configuration for the floating arrow.\n */\n arrowOptions?: FastOmit<ArrowOptions, 'element'>;\n /**\n * @prop duration Default is 250.\n *\n * @see https://floating-ui.com/docs/usetransition#usetransitionstyles\n */\n transitionOptions?: UseTransitionStylesProps;\n /**\n * @default false\n */\n useAutoPlacement?: boolean;\n /**\n * @see https://floating-ui.com/docs/autoplacement\n */\n autoPlacementOptions?: AutoPlacementOptions | Derivable<AutoPlacementOptions>;\n /**\n * Whether to use automatic position updates.\n *\n * @default false\n */\n useAutoUpdate?: boolean;\n /**\n * Configuration for auto-update behavior.\n *\n * @see https://floating-ui.com/docs/autoupdate\n */\n autoUpdateOptions?: AutoUpdateOptions;\n /**\n * @default false\n */\n useAutoSize?: UseAutoSize;\n /**\n * Configuration for auto-size behavior.\n *\n * @remarks Only works when `useAutoSize` is `true`.\n *\n * @see https://floating-ui.com/docs/size\n */\n sizeOptions?: Omit<SizeOptions, 'apply'>;\n /**\n * Minimum acceptable width for the floating element when auto-sizing.\n *\n * - If a number is provided, it is used directly as the minimum width (in pixels).\n * - If a function is provided, it is called with the reference element's `Rect`\n * and should return the minimum width.\n * - If `null`, the reference element’s width is used as the minimum.\n *\n * The final applied value is clamped against `maxAcceptableWidth`.\n *\n * @default null\n *\n * @remarks Only applied when `useAutoSize` is `true`.\n */\n minAcceptableWidth?: Nullable<number | ((reference: Rect) => number)>;\n /**\n * Minimum acceptable height for the floating element when auto-sizing.\n *\n * - If a number is provided, it is used directly as the minimum height (in pixels).\n * - If a function is provided, it is called with the reference element's `Rect`\n * and should return the minimum height.\n * - If `null`, `0` is used as the minimum height.\n *\n * The final applied value is clamped against `maxAcceptableHeight`.\n *\n * @default null\n *\n * @remarks Only applied when `useAutoSize` is `true`.\n */\n minAcceptableHeight?: Nullable<number | ((reference: Rect) => number)>;\n /**\n * Maximum acceptable width for the floating element when auto-sizing.\n *\n * - If a number is provided, it represents the absolute maximum width (in pixels).\n * - If a function is provided, it is called with the reference element's `Rect`\n * and should return the maximum width.\n * - If `undefined`, the available width calculated by Floating UI is used.\n *\n * @default undefined\n *\n * @remarks Only applied when `useAutoSize` is `true`.\n */\n maxAcceptableWidth?: number | ((reference: Rect) => number);\n /**\n * Maximum acceptable height for the floating element when auto-sizing.\n *\n * - If a number is provided, it represents the absolute maximum height (in pixels).\n * - If a function is provided, it is called with the reference element's `Rect`\n * and should return the maximum height.\n * - If `undefined`, the available height calculated by Floating UI is used.\n *\n * @default undefined\n *\n * @remarks Only applied when `useAutoSize` is `true`.\n */\n maxAcceptableHeight?: number | ((reference: Rect) => number);\n /**\n * Callback invoked when the popup opens.\n */\n onOpen?: () => void;\n /**\n * Callback invoked when the popup closes.\n */\n onClose?: (reason?: OpenChangeReason, event?: Event) => void;\n}\n\ninterface UseHoneyPopupApi<Reference extends ReferenceType> {\n /**\n * Unique identifier for the floating element.\n */\n nodeId: string | undefined;\n /**\n * Whether the popup is currently open.\n */\n isOpen: boolean;\n /**\n * Floating UI instance with positioning and middleware.\n */\n floating: UseFloatingReturn<Reference>;\n /**\n * Ref for the floating arrow element.\n */\n arrowRef: RefObject<Nullable<SVGSVGElement>>;\n /**\n * Event handlers for the popup (click, hover, etc.).\n */\n interactions: UseInteractionsReturn;\n transition: ReturnType<typeof useTransitionStyles>;\n}\n\n/**\n * Hook for managing a floating popup with customizable behavior.\n *\n * @param options - Configuration options for the popup.\n *\n * @returns An object containing state and utilities for managing the popup.\n */\nexport const useHoneyPopup = <Reference extends ReferenceType>({\n enabled = true,\n event,\n dismissOptions,\n clickOptions,\n hoverOptions,\n focusOptions,\n clientPointsOptions,\n roleOptions,\n extraInteractions,\n open,\n floatingOptions,\n useOffset = true,\n offsetOptions,\n useFlip = true,\n flipOptions,\n useShift = true,\n shiftOptions,\n useArrow = false,\n arrowOptions,\n transitionOptions,\n useAutoPlacement = false,\n autoPlacementOptions,\n useAutoUpdate = false,\n autoUpdateOptions,\n useAutoSize = false,\n sizeOptions,\n minAcceptableWidth = null,\n minAcceptableHeight = null,\n maxAcceptableWidth,\n maxAcceptableHeight,\n onOpen,\n onClose,\n}: UseHoneyPopupOptions<Reference>): UseHoneyPopupApi<Reference> => {\n const { theme } = useHoneyLayout();\n\n const nodeId = useFloatingNodeId();\n\n const [isOpenLocal, setIsOpenLocal] = useState(false);\n\n const arrowRef = useRef<Nullable<SVGSVGElement>>(null);\n\n const isOpen = enabled && (open ?? isOpenLocal);\n\n useEffect(() => {\n if (isOpen) {\n onOpen?.();\n }\n }, [isOpen]);\n\n useHoneyOnChange(enabled, enabled => {\n if (!enabled) {\n setIsOpenLocal(false);\n }\n });\n\n const middlewares: Middleware[] = [];\n\n if (useOffset) {\n middlewares.push(offset(offsetOptions ?? theme.spacings.base));\n }\n\n let flipMiddleware: Nullable<Middleware> = null;\n\n if (useAutoPlacement) {\n middlewares.push(autoPlacement(autoPlacementOptions));\n } else if (useFlip) {\n // https://floating-ui.com/docs/flip\n flipMiddleware = flip({\n // https://floating-ui.com/docs/flip#combining-with-shift\n crossAxis: false,\n fallbackStrategy: 'bestFit',\n ...flipOptions,\n });\n }\n\n if (useAutoSize) {\n // https://floating-ui.com/docs/size\n const sizeMiddleware = size({\n ...sizeOptions,\n apply({ elements, rects, availableWidth, availableHeight }) {\n const minWidth = isFunction(minAcceptableWidth)\n ? minAcceptableWidth(rects.reference)\n : (minAcceptableWidth ?? rects.reference.width);\n\n const maxWidth = isFunction(maxAcceptableWidth)\n ? maxAcceptableWidth(rects.reference)\n : Math.min(availableWidth, maxAcceptableWidth ?? Infinity);\n\n const minHeight = isFunction(minAcceptableHeight)\n ? minAcceptableHeight(rects.reference)\n : (minAcceptableHeight ?? 0);\n\n const maxHeight = isFunction(maxAcceptableHeight)\n ? maxAcceptableHeight(rects.reference)\n : Math.min(availableHeight, maxAcceptableHeight ?? Infinity);\n\n Object.assign(elements.floating.style, {\n minWidth: `${Math.min(minWidth, maxWidth)}px`,\n maxWidth: `${maxWidth}px`,\n minHeight: `${Math.min(minHeight, maxHeight)}px`,\n maxHeight: `${maxHeight}px`,\n });\n },\n });\n\n if (flipMiddleware) {\n if (flipOptions?.fallbackStrategy === 'initialPlacement') {\n /**\n * If the initial placement to take precedence, place `size()` before `flip()`.\n *\n * @see https://floating-ui.com/docs/size#initialplacement\n */\n middlewares.push(sizeMiddleware, flipMiddleware);\n } else {\n /**\n * The `bestFit` fallback strategy in the `flip()` middleware is the default, which ensures\n * the best fitting placement is used.\n * In this scenario, place `size()` after `flip()`.\n *\n * @see https://floating-ui.com/docs/size#bestfit\n */\n middlewares.push(flipMiddleware, sizeMiddleware);\n }\n } else {\n middlewares.push(sizeMiddleware);\n }\n } else if (flipMiddleware) {\n middlewares.push(flipMiddleware);\n }\n\n if (useShift) {\n middlewares.push(\n // https://floating-ui.com/docs/shift\n shift({\n padding: theme.spacings.base,\n ...shiftOptions,\n }),\n );\n }\n\n if (useArrow) {\n /**\n * The `arrow()` should generally be placed toward the end of the middlewares,\n * after `shift()` or `autoPlacement()`.\n *\n * @see https://floating-ui.com/docs/arrow\n */\n middlewares.push(\n arrow({\n element: arrowRef,\n // https://floating-ui.com/docs/floatingarrow#arrow-does-not-avoid-rounded-corners\n padding: theme.spacings.base,\n ...arrowOptions,\n }),\n );\n }\n\n const floating = useFloating<Reference>({\n nodeId,\n open: isOpen,\n middleware: middlewares,\n onOpenChange: (open, event, reason) => {\n setIsOpenLocal(open);\n\n if (!open) {\n onClose?.(reason, event);\n }\n },\n // https://floating-ui.com/docs/usefloating#whileelementsmounted\n ...(useAutoUpdate && {\n whileElementsMounted: (reference, floating, update) =>\n autoUpdate(reference, floating, update, autoUpdateOptions),\n }),\n ...floatingOptions,\n });\n\n const interactions = useHoneyPopupInteractions(floating.context, {\n enabled,\n event,\n dismissOptions,\n clickOptions,\n hoverOptions,\n focusOptions,\n clientPointsOptions,\n roleOptions,\n extraInteractions,\n });\n\n const transition = useTransitionStyles(floating.context, {\n duration: 250,\n ...transitionOptions,\n });\n\n return {\n nodeId,\n isOpen,\n floating,\n arrowRef,\n interactions,\n transition,\n };\n};\n","export * from './HoneyPopup.types';\nexport * from './HoneyPopupContext';\nexport * from './HoneyPopup';\nexport * from './hooks';\n","import React from 'react';\nimport type { ReactNode, PropsWithChildren } from 'react';\n\n/**\n * This type is used to provide properties for handling different states of a component,\n * such as loading, error, and no content states, along with the content to display in each state.\n */\nexport interface HoneyStatusContentProps {\n /**\n * A flag indicating whether the component is in a loading state.\n *\n * @default false\n */\n loading?: boolean;\n /**\n * The content to display when the component is in a loading state.\n *\n * @default null\n */\n loadingContent?: ReactNode;\n /**\n * A flag indicating whether the loading content should appear on top of the content.\n *\n * @default false\n */\n loadingOverContent?: boolean;\n /**\n * A flag indicating whether the component has encountered an error.\n *\n * @default false\n */\n error?: boolean;\n /**\n * The content to display when the component has encountered an error.\n *\n * @default null\n */\n errorContent?: ReactNode;\n /**\n * A flag indicating whether the component has no content to display.\n *\n * @default false\n */\n empty?: boolean;\n /**\n * The content to display when the component has no content to display.\n *\n * @default null\n */\n emptyContent?: ReactNode;\n}\n\n/**\n * A component that conditionally renders blocks based on specified boolean flags.\n */\nexport const HoneyStatusContent = ({\n children,\n loading = false,\n loadingOverContent = false,\n error = false,\n empty = false,\n loadingContent = null,\n errorContent = null,\n emptyContent = null,\n}: PropsWithChildren<HoneyStatusContentProps>) => {\n if (error) {\n return errorContent;\n }\n\n if (!loadingOverContent && loading) {\n return loadingContent;\n }\n\n return (\n <>\n {loadingOverContent && loading && loadingContent}\n\n {empty ? emptyContent : children}\n </>\n );\n};\n","export * from './HoneyBox';\nexport * from './HoneyFlex';\nexport * from './HoneyGrid';\nexport * from './HoneyGridColumn';\nexport * from './HoneyList';\nexport * from './HoneyStatusContent';\nexport * from './HoneyLazyContent';\nexport * from './HoneyOverlay';\nexport * from './HoneyPopup';\nexport * from './HoneyContextMenu';\n","const ENV = process.env.NODE_ENV || 'development';\n\nexport const __DEV__ = ENV !== 'production';\n\nif (__DEV__ && typeof window !== 'undefined' && !process.env.JEST_WORKER_ID) {\n console.info(\n '[@react-hive/honey-layout]: You are running in development mode. ' +\n 'This build is not optimized for production and may include extra checks or logs.',\n );\n}\n","import { createContext } from 'react';\nimport type { HoneyTheme } from '@react-hive/honey-style';\n\nimport type {\n HoneyOverlayConfig,\n HoneyScreenState,\n HoneyOverlayId,\n HoneyActiveOverlay,\n} from '../types';\n\n/**\n * Function to unregister a previously registered overlay.\n */\nexport type HoneyUnregisterOverlay = (targetOverlayId: HoneyOverlayId) => void;\n\n/**\n * Function to register a new overlay and manage its lifecycle.\n *\n * @param overlayConfig - Configuration object for the overlay.\n */\nexport type HoneyRegisterOverlay = (overlayConfig: HoneyOverlayConfig) => HoneyActiveOverlay;\n\nexport interface HoneyLayoutContextValue {\n /**\n * Represents the theme object.\n */\n theme: HoneyTheme;\n /**\n * Represents the current state of the screen.\n */\n screenState: HoneyScreenState;\n /**\n * Active overlays.\n */\n overlays: HoneyActiveOverlay[];\n /**\n * Function to register a new overlay.\n */\n registerOverlay: HoneyRegisterOverlay;\n /**\n * Function to unregister an overlay.\n */\n unregisterOverlay: HoneyUnregisterOverlay;\n}\n\nexport const HoneyLayoutContext = createContext<HoneyLayoutContextValue | undefined>(undefined);\n","export * from './HoneyLayoutContext';\n","import { css } from '@react-hive/honey-style';\n\nimport type { HoneyCSSTimingFunction, HoneyEffect } from './types';\n\n/**\n * Configuration object for defining the transition effect on visibility and opacity.\n */\ninterface HoneyVisibilityTransitionEffectConfig {\n /**\n * Duration of the transition in milliseconds.\n * Determines how long the transition will take to complete.\n */\n durationMs: number;\n /**\n * Timing function for the transition. Defines the rate of change during the transition.\n * It can either be a single timing function or an array of multiple functions applied sequentially.\n *\n * @default ease-in-out\n */\n timingFunction?: HoneyCSSTimingFunction | HoneyCSSTimingFunction[];\n /**\n * Additional CSS properties to include in the transition.\n * These properties will be animated alongside `opacity` and `visibility`.\n */\n extraProperties?: string[];\n /**\n * Optional class name that can be applied to the active state.\n * When specified, the styles for the active state (e.g., `opacity: 1` and `visibility: visible`)\n * will also be applied when the element has this class.\n */\n activeClassName?: string;\n}\n\n/**\n * Context props used to control the transition effect.\n */\nexport interface HoneyVisibilityTransitionEffectContextProps {\n /**\n * Specifies whether the transition should be applied.\n * When true, the element becomes visible and transitions in; when false, it transitions out and becomes hidden.\n *\n * @default false\n */\n active?: boolean;\n}\n\n/**\n * An effect that applies smooth transitions to the `visibility`, `opacity`, and optional extra properties of an element.\n *\n * This effect allows you to animate the appearance or disappearance of an element, making it fade in or out.\n * The behavior is customizable via the configuration, including the duration of the transition, timing functions, and any additional\n * CSS properties you want to animate. It also supports applying an `activeClassName` to represent the active state through CSS.\n */\nexport const honeyVisibilityTransitionEffect: HoneyEffect<\n HoneyVisibilityTransitionEffectConfig,\n HoneyVisibilityTransitionEffectContextProps\n> =\n ({ durationMs, timingFunction = 'ease-in-out', extraProperties = [], activeClassName }) =>\n ({ active = false }) => css`\n opacity: ${active ? 1 : 0};\n visibility: ${active ? 'visible' : 'hidden'};\n\n transition-property: ${['opacity', 'visibility', ...extraProperties].join(', ')};\n transition-duration: ${durationMs}ms;\n transition-timing-function: ${Array.isArray(timingFunction)\n ? timingFunction.join(', ')\n : timingFunction};\n\n ${activeClassName &&\n css`\n &.${activeClassName} {\n opacity: 1;\n visibility: visible;\n }\n `}\n `;\n","import * as CSS from 'csstype';\nimport { CSS_COLOR_PROPERTIES, CSS_SPACING_PROPERTIES } from '@react-hive/honey-style';\nimport { assert, camelToDashCase } from '@react-hive/honey-utils';\nimport {\n css,\n checkIsThemeColorValue,\n resolveColor,\n mediaQuery,\n resolveSpacing,\n} from '@react-hive/honey-style';\nimport type { HTMLAttributes } from 'react';\nimport type {\n FastOmit,\n HoneyTheme,\n HoneyStyledFunction,\n HoneyBreakpointName,\n HoneyBreakpoints,\n HoneyMediaQueryRule,\n HoneyCSSSpacingProperty,\n HoneyCSSColorProperty,\n} from '@react-hive/honey-style';\n\nimport type {\n HoneyScreenState,\n HoneyCSSPropertyValue,\n Honey$PrefixedCSSProperty,\n Honey$PrefixedCSSProperties,\n} from '../types';\n\nexport const generateUniqueId = () => {\n const timestamp = Date.now().toString();\n const randomNum = Math.floor(Math.random() * 10000)\n .toString()\n .padStart(4, '0');\n\n return `${timestamp}${randomNum}`;\n};\n\n/**\n * Type guard function that checks whether a given CSS property name\n * is classified as a spacing-related property.\n *\n * Spacing properties include margin, padding, positional offsets,\n * and layout gaps (e.g., `gap`, `top`, `marginLeft`, etc.).\n *\n * @param propertyName - The name of the CSS property to check.\n *\n * @returns `true` if the property is a spacing property, otherwise `false`.\n */\nconst checkIsSpacingCSSProperty = (\n propertyName: keyof CSS.Properties,\n): propertyName is HoneyCSSSpacingProperty =>\n (CSS_SPACING_PROPERTIES as string[]).includes(propertyName as string);\n\n/**\n * Type guard function to check if a property name is a color property.\n *\n * @param propertyName - The name of the CSS property.\n *\n * @returns True if the property name is a color property, false otherwise.\n */\nconst checkIsColorCSSProperty = (\n propertyName: keyof CSS.Properties,\n): propertyName is HoneyCSSColorProperty =>\n (CSS_COLOR_PROPERTIES as string[]).includes(propertyName as string);\n\n/**\n * Determines if a given HTML property is a CSS property that is prefixed with a '$'.\n * This convention is typically used for applying dynamic or responsive styles.\n *\n * @param propertyName - The HTML property or key to check.\n *\n * @returns Returns true if the property is a valid prefixed CSS property, otherwise false.\n */\nconst checkIs$PrefixedCSSProperty = (\n propertyName: string,\n): propertyName is Honey$PrefixedCSSProperty => propertyName[0] === '$';\n\n/**\n * Retrieves the CSS property value for a specific breakpoint, potentially resolving it to include units.\n *\n * This function handles different types of property values:\n * - If `propertyValue` is an object (indicating a responsive value), it extracts the value corresponding to the specified `breakpoint`.\n * - If the property is related to dimensions or spacing (e.g., `width`, `margin`),\n * it uses the `resolveSpacing` function to calculate and format the value with the appropriate unit (e.g., 'px').\n *\n * @remarks\n * The `resolveSpacing` function returns a function that requires the `theme` object to perform the resolution,\n * which needs to be provided in the context where `getCSSPropertyValue` is used.\n *\n * @param propertyName - The name of the CSS property to retrieve. Must be a key of `CSS.Properties`.\n * @param propertyValue - The value associated with the CSS property, which can be a direct value, a responsive object, or a function.\n * @param breakpoint - The name of the breakpoint used to extract the value from a responsive object, if applicable.\n *\n * @returns The resolved CSS property value. This could be:\n * - A direct value (if `propertyValue` was not an object or the property is not related to dimensions).\n * - A value formatted with units (if the property is related to dimensions or spacing and `resolveSpacing` was applied).\n */\nconst getCSSPropertyValue = <CSSProperty extends keyof CSS.Properties>(\n propertyName: CSSProperty,\n propertyValue: HoneyCSSPropertyValue<CSSProperty>,\n breakpoint: HoneyBreakpointName,\n) => {\n // Determine the actual value to use based on the breakpoint\n const resolvedValue =\n typeof propertyValue === 'object' && !Array.isArray(propertyValue)\n ? propertyValue[breakpoint]\n : propertyValue;\n\n if (resolvedValue === undefined) {\n return undefined;\n }\n\n if (checkIsSpacingCSSProperty(propertyName)) {\n if (typeof resolvedValue === 'number' || Array.isArray(resolvedValue)) {\n return resolveSpacing(resolvedValue, 'px');\n }\n } else if (checkIsColorCSSProperty(propertyName)) {\n if (typeof resolvedValue === 'string' && checkIsThemeColorValue(resolvedValue)) {\n return resolveColor(resolvedValue);\n }\n }\n\n return resolvedValue;\n};\n\nexport type HoneyStyledBoxProps = HTMLAttributes<HTMLElement> & Honey$PrefixedCSSProperties;\n\n/**\n * Filters and matches CSS properties from the provided props object based on the specified breakpoint.\n *\n * @template Props - The type representing the HTML attributes and Honey-prefixed CSS properties.\n *\n * @param props - The object containing CSS properties and other HTML attributes.\n * @param breakpoint - The name of the breakpoint for filtering CSS properties.\n *\n * @returns An array of tuples where each tuple contains a Honey-prefixed CSS property and its value.\n */\nconst matchCSSProperties = <Props extends HoneyStyledBoxProps>(\n props: Props,\n breakpoint: HoneyBreakpointName,\n) =>\n Object.entries(props).filter(\n ([propertyName, propertyValue]) =>\n (checkIs$PrefixedCSSProperty(propertyName) && breakpoint === 'xs') ||\n (propertyValue && typeof propertyValue === 'object' && breakpoint in propertyValue),\n ) as [Honey$PrefixedCSSProperty, CSS.Properties[keyof CSS.Properties]][];\n\n/**\n * Generates CSS styles based on the provided breakpoint and properties.\n * Filters the properties to include only those that match the specified breakpoint.\n * Converts the property names from camelCase to dash-case and retrieves their values.\n *\n * @template Props - The type representing HTML attributes and Honey-prefixed CSS properties.\n *\n * @param breakpoint - The name of the breakpoint to filter properties by.\n *\n * @returns A function that takes an execution context and properties, and returns a CSS block\n * with styles generated for the specified breakpoint.\n */\nexport const createStyles =\n (breakpoint: HoneyBreakpointName): HoneyStyledFunction<HoneyStyledBoxProps> =>\n ({ theme, ...props }) => css`\n ${matchCSSProperties(props, breakpoint).map(([prefixedPropertyName, propertyValue]) => {\n const propertyName = prefixedPropertyName.slice(1) as keyof CSS.Properties;\n\n return css`\n ${camelToDashCase(propertyName)}: ${getCSSPropertyValue(\n propertyName,\n propertyValue,\n breakpoint,\n )};\n `;\n })}\n `;\n\n/**\n * Determines if any of the given properties include styles that require a media query\n * for the specified breakpoint. This function checks if there are any properties in `props`\n * that are prefixed with `$` and have responsive values that include the given breakpoint.\n *\n * @param breakpoint - The name of the breakpoint to check within responsive values.\n * @param props - The object that may contain responsive styles.\n *\n * @returns Returns true if at least one property in `props` has styles for the specified breakpoint; otherwise, false.\n */\nconst hasBreakpointStyles = (\n breakpoint: HoneyBreakpointName,\n props: HoneyStyledBoxProps,\n): boolean =>\n Object.entries(props).some(\n ([propertyName, propertyValue]) =>\n checkIs$PrefixedCSSProperty(propertyName) &&\n typeof propertyValue === 'object' &&\n breakpoint in propertyValue,\n );\n\n/**\n * Utility function that returns functions for generating media queries for the specified breakpoint.\n * The down function creates a media query for screen sizes smaller than the breakpoint,\n * while the up function creates a media query for screen sizes larger than the breakpoint.\n *\n * @param breakpoint - The name of the breakpoint.\n * @param [ruleOptions={}] - Additional options for the media rule.\n *\n * @returns Styled functions for generating media queries.\n */\nexport const bpMedia = (\n breakpoint: HoneyBreakpointName,\n ruleOptions: FastOmit<HoneyMediaQueryRule, 'width' | 'minWidth' | 'maxWidth'> = {},\n) => {\n const resolveBpValue = (theme: HoneyTheme) => {\n const value = theme.breakpoints[breakpoint];\n assert(value, `[honey-layout]: Setup for breakpoint \"${breakpoint}\" was not found.`);\n\n return value;\n };\n\n const down: HoneyStyledFunction<object> = ({ theme }) =>\n mediaQuery([\n {\n maxWidth: `${resolveBpValue(theme)}px`,\n ...ruleOptions,\n },\n ]);\n\n const up: HoneyStyledFunction<object> = ({ theme }) =>\n mediaQuery([\n {\n minWidth: `${resolveBpValue(theme)}px`,\n ...ruleOptions,\n },\n ]);\n\n return {\n down,\n up,\n };\n};\n\n/**\n * Applies CSS styles wrapped in a media query for the specified breakpoint based on the provided properties.\n * If no styles are found for the specified breakpoint or if the breakpoint configuration is missing,\n * it returns `null`. Otherwise, it generates media query styles using the `createStyles` function.\n *\n * @template Props - The type representing HTML attributes and Honey-prefixed CSS properties.\n *\n * @param breakpoint - The name of the breakpoint to apply media query styles for.\n *\n * @returns A function that takes context and properties and returns a CSS block wrapped in a media query\n * if styles exist for the specified breakpoint; otherwise, returns `null`.\n */\nexport const applyBreakpointStyles =\n (breakpoint: HoneyBreakpointName): HoneyStyledFunction<HoneyStyledBoxProps> =>\n ({ theme, ...props }) => {\n const breakpointConfig = theme.breakpoints[breakpoint];\n\n if (!breakpointConfig || !hasBreakpointStyles(breakpoint, props)) {\n return null;\n }\n\n return css`\n ${bpMedia(breakpoint).up} {\n ${createStyles(breakpoint)};\n }\n `;\n };\n\n/**\n * Resolves the current screen state based on the window's dimensions and the breakpoints provided in the theme.\n *\n * This function evaluates the current orientation (portrait or landscape) by checking the screen's orientation type.\n * It then compares the window's width against the theme-defined breakpoints to determine the active breakpoint\n * (e.g., xs, sm, md, lg, xl). If no breakpoints are provided, it returns a default state with all breakpoints set to false.\n *\n * @param breakpoints - A partial mapping of breakpoints defined in the theme. These breakpoints represent the minimum\n * width required for each screen size category (e.g., xs, sm, md, lg, xl).\n *\n * @returns An object representing the screen state, including:\n * - `isPortrait`: Whether the screen is in portrait mode.\n * - `isLandscape`: Whether the screen is in landscape mode.\n * - `isXs`: Whether the screen width is less than the 'xs' breakpoint.\n * - `isSm`: Whether the screen width is less than the 'sm' breakpoint.\n * - `isMd`: Whether the screen width is less than the 'md' breakpoint.\n * - `isLg`: Whether the screen width is less than the 'lg' breakpoint.\n * - `isXl`: Whether the screen width is less than the 'xl' breakpoint.\n */\nexport const resolveScreenState = (\n breakpoints: Partial<HoneyBreakpoints> | undefined,\n): HoneyScreenState => {\n const orientationType = window.screen.orientation.type;\n\n const isPortrait =\n orientationType === 'portrait-primary' || orientationType === 'portrait-secondary';\n\n const isLandscape = !isPortrait;\n\n if (!breakpoints) {\n return {\n isPortrait,\n isLandscape,\n isXs: false,\n isSm: false,\n isMd: false,\n isLg: false,\n isXl: false,\n };\n }\n\n const sortedBreakpoints = Object.entries(breakpoints)\n .sort(([, a], [, b]) => a - b) // Sort breakpoints in ascending order of width\n .map(([name]) => name) as (keyof Partial<HoneyBreakpoints>)[];\n\n const currentBreakpoint =\n sortedBreakpoints.find(breakpoint => {\n const screenSize = breakpoints[breakpoint];\n\n return screenSize ? window.innerWidth < screenSize : false;\n }) ?? sortedBreakpoints.pop(); // Use the largest breakpoint if no match is found\n\n return {\n isPortrait,\n isLandscape,\n isXs: currentBreakpoint === 'xs',\n isSm: currentBreakpoint === 'sm',\n isMd: currentBreakpoint === 'md',\n isLg: currentBreakpoint === 'lg',\n isXl: currentBreakpoint === 'xl',\n };\n};\n","export * from './react.helpers';\nexport * from './helpers';\n","import type { RefObject, Ref, RefCallback } from 'react';\nimport { isFunction, isObject } from '@react-hive/honey-utils';\n\nimport type { Nullable } from '../types';\n\n/**\n * Merges multiple refs into a single ref callback.\n * This ensures that all provided refs receive the same reference.\n *\n * @param refs - A list of refs that need to be merged.\n *\n * @returns A single ref callback that assigns the element to all provided refs.\n */\nexport const mergeRefs =\n <T>(...refs: (Ref<T> | undefined)[]): RefCallback<T> =>\n value => {\n refs.forEach(ref => {\n if (isFunction(ref)) {\n ref(value);\n } else if (isObject(ref)) {\n (ref as RefObject<Nullable<T>>).current = value;\n }\n });\n };\n","export * from './use-honey-on-change';\nexport * from './use-honey-media-query';\nexport * from './use-honey-drag';\nexport * from './use-honey-document-key-up-handler';\nexport * from './use-honey-layout';\nexport * from './use-register-honey-overlay';\nexport * from './use-honey-overlay';\nexport * from './use-honey-resize';\nexport * from './use-honey-synthetic-scroll';\nexport * from './use-honey-synthetic-scroll-x';\nexport * from './use-honey-synthetic-scroll-y';\n","import { useEffect } from 'react';\n\nimport type { HoneyKeyboardEventCode } from '../types';\n\nexport type HoneyDocumentKeyUpHandler = (keyCode: HoneyKeyboardEventCode, e: KeyboardEvent) => void;\n\ninterface UseHoneyDocumentKeyUpHandlerOptions {\n /**\n * Whether the event listener should be active.\n *\n * @default true\n */\n enabled?: boolean;\n /**\n * Whether to call `preventDefault()` on matching keyup events.\n *\n * This is useful for suppressing default browser behavior (e.g., scrolling with Space key).\n *\n * @default true\n */\n preventDefault?: boolean;\n}\n\n/**\n * Hook for handling specific key up events on the `document` object.\n *\n * This hook adds a `keyup` event listener at the document level and triggers the provided `keyUpHandler`\n * when one of the specified `listenKeys` is released.\n *\n * @param keyUpHandler - The callback function invoked when a matching key is released.\n * @param listenKeys - An array of key codes (`KeyboardEvent.code`) to listen for.\n * @param options - Optional configuration to control event behavior and listener activation.\n *\n * @example\n * ```tsx\n * useHoneyDocumentKeyUpHandler(\n * (keyCode, event) => {\n * console.log('Key released:', keyCode);\n * },\n * ['Escape'],\n * );\n * ```\n */\nexport const useHoneyDocumentKeyUpHandler = (\n keyUpHandler: HoneyDocumentKeyUpHandler,\n listenKeys: HoneyKeyboardEventCode[],\n { enabled = true, preventDefault = true }: UseHoneyDocumentKeyUpHandlerOptions = {},\n) => {\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const handleKeyUp = (e: KeyboardEvent) => {\n const keyCode = e.code as HoneyKeyboardEventCode;\n\n if (listenKeys.includes(keyCode)) {\n if (preventDefault) {\n e.preventDefault();\n }\n\n keyUpHandler(keyCode, e);\n }\n };\n\n document.addEventListener('keyup', handleKeyUp);\n\n return () => {\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, [keyUpHandler, enabled, preventDefault]);\n};\n","import { useEffect } from 'react';\nimport { calculateEuclideanDistance, calculateMovingSpeed } from '@react-hive/honey-utils';\nimport type { RefObject } from 'react';\n\nimport type { Nullable } from '../types';\n\n/**\n * Handler triggered when a drag operation starts.\n *\n * @template Element - The type of the draggable element (must extend HTMLElement).\n *\n * @param draggableElement - The element being dragged.\n * @param e - The event that initiated the drag. Can be either a `MouseEvent` or a `TouchEvent`.\n *\n * @returns A Promise that resolves to a boolean:\n * - `false` to cancel the drag.\n * - `true` to proceed with the drag.\n */\nexport type HoneyDragOnStartHandler<Element extends HTMLElement> = (\n draggableElement: Element,\n e: MouseEvent | TouchEvent,\n) => Promise<boolean>;\n\n/**\n * Context provided to the move handler, containing information about the drag's movement.\n */\nexport interface HoneyDragMoveContext {\n /**\n * The horizontal distance has moved since the last frame.\n */\n deltaX: number;\n /**\n * The vertical distance has moved since the last frame.\n */\n deltaY: number;\n /**\n * The total horizontal distance from the starting position to the current position.\n */\n distanceX: number;\n /**\n * The total vertical distance from the starting position to the current position.\n */\n distanceY: number;\n /**\n * The straight-line distance from the starting position to the current position.\n */\n euclideanDistance: number;\n}\n\n/**\n * Handler triggered during a drag operation.\n *\n * @template Element - The type of the draggable element (must extend HTMLElement).\n *\n * Behavior:\n * - The handler receives the draggable element and returns a function that is called on every move event.\n * - If the returned function resolves to `false`, the drag operation stops immediately.\n *\n * This allows for real-time handling of drag events and asynchronous conditions during dragging.\n *\n * @param draggableElement - The element being dragged.\n *\n * @returns A function that handles move events and returns a Promise that resolves to `true`\n * to continue dragging, or `false` to stop it.\n */\nexport type HoneyDragOnMoveHandler<Element extends HTMLElement> = (\n draggableElement: Element,\n) => (context: HoneyDragMoveContext) => Promise<boolean>;\n\n/**\n * Context provided to the end handler, containing information about the drag's end state.\n */\ninterface HoneyDragEndContext {\n /**\n * The total horizontal movement from the starting position to the ending position.\n */\n deltaX: number;\n /**\n * The total vertical movement from the starting position to the ending position.\n */\n deltaY: number;\n /**\n * The speed of movement in the horizontal direction (X axis).\n */\n movingSpeedX: number;\n /**\n * The speed of movement in the vertical direction (Y axis).\n */\n movingSpeedY: number;\n}\n\n/**\n * Handler triggered when a drag operation ends.\n *\n * @template Element - The type of the draggable element (must extend HTMLElement).\n *\n * @param context - The context containing details about the drag operation at its end.\n * Provides information such as the final position and drag result.\n * @param draggableElement - The element that was being dragged.\n * @param e - The event that ended the drag. Can be either a `MouseEvent` or a `TouchEvent`.\n *\n * @returns A Promise that resolves when the end handler completes its operations.\n */\nexport type HoneyDragOnEndHandler<Element extends HTMLElement> = (\n context: HoneyDragEndContext,\n draggableElement: Element,\n e: MouseEvent | TouchEvent,\n) => Promise<void>;\n\n/**\n * A set of handlers that define the behavior of the drag operation at different stages.\n * These handlers are customizable for managing drag initialization, movement, and completion.\n */\nexport interface HoneyDragHandlers<Element extends HTMLElement> {\n /**\n * Optional handler triggered when the drag operation starts.\n * This is useful for capturing the initial state or performing any setup actions before the drag starts.\n *\n * @param element - The element being dragged.\n *\n * @returns A boolean or Promise resolving to a boolean indicating if the drag should proceed.\n */\n onStartDrag?: HoneyDragOnStartHandler<Element>;\n /**\n * Required handler triggered continuously during the drag operation.\n * This handler is responsible for updating the drag state and typically tracks the element's movement.\n *\n * @param element - The element being dragged.\n *\n * @returns A boolean or Promise resolving to a boolean indicating whether the drag should continue.\n */\n onMoveDrag: HoneyDragOnMoveHandler<Element>;\n /**\n * Optional handler triggered when the drag operation ends.\n * This is commonly used for cleanup or finalizing the drag process.\n *\n * @param context - Contains information about the drag operation, such as distance and speed.\n * @param element - The element being dragged.\n *\n * @returns A Promise.\n */\n onEndDrag?: HoneyDragOnEndHandler<Element>;\n}\n\n/**\n * Configuration options for the drag functionality.\n * These options control the behavior of the drag hook and modify how the drag events are handled.\n */\nexport interface HoneyDragOptions<Element extends HTMLElement> extends HoneyDragHandlers<Element> {\n /**\n * Controls whether the `onEndDrag` handler is skipped when the drag operation is forcibly stopped.\n * This can be useful when dragging is interrupted or terminated early due to movement restrictions.\n *\n * @default false\n */\n skipOnEndDragWhenStopped?: boolean;\n /**\n * Determines if the drag functionality is enabled or disabled.\n *\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * A hook that provides touch and mouse-based dragging functionality for an element.\n * It enables the ability to drag an element on both mouse and touch interfaces,\n * with customizable handlers for different stages of the drag.\n *\n * @template Element - The type of the HTML element that is being dragged.\n *\n * @param draggableElementRef - A reference to the element that can be dragged.\n * @param options - Handlers for different stages of the drag operation and configuration options\n * for controlling drag behavior.\n *\n * @returns A cleanup function to remove event listeners when the component is unmounted.\n */\nexport const useHoneyDrag = <Element extends HTMLElement>(\n draggableElementRef: RefObject<Nullable<Element>>,\n {\n skipOnEndDragWhenStopped = false,\n enabled = true,\n onMoveDrag,\n onStartDrag,\n onEndDrag,\n }: HoneyDragOptions<Element>,\n) => {\n useEffect(() => {\n const draggableElement = draggableElementRef.current;\n\n if (!enabled || !draggableElement) {\n return;\n }\n\n const onMove = onMoveDrag(draggableElement);\n\n let isDragging = false;\n\n let startX = 0;\n let startY = 0;\n let lastX = 0;\n let lastY = 0;\n\n // Store the start time of the drag to calculate speed later.\n let startTime = 0;\n\n const startDrag = async (clientX: number, clientY: number, e: MouseEvent | TouchEvent) => {\n if (onStartDrag && !(await onStartDrag(draggableElement, e))) {\n // Exit when `onStartDrag` returns false, preventing the dragging\n return;\n }\n\n isDragging = true;\n\n startX = clientX;\n startY = clientY;\n lastX = clientX;\n lastY = clientY;\n\n startTime = Date.now();\n };\n\n const stopDrag = async (isTriggerOnEndDrag: boolean, e: MouseEvent | TouchEvent) => {\n if (!isDragging) {\n return;\n }\n\n isDragging = false;\n\n if (isTriggerOnEndDrag && onEndDrag) {\n // Calculate the elapsed time for speed calculations.\n const elapsedTime = Date.now() - startTime;\n\n const deltaX = lastX - startX;\n const deltaY = lastY - startY;\n\n const endContext: HoneyDragEndContext = {\n deltaX,\n deltaY,\n get movingSpeedX() {\n return calculateMovingSpeed(deltaX, elapsedTime);\n },\n get movingSpeedY() {\n return calculateMovingSpeed(deltaY, elapsedTime);\n },\n };\n\n await onEndDrag(endContext, draggableElement, e);\n }\n };\n\n const releaseDrag = async (isTriggerOnEndDrag: boolean, e: MouseEvent | TouchEvent) => {\n await stopDrag(isTriggerOnEndDrag, e);\n\n window.removeEventListener('mousemove', mouseMoveHandler);\n window.removeEventListener('mouseup', mouseUpHandler);\n\n window.removeEventListener('touchmove', touchMoveHandler);\n window.removeEventListener('touchend', touchEndHandler);\n window.removeEventListener('touchcancel', touchCancelHandler);\n };\n\n const mouseUpHandler = async (e: MouseEvent) => {\n await releaseDrag(true, e);\n };\n\n const moveHandler = async (clientX: number, clientY: number, e: MouseEvent | TouchEvent) => {\n if (!isDragging) {\n return;\n }\n\n const moveContext: HoneyDragMoveContext = {\n deltaX: clientX - lastX,\n deltaY: clientY - lastY,\n distanceX: clientX - startX,\n distanceY: clientY - startY,\n euclideanDistance: calculateEuclideanDistance(startX, startY, clientX, clientY),\n };\n\n if (!(await onMove(moveContext))) {\n lastX = clientX;\n lastY = clientY;\n\n await releaseDrag(!skipOnEndDragWhenStopped, e);\n return;\n }\n\n lastX = clientX;\n lastY = clientY;\n };\n\n const mouseMoveHandler = async (e: MouseEvent) => {\n await moveHandler(e.clientX, e.clientY, e);\n };\n\n const touchMoveHandler = async (e: TouchEvent) => {\n const touch = e.touches[0];\n\n await moveHandler(touch.clientX, touch.clientY, e);\n };\n\n const touchEndHandler = async (e: TouchEvent) => {\n await releaseDrag(true, e);\n };\n\n const touchCancelHandler = async (e: TouchEvent) => {\n await releaseDrag(true, e);\n };\n\n const touchStartHandler = async (e: TouchEvent) => {\n e.stopPropagation();\n\n const touch = e.touches[0];\n\n await startDrag(touch.clientX, touch.clientY, e);\n\n window.addEventListener('touchmove', touchMoveHandler, {\n passive: true,\n });\n window.addEventListener('touchend', touchEndHandler);\n window.addEventListener('touchcancel', touchCancelHandler);\n };\n\n const mouseDownHandler = async (e: MouseEvent) => {\n e.stopPropagation();\n\n await startDrag(e.clientX, e.clientY, e);\n\n window.addEventListener('mousemove', mouseMoveHandler);\n window.addEventListener('mouseup', mouseUpHandler);\n };\n\n draggableElement.addEventListener('mousedown', mouseDownHandler);\n draggableElement.addEventListener('touchstart', touchStartHandler, {\n passive: true,\n });\n\n return () => {\n draggableElement.removeEventListener('mousedown', mouseDownHandler);\n draggableElement.removeEventListener('touchstart', touchStartHandler);\n };\n }, [enabled, onStartDrag, onMoveDrag, onEndDrag]);\n};\n","import { useContext } from 'react';\nimport { assert } from '@react-hive/honey-utils';\n\nimport { HoneyLayoutContext } from '../contexts';\n\n/**\n * Custom hook to access the Honey layout context.\n *\n * @throws Will throw an error if the hook is used outside of a `HoneyLayoutProvider` component.\n *\n * @returns The context value providing theming utilities and screen state.\n */\nexport const useHoneyLayout = () => {\n const context = useContext(HoneyLayoutContext);\n assert(\n context,\n 'The `useHoneyLayout()` hook must be used inside <HoneyLayoutProvider/> component!',\n );\n\n return context;\n};\n","import { useEffect, useState } from 'react';\nimport throttle from 'lodash.throttle';\nimport type { HoneyTheme } from '@react-hive/honey-style';\n\nimport { resolveScreenState } from '../helpers';\nimport type { HoneyScreenState } from '../types';\n\nexport interface UseHoneyMediaQueryOptions {\n /**\n * Throttle interval (in milliseconds) for the resize event handler.\n * This limits how often the handler runs during continuous resize events.\n *\n * @default 0\n */\n resizeThrottle?: number;\n /**\n * Manually override screen state properties like isXs, isPortrait, etc.\n *\n * @remarks\n * These values are only set once on initialization and will not dynamically update the state.\n */\n overrideScreenState?: Partial<HoneyScreenState>;\n}\n\n/**\n * The hook that tracks the current screen state based on the theme's media breakpoints.\n * It updates the state on window resize and orientation change.\n *\n * @param theme - Theme object.\n * @param options - Optional configuration object.\n *\n * @returns The current screen state, indicating the orientation (portrait or landscape)\n * and the active breakpoint (xs, sm, md, lg, xl).\n */\nexport const useHoneyMediaQuery = (\n theme: HoneyTheme,\n { resizeThrottle = 0, overrideScreenState }: UseHoneyMediaQueryOptions = {},\n) => {\n const [screenState, setScreenState] = useState<HoneyScreenState>(() => ({\n ...resolveScreenState(theme.breakpoints),\n ...overrideScreenState,\n }));\n\n useEffect(() => {\n const handleResize = throttle(() => {\n setScreenState({\n ...resolveScreenState(theme.breakpoints),\n ...overrideScreenState,\n });\n }, resizeThrottle);\n\n handleResize();\n\n window.addEventListener('resize', handleResize);\n\n window.screen.orientation.addEventListener('change', handleResize);\n\n return () => {\n handleResize.cancel();\n\n window.removeEventListener('resize', handleResize);\n\n window.screen.orientation.removeEventListener('change', handleResize);\n };\n }, []);\n\n return screenState;\n};\n","import { useEffect, useRef } from 'react';\nimport type { EffectCallback } from 'react';\n\n/**\n * A hook that invokes a callback function whenever the provided `state` value changes.\n *\n * This hook stores the previous value internally and performs a shallow comparison with the current value.\n * If a change is detected, it executes the `onChange` callback. If the callback returns a cleanup function,\n * it will be invoked before the next change or when the component unmounts, similar to standard `useEffect` behavior.\n *\n * @template T - The type of the state being observed.\n *\n * @param state - The value to monitor for changes. Can be of any type.\n * @param onChange - A function called whenever `state` changes. It may return a cleanup function.\n *\n * @returns void\n *\n * @example\n * ```ts\n * useHoneyOnChange(someValue, (newValue) => {\n * console.log('Value changed to:', newValue);\n *\n * return () => {\n * console.log('Cleanup for value:', newValue);\n * };\n * });\n * ```\n */\nexport const useHoneyOnChange = <T>(\n state: T,\n onChange: (newState: T) => ReturnType<EffectCallback>,\n) => {\n const prevStateRef = useRef(state);\n\n useEffect(() => {\n if (prevStateRef.current !== state) {\n prevStateRef.current = state;\n\n return onChange(state);\n }\n }, [state]);\n};\n","import { useEffect } from 'react';\n\nimport { useHoneyLayout } from './use-honey-layout';\nimport type { HoneyOverlayId, HoneyOverlayEventListenerHandler } from '../types';\n\ninterface UseHoneyOverlayOptions {\n onKeyUp?: HoneyOverlayEventListenerHandler;\n}\n\n/**\n * Hook for interacting with an active overlay managed by `HoneyLayoutProvider`.\n *\n * @param targetOverlayId - The unique ID of the overlay you want to interact with.\n * @param options - Optional configuration such as event handlers (e.g., `onKeyUp`).\n *\n * @returns The overlay instance matching the provided ID, or `undefined` if not found.\n *\n * @remarks\n * - This hook only works with overlays that are currently active.\n * - If the overlay is not active or not registered, `undefined` will be returned.\n * - Event handlers like `onKeyUp` are automatically registered and cleaned up for the overlay.\n *\n * @example\n * ```tsx\n * const overlay = useHoneyOverlay('my-overlay-id', {\n * onKeyUp: (keyCode, e) => {\n * if (keyCode === 'Escape') {\n * console.log('Escape key pressed!');\n * }\n * },\n * });\n * ```\n */\nexport const useHoneyOverlay = (\n targetOverlayId: HoneyOverlayId,\n { onKeyUp }: UseHoneyOverlayOptions = {},\n) => {\n const { overlays } = useHoneyLayout();\n\n const overlay = overlays.find(overlay => overlay.id === targetOverlayId);\n\n useEffect(() => {\n // If no overlay is found or no `onKeyUp` handler is provided, skip setting up the listener\n if (!overlay || !onKeyUp) {\n return;\n }\n\n overlay.addListener('keyup', onKeyUp);\n\n return () => {\n overlay.removeListener('keyup', onKeyUp);\n };\n }, [overlay, onKeyUp]);\n\n return overlay;\n};\n","import { useEffect } from 'react';\nimport { isFunction } from '@react-hive/honey-utils';\nimport throttle from 'lodash.throttle';\n\nexport type UseHoneyResizeHandler = () => void;\n\ninterface UseHoneyResizeOptions {\n /**\n * Whether to invoke the resize handler immediately on mount.\n *\n * Useful when initial layout measurements should be performed\n * before any resize events occur.\n *\n * @default false\n */\n invokeOnMount?: boolean;\n /**\n * Throttle delay (in milliseconds) applied to the resize handler.\n *\n * When greater than `0`, the handler will be throttled using\n * `lodash.throttle` to reduce invocation frequency.\n *\n * @default 0\n */\n throttleTime?: number;\n /**\n * Enables or disables the resize listener.\n *\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * A hook that subscribes to the window `resize` event and invokes a handler function in response.\n *\n * The handler can be optionally throttled to limit execution frequency, which is useful\n * for expensive layout calculations or DOM measurements.\n *\n * @example\n * ```ts\n * useHoneyResize(() => {\n * console.log('Window resized');\n * }, { throttleTime: 200 });\n * ```\n *\n * @param handler - Callback invoked when the window is resized.\n * @param options - Configuration options controlling invocation timing and performance.\n */\n\nexport const useHoneyResize = (\n handler: UseHoneyResizeHandler,\n { invokeOnMount = false, throttleTime = 0, enabled = true }: UseHoneyResizeOptions = {},\n) => {\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const handleResize: UseHoneyResizeHandler | ReturnType<typeof throttle> = throttleTime\n ? throttle(handler, throttleTime)\n : handler;\n\n window.addEventListener('resize', handleResize);\n\n if (invokeOnMount) {\n handler();\n }\n\n return () => {\n if ('cancel' in handleResize && isFunction(handleResize.cancel)) {\n handleResize.cancel();\n }\n\n window.removeEventListener('resize', handleResize);\n };\n }, [enabled, invokeOnMount, handler]);\n};\n","import type { UseHoneySyntheticScrollOptions } from './use-honey-synthetic-scroll';\nimport { useHoneySyntheticScroll } from './use-honey-synthetic-scroll';\n\n/**\n * Enables synthetic horizontal (X-axis) scrolling for a container element\n * using pointer-based drag interactions.\n *\n * This is a convenience wrapper around {@link useHoneySyntheticScroll} with\n * the axis fixed to `'x'`.\n *\n * All behavior, boundaries, and lifecycle guarantees are identical to the\n * base hook, but limited to horizontal movement only.\n *\n * @template Element - The HTML element type of the scrollable container.\n *\n * @param options - Configuration options forwarded to\n * {@link useHoneySyntheticScroll}, excluding the `axis` option.\n *\n * @returns A ref that must be attached to the scrollable container element.\n */\nexport const useHoneySyntheticScrollX = <Element extends HTMLElement>(\n options?: Omit<UseHoneySyntheticScrollOptions<Element>, 'axis'>,\n) =>\n useHoneySyntheticScroll<Element>({\n ...options,\n axis: 'x',\n });\n","import type { UseHoneySyntheticScrollOptions } from './use-honey-synthetic-scroll';\nimport { useHoneySyntheticScroll } from './use-honey-synthetic-scroll';\n\n/**\n * Enables synthetic vertical (Y-axis) scrolling for a container element\n * using pointer-based drag interactions.\n *\n * This is a convenience wrapper around {@link useHoneySyntheticScroll} with\n * the axis fixed to `'y'`.\n *\n * All behavior, boundaries, and lifecycle guarantees are identical to the\n * base hook, but limited to vertical movement only.\n *\n * @template Element - The HTML element type of the scrollable container.\n *\n * @param options - Configuration options forwarded to\n * {@link useHoneySyntheticScroll}, excluding the `axis` option.\n *\n * @returns A ref that must be attached to the scrollable container element.\n */\nexport const useHoneySyntheticScrollY = <Element extends HTMLElement>(\n options?: Omit<UseHoneySyntheticScrollOptions<Element>, 'axis'>,\n) =>\n useHoneySyntheticScroll<Element>({\n ...options,\n axis: 'y',\n });\n","import { useCallback, useEffect, useRef } from 'react';\nimport type { RefObject } from 'react';\n\nimport { Axis } from '@react-hive/honey-utils';\nimport {\n resolveBoundedDelta,\n getXOverflowWidth,\n getYOverflowHeight,\n parse2DMatrix,\n resolveAxisDelta,\n} from '@react-hive/honey-utils';\n\nimport type { Nullable } from '~/types';\nimport type {\n HoneyDragHandlers,\n HoneyDragOnEndHandler,\n HoneyDragOnMoveHandler,\n HoneyDragOnStartHandler,\n} from './use-honey-drag';\nimport type { UseHoneyResizeHandler } from './use-honey-resize';\nimport { useHoneyDrag } from './use-honey-drag';\nimport { useHoneyResize } from './use-honey-resize';\n\ninterface ResolveAxisTranslateOptions {\n /**\n * Drag delta for the axis (deltaX or deltaY).\n */\n delta: number;\n /**\n * Current translate value for the axis.\n */\n translate: number;\n /**\n * Visible container size for the axis (width or height).\n */\n containerSize: number;\n /**\n * Overflow size for the axis.\n */\n overflowSize: number;\n /**\n * Overscroll window percentage.\n */\n overscrollPct: number;\n}\n\nexport const resolveAxisTranslate = ({\n delta,\n translate,\n containerSize,\n overflowSize,\n overscrollPct,\n}: ResolveAxisTranslateOptions): Nullable<number> => {\n if (overflowSize <= 0) {\n return null;\n }\n\n const threshold = containerSize * (overscrollPct / 100);\n\n return resolveBoundedDelta({\n delta,\n value: translate,\n min: -(overflowSize + threshold),\n max: threshold,\n });\n};\n\ninterface ApplyScrollDeltaOptions {\n axis: Axis;\n container: HTMLElement;\n deltaX: number;\n deltaY: number;\n overscrollPct: number;\n}\n\nconst applyScrollDelta = ({\n axis,\n container,\n deltaX,\n deltaY,\n overscrollPct,\n}: ApplyScrollDeltaOptions): boolean => {\n const { translateX, translateY } = parse2DMatrix(container);\n\n let nextX = translateX;\n let nextY = translateY;\n let shouldScroll = false;\n\n if (axis === 'x' || axis === 'both') {\n const next = resolveAxisTranslate({\n delta: deltaX,\n translate: translateX,\n containerSize: container.clientWidth,\n overflowSize: getXOverflowWidth(container),\n overscrollPct,\n });\n\n if (next !== null) {\n nextX = next;\n shouldScroll = true;\n }\n }\n\n if (axis === 'y' || axis === 'both') {\n const next = resolveAxisTranslate({\n delta: deltaY,\n translate: translateY,\n containerSize: container.clientHeight,\n overflowSize: getYOverflowHeight(container),\n overscrollPct,\n });\n\n if (next !== null) {\n nextY = next;\n shouldScroll = true;\n }\n }\n\n if (shouldScroll) {\n container.style.transform = `translate(${nextX}px, ${nextY}px)`;\n }\n\n return shouldScroll;\n};\n\nexport interface UseHoneySyntheticScrollOptions<Element extends HTMLElement> extends Pick<\n HoneyDragHandlers<Element>,\n 'onStartDrag' | 'onEndDrag'\n> {\n /**\n * Axis along which synthetic scrolling is enabled.\n *\n * - `'x'` — horizontal only\n * - `'y'` — vertical only\n * - `'both'` — horizontal and vertical\n *\n * @default 'both'\n */\n axis?: Axis;\n /**\n * Percentage of the container size used as an overscroll buffer\n * on each enabled axis.\n *\n * This allows limited dragging beyond the natural content bounds\n * before movement is clamped.\n *\n * A value of `0` disables overscroll entirely.\n *\n * @default 0\n */\n overscrollPct?: number;\n /**\n * Whether to clear any applied translation transforms when the window resizes.\n *\n * Useful to keep the layout state consistent after dimension changes.\n *\n * @default true\n */\n resetOnResize?: boolean;\n /**\n * Enables synthetic scrolling driven by pointer-based scroll input,\n * such as mouse wheels and trackpads.\n *\n * When enabled, scroll input is intercepted and converted into bounded\n * translation using the same logic as drag gestures.\n *\n * When disabled, native scrolling behavior is preserved and no scroll\n * input is handled by this hook.\n *\n * @default true\n */\n enablePointerScroll?: boolean;\n}\n\n/**\n * Enables synthetic scrolling for a container using pointer-based drag gestures.\n *\n * Instead of relying on native scrollbars, this hook translates the container\n * using CSS transforms in response to drag input.\n *\n * ### Key characteristics\n * - Dragging is only applied when content overflows the container on a given axis.\n * - Movement is clamped within calculated bounds, with optional overscroll allowance.\n * - Scroll position is stored purely in `transform: translate(...)`.\n * - Active transforms can be automatically cleared on window resize.\n *\n * ### Internals\n * - Uses {@link useHoneyDrag} to track mouse / touch movement.\n * - Uses {@link useHoneyResize} to optionally reset scroll state on resize.\n *\n * @template Element - The HTML element type of the scrollable container.\n *\n * @param options - Configuration controlling axes, boundaries, and lifecycle behavior.\n *\n * @returns A ref that must be attached to the scrollable container element.\n */\nexport const useHoneySyntheticScroll = <Element extends HTMLElement>({\n axis = 'both',\n overscrollPct = 0,\n onStartDrag,\n onEndDrag,\n resetOnResize = true,\n enablePointerScroll = true,\n}: UseHoneySyntheticScrollOptions<Element> = {}): RefObject<Nullable<Element>> => {\n const containerRef = useRef<Nullable<Element>>(null);\n\n const handleOnStartDrag = useCallback<HoneyDragOnStartHandler<Element>>(\n async (...args) => {\n return onStartDrag?.(...args) ?? true;\n },\n [onStartDrag],\n );\n\n /**\n * Handles drag movement and applies clamped translation along the enabled axis or axes.\n *\n * For each axis:\n * - Skip processing if there is no overflow.\n * - Compute the candidate translate value from the drag delta.\n * - Clamp movement within calculated min / max bounds.\n */\n const handleOnMoveDrag = useCallback<HoneyDragOnMoveHandler<Element>>(\n container =>\n async ({ deltaX, deltaY }) => {\n return applyScrollDelta({\n container,\n deltaX,\n deltaY,\n axis,\n overscrollPct,\n });\n },\n [axis, overscrollPct],\n );\n\n const handleOnEndDrag = useCallback<HoneyDragOnEndHandler<Element>>(\n async (...args) => {\n onEndDrag?.(...args);\n },\n [axis, overscrollPct, onEndDrag],\n );\n\n useHoneyDrag(containerRef, {\n onStartDrag: handleOnStartDrag,\n onMoveDrag: handleOnMoveDrag,\n onEndDrag: handleOnEndDrag,\n });\n\n const resizeHandler = useCallback<UseHoneyResizeHandler>(() => {\n const container = containerRef.current;\n if (container) {\n container.style.removeProperty('transform');\n }\n }, []);\n\n useHoneyResize(resizeHandler, {\n enabled: resetOnResize,\n });\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n container.style.overscrollBehavior = 'contain';\n container.style.touchAction = 'none';\n\n const handleOnWheel = (event: WheelEvent) => {\n const { deltaX, deltaY } = resolveAxisDelta(\n {\n deltaX: event.deltaX,\n deltaY: event.deltaY,\n },\n axis,\n );\n\n const didScroll = applyScrollDelta({\n container,\n deltaX,\n deltaY,\n axis,\n overscrollPct,\n });\n\n if (didScroll) {\n event.preventDefault();\n }\n };\n\n if (enablePointerScroll) {\n container.addEventListener('wheel', handleOnWheel, { passive: false });\n }\n\n return () => {\n container.style.removeProperty('overscroll-behavior');\n container.style.removeProperty('touch-action');\n\n if (enablePointerScroll) {\n container.removeEventListener('wheel', handleOnWheel);\n }\n };\n }, [enablePointerScroll]);\n\n return containerRef;\n};\n","import { useEffect, useRef } from 'react';\n\nimport { useHoneyLayout } from './use-honey-layout';\nimport type { HoneyActiveOverlay, HoneyOverlayConfig, Nullable } from '../types';\n\n/**\n * A hook for registering and managing an overlay in the layout system.\n *\n * @param isRegister - A flag indicating whether the overlay should be registered.\n * @param overlayConfig - Configuration object specifying overlay behavior.\n *\n * @returns The registered overlay instance, or null if not registered.\n */\nexport const useRegisterHoneyOverlay = (\n isRegister: boolean,\n overlayConfig: HoneyOverlayConfig,\n): Nullable<HoneyActiveOverlay> => {\n const { registerOverlay, unregisterOverlay } = useHoneyLayout();\n\n const overlayRef = useRef<Nullable<HoneyActiveOverlay>>(null);\n\n useEffect(() => {\n if (!isRegister) {\n return;\n }\n\n const overlay = registerOverlay(overlayConfig);\n overlayRef.current = overlay;\n\n return () => {\n overlayRef.current = null;\n\n unregisterOverlay(overlay.id);\n };\n }, [isRegister, overlayConfig.onKeyUp]);\n\n return overlayRef.current;\n};\n","import React, { useMemo } from 'react';\nimport { HoneyStyleProvider } from '@react-hive/honey-style';\nimport type { PropsWithChildren } from 'react';\nimport type { HoneyStyleProviderProps } from '@react-hive/honey-style';\n\nimport { useHoneyMediaQuery } from '../hooks';\nimport { HoneyLayoutContext } from '../contexts';\nimport { useHoneyOverlays } from './hooks';\nimport type { HoneyLayoutContextValue } from '../contexts';\nimport type { UseHoneyMediaQueryOptions } from '../hooks';\n\ninterface HoneyLayoutProviderProps extends HoneyStyleProviderProps {\n mediaQueryOptions?: UseHoneyMediaQueryOptions;\n}\n\nexport const HoneyLayoutProvider = ({\n children,\n theme,\n mediaQueryOptions,\n ...props\n}: PropsWithChildren<HoneyLayoutProviderProps>) => {\n const screenState = useHoneyMediaQuery(theme, mediaQueryOptions);\n\n const { overlays, registerOverlay, unregisterOverlay } = useHoneyOverlays();\n\n const contextValue = useMemo<HoneyLayoutContextValue>(\n () => ({\n theme,\n screenState,\n overlays,\n registerOverlay,\n unregisterOverlay,\n }),\n [theme, screenState, overlays],\n );\n\n return (\n <HoneyStyleProvider theme={theme} {...props}>\n <HoneyLayoutContext value={contextValue}>{children}</HoneyLayoutContext>\n </HoneyStyleProvider>\n );\n};\n","import React, { useContext, useMemo } from 'react';\nimport merge from 'lodash.merge';\nimport { HoneyStyleProvider } from '@react-hive/honey-style';\nimport type { PropsWithChildren } from 'react';\nimport type { HoneyTheme } from '@react-hive/honey-style';\n\nimport { HoneyLayoutContext } from '../contexts';\n\ninterface HoneyLayoutThemeOverrideProps {\n theme: HoneyTheme;\n}\n\n/**\n * Provides a theme override context to its children.\n * Merges the provided theme with the existing theme from the `ThemeContext`.\n *\n * @param props - The props for `HoneyLayoutThemeOverride`.\n *\n * @returns The ThemeProvider with the merged theme applied to its children.\n */\nexport const HoneyLayoutThemeOverride = ({\n theme,\n ...props\n}: PropsWithChildren<HoneyLayoutThemeOverrideProps>) => {\n const honeyLayout = useContext(HoneyLayoutContext);\n\n const overriddenTheme = useMemo(\n () => merge(honeyLayout?.theme, theme),\n [honeyLayout?.theme, theme],\n );\n\n return <HoneyStyleProvider theme={overriddenTheme} {...props} />;\n};\n","export * from './use-honey-overlays';\n","import type { RefObject } from 'react';\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport type {\n HoneyKeyboardEventCode,\n HoneyActiveOverlay,\n HoneyOverlayEventListener,\n Nullable,\n} from '../../types';\nimport type { HoneyRegisterOverlay, HoneyUnregisterOverlay } from '../../contexts';\nimport { generateUniqueId } from '../../helpers';\n\n/**\n * Hook to manage a stack of overlays, allowing registration and unregistration of overlays,\n * as well as handling keyboard events for the topmost overlay.\n */\nexport const useHoneyOverlays = () => {\n const overlaysRef = useRef<HoneyActiveOverlay[]>([]);\n\n useEffect(() => {\n const handleKeyUp = (e: KeyboardEvent) => {\n const overlays = overlaysRef.current;\n if (!overlays.length) {\n // No overlays to handle key events\n return;\n }\n\n const topLevelOverlay = overlays[overlays.length - 1];\n\n topLevelOverlay.notifyListeners('keyup', e.code as HoneyKeyboardEventCode, e);\n };\n\n document.addEventListener('keyup', handleKeyUp);\n\n return () => {\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n\n /**\n * Registers a new overlay and adds it to the stack.\n *\n * @param overlayConfig - The configuration for the overlay, including optional ID and event handlers.\n *\n * @returns The registered overlay object.\n */\n const registerOverlay = useCallback<HoneyRegisterOverlay>(overlayConfig => {\n const overlayId = overlayConfig.id ?? generateUniqueId();\n\n const listeners: HoneyOverlayEventListener[] = [['keyup', overlayConfig.onKeyUp]];\n const containerRef: RefObject<Nullable<HTMLDivElement>> = {\n current: null,\n };\n\n const overlay: HoneyActiveOverlay = {\n containerRef,\n id: overlayId,\n setContainerRef: element => {\n containerRef.current = element;\n },\n addListener: (type, handler) => {\n listeners.push([type, handler]);\n },\n removeListener: (targetType, targetHandler) => {\n const targetListenerIndex = listeners.findIndex(\n ([type, listenerHandler]) => type === targetType && listenerHandler === targetHandler,\n );\n\n if (targetListenerIndex !== -1) {\n listeners.splice(targetListenerIndex, 1);\n }\n },\n notifyListeners: (targetEventType, keyCode, e) => {\n const listenKeys = overlayConfig.listenKeys ?? [];\n\n if (!listenKeys.length || listenKeys.includes(keyCode)) {\n e.preventDefault();\n\n listeners.forEach(([eventType, listener]) => {\n if (eventType === targetEventType) {\n listener(keyCode, overlay, e);\n }\n });\n }\n },\n };\n\n overlaysRef.current.push(overlay);\n\n return overlay;\n }, []);\n\n /**\n * Unregisters an overlay by its ID and removes it from the stack.\n *\n * @param targetOverlayId - The ID of the overlay to be removed.\n */\n const unregisterOverlay = useCallback<HoneyUnregisterOverlay>(targetOverlayId => {\n overlaysRef.current = overlaysRef.current.filter(overlay => overlay.id !== targetOverlayId);\n }, []);\n\n return {\n overlays: overlaysRef.current,\n registerOverlay,\n unregisterOverlay,\n };\n};\n","export * from './HoneyLayoutProvider';\nexport * from './HoneyLayoutThemeOverride';\n","/**\n * The types for handling CSS properties and values, focusing on dimensions, colors, media queries, and other essential CSS concepts.\n */\nimport * as CSS from 'csstype';\nimport type {\n HoneyBreakpointName,\n HoneyStyledContext,\n HoneyColor,\n HoneyCSSSpacingValue,\n HoneyCSSColorProperty,\n HoneyCSSSpacingProperty,\n HoneyCSSShorthandSpacingProperty,\n HoneyRawCSSSpacingValue,\n} from '@react-hive/honey-style';\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function/steps#step-position\n */\ntype HoneyCSSStepFunctionPosition =\n | 'jump-start'\n | 'jump-end'\n | 'jump-none'\n | 'jump-both'\n | 'start'\n | 'end';\n\n/**\n * Defining the allowed timing functions for the transition\n */\nexport type HoneyCSSTimingFunction =\n // https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function\n | 'ease'\n // https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function/linear\n | 'linear'\n | `linear(${string})`\n // https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function/cubic-bezier\n | `cubic-bezier(${number}, ${number}, ${number}, ${number})`\n | 'ease-in'\n | 'ease-out'\n | 'ease-in-out'\n | 'step-start'\n | 'step-end'\n // https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function/steps\n | `steps(${number})`\n | `steps(${number}, ${HoneyCSSStepFunctionPosition})`;\n\n/**\n * A type representing a function that returns a value for a specific CSS property based on the provided theme.\n *\n * @template CSSProperty - The CSS property this function will generate a value for.\n */\ntype HoneyCSSPropertyValueFn<CSSProperty extends keyof CSS.Properties> = (\n context: HoneyStyledContext<object>,\n) => CSS.Properties[CSSProperty];\n\n/**\n * Represents a non-responsive (raw) CSS property value for a specific CSS property.\n *\n * This type adapts based on the nature of the property:\n *\n * - For color-related properties, it accepts theme tokens or raw color values.\n * - For shorthand spacing properties (`margin`, `padding`), it supports multi-value arrays.\n * - For other spacing-related properties, it allows numeric or token-based values.\n * - For all other properties, it falls back to the standard CSS value type.\n *\n * @template CSSProperty - The name of the CSS property.\n */\ntype HoneyRawCSSPropertyValue<CSSProperty extends keyof CSS.Properties> =\n CSSProperty extends HoneyCSSColorProperty\n ? HoneyColor\n : CSSProperty extends HoneyCSSShorthandSpacingProperty\n ? HoneyCSSSpacingValue\n : CSSProperty extends HoneyCSSSpacingProperty\n ? HoneyRawCSSSpacingValue\n : CSS.Properties[CSSProperty];\n\n/**\n * Represents a responsive CSS property value for a specific CSS property.\n *\n * This type maps each breakpoint name to a corresponding CSS property value.\n * The values can include:\n * - A standard CSS property value.\n * - A numeric value for dimension properties.\n * - A function returning a value based on the CSS property.\n *\n * @template CSSProperty - The key of a CSS property for which values are defined.\n */\ntype HoneyResponsiveCSSPropertyValue<CSSProperty extends keyof CSS.Properties> = {\n [K in HoneyBreakpointName]?:\n | HoneyRawCSSPropertyValue<CSSProperty>\n | HoneyCSSPropertyValueFn<CSSProperty>;\n};\n\n/**\n * Represents a CSS property value that can be either a single value or a responsive value.\n *\n * This type can be one of the following:\n * - A standard CSS property value.\n * - A numeric value for dimension properties.\n * - A function that generates the value based on the CSS property.\n * - A responsive value where each breakpoint maps to a specific CSS property value.\n *\n * @template CSSProperty - The key of a CSS property to check.\n */\nexport type HoneyCSSPropertyValue<CSSProperty extends keyof CSS.Properties> =\n | HoneyRawCSSPropertyValue<CSSProperty>\n | HoneyCSSPropertyValueFn<CSSProperty>\n | HoneyResponsiveCSSPropertyValue<CSSProperty>;\n\n/**\n * A utility type to add a `$` prefix to a given CSS property name.\n *\n * @template CSSProperty - The string type representing a CSS property name.\n */\nexport type Honey$PrefixedCSSProperty<\n CSSProperty extends keyof CSS.Properties = keyof CSS.Properties,\n> = `$${CSSProperty}`;\n\n/**\n * Represents an object where each key is a prefixed CSS property (with a `$` prefix).\n *\n * Example:\n * ```\n * const styles: HoneyPrefixedCSSProperties = {\n * $color: 'red',\n * $fontSize: '12px'\n * };\n * ```\n */\nexport type Honey$PrefixedCSSProperties = {\n [CSSProperty in keyof CSS.Properties as Honey$PrefixedCSSProperty<CSSProperty>]?: HoneyCSSPropertyValue<CSSProperty>;\n};\n","/**\n * Store types that represent data structures, transformations, and models used across different components and modules.\n */\nimport type { RefObject } from 'react';\nimport type { HoneyStyledFunction } from '@react-hive/honey-style';\n\nimport type { KeysWithNonArrayValues, Nullable } from './utility.types';\nimport type { HoneyKeyboardEventCode } from './dom.types';\n\nexport type HoneyEffectResultFn<Props extends object> = HoneyStyledFunction<Props>;\n\nexport type HoneyEffect<Config = unknown, Props extends object = object> = (\n config: Config,\n) => HoneyEffectResultFn<Props>;\n\nexport type HoneyOverlayId = string;\n\nexport type HoneyOverlayEventType = 'keyup';\n\n/**\n * Handler function for an overlay event listener.\n *\n * @param keyCode - The code of the key that triggered the event.\n * @param overlay - The overlay.\n * @param e - The original keyboard event.\n */\nexport type HoneyOverlayEventListenerHandler = (\n keyCode: HoneyKeyboardEventCode,\n overlay: HoneyActiveOverlay,\n e: KeyboardEvent,\n) => void;\n\n/**\n * A tuple representing an event listener, including the event type and the handler function.\n */\nexport type HoneyOverlayEventListener = [HoneyOverlayEventType, HoneyOverlayEventListenerHandler];\n\n/**\n * Configuration object for an overlay, used to specify the overlay's behavior and event handling.\n */\nexport interface HoneyOverlayConfig {\n /**\n * Custom overlay ID.\n * Automatically generated if not passed.\n *\n * @default It generates automatically\n */\n id?: HoneyOverlayId;\n /**\n * List of keyboard event codes to listen for (e.g., \"Escape\", \"Enter\").\n * If undefined or empty, all key codes will be listened to.\n *\n * @default undefined\n */\n listenKeys?: HoneyKeyboardEventCode[];\n /**\n * Callback function to be invoked when a key event occurs for the specified key(s).\n * If `listenKeys` is provided, this will only be triggered for those keys.\n */\n onKeyUp: HoneyOverlayEventListenerHandler;\n}\n\n/**\n * Represents an overlay in the layout, allowing the registration of event listeners and notifying them when events occur.\n */\nexport interface HoneyActiveOverlay {\n /**\n * Unique identifier for the overlay.\n */\n id: HoneyOverlayId;\n /**\n * Reference to the container element of the overlay.\n */\n containerRef: RefObject<Nullable<HTMLDivElement>>;\n /**\n * Sets the container reference for the overlay.\n *\n * @param element - The HTMLDivElement to set as the container.\n */\n setContainerRef: (element: HTMLDivElement) => void;\n /**\n * Adds an event listener to the overlay.\n *\n * @param type - The type of event to listen for.\n * @param handler - The handler function to execute when the event is triggered.\n */\n addListener: (type: HoneyOverlayEventType, handler: HoneyOverlayEventListenerHandler) => void;\n /**\n * Removes a specific event listener from the overlay.\n *\n * @param type - The type of event for the listener.\n * @param handler - The handler function to remove.\n */\n removeListener: (type: HoneyOverlayEventType, handler: HoneyOverlayEventListenerHandler) => void;\n /**\n * Notifies all listeners of a specific event type.\n *\n * @param targetEventType - The type of event that occurred.\n * @param keyCode - The code of the key that triggered the event.\n * @param e - The original keyboard event.\n */\n notifyListeners: (\n targetEventType: HoneyOverlayEventType,\n keyCode: HoneyKeyboardEventCode,\n e: KeyboardEvent,\n ) => void;\n}\n\n/**\n * Represents an item that has been flattened from a hierarchical data structure, with additional\n * properties to support tracking its position and relationships within the hierarchy.\n *\n * This type is particularly useful for scenarios where nested data structures, such as trees or\n * lists with sub-items, need to be transformed into a flat structure while preserving the depth\n * and parent-child relationships.\n *\n * @template OriginItem - The type of the original item from the hierarchical structure.\n * @template NestedListKey - The key within `OriginItem` that contains nested items or lists.\n */\nexport type HoneyFlattenedItem<OriginItem extends object, NestedListKey extends string> = Omit<\n OriginItem,\n // Remove `NestedListKey` from the keys of `Item`\n NestedListKey\n> & {\n /**\n * The optional id of the parent item in the flattened structure. This establishes the parent-child\n * relationship and allows the reconstruction of the original hierarchy if needed.\n */\n parentId: OriginItem[KeysWithNonArrayValues<OriginItem>] | undefined;\n /**\n * The depth level of the item in the flattened structure. This indicates how deep the item is nested\n * within the hierarchy, starting from 0 for top-level items.\n *\n * @default 0\n */\n depthLevel: number;\n /**\n * The total number of nested items that are contained within the current item. This helps to keep\n * track of the overall size of the nested structure for each item.\n *\n * @default 0\n */\n totalNestedItems: number;\n};\n","/**\n * A union type representing commonly used keyboard key codes.\n * These codes follow the `KeyboardEvent.code` specification, not `key`.\n *\n * These key codes are useful for identifying specific keyboard inputs during event handling.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code\n */\nexport type HoneyKeyboardEventCode =\n // Control keys\n | 'Escape'\n | 'Tab'\n | 'CapsLock'\n | 'ShiftLeft'\n | 'ShiftRight'\n | 'ControlLeft'\n | 'ControlRight'\n | 'AltLeft'\n | 'AltRight'\n | 'MetaLeft'\n | 'MetaRight'\n\n // Navigation\n | 'ArrowUp'\n | 'ArrowDown'\n | 'ArrowLeft'\n | 'ArrowRight'\n | 'Home'\n | 'End'\n | 'PageUp'\n | 'PageDown'\n\n // Action keys\n | 'Enter'\n | 'NumpadEnter'\n | 'Backspace'\n | 'Delete'\n | 'Insert'\n | 'Space'\n\n // Function keys\n | 'F1'\n | 'F2'\n | 'F3'\n | 'F4'\n | 'F5'\n | 'F6'\n | 'F7'\n | 'F8'\n | 'F9'\n | 'F10'\n | 'F11'\n | 'F12'\n\n // Alphanumeric\n | 'KeyA'\n | 'KeyB'\n | 'KeyC'\n | 'KeyD'\n | 'KeyE'\n | 'KeyF'\n | 'KeyG'\n | 'KeyH'\n | 'KeyI'\n | 'KeyJ'\n | 'KeyK'\n | 'KeyL'\n | 'KeyM'\n | 'KeyN'\n | 'KeyO'\n | 'KeyP'\n | 'KeyQ'\n | 'KeyR'\n | 'KeyS'\n | 'KeyT'\n | 'KeyU'\n | 'KeyV'\n | 'KeyW'\n | 'KeyX'\n | 'KeyY'\n | 'KeyZ'\n\n // Digits\n | 'Digit0'\n | 'Digit1'\n | 'Digit2'\n | 'Digit3'\n | 'Digit4'\n | 'Digit5'\n | 'Digit6'\n | 'Digit7'\n | 'Digit8'\n | 'Digit9'\n\n // Numpad\n | 'Numpad0'\n | 'Numpad1'\n | 'Numpad2'\n | 'Numpad3'\n | 'Numpad4'\n | 'Numpad5'\n | 'Numpad6'\n | 'Numpad7'\n | 'Numpad8'\n | 'Numpad9'\n | 'NumpadAdd'\n | 'NumpadSubtract'\n | 'NumpadMultiply'\n | 'NumpadDivide'\n | 'NumpadDecimal'\n\n // Symbols\n | 'Minus'\n | 'Equal'\n | 'BracketLeft'\n | 'BracketRight'\n | 'Backslash'\n | 'Semicolon'\n | 'Quote'\n | 'Backquote'\n | 'Comma'\n | 'Period'\n | 'Slash';\n","export * from './utility.types';\nexport * from './data.types';\nexport * from './state.types';\nexport * from './css.types';\nexport * from './dom.types';\n","/**\n * Types related to managing application state, React context, or any other state management tools.\n */\n\n/**\n * Represents the state of the screen layout.\n */\nexport interface HoneyScreenState {\n /** Indicates if the screen size is extra-small (xs). */\n isXs: boolean;\n /** Indicates if the screen size is small (sm). */\n isSm: boolean;\n /** Indicates if the screen size is medium (md). */\n isMd: boolean;\n /** Indicates if the screen size is large (lg). */\n isLg: boolean;\n /** Indicates if the screen size is extra-large (xl). */\n isXl: boolean;\n /** Indicates if the screen orientation is portrait. */\n isPortrait: boolean;\n /** Indicates if the screen orientation is landscape. */\n isLandscape: boolean;\n}\n","/**\n * This file stores generic or helper types that provide utility across multiple files.\n * These types are often unrelated to specific components or business logic.\n * They aim to assist in working with types more effectively and flexibly.\n */\n\nexport type TimeoutId = ReturnType<typeof setTimeout>;\n\nexport type Nullable<T> = T | null;\n\n/**\n * Extracts the keys from a given type `T` whose values match the specified `Condition`.\n *\n * @template T - The object type from which to extract keys.\n * @template Condition - The condition that the type of the values must satisfy to be included.\n *\n * @example\n * ```ts\n * type Example = { a: string; b: number; c: boolean };\n * type StringKeys = ExtractKeys<Example, string>; // \"a\"\n * ```\n */\ntype ExtractKeys<T, Condition> = {\n [K in keyof T]: T[K] extends Condition ? K : never;\n}[keyof T];\n\n/**\n * Excludes the keys from a given type `T` whose values match the specified `Condition`.\n *\n * @template T - The object type from which to exclude keys.\n * @template Condition - The condition that the type of the values must satisfy to be excluded.\n *\n * @example\n * ```ts\n * type Example = { a: string; b: number; c: boolean };\n * type NonNumberKeys = ExcludeKeys<Example, number>; // \"a\" | \"c\"\n * ```\n */\ntype ExcludeKeys<T, Condition> = {\n [K in keyof T]: T[K] extends Condition ? never : K;\n}[keyof T];\n\n/**\n * Extracts the keys from a given type `T` where the values are `string`, `null`, or `undefined`.\n *\n * @template T - The object type from which to extract string-related keys.\n *\n * @example\n * ```ts\n * type Example = { a: string; b: number; c: string | null };\n * type StringKeys = KeysWithStringValues<Example>; // \"a\" | \"c\"\n * ```\n */\nexport type KeysWithStringValues<T> = Extract<ExtractKeys<T, string | null | undefined>, string>;\n\n/**\n * Extracts the keys from a given type `T` where the values are arrays (`unknown[]`), `null`, or `undefined`.\n *\n * @template T - The object type from which to extract array-related keys.\n *\n * @example\n * ```ts\n * type Example = { a: string[]; b: number; c: number[] | null };\n * type ArrayKeys = KeysWithArrayValues<Example>; // \"a\" | \"c\"\n * ```\n */\nexport type KeysWithArrayValues<T> = Extract<ExtractKeys<T, unknown[] | null | undefined>, string>;\n\n/**\n * Extracts the keys from a given type `T` where the values are **not** arrays (`unknown[]`), `null`, or `undefined`.\n *\n * @template T - The object type from which to extract non-array keys.\n *\n * @example\n * ```ts\n * type Example = { a: string; b: number; c: string[]; d: null };\n * type NonArrayKeys = KeysWithNonArrayValues<Example>; // \"a\" | \"b\"\n * ```\n */\nexport type KeysWithNonArrayValues<T> = Extract<\n ExcludeKeys<T, unknown[] | null | undefined>,\n string\n>;\n","import { splitStringIntoWords } from '@react-hive/honey-utils';\n\nimport type {\n HoneyFlattenedItem,\n KeysWithArrayValues,\n KeysWithNonArrayValues,\n KeysWithStringValues,\n} from '../types';\n\n/**\n * Recursively converts a nested list structure into a flat list. It excludes the nested list key from the result\n * while adding hierarchical metadata, such as `depthLevel`, `parentId`, and `totalNestedItems` to each flattened item.\n *\n * This function is useful for flattening deeply nested tree-like structures (e.g., categories, folders)\n * while preserving their relationships and depth levels in the hierarchy.\n *\n * @template OriginItem - The type of the items in the nested list.\n *\n * @param items - The array of items to be flattened. If undefined, it returns an empty array.\n * @param itemIdKey - The key in each item that uniquely identifies it (e.g., 'id').\n * @param nestedItemsKey - The key in each item that contains the nested items or list (e.g., 'children').\n * @param flattenedItemsResult - An array that accumulates the flattened items. Defaults to an empty array.\n * @param parentId - Optional. The ID of the parent item in the flattened structure. Defaults to undefined for top-level items.\n * @param depthLevel - Optional. The current depth level of the item in the nested structure. Defaults to 0 for top-level items.\n *\n * @returns A flat array of items, where the nested list key is removed, and each item includes:\n * - `parentId`: ID of its parent item in the flattened structure (undefined for top-level items).\n * - `depthLevel`: The depth level of the item in the hierarchy, with 0 being the top-level.\n * - `totalNestedItems`: The total number of direct child items within the current item (defaults to 0 for leaf nodes).\n *\n * @example\n * ```ts\n * const nestedData = [\n * { id: 1, name: 'Item 1', children: [{ id: 2, name: 'Item 1.1' }] },\n * { id: 3, name: 'Item 2', children: [] },\n * ];\n *\n * const flatList = flattenNestedList(nestedData, 'id', 'children');\n *\n * // Output:\n * // [\n * // { id: 1, name: 'Item 1', parentId: undefined, depthLevel: 0, totalNestedItems: 1 },\n * // { id: 2, name: 'Item 1.1', parentId: 1, depthLevel: 1, totalNestedItems: 0 },\n * // { id: 3, name: 'Item 2', parentId: undefined, depthLevel: 0, totalNestedItems: 0 }\n * // ]\n * ```\n */\nexport const flattenNestedList = <OriginItem extends object>(\n items: OriginItem[] | undefined,\n itemIdKey: KeysWithNonArrayValues<OriginItem>,\n nestedItemsKey: KeysWithArrayValues<OriginItem>,\n ///\n flattenedItemsResult: HoneyFlattenedItem<OriginItem, typeof nestedItemsKey>[] = [],\n parentId: OriginItem[KeysWithNonArrayValues<OriginItem>] | undefined = undefined,\n depthLevel = 0,\n): HoneyFlattenedItem<OriginItem, typeof nestedItemsKey>[] => {\n items?.forEach(item => {\n const { [nestedItemsKey]: _, ...itemWithoutNestedListKey } = item;\n\n const nestedItems = item[nestedItemsKey];\n const isNestedItemArray = Array.isArray(nestedItems);\n\n flattenedItemsResult.push({\n ...itemWithoutNestedListKey,\n parentId,\n depthLevel,\n totalNestedItems: isNestedItemArray ? nestedItems.length : 0,\n });\n\n if (isNestedItemArray) {\n const parentId = item[itemIdKey];\n\n flattenNestedList(\n nestedItems,\n itemIdKey,\n nestedItemsKey,\n flattenedItemsResult,\n parentId,\n depthLevel + 1,\n );\n }\n });\n\n return flattenedItemsResult;\n};\n\n/**\n * Filters a list of flattened items based on a specified parent ID and an optional predicate function.\n *\n * This utility is useful for extracting items that share the same parent in a flattened hierarchical\n * structure, such as categories or tree-like data. Optionally, it allows further filtering through a\n * custom predicate function.\n *\n * @template OriginItem - The type of the items in the flattened list.\n * @template NestedListKey - The key within `OriginItem` that contains nested items or lists.\n *\n * @param flattenedItems - The array of flattened items to filter, which contains items with hierarchical metadata.\n * @param parentId - The parent ID to filter the items by. Only items with this parent ID will be included in the result.\n * @param predicate - Optional. A custom function to apply additional filtering logic on items that match the parent ID.\n *\n * @returns An array of flattened items that match the specified `parentId`, and if provided, the `predicate` function.\n *\n * @example\n * ```ts\n * const filteredItems = filterFlattenedItems(flatList, 1, item => item.depthLevel > 1);\n *\n * // This would return items with `parentId` equal to 1, and where `depthLevel` is greater than 1.\n * ```\n */\nexport const filterFlattenedItems = <OriginItem extends object, NestedListKey extends string>(\n flattenedItems: HoneyFlattenedItem<OriginItem, NestedListKey>[],\n parentId: OriginItem[KeysWithNonArrayValues<OriginItem>],\n predicate?: (flattenedItem: HoneyFlattenedItem<OriginItem, NestedListKey>) => boolean,\n) =>\n flattenedItems.filter(\n flattenedItem =>\n flattenedItem.parentId === parentId && (!predicate || predicate(flattenedItem)),\n );\n\n/**\n * Searches through a list of flattened items to find matches based on a search query.\n * This function considers both the items themselves and their parents in the hierarchy, ensuring that\n * any matching items and their respective parents are included in the result.\n *\n * The search is case-insensitive and can handle partial matches, making it useful for dynamic filtering\n * of hierarchical data such as categories or trees.\n *\n * @template OriginItem - The type of the original item.\n * @template NestedListKey - The key within `OriginItem` that contains nested items or lists.\n *\n * @param flattenedItems - The array of flattened items to search through, which may include hierarchical metadata.\n * @param itemIdKey - The key used to uniquely identify each item (e.g., 'id').\n * @param valueKey - The key in each item that contains the value to be searched (e.g., 'name').\n * @param searchQuery - The query string used to filter items. Supports partial matches.\n *\n * @returns An array of matched flattened items, including their parent items if applicable.\n *\n * @example\n * ```ts\n * const searchResults = searchFlattenedItems(flatList, 'id', 'name', 'search term');\n *\n * // This will return items where the 'name' field matches the search term,\n * // including any relevant parent items in the hierarchy.\n * ```\n */\nexport const searchFlattenedItems = <OriginItem extends object, NestedListKey extends string>(\n flattenedItems: HoneyFlattenedItem<OriginItem, NestedListKey>[],\n itemIdKey: KeysWithNonArrayValues<OriginItem>,\n valueKey: KeysWithStringValues<OriginItem>,\n searchQuery: string,\n) => {\n const searchWords = splitStringIntoWords(searchQuery.toLowerCase());\n if (!searchWords.length) {\n return flattenedItems;\n }\n\n const itemIdToIndexMap = flattenedItems.reduce<Record<string, number>>(\n (result, flattenedItem, flattenedItemIndex) => {\n // Item ID -> Item index\n result[flattenedItem[itemIdKey as never]] = flattenedItemIndex;\n\n return result;\n },\n {},\n );\n\n return flattenedItems.reduce<HoneyFlattenedItem<OriginItem, NestedListKey>[]>(\n (matchedFlattenedItems, flattenedItem) => {\n const flattenedItemValue = flattenedItem[valueKey as never];\n // If item value is null, undefined or empty string\n if (!flattenedItemValue) {\n return matchedFlattenedItems;\n }\n\n if (\n matchedFlattenedItems.some(\n matchedItem => matchedItem[itemIdKey as never] === flattenedItem[itemIdKey as never],\n )\n ) {\n return matchedFlattenedItems;\n }\n\n const itemWords = splitStringIntoWords((flattenedItemValue as string).toLowerCase());\n\n const isItemMatched = searchWords.every(searchWord =>\n itemWords.some(word => word.startsWith(searchWord)),\n );\n\n if (isItemMatched) {\n if (flattenedItem.parentId === undefined) {\n matchedFlattenedItems.push(flattenedItem);\n\n const insertNestedItems = (\n targetFlattenedItem: HoneyFlattenedItem<OriginItem, NestedListKey>,\n ) => {\n // If parent item does not have nested items, so do not iterate through the list\n if (!targetFlattenedItem.totalNestedItems) {\n return;\n }\n\n flattenedItems.forEach(flattenedItem => {\n if (flattenedItem.parentId === targetFlattenedItem[itemIdKey as never]) {\n matchedFlattenedItems.push(flattenedItem);\n\n insertNestedItems(flattenedItem);\n }\n });\n };\n\n insertNestedItems(flattenedItem);\n } else {\n const insertParentItems = (\n targetFlattenedItem: HoneyFlattenedItem<OriginItem, NestedListKey>,\n ) => {\n const parentItemIndex = itemIdToIndexMap[targetFlattenedItem.parentId as never];\n const parentItem = flattenedItems[parentItemIndex];\n\n if (parentItem.parentId !== undefined) {\n insertParentItems(parentItem);\n }\n\n const prevItemParentId = matchedFlattenedItems.length\n ? matchedFlattenedItems[matchedFlattenedItems.length - 1].parentId\n : null;\n\n const shouldInsertParentItem =\n prevItemParentId === null || prevItemParentId !== targetFlattenedItem.parentId;\n\n if (shouldInsertParentItem) {\n if (!parentItem) {\n throw new Error('[honey-layout]: Parent item was not found.');\n }\n\n matchedFlattenedItems.push(parentItem);\n }\n };\n\n insertParentItems(flattenedItem);\n\n matchedFlattenedItems.push(flattenedItem);\n }\n }\n\n return matchedFlattenedItems;\n },\n [],\n );\n};\n","const uniqueWarningKeys = new Set<string>();\n\nexport const warnOnce = (key: string, message: string) => {\n if (uniqueWarningKeys.has(key)) {\n return;\n }\n\n uniqueWarningKeys.add(key);\n\n console.warn(message);\n};\n","export * from './feedback';\nexport * from './data-utils';\n","module.exports = require(\"@react-hive/honey-style\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Check if module exists (development only)\n\tif (__webpack_modules__[moduleId] === undefined) {\n\t\tvar e = new Error(\"Cannot find module '\" + moduleId + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","import { resolveSpacing as deprecatedImport__resolveSpacing } from '@react-hive/honey-style';\n\n/**\n * @deprecated Please, use import from `@react-hive/honey-style`\n */\nconst resolveSpacing = deprecatedImport__resolveSpacing;\n\nexport { resolveSpacing };\n\nexport * from './constants';\nexport * from './types';\nexport * from './components';\nexport * from './providers';\nexport * from './hooks';\nexport * from './utils';\nexport * from './helpers';\nexport * from './effects';\n"],"names":[],"ignoreList":[],"sourceRoot":""}
1
+ {"version":3,"file":"index.dev.cjs","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAsU;AAChR;;AAEtD;AACA;AACA;AACA;AACA,IAAI;AACJ,mBAAmB,+DAAW;AAC9B,wBAAwB,oEAAgB;AACxC,sBAAsB,iEAAa;AACnC,eAAe,2DAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gEAAY;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,kBAAkB,4BAA4B;AAC9C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,4DAAQ;AACd,wBAAwB,oEAAgB;AACxC;AACA;AACA,6BAA6B,oEAAgB;AAC7C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,4BAA4B,oEAAgB;AAC5C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM,EAAE,4DAAQ;AAChB;AACA;AACA;AACA,0BAA0B,oEAAgB;AAC1C;AACA;AACA;AACA;AACA,iBAAiB,oEAAgB;AACjC,mBAAmB,iEAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,uDAAG;AAC1B,uBAAuB,uDAAG;;AAE1B;AACA;AACA;AACA;AACA;AACA,mBAAmB,yDAAK;;AAExB;AACA;AACA;AACA;AACA,qDAAqD,gEAAY;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,CAAC;;AAED;AACA,mGAAmG,gEAAY,qEAAqE,gEAAY,oEAAoE,2DAAO;AAC3Q;AACA;AACA,aAAa,gEAAY,8CAA8C,iFAA6B;AACpG;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,4BAA4B,0DAAU;AACtC;AACA;AACA,QAAQ,EAAE,4DAAQ;AAClB,4EAA4E,0DAAU;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qEAAiB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,2DAAO;AAChD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gEAAY;AACtC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,MAAM,gEAAY;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,EAAE,4DAAQ;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2DAAO;AAC1B,8BAA8B,+DAAW;AACzC,8BAA8B,2DAAO;AACrC;AACA,sGAAsG,wEAAoB,sBAAsB,yEAAqB;AACrK;AACA;AACA,mCAAmC,6EAAyB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qEAAiB;AACvC;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F,+DAAW;AAC1G;AACA;AACA;AACA,mCAAmC,+DAAW;AAC9C;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,+DAAW;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qDAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ,EAAE,4DAAQ;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,uDAAG;AAClB,eAAe,uDAAG;AAClB,eAAe,uDAAG;AAClB,eAAe,uDAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,4BAA4B,oEAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,+BAA+B,KAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,EAAE,4DAAQ;AAClB;AACA;AACA,uBAAuB,oEAAgB;AACvC,4BAA4B,oEAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,+DAAW;AACzB;AACA;AACA,0BAA0B,2DAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2DAAO;AACpC,2BAA2B,uDAAG;AAC9B,0BAA0B,uDAAG;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,eAAe,2DAAO;AACtB,oBAAoB,gEAAY;AAChC,qBAAqB,+DAAW;AAChC;AACA;AACA,mBAAmB,4DAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ,EAAE,4DAAQ;AAClB;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAW,CAAC,2DAAO;AAC3C,uBAAuB,mEAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yDAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAK;AAC9B;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ,EAAE,4DAAQ;AAClB;AACA;AACA;AACA;AACA,wBAAwB,+DAAW;AACnC,uBAAuB,mEAAe;AACtC;AACA;AACA,wBAAwB,4DAAQ;AAChC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,2DAAO;AACpD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,wBAAwB;AACxB;AACA,QAAQ,EAAE,4DAAQ;AAClB;AACA,mBAAmB,2DAAO;AAC1B,wBAAwB,gEAAY;AACpC,sBAAsB,+DAAW;AACjC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,sCAAsC,uDAAG;AACzC,qCAAqC,uDAAG;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uDAAG;AACxB,qBAAqB,uDAAG;AACxB,qBAAqB,uDAAG;AACxB,qBAAqB,uDAAG;AACxB;AACA,iFAAiF,uDAAG;AACpF,UAAU;AACV,mFAAmF,uDAAG;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEsH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxhCmM;AAC/O;AACwQ;AACpR;;AAE9D;AACA,cAAc,wEAAkB;AAChC;AACA;AACA;AACA;AACA,oBAAoB,qEAAa;AACjC;AACA;AACA,yBAAyB,wDAAK,2BAA2B,wDAAK;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,iEAAS;AACnB;;AAEA;AACA;AACA,OAAO,qEAAa;AACpB,WAAW,+DAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,eAAe,wDAAK;AACpB,eAAe,wDAAK;;AAEpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,+DAAY;AAC3C;AACA,cAAc,iEAAS;AACvB,OAAO,gEAAQ;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,iEAAS;AAC5E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+DAAY;AAC1B;AACA;AACA,UAAU,iEAAS;AACnB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,2HAA2H,+DAAY;AACvI;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAS;AACzB,sCAAsC,iEAAS,iBAAiB,iEAAS;AACzE;AACA,wBAAwB,uEAAe;AACvC;AACA;AACA;AACA,kBAAkB,wEAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iEAAS;AAC5B,sBAAsB,uEAAe;AACrC;AACA;AACA,SAAS,mEAAgB;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,qBAAqB,qEAAa;AAClC;AACA,iCAAiC,0EAAkB;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,0BAA0B,0EAAkB;AAC5C,8BAA8B,kEAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+DAAY;AAC1B,kBAAkB,+DAAY;AAC9B,kCAAkC,qEAAa;AAC/C;AACA,QAAQ,mEAAW,6BAA6B,yEAAiB;AACjE,eAAe,qEAAa;AAC5B;AACA,QAAQ,qEAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,wHAAwH,+DAAY;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,0EAAkB;AACjC,iBAAiB,qEAAa;AAC9B;AACA,gBAAgB,sDAAG;AACnB,iBAAiB,sDAAG;AACpB;AACA;AACA,MAAM,wEAAkB;AACxB,SAAS,sDAAG;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,iEAAS;AACvB,eAAe,0EAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gEAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qEAAa,gCAAgC,+DAAY;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,2BAA2B,0EAAkB;AAC7C,IAAI,SAAS,iEAAS;AACtB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mEAAgB;AACzB;AACA;AACA,qBAAqB,qEAAa;AAClC,kCAAkC,iEAAS,gBAAgB,6EAAqB;AAChF;AACA;AACA,SAAS,wEAAkB;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4EAAoB,kCAAkC,iEAAS,QAAQ,mEAAW;AACjG;AACA,yBAAyB,wEAAkB;AAC3C,qCAAqC,qEAAa;;AAElD;AACA,SAAS,iEAAS,kBAAkB,6EAAqB;AACzD,0BAA0B,wEAAkB;AAC5C,oCAAoC,yEAAiB;AACrD;AACA;AACA;AACA,uSAAuS,yEAAiB;AACxT;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,kBAAkB,qEAAa;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,sEAAsE,kEAAU;AAChF;AACA;AACA;AACA;AACA,kBAAkB,sDAAG;AACrB,oBAAoB,sDAAG;AACvB,qBAAqB,sDAAG;AACxB,mBAAmB,sDAAG;AACtB;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,qEAAa;AAC/C,0BAA0B,0EAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+DAAY;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mEAAW,6BAA6B,yEAAiB;AACjE,eAAe,qEAAa;AAC5B;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,wHAAwH,+DAAY;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,wEAAkB;AAC3B;;AAEA;AACA,OAAO,qEAAa,aAAa,wEAAkB;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,0EAAkB;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,iEAAS;AACvB,MAAM,kEAAU;AAChB;AACA;AACA,OAAO,qEAAa;AACpB,0BAA0B,qEAAa;AACvC,+BAA+B,6EAAqB;AACpD,UAAU,iEAAS;AACnB;AACA;AACA,wBAAwB,qEAAa;AACrC;AACA;AACA;AACA;AACA,yBAAyB,sEAAc;AACvC;AACA;AACA,sBAAsB,6EAAqB,uDAAuD,yEAAiB;AACnH;AACA;AACA,yBAAyB,0EAAkB;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,wEAAkB;AAC3B;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,0EAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,wDAAK;AAC1B,uBAAuB,wDAAK;AAC5B,wBAAwB,wDAAK;AAC7B,sBAAsB,wDAAK;AAC3B;AACA;AACA;AACA,iBAAiB,sDAAG,IAAI,sDAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,0EAA0E,4EAAoB,wBAAwB,4EAAoB;AAC1I;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAgB;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qDAAQ;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4DAAe;;AAErC;AACA;AACA;AACA;AACA;AACA,cAAc,oDAAO;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mDAAM;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mDAAM;;AAEnB;AACA;AACA;AACA;AACA;AACA,aAAa,mDAAM;;AAEnB;AACA;AACA;AACA;AACA;AACA,cAAc,oDAAO;;AAErB;AACA;AACA;AACA;AACA;AACA,eAAe,qDAAQ;;AAEvB;AACA;AACA;AACA,mBAAmB,yDAAY;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kEAAiB;AAC1B;AACA;AACA,GAAG;AACH;;AAE4I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxwBiG;AAC9H;AAChF;AACS;AACF;;AAEtC;;AAEA;AACA,uBAAuB,kDAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,UAAU;AAC/B,aAAa;AACb;AACA;AACA;AACA,qBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAc,yCAAY;AAC1B;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI;AACV;AACA;AACA;AACA,IAAI;AACJ,0BAA0B,2CAAc;AACxC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,GAAG;AACH,kDAAkD,2CAAc;AAChE;AACA;AACA;AACA,sCAAsC,2CAAc;AACpD,oCAAoC,2CAAc;AAClD,uBAAuB,8CAAiB;AACxC;AACA;AACA;AACA;AACA,GAAG;AACH,sBAAsB,8CAAiB;AACvC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uBAAuB,yCAAY;AACnC,sBAAsB,yCAAY;AAClC,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA,iBAAiB,8CAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iEAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAkB;AAC1B;AACA,SAAS;AACT;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,uBAAuB,yCAAY;AACnC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,eAAe,0CAAa;AAC5B;AACA;AACA;AACA;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA,GAAG;AACH,yBAAyB,0CAAa;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,iBAAiB,uDAAO;AACxB;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,eAAe,uDAAO;AACtB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,wDAAQ;AACb;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,uDAAO;AACZ;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK,4DAAY;AACjB;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,sDAAM;AACX;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,sDAAM;AACX;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,+DAAe;AACpB;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,sDAAM;AACX;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,wDAAQ;AACb;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEiG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClXnE;AACsxB;AAC7vB;AAC0H;AACvH;AACrB;AAC8E;AAC4E;AACjI;;AAE/D;AACA;AACA;AACA;AACA;AACA,qBAAqB,yCAAY;AACjC,oBAAoB,8CAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gDAAmB;AAC5D,oBAAoB;AACpB,sBAAsB;AACtB;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,4BAA4B,2CAAc;AAC1C,mBAAmB,8CAAiB;AACpC;AACA,GAAG;AACH,qBAAqB,8CAAiB;AACtC;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,cAAc,0CAAa;AAC3B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,sBAAsB,sDAAG;AACzB,WAAW,0CAAa;AACxB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,6CAAgB;AACtB,4BAA4B,2CAAc;AAC1C,uBAAuB,yCAAY;AACnC,cAAc,8CAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+CAAkB;AAC1C;AACA,sBAAsB,sDAAG;AACzB;AACA,GAAG;AACH;AACA,sCAAsC,gDAAmB;AACzD;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,wDAAwD,2CAAc;AACtE;AACA,qBAAqB,wEAAc;AACnC,sBAAsB,yCAAY;AAClC;AACA,uBAAuB,0CAAa;AACpC;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,qBAAqB,yEAAe;AACpC,qBAAqB,yEAAe;AACpC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,sBAAsB,2EAAiB;AACvC,wEAAwE,6EAAmB;AAC3F;AACA,8FAA8F,6EAAmB;AACjH,qCAAqC,+EAAqB;AAC1D;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4EAAkB,gHAAgH,6EAAmB;AAC9K;AACA;AACA,mBAAmB,kFAAwB;AAC3C;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR,oBAAoB,kFAAwB;AAC5C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sCAAsC,gFAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sDAAG;AACzB;AACA,2BAA2B,sDAAG;AAC9B;AACA;AACA,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA,mCAAmC,6CAAgB;AACnD;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,EAAE,6CAAgB;AACtB;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,KAAK,yLAAK;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2CAAc;AACpC,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA,0EAA0E,aAAa;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,eAAe;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,6CAAgB;AACnD;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI;AACV;AACA,IAAI;AACJ,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA,4BAA4B,2CAAc;;AAE1C;AACA,EAAE,+EAAqB;AACvB;AACA,kBAAkB,wEAAgB;AAClC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,sBAAsB,uDAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,uDAAuD,sDAAG;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,gBAAgB,sDAAG;AACxB;AACA;AACA,KAAK,gBAAgB,sDAAG;AACxB;AACA,6BAA6B,sDAAG;AAChC;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,gDAAmB;AAC5D,yCAAyC,gDAAmB;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAgB;AAC/C;;AAEA;AACA;AACA;AACA,8BAA8B,6CAAgB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,sBAAsB,sDAAG;AACzB,WAAW,0CAAa;AACxB;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,mBAAmB,yCAAY;AAC/B,kBAAkB,8CAAiB;AACnC;AACA,GAAG;AACH,qBAAqB,8CAAiB;AACtC;AACA,GAAG;AACH,mBAAmB,2CAAc;AACjC,sBAAsB,sDAAG;AACzB,WAAW,0CAAa;AACxB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,gFAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,yBAAyB,sEAAY;AACrC,mBAAmB,sEAAY;AAC/B,kBAAkB,sEAAY;AAC9B,oBAAoB,sEAAY;AAChC,yBAAyB,yCAAY;AACrC,qBAAqB,yCAAY;AACjC,qBAAqB,yCAAY;AACjC,yBAAyB,yCAAY;AACrC,4BAA4B,yCAAY;AACxC,4CAA4C,yCAAY;AACxD,6BAA6B,yCAAY,SAAS;AAClD,gCAAgC,yCAAY;AAC5C,sBAAsB,wEAAc;AACpC;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qEAAa;AAC9B;AACA;AACA;AACA;AACA,GAAG;AACH,yBAAyB,8CAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH,kCAAkC,wEAAc;AAChD;AACA;AACA,GAAG;AACH,6BAA6B,wEAAc;AAC3C;AACA,mBAAmB,qEAAa;AAChC;AACA;AACA;AACA;AACA,GAAG;AACH,+BAA+B,wEAAc;AAC7C;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA,wBAAwB,gFAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qEAAa;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gEAAgE,kEAAU;AAC1E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA,UAAU,iEAAS;AACnB;AACA,qBAAqB,qEAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,0CAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,0BAA0B,gFAAsB;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA,IAAI,IAAI;AACR;;AAEA;AACA,+CAA+C,gDAAmB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,mCAAmC,6CAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,4BAA4B,6CAAgB;AAC5C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,8BAA8B,yCAAY;AAC1C,uBAAuB,8CAAiB;AACxC;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS;AACT;AACA,MAAM;AACN;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;AACH,sBAAsB,sDAAG;AACzB,WAAW,0CAAa;AACxB;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,mDAAmD,gDAAmB;AACtE;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,mBAAmB,yCAAY;AAC/B,0BAA0B,yCAAY;AACtC,uBAAuB,yCAAY;AACnC,4BAA4B,yCAAY;AACxC,uBAAuB,yCAAY;AACnC,sBAAsB,sDAAG;AACzB,WAAW,0CAAa;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ,uBAAuB,6CAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,8CAA8C,2CAAc;AAC5D,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,oEAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mEAAW;AACrB;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAAgB;AAChD,0BAA0B,2CAAc;AACxC,EAAE,+EAAqB;AACvB,QAAQ,kEAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sDAAG;AACzB;AACA;AACA,GAAG;AACH,CAAC;;AAED,mCAAmC,gDAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,sCAAsC,2CAAc;AACpD,wBAAwB,yCAAY;AACpC,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8DAAM;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH,oDAAoD,2CAAc;AAClE,2BAA2B,yCAAY;AACvC,0BAA0B,yCAAY;AACtC,0BAA0B,yCAAY;AACtC,yBAAyB,yCAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,4CAAe;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,wEAAc;AACtC;AACA,uCAAuC,uEAAiB,GAAG,wEAAkB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA,IAAI,2EAAiB;AACrB,GAAG;AACH,sBAAsB,uDAAI;AAC1B,WAAW,0CAAa;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gEAAgE,sDAAG;AACnE;AACA;AACA;AACA,YAAY,wEAAc;AAC1B;AACA;AACA,UAAU;AACV;AACA,+BAA+B,6EAAmB;AAClD;AACA;AACA;AACA,KAAK,oDAAoD,sDAAG;AAC5D;AACA;AACA,KAAK,8BAA8B,mDAAqB,yEAAyE,sDAAG;AACpI;AACA;AACA;AACA,YAAY,wEAAc;AAC1B;AACA;AACA,UAAU;AACV;AACA,+BAA+B,yEAAe;AAC9C;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA,+BAA+B,6CAAgB;;AAE/C;AACA,SAAS,0CAAa;AACtB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mEAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4EAAkB;AAC5C,MAAM,oDAAU;AAChB;AACA;AACA,SAAS,kDAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,4EAAkB;AACpC,4BAA4B,mDAAS;AACrC;AACA;AACA,WAAW,oDAAU;AACrB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,2CAA2C,6CAAgB;AAC3D,sBAAsB,sDAAG;AACzB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,oBAAoB,wEAAc;AAClC;AACA;AACA,GAAG;AACH,4BAA4B,wEAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,4EAAkB;;AAExD;AACA;AACA;AACA;AACA,mBAAmB,sEAAY;AAC/B,0BAA0B,sEAAY;AACtC,yBAAyB,sEAAY;AACrC;AACA;AACA,gCAAgC,yCAAY;AAC5C,8BAA8B,yCAAY;AAC1C,gCAAgC,yCAAY;AAC5C,2BAA2B,yCAAY;AACvC,2BAA2B,yCAAY;AACvC,yBAAyB,yCAAY;AACrC;AACA,+BAA+B,iFAAuB;AACtD,6BAA6B,wEAAc;AAC3C;AACA;AACA;AACA,uBAAuB,kDAAQ,YAAY,4EAAkB;AAC7D,GAAG;AACH,8BAA8B,wEAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAU,uBAAuB,uEAAa,CAAC,qEAAa;AACxE,UAAU,mEAAS;AACnB;AACA;AACA,uBAAuB,mEAAW;AAClC;AACA,UAAU,mEAAS;AACnB;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,UAAU,mEAAS;AACnB;AACA;AACA;AACA;AACA,gBAAgB,qEAAa;AAC7B;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA,qBAAqB,mEAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,qBAAqB,mEAAW;AAChC;AACA;AACA,uCAAuC,kEAAU,iCAAiC,kEAAU,6BAA6B,kEAAU,6BAA6B,kEAAU,8KAA8K,yEAAiB;AACzW;AACA,iBAAiB,kEAAU,sGAAsG,kEAAU;AAC3I,SAAS,KAAK,0EAAgB;AAC9B;AACA,uGAAuG,iFAAuB;AAC9H,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,yGAAyG,uEAAa,CAAC,qEAAa,4BAA4B,qEAAa;AAC7K;AACA;AACA,cAAc,qEAAa;AAC3B;AACA;AACA;AACA;AACA;AACA,cAAc,qEAAa;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,oBAAoB,qEAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,yBAAyB,yCAAY;AACrC,wBAAwB,yCAAY;AACpC;AACA;AACA,EAAE,4CAAe;AACjB;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,0EAAgB;AAC7C;AACA;AACA,aAAa,4EAAkB;AAC/B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB,qBAAqB,qEAAa;AAClC,gBAAgB,qEAAa;AAC7B,qCAAqC,uEAAa;;AAElD;AACA;AACA;AACA;AACA;AACA,2CAA2C,kEAAU;AACrD;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA,gBAAgB,qEAAa;AAC7B,qCAAqC,uEAAa;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,SAAS,wEAAc,WAAW,+EAAqB;AAC/D;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAa;AACpC,wCAAwC,kEAAU,gCAAgC,yEAAiB;AACnG;AACA,eAAe,kEAAU;AACzB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,qEAAa;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,EAAE,4CAAe;AACjB,iEAAiE;AACjE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,wBAAwB,sDAAG;AAC3B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB,uDAAI,CAAC,uDAAQ;AACnC,kDAAkD,sDAAG;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,cAAc,wEAAc;AAC5B,iCAAiC,yEAAe;AAChD;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,KAAK,0IAA0I,sDAAG;AAClJ;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,cAAc,wEAAc;AAC5B,iCAAiC,6EAAmB;AACpD;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA,mBAAmB,qEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,6CAAgB;AACrD;AACA;AACA;AACA,IAAI;AACJ,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,sBAAsB,sDAAG;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA,SAAS,qEAAa;AACtB;AACA;AACA,SAAS,qEAAa;AACtB;AACA;AACA,SAAS,2EAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,yBAAyB,yCAAY;AACrC,wBAAwB,yCAAY;AACpC,oBAAoB,0CAAa;AACjC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU,gFAAsB;AAChC;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gFAAsB;AAChC;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,qBAAqB,yCAAY;AACjC,6BAA6B,yCAAY;AACzC,wCAAwC,2CAAc;AACtD,kCAAkC,2CAAc;AAChD,uBAAuB,wEAAc;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,qCAAqC,wEAAc;AACnD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,oBAAoB,gFAAsB;AAC1C,sBAAsB,8CAAiB;AACvC;AACA;AACA,gBAAgB,iEAAS;AACzB;AACA,qBAAqB,mEAAW;AAChC,WAAW,kEAAU;AACrB;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,0CAAa;AACjC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,yBAAyB,wEAAc;AACvC;AACA,kCAAkC,yCAAY;AAC9C;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ,yBAAyB,yCAAY;AACrC,+BAA+B,wEAAc;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,sEAAY;AACpC,GAAG;AACH,sCAAsC,wEAAc;AACpD;AACA;AACA;AACA;AACA,oBAAoB,mEAAW;AAC/B;AACA,mBAAmB,mEAAW;AAC9B,GAAG;AACH,8BAA8B,wEAAc;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mEAAW;AAC9B;AACA,oBAAoB,qEAAa;AACjC,6BAA6B,iEAAS;AACtC,kCAAkC,6EAAqB;AACvD,yBAAyB,qEAAa;AACtC,UAAU,6EAAqB,iBAAiB,iEAAS;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,iEAAS,aAAa,uEAAa;AAC7D;AACA,KAAK,kEAAU;AACf;AACA;AACA,yCAAyC,kEAAU;AACnD;AACA;;AAEA;AACA,QAAQ,qEAAa;AACrB,kCAAkC,6EAAqB;AACvD,oBAAoB,wEAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,yEAAiB;AAC5D;AACA,aAAa,6EAAmB;AAChC,KAAK;AACL,QAAQ,6EAAmB,8BAA8B,6EAAmB;AAC5E;AACA;AACA,4BAA4B,yEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,qCAAqC,wEAAc;AACnD;AACA;AACA;AACA;AACA,qBAAqB,mEAAW;AAChC;AACA,mBAAmB,mEAAW;AAC9B,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,MAAM,gEAAQ;AACd;AACA,gBAAgB,qEAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,iEAAS;AACnB,oBAAoB,4EAAoB;AACxC;AACA,UAAU,iEAAS;AACnB,qCAAqC,4EAAoB;AACzD;AACA,WAAW,iEAAS;AACpB,qCAAqC,4EAAoB;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA,GAAG;AACH,oBAAoB,0CAAa;AACjC;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,kBAAkB,yCAAY,GAAG;AACjC,mBAAmB,2CAAc;AACjC;AACA,MAAM,IAAqC;AAC3C;AACA,+BAA+B,iEAAS;AACxC;AACA;AACA;AACA,oDAAoD,2CAAc;AAClE,uBAAuB,wEAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,eAAe,0CAAa;AAC5B;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2CAA2C,2CAAc;AACzD,qDAAqD,2CAAc;AACnE;AACA;AACA,0BAA0B,yCAAY;AACtC;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA,GAAG;AACH,mBAAmB,mEAAa;AAChC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,+BAA+B,8CAAiB;AAChD,sCAAsC,iEAAS;AAC/C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,8CAAiB;AACxC,QAAQ,iEAAS;AACjB;AACA;AACA;;AAEA;AACA;AACA,QAAQ,iEAAS;AACjB;AACA;AACA;AACA,sBAAsB,iEAAS;AAC/B;AACA;AACA,GAAG;AACH,eAAe,0CAAa;AAC5B;AACA;AACA;AACA;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA,GAAG;AACH,kBAAkB,0CAAa;AAC/B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,SAAS,+DAAK,MAAM,kEAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ,wBAAwB,yCAAY;AACpC,qBAAqB,yCAAY;AACjC,8BAA8B,yCAAY;AAC1C,EAAE,4CAAe;AACjB;AACA,gBAAgB,iEAAS;;AAEzB;AACA;AACA;AACA;AACA,mBAAmB,qEAAa,qDAAqD,uEAAa,CAAC,qEAAa;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,4CAAe;AACjB;AACA;AACA;AACA,GAAG;AACH,oBAAoB,0CAAa;AACjC;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB,mEAAW;AAChC,yBAAyB,iEAAS;AAClC;AACA;AACA;AACA,+CAA+C,2EAAiB;AAChE;AACA;AACA,UAAU,UAAU,6EAAmB;AACvC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,iEAAS;;AAEzC;AACA;AACA;AACA,yBAAyB,uEAAa;;AAEtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAU,wIAAwI,kEAAU;AACxK;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,aAAa;AAC/F;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8CAAiB;AAC7C;AACA;AACA,2BAA2B,8CAAiB;AAC5C;AACA;AACA,uBAAuB,8CAAiB;AACxC;AACA;AACA,SAAS,0CAAa;AACtB;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iFAAuB;AACtD,kCAAkC,sEAAY;AAC9C;AACA;AACA,EAAE,+EAAqB;AACvB;AACA,GAAG;AACH,qBAAqB,wEAAc;AACnC;AACA,GAAG;AACH,oCAAoC,4EAAkB;AACtD,6BAA6B,yCAAY;AACzC,mBAAmB,yCAAY;AAC/B,iBAAiB,yCAAY;AAC7B,+BAA+B,yCAAY;AAC3C,gCAAgC,yCAAY;AAC5C,6BAA6B,yCAAY;AACzC,0BAA0B,yCAAY;AACtC,4BAA4B,yCAAY;AACxC,iCAAiC,yCAAY;AAC7C,6BAA6B,sEAAY;AACzC,wBAAwB,sEAAY;AACpC,gCAAgC,sEAAY;AAC5C,2BAA2B,sEAAY;AACvC,kCAAkC,2CAAc;AAChD,oCAAoC,2CAAc;AAClD,oBAAoB,wEAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,iIAAiI,yEAAe,wCAAwC,yEAAe;AACvM;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,gFAAsB;AACtC;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAa,CAAC,qEAAa;AAChD,oEAAoE,kEAAU;AAC9E;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,eAAe,0CAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,GAAG;AACH,+BAA+B,8CAAiB;AAChD;AACA;AACA,GAAG;AACH,0BAA0B,wEAAc;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mEAAS;AACjB;AACA;AACA,UAAU,qEAAa;AACvB;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yEAAe;AACpC,qBAAqB,yEAAe;AACpC;AACA;AACA,QAAQ,mEAAS;AACjB;AACA;AACA;AACA;AACA,QAAQ,mEAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,sBAAsB,2EAAiB;AACvC,wEAAwE,6EAAmB;AAC3F;AACA,8FAA8F,6EAAmB;AACjH,4BAA4B,+EAAqB;AACjD;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4EAAkB,4GAA4G,6EAAmB;AAC1K;AACA;AACA,mBAAmB,kFAAwB;AAC3C;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mEAAS;;AAEf;AACA,8BAA8B,uEAAa;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,iIAAiI,kFAAwB;AACzJ;AACA;AACA,WAAW;AACX,UAAU;AACV,gDAAgD,kFAAwB;AACxE;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA,iIAAiI,kFAAwB;AACzJ;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV,gDAAgD,kFAAwB;AACxE;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,UAAU,gFAAsB;AAChC;AACA;AACA;AACA;AACA,GAAG;AACH,mCAAmC,0CAAa;AAChD;AACA;AACA;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,0CAAa;AACjC;AACA,wCAAwC,wEAAc;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+EAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,wEAAc;AAC/D;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,gBAAgB,mEAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mEAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mEAAS;AACrB;AACA,iCAAiC,yEAAe;AAChD;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mEAAS;AACnB;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA,IAAI,IAAI;AACR;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,qBAAqB,0CAAa;AAClC;AACA,qCAAqC,iFAAuB;AAC5D,GAAG;AACH;AACA;AACA;AACA,oBAAoB,0CAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,eAAe,8CAAiB;AAChC;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2CAAc;AAClD;AACA;AACA;AACA,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA,8BAA8B,2CAAc;AAC5C;AACA;AACA;AACA;AACA,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAkB;AAC1B;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,iBAAiB,0CAAa;AAC9B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,2CAAc;AAC5C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH,qBAAqB,sEAAY;AACjC,kBAAkB,sEAAY;AAC9B,mBAAmB,sEAAY;AAC/B,oBAAoB,sEAAY;AAChC,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,uBAAuB,yCAAY;AACnC,oBAAoB,yCAAY;AAChC,uBAAuB,yCAAY;AACnC,wBAAwB,yCAAY;AACpC,kBAAkB,wEAAc;AAChC,yBAAyB,wEAAc;AACvC,uBAAuB,sEAAY;AACnC,wBAAwB,sEAAY;AACpC,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,+EAAqB;AACvB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B,wEAAc;AACxC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,wEAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,QAAQ,mEAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mEAAS;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH,oBAAoB,0CAAa;AACjC;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE,4DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAM;AACtB;AACA,2BAA2B,sEAAc;AACzC,8BAA8B,sEAAc;AAC5C;AACA;AACA,KAAK;AACL,kBAAkB,uDAAG;AACrB;AACA;AACA,4CAA4C,qDAAK;AACjD,8BAA8B,uDAAG,2HAA2H,uDAAG;AAC/J;AACA;;AAEA;AACA;AACA,yEAAyE,uDAAG;AAC5E,MAAM,gDAAkB;AACxB;AACA;AACA,kCAAkC,sEAAc;AAChD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,mBAAmB,wEAAc;AACjC,iCAAiC,yCAAY;AAC7C,2BAA2B,yCAAY;AACvC,6BAA6B,yCAAY;AACzC,EAAE,4CAAe;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAkB;AAC1B;AACA,SAAS;AACT,QAAQ,yBAAyB,sEAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,mBAAmB,0CAAa;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAkB;AAC5B;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,SAAS,0CAAa;AACtB;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,YAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,iEAAS;AAC9B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEslB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3+IjhB;AACtC;AACS;AACG;AACP;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,oEAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qEAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,uBAAuB,kDAAe;;AAEtC;AACA;AACA,KAAK,yLAAK;AACV;;AAEA;AACA,cAAc,yCAAY;AAC1B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,cAAc,yCAAY;AAC1B,QAAQ,IAAqC;AAC7C;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,SAAS,8CAAiB;AAC1B,wEAAwE,aAAa;AACrF;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,wBAAwB;AAC5B;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,yDAAK;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oBAAoB,yDAAK;AACzB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,WAAW;AACjC,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,eAAe,kDAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kDAAQ;AACnC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;;AAEmwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxhBnwB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEgV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChKhV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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EA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,qBAAM,gBAAgB,qBAAM,IAAI,qBAAM,sBAAsB,qBAAM;;AAE1F;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,GAAG;AACd,WAAW,OAAO;AAClB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,IAAI;AACJ,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,QAAQ,UAAU;AAC7B,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA,8BAA8B,mBAAmB;AACjD;AACA;AACA;AACA;AACA;AACA,+CAA+C,mBAAmB;AAClE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,WAAW;AACX;AACA,cAAc,QAAQ;AACtB,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,WAAW;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,aAAa,QAAQ,IAAI,QAAQ;AACjC;AACA;AACA;AACA,aAAa,QAAQ,IAAI,QAAQ;AACjC;AACA;AACA;AACA,WAAW,QAAQ,gBAAgB,IAAI,gBAAgB;AACvD;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,UAAU;AACvB;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA,YAAY,QAAQ,IAAI,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,GAAG;AAChB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACx7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB,qBAAM,gBAAgB,qBAAM,IAAI,qBAAM,sBAAsB,qBAAM;;AAE1F;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ,WAAW;AAC9B,WAAW,SAAS;AACpB;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,+CAA+C,iBAAiB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ,WAAW;AAC9B,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,mBAAmB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,KAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAO,CAAC,oBAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,oEAAoE;AACxE;AACA,IAAI,oBAAoB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,IAAI,qBAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,UAAU;AACV;AACA,IAAI,eAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,IAAI,qBAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,IAAI,wBAAwB;AAC5B;AACA;AACA,IAAI,+BAA+B;AACnC;AACA;AACA,IAAI,oBAAoB;AACxB;AACA;AACA,IAAI,qBAAqB;AACzB;AACA;AACA,IAAI,eAAe;AACnB;AACA;AACA;AACA;AACA,GAAG;;;;;;;;;;;;ACvaU;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AAOC;AACH;;AAEA,IAAI,KAAqC,EAAE;AAAA,EAK1C,CAAC;AACF,EAAE,mIAA0D;AAC5D;;;;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,KAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+CAA+C,6BAA6B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB,gDAAgD;AAChE,gBAAgB,aAAa;AAC7B;AACA;AACA,gCAAgC,kCAAkC,OAAO;AACzE;AACA,gGAAgG,SAAS,UAAU,sFAAsF,aAAa,UAAU,UAAU;AAC1O;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAO,CAAC,oBAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB;AACpB,IAAI,WAAW;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;;;;;;;;;;AC/VU;;AAEb,IAAI,KAAqC,EAAE;AAAA,EAE1C,CAAC;AACF,EAAE,+IAAkE;AACpE;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,4BAA4B;AACvC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,oBAAoB;AACjC;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;;AAEA;AACA,aAAa,QAAQ;AACrB,cAAc,SAAS;AACvB,cAAc,WAAW;AACzB;;AAEA;AACA,aAAa,QAAQ;AACrB,cAAc,uBAAuB,iDAAiD;AACtF;AACA;AACA,cAAc,4BAA4B;AAC1C,cAAc,SAAS;AACvB,cAAc,kBAAkB;AAChC;;AAEA;AACA,WAAW,WAAW;AACtB,WAAW,SAAS;AACpB,WAAW,kBAAkB;AAC7B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,SAAS;AACT;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS,YAAY;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sEAAsE;AACtE,+BAA+B;AAC/B;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF;AACvF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B,0DAA0D;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gCAAgC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,gCAAgC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEqE;AACrE;;;;;;;;;;;;;;;;;;;AC5kByE;AAIL;AAGpE,MAAM,qBAAqB,GAAG,CAAC,UAA+B,EAAE,EAAE,CAChE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,sDAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,+DAAqB,CAAC,UAAU,CAAC,CAAC;AAS9E,MAAM,QAAQ,GAAG,+DAAM,CAAgB,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7D,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,WAAW;CACnD,CAAC,CAAC;IACC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,4DAAG;MAClB,OAAO;;MAEP,sEAAiB,CAAC,GAAG,CAAC,qBAAqB,CAAC;GAC/C;CACF,CAAC;;;;;;;;;;;;;;;;;ACzByB;;;;;;;;;;;;;;;;;;;;ACKgB;AACyB;AAsB7D,MAAM,gBAAgB,GAAG,CAK9B,EACA,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,WAAW,EACX,YAAY,EACZ,OAAO,EACP,GAAG,UAAU,EACkD,EAAE,EAAE;IACnE,MAAM,EAAE,YAAY,EAAE,GAAG,UA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","sources":["webpack://@react-hive/honey-layout/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://@react-hive/honey-layout/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://@react-hive/honey-layout/./node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","webpack://@react-hive/honey-layout/./node_modules/@floating-ui/react/dist/floating-ui.react.mjs","webpack://@react-hive/honey-layout/./node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","webpack://@react-hive/honey-layout/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://@react-hive/honey-layout/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://@react-hive/honey-layout/./node_modules/@react-hive/honey-utils/dist/index.mjs","webpack://@react-hive/honey-layout/./node_modules/lodash.merge/index.js","webpack://@react-hive/honey-layout/./node_modules/lodash.throttle/index.js","webpack://@react-hive/honey-layout/./node_modules/react-dom/cjs/react-dom.development.js","webpack://@react-hive/honey-layout/./node_modules/react-dom/index.js","webpack://@react-hive/honey-layout/./node_modules/react/cjs/react-jsx-runtime.development.js","webpack://@react-hive/honey-layout/./node_modules/react/jsx-runtime.js","webpack://@react-hive/honey-layout/./node_modules/tabbable/dist/index.esm.js","webpack://@react-hive/honey-layout/./src/components/HoneyBox/HoneyBox.ts","webpack://@react-hive/honey-layout/./src/components/HoneyBox/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyContextMenu/HoneyContextMenu.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyContextMenu/HoneyContextMenu.types.ts","webpack://@react-hive/honey-layout/./src/components/HoneyContextMenu/HoneyContextMenuContent.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyContextMenu/HoneyContextMenuContentOption.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyContextMenu/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyFlex/HoneyFlex.ts","webpack://@react-hive/honey-layout/./src/components/HoneyFlex/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGrid/HoneyGrid.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyGrid/HoneyGridContext.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGrid/HoneyGridStyled.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGrid/hooks/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGrid/hooks/use-honey-grid-context.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGrid/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGridColumn/HoneyGridColumn.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyGridColumn/HoneyGridColumn.types.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGridColumn/HoneyGridColumnStyled.ts","webpack://@react-hive/honey-layout/./src/components/HoneyGridColumn/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyLazyContent/HoneyLazyContent.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyLazyContent/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyList/HoneyList.helpers.ts","webpack://@react-hive/honey-layout/./src/components/HoneyList/HoneyList.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyList/HoneyList.types.ts","webpack://@react-hive/honey-layout/./src/components/HoneyList/HoneyListStyled.ts","webpack://@react-hive/honey-layout/./src/components/HoneyList/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyOverlay.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopup.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopup.types.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopupContent.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopupContext.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopupPortal.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopupStyled.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/HoneyPopupTree.tsx","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/hooks/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/hooks/use-honey-popup-context.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/hooks/use-honey-popup-interactions.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/hooks/use-honey-popup.ts","webpack://@react-hive/honey-layout/./src/components/HoneyPopup/index.ts","webpack://@react-hive/honey-layout/./src/components/HoneyStatusContent.tsx","webpack://@react-hive/honey-layout/./src/components/index.ts","webpack://@react-hive/honey-layout/./src/constants.ts","webpack://@react-hive/honey-layout/./src/contexts/HoneyLayoutContext.ts","webpack://@react-hive/honey-layout/./src/contexts/index.ts","webpack://@react-hive/honey-layout/./src/effects.ts","webpack://@react-hive/honey-layout/./src/helpers/helpers.ts","webpack://@react-hive/honey-layout/./src/helpers/index.ts","webpack://@react-hive/honey-layout/./src/helpers/react.helpers.ts","webpack://@react-hive/honey-layout/./src/hooks/index.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-document-key-up-handler.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-drag.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-layout.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-media-query.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-on-change.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-overlay.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-raf-loop.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-resize.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-synthetic-scroll-x.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-synthetic-scroll-y.ts","webpack://@react-hive/honey-layout/./src/hooks/use-honey-synthetic-scroll.ts","webpack://@react-hive/honey-layout/./src/hooks/use-register-honey-overlay.ts","webpack://@react-hive/honey-layout/./src/providers/HoneyLayoutProvider.tsx","webpack://@react-hive/honey-layout/./src/providers/HoneyLayoutThemeOverride.tsx","webpack://@react-hive/honey-layout/./src/providers/hooks/index.ts","webpack://@react-hive/honey-layout/./src/providers/hooks/use-honey-overlays.ts","webpack://@react-hive/honey-layout/./src/providers/index.ts","webpack://@react-hive/honey-layout/./src/types/css.types.ts","webpack://@react-hive/honey-layout/./src/types/data.types.ts","webpack://@react-hive/honey-layout/./src/types/dom.types.ts","webpack://@react-hive/honey-layout/./src/types/index.ts","webpack://@react-hive/honey-layout/./src/types/state.types.ts","webpack://@react-hive/honey-layout/./src/types/utility.types.ts","webpack://@react-hive/honey-layout/./src/utils/data-utils.ts","webpack://@react-hive/honey-layout/./src/utils/feedback.ts","webpack://@react-hive/honey-layout/./src/utils/index.ts","webpack://@react-hive/honey-layout/external commonjs2 \"@react-hive/honey-style\"","webpack://@react-hive/honey-layout/external commonjs2 \"react\"","webpack://@react-hive/honey-layout/webpack/bootstrap","webpack://@react-hive/honey-layout/webpack/runtime/compat get default export","webpack://@react-hive/honey-layout/webpack/runtime/create fake namespace object","webpack://@react-hive/honey-layout/webpack/runtime/define property getters","webpack://@react-hive/honey-layout/webpack/runtime/global","webpack://@react-hive/honey-layout/webpack/runtime/hasOwnProperty shorthand","webpack://@react-hive/honey-layout/webpack/runtime/make namespace object","webpack://@react-hive/honey-layout/webpack/runtime/node module decorator","webpack://@react-hive/honey-layout/./src/index.ts"],"sourcesContent":["import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","import * as React from 'react';\nimport { useModernLayoutEffect, useEffectEvent, getMinListIndex, getMaxListIndex, createGridCellMap, isListIndexDisabled, getGridNavigatedIndex, getGridCellIndexOfCorner, getGridCellIndices, findNonDisabledListIndex, isIndexOutOfListBounds, useLatestRef, getDocument as getDocument$1, isMouseLikePointerType, contains as contains$1, isSafari, enableFocusInside, isOutsideEvent, getPreviousTabbable, getNextTabbable, disableFocusInside, isTypeableCombobox, getFloatingFocusElement, getTabbableOptions, getNodeAncestors, activeElement, getNodeChildren as getNodeChildren$1, stopEvent, getTarget as getTarget$1, isVirtualClick, isVirtualPointerEvent, getPlatform, isTypeableElement, isReactEvent, isRootElement, isEventTargetWithin, matchesFocusVisible, isMac, getDeepestNode, getUserAgent } from '@floating-ui/react/utils';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { getComputedStyle, isElement, isShadowRoot, getNodeName, isNode, isHTMLElement, getWindow, isLastTraversableNode, getParentNode, isWebKit } from '@floating-ui/utils/dom';\nimport { tabbable, isTabbable, focusable } from 'tabbable';\nimport * as ReactDOM from 'react-dom';\nimport { getOverflowAncestors, useFloating as useFloating$1, offset, detectOverflow } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\nimport { evaluate, max, round, min } from '@floating-ui/utils';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nfunction useMergeRefs(refs) {\n const cleanupRef = React.useRef(undefined);\n const refEffect = React.useCallback(instance => {\n const cleanups = refs.map(ref => {\n if (ref == null) {\n return;\n }\n if (typeof ref === 'function') {\n const refCallback = ref;\n const refCleanup = refCallback(instance);\n return typeof refCleanup === 'function' ? refCleanup : () => {\n refCallback(null);\n };\n }\n ref.current = instance;\n return () => {\n ref.current = null;\n };\n });\n return () => {\n cleanups.forEach(refCleanup => refCleanup == null ? void 0 : refCleanup());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = undefined;\n }\n if (value != null) {\n cleanupRef.current = refEffect(value);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n\nfunction sortByDocumentPosition(a, b) {\n const position = a.compareDocumentPosition(b);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n return 0;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n map: /*#__PURE__*/new Map(),\n elementsRef: {\n current: []\n }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(props) {\n const {\n children,\n elementsRef,\n labelsRef\n } = props;\n const [nodes, setNodes] = React.useState(() => new Set());\n const register = React.useCallback(node => {\n setNodes(prevSet => new Set(prevSet).add(node));\n }, []);\n const unregister = React.useCallback(node => {\n setNodes(prevSet => {\n const set = new Set(prevSet);\n set.delete(node);\n return set;\n });\n }, []);\n const map = React.useMemo(() => {\n const newMap = new Map();\n const sortedNodes = Array.from(nodes.keys()).sort(sortByDocumentPosition);\n sortedNodes.forEach((node, index) => {\n newMap.set(node, index);\n });\n return newMap;\n }, [nodes]);\n return /*#__PURE__*/jsx(FloatingListContext.Provider, {\n value: React.useMemo(() => ({\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n }), [register, unregister, map, elementsRef, labelsRef]),\n children: children\n });\n}\n/**\n * Used to register a list item and its index (DOM position) in the\n * `FloatingList`.\n * @see https://floating-ui.com/docs/FloatingList#uselistitem\n */\nfunction useListItem(props) {\n if (props === void 0) {\n props = {};\n }\n const {\n label\n } = props;\n const {\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n } = React.useContext(FloatingListContext);\n const [index, setIndex] = React.useState(null);\n const componentRef = React.useRef(null);\n const ref = React.useCallback(node => {\n componentRef.current = node;\n if (index !== null) {\n elementsRef.current[index] = node;\n if (labelsRef) {\n var _node$textContent;\n const isLabelDefined = label !== undefined;\n labelsRef.current[index] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n }\n }\n }, [index, elementsRef, labelsRef, label]);\n useModernLayoutEffect(() => {\n const node = componentRef.current;\n if (node) {\n register(node);\n return () => {\n unregister(node);\n };\n }\n }, [register, unregister]);\n useModernLayoutEffect(() => {\n const index = componentRef.current ? map.get(componentRef.current) : null;\n if (index != null) {\n setIndex(index);\n }\n }, [map]);\n return React.useMemo(() => ({\n ref,\n index: index == null ? -1 : index\n }), [index, ref]);\n}\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nconst ACTIVE_KEY = 'active';\nconst SELECTED_KEY = 'selected';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\n\nfunction renderJsx(render, computedProps) {\n if (typeof render === 'function') {\n return render(computedProps);\n }\n if (render) {\n return /*#__PURE__*/React.cloneElement(render, computedProps);\n }\n return /*#__PURE__*/jsx(\"div\", {\n ...computedProps\n });\n}\nconst CompositeContext = /*#__PURE__*/React.createContext({\n activeIndex: 0,\n onNavigate: () => {}\n});\nconst horizontalKeys = [ARROW_LEFT, ARROW_RIGHT];\nconst verticalKeys = [ARROW_UP, ARROW_DOWN];\nconst allKeys = [...horizontalKeys, ...verticalKeys];\n\n/**\n * Creates a single tab stop whose items are navigated by arrow keys, which\n * provides list navigation outside of floating element contexts.\n *\n * This is useful to enable navigation of a list of items that aren’t part of a\n * floating element. A menubar is an example of a composite, with each reference\n * element being an item.\n * @see https://floating-ui.com/docs/Composite\n */\nconst Composite = /*#__PURE__*/React.forwardRef(function Composite(props, forwardedRef) {\n const {\n render,\n orientation = 'both',\n loop = true,\n rtl = false,\n cols = 1,\n disabledIndices,\n activeIndex: externalActiveIndex,\n onNavigate: externalSetActiveIndex,\n itemSizes,\n dense = false,\n ...domProps\n } = props;\n const [internalActiveIndex, internalSetActiveIndex] = React.useState(0);\n const activeIndex = externalActiveIndex != null ? externalActiveIndex : internalActiveIndex;\n const onNavigate = useEffectEvent(externalSetActiveIndex != null ? externalSetActiveIndex : internalSetActiveIndex);\n const elementsRef = React.useRef([]);\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const contextValue = React.useMemo(() => ({\n activeIndex,\n onNavigate\n }), [activeIndex, onNavigate]);\n const isGrid = cols > 1;\n function handleKeyDown(event) {\n if (!allKeys.includes(event.key)) return;\n let nextIndex = activeIndex;\n const minIndex = getMinListIndex(elementsRef, disabledIndices);\n const maxIndex = getMaxListIndex(elementsRef, disabledIndices);\n const horizontalEndKey = rtl ? ARROW_LEFT : ARROW_RIGHT;\n const horizontalStartKey = rtl ? ARROW_RIGHT : ARROW_LEFT;\n if (isGrid) {\n const sizes = itemSizes || Array.from({\n length: elementsRef.current.length\n }, () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = createGridCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(elementsRef, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(elementsRef, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const maybeNextIndex = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex ? elementsRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loop,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || elementsRef.current.map((_, index) => isListIndexDisabled(elementsRef, index, disabledIndices) ? index : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getGridCellIndexOfCorner(activeIndex > maxIndex ? minIndex : activeIndex, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction we're\n // moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n event.key === ARROW_DOWN ? 'bl' : event.key === horizontalEndKey ? 'tr' : 'tl')\n })];\n if (maybeNextIndex != null) {\n nextIndex = maybeNextIndex;\n }\n }\n const toEndKeys = {\n horizontal: [horizontalEndKey],\n vertical: [ARROW_DOWN],\n both: [horizontalEndKey, ARROW_DOWN]\n }[orientation];\n const toStartKeys = {\n horizontal: [horizontalStartKey],\n vertical: [ARROW_UP],\n both: [horizontalStartKey, ARROW_UP]\n }[orientation];\n const preventedKeys = isGrid ? allKeys : {\n horizontal: horizontalKeys,\n vertical: verticalKeys,\n both: allKeys\n }[orientation];\n if (nextIndex === activeIndex && [...toEndKeys, ...toStartKeys].includes(event.key)) {\n if (loop && nextIndex === maxIndex && toEndKeys.includes(event.key)) {\n nextIndex = minIndex;\n } else if (loop && nextIndex === minIndex && toStartKeys.includes(event.key)) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledListIndex(elementsRef, {\n startingIndex: nextIndex,\n decrement: toStartKeys.includes(event.key),\n disabledIndices\n });\n }\n }\n if (nextIndex !== activeIndex && !isIndexOutOfListBounds(elementsRef, nextIndex)) {\n var _elementsRef$current$;\n event.stopPropagation();\n if (preventedKeys.includes(event.key)) {\n event.preventDefault();\n }\n onNavigate(nextIndex);\n (_elementsRef$current$ = elementsRef.current[nextIndex]) == null || _elementsRef$current$.focus();\n }\n }\n const computedProps = {\n ...domProps,\n ...renderElementProps,\n ref: forwardedRef,\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n onKeyDown(e) {\n domProps.onKeyDown == null || domProps.onKeyDown(e);\n renderElementProps.onKeyDown == null || renderElementProps.onKeyDown(e);\n handleKeyDown(e);\n }\n };\n return /*#__PURE__*/jsx(CompositeContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/jsx(FloatingList, {\n elementsRef: elementsRef,\n children: renderJsx(render, computedProps)\n })\n });\n});\n/**\n * @see https://floating-ui.com/docs/Composite\n */\nconst CompositeItem = /*#__PURE__*/React.forwardRef(function CompositeItem(props, forwardedRef) {\n const {\n render,\n ...domProps\n } = props;\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const {\n activeIndex,\n onNavigate\n } = React.useContext(CompositeContext);\n const {\n ref,\n index\n } = useListItem();\n const mergedRef = useMergeRefs([ref, forwardedRef, renderElementProps.ref]);\n const isActive = activeIndex === index;\n const computedProps = {\n ...domProps,\n ...renderElementProps,\n ref: mergedRef,\n tabIndex: isActive ? 0 : -1,\n 'data-active': isActive ? '' : undefined,\n onFocus(e) {\n domProps.onFocus == null || domProps.onFocus(e);\n renderElementProps.onFocus == null || renderElementProps.onFocus(e);\n onNavigate(index);\n }\n };\n return renderJsx(render, computedProps);\n});\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n ...React\n};\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => // Ensure the id is unique with multiple independent versions of Floating UI\n// on <React 18\n\"floating-ui-\" + Math.random().toString(36).slice(2, 6) + count++;\nfunction useFloatingId() {\n const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n useModernLayoutEffect(() => {\n if (id == null) {\n setId(genId());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n React.useEffect(() => {\n serverHandoffComplete = true;\n }, []);\n return id;\n}\nconst useReactId = SafeReact.useId;\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/react-utils#useid\n */\nconst useId = useReactId || useFloatingId;\n\nlet devMessageSet;\nif (process.env.NODE_ENV !== \"production\") {\n devMessageSet = /*#__PURE__*/new Set();\n}\nfunction warn() {\n var _devMessageSet;\n for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n const message = \"Floating UI: \" + messages.join(' ');\n if (!((_devMessageSet = devMessageSet) != null && _devMessageSet.has(message))) {\n var _devMessageSet2;\n (_devMessageSet2 = devMessageSet) == null || _devMessageSet2.add(message);\n console.warn(message);\n }\n}\nfunction error() {\n var _devMessageSet3;\n for (var _len2 = arguments.length, messages = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n messages[_key2] = arguments[_key2];\n }\n const message = \"Floating UI: \" + messages.join(' ');\n if (!((_devMessageSet3 = devMessageSet) != null && _devMessageSet3.has(message))) {\n var _devMessageSet4;\n (_devMessageSet4 = devMessageSet) == null || _devMessageSet4.add(message);\n console.error(message);\n }\n}\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(props, ref) {\n const {\n context: {\n placement,\n elements: {\n floating\n },\n middlewareData: {\n arrow,\n shift\n }\n },\n width = 14,\n height = 7,\n tipRadius = 0,\n strokeWidth = 0,\n staticOffset,\n stroke,\n d,\n style: {\n transform,\n ...restStyle\n } = {},\n ...rest\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (!ref) {\n warn('The `ref` prop is required for `FloatingArrow`.');\n }\n }\n const clipPathId = useId();\n const [isRTL, setIsRTL] = React.useState(false);\n\n // https://github.com/floating-ui/floating-ui/issues/2932\n useModernLayoutEffect(() => {\n if (!floating) return;\n const isRTL = getComputedStyle(floating).direction === 'rtl';\n if (isRTL) {\n setIsRTL(true);\n }\n }, [floating]);\n if (!floating) {\n return null;\n }\n const [side, alignment] = placement.split('-');\n const isVerticalSide = side === 'top' || side === 'bottom';\n let computedStaticOffset = staticOffset;\n if (isVerticalSide && shift != null && shift.x || !isVerticalSide && shift != null && shift.y) {\n computedStaticOffset = null;\n }\n\n // Strokes must be double the border width, this ensures the stroke's width\n // works as you'd expect.\n const computedStrokeWidth = strokeWidth * 2;\n const halfStrokeWidth = computedStrokeWidth / 2;\n const svgX = width / 2 * (tipRadius / -8 + 1);\n const svgY = height / 2 * tipRadius / 4;\n const isCustomShape = !!d;\n const yOffsetProp = computedStaticOffset && alignment === 'end' ? 'bottom' : 'top';\n let xOffsetProp = computedStaticOffset && alignment === 'end' ? 'right' : 'left';\n if (computedStaticOffset && isRTL) {\n xOffsetProp = alignment === 'end' ? 'left' : 'right';\n }\n const arrowX = (arrow == null ? void 0 : arrow.x) != null ? computedStaticOffset || arrow.x : '';\n const arrowY = (arrow == null ? void 0 : arrow.y) != null ? computedStaticOffset || arrow.y : '';\n const dValue = d || 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n const rotation = {\n top: isCustomShape ? 'rotate(180deg)' : '',\n left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n bottom: isCustomShape ? '' : 'rotate(180deg)',\n right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n }[side];\n return /*#__PURE__*/jsxs(\"svg\", {\n ...rest,\n \"aria-hidden\": true,\n ref: ref,\n width: isCustomShape ? width : width + computedStrokeWidth,\n height: width,\n viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n [xOffsetProp]: arrowX,\n [yOffsetProp]: arrowY,\n [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + computedStrokeWidth / 2 + \"px)\",\n transform: [rotation, transform].filter(t => !!t).join(' '),\n ...restStyle\n },\n children: [computedStrokeWidth > 0 && /*#__PURE__*/jsx(\"path\", {\n clipPath: \"url(#\" + clipPathId + \")\",\n fill: \"none\",\n stroke: stroke\n // Account for the stroke on the fill path rendered below.\n ,\n strokeWidth: computedStrokeWidth + (d ? 0 : 1),\n d: dValue\n }), /*#__PURE__*/jsx(\"path\", {\n stroke: computedStrokeWidth && !d ? rest.fill : 'none',\n d: dValue\n }), /*#__PURE__*/jsx(\"clipPath\", {\n id: clipPathId,\n children: /*#__PURE__*/jsx(\"rect\", {\n x: -halfStrokeWidth,\n y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n width: width + computedStrokeWidth,\n height: width\n })\n })]\n });\n});\n\nfunction createEventEmitter() {\n const map = new Map();\n return {\n emit(event, data) {\n var _map$get;\n (_map$get = map.get(event)) == null || _map$get.forEach(listener => listener(data));\n },\n on(event, listener) {\n if (!map.has(event)) {\n map.set(event, new Set());\n }\n map.get(event).add(listener);\n },\n off(event, listener) {\n var _map$get2;\n (_map$get2 = map.get(event)) == null || _map$get2.delete(listener);\n }\n };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the parent node id for nested floating elements, if available.\n * Returns `null` for top-level floating elements.\n */\nconst useFloatingParentNodeId = () => {\n var _React$useContext;\n return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\n\n/**\n * Returns the nearest floating tree context, if available.\n */\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the `FloatingTree`, returning its id.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction useFloatingNodeId(customParentId) {\n const id = useId();\n const tree = useFloatingTree();\n const reactParentId = useFloatingParentNodeId();\n const parentId = customParentId || reactParentId;\n useModernLayoutEffect(() => {\n if (!id) return;\n const node = {\n id,\n parentId\n };\n tree == null || tree.addNode(node);\n return () => {\n tree == null || tree.removeNode(node);\n };\n }, [tree, id, parentId]);\n return id;\n}\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(props) {\n const {\n children,\n id\n } = props;\n const parentId = useFloatingParentNodeId();\n return /*#__PURE__*/jsx(FloatingNodeContext.Provider, {\n value: React.useMemo(() => ({\n id,\n parentId\n }), [id, parentId]),\n children: children\n });\n}\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM.\n * This is not necessary in all cases, except when there must be explicit communication between parent and child floating elements. It is necessary for:\n * - The `bubbles` option in the `useDismiss()` Hook\n * - Nested virtual list navigation\n * - Nested floating elements that each open on hover\n * - Custom communication between parent and child floating elements\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(props) {\n const {\n children\n } = props;\n const nodesRef = React.useRef([]);\n const addNode = React.useCallback(node => {\n nodesRef.current = [...nodesRef.current, node];\n }, []);\n const removeNode = React.useCallback(node => {\n nodesRef.current = nodesRef.current.filter(n => n !== node);\n }, []);\n const [events] = React.useState(() => createEventEmitter());\n return /*#__PURE__*/jsx(FloatingTreeContext.Provider, {\n value: React.useMemo(() => ({\n nodesRef,\n addNode,\n removeNode,\n events\n }), [addNode, removeNode, events]),\n children: children\n });\n}\n\nfunction createAttribute(name) {\n return \"data-floating-ui-\" + name;\n}\n\nfunction clearTimeoutIfSet(timeoutRef) {\n if (timeoutRef.current !== -1) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = -1;\n }\n}\n\nconst safePolygonIdentifier = /*#__PURE__*/createAttribute('safe-polygon');\nfunction getDelay(value, prop, pointerType) {\n if (pointerType && !isMouseLikePointerType(pointerType)) {\n return 0;\n }\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'function') {\n const result = value();\n if (typeof result === 'number') {\n return result;\n }\n return result == null ? void 0 : result[prop];\n }\n return value == null ? void 0 : value[prop];\n}\nfunction getRestMs(value) {\n if (typeof value === 'function') {\n return value();\n }\n return value;\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n events,\n elements\n } = context;\n const {\n enabled = true,\n delay = 0,\n handleClose = null,\n mouseOnly = false,\n restMs = 0,\n move = true\n } = props;\n const tree = useFloatingTree();\n const parentId = useFloatingParentNodeId();\n const handleCloseRef = useLatestRef(handleClose);\n const delayRef = useLatestRef(delay);\n const openRef = useLatestRef(open);\n const restMsRef = useLatestRef(restMs);\n const pointerTypeRef = React.useRef();\n const timeoutRef = React.useRef(-1);\n const handlerRef = React.useRef();\n const restTimeoutRef = React.useRef(-1);\n const blockMouseMoveRef = React.useRef(true);\n const performedPointerEventsMutationRef = React.useRef(false);\n const unbindMouseMoveRef = React.useRef(() => {});\n const restTimeoutPendingRef = React.useRef(false);\n const isHoverOpen = useEffectEvent(() => {\n var _dataRef$current$open;\n const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n });\n\n // When closing before opening, clear the delay timeouts to cancel it\n // from showing.\n React.useEffect(() => {\n if (!enabled) return;\n function onOpenChange(_ref) {\n let {\n open\n } = _ref;\n if (!open) {\n clearTimeoutIfSet(timeoutRef);\n clearTimeoutIfSet(restTimeoutRef);\n blockMouseMoveRef.current = true;\n restTimeoutPendingRef.current = false;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [enabled, events]);\n React.useEffect(() => {\n if (!enabled) return;\n if (!handleCloseRef.current) return;\n if (!open) return;\n function onLeave(event) {\n if (isHoverOpen()) {\n onOpenChange(false, event, 'hover');\n }\n }\n const html = getDocument$1(elements.floating).documentElement;\n html.addEventListener('mouseleave', onLeave);\n return () => {\n html.removeEventListener('mouseleave', onLeave);\n };\n }, [elements.floating, open, onOpenChange, enabled, handleCloseRef, isHoverOpen]);\n const closeWithDelay = React.useCallback(function (event, runElseBranch, reason) {\n if (runElseBranch === void 0) {\n runElseBranch = true;\n }\n if (reason === void 0) {\n reason = 'hover';\n }\n const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n if (closeDelay && !handlerRef.current) {\n clearTimeoutIfSet(timeoutRef);\n timeoutRef.current = window.setTimeout(() => onOpenChange(false, event, reason), closeDelay);\n } else if (runElseBranch) {\n clearTimeoutIfSet(timeoutRef);\n onOpenChange(false, event, reason);\n }\n }, [delayRef, onOpenChange]);\n const cleanupMouseMoveHandler = useEffectEvent(() => {\n unbindMouseMoveRef.current();\n handlerRef.current = undefined;\n });\n const clearPointerEvents = useEffectEvent(() => {\n if (performedPointerEventsMutationRef.current) {\n const body = getDocument$1(elements.floating).body;\n body.style.pointerEvents = '';\n body.removeAttribute(safePolygonIdentifier);\n performedPointerEventsMutationRef.current = false;\n }\n });\n const isClickLikeOpenEvent = useEffectEvent(() => {\n return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n });\n\n // Registering the mouse events on the reference directly to bypass React's\n // delegation system. If the cursor was on a disabled element and then entered\n // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n React.useEffect(() => {\n if (!enabled) return;\n function onReferenceMouseEnter(event) {\n clearTimeoutIfSet(timeoutRef);\n blockMouseMoveRef.current = false;\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || getRestMs(restMsRef.current) > 0 && !getDelay(delayRef.current, 'open')) {\n return;\n }\n const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n if (openDelay) {\n timeoutRef.current = window.setTimeout(() => {\n if (!openRef.current) {\n onOpenChange(true, event, 'hover');\n }\n }, openDelay);\n } else if (!open) {\n onOpenChange(true, event, 'hover');\n }\n }\n function onReferenceMouseLeave(event) {\n if (isClickLikeOpenEvent()) {\n clearPointerEvents();\n return;\n }\n unbindMouseMoveRef.current();\n const doc = getDocument$1(elements.floating);\n clearTimeoutIfSet(restTimeoutRef);\n restTimeoutPendingRef.current = false;\n if (handleCloseRef.current && dataRef.current.floatingContext) {\n // Prevent clearing `onScrollMouseLeave` timeout.\n if (!open) {\n clearTimeoutIfSet(timeoutRef);\n }\n handlerRef.current = handleCloseRef.current({\n ...dataRef.current.floatingContext,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event, true, 'safe-polygon');\n }\n }\n });\n const handler = handlerRef.current;\n doc.addEventListener('mousemove', handler);\n unbindMouseMoveRef.current = () => {\n doc.removeEventListener('mousemove', handler);\n };\n return;\n }\n\n // Allow interactivity without `safePolygon` on touch devices. With a\n // pointer, a short close delay is an alternative, so it should work\n // consistently.\n const shouldClose = pointerTypeRef.current === 'touch' ? !contains$1(elements.floating, event.relatedTarget) : true;\n if (shouldClose) {\n closeWithDelay(event);\n }\n }\n\n // Ensure the floating element closes after scrolling even if the pointer\n // did not move.\n // https://github.com/floating-ui/floating-ui/discussions/1692\n function onScrollMouseLeave(event) {\n if (isClickLikeOpenEvent()) return;\n if (!dataRef.current.floatingContext) return;\n handleCloseRef.current == null || handleCloseRef.current({\n ...dataRef.current.floatingContext,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event);\n }\n }\n })(event);\n }\n function onFloatingMouseEnter() {\n clearTimeoutIfSet(timeoutRef);\n }\n function onFloatingMouseLeave(event) {\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event, false);\n }\n }\n if (isElement(elements.domReference)) {\n const reference = elements.domReference;\n const floating = elements.floating;\n if (open) {\n reference.addEventListener('mouseleave', onScrollMouseLeave);\n }\n if (move) {\n reference.addEventListener('mousemove', onReferenceMouseEnter, {\n once: true\n });\n }\n reference.addEventListener('mouseenter', onReferenceMouseEnter);\n reference.addEventListener('mouseleave', onReferenceMouseLeave);\n if (floating) {\n floating.addEventListener('mouseleave', onScrollMouseLeave);\n floating.addEventListener('mouseenter', onFloatingMouseEnter);\n floating.addEventListener('mouseleave', onFloatingMouseLeave);\n }\n return () => {\n if (open) {\n reference.removeEventListener('mouseleave', onScrollMouseLeave);\n }\n if (move) {\n reference.removeEventListener('mousemove', onReferenceMouseEnter);\n }\n reference.removeEventListener('mouseenter', onReferenceMouseEnter);\n reference.removeEventListener('mouseleave', onReferenceMouseLeave);\n if (floating) {\n floating.removeEventListener('mouseleave', onScrollMouseLeave);\n floating.removeEventListener('mouseenter', onFloatingMouseEnter);\n floating.removeEventListener('mouseleave', onFloatingMouseLeave);\n }\n };\n }\n }, [elements, enabled, context, mouseOnly, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, openRef, tree, delayRef, handleCloseRef, dataRef, isClickLikeOpenEvent, restMsRef]);\n\n // Block pointer-events of every element other than the reference and floating\n // while the floating element is open and has a `handleClose` handler. Also\n // handles nested floating elements.\n // https://github.com/floating-ui/floating-ui/issues/1722\n useModernLayoutEffect(() => {\n var _handleCloseRef$curre;\n if (!enabled) return;\n if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && (_handleCloseRef$curre = _handleCloseRef$curre.__options) != null && _handleCloseRef$curre.blockPointerEvents && isHoverOpen()) {\n performedPointerEventsMutationRef.current = true;\n const floatingEl = elements.floating;\n if (isElement(elements.domReference) && floatingEl) {\n var _tree$nodesRef$curren;\n const body = getDocument$1(elements.floating).body;\n body.setAttribute(safePolygonIdentifier, '');\n const ref = elements.domReference;\n const parentFloating = tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren.elements.floating;\n if (parentFloating) {\n parentFloating.style.pointerEvents = '';\n }\n body.style.pointerEvents = 'none';\n ref.style.pointerEvents = 'auto';\n floatingEl.style.pointerEvents = 'auto';\n return () => {\n body.style.pointerEvents = '';\n ref.style.pointerEvents = '';\n floatingEl.style.pointerEvents = '';\n };\n }\n }\n }, [enabled, open, parentId, elements, tree, handleCloseRef, isHoverOpen]);\n useModernLayoutEffect(() => {\n if (!open) {\n pointerTypeRef.current = undefined;\n restTimeoutPendingRef.current = false;\n cleanupMouseMoveHandler();\n clearPointerEvents();\n }\n }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n React.useEffect(() => {\n return () => {\n cleanupMouseMoveHandler();\n clearTimeoutIfSet(timeoutRef);\n clearTimeoutIfSet(restTimeoutRef);\n clearPointerEvents();\n };\n }, [enabled, elements.domReference, cleanupMouseMoveHandler, clearPointerEvents]);\n const reference = React.useMemo(() => {\n function setPointerRef(event) {\n pointerTypeRef.current = event.pointerType;\n }\n return {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n onMouseMove(event) {\n const {\n nativeEvent\n } = event;\n function handleMouseMove() {\n if (!blockMouseMoveRef.current && !openRef.current) {\n onOpenChange(true, nativeEvent, 'hover');\n }\n }\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) {\n return;\n }\n if (open || getRestMs(restMsRef.current) === 0) {\n return;\n }\n\n // Ignore insignificant movements to account for tremors.\n if (restTimeoutPendingRef.current && event.movementX ** 2 + event.movementY ** 2 < 2) {\n return;\n }\n clearTimeoutIfSet(restTimeoutRef);\n if (pointerTypeRef.current === 'touch') {\n handleMouseMove();\n } else {\n restTimeoutPendingRef.current = true;\n restTimeoutRef.current = window.setTimeout(handleMouseMove, getRestMs(restMsRef.current));\n }\n }\n };\n }, [mouseOnly, onOpenChange, open, openRef, restMsRef]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nconst NOOP = () => {};\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n delay: 0,\n initialDelay: 0,\n timeoutMs: 0,\n currentId: null,\n setCurrentId: NOOP,\n setState: NOOP,\n isInstantPhase: false\n});\n\n/**\n * @deprecated\n * Use the return value of `useDelayGroup()` instead.\n */\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction FloatingDelayGroup(props) {\n const {\n children,\n delay,\n timeoutMs = 0\n } = props;\n const [state, setState] = React.useReducer((prev, next) => ({\n ...prev,\n ...next\n }), {\n delay,\n timeoutMs,\n initialDelay: delay,\n currentId: null,\n isInstantPhase: false\n });\n const initialCurrentIdRef = React.useRef(null);\n const setCurrentId = React.useCallback(currentId => {\n setState({\n currentId\n });\n }, []);\n useModernLayoutEffect(() => {\n if (state.currentId) {\n if (initialCurrentIdRef.current === null) {\n initialCurrentIdRef.current = state.currentId;\n } else if (!state.isInstantPhase) {\n setState({\n isInstantPhase: true\n });\n }\n } else {\n if (state.isInstantPhase) {\n setState({\n isInstantPhase: false\n });\n }\n initialCurrentIdRef.current = null;\n }\n }, [state.currentId, state.isInstantPhase]);\n return /*#__PURE__*/jsx(FloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n ...state,\n setState,\n setCurrentId\n }), [state, setCurrentId]),\n children: children\n });\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `FloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useDelayGroup(context, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n open,\n onOpenChange,\n floatingId\n } = context;\n const {\n id: optionId,\n enabled = true\n } = options;\n const id = optionId != null ? optionId : floatingId;\n const groupContext = useDelayGroupContext();\n const {\n currentId,\n setCurrentId,\n initialDelay,\n setState,\n timeoutMs\n } = groupContext;\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (!currentId) return;\n setState({\n delay: {\n open: 1,\n close: getDelay(initialDelay, 'close')\n }\n });\n if (currentId !== id) {\n onOpenChange(false);\n }\n }, [enabled, id, onOpenChange, setState, currentId, initialDelay]);\n useModernLayoutEffect(() => {\n function unset() {\n onOpenChange(false);\n setState({\n delay: initialDelay,\n currentId: null\n });\n }\n if (!enabled) return;\n if (!currentId) return;\n if (!open && currentId === id) {\n if (timeoutMs) {\n const timeout = window.setTimeout(unset, timeoutMs);\n return () => {\n clearTimeout(timeout);\n };\n }\n unset();\n }\n }, [enabled, open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (setCurrentId === NOOP || !open) return;\n setCurrentId(id);\n }, [enabled, open, setCurrentId, id]);\n return groupContext;\n}\n\nconst NextFloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n hasProvider: false,\n timeoutMs: 0,\n delayRef: {\n current: 0\n },\n initialDelayRef: {\n current: 0\n },\n timeoutIdRef: {\n current: -1\n },\n currentIdRef: {\n current: null\n },\n currentContextRef: {\n current: null\n }\n});\n/**\n * Experimental next version of `FloatingDelayGroup` to become the default\n * in the future. This component is not yet stable.\n * Provides context for a group of floating elements that should share a\n * `delay`. Unlike `FloatingDelayGroup`, `useNextDelayGroup` with this\n * component does not cause a re-render of unrelated consumers of the\n * context when the delay changes.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction NextFloatingDelayGroup(props) {\n const {\n children,\n delay,\n timeoutMs = 0\n } = props;\n const delayRef = React.useRef(delay);\n const initialDelayRef = React.useRef(delay);\n const currentIdRef = React.useRef(null);\n const currentContextRef = React.useRef(null);\n const timeoutIdRef = React.useRef(-1);\n return /*#__PURE__*/jsx(NextFloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n hasProvider: true,\n delayRef,\n initialDelayRef,\n currentIdRef,\n timeoutMs,\n currentContextRef,\n timeoutIdRef\n }), [timeoutMs]),\n children: children\n });\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `NextFloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useNextDelayGroup(context, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n open,\n onOpenChange,\n floatingId\n } = context;\n const {\n enabled = true\n } = options;\n const groupContext = React.useContext(NextFloatingDelayGroupContext);\n const {\n currentIdRef,\n delayRef,\n timeoutMs,\n initialDelayRef,\n currentContextRef,\n hasProvider,\n timeoutIdRef\n } = groupContext;\n const [isInstantPhase, setIsInstantPhase] = React.useState(false);\n useModernLayoutEffect(() => {\n function unset() {\n var _currentContextRef$cu;\n setIsInstantPhase(false);\n (_currentContextRef$cu = currentContextRef.current) == null || _currentContextRef$cu.setIsInstantPhase(false);\n currentIdRef.current = null;\n currentContextRef.current = null;\n delayRef.current = initialDelayRef.current;\n }\n if (!enabled) return;\n if (!currentIdRef.current) return;\n if (!open && currentIdRef.current === floatingId) {\n setIsInstantPhase(false);\n if (timeoutMs) {\n timeoutIdRef.current = window.setTimeout(unset, timeoutMs);\n return () => {\n clearTimeout(timeoutIdRef.current);\n };\n }\n unset();\n }\n }, [enabled, open, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeoutIdRef]);\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (!open) return;\n const prevContext = currentContextRef.current;\n const prevId = currentIdRef.current;\n currentContextRef.current = {\n onOpenChange,\n setIsInstantPhase\n };\n currentIdRef.current = floatingId;\n delayRef.current = {\n open: 0,\n close: getDelay(initialDelayRef.current, 'close')\n };\n if (prevId !== null && prevId !== floatingId) {\n clearTimeoutIfSet(timeoutIdRef);\n setIsInstantPhase(true);\n prevContext == null || prevContext.setIsInstantPhase(true);\n prevContext == null || prevContext.onOpenChange(false);\n } else {\n setIsInstantPhase(false);\n prevContext == null || prevContext.setIsInstantPhase(false);\n }\n }, [enabled, open, floatingId, onOpenChange, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeoutIdRef]);\n useModernLayoutEffect(() => {\n return () => {\n currentContextRef.current = null;\n };\n }, [currentContextRef]);\n return React.useMemo(() => ({\n hasProvider,\n delayRef,\n isInstantPhase\n }), [hasProvider, delayRef, isInstantPhase]);\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n preventScroll = false,\n cancelPrevious = true,\n sync = false\n } = options;\n cancelPrevious && cancelAnimationFrame(rafId);\n const exec = () => el == null ? void 0 : el.focus({\n preventScroll\n });\n if (sync) {\n exec();\n } else {\n rafId = requestAnimationFrame(exec);\n }\n}\n\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\n\n// Modified to add conditional `aria-hidden` support:\n// https://github.com/theKashey/aria-hidden/blob/9220c8f4a4fd35f63bee5510a9f41a37264382d4/src/index.ts\nconst counters = {\n inert: /*#__PURE__*/new WeakMap(),\n 'aria-hidden': /*#__PURE__*/new WeakMap(),\n none: /*#__PURE__*/new WeakMap()\n};\nfunction getCounterMap(control) {\n if (control === 'inert') return counters.inert;\n if (control === 'aria-hidden') return counters['aria-hidden'];\n return counters.none;\n}\nlet uncontrolledElementsSet = /*#__PURE__*/new WeakSet();\nlet markerMap = {};\nlet lockCount$1 = 0;\nconst supportsInert = () => typeof HTMLElement !== 'undefined' && 'inert' in HTMLElement.prototype;\nconst unwrapHost = node => node && (node.host || unwrapHost(node.parentNode));\nconst correctElements = (parent, targets) => targets.map(target => {\n if (parent.contains(target)) {\n return target;\n }\n const correctedTarget = unwrapHost(target);\n if (parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n return null;\n}).filter(x => x != null);\nfunction applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert) {\n const markerName = 'data-floating-ui-inert';\n const controlAttribute = inert ? 'inert' : ariaHidden ? 'aria-hidden' : null;\n const avoidElements = correctElements(body, uncorrectedAvoidElements);\n const elementsToKeep = new Set();\n const elementsToStop = new Set(avoidElements);\n const hiddenElements = [];\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n const markerCounter = markerMap[markerName];\n avoidElements.forEach(keep);\n deep(body);\n elementsToKeep.clear();\n function keep(el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n el.parentNode && keep(el.parentNode);\n }\n function deep(parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n [].forEach.call(parent.children, node => {\n if (getNodeName(node) === 'script') return;\n if (elementsToKeep.has(node)) {\n deep(node);\n } else {\n const attr = controlAttribute ? node.getAttribute(controlAttribute) : null;\n const alreadyHidden = attr !== null && attr !== 'false';\n const counterMap = getCounterMap(controlAttribute);\n const counterValue = (counterMap.get(node) || 0) + 1;\n const markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenElements.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledElementsSet.add(node);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, '');\n }\n if (!alreadyHidden && controlAttribute) {\n node.setAttribute(controlAttribute, controlAttribute === 'inert' ? '' : 'true');\n }\n }\n });\n }\n lockCount$1++;\n return () => {\n hiddenElements.forEach(element => {\n const counterMap = getCounterMap(controlAttribute);\n const currentCounterValue = counterMap.get(element) || 0;\n const counterValue = currentCounterValue - 1;\n const markerValue = (markerCounter.get(element) || 0) - 1;\n counterMap.set(element, counterValue);\n markerCounter.set(element, markerValue);\n if (!counterValue) {\n if (!uncontrolledElementsSet.has(element) && controlAttribute) {\n element.removeAttribute(controlAttribute);\n }\n uncontrolledElementsSet.delete(element);\n }\n if (!markerValue) {\n element.removeAttribute(markerName);\n }\n });\n lockCount$1--;\n if (!lockCount$1) {\n counters.inert = new WeakMap();\n counters['aria-hidden'] = new WeakMap();\n counters.none = new WeakMap();\n uncontrolledElementsSet = new WeakSet();\n markerMap = {};\n }\n };\n}\nfunction markOthers(avoidElements, ariaHidden, inert) {\n if (ariaHidden === void 0) {\n ariaHidden = false;\n }\n if (inert === void 0) {\n inert = false;\n }\n const body = getDocument(avoidElements[0]).body;\n return applyAttributeToOthers(avoidElements.concat(Array.from(body.querySelectorAll('[aria-live],[role=\"status\"],output'))), body, ariaHidden, inert);\n}\n\nconst HIDDEN_STYLES = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'fixed',\n whiteSpace: 'nowrap',\n width: '1px',\n top: 0,\n left: 0\n};\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n const [role, setRole] = React.useState();\n useModernLayoutEffect(() => {\n if (isSafari()) {\n // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n // on VoiceOver does trigger the onFocus event, so we can use the focus\n // trap element. On Safari, only buttons trigger the onFocus event.\n // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n // button role.\n setRole('button');\n }\n }, []);\n const restProps = {\n ref,\n tabIndex: 0,\n // Role is only for VoiceOver\n role,\n 'aria-hidden': role ? undefined : true,\n [createAttribute('focus-guard')]: '',\n style: HIDDEN_STYLES\n };\n return /*#__PURE__*/jsx(\"span\", {\n ...props,\n ...restProps\n });\n});\n\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nconst attr = /*#__PURE__*/createAttribute('portal');\n/**\n * @see https://floating-ui.com/docs/FloatingPortal#usefloatingportalnode\n */\nfunction useFloatingPortalNode(props) {\n if (props === void 0) {\n props = {};\n }\n const {\n id,\n root\n } = props;\n const uniqueId = useId();\n const portalContext = usePortalContext();\n const [portalNode, setPortalNode] = React.useState(null);\n const portalNodeRef = React.useRef(null);\n useModernLayoutEffect(() => {\n return () => {\n portalNode == null || portalNode.remove();\n // Allow the subsequent layout effects to create a new node on updates.\n // The portal node will still be cleaned up on unmount.\n // https://github.com/floating-ui/floating-ui/issues/2454\n queueMicrotask(() => {\n portalNodeRef.current = null;\n });\n };\n }, [portalNode]);\n useModernLayoutEffect(() => {\n // Wait for the uniqueId to be generated before creating the portal node in\n // React <18 (using `useFloatingId` instead of the native `useId`).\n // https://github.com/floating-ui/floating-ui/issues/2778\n if (!uniqueId) return;\n if (portalNodeRef.current) return;\n const existingIdRoot = id ? document.getElementById(id) : null;\n if (!existingIdRoot) return;\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n existingIdRoot.appendChild(subRoot);\n portalNodeRef.current = subRoot;\n setPortalNode(subRoot);\n }, [id, uniqueId]);\n useModernLayoutEffect(() => {\n // Wait for the root to exist before creating the portal node. The root must\n // be stored in state, not a ref, for this to work reactively.\n if (root === null) return;\n if (!uniqueId) return;\n if (portalNodeRef.current) return;\n let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n if (container && !isNode(container)) container = container.current;\n container = container || document.body;\n let idWrapper = null;\n if (id) {\n idWrapper = document.createElement('div');\n idWrapper.id = id;\n container.appendChild(idWrapper);\n }\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n container = idWrapper || container;\n container.appendChild(subRoot);\n portalNodeRef.current = subRoot;\n setPortalNode(subRoot);\n }, [id, root, uniqueId, portalContext]);\n return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * This is necessary to ensure the floating element can appear outside any\n * potential parent containers that cause clipping (such as `overflow: hidden`),\n * while retaining its location in the React tree.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(props) {\n const {\n children,\n id,\n root,\n preserveTabOrder = true\n } = props;\n const portalNode = useFloatingPortalNode({\n id,\n root\n });\n const [focusManagerState, setFocusManagerState] = React.useState(null);\n const beforeOutsideRef = React.useRef(null);\n const afterOutsideRef = React.useRef(null);\n const beforeInsideRef = React.useRef(null);\n const afterInsideRef = React.useRef(null);\n const modal = focusManagerState == null ? void 0 : focusManagerState.modal;\n const open = focusManagerState == null ? void 0 : focusManagerState.open;\n const shouldRenderGuards =\n // The FocusManager and therefore floating element are currently open/\n // rendered.\n !!focusManagerState &&\n // Guards are only for non-modal focus management.\n !focusManagerState.modal &&\n // Don't render if unmount is transitioning.\n focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n React.useEffect(() => {\n if (!portalNode || !preserveTabOrder || modal) {\n return;\n }\n\n // Make sure elements inside the portal element are tabbable only when the\n // portal has already been focused, either by tabbing into a focus trap\n // element outside or using the mouse.\n function onFocus(event) {\n if (portalNode && isOutsideEvent(event)) {\n const focusing = event.type === 'focusin';\n const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n manageFocus(portalNode);\n }\n }\n // Listen to the event on the capture phase so they run before the focus\n // trap elements onFocus prop is called.\n portalNode.addEventListener('focusin', onFocus, true);\n portalNode.addEventListener('focusout', onFocus, true);\n return () => {\n portalNode.removeEventListener('focusin', onFocus, true);\n portalNode.removeEventListener('focusout', onFocus, true);\n };\n }, [portalNode, preserveTabOrder, modal]);\n React.useEffect(() => {\n if (!portalNode) return;\n if (open) return;\n enableFocusInside(portalNode);\n }, [open, portalNode]);\n return /*#__PURE__*/jsxs(PortalContext.Provider, {\n value: React.useMemo(() => ({\n preserveTabOrder,\n beforeOutsideRef,\n afterOutsideRef,\n beforeInsideRef,\n afterInsideRef,\n portalNode,\n setFocusManagerState\n }), [preserveTabOrder, portalNode]),\n children: [shouldRenderGuards && portalNode && /*#__PURE__*/jsx(FocusGuard, {\n \"data-type\": \"outside\",\n ref: beforeOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _beforeInsideRef$curr;\n (_beforeInsideRef$curr = beforeInsideRef.current) == null || _beforeInsideRef$curr.focus();\n } else {\n const domReference = focusManagerState ? focusManagerState.domReference : null;\n const prevTabbable = getPreviousTabbable(domReference);\n prevTabbable == null || prevTabbable.focus();\n }\n }\n }), shouldRenderGuards && portalNode && /*#__PURE__*/jsx(\"span\", {\n \"aria-owns\": portalNode.id,\n style: HIDDEN_STYLES\n }), portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/jsx(FocusGuard, {\n \"data-type\": \"outside\",\n ref: afterOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _afterInsideRef$curre;\n (_afterInsideRef$curre = afterInsideRef.current) == null || _afterInsideRef$curre.focus();\n } else {\n const domReference = focusManagerState ? focusManagerState.domReference : null;\n const nextTabbable = getNextTabbable(domReference);\n nextTabbable == null || nextTabbable.focus();\n (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent, 'focus-out'));\n }\n }\n })]\n });\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nfunction useLiteMergeRefs(refs) {\n return React.useMemo(() => {\n return value => {\n refs.forEach(ref => {\n if (ref) {\n ref.current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements = [];\nfunction clearDisconnectedPreviouslyFocusedElements() {\n previouslyFocusedElements = previouslyFocusedElements.filter(el => el.isConnected);\n}\nfunction addPreviouslyFocusedElement(element) {\n clearDisconnectedPreviouslyFocusedElements();\n if (element && getNodeName(element) !== 'body') {\n previouslyFocusedElements.push(element);\n if (previouslyFocusedElements.length > LIST_LIMIT) {\n previouslyFocusedElements = previouslyFocusedElements.slice(-20);\n }\n }\n}\nfunction getPreviouslyFocusedElement() {\n clearDisconnectedPreviouslyFocusedElements();\n return previouslyFocusedElements[previouslyFocusedElements.length - 1];\n}\nfunction getFirstTabbableElement(container) {\n const tabbableOptions = getTabbableOptions();\n if (isTabbable(container, tabbableOptions)) {\n return container;\n }\n return tabbable(container, tabbableOptions)[0] || container;\n}\nfunction handleTabIndex(floatingFocusElement, orderRef) {\n var _floatingFocusElement;\n if (!orderRef.current.includes('floating') && !((_floatingFocusElement = floatingFocusElement.getAttribute('role')) != null && _floatingFocusElement.includes('dialog'))) {\n return;\n }\n const options = getTabbableOptions();\n const focusableElements = focusable(floatingFocusElement, options);\n const tabbableContent = focusableElements.filter(element => {\n const dataTabIndex = element.getAttribute('data-tabindex') || '';\n return isTabbable(element, options) || element.hasAttribute('data-tabindex') && !dataTabIndex.startsWith('-');\n });\n const tabIndex = floatingFocusElement.getAttribute('tabindex');\n if (orderRef.current.includes('floating') || tabbableContent.length === 0) {\n if (tabIndex !== '0') {\n floatingFocusElement.setAttribute('tabindex', '0');\n }\n } else if (tabIndex !== '-1' || floatingFocusElement.hasAttribute('data-tabindex') && floatingFocusElement.getAttribute('data-tabindex') !== '-1') {\n floatingFocusElement.setAttribute('tabindex', '-1');\n floatingFocusElement.setAttribute('data-tabindex', '-1');\n }\n}\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n return /*#__PURE__*/jsx(\"button\", {\n ...props,\n type: \"button\",\n ref: ref,\n tabIndex: -1,\n style: HIDDEN_STYLES\n });\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n const {\n context,\n children,\n disabled = false,\n order = ['content'],\n guards: _guards = true,\n initialFocus = 0,\n returnFocus = true,\n restoreFocus = false,\n modal = true,\n visuallyHiddenDismiss = false,\n closeOnFocusOut = true,\n outsideElementsInert = false,\n getInsideElements: _getInsideElements = () => []\n } = props;\n const {\n open,\n onOpenChange,\n events,\n dataRef,\n elements: {\n domReference,\n floating\n }\n } = context;\n const getNodeId = useEffectEvent(() => {\n var _dataRef$current$floa;\n return (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n });\n const getInsideElements = useEffectEvent(_getInsideElements);\n const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n // If the reference is a combobox and is typeable (e.g. input/textarea),\n // there are different focus semantics. The guards should not be rendered, but\n // aria-hidden should be applied to all nodes still. Further, the visually\n // hidden dismiss button should only appear at the end of the list, not the\n // start.\n const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;\n\n // Force the guards to be rendered if the `inert` attribute is not supported.\n const inertSupported = supportsInert();\n const guards = inertSupported ? _guards : true;\n const useInert = !guards || inertSupported && outsideElementsInert;\n const orderRef = useLatestRef(order);\n const initialFocusRef = useLatestRef(initialFocus);\n const returnFocusRef = useLatestRef(returnFocus);\n const tree = useFloatingTree();\n const portalContext = usePortalContext();\n const startDismissButtonRef = React.useRef(null);\n const endDismissButtonRef = React.useRef(null);\n const preventReturnFocusRef = React.useRef(false);\n const isPointerDownRef = React.useRef(false);\n const tabbableIndexRef = React.useRef(-1);\n const blurTimeoutRef = React.useRef(-1);\n const isInsidePortal = portalContext != null;\n const floatingFocusElement = getFloatingFocusElement(floating);\n const getTabbableContent = useEffectEvent(function (container) {\n if (container === void 0) {\n container = floatingFocusElement;\n }\n return container ? tabbable(container, getTabbableOptions()) : [];\n });\n const getTabbableElements = useEffectEvent(container => {\n const content = getTabbableContent(container);\n return orderRef.current.map(type => {\n if (domReference && type === 'reference') {\n return domReference;\n }\n if (floatingFocusElement && type === 'floating') {\n return floatingFocusElement;\n }\n return content;\n }).filter(Boolean).flat();\n });\n React.useEffect(() => {\n if (disabled) return;\n if (!modal) return;\n function onKeyDown(event) {\n if (event.key === 'Tab') {\n // The focus guards have nothing to focus, so we need to stop the event.\n if (contains$1(floatingFocusElement, activeElement(getDocument$1(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {\n stopEvent(event);\n }\n const els = getTabbableElements();\n const target = getTarget$1(event);\n if (orderRef.current[0] === 'reference' && target === domReference) {\n stopEvent(event);\n if (event.shiftKey) {\n enqueueFocus(els[els.length - 1]);\n } else {\n enqueueFocus(els[1]);\n }\n }\n if (orderRef.current[1] === 'floating' && target === floatingFocusElement && event.shiftKey) {\n stopEvent(event);\n enqueueFocus(els[0]);\n }\n }\n }\n const doc = getDocument$1(floatingFocusElement);\n doc.addEventListener('keydown', onKeyDown);\n return () => {\n doc.removeEventListener('keydown', onKeyDown);\n };\n }, [disabled, domReference, floatingFocusElement, modal, orderRef, isUntrappedTypeableCombobox, getTabbableContent, getTabbableElements]);\n React.useEffect(() => {\n if (disabled) return;\n if (!floating) return;\n function handleFocusIn(event) {\n const target = getTarget$1(event);\n const tabbableContent = getTabbableContent();\n const tabbableIndex = tabbableContent.indexOf(target);\n if (tabbableIndex !== -1) {\n tabbableIndexRef.current = tabbableIndex;\n }\n }\n floating.addEventListener('focusin', handleFocusIn);\n return () => {\n floating.removeEventListener('focusin', handleFocusIn);\n };\n }, [disabled, floating, getTabbableContent]);\n React.useEffect(() => {\n if (disabled) return;\n if (!closeOnFocusOut) return;\n\n // In Safari, buttons lose focus when pressing them.\n function handlePointerDown() {\n isPointerDownRef.current = true;\n setTimeout(() => {\n isPointerDownRef.current = false;\n });\n }\n function handleFocusOutside(event) {\n const relatedTarget = event.relatedTarget;\n const currentTarget = event.currentTarget;\n const target = getTarget$1(event);\n queueMicrotask(() => {\n const nodeId = getNodeId();\n const movedToUnrelatedNode = !(contains$1(domReference, relatedTarget) || contains$1(floating, relatedTarget) || contains$1(relatedTarget, floating) || contains$1(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute(createAttribute('focus-guard')) || tree && (getNodeChildren$1(tree.nodesRef.current, nodeId).find(node => {\n var _node$context, _node$context2;\n return contains$1((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains$1((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n }) || getNodeAncestors(tree.nodesRef.current, nodeId).find(node => {\n var _node$context3, _node$context4, _node$context5;\n return [(_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating, getFloatingFocusElement((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.floating)].includes(relatedTarget) || ((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.domReference) === relatedTarget;\n })));\n if (currentTarget === domReference && floatingFocusElement) {\n handleTabIndex(floatingFocusElement, orderRef);\n }\n\n // Restore focus to the previous tabbable element index to prevent\n // focus from being lost outside the floating tree.\n if (restoreFocus && currentTarget !== domReference && !(target != null && target.isConnected) && activeElement(getDocument$1(floatingFocusElement)) === getDocument$1(floatingFocusElement).body) {\n // Let `FloatingPortal` effect knows that focus is still inside the\n // floating tree.\n if (isHTMLElement(floatingFocusElement)) {\n floatingFocusElement.focus();\n }\n const prevTabbableIndex = tabbableIndexRef.current;\n const tabbableContent = getTabbableContent();\n const nodeToFocus = tabbableContent[prevTabbableIndex] || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;\n if (isHTMLElement(nodeToFocus)) {\n nodeToFocus.focus();\n }\n }\n\n // https://github.com/floating-ui/floating-ui/issues/3060\n if (dataRef.current.insideReactTree) {\n dataRef.current.insideReactTree = false;\n return;\n }\n\n // Focus did not move inside the floating tree, and there are no tabbable\n // portal guards to handle closing.\n if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n // Fix React 18 Strict Mode returnFocus due to double rendering.\n relatedTarget !== getPreviouslyFocusedElement()) {\n preventReturnFocusRef.current = true;\n onOpenChange(false, event, 'focus-out');\n }\n });\n }\n const shouldHandleBlurCapture = Boolean(!tree && portalContext);\n function markInsideReactTree() {\n clearTimeoutIfSet(blurTimeoutRef);\n dataRef.current.insideReactTree = true;\n blurTimeoutRef.current = window.setTimeout(() => {\n dataRef.current.insideReactTree = false;\n });\n }\n if (floating && isHTMLElement(domReference)) {\n domReference.addEventListener('focusout', handleFocusOutside);\n domReference.addEventListener('pointerdown', handlePointerDown);\n floating.addEventListener('focusout', handleFocusOutside);\n if (shouldHandleBlurCapture) {\n floating.addEventListener('focusout', markInsideReactTree, true);\n }\n return () => {\n domReference.removeEventListener('focusout', handleFocusOutside);\n domReference.removeEventListener('pointerdown', handlePointerDown);\n floating.removeEventListener('focusout', handleFocusOutside);\n if (shouldHandleBlurCapture) {\n floating.removeEventListener('focusout', markInsideReactTree, true);\n }\n };\n }\n }, [disabled, domReference, floating, floatingFocusElement, modal, tree, portalContext, onOpenChange, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, orderRef, dataRef]);\n const beforeGuardRef = React.useRef(null);\n const afterGuardRef = React.useRef(null);\n const mergedBeforeGuardRef = useLiteMergeRefs([beforeGuardRef, portalContext == null ? void 0 : portalContext.beforeInsideRef]);\n const mergedAfterGuardRef = useLiteMergeRefs([afterGuardRef, portalContext == null ? void 0 : portalContext.afterInsideRef]);\n React.useEffect(() => {\n var _portalContext$portal, _ancestors$find;\n if (disabled) return;\n if (!floating) return;\n\n // Don't hide portals nested within the parent portal.\n const portalNodes = Array.from((portalContext == null || (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll(\"[\" + createAttribute('portal') + \"]\")) || []);\n const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : [];\n const rootAncestorComboboxDomReference = (_ancestors$find = ancestors.find(node => {\n var _node$context6;\n return isTypeableCombobox(((_node$context6 = node.context) == null ? void 0 : _node$context6.elements.domReference) || null);\n })) == null || (_ancestors$find = _ancestors$find.context) == null ? void 0 : _ancestors$find.elements.domReference;\n const insideElements = [floating, rootAncestorComboboxDomReference, ...portalNodes, ...getInsideElements(), startDismissButtonRef.current, endDismissButtonRef.current, beforeGuardRef.current, afterGuardRef.current, portalContext == null ? void 0 : portalContext.beforeOutsideRef.current, portalContext == null ? void 0 : portalContext.afterOutsideRef.current, orderRef.current.includes('reference') || isUntrappedTypeableCombobox ? domReference : null].filter(x => x != null);\n const cleanup = modal || isUntrappedTypeableCombobox ? markOthers(insideElements, !useInert, useInert) : markOthers(insideElements);\n return () => {\n cleanup();\n };\n }, [disabled, domReference, floating, modal, orderRef, portalContext, isUntrappedTypeableCombobox, guards, useInert, tree, getNodeId, getInsideElements]);\n useModernLayoutEffect(() => {\n if (disabled || !isHTMLElement(floatingFocusElement)) return;\n const doc = getDocument$1(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n\n // Wait for any layout effect state setters to execute to set `tabIndex`.\n queueMicrotask(() => {\n const focusableElements = getTabbableElements(floatingFocusElement);\n const initialFocusValue = initialFocusRef.current;\n const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floatingFocusElement;\n const focusAlreadyInsideFloatingEl = contains$1(floatingFocusElement, previouslyFocusedElement);\n if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n enqueueFocus(elToFocus, {\n preventScroll: elToFocus === floatingFocusElement\n });\n }\n });\n }, [disabled, open, floatingFocusElement, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n useModernLayoutEffect(() => {\n if (disabled || !floatingFocusElement) return;\n const doc = getDocument$1(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n addPreviouslyFocusedElement(previouslyFocusedElement);\n\n // Dismissing via outside press should always ignore `returnFocus` to\n // prevent unwanted scrolling.\n function onOpenChange(_ref) {\n let {\n reason,\n event,\n nested\n } = _ref;\n if (['hover', 'safe-polygon'].includes(reason) && event.type === 'mouseleave') {\n preventReturnFocusRef.current = true;\n }\n if (reason !== 'outside-press') return;\n if (nested) {\n preventReturnFocusRef.current = false;\n } else if (isVirtualClick(event) || isVirtualPointerEvent(event)) {\n preventReturnFocusRef.current = false;\n } else {\n let isPreventScrollSupported = false;\n document.createElement('div').focus({\n get preventScroll() {\n isPreventScrollSupported = true;\n return false;\n }\n });\n if (isPreventScrollSupported) {\n preventReturnFocusRef.current = false;\n } else {\n preventReturnFocusRef.current = true;\n }\n }\n }\n events.on('openchange', onOpenChange);\n const fallbackEl = doc.createElement('span');\n fallbackEl.setAttribute('tabindex', '-1');\n fallbackEl.setAttribute('aria-hidden', 'true');\n Object.assign(fallbackEl.style, HIDDEN_STYLES);\n if (isInsidePortal && domReference) {\n domReference.insertAdjacentElement('afterend', fallbackEl);\n }\n function getReturnElement() {\n if (typeof returnFocusRef.current === 'boolean') {\n const el = domReference || getPreviouslyFocusedElement();\n return el && el.isConnected ? el : fallbackEl;\n }\n return returnFocusRef.current.current || fallbackEl;\n }\n return () => {\n events.off('openchange', onOpenChange);\n const activeEl = activeElement(doc);\n const isFocusInsideFloatingTree = contains$1(floating, activeEl) || tree && getNodeChildren$1(tree.nodesRef.current, getNodeId(), false).some(node => {\n var _node$context7;\n return contains$1((_node$context7 = node.context) == null ? void 0 : _node$context7.elements.floating, activeEl);\n });\n const returnElement = getReturnElement();\n queueMicrotask(() => {\n // This is `returnElement`, if it's tabbable, or its first tabbable child.\n const tabbableReturnElement = getFirstTabbableElement(returnElement);\n if (\n // eslint-disable-next-line react-hooks/exhaustive-deps\n returnFocusRef.current && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && (\n // If the focus moved somewhere else after mount, avoid returning focus\n // since it likely entered a different element which should be\n // respected: https://github.com/floating-ui/floating-ui/issues/2607\n tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {\n tabbableReturnElement.focus({\n preventScroll: true\n });\n }\n fallbackEl.remove();\n });\n };\n }, [disabled, floating, floatingFocusElement, returnFocusRef, dataRef, events, tree, isInsidePortal, domReference, getNodeId]);\n React.useEffect(() => {\n // The `returnFocus` cleanup behavior is inside a microtask; ensure we\n // wait for it to complete before resetting the flag.\n queueMicrotask(() => {\n preventReturnFocusRef.current = false;\n });\n return () => {\n queueMicrotask(clearDisconnectedPreviouslyFocusedElements);\n };\n }, [disabled]);\n\n // Synchronize the `context` & `modal` value to the FloatingPortal context.\n // It will decide whether or not it needs to render its own guards.\n useModernLayoutEffect(() => {\n if (disabled) return;\n if (!portalContext) return;\n portalContext.setFocusManagerState({\n modal,\n closeOnFocusOut,\n open,\n onOpenChange,\n domReference\n });\n return () => {\n portalContext.setFocusManagerState(null);\n };\n }, [disabled, portalContext, modal, open, onOpenChange, closeOnFocusOut, domReference]);\n useModernLayoutEffect(() => {\n if (disabled) return;\n if (!floatingFocusElement) return;\n handleTabIndex(floatingFocusElement, orderRef);\n }, [disabled, floatingFocusElement, orderRef]);\n function renderDismissButton(location) {\n if (disabled || !visuallyHiddenDismiss || !modal) {\n return null;\n }\n return /*#__PURE__*/jsx(VisuallyHiddenDismiss, {\n ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n onClick: event => onOpenChange(false, event.nativeEvent),\n children: typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss'\n });\n }\n const shouldRenderGuards = !disabled && guards && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);\n return /*#__PURE__*/jsxs(Fragment, {\n children: [shouldRenderGuards && /*#__PURE__*/jsx(FocusGuard, {\n \"data-type\": \"inside\",\n ref: mergedBeforeGuardRef,\n onFocus: event => {\n if (modal) {\n const els = getTabbableElements();\n enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n preventReturnFocusRef.current = false;\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const nextTabbable = getNextTabbable(domReference);\n nextTabbable == null || nextTabbable.focus();\n } else {\n var _portalContext$before;\n (_portalContext$before = portalContext.beforeOutsideRef.current) == null || _portalContext$before.focus();\n }\n }\n }\n }), !isUntrappedTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/jsx(FocusGuard, {\n \"data-type\": \"inside\",\n ref: mergedAfterGuardRef,\n onFocus: event => {\n if (modal) {\n enqueueFocus(getTabbableElements()[0]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n if (closeOnFocusOut) {\n preventReturnFocusRef.current = true;\n }\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const prevTabbable = getPreviousTabbable(domReference);\n prevTabbable == null || prevTabbable.focus();\n } else {\n var _portalContext$afterO;\n (_portalContext$afterO = portalContext.afterOutsideRef.current) == null || _portalContext$afterO.focus();\n }\n }\n }\n })]\n });\n}\n\nlet lockCount = 0;\nconst scrollbarProperty = '--floating-ui-scrollbar-width';\nfunction enableScrollLock() {\n const platform = getPlatform();\n const isIOS = /iP(hone|ad|od)|iOS/.test(platform) ||\n // iPads can claim to be MacIntel\n platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n const bodyStyle = document.body.style;\n // RTL <body> scrollbar\n const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.scrollX;\n const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.scrollY;\n bodyStyle.overflow = 'hidden';\n bodyStyle.setProperty(scrollbarProperty, scrollbarWidth + \"px\");\n if (scrollbarWidth) {\n bodyStyle[paddingProp] = scrollbarWidth + \"px\";\n }\n\n // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n // technique has fewer side effects.\n if (isIOS) {\n var _window$visualViewpor, _window$visualViewpor2;\n // iOS 12 does not support `visualViewport`.\n const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n Object.assign(bodyStyle, {\n position: 'fixed',\n top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n right: '0'\n });\n }\n return () => {\n Object.assign(bodyStyle, {\n overflow: '',\n [paddingProp]: ''\n });\n bodyStyle.removeProperty(scrollbarProperty);\n if (isIOS) {\n Object.assign(bodyStyle, {\n position: '',\n top: '',\n left: '',\n right: ''\n });\n window.scrollTo(scrollX, scrollY);\n }\n };\n}\nlet cleanup = () => {};\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(props, ref) {\n const {\n lockScroll = false,\n ...rest\n } = props;\n useModernLayoutEffect(() => {\n if (!lockScroll) return;\n lockCount++;\n if (lockCount === 1) {\n cleanup = enableScrollLock();\n }\n return () => {\n lockCount--;\n if (lockCount === 0) {\n cleanup();\n }\n };\n }, [lockScroll]);\n return /*#__PURE__*/jsx(\"div\", {\n ref: ref,\n ...rest,\n style: {\n position: 'fixed',\n overflow: 'auto',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...rest.style\n }\n });\n});\n\nfunction isButtonTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isAnchorTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === 'A';\n}\nfunction isSpaceIgnored(element) {\n return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n elements: {\n domReference\n }\n } = context;\n const {\n enabled = true,\n event: eventOption = 'click',\n toggle = true,\n ignoreMouse = false,\n keyboardHandlers = true,\n stickIfOpen = true\n } = props;\n const pointerTypeRef = React.useRef();\n const didKeyDownRef = React.useRef(false);\n const reference = React.useMemo(() => ({\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n const pointerType = pointerTypeRef.current;\n\n // Ignore all buttons except for the \"main\" button.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button !== 0) return;\n if (eventOption === 'click') return;\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n // Prevent stealing focus from the floating element\n event.preventDefault();\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onClick(event) {\n const pointerType = pointerTypeRef.current;\n if (eventOption === 'mousedown' && pointerTypeRef.current) {\n pointerTypeRef.current = undefined;\n return;\n }\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'click' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onKeyDown(event) {\n pointerTypeRef.current = undefined;\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n return;\n }\n if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n // Prevent scrolling\n event.preventDefault();\n didKeyDownRef.current = true;\n }\n if (isAnchorTarget(event)) {\n return;\n }\n if (event.key === 'Enter') {\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n },\n onKeyUp(event) {\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n return;\n }\n if (event.key === ' ' && didKeyDownRef.current) {\n didKeyDownRef.current = false;\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n }\n }), [dataRef, domReference, eventOption, ignoreMouse, keyboardHandlers, onOpenChange, open, stickIfOpen, toggle]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nfunction createVirtualElement(domElement, data) {\n let offsetX = null;\n let offsetY = null;\n let isAutoUpdateEvent = false;\n return {\n contextElement: domElement || undefined,\n getBoundingClientRect() {\n var _data$dataRef$current;\n const domRect = (domElement == null ? void 0 : domElement.getBoundingClientRect()) || {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n const isXAxis = data.axis === 'x' || data.axis === 'both';\n const isYAxis = data.axis === 'y' || data.axis === 'both';\n const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n let width = domRect.width;\n let height = domRect.height;\n let x = domRect.x;\n let y = domRect.y;\n if (offsetX == null && data.x && isXAxis) {\n offsetX = domRect.x - data.x;\n }\n if (offsetY == null && data.y && isYAxis) {\n offsetY = domRect.y - data.y;\n }\n x -= offsetX || 0;\n y -= offsetY || 0;\n width = 0;\n height = 0;\n if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n width = data.axis === 'y' ? domRect.width : 0;\n height = data.axis === 'x' ? domRect.height : 0;\n x = isXAxis && data.x != null ? data.x : x;\n y = isYAxis && data.y != null ? data.y : y;\n } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n height = data.axis === 'x' ? domRect.height : height;\n width = data.axis === 'y' ? domRect.width : width;\n }\n isAutoUpdateEvent = true;\n return {\n width,\n height,\n x,\n y,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x\n };\n }\n };\n}\nfunction isMouseBasedEvent(event) {\n return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n dataRef,\n elements: {\n floating,\n domReference\n },\n refs\n } = context;\n const {\n enabled = true,\n axis = 'both',\n x = null,\n y = null\n } = props;\n const initialRef = React.useRef(false);\n const cleanupListenerRef = React.useRef(null);\n const [pointerType, setPointerType] = React.useState();\n const [reactive, setReactive] = React.useState([]);\n const setReference = useEffectEvent((x, y) => {\n if (initialRef.current) return;\n\n // Prevent setting if the open event was not a mouse-like one\n // (e.g. focus to open, then hover over the reference element).\n // Only apply if the event exists.\n if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n return;\n }\n refs.setPositionReference(createVirtualElement(domReference, {\n x,\n y,\n axis,\n dataRef,\n pointerType\n }));\n });\n const handleReferenceEnterOrMove = useEffectEvent(event => {\n if (x != null || y != null) return;\n if (!open) {\n setReference(event.clientX, event.clientY);\n } else if (!cleanupListenerRef.current) {\n // If there's no cleanup, there's no listener, but we want to ensure\n // we add the listener if the cursor landed on the floating element and\n // then back on the reference (i.e. it's interactive).\n setReactive([]);\n }\n });\n\n // If the pointer is a mouse-like pointer, we want to continue following the\n // mouse even if the floating element is transitioning out. On touch\n // devices, this is undesirable because the floating element will move to\n // the dismissal touch point.\n const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n const addListener = React.useCallback(() => {\n // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n if (!openCheck || !enabled || x != null || y != null) return;\n const win = getWindow(floating);\n function handleMouseMove(event) {\n const target = getTarget$1(event);\n if (!contains$1(floating, target)) {\n setReference(event.clientX, event.clientY);\n } else {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n }\n }\n if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n win.addEventListener('mousemove', handleMouseMove);\n const cleanup = () => {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n };\n cleanupListenerRef.current = cleanup;\n return cleanup;\n }\n refs.setPositionReference(domReference);\n }, [openCheck, enabled, x, y, floating, dataRef, refs, domReference, setReference]);\n React.useEffect(() => {\n return addListener();\n }, [addListener, reactive]);\n React.useEffect(() => {\n if (enabled && !floating) {\n initialRef.current = false;\n }\n }, [enabled, floating]);\n React.useEffect(() => {\n if (!enabled && open) {\n initialRef.current = true;\n }\n }, [enabled, open]);\n useModernLayoutEffect(() => {\n if (enabled && (x != null || y != null)) {\n initialRef.current = false;\n setReference(x, y);\n }\n }, [enabled, x, y, setReference]);\n const reference = React.useMemo(() => {\n function setPointerTypeRef(_ref) {\n let {\n pointerType\n } = _ref;\n setPointerType(pointerType);\n }\n return {\n onPointerDown: setPointerTypeRef,\n onPointerEnter: setPointerTypeRef,\n onMouseMove: handleReferenceEnterOrMove,\n onMouseEnter: handleReferenceEnterOrMove\n };\n }, [handleReferenceEnterOrMove]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nconst bubbleHandlerKeys = {\n pointerdown: 'onPointerDown',\n mousedown: 'onMouseDown',\n click: 'onClick'\n};\nconst captureHandlerKeys = {\n pointerdown: 'onPointerDownCapture',\n mousedown: 'onMouseDownCapture',\n click: 'onClickCapture'\n};\nconst normalizeProp = normalizable => {\n var _normalizable$escapeK, _normalizable$outside;\n return {\n escapeKey: typeof normalizable === 'boolean' ? normalizable : (_normalizable$escapeK = normalizable == null ? void 0 : normalizable.escapeKey) != null ? _normalizable$escapeK : false,\n outsidePress: typeof normalizable === 'boolean' ? normalizable : (_normalizable$outside = normalizable == null ? void 0 : normalizable.outsidePress) != null ? _normalizable$outside : true\n };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n elements,\n dataRef\n } = context;\n const {\n enabled = true,\n escapeKey = true,\n outsidePress: unstable_outsidePress = true,\n outsidePressEvent = 'pointerdown',\n referencePress = false,\n referencePressEvent = 'pointerdown',\n ancestorScroll = false,\n bubbles,\n capture\n } = props;\n const tree = useFloatingTree();\n const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n const endedOrStartedInsideRef = React.useRef(false);\n const {\n escapeKey: escapeKeyBubbles,\n outsidePress: outsidePressBubbles\n } = normalizeProp(bubbles);\n const {\n escapeKey: escapeKeyCapture,\n outsidePress: outsidePressCapture\n } = normalizeProp(capture);\n const isComposingRef = React.useRef(false);\n const closeOnEscapeKeyDown = useEffectEvent(event => {\n var _dataRef$current$floa;\n if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n return;\n }\n\n // Wait until IME is settled. Pressing `Escape` while composing should\n // close the compose menu, but not the floating element.\n if (isComposingRef.current) {\n return;\n }\n const nodeId = (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n const children = tree ? getNodeChildren$1(tree.nodesRef.current, nodeId) : [];\n if (!escapeKeyBubbles) {\n event.stopPropagation();\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context;\n if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n }\n onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event, 'escape-key');\n });\n const closeOnEscapeKeyDownCapture = useEffectEvent(event => {\n var _getTarget2;\n const callback = () => {\n var _getTarget;\n closeOnEscapeKeyDown(event);\n (_getTarget = getTarget$1(event)) == null || _getTarget.removeEventListener('keydown', callback);\n };\n (_getTarget2 = getTarget$1(event)) == null || _getTarget2.addEventListener('keydown', callback);\n });\n const closeOnPressOutside = useEffectEvent(event => {\n var _dataRef$current$floa2;\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = dataRef.current.insideReactTree;\n dataRef.current.insideReactTree = false;\n\n // When click outside is lazy (`click` event), handle dragging.\n // Don't close if:\n // - The click started inside the floating element.\n // - The click ended inside the floating element.\n const endedOrStartedInside = endedOrStartedInsideRef.current;\n endedOrStartedInsideRef.current = false;\n if (outsidePressEvent === 'click' && endedOrStartedInside) {\n return;\n }\n if (insideReactTree) {\n return;\n }\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n const target = getTarget$1(event);\n const inertSelector = \"[\" + createAttribute('inert') + \"]\";\n const markers = getDocument$1(elements.floating).querySelectorAll(inertSelector);\n let targetRootAncestor = isElement(target) ? target : null;\n while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n const nextParent = getParentNode(targetRootAncestor);\n if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n break;\n }\n targetRootAncestor = nextParent;\n }\n\n // Check if the click occurred on a third-party element injected after the\n // floating element rendered.\n if (markers.length && isElement(target) && !isRootElement(target) &&\n // Clicked on a direct ancestor (e.g. FloatingOverlay).\n !contains$1(target, elements.floating) &&\n // If the target root element contains none of the markers, then the\n // element was injected after the floating element rendered.\n Array.from(markers).every(marker => !contains$1(targetRootAncestor, marker))) {\n return;\n }\n\n // Check if the click occurred on the scrollbar\n if (isHTMLElement(target) && floating) {\n const lastTraversableNode = isLastTraversableNode(target);\n const style = getComputedStyle(target);\n const scrollRe = /auto|scroll/;\n const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);\n const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY);\n const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n const isRTL = style.direction === 'rtl';\n\n // Check click position relative to scrollbar.\n // In some browsers it is possible to change the <body> (or window)\n // scrollbar to the left side, but is very rare and is difficult to\n // check for. Plus, for modal dialogs with backdrops, it is more\n // important that the backdrop is checked but not so much the window.\n const pressedVerticalScrollbar = canScrollY && (isRTL ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);\n const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;\n if (pressedVerticalScrollbar || pressedHorizontalScrollbar) {\n return;\n }\n }\n const nodeId = (_dataRef$current$floa2 = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa2.nodeId;\n const targetIsInsideChildren = tree && getNodeChildren$1(tree.nodesRef.current, nodeId).some(node => {\n var _node$context;\n return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n });\n if (isEventTargetWithin(event, elements.floating) || isEventTargetWithin(event, elements.domReference) || targetIsInsideChildren) {\n return;\n }\n const children = tree ? getNodeChildren$1(tree.nodesRef.current, nodeId) : [];\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context2;\n if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n onOpenChange(false, event, 'outside-press');\n });\n const closeOnPressOutsideCapture = useEffectEvent(event => {\n var _getTarget4;\n const callback = () => {\n var _getTarget3;\n closeOnPressOutside(event);\n (_getTarget3 = getTarget$1(event)) == null || _getTarget3.removeEventListener(outsidePressEvent, callback);\n };\n (_getTarget4 = getTarget$1(event)) == null || _getTarget4.addEventListener(outsidePressEvent, callback);\n });\n React.useEffect(() => {\n if (!open || !enabled) {\n return;\n }\n dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n let compositionTimeout = -1;\n function onScroll(event) {\n onOpenChange(false, event, 'ancestor-scroll');\n }\n function handleCompositionStart() {\n window.clearTimeout(compositionTimeout);\n isComposingRef.current = true;\n }\n function handleCompositionEnd() {\n // Safari fires `compositionend` before `keydown`, so we need to wait\n // until the next tick to set `isComposing` to `false`.\n // https://bugs.webkit.org/show_bug.cgi?id=165004\n compositionTimeout = window.setTimeout(() => {\n isComposingRef.current = false;\n },\n // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.\n // Only apply to WebKit for the test to remain 0ms.\n isWebKit() ? 5 : 0);\n }\n const doc = getDocument$1(elements.floating);\n if (escapeKey) {\n doc.addEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n doc.addEventListener('compositionstart', handleCompositionStart);\n doc.addEventListener('compositionend', handleCompositionEnd);\n }\n outsidePress && doc.addEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n let ancestors = [];\n if (ancestorScroll) {\n if (isElement(elements.domReference)) {\n ancestors = getOverflowAncestors(elements.domReference);\n }\n if (isElement(elements.floating)) {\n ancestors = ancestors.concat(getOverflowAncestors(elements.floating));\n }\n if (!isElement(elements.reference) && elements.reference && elements.reference.contextElement) {\n ancestors = ancestors.concat(getOverflowAncestors(elements.reference.contextElement));\n }\n }\n\n // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n ancestors = ancestors.filter(ancestor => {\n var _doc$defaultView;\n return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n });\n ancestors.forEach(ancestor => {\n ancestor.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n return () => {\n if (escapeKey) {\n doc.removeEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n doc.removeEventListener('compositionstart', handleCompositionStart);\n doc.removeEventListener('compositionend', handleCompositionEnd);\n }\n outsidePress && doc.removeEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n ancestors.forEach(ancestor => {\n ancestor.removeEventListener('scroll', onScroll);\n });\n window.clearTimeout(compositionTimeout);\n };\n }, [dataRef, elements, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, escapeKeyCapture, closeOnEscapeKeyDownCapture, closeOnPressOutside, outsidePressCapture, closeOnPressOutsideCapture]);\n React.useEffect(() => {\n dataRef.current.insideReactTree = false;\n }, [dataRef, outsidePress, outsidePressEvent]);\n const reference = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n ...(referencePress && {\n [bubbleHandlerKeys[referencePressEvent]]: event => {\n onOpenChange(false, event.nativeEvent, 'reference-press');\n },\n ...(referencePressEvent !== 'click' && {\n onClick(event) {\n onOpenChange(false, event.nativeEvent, 'reference-press');\n }\n })\n })\n }), [closeOnEscapeKeyDown, onOpenChange, referencePress, referencePressEvent]);\n const floating = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n onMouseDown() {\n endedOrStartedInsideRef.current = true;\n },\n onMouseUp() {\n endedOrStartedInsideRef.current = true;\n },\n [captureHandlerKeys[outsidePressEvent]]: () => {\n dataRef.current.insideReactTree = true;\n }\n }), [closeOnEscapeKeyDown, outsidePressEvent, dataRef]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nfunction useFloatingRootContext(options) {\n const {\n open = false,\n onOpenChange: onOpenChangeProp,\n elements: elementsProp\n } = options;\n const floatingId = useId();\n const dataRef = React.useRef({});\n const [events] = React.useState(() => createEventEmitter());\n const nested = useFloatingParentNodeId() != null;\n if (process.env.NODE_ENV !== \"production\") {\n const optionDomReference = elementsProp.reference;\n if (optionDomReference && !isElement(optionDomReference)) {\n error('Cannot pass a virtual element to the `elements.reference` option,', 'as it must be a real DOM element. Use `refs.setPositionReference()`', 'instead.');\n }\n }\n const [positionReference, setPositionReference] = React.useState(elementsProp.reference);\n const onOpenChange = useEffectEvent((open, event, reason) => {\n dataRef.current.openEvent = open ? event : undefined;\n events.emit('openchange', {\n open,\n event,\n reason,\n nested\n });\n onOpenChangeProp == null || onOpenChangeProp(open, event, reason);\n });\n const refs = React.useMemo(() => ({\n setPositionReference\n }), []);\n const elements = React.useMemo(() => ({\n reference: positionReference || elementsProp.reference || null,\n floating: elementsProp.floating || null,\n domReference: elementsProp.reference\n }), [positionReference, elementsProp.reference, elementsProp.floating]);\n return React.useMemo(() => ({\n dataRef,\n open,\n onOpenChange,\n elements,\n events,\n floatingId,\n refs\n }), [open, onOpenChange, elements, events, floatingId, refs]);\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n nodeId\n } = options;\n const internalRootContext = useFloatingRootContext({\n ...options,\n elements: {\n reference: null,\n floating: null,\n ...options.elements\n }\n });\n const rootContext = options.rootContext || internalRootContext;\n const computedElements = rootContext.elements;\n const [_domReference, setDomReference] = React.useState(null);\n const [positionReference, _setPositionReference] = React.useState(null);\n const optionDomReference = computedElements == null ? void 0 : computedElements.domReference;\n const domReference = optionDomReference || _domReference;\n const domReferenceRef = React.useRef(null);\n const tree = useFloatingTree();\n useModernLayoutEffect(() => {\n if (domReference) {\n domReferenceRef.current = domReference;\n }\n }, [domReference]);\n const position = useFloating$1({\n ...options,\n elements: {\n ...computedElements,\n ...(positionReference && {\n reference: positionReference\n })\n }\n });\n const setPositionReference = React.useCallback(node => {\n const computedPositionReference = isElement(node) ? {\n getBoundingClientRect: () => node.getBoundingClientRect(),\n getClientRects: () => node.getClientRects(),\n contextElement: node\n } : node;\n // Store the positionReference in state if the DOM reference is specified externally via the\n // `elements.reference` option. This ensures that it won't be overridden on future renders.\n _setPositionReference(computedPositionReference);\n position.refs.setReference(computedPositionReference);\n }, [position.refs]);\n const setReference = React.useCallback(node => {\n if (isElement(node) || node === null) {\n domReferenceRef.current = node;\n setDomReference(node);\n }\n\n // Backwards-compatibility for passing a virtual element to `reference`\n // after it has set the DOM reference.\n if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n // Don't allow setting virtual elements using the old technique back to\n // `null` to support `positionReference` + an unstable `reference`\n // callback ref.\n node !== null && !isElement(node)) {\n position.refs.setReference(node);\n }\n }, [position.refs]);\n const refs = React.useMemo(() => ({\n ...position.refs,\n setReference,\n setPositionReference,\n domReference: domReferenceRef\n }), [position.refs, setReference, setPositionReference]);\n const elements = React.useMemo(() => ({\n ...position.elements,\n domReference: domReference\n }), [position.elements, domReference]);\n const context = React.useMemo(() => ({\n ...position,\n ...rootContext,\n refs,\n elements,\n nodeId\n }), [position, refs, elements, nodeId, rootContext]);\n useModernLayoutEffect(() => {\n rootContext.dataRef.current.floatingContext = context;\n const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n if (node) {\n node.context = context;\n }\n });\n return React.useMemo(() => ({\n ...position,\n context,\n refs,\n elements\n }), [position, refs, elements, context]);\n}\n\nfunction isMacSafari() {\n return isMac() && isSafari();\n}\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n events,\n dataRef,\n elements\n } = context;\n const {\n enabled = true,\n visibleOnly = true\n } = props;\n const blockFocusRef = React.useRef(false);\n const timeoutRef = React.useRef(-1);\n const keyboardModalityRef = React.useRef(true);\n React.useEffect(() => {\n if (!enabled) return;\n const win = getWindow(elements.domReference);\n\n // If the reference was focused and the user left the tab/window, and the\n // floating element was not open, the focus should be blocked when they\n // return to the tab/window.\n function onBlur() {\n if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument$1(elements.domReference))) {\n blockFocusRef.current = true;\n }\n }\n function onKeyDown() {\n keyboardModalityRef.current = true;\n }\n function onPointerDown() {\n keyboardModalityRef.current = false;\n }\n win.addEventListener('blur', onBlur);\n if (isMacSafari()) {\n win.addEventListener('keydown', onKeyDown, true);\n win.addEventListener('pointerdown', onPointerDown, true);\n }\n return () => {\n win.removeEventListener('blur', onBlur);\n if (isMacSafari()) {\n win.removeEventListener('keydown', onKeyDown, true);\n win.removeEventListener('pointerdown', onPointerDown, true);\n }\n };\n }, [elements.domReference, open, enabled]);\n React.useEffect(() => {\n if (!enabled) return;\n function onOpenChange(_ref) {\n let {\n reason\n } = _ref;\n if (reason === 'reference-press' || reason === 'escape-key') {\n blockFocusRef.current = true;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [events, enabled]);\n React.useEffect(() => {\n return () => {\n clearTimeoutIfSet(timeoutRef);\n };\n }, []);\n const reference = React.useMemo(() => ({\n onMouseLeave() {\n blockFocusRef.current = false;\n },\n onFocus(event) {\n if (blockFocusRef.current) return;\n const target = getTarget$1(event.nativeEvent);\n if (visibleOnly && isElement(target)) {\n // Safari fails to match `:focus-visible` if focus was initially\n // outside the document.\n if (isMacSafari() && !event.relatedTarget) {\n if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n return;\n }\n } else if (!matchesFocusVisible(target)) {\n return;\n }\n }\n onOpenChange(true, event.nativeEvent, 'focus');\n },\n onBlur(event) {\n blockFocusRef.current = false;\n const relatedTarget = event.relatedTarget;\n const nativeEvent = event.nativeEvent;\n\n // Hit the non-modal focus management portal guard. Focus will be\n // moved into the floating element immediately after.\n const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute('focus-guard')) && relatedTarget.getAttribute('data-type') === 'outside';\n\n // Wait for the window blur listener to fire.\n timeoutRef.current = window.setTimeout(() => {\n var _dataRef$current$floa;\n const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);\n\n // Focus left the page, keep it open.\n if (!relatedTarget && activeEl === elements.domReference) return;\n\n // When focusing the reference element (e.g. regular click), then\n // clicking into the floating element, prevent it from hiding.\n // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n // We can not rely on relatedTarget to point to the correct element\n // as it will only point to the shadow host of the newly focused element\n // and not the element that actually has received focus if it is located\n // inside a shadow root.\n if (contains$1((_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.refs.floating.current, activeEl) || contains$1(elements.domReference, activeEl) || movedToFocusGuard) {\n return;\n }\n onOpenChange(false, nativeEvent, 'focus');\n });\n }\n }), [dataRef, elements.domReference, onOpenChange, visibleOnly]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nfunction mergeProps(userProps, propsList, elementKey) {\n const map = new Map();\n const isItem = elementKey === 'item';\n let domUserProps = userProps;\n if (isItem && userProps) {\n const {\n [ACTIVE_KEY]: _,\n [SELECTED_KEY]: __,\n ...validProps\n } = userProps;\n domUserProps = validProps;\n }\n return {\n ...(elementKey === 'floating' && {\n tabIndex: -1,\n [FOCUSABLE_ATTRIBUTE]: ''\n }),\n ...domUserProps,\n ...propsList.map(value => {\n const propsOrGetProps = value ? value[elementKey] : null;\n if (typeof propsOrGetProps === 'function') {\n return userProps ? propsOrGetProps(userProps) : null;\n }\n return propsOrGetProps;\n }).concat(userProps).reduce((acc, props) => {\n if (!props) {\n return acc;\n }\n Object.entries(props).forEach(_ref => {\n let [key, value] = _ref;\n if (isItem && [ACTIVE_KEY, SELECTED_KEY].includes(key)) {\n return;\n }\n if (key.indexOf('on') === 0) {\n if (!map.has(key)) {\n map.set(key, []);\n }\n if (typeof value === 'function') {\n var _map$get;\n (_map$get = map.get(key)) == null || _map$get.push(value);\n acc[key] = function () {\n var _map$get2;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n };\n }\n } else {\n acc[key] = value;\n }\n });\n return acc;\n }, {})\n };\n}\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/useInteractions\n */\nfunction useInteractions(propsList) {\n if (propsList === void 0) {\n propsList = [];\n }\n const referenceDeps = propsList.map(key => key == null ? void 0 : key.reference);\n const floatingDeps = propsList.map(key => key == null ? void 0 : key.floating);\n const itemDeps = propsList.map(key => key == null ? void 0 : key.item);\n const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n referenceDeps);\n const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n floatingDeps);\n const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n itemDeps);\n return React.useMemo(() => ({\n getReferenceProps,\n getFloatingProps,\n getItemProps\n }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nconst ESCAPE = 'Escape';\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case 'vertical':\n return vertical;\n case 'horizontal':\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl, cols) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n if (orientation === 'both' || orientation === 'horizontal' && cols && cols > 1) {\n return key === ESCAPE;\n }\n return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nfunction useListNavigation(context, props) {\n const {\n open,\n onOpenChange,\n elements,\n floatingId\n } = context;\n const {\n listRef,\n activeIndex,\n onNavigate: unstable_onNavigate = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loop = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = 'auto',\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = undefined,\n orientation = 'vertical',\n parentOrientation,\n cols = 1,\n scrollItemIntoView = true,\n virtualItemRef,\n itemSizes,\n dense = false\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (allowEscape) {\n if (!loop) {\n warn('`useListNavigation` looping must be enabled to allow escaping.');\n }\n if (!virtual) {\n warn('`useListNavigation` must be virtual to allow escaping.');\n }\n }\n if (orientation === 'vertical' && cols > 1) {\n warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n }\n }\n const floatingFocusElement = getFloatingFocusElement(elements.floating);\n const floatingFocusElementRef = useLatestRef(floatingFocusElement);\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree();\n useModernLayoutEffect(() => {\n context.dataRef.current.orientation = orientation;\n }, [context, orientation]);\n const onNavigate = useEffectEvent(() => {\n unstable_onNavigate(indexRef.current === -1 ? null : indexRef.current);\n });\n const typeableComboboxReference = isTypeableCombobox(elements.domReference);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const previousOnNavigateRef = React.useRef(onNavigate);\n const previousMountedRef = React.useRef(!!elements.floating);\n const previousOpenRef = React.useRef(open);\n const forceSyncFocusRef = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const disabledIndicesRef = useLatestRef(disabledIndices);\n const latestOpenRef = useLatestRef(open);\n const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n const selectedIndexRef = useLatestRef(selectedIndex);\n const [activeId, setActiveId] = React.useState();\n const [virtualId, setVirtualId] = React.useState();\n const focusItem = useEffectEvent(() => {\n function runFocus(item) {\n if (virtual) {\n var _item$id;\n if ((_item$id = item.id) != null && _item$id.endsWith('-fui-option')) {\n item.id = floatingId + \"-\" + Math.random().toString(16).slice(2, 10);\n }\n setActiveId(item.id);\n tree == null || tree.events.emit('virtualfocus', item);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n } else {\n enqueueFocus(item, {\n sync: forceSyncFocusRef.current,\n preventScroll: true\n });\n }\n }\n const initialItem = listRef.current[indexRef.current];\n const forceScrollIntoView = forceScrollIntoViewRef.current;\n if (initialItem) {\n runFocus(initialItem);\n }\n const scheduler = forceSyncFocusRef.current ? v => v() : requestAnimationFrame;\n scheduler(() => {\n const waitedItem = listRef.current[indexRef.current] || initialItem;\n if (!waitedItem) return;\n if (!initialItem) {\n runFocus(waitedItem);\n }\n const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n const shouldScrollIntoView = scrollIntoViewOptions && item && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n // by all browsers.\n waitedItem.scrollIntoView == null || waitedItem.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n block: 'nearest',\n inline: 'nearest'\n } : scrollIntoViewOptions);\n }\n });\n });\n\n // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n // element. Also, reset `activeIndex` upon closing the floating element.\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (open && elements.floating) {\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n // Regardless of the pointer modality, we want to ensure the selected\n // item comes into view when the floating element is opened.\n forceScrollIntoViewRef.current = true;\n indexRef.current = selectedIndex;\n onNavigate();\n }\n } else if (previousMountedRef.current) {\n // Since the user can specify `onNavigate` conditionally\n // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n // we store and call the previous function.\n indexRef.current = -1;\n previousOnNavigateRef.current();\n }\n }, [enabled, open, elements.floating, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (!open) return;\n if (!elements.floating) return;\n if (activeIndex == null) {\n forceSyncFocusRef.current = false;\n if (selectedIndexRef.current != null) {\n return;\n }\n\n // Reset while the floating element was open (e.g. the list changed).\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem();\n }\n\n // Initial sync.\n if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n // Avoid letting the browser paint if possible on the first try,\n // otherwise use rAF. Don't try more than twice, since something\n // is wrong otherwise.\n if (runs < 2) {\n const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs++;\n } else {\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef, disabledIndicesRef.current) : getMaxListIndex(listRef, disabledIndicesRef.current);\n keyRef.current = null;\n onNavigate();\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfListBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem();\n forceScrollIntoViewRef.current = false;\n }\n }, [enabled, open, elements.floating, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n // Ensure the parent floating element has focus when a nested child closes\n // to allow arrow key navigation to work after the pointer leaves the child.\n useModernLayoutEffect(() => {\n var _nodes$find;\n if (!enabled || elements.floating || !tree || virtual || !previousMountedRef.current) {\n return;\n }\n const nodes = tree.nodesRef.current;\n const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null || (_nodes$find = _nodes$find.context) == null ? void 0 : _nodes$find.elements.floating;\n const activeEl = activeElement(getDocument$1(elements.floating));\n const treeContainsActiveEl = nodes.some(node => node.context && contains$1(node.context.elements.floating, activeEl));\n if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n parent.focus({\n preventScroll: true\n });\n }\n }, [enabled, elements.floating, tree, parentId, virtual]);\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (!tree) return;\n if (!virtual) return;\n if (parentId) return;\n function handleVirtualFocus(item) {\n setVirtualId(item.id);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n }\n tree.events.on('virtualfocus', handleVirtualFocus);\n return () => {\n tree.events.off('virtualfocus', handleVirtualFocus);\n };\n }, [enabled, tree, virtual, parentId, virtualItemRef]);\n useModernLayoutEffect(() => {\n previousOnNavigateRef.current = onNavigate;\n previousOpenRef.current = open;\n previousMountedRef.current = !!elements.floating;\n });\n useModernLayoutEffect(() => {\n if (!open) {\n keyRef.current = null;\n focusItemOnOpenRef.current = focusItemOnOpen;\n }\n }, [open, focusItemOnOpen]);\n const hasActiveIndex = activeIndex != null;\n const item = React.useMemo(() => {\n function syncCurrentTarget(currentTarget) {\n if (!latestOpenRef.current) return;\n const index = listRef.current.indexOf(currentTarget);\n if (index !== -1 && indexRef.current !== index) {\n indexRef.current = index;\n onNavigate();\n }\n }\n const props = {\n onFocus(_ref) {\n let {\n currentTarget\n } = _ref;\n forceSyncFocusRef.current = true;\n syncCurrentTarget(currentTarget);\n },\n onClick: _ref2 => {\n let {\n currentTarget\n } = _ref2;\n return currentTarget.focus({\n preventScroll: true\n });\n },\n // Safari\n onMouseMove(_ref3) {\n let {\n currentTarget\n } = _ref3;\n forceSyncFocusRef.current = true;\n forceScrollIntoViewRef.current = false;\n if (focusItemOnHover) {\n syncCurrentTarget(currentTarget);\n }\n },\n onPointerLeave(_ref4) {\n let {\n pointerType\n } = _ref4;\n if (!isPointerModalityRef.current || pointerType === 'touch') {\n return;\n }\n forceSyncFocusRef.current = true;\n if (!focusItemOnHover) {\n return;\n }\n indexRef.current = -1;\n onNavigate();\n if (!virtual) {\n var _floatingFocusElement;\n (_floatingFocusElement = floatingFocusElementRef.current) == null || _floatingFocusElement.focus({\n preventScroll: true\n });\n }\n }\n };\n return props;\n }, [latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, virtual]);\n const getParentOrientation = React.useCallback(() => {\n var _tree$nodesRef$curren;\n return parentOrientation != null ? parentOrientation : tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.dataRef) == null ? void 0 : _tree$nodesRef$curren.current.orientation;\n }, [parentId, tree, parentOrientation]);\n const commonOnKeyDown = useEffectEvent(event => {\n isPointerModalityRef.current = false;\n forceSyncFocusRef.current = true;\n\n // When composing a character, Chrome fires ArrowDown twice. Firefox/Safari\n // don't appear to suffer from this. `event.isComposing` is avoided due to\n // Safari not supporting it properly (although it's not needed in the first\n // place for Safari, just avoiding any possible issues).\n if (event.which === 229) {\n return;\n }\n\n // If the floating element is animating out, ignore navigation. Otherwise,\n // the `activeIndex` gets set to 0 despite not being open so the next time\n // the user ArrowDowns, the first item won't be focused.\n if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, cols)) {\n // If the nested list's close key is also the parent navigation key,\n // let the parent navigate. Otherwise, stop propagating the event.\n if (!isMainOrientationKey(event.key, getParentOrientation())) {\n stopEvent(event);\n }\n onOpenChange(false, event.nativeEvent, 'list-navigation');\n if (isHTMLElement(elements.domReference)) {\n if (virtual) {\n tree == null || tree.events.emit('virtualfocus', elements.domReference);\n } else {\n elements.domReference.focus();\n }\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinListIndex(listRef, disabledIndices);\n const maxIndex = getMaxListIndex(listRef, disabledIndices);\n if (!typeableComboboxReference) {\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate();\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate();\n }\n }\n\n // Grid navigation.\n if (cols > 1) {\n const sizes = itemSizes || Array.from({\n length: listRef.current.length\n }, () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = createGridCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(listRef, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(listRef, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const index = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex != null ? listRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loop,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || listRef.current.map((_, index) => isListIndexDisabled(listRef, index, disabledIndices) ? index : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getGridCellIndexOfCorner(indexRef.current > maxIndex ? minIndex : indexRef.current, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction\n // we're moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n event.key === ARROW_DOWN ? 'bl' : event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT) ? 'tr' : 'tl'),\n stopEvent: true\n })];\n if (index != null) {\n indexRef.current = index;\n onNavigate();\n }\n if (orientation === 'both') {\n return;\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n\n // Reset the index if no item is focused.\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate();\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loop) {\n indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else {\n if (loop) {\n indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n }\n if (isIndexOutOfListBounds(listRef, indexRef.current)) {\n indexRef.current = -1;\n }\n onNavigate();\n }\n });\n const ariaActiveDescendantProp = React.useMemo(() => {\n return virtual && open && hasActiveIndex && {\n 'aria-activedescendant': virtualId || activeId\n };\n }, [virtual, open, hasActiveIndex, virtualId, activeId]);\n const floating = React.useMemo(() => {\n return {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...(!typeableComboboxReference ? ariaActiveDescendantProp : {}),\n onKeyDown: commonOnKeyDown,\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n };\n }, [ariaActiveDescendantProp, commonOnKeyDown, orientation, typeableComboboxReference]);\n const reference = React.useMemo(() => {\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n function checkVirtualPointer(event) {\n // `pointerdown` fires first, reset the state then perform the checks.\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n return {\n ...ariaActiveDescendantProp,\n onKeyDown(event) {\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.startsWith('Arrow');\n const isHomeOrEndKey = ['Home', 'End'].includes(event.key);\n const isMoveKey = isArrowKey || isHomeOrEndKey;\n const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n const isCrossCloseKey = isCrossOrientationCloseKey(event.key, orientation, rtl, cols);\n const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n if (virtual && open) {\n const rootNode = tree == null ? void 0 : tree.nodesRef.current.find(node => node.parentId == null);\n const deepestNode = tree && rootNode ? getDeepestNode(tree.nodesRef.current, rootNode.id) : null;\n if (isMoveKey && deepestNode && virtualItemRef) {\n const eventObject = new KeyboardEvent('keydown', {\n key: event.key,\n bubbles: true\n });\n if (isCrossOpenKey || isCrossCloseKey) {\n var _deepestNode$context, _deepestNode$context2;\n const isCurrentTarget = ((_deepestNode$context = deepestNode.context) == null ? void 0 : _deepestNode$context.elements.domReference) === event.currentTarget;\n const dispatchItem = isCrossCloseKey && !isCurrentTarget ? (_deepestNode$context2 = deepestNode.context) == null ? void 0 : _deepestNode$context2.elements.domReference : isCrossOpenKey ? listRef.current.find(item => (item == null ? void 0 : item.id) === activeId) : null;\n if (dispatchItem) {\n stopEvent(event);\n dispatchItem.dispatchEvent(eventObject);\n setVirtualId(undefined);\n }\n }\n if ((isMainKey || isHomeOrEndKey) && deepestNode.context) {\n if (deepestNode.context.open && deepestNode.parentId && event.currentTarget !== deepestNode.context.elements.domReference) {\n var _deepestNode$context$;\n stopEvent(event);\n (_deepestNode$context$ = deepestNode.context.elements.domReference) == null || _deepestNode$context$.dispatchEvent(eventObject);\n return;\n }\n }\n }\n return commonOnKeyDown(event);\n }\n // If a floating element should not open on arrow key down, avoid\n // setting `activeIndex` while it's closed.\n if (!open && !openOnArrowKeyDown && isArrowKey) {\n return;\n }\n if (isNavigationKey) {\n const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation());\n keyRef.current = nested && isParentMainKey ? null : event.key;\n }\n if (nested) {\n if (isParentCrossOpenKey) {\n stopEvent(event);\n if (open) {\n indexRef.current = getMinListIndex(listRef, disabledIndicesRef.current);\n onNavigate();\n } else {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n }\n }\n return;\n }\n if (isMainKey) {\n if (selectedIndex != null) {\n indexRef.current = selectedIndex;\n }\n stopEvent(event);\n if (!open && openOnArrowKeyDown) {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n } else {\n commonOnKeyDown(event);\n }\n if (open) {\n onNavigate();\n }\n }\n },\n onFocus() {\n if (open && !virtual) {\n indexRef.current = -1;\n onNavigate();\n }\n },\n onPointerDown: checkVirtualPointer,\n onPointerEnter: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n };\n }, [activeId, ariaActiveDescendantProp, cols, commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, onOpenChange, open, openOnArrowKeyDown, orientation, getParentOrientation, rtl, selectedIndex, tree, virtual, virtualItemRef]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item\n } : {}, [enabled, reference, floating, item]);\n}\n\nconst componentRoleToAriaRoleMap = /*#__PURE__*/new Map([['select', 'listbox'], ['combobox', 'listbox'], ['label', false]]);\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n var _elements$domReferenc, _componentRoleToAriaR;\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n elements,\n floatingId: defaultFloatingId\n } = context;\n const {\n enabled = true,\n role = 'dialog'\n } = props;\n const defaultReferenceId = useId();\n const referenceId = ((_elements$domReferenc = elements.domReference) == null ? void 0 : _elements$domReferenc.id) || defaultReferenceId;\n const floatingId = React.useMemo(() => {\n var _getFloatingFocusElem;\n return ((_getFloatingFocusElem = getFloatingFocusElement(elements.floating)) == null ? void 0 : _getFloatingFocusElem.id) || defaultFloatingId;\n }, [elements.floating, defaultFloatingId]);\n const ariaRole = (_componentRoleToAriaR = componentRoleToAriaRoleMap.get(role)) != null ? _componentRoleToAriaR : role;\n const parentId = useFloatingParentNodeId();\n const isNested = parentId != null;\n const reference = React.useMemo(() => {\n if (ariaRole === 'tooltip' || role === 'label') {\n return {\n [\"aria-\" + (role === 'label' ? 'labelledby' : 'describedby')]: open ? floatingId : undefined\n };\n }\n return {\n 'aria-expanded': open ? 'true' : 'false',\n 'aria-haspopup': ariaRole === 'alertdialog' ? 'dialog' : ariaRole,\n 'aria-controls': open ? floatingId : undefined,\n ...(ariaRole === 'listbox' && {\n role: 'combobox'\n }),\n ...(ariaRole === 'menu' && {\n id: referenceId\n }),\n ...(ariaRole === 'menu' && isNested && {\n role: 'menuitem'\n }),\n ...(role === 'select' && {\n 'aria-autocomplete': 'none'\n }),\n ...(role === 'combobox' && {\n 'aria-autocomplete': 'list'\n })\n };\n }, [ariaRole, floatingId, isNested, open, referenceId, role]);\n const floating = React.useMemo(() => {\n const floatingProps = {\n id: floatingId,\n ...(ariaRole && {\n role: ariaRole\n })\n };\n if (ariaRole === 'tooltip' || role === 'label') {\n return floatingProps;\n }\n return {\n ...floatingProps,\n ...(ariaRole === 'menu' && {\n 'aria-labelledby': referenceId\n })\n };\n }, [ariaRole, floatingId, referenceId, role]);\n const item = React.useCallback(_ref => {\n let {\n active,\n selected\n } = _ref;\n const commonProps = {\n role: 'option',\n ...(active && {\n id: floatingId + \"-fui-option\"\n })\n };\n\n // For `menu`, we are unable to tell if the item is a `menuitemradio`\n // or `menuitemcheckbox`. For backwards-compatibility reasons, also\n // avoid defaulting to `menuitem` as it may overwrite custom role props.\n switch (role) {\n case 'select':\n case 'combobox':\n return {\n ...commonProps,\n 'aria-selected': selected\n };\n }\n return {};\n }, [floatingId, role]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item\n } : {}, [enabled, reference, floating, item]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n const [isMounted, setIsMounted] = React.useState(open);\n if (open && !isMounted) {\n setIsMounted(true);\n }\n React.useEffect(() => {\n if (!open && isMounted) {\n const timeout = setTimeout(() => setIsMounted(false), durationMs);\n return () => clearTimeout(timeout);\n }\n }, [open, isMounted, durationMs]);\n return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n elements: {\n floating\n }\n } = context;\n const {\n duration = 250\n } = props;\n const isNumberDuration = typeof duration === 'number';\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [status, setStatus] = React.useState('unmounted');\n const isMounted = useDelayUnmount(open, closeDuration);\n if (!isMounted && status === 'close') {\n setStatus('unmounted');\n }\n useModernLayoutEffect(() => {\n if (!floating) return;\n if (open) {\n setStatus('initial');\n const frame = requestAnimationFrame(() => {\n // Ensure it opens before paint. With `FloatingDelayGroup`,\n // this avoids a flicker when moving between floating elements\n // to ensure one is always open with no missing frames.\n ReactDOM.flushSync(() => {\n setStatus('open');\n });\n });\n return () => {\n cancelAnimationFrame(frame);\n };\n }\n setStatus('close');\n }, [open, floating]);\n return {\n isMounted,\n status\n };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n initial: unstable_initial = {\n opacity: 0\n },\n open: unstable_open,\n close: unstable_close,\n common: unstable_common,\n duration = 250\n } = props;\n const placement = context.placement;\n const side = placement.split('-')[0];\n const fnArgs = React.useMemo(() => ({\n side,\n placement\n }), [side, placement]);\n const isNumberDuration = typeof duration === 'number';\n const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [styles, setStyles] = React.useState(() => ({\n ...execWithArgsOrReturn(unstable_common, fnArgs),\n ...execWithArgsOrReturn(unstable_initial, fnArgs)\n }));\n const {\n isMounted,\n status\n } = useTransitionStatus(context, {\n duration\n });\n const initialRef = useLatestRef(unstable_initial);\n const openRef = useLatestRef(unstable_open);\n const closeRef = useLatestRef(unstable_close);\n const commonRef = useLatestRef(unstable_common);\n useModernLayoutEffect(() => {\n const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n acc[key] = '';\n return acc;\n }, {});\n if (status === 'initial') {\n setStyles(styles => ({\n transitionProperty: styles.transitionProperty,\n ...commonStyles,\n ...initialStyles\n }));\n }\n if (status === 'open') {\n setStyles({\n transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n transitionDuration: openDuration + \"ms\",\n ...commonStyles,\n ...openStyles\n });\n }\n if (status === 'close') {\n const styles = closeStyles || initialStyles;\n setStyles({\n transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n transitionDuration: closeDuration + \"ms\",\n ...commonStyles,\n ...styles\n });\n }\n }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n return {\n isMounted,\n styles\n };\n}\n\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nfunction useTypeahead(context, props) {\n var _ref;\n const {\n open,\n dataRef\n } = context;\n const {\n listRef,\n activeIndex,\n onMatch: unstable_onMatch,\n onTypingChange: unstable_onTypingChange,\n enabled = true,\n findMatch = null,\n resetMs = 750,\n ignoreKeys = [],\n selectedIndex = null\n } = props;\n const timeoutIdRef = React.useRef(-1);\n const stringRef = React.useRef('');\n const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n const matchIndexRef = React.useRef(null);\n const onMatch = useEffectEvent(unstable_onMatch);\n const onTypingChange = useEffectEvent(unstable_onTypingChange);\n const findMatchRef = useLatestRef(findMatch);\n const ignoreKeysRef = useLatestRef(ignoreKeys);\n useModernLayoutEffect(() => {\n if (open) {\n clearTimeoutIfSet(timeoutIdRef);\n matchIndexRef.current = null;\n stringRef.current = '';\n }\n }, [open]);\n useModernLayoutEffect(() => {\n // Sync arrow key navigation but not typeahead navigation.\n if (open && stringRef.current === '') {\n var _ref2;\n prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n }\n }, [open, selectedIndex, activeIndex]);\n const setTypingChange = useEffectEvent(value => {\n if (value) {\n if (!dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n } else {\n if (dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n }\n });\n const onKeyDown = useEffectEvent(event => {\n function getMatchingIndex(list, orderedList, string) {\n const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : text.toLocaleLowerCase().indexOf(string.toLocaleLowerCase())) === 0);\n return str ? list.indexOf(str) : -1;\n }\n const listContent = listRef.current;\n if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n setTypingChange(false);\n } else if (event.key === ' ') {\n stopEvent(event);\n }\n }\n if (listContent == null || ignoreKeysRef.current.includes(event.key) ||\n // Character key.\n event.key.length !== 1 ||\n // Modifier key.\n event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n if (open && event.key !== ' ') {\n stopEvent(event);\n setTypingChange(true);\n }\n\n // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n // allow it in this case, too.\n const allowRapidSuccessionOfFirstLetter = listContent.every(text => {\n var _text$, _text$2;\n return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n });\n\n // Allows the user to cycle through items that start with the same letter\n // in rapid succession.\n if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n }\n stringRef.current += event.key;\n clearTimeoutIfSet(timeoutIdRef);\n timeoutIdRef.current = window.setTimeout(() => {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n }, resetMs);\n const prevIndex = prevIndexRef.current;\n const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n if (index !== -1) {\n onMatch(index);\n matchIndexRef.current = index;\n } else if (event.key !== ' ') {\n stringRef.current = '';\n setTypingChange(false);\n }\n });\n const reference = React.useMemo(() => ({\n onKeyDown\n }), [onKeyDown]);\n const floating = React.useMemo(() => {\n return {\n onKeyDown,\n onKeyUp(event) {\n if (event.key === ' ') {\n setTypingChange(false);\n }\n }\n };\n }, [onKeyDown, setTypingChange]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n return {\n ...state,\n rects: {\n ...state.rects,\n floating: {\n ...state.rects.floating,\n height\n }\n }\n };\n}\n/**\n * Positions the floating element such that an inner element inside of it is\n * anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n * @deprecated\n */\nconst inner = props => ({\n name: 'inner',\n options: props,\n async fn(state) {\n const {\n listRef,\n overflowRef,\n onFallbackChange,\n offset: innerOffset = 0,\n index = 0,\n minItemsVisible = 4,\n referenceOverflowThreshold = 0,\n scrollRef,\n ...detectOverflowOptions\n } = evaluate(props, state);\n const {\n rects,\n elements: {\n floating\n }\n } = state;\n const item = listRef.current[index];\n const scrollEl = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n\n // Valid combinations:\n // 1. Floating element is the scrollRef and has a border (default)\n // 2. Floating element is not the scrollRef, floating element has a border\n // 3. Floating element is not the scrollRef, scrollRef has a border\n // Floating > {...getFloatingProps()} wrapper > scrollRef > items is not\n // allowed as VoiceOver doesn't work.\n const clientTop = floating.clientTop || scrollEl.clientTop;\n const floatingIsBordered = floating.clientTop !== 0;\n const scrollElIsBordered = scrollEl.clientTop !== 0;\n const floatingIsScrollEl = floating === scrollEl;\n if (process.env.NODE_ENV !== \"production\") {\n if (!state.placement.startsWith('bottom')) {\n warn('`placement` side must be \"bottom\" when using the `inner`', 'middleware.');\n }\n }\n if (!item) {\n return {};\n }\n const nextArgs = {\n ...state,\n ...(await offset(-item.offsetTop - floating.clientTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n };\n const overflow = await detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, scrollEl.scrollHeight + clientTop + floating.clientTop), detectOverflowOptions);\n const refOverflow = await detectOverflow(nextArgs, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const diffY = max(0, overflow.top);\n const nextY = nextArgs.y + diffY;\n const isScrollable = scrollEl.scrollHeight > scrollEl.clientHeight;\n const rounder = isScrollable ? v => v : round;\n const maxHeight = rounder(max(0, scrollEl.scrollHeight + (floatingIsBordered && floatingIsScrollEl || scrollElIsBordered ? clientTop * 2 : 0) - diffY - max(0, overflow.bottom)));\n scrollEl.style.maxHeight = maxHeight + \"px\";\n scrollEl.scrollTop = diffY;\n\n // There is not enough space, fallback to standard anchored positioning\n if (onFallbackChange) {\n const shouldFallback = scrollEl.offsetHeight < item.offsetHeight * min(minItemsVisible, listRef.current.length) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold;\n ReactDOM.flushSync(() => onFallbackChange(shouldFallback));\n }\n if (overflowRef) {\n overflowRef.current = await detectOverflow(getArgsWithCustomFloatingHeight({\n ...nextArgs,\n y: nextY\n }, scrollEl.offsetHeight + clientTop + floating.clientTop), detectOverflowOptions);\n }\n return {\n y: nextY\n };\n }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n * @deprecated\n */\nfunction useInnerOffset(context, props) {\n const {\n open,\n elements\n } = context;\n const {\n enabled = true,\n overflowRef,\n scrollRef,\n onChange: unstable_onChange\n } = props;\n const onChange = useEffectEvent(unstable_onChange);\n const controlledScrollingRef = React.useRef(false);\n const prevScrollTopRef = React.useRef(null);\n const initialOverflowRef = React.useRef(null);\n React.useEffect(() => {\n if (!enabled) return;\n function onWheel(e) {\n if (e.ctrlKey || !el || overflowRef.current == null) {\n return;\n }\n const dY = e.deltaY;\n const isAtTop = overflowRef.current.top >= -0.5;\n const isAtBottom = overflowRef.current.bottom >= -0.5;\n const remainingScroll = el.scrollHeight - el.clientHeight;\n const sign = dY < 0 ? -1 : 1;\n const method = dY < 0 ? 'max' : 'min';\n if (el.scrollHeight <= el.clientHeight) {\n return;\n }\n if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n e.preventDefault();\n ReactDOM.flushSync(() => {\n onChange(d => d + Math[method](dY, remainingScroll * sign));\n });\n } else if (/firefox/i.test(getUserAgent())) {\n // Needed to propagate scrolling during momentum scrolling phase once\n // it gets limited by the boundary. UX improvement, not critical.\n el.scrollTop += dY;\n }\n }\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (open && el) {\n el.addEventListener('wheel', onWheel);\n\n // Wait for the position to be ready.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n if (overflowRef.current != null) {\n initialOverflowRef.current = {\n ...overflowRef.current\n };\n }\n });\n return () => {\n prevScrollTopRef.current = null;\n initialOverflowRef.current = null;\n el.removeEventListener('wheel', onWheel);\n };\n }\n }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n const floating = React.useMemo(() => ({\n onKeyDown() {\n controlledScrollingRef.current = true;\n },\n onWheel() {\n controlledScrollingRef.current = false;\n },\n onPointerMove() {\n controlledScrollingRef.current = false;\n },\n onScroll() {\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n return;\n }\n if (prevScrollTopRef.current !== null) {\n const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n ReactDOM.flushSync(() => onChange(d => d + scrollDiff));\n }\n }\n\n // [Firefox] Wait for the height change to have been applied.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n });\n }\n }), [elements.floating, onChange, overflowRef, scrollRef]);\n return React.useMemo(() => enabled ? {\n floating\n } : {}, [enabled, floating]);\n}\n\nfunction getNodeChildren(nodes, id, onlyOpenChildren) {\n if (onlyOpenChildren === void 0) {\n onlyOpenChildren = true;\n }\n const directChildren = nodes.filter(node => {\n var _node$context;\n return node.parentId === id && (!onlyOpenChildren || ((_node$context = node.context) == null ? void 0 : _node$context.open));\n });\n return directChildren.flatMap(child => [child, ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n const [x, y] = point;\n let isInside = false;\n const length = polygon.length;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const [xi, yi] = polygon[i] || [0, 0];\n const [xj, yj] = polygon[j] || [0, 0];\n const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) {\n isInside = !isInside;\n }\n }\n return isInside;\n}\nfunction isInside(point, rect) {\n return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safepolygon\n */\nfunction safePolygon(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n buffer = 0.5,\n blockPointerEvents = false,\n requireIntent = true\n } = options;\n const timeoutRef = {\n current: -1\n };\n let hasLanded = false;\n let lastX = null;\n let lastY = null;\n let lastCursorTime = typeof performance !== 'undefined' ? performance.now() : 0;\n function getCursorSpeed(x, y) {\n const currentTime = performance.now();\n const elapsedTime = currentTime - lastCursorTime;\n if (lastX === null || lastY === null || elapsedTime === 0) {\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return null;\n }\n const deltaX = x - lastX;\n const deltaY = y - lastY;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n const speed = distance / elapsedTime; // px / ms\n\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return speed;\n }\n const fn = _ref => {\n let {\n x,\n y,\n placement,\n elements,\n onClose,\n nodeId,\n tree\n } = _ref;\n return function onMouseMove(event) {\n function close() {\n clearTimeoutIfSet(timeoutRef);\n onClose();\n }\n clearTimeoutIfSet(timeoutRef);\n if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n return;\n }\n const {\n clientX,\n clientY\n } = event;\n const clientPoint = [clientX, clientY];\n const target = getTarget(event);\n const isLeave = event.type === 'mouseleave';\n const isOverFloatingEl = contains(elements.floating, target);\n const isOverReferenceEl = contains(elements.domReference, target);\n const refRect = elements.domReference.getBoundingClientRect();\n const rect = elements.floating.getBoundingClientRect();\n const side = placement.split('-')[0];\n const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n const isOverReferenceRect = isInside(clientPoint, refRect);\n const isFloatingWider = rect.width > refRect.width;\n const isFloatingTaller = rect.height > refRect.height;\n const left = (isFloatingWider ? refRect : rect).left;\n const right = (isFloatingWider ? refRect : rect).right;\n const top = (isFloatingTaller ? refRect : rect).top;\n const bottom = (isFloatingTaller ? refRect : rect).bottom;\n if (isOverFloatingEl) {\n hasLanded = true;\n if (!isLeave) {\n return;\n }\n }\n if (isOverReferenceEl) {\n hasLanded = false;\n }\n if (isOverReferenceEl && !isLeave) {\n hasLanded = true;\n return;\n }\n\n // Prevent overlapping floating element from being stuck in an open-close\n // loop: https://github.com/floating-ui/floating-ui/issues/1910\n if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n return;\n }\n\n // If any nested child is open, abort.\n if (tree && getNodeChildren(tree.nodesRef.current, nodeId).length) {\n return;\n }\n\n // If the pointer is leaving from the opposite side, the \"buffer\" logic\n // creates a point where the floating element remains open, but should be\n // ignored.\n // A constant of 1 handles floating point rounding errors.\n if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n return close();\n }\n\n // Ignore when the cursor is within the rectangular trough between the\n // two elements. Since the triangle is created from the cursor point,\n // which can start beyond the ref element's edge, traversing back and\n // forth from the ref to the floating element can cause it to close. This\n // ensures it always remains open in that case.\n let rectPoly = [];\n switch (side) {\n case 'top':\n rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n break;\n case 'bottom':\n rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n break;\n case 'left':\n rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n break;\n case 'right':\n rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n break;\n }\n function getPolygon(_ref2) {\n let [x, y] = _ref2;\n switch (side) {\n case 'top':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'bottom':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'left':\n {\n const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n return [...commonPoints, cursorPointOne, cursorPointTwo];\n }\n case 'right':\n {\n const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n }\n }\n if (isPointInPolygon([clientX, clientY], rectPoly)) {\n return;\n }\n if (hasLanded && !isOverReferenceRect) {\n return close();\n }\n if (!isLeave && requireIntent) {\n const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n const cursorSpeedThreshold = 0.1;\n if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n return close();\n }\n }\n if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n close();\n } else if (!hasLanded && requireIntent) {\n timeoutRef.current = window.setTimeout(close, 40);\n }\n };\n };\n fn.__options = {\n blockPointerEvents\n };\n return fn;\n}\n\nexport { Composite, CompositeItem, FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, NextFloatingDelayGroup, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingRootContext, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useNextDelayGroup, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport { floor } from '@floating-ui/utils';\nimport { tabbable } from 'tabbable';\n\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData != null && uaData.platform) {\n return uaData.platform;\n }\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(_ref => {\n let {\n brand,\n version\n } = _ref;\n return brand + \"/\" + version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\nfunction isSafari() {\n // Chrome DevTools does not complain about navigator.vendor\n return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n const re = /android/i;\n return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n return getUserAgent().includes('jsdom/');\n}\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\n\nfunction activeElement(doc) {\n let activeElement = doc.activeElement;\n while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n var _activeElement;\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nfunction isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const e = event;\n return e.target != null && node.contains(e.target);\n}\nfunction isRootElement(element) {\n return element.matches('html,body');\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction isTypeableCombobox(element) {\n if (!element) return false;\n return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\nfunction matchesFocusVisible(element) {\n // We don't want to block focus from working with `visibleOnly`\n // (JSDOM doesn't match `:focus-visible` when the element has `:focus`)\n if (!element || isJSDOM()) return true;\n try {\n return element.matches(':focus-visible');\n } catch (_e) {\n return true;\n }\n}\nfunction getFloatingFocusElement(floatingElement) {\n if (!floatingElement) {\n return null;\n }\n // Try to find the element that has `{...getFloatingProps()}` spread on it.\n // This indicates the floating element is acting as a positioning wrapper, and\n // so focus should be managed on the child element with the event handlers and\n // aria props.\n return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(\"[\" + FOCUSABLE_ATTRIBUTE + \"]\") || floatingElement;\n}\n\nfunction getNodeChildren(nodes, id, onlyOpenChildren) {\n if (onlyOpenChildren === void 0) {\n onlyOpenChildren = true;\n }\n const directChildren = nodes.filter(node => {\n var _node$context;\n return node.parentId === id && (!onlyOpenChildren || ((_node$context = node.context) == null ? void 0 : _node$context.open));\n });\n return directChildren.flatMap(child => [child, ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);\n}\nfunction getDeepestNode(nodes, id) {\n let deepestNodeId;\n let maxDepth = -1;\n function findDeepest(nodeId, depth) {\n if (depth > maxDepth) {\n deepestNodeId = nodeId;\n maxDepth = depth;\n }\n const children = getNodeChildren(nodes, nodeId);\n children.forEach(child => {\n findDeepest(child.id, depth + 1);\n });\n }\n findDeepest(id, 0);\n return nodes.find(node => node.id === deepestNodeId);\n}\nfunction getNodeAncestors(nodes, id) {\n var _nodes$find;\n let allAncestors = [];\n let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n while (currentParentId) {\n const currentNode = nodes.find(node => node.id === currentParentId);\n currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n if (currentNode) {\n allAncestors = allAncestors.concat(currentNode);\n }\n }\n return allAncestors;\n}\n\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\nfunction isReactEvent(event) {\n return 'nativeEvent' in event;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n // Try to find a workaround for this. `react-aria` source still has the check.\n if (event.mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n if (isAndroid() && event.pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n if (isJSDOM()) return false;\n return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n // iOS VoiceOver returns 0.333• for width/height.\n event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n const values = ['mouse', 'pen'];\n if (!strict) {\n values.push('', undefined);\n }\n return values.includes(pointerType);\n}\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n ...React\n};\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\nconst useInsertionEffect = SafeReact.useInsertionEffect;\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n const ref = React.useRef(() => {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error('Cannot call an event handler while rendering.');\n }\n });\n useSafeInsertionEffect(() => {\n ref.current = callback;\n });\n return React.useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return ref.current == null ? void 0 : ref.current(...args);\n }, []);\n}\n\nfunction isDifferentGridRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfListBounds(listRef, index) {\n return index < 0 || index >= listRef.current.length;\n}\nfunction getMinListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef, {\n disabledIndices\n });\n}\nfunction getMaxListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\nfunction findNonDisabledListIndex(listRef, _temp) {\n let {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n } = _temp === void 0 ? {} : _temp;\n let index = startingIndex;\n do {\n index += decrement ? -amount : amount;\n } while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));\n return index;\n}\nfunction getGridNavigatedIndex(listRef, _ref) {\n let {\n event,\n orientation,\n loop,\n rtl,\n cols,\n disabledIndices,\n minIndex,\n maxIndex,\n prevIndex,\n stopEvent: stop = false\n } = _ref;\n let nextIndex = prevIndex;\n if (event.key === ARROW_UP) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: nextIndex,\n amount: cols,\n decrement: true,\n disabledIndices\n });\n if (loop && (prevIndex - cols < minIndex || nextIndex < 0)) {\n const col = prevIndex % cols;\n const maxCol = maxIndex % cols;\n const offset = maxIndex - (maxCol - col);\n if (maxCol === col) {\n nextIndex = maxIndex;\n } else {\n nextIndex = maxCol > col ? offset : offset - cols;\n }\n }\n }\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === ARROW_DOWN) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = minIndex;\n } else {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n amount: cols,\n disabledIndices\n });\n if (loop && prevIndex + cols > maxIndex) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex % cols - cols,\n amount: cols,\n disabledIndices\n });\n }\n }\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n\n // Remains on the same row/column.\n if (orientation === 'both') {\n const prevRow = floor(prevIndex / cols);\n if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {\n stop && stopEvent(event);\n if (prevIndex % cols !== cols - 1) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loop && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n stop && stopEvent(event);\n if (prevIndex % cols !== 0) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n decrement: true,\n disabledIndices\n });\n if (loop && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n const lastRow = floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n if (loop && lastRow) {\n nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n } else {\n nextIndex = prevIndex;\n }\n }\n }\n return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nfunction createGridCellMap(sizes, cols, dense) {\n const cellMap = [];\n let startIndex = 0;\n sizes.forEach((_ref2, index) => {\n let {\n width,\n height\n } = _ref2;\n if (width > cols) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"[Floating UI]: Invalid grid - item width at index \" + index + \" is greater than grid columns\");\n }\n }\n let itemPlaced = false;\n if (dense) {\n startIndex = 0;\n }\n while (!itemPlaced) {\n const targetCells = [];\n for (let i = 0; i < width; i++) {\n for (let j = 0; j < height; j++) {\n targetCells.push(startIndex + i + j * cols);\n }\n }\n if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n targetCells.forEach(cell => {\n cellMap[cell] = index;\n });\n itemPlaced = true;\n } else {\n startIndex++;\n }\n }\n });\n\n // convert into a non-sparse array\n return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nfunction getGridCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n if (index === -1) return -1;\n const firstCellIndex = cellMap.indexOf(index);\n const sizeItem = sizes[index];\n switch (corner) {\n case 'tl':\n return firstCellIndex;\n case 'tr':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + sizeItem.width - 1;\n case 'bl':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + (sizeItem.height - 1) * cols;\n case 'br':\n return cellMap.lastIndexOf(index);\n }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nfunction getGridCellIndices(indices, cellMap) {\n return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nfunction isListIndexDisabled(listRef, index, disabledIndices) {\n if (typeof disabledIndices === 'function') {\n return disabledIndices(index);\n } else if (disabledIndices) {\n return disabledIndices.includes(index);\n }\n const element = listRef.current[index];\n return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nconst getTabbableOptions = () => ({\n getShadowRoot: true,\n displayCheck:\n // JSDOM does not support the `tabbable` library. To solve this we can\n // check if `ResizeObserver` is a real function (not polyfilled), which\n // determines if the current environment is JSDOM-like.\n typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, dir) {\n const list = tabbable(container, getTabbableOptions());\n const len = list.length;\n if (len === 0) return;\n const active = activeElement(getDocument(container));\n const index = list.indexOf(active);\n const nextIndex = index === -1 ? dir === 1 ? 0 : len - 1 : index + dir;\n return list[nextIndex];\n}\nfunction getNextTabbable(referenceElement) {\n return getTabbableIn(getDocument(referenceElement).body, 1) || referenceElement;\n}\nfunction getPreviousTabbable(referenceElement) {\n return getTabbableIn(getDocument(referenceElement).body, -1) || referenceElement;\n}\nfunction isOutsideEvent(event, container) {\n const containerElement = container || event.currentTarget;\n const relatedTarget = event.relatedTarget;\n return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n const tabbableElements = tabbable(container, getTabbableOptions());\n tabbableElements.forEach(element => {\n element.dataset.tabindex = element.getAttribute('tabindex') || '';\n element.setAttribute('tabindex', '-1');\n });\n}\nfunction enableFocusInside(container) {\n const elements = container.querySelectorAll('[data-tabindex]');\n elements.forEach(element => {\n const tabindex = element.dataset.tabindex;\n delete element.dataset.tabindex;\n if (tabindex) {\n element.setAttribute('tabindex', tabindex);\n } else {\n element.removeAttribute('tabindex');\n }\n });\n}\n\nexport { activeElement, contains, createGridCellMap, disableFocusInside, enableFocusInside, findNonDisabledListIndex, getDeepestNode, getDocument, getFloatingFocusElement, getGridCellIndexOfCorner, getGridCellIndices, getGridNavigatedIndex, getMaxListIndex, getMinListIndex, getNextTabbable, getNodeAncestors, getNodeChildren, getPlatform, getPreviousTabbable, getTabbableOptions, getTarget, getUserAgent, isAndroid, isDifferentGridRow, isEventTargetWithin, isIndexOutOfListBounds, isJSDOM, isListIndexDisabled, isMac, isMouseLikePointerType, isOutsideEvent, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, matchesFocusVisible, stopEvent, useEffectEvent, useLatestRef, index as useModernLayoutEffect };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (_e) {\n return false;\n }\n });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","var e={};function t(e,t){if(!e)throw new Error(t)}e.d=(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const n=e=>null===e,r=e=>null==e,a=e=>null!=e,l=e=>void 0===e,i=e=>\"number\"==typeof e,o=e=>\"boolean\"==typeof e,s=e=>\"object\"==typeof e,c=e=>s(e)&&!n(e)&&0===Object.keys(e).length,u=e=>e instanceof Date,f=e=>e instanceof Blob,h=e=>e instanceof Error,d=e=>u(e)&&!isNaN(e.getTime()),m=e=>e instanceof RegExp,y=e=>e instanceof Map,w=e=>e instanceof Set,g=e=>\"symbol\"==typeof e,p=e=>i(e)&&isFinite(e),b=e=>i(e)&&Number.isInteger(e),x=e=>p(e)&&!Number.isInteger(e),S=e=>Array.isArray(e),v=e=>S(e)&&0===e.length,A=e=>e.filter(Boolean),M=e=>[...new Set(e)],O=(e,n)=>(t(n>0,\"Chunk size must be greater than 0\"),Array.from({length:Math.ceil(e.length/n)},(t,r)=>e.slice(r*n,(r+1)*n))),k=(...e)=>{if(0===e.length)return[];if(1===e.length)return[...e[0]];const[t,...n]=e;return M(t).filter(e=>n.every(t=>t.includes(e)))},E=(e,t)=>e.filter(e=>!t.includes(e)),T=(...e)=>t=>e.reduce((e,t)=>t(e),t),X=(...e)=>t=>e.reduceRight((e,t)=>t(e),t),_=()=>{},P=e=>\"function\"==typeof e,z=e=>(...t)=>!e(...t),L=e=>{let t,n=!1;return function(...r){return n||(n=!0,t=e.apply(this,r)),t}},Y=e=>P(e?.then),C=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++)n.push(await t(e[r],r,e));return n},R=async(e,t)=>Promise.all(e.map(t)),N=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++){const a=e[r];await t(a,r,e)&&n.push(a)}return n},j=async(e,t)=>{const n=await R(e,async(e,n,r)=>!!await t(e,n,r)&&e);return A(n)},F=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return!0;return!1},I=async(e,t)=>{for(let n=0;n<e.length;n++)if(!await t(e[n],n,e))return!1;return!0},$=async(e,t,n)=>{let r=n;for(let n=0;n<e.length;n++)r=await t(r,e[n],n,e);return r},H=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return e[n];return null},U=e=>new Promise(t=>setTimeout(t,e)),W=async(e,t,n=\"Operation timed out\")=>{try{return await Promise.race([e,U(t).then(()=>Promise.reject(new Error(n)))])}finally{}},B=(e,{maxAttempts:t=3,delayMs:n=300,backoff:r=!0,onRetry:a}={})=>async(...l)=>{let i;for(let o=1;o<=t;o++)try{return await e(...l)}catch(e){if(i=e,o<t){a?.(o,e);const t=r?n*2**(o-1):n;await U(t)}}throw i},D=e=>\"string\"==typeof e,V=e=>e.replace(/([a-z0-9])([A-Z])/g,\"$1-$2\").toLowerCase(),Z=e=>{const t=e.charAt(0),n=e.slice(1);return t.toLowerCase()+n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)},G=e=>e.replace(/([a-z0-9])([A-Z])/g,\"$1 $2\"),q=e=>e.split(\" \").filter(Boolean),J=e=>\"\"===e||r(e),K=e=>{const t=e.lastIndexOf(\".\");return t<=0||t===e.length-1?[e,\"\"]:[e.slice(0,t),e.slice(t+1).toLowerCase()]},Q=(e,...t)=>\"function\"==typeof e?e(...t):e,ee=(e,t,n,r)=>{const a=n-e,l=r-t;return Math.hypot(a,l)},te=(e,t)=>Math.abs(e/t),ne=(e,t)=>e*t/100,re=e=>{let t=5381;for(let n=0;n<e.length;n++)t=33*t^e.charCodeAt(n);return(t>>>0).toString(36)},ae=e=>new Blob([e],{type:e.type}),le=e=>new DOMRect(e.offsetLeft,e.offsetTop,e.clientWidth,e.clientHeight),ie=e=>\"A\"===e.tagName,oe=e=>\"true\"===e.getAttribute(\"contenteditable\"),se=(e,{fileName:n,target:r}={})=>{if(l(document))return;const a=document.createElement(\"a\");let i=null;try{const t=D(e)?e:i=URL.createObjectURL(e);a.href=t,n&&(a.download=n),r&&(a.target=r),document.body.appendChild(a),a.click()}finally{a.remove(),i&&setTimeout(()=>{t(i,\"Object URL should not be null\"),URL.revokeObjectURL(i)},0)}},ce=e=>e.scrollWidth>e.clientWidth,ue=e=>Math.max(0,e.scrollWidth-e.clientWidth),fe=e=>e.scrollHeight>e.clientHeight,he=e=>Math.max(0,e.scrollHeight-e.clientHeight),de=({overflowSize:e,containerSize:t,elementOffset:n,elementSize:r})=>{if(e<=0)return 0;const a=n+r/2-t/2;return-Math.max(0,Math.min(a,e))},me=(e,t,{axis:n=\"both\"}={})=>{let r=0,a=0;\"x\"!==n&&\"both\"!==n||(r=de({overflowSize:ue(e),containerSize:e.clientWidth,elementOffset:t.offsetLeft,elementSize:t.clientWidth})),\"y\"!==n&&\"both\"!==n||(a=de({overflowSize:he(e),containerSize:e.clientHeight,elementOffset:t.offsetTop,elementSize:t.clientHeight})),e.style.transform=`translate(${r}px, ${a}px)`},ye=e=>{const t=window.getComputedStyle(e).getPropertyValue(\"transform\").match(/^matrix\\((.+)\\)$/);if(!t)return{translateX:0,translateY:0,scaleX:1,scaleY:1,skewX:0,skewY:0};const[n,r,a,l,i,o]=t[1].split(\", \").map(parseFloat);return{translateX:i,translateY:o,scaleX:n,scaleY:l,skewX:a,skewY:r}},we=e=>e instanceof File,ge=e=>{if(!e)return[];const t=[];for(let n=0;n<e.length;n++)t.push(e[n]);return t},pe=(e,t)=>new File([e],t,{type:e.type}),be=async(e,{skipFiles:t=[\".DS_Store\",\"Thumbs.db\",\"desktop.ini\",\"ehthumbs.db\",\".Spotlight-V100\",\".Trashes\",\".fseventsd\",\"__MACOSX\"]}={})=>{const n=new Set(t),r=await(async e=>{const t=e.createReader(),n=async()=>new Promise((e,r)=>{t.readEntries(async t=>{if(t.length)try{const r=await n();e([...t,...r])}catch(e){r(e)}else e([])},r)});return n()})(e);return(await R(r,async e=>e.isDirectory?be(e,{skipFiles:t}):n.has(e.name)?[]:[await new Promise((t,n)=>{e.file(t,n)})])).flat()},xe=async(e,t={})=>{const n=e?.items;if(!n)return[];const r=[];for(let e=0;e<n.length;e++){const a=n[e];if(\"webkitGetAsEntry\"in a){const e=a.webkitGetAsEntry?.();if(e?.isDirectory){r.push(be(e,t));continue}if(e?.isFile){r.push(new Promise((t,n)=>e.file(e=>t([e]),n)));continue}}const l=a.getAsFile();l&&r.push(Promise.resolve([l]))}return(await Promise.all(r)).flat()},Se=e=>Object.entries(e).reduce((e,[t,n])=>(void 0!==n&&(e[t]=n),e),{}),ve=({delta:e,value:t,min:n,max:r})=>{if(0===e)return null;const a=t+e;return e<0?t<=n?null:Math.max(a,n):e>0?t>=r?null:Math.min(a,r):null},Ae=({value:e,min:t,max:n,velocity:r,deltaTime:a,friction:l=.002,minVelocity:i=.01})=>{if(Math.abs(r)<i)return null;const o=ve({delta:r*a,value:e,min:t,max:n});return null===o?null:{value:o,velocity:r*Math.exp(-l*a)}},Me=(e,t)=>Math.max(0,Math.min(e.right,t.right)-Math.max(e.left,t.left))*Math.max(0,Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top))/(t.width*t.height),Oe=(e,t,{allowFallback:n=!0,invert:r=!0}={})=>{const a=r?-1:1;switch(t){case\"x\":return{deltaX:a*(0!==e.deltaX?e.deltaX:n?e.deltaY:0),deltaY:0};case\"y\":return{deltaX:0,deltaY:a*e.deltaY};default:return{deltaX:a*e.deltaX,deltaY:a*e.deltaY}}},ke=[\"INPUT\",\"SELECT\",\"TEXTAREA\",\"BUTTON\",\"A\"],Ee=e=>{if(!e)return!1;const t=window.getComputedStyle(e);if(\"hidden\"===t.visibility||\"none\"===t.display)return!1;if(\"disabled\"in e&&e.disabled)return!1;const n=e.getAttribute(\"tabindex\");return\"-1\"!==n&&(ke.includes(e.tagName)?!ie(e)||\"\"!==e.href:!!oe(e)||null!==n)},Te=e=>Array.from(e.querySelectorAll(\"*\")).filter(Ee),Xe=(e,t=null,{wrap:n=!0,getNextIndex:r}={})=>{const a=document.activeElement,l=t??a?.parentElement;if(!a||!l)return;const i=Te(l);if(0===i.length)return;const o=i.indexOf(a);if(-1===o)return;let s;r?s=r(o,e,i):\"next\"===e?(s=o+1,s>=i.length&&(s=n?0:null)):(s=o-1,s<0&&(s=n?i.length-1:null)),null!==s&&i[s]?.focus()},_e=()=>{if(\"undefined\"==typeof window||!window.localStorage)return!1;try{return window.localStorage.getItem(\"__non_existing_key__\"),!0}catch{return!1}},Pe=()=>{if(!_e())return{readable:!1,writable:!1};try{const e=\"__test_write__\";return window.localStorage.setItem(e,\"1\"),window.localStorage.removeItem(e),{readable:!0,writable:!0}}catch{}return{readable:!0,writable:!1}};export{ke as FOCUSABLE_HTML_TAGS,Ae as applyInertiaStep,t as assert,pe as blobToFile,de as calculateCenterOffset,ee as calculateEuclideanDistance,te as calculateMovingSpeed,ne as calculatePercentage,Z as camelToDashCase,G as camelToWords,me as centerElementInContainer,O as chunk,ae as cloneBlob,A as compact,X as compose,Se as definedProps,U as delay,E as difference,se as downloadFile,I as everyAsync,ge as fileListToFiles,j as filterParallel,N as filterSequential,H as findAsync,Me as getDOMRectIntersectionRatio,le as getElementOffsetRect,Te as getFocusableHtmlElements,Pe as getLocalStorageCapabilities,ue as getXOverflowWidth,he as getYOverflowHeight,ce as hasXOverflow,fe as hasYOverflow,re as hashString,k as intersection,Q as invokeIfFunction,ie as isAnchorHtmlElement,S as isArray,f as isBlob,o as isBool,oe as isContentEditableHtmlElement,u as isDate,x as isDecimal,a as isDefined,v as isEmptyArray,c as isEmptyObject,h as isError,we as isFile,p as isFiniteNumber,P as isFunction,Ee as isHtmlElementFocusable,b as isInteger,_e as isLocalStorageReadable,y as isMap,r as isNil,J as isNilOrEmptyString,n as isNull,i as isNumber,s as isObject,Y as isPromise,m as isRegExp,w as isSet,D as isString,g as isSymbol,l as isUndefined,d as isValidDate,Xe as moveFocusWithinContainer,_ as noop,z as not,L as once,ye as parse2DMatrix,K as parseFileName,T as pipe,xe as readFilesFromDataTransfer,$ as reduceAsync,Oe as resolveAxisDelta,ve as resolveBoundedDelta,B as retry,R as runParallel,C as runSequential,F as someAsync,q as splitStringIntoWords,W as timeout,V as toKebabCase,be as traverseFileSystemDirectory,M as unique};\n//# sourceMappingURL=index.mjs.map","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/**\n * @license React\n * react-dom.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function noop() {}\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n try {\n testStringCoercion(key);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n JSCompiler_inline_result &&\n (console.error(\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n key[Symbol.toStringTag]) ||\n key.constructor.name ||\n \"Object\"\n ),\n testStringCoercion(key));\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n }\n function getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n }\n function getValueDescriptorExpectingObjectForWarning(thing) {\n return null === thing\n ? \"`null`\"\n : void 0 === thing\n ? \"`undefined`\"\n : \"\" === thing\n ? \"an empty string\"\n : 'something with type \"' + typeof thing + '\"';\n }\n function getValueDescriptorExpectingEnumForWarning(thing) {\n return null === thing\n ? \"`null`\"\n : void 0 === thing\n ? \"`undefined`\"\n : \"\" === thing\n ? \"an empty string\"\n : \"string\" === typeof thing\n ? JSON.stringify(thing)\n : \"number\" === typeof thing\n ? \"`\" + thing + \"`\"\n : 'something with type \"' + typeof thing + '\"';\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(\n \"Invalid form element. requestFormReset must be passed a form that was rendered by React.\"\n );\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n (\"function\" === typeof Map &&\n null != Map.prototype &&\n \"function\" === typeof Map.prototype.forEach &&\n \"function\" === typeof Set &&\n null != Set.prototype &&\n \"function\" === typeof Set.prototype.clear &&\n \"function\" === typeof Set.prototype.forEach) ||\n console.error(\n \"React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\"\n );\n exports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\n exports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(\"Target container is not a DOM element.\");\n return createPortal$1(children, container, null, key);\n };\n exports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn))\n return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f() &&\n console.error(\n \"flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.\"\n );\n }\n };\n exports.preconnect = function (href, options) {\n \"string\" === typeof href && href\n ? null != options && \"object\" !== typeof options\n ? console.error(\n \"ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.\",\n getValueDescriptorExpectingEnumForWarning(options)\n )\n : null != options &&\n \"string\" !== typeof options.crossOrigin &&\n console.error(\n \"ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.\",\n getValueDescriptorExpectingObjectForWarning(options.crossOrigin)\n )\n : console.error(\n \"ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\",\n getValueDescriptorExpectingObjectForWarning(href)\n );\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n };\n exports.prefetchDNS = function (href) {\n if (\"string\" !== typeof href || !href)\n console.error(\n \"ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\",\n getValueDescriptorExpectingObjectForWarning(href)\n );\n else if (1 < arguments.length) {\n var options = arguments[1];\n \"object\" === typeof options && options.hasOwnProperty(\"crossOrigin\")\n ? console.error(\n \"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.\",\n getValueDescriptorExpectingEnumForWarning(options)\n )\n : console.error(\n \"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.\",\n getValueDescriptorExpectingEnumForWarning(options)\n );\n }\n \"string\" === typeof href && Internals.d.D(href);\n };\n exports.preinit = function (href, options) {\n \"string\" === typeof href && href\n ? null == options || \"object\" !== typeof options\n ? console.error(\n \"ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.\",\n getValueDescriptorExpectingEnumForWarning(options)\n )\n : \"style\" !== options.as &&\n \"script\" !== options.as &&\n console.error(\n 'ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are \"style\" and \"script\".',\n getValueDescriptorExpectingEnumForWarning(options.as)\n )\n : console.error(\n \"ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\",\n getValueDescriptorExpectingObjectForWarning(href)\n );\n if (\n \"string\" === typeof href &&\n options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence\n ? options.precedence\n : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n };\n exports.preinitModule = function (href, options) {\n var encountered = \"\";\n (\"string\" === typeof href && href) ||\n (encountered +=\n \" The `href` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(href) +\n \".\");\n void 0 !== options && \"object\" !== typeof options\n ? (encountered +=\n \" The `options` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options) +\n \".\")\n : options &&\n \"as\" in options &&\n \"script\" !== options.as &&\n (encountered +=\n \" The `as` option encountered was \" +\n getValueDescriptorExpectingEnumForWarning(options.as) +\n \".\");\n if (encountered)\n console.error(\n \"ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s\",\n encountered\n );\n else\n switch (\n ((encountered =\n options && \"string\" === typeof options.as ? options.as : \"script\"),\n encountered)\n ) {\n case \"script\":\n break;\n default:\n (encountered =\n getValueDescriptorExpectingEnumForWarning(encountered)),\n console.error(\n 'ReactDOM.preinitModule(): Currently the only supported \"as\" type for this function is \"script\" but received \"%s\" instead. This warning was generated for `href` \"%s\". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)',\n encountered,\n href\n );\n }\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as)\n (encountered = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n )),\n Internals.d.M(href, {\n crossOrigin: encountered,\n integrity:\n \"string\" === typeof options.integrity\n ? options.integrity\n : void 0,\n nonce:\n \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n } else null == options && Internals.d.M(href);\n };\n exports.preload = function (href, options) {\n var encountered = \"\";\n (\"string\" === typeof href && href) ||\n (encountered +=\n \" The `href` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(href) +\n \".\");\n null == options || \"object\" !== typeof options\n ? (encountered +=\n \" The `options` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options) +\n \".\")\n : (\"string\" === typeof options.as && options.as) ||\n (encountered +=\n \" The `as` option encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options.as) +\n \".\");\n encountered &&\n console.error(\n 'ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `<link rel=\"preload\" as=\"...\" />` tag.%s',\n encountered\n );\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n encountered = options.as;\n var crossOrigin = getCrossOriginStringAs(\n encountered,\n options.crossOrigin\n );\n Internals.d.L(href, encountered, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet\n ? options.imageSrcSet\n : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes\n ? options.imageSizes\n : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n };\n exports.preloadModule = function (href, options) {\n var encountered = \"\";\n (\"string\" === typeof href && href) ||\n (encountered +=\n \" The `href` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(href) +\n \".\");\n void 0 !== options && \"object\" !== typeof options\n ? (encountered +=\n \" The `options` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options) +\n \".\")\n : options &&\n \"as\" in options &&\n \"string\" !== typeof options.as &&\n (encountered +=\n \" The `as` option encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options.as) +\n \".\");\n encountered &&\n console.error(\n 'ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `<link rel=\"modulepreload\" as=\"...\" />` tag.%s',\n encountered\n );\n \"string\" === typeof href &&\n (options\n ? ((encountered = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n )),\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: encountered,\n integrity:\n \"string\" === typeof options.integrity\n ? options.integrity\n : void 0\n }))\n : Internals.d.m(href));\n };\n exports.requestFormReset = function (form) {\n Internals.d.r(form);\n };\n exports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n };\n exports.useFormState = function (action, initialState, permalink) {\n return resolveDispatcher().useFormState(action, initialState, permalink);\n };\n exports.useFormStatus = function () {\n return resolveDispatcher().useHostTransitionStatus();\n };\n exports.version = \"19.2.3\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/*!\n* tabbable 6.4.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\n// NOTE: separate `:not()` selectors has broader browser support than the newer\n// `:not([inert], [inert] *)` (Feb 2023)\nvar candidateSelectors = ['input:not([inert]):not([inert] *)', 'select:not([inert]):not([inert] *)', 'textarea:not([inert]):not([inert] *)', 'a[href]:not([inert]):not([inert] *)', 'button:not([inert]):not([inert] *)', '[tabindex]:not(slot):not([inert]):not([inert] *)', 'audio[controls]:not([inert]):not([inert] *)', 'video[controls]:not([inert]):not([inert] *)', '[contenteditable]:not([contenteditable=\"false\"]):not([inert]):not([inert] *)', 'details>summary:first-of-type:not([inert]):not([inert] *)', 'details:not([inert]):not([inert] *)'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar NoElement = typeof Element === 'undefined';\nvar matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {\n var _element$getRootNode;\n return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n} : function (element) {\n return element === null || element === void 0 ? void 0 : element.ownerDocument;\n};\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Node} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n * see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n * False if `node` is falsy.\n */\nvar _isInert = function isInert(node, lookUp) {\n var _node$getAttribute;\n if (lookUp === void 0) {\n lookUp = true;\n }\n // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n // JS API property; we have to check the attribute, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's an active element\n var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');\n var inert = inertAtt === '' || inertAtt === 'true';\n\n // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n // if it weren't for `matches()` not being a function on shadow roots; the following\n // code works for any kind of node\n var result = inert || lookUp && node && (\n // closest does not exist on shadow roots, so we fall back to a manual\n // lookup upward, in case it is not defined.\n typeof node.closest === 'function' ? node.closest('[inert]') : _isInert(node.parentNode));\n return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nvar isContentEditable = function isContentEditable(node) {\n var _node$getAttribute2;\n // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n // to use the attribute directly to check for this, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's a non-editable element\n var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');\n return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n // even if `includeContainer=false`, we still have to check it for inertness because\n // if it's inert (either by itself or via its parent), then all its children are inert\n if (_isInert(el)) {\n return [];\n }\n var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n candidates = candidates.filter(filter);\n return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n * if a function, implies shadow support is enabled and either returns the shadow root of an element\n * or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nvar _getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {\n var candidates = [];\n var elementsToCheck = Array.from(elements);\n while (elementsToCheck.length) {\n var element = elementsToCheck.shift();\n if (_isInert(element, false)) {\n // no need to look up since we're drilling down\n // anything inside this container will also be inert\n continue;\n }\n if (element.tagName === 'SLOT') {\n // add shadow dom slot scope (slot itself cannot be focusable)\n var assigned = element.assignedElements();\n var content = assigned.length ? assigned : element.children;\n var nestedCandidates = _getCandidatesIteratively(content, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: nestedCandidates\n });\n }\n } else {\n // check candidate element\n var validCandidate = matches.call(element, candidateSelector);\n if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n candidates.push(element);\n }\n\n // iterate over shadow content if possible\n var shadowRoot = element.shadowRoot ||\n // check for an undisclosed shadow\n typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);\n\n // no inert look up because we're already drilling down and checking for inertness\n // on the way down, so all containers to this root node should have already been\n // vetted as non-inert\n var validShadowRoot = !_isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));\n if (shadowRoot && validShadowRoot) {\n // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n // shadow exists, so look at light dom children as fallback BUT create a scope for any\n // child candidates found because they're likely slotted elements (elements that are\n // children of the web component element (which has the shadow), in the light dom, but\n // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n // _after_ we return from this recursive call\n var _nestedCandidates = _getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, _nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: _nestedCandidates\n });\n }\n } else {\n // there's not shadow so just dig into the element's (light dom) children\n // __without__ giving the element special scope treatment\n elementsToCheck.unshift.apply(elementsToCheck, element.children);\n }\n }\n }\n return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nvar hasTabIndex = function hasTabIndex(node) {\n return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nvar getTabIndex = function getTabIndex(node) {\n if (!node) {\n throw new Error('No node provided');\n }\n if (node.tabIndex < 0) {\n // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if ((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && !hasTabIndex(node)) {\n return 0;\n }\n }\n return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n * has tabIndex -1, but needs to be sorted by document order in order for its content to be\n * inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nvar getSortOrderTabIndex = function getSortOrderTabIndex(node, isScope) {\n var tabIndex = getTabIndex(node);\n if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n return 0;\n }\n return tabIndex;\n};\nvar sortOrderedTabbables = function sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n};\nvar isInput = function isInput(node) {\n return node.tagName === 'INPUT';\n};\nvar isHiddenInput = function isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n};\nvar isDetailsWithSummary = function isDetailsWithSummary(node) {\n var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {\n return child.tagName === 'SUMMARY';\n });\n return r;\n};\nvar getCheckedRadio = function getCheckedRadio(nodes, form) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked && nodes[i].form === form) {\n return nodes[i];\n }\n }\n};\nvar isTabbableRadio = function isTabbableRadio(node) {\n if (!node.name) {\n return true;\n }\n var radioScope = node.form || getRootNode(node);\n var queryRadios = function queryRadios(name) {\n return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n };\n var radioSet;\n if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {\n radioSet = queryRadios(window.CSS.escape(node.name));\n } else {\n try {\n radioSet = queryRadios(node.name);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);\n return false;\n }\n }\n var checked = getCheckedRadio(radioSet, node.form);\n return !checked || checked === node;\n};\nvar isRadio = function isRadio(node) {\n return isInput(node) && node.type === 'radio';\n};\nvar isNonTabbableRadio = function isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nvar isNodeAttached = function isNodeAttached(node) {\n var _nodeRoot;\n // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n // (but NOT _the_ document; see second 'If' comment below for more).\n // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n // is attached, and the one we need to check if it's in the document or not (because the\n // shadow, and all nodes it contains, is never considered in the document since shadows\n // behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n // is hidden, or is not in the document itself but is detached, it will affect the shadow's\n // visibility, including all the nodes it contains). The host could be any normal node,\n // or a custom element (i.e. web component). Either way, that's the one that is considered\n // part of the document, not the shadow root, nor any of its children (i.e. the node being\n // tested).\n // To further complicate things, we have to look all the way up until we find a shadow HOST\n // that is attached (or find none) because the node might be in nested shadows...\n // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n // document (per the docs) and while it's a Document-type object, that document does not\n // appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n // to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n // using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n // node is actually detached.\n // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n // if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n // from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n // `ownerDocument` will be `null`, hence the optional chaining on it.\n var nodeRoot = node && getRootNode(node);\n var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;\n\n // in some cases, a detached node will return itself as the root instead of a document or\n // shadow root object, in which case, we shouldn't try to look further up the host chain\n var attached = false;\n if (nodeRoot && nodeRoot !== node) {\n var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;\n attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));\n while (!attached && nodeRootHost) {\n var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;\n // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n // which means we need to get the host's host and check if that parent host is contained\n // in (i.e. attached to) the document\n nodeRoot = getRootNode(nodeRootHost);\n nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;\n attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));\n }\n }\n return attached;\n};\nvar isZeroArea = function isZeroArea(node) {\n var _node$getBoundingClie = node.getBoundingClientRect(),\n width = _node$getBoundingClie.width,\n height = _node$getBoundingClie.height;\n return width === 0 && height === 0;\n};\nvar isHidden = function isHidden(node, _ref) {\n var displayCheck = _ref.displayCheck,\n getShadowRoot = _ref.getShadowRoot;\n if (displayCheck === 'full-native') {\n if ('checkVisibility' in node) {\n // Chrome >= 105, Edge >= 105, Firefox >= 106, Safari >= 17.4\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility#browser_compatibility\n var visible = node.checkVisibility({\n // Checking opacity might be desirable for some use cases, but natively,\n // opacity zero elements _are_ focusable and tabbable.\n checkOpacity: false,\n opacityProperty: false,\n contentVisibilityAuto: true,\n visibilityProperty: true,\n // This is an alias for `visibilityProperty`. Contemporary browsers\n // support both. However, this alias has wider browser support (Chrome\n // >= 105 and Firefox >= 106, vs. Chrome >= 121 and Firefox >= 122), so\n // we include it anyway.\n checkVisibilityCSS: true\n });\n return !visible;\n }\n // Fall through to manual visibility checks\n }\n\n // NOTE: visibility will be `undefined` if node is detached from the document\n // (see notes about this further down), which means we will consider it visible\n // (this is legacy behavior from a very long way back)\n // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n // _visibility_ check, not a _display_ check\n if (getComputedStyle(node).visibility === 'hidden') {\n return true;\n }\n var isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n return true;\n }\n if (!displayCheck || displayCheck === 'full' ||\n // full-native can run this branch when it falls through in case\n // Element#checkVisibility is unsupported\n displayCheck === 'full-native' || displayCheck === 'legacy-full') {\n if (typeof getShadowRoot === 'function') {\n // figure out if we should consider the node to be in an undisclosed shadow and use the\n // 'non-zero-area' fallback\n var originalNode = node;\n while (node) {\n var parentElement = node.parentElement;\n var rootNode = getRootNode(node);\n if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n ) {\n // node has an undisclosed shadow which means we can only treat it as a black box, so we\n // fall back to a non-zero-area test\n return isZeroArea(node);\n } else if (node.assignedSlot) {\n // iterate up slot\n node = node.assignedSlot;\n } else if (!parentElement && rootNode !== node.ownerDocument) {\n // cross shadow boundary\n node = rootNode.host;\n } else {\n // iterate up normal dom\n node = parentElement;\n }\n }\n node = originalNode;\n }\n // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n // (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n // it might be a falsy value, which means shadow DOM support is disabled\n\n // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n // now we can just test to see if it would normally be visible or not, provided it's\n // attached to the main document.\n // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n // `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n if (isNodeAttached(node)) {\n // this works wherever the node is: if there's at least one client rect, it's\n // somehow displayed; it also covers the CSS 'display: contents' case where the\n // node itself is hidden in place of its contents; and there's no need to search\n // up the hierarchy either\n return !node.getClientRects().length;\n }\n\n // Else, the node isn't attached to the document, which means the `getClientRects()`\n // API will __always__ return zero rects (this can happen, for example, if React\n // is used to render nodes onto a detached tree, as confirmed in this thread:\n // https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n //\n // It also means that even window.getComputedStyle(node).display will return `undefined`\n // because styles are only computed for nodes that are in the document.\n //\n // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n // somehow. Though it was never stated officially, anyone who has ever used tabbable\n // APIs on nodes in detached containers has actually implicitly used tabbable in what\n // was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n // considering __everything__ to be visible because of the innability to determine styles.\n //\n // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n // nodes as visible with the 'none' fallback.__\n if (displayCheck !== 'legacy-full') {\n return true; // hidden\n }\n // else, fallback to 'none' mode and consider the node visible\n } else if (displayCheck === 'non-zero-area') {\n // NOTE: Even though this tests that the node's client rect is non-zero to determine\n // whether it's displayed, and that a detached node will __always__ have a zero-area\n // client rect, we don't special-case for whether the node is attached or not. In\n // this mode, we do want to consider nodes that have a zero area to be hidden at all\n // times, and that includes attached or not.\n return isZeroArea(node);\n }\n\n // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n // it's visible\n return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n// unless they are in the _first_ <legend> element of the top-most disabled\n// fieldset\nvar isDisabledFromFieldset = function isDisabledFromFieldset(node) {\n if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n var parentNode = node.parentElement;\n // check if `node` is contained in a disabled <fieldset>\n while (parentNode) {\n if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n // look for the first <legend> among the children of the disabled <fieldset>\n for (var i = 0; i < parentNode.children.length; i++) {\n var child = parentNode.children.item(i);\n // when the first <legend> (in document order) is found\n if (child.tagName === 'LEGEND') {\n // if its parent <fieldset> is not nested in another disabled <fieldset>,\n // return whether `node` is a descendant of its first <legend>\n return matches.call(parentNode, 'fieldset[disabled] *') ? true : !child.contains(node);\n }\n }\n // the disabled <fieldset> containing `node` has no <legend>\n return true;\n }\n parentNode = parentNode.parentElement;\n }\n }\n\n // else, node's tabbable/focusable state should not be affected by a fieldset's\n // enabled/disabled state\n return false;\n};\nvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {\n if (node.disabled || isHiddenInput(node) || isHidden(node, options) ||\n // For a details element with a summary, the summary element gets the focus\n isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {\n return false;\n }\n return true;\n};\nvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {\n if (isNonTabbableRadio(node) || getTabIndex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {\n return false;\n }\n return true;\n};\nvar isShadowRootTabbable = function isShadowRootTabbable(shadowHostNode) {\n var tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n if (isNaN(tabIndex) || tabIndex >= 0) {\n return true;\n }\n // If a custom element has an explicit negative tabindex,\n // browsers will not allow tab targeting said element's children.\n return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nvar _sortByOrder = function sortByOrder(candidates) {\n var regularTabbables = [];\n var orderedTabbables = [];\n candidates.forEach(function (item, i) {\n var isScope = !!item.scopeParent;\n var element = isScope ? item.scopeParent : item;\n var candidateTabindex = getSortOrderTabIndex(element, isScope);\n var elements = isScope ? _sortByOrder(item.candidates) : element;\n if (candidateTabindex === 0) {\n isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n item: item,\n isScope: isScope,\n content: elements\n });\n }\n });\n return orderedTabbables.sort(sortOrderedTabbables).reduce(function (acc, sortable) {\n sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);\n return acc;\n }, []).concat(regularTabbables);\n};\nvar tabbable = function tabbable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = _getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorTabbable.bind(null, options),\n flatten: false,\n getShadowRoot: options.getShadowRoot,\n shadowRootFilter: isShadowRootTabbable\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n }\n return _sortByOrder(candidates);\n};\nvar focusable = function focusable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = _getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorFocusable.bind(null, options),\n flatten: true,\n getShadowRoot: options.getShadowRoot\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n }\n return candidates;\n};\nvar isTabbable = function isTabbable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, candidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorTabbable(options, node);\n};\nvar focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe:not([inert]):not([inert] *)').join(',');\nvar isFocusable = function isFocusable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, focusableCandidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { focusable, getTabIndex, isFocusable, isTabbable, tabbable };\n//# sourceMappingURL=index.esm.js.map\n","import { HONEY_BREAKPOINTS, styled, css } from '@react-hive/honey-style';\nimport type { ElementType } from 'react';\nimport type { HoneyBreakpointName, HoneyStyledProps } from '@react-hive/honey-style';\n\nimport { applyBreakpointStyles, createStyles } from '../../helpers';\nimport type { Honey$PrefixedCSSProperties, HoneyEffectResultFn } from '../../types';\n\nconst applyResponsiveStyles = (breakpoint: HoneyBreakpointName) =>\n breakpoint === 'xs' ? createStyles(breakpoint) : applyBreakpointStyles(breakpoint);\n\nexport type HoneyBoxProps<Element extends ElementType = 'div'> = HoneyStyledProps<\n Element,\n Honey$PrefixedCSSProperties & {\n effects?: HoneyEffectResultFn<object>[];\n }\n>;\n\nexport const HoneyBox = styled<HoneyBoxProps>('div', props => ({\n 'data-testid': props['data-testid'] ?? 'honey-box',\n}))`\n ${({ effects }) => css`\n ${effects};\n\n ${HONEY_BREAKPOINTS.map(applyResponsiveStyles)};\n `}\n`;\n","export * from './HoneyBox';\n","import React from 'react';\nimport type { ReactNode } from 'react';\nimport type { ReferenceType } from '@floating-ui/react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport { HoneyPopup } from '../HoneyPopup';\nimport { HoneyContextMenuContent } from './HoneyContextMenuContent';\nimport type { HoneyPopupContextValue, HoneyPopupProps } from '../HoneyPopup';\nimport type { HoneyContextMenuOption } from './HoneyContextMenu.types';\nimport type { HoneyContextMenuContentProps } from './HoneyContextMenuContent';\n\nexport interface HoneyContextMenuProps<\n Option extends HoneyContextMenuOption<Context, Reference>,\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n> extends FastOmit<HoneyPopupProps<Context, Reference, UseAutoSize>, 'content'>,\n Pick<\n HoneyContextMenuContentProps<Option, Context, Reference, UseAutoSize>,\n 'options' | 'optionProps'\n > {\n children: ReactNode | ((context: HoneyPopupContextValue<Context, Reference>) => ReactNode);\n subProps?: FastOmit<\n HoneyContextMenuContentProps<Option, Context, Reference, UseAutoSize>,\n 'options' | 'optionProps'\n >;\n}\n\nexport const HoneyContextMenu = <\n Option extends HoneyContextMenuOption<Context, Reference>,\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n>({\n children,\n subProps,\n options,\n optionProps,\n clickOptions,\n context,\n ...popupProps\n}: HoneyContextMenuProps<Option, Context, Reference, UseAutoSize>) => {\n const { contentProps } = popupProps;\n\n return (\n <>\n <HoneyPopup\n context={context}\n content={\n <HoneyContextMenuContent\n options={options}\n optionProps={optionProps}\n contentProps={contentProps}\n {...subProps}\n />\n }\n clickOptions={{\n toggle: false,\n ...clickOptions,\n }}\n useArrow={true}\n {...popupProps}\n >\n {children}\n </HoneyPopup>\n </>\n );\n};\n","import type { FloatingContext, ReferenceType } from '@floating-ui/react';\n\ninterface HoneyContextMenuOptionExecutionContext<Context, Reference extends ReferenceType> {\n context: Context | undefined;\n floatingContext: FloatingContext<Reference>;\n}\n\nexport interface HoneyContextMenuOption<\n Context = undefined,\n Reference extends ReferenceType = ReferenceType,\n> {\n id: string;\n label: string;\n options?: HoneyContextMenuOption<Context, Reference>[];\n visible?:\n | boolean\n | ((executionContext: HoneyContextMenuOptionExecutionContext<Context, Reference>) => boolean);\n onClick?: (executionContext: HoneyContextMenuOptionExecutionContext<Context, Reference>) => void;\n}\n","import React, { useMemo } from 'react';\nimport type { ReferenceType } from '@floating-ui/react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport { HoneyList } from '../HoneyList';\nimport { HoneyPopup, useHoneyPopupContext } from '../HoneyPopup';\nimport { HoneyContextMenuContentOption } from './HoneyContextMenuContentOption';\nimport type { HoneyPopupProps } from '../HoneyPopup';\nimport type { HoneyContextMenuOption } from './HoneyContextMenu.types';\nimport type { HoneyContextMenuContentOptionProps } from './HoneyContextMenuContentOption';\n\nexport interface HoneyContextMenuContentProps<\n Option extends HoneyContextMenuOption<Context, Reference>,\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n> extends FastOmit<\n HoneyPopupProps<Context, Reference, UseAutoSize>,\n 'children' | 'context' | 'content'\n > {\n options: Option[] | undefined;\n optionProps?: FastOmit<HoneyContextMenuContentOptionProps<Option, Context, Reference>, 'option'>;\n}\n\nexport const HoneyContextMenuContent = <\n Option extends HoneyContextMenuOption<Context, Reference>,\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n>({\n options,\n optionProps,\n floatingOptions,\n ...popupProps\n}: HoneyContextMenuContentProps<Option, Context, Reference, UseAutoSize>) => {\n const { contentProps } = popupProps;\n\n const { context, floatingContext } = useHoneyPopupContext<Context, Reference>();\n\n const visibleOptions = useMemo<Option[] | undefined>(\n () =>\n options?.filter(option =>\n typeof option.visible === 'function'\n ? option.visible({ context, floatingContext })\n : option.visible !== false,\n ),\n [options],\n );\n\n return (\n <HoneyList items={visibleOptions} itemKey=\"id\" emptyContent=\"No options\">\n {option =>\n option.options?.length ? (\n <HoneyPopup\n context={context}\n content={\n <HoneyContextMenuContent\n options={option.options}\n optionProps={optionProps}\n contentProps={contentProps}\n />\n }\n event=\"hover\"\n referenceProps={{\n $width: '100%',\n }}\n floatingOptions={{\n placement: 'right-start',\n ...floatingOptions,\n }}\n useArrow={true}\n {...popupProps}\n >\n <HoneyContextMenuContentOption\n option={option as HoneyContextMenuOption<unknown, any>}\n {...optionProps}\n >\n {option.label}\n </HoneyContextMenuContentOption>\n </HoneyPopup>\n ) : (\n <HoneyContextMenuContentOption\n option={option as HoneyContextMenuOption<unknown, any>}\n {...optionProps}\n />\n )\n }\n </HoneyList>\n );\n};\n","import React from 'react';\nimport type { ReferenceType } from '@floating-ui/react';\n\nimport { HoneyBox } from '../HoneyBox';\nimport { useHoneyPopupContext } from '../HoneyPopup';\nimport type { HoneyBoxProps } from '../HoneyBox';\nimport type { HoneyContextMenuOption } from './HoneyContextMenu.types';\n\nexport interface HoneyContextMenuContentOptionProps<\n Option extends HoneyContextMenuOption<Context, Reference>,\n Context,\n Reference extends ReferenceType,\n> extends HoneyBoxProps {\n option: Option;\n}\n\nexport const HoneyContextMenuContentOption = <\n Option extends HoneyContextMenuOption<Context, Reference>,\n Context,\n Reference extends ReferenceType,\n>({\n option,\n ...props\n}: HoneyContextMenuContentOptionProps<Option, Context, Reference>) => {\n const { context, floatingContext } = useHoneyPopupContext<Context, Reference>();\n\n const handleClick = () => {\n option.onClick?.({ context, floatingContext });\n };\n\n return (\n <HoneyBox onClick={handleClick} {...props}>\n {option.label}\n </HoneyBox>\n );\n};\n","export * from './HoneyContextMenu.types';\nexport * from './HoneyContextMenu';\n","import { styled } from '@react-hive/honey-style';\nimport type { ElementType } from 'react';\n\nimport { __DEV__ } from '../../constants';\nimport { warnOnce } from '../../utils';\nimport { HoneyBox } from '../HoneyBox';\nimport type { HoneyBoxProps } from '../HoneyBox';\n\nexport type HoneyFlexProps<Element extends ElementType = 'div'> = HoneyBoxProps<Element> & {\n /**\n * Enables inline flex layout.\n *\n * When enabled, this prop applies:\n * - `display: inline-flex`\n *\n * When disabled (default), the layout uses:\n * - `display: flex`\n *\n * This is a semantic convenience prop intended for inline alignment scenarios\n * (e.g. buttons, badges, form controls).\n *\n * If `$display` is explicitly provided, it always takes precedence over this prop.\n *\n * @default false\n */\n inline?: boolean;\n /**\n * Enables horizontal (row-based) layout.\n *\n * When enabled, this prop applies:\n * - `flex-direction: row`\n *\n * When disabled (default), the layout uses:\n * - `flex-direction: column`\n *\n * This is a semantic convenience prop. If `$flexDirection` is explicitly provided,\n * it will always take precedence.\n *\n * @default false\n */\n row?: boolean;\n /**\n * Centers children along both the main and cross axes.\n *\n * When enabled, this applies:\n * - `align-items: center`\n * - `justify-content: center`\n *\n * This prop is intended for common centering use cases and improves readability\n * over manually specifying flex styles.\n *\n * Explicit style props (`$alignItems`, `$justifyContent`)\n * always override this behavior.\n *\n * @default false\n */\n center?: boolean;\n /**\n * Centers children along the horizontal axis.\n *\n * - In column layouts: maps to `align-items: center`\n * - In row layouts: maps to `justify-content: center`\n *\n * Ignored if `center` is enabled or if the corresponding explicit style prop is provided.\n *\n * @default false\n */\n centerX?: boolean;\n /**\n * Centers children along the vertical axis.\n *\n * - In column layouts: maps to `justify-content: center`\n * - In row layouts: maps to `align-items: center`\n *\n * Ignored if `center` is enabled or if the corresponding explicit style prop is provided.\n *\n * @default false\n */\n centerY?: boolean;\n};\n\n/**\n * A flexbox-based layout primitive built on top of {@link HoneyBox}.\n *\n * `HoneyFlex` is the canonical flex container within the Honey design system.\n * It provides sensible defaults, readable semantic helpers, and full access\n * to low-level flexbox customization when needed.\n *\n * ---\n *\n * ### Default behavior\n * - `display: flex`\n * - `flex-direction: column`\n *\n * ---\n *\n * ### Semantic helpers\n * - `inline` → switches layout to `inline-flex`\n * - `row` → switches layout to horizontal flow\n * - `center` → centers content on both axes\n * - `centerX`, `centerY` → axis-aware centering helpers\n *\n * Semantic helpers exist purely for convenience and readability.\n * Any explicitly provided style props **always take precedence**.\n *\n * ---\n *\n * @remarks\n * This component is intended to be the primary flex layout primitive\n * in the Honey ecosystem. Prefer it over raw flexbox usage to ensure\n * consistent behavior, defaults, and testability.\n *\n * ---\n *\n * @example Inline layout\n * ```tsx\n * <HoneyFlex inline centerY>\n * <Icon />\n * <Text>Label</Text>\n * </HoneyFlex>\n * ```\n *\n * @example Horizontal layout\n * ```tsx\n * <HoneyFlex $gap={2} row/>\n * ```\n *\n * @example Column layout\n * ```tsx\n * <HoneyFlex $gap={3} />\n * ```\n *\n * @example Centered fullscreen container\n * ```tsx\n * <HoneyFlex $minHeight=\"100vh\" center>\n * <Spinner />\n * </HoneyFlex>\n * ```\n */\nexport const HoneyFlex = styled<HoneyFlexProps>(\n HoneyBox,\n ({\n inline = false,\n row = false,\n center = false,\n centerX = false,\n centerY = false,\n $display,\n $flexDirection,\n $alignItems,\n $justifyContent,\n ...props\n }) => {\n const display = inline ? 'inline-flex' : ($display ?? 'flex');\n const flexDirection = $flexDirection ?? (row ? 'row' : 'column');\n const isRow = flexDirection === 'row';\n\n const shouldCenterAlignItems = center || (isRow ? centerY : centerX);\n const shouldCenterJustifyContent = center || (isRow ? centerX : centerY);\n\n const alignItems = $alignItems ?? (shouldCenterAlignItems ? 'center' : undefined);\n const justifyContent = $justifyContent ?? (shouldCenterJustifyContent ? 'center' : undefined);\n\n if (__DEV__) {\n const hasAlignConflict = shouldCenterAlignItems && $alignItems !== undefined;\n const hasJustifyConflict = shouldCenterJustifyContent && $justifyContent !== undefined;\n\n if (hasAlignConflict || hasJustifyConflict) {\n warnOnce(\n `HoneyFlex:${hasAlignConflict}:${hasJustifyConflict}`,\n [\n '[@react-hive/honey-layout]: HoneyFlex.',\n 'Semantic centering props conflict with explicit flex alignment styles:',\n hasAlignConflict && ` - align-items is controlled by both semantics and $alignItems`,\n hasJustifyConflict &&\n ` - justify-content is controlled by both semantics and $justifyContent`,\n 'Explicit styles always win. Remove one side to silence this warning.',\n ]\n .filter(Boolean)\n .join('\\n'),\n );\n }\n }\n\n return {\n $display: display,\n $flexDirection: flexDirection,\n $alignItems: alignItems,\n $justifyContent: justifyContent,\n // Data\n 'data-testid': props['data-testid'] ?? 'honey-flex',\n };\n },\n)``;\n","export * from './HoneyFlex';\n","import React, { useMemo } from 'react';\n\nimport { HoneyGridContext } from './HoneyGridContext';\nimport { HoneyGridStyled } from './HoneyGridStyled';\nimport type { HoneyGridContextProps } from './HoneyGridContext';\nimport type { HoneyGridStyledProps } from './HoneyGridStyled';\nimport type { HoneyGridColumnStyledProps } from '../HoneyGridColumn';\n\nexport interface HoneyGridProps extends HoneyGridStyledProps {\n /**\n * The number of columns in the grid layout.\n */\n columns: number;\n /**\n * Specifies whether columns should grow to fill available space.\n *\n * @default true\n */\n columnsGrowing?: boolean;\n /**\n * Specifies the breakpoint at which the max-width should be applied to the columns or disables it if set to `false`.\n * Can be a breakpoint name.\n *\n * @default false\n */\n applyColumnMaxWidth?: HoneyGridColumnStyledProps['applyMaxWidth'];\n}\n\nexport const HoneyGrid = ({\n ref,\n children,\n columns,\n spacing,\n columnsGrowing = true,\n applyColumnMaxWidth = false,\n ...props\n}: HoneyGridProps) => {\n const contextValue = useMemo<HoneyGridContextProps>(\n () => ({\n columns,\n spacing,\n isColumnsGrowing: columnsGrowing,\n applyColumnMaxWidth,\n }),\n [columns, spacing, columnsGrowing, applyColumnMaxWidth],\n );\n\n return (\n <HoneyGridContext value={contextValue}>\n <HoneyGridStyled ref={ref} spacing={spacing} data-testid=\"honey-grid\" {...props}>\n {children}\n </HoneyGridStyled>\n </HoneyGridContext>\n );\n};\n","import { createContext } from 'react';\nimport type { HoneyBreakpointName } from '@react-hive/honey-style';\n\nexport interface HoneyGridContextProps {\n columns: number;\n spacing: number | undefined;\n isColumnsGrowing: boolean;\n applyColumnMaxWidth: HoneyBreakpointName | false;\n}\n\nexport const HoneyGridContext = createContext<HoneyGridContextProps | undefined>(undefined);\n","import * as CSS from 'csstype';\nimport { css, styled, resolveSpacing } from '@react-hive/honey-style';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport { HoneyBox } from '../HoneyBox';\nimport { HoneyGridColumnStyled } from '../HoneyGridColumn/HoneyGridColumnStyled';\nimport type { HoneyBoxProps } from '../HoneyBox';\n\nexport interface HoneyGridStyledProps\n // Omit the `$gap` because `spacing` prop overrides that value\n extends FastOmit<HoneyBoxProps, '$gap'> {\n /**\n * The height of each grid column.\n */\n columnHeight?: CSS.Properties['height'];\n /**\n * The minimum height of each grid column.\n */\n minColumnHeight?: CSS.Properties['minHeight'];\n /**\n * The spacing between grid columns.\n *\n * @default 0\n */\n spacing?: number;\n}\n\nexport const HoneyGridStyled = styled<HoneyGridStyledProps>(HoneyBox, ({ $flexWrap = 'wrap' }) => ({\n $flexWrap,\n}))`\n ${({ columnHeight, minColumnHeight, spacing = 0 }) => css`\n display: flex;\n gap: ${resolveSpacing(spacing)};\n\n > ${HoneyGridColumnStyled} {\n height: ${columnHeight};\n min-height: ${minColumnHeight};\n }\n `}\n`;\n","export * from './use-honey-grid-context';\n","import { useContext } from 'react';\n\nimport { HoneyGridContext } from '../HoneyGridContext';\n\nexport const useHoneyGridContext = () => {\n const context = useContext(HoneyGridContext);\n if (!context) {\n throw new Error(\n 'The `useHoneyGridContext()` hook can only be used inside <HoneyGrid/> component!',\n );\n }\n\n return context;\n};\n","export * from './HoneyGrid';\nexport * from './hooks';\n","import React from 'react';\nimport type { ElementType } from 'react';\n\nimport { useHoneyGridContext } from '../HoneyGrid/hooks';\nimport { HoneyGridColumnStyled } from './HoneyGridColumnStyled';\nimport type { HoneyGridColumnProps } from './HoneyGridColumn.types';\n\nexport const HoneyGridColumn = <Element extends ElementType = 'div'>({\n children,\n ...props\n}: HoneyGridColumnProps<Element>) => {\n const { columns, spacing, isColumnsGrowing, applyColumnMaxWidth } = useHoneyGridContext();\n\n return (\n <HoneyGridColumnStyled\n columns={columns}\n spacing={spacing}\n applyMaxWidth={applyColumnMaxWidth}\n $flexGrow={isColumnsGrowing ? 1 : 0}\n // Data\n data-testid=\"honey-grid-column\"\n {...props}\n >\n {children}\n </HoneyGridColumnStyled>\n );\n};\n","import type { ElementType } from 'react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport type { HoneyGridColumnStyledProps } from './HoneyGridColumnStyled';\n\nexport type HoneyGridColumnProps<Element extends ElementType = 'div'> = FastOmit<\n HoneyGridColumnStyledProps<Element>,\n 'columns' | 'spacing' | 'totalColumns' | 'totalTakeColumns' | 'applyMaxWidth'\n>;\n","import { css, styled, resolveSpacing } from '@react-hive/honey-style';\nimport type { ElementType } from 'react';\nimport type { HoneyBreakpointName } from '@react-hive/honey-style';\n\nimport { bpMedia } from '../../helpers';\nimport { HoneyFlex } from '../HoneyFlex';\nimport type { HoneyFlexProps } from '../HoneyFlex';\n\nexport type HoneyGridColumnStyledProps<Element extends ElementType = 'div'> =\n HoneyFlexProps<Element> & {\n /**\n * Total number of columns in the grid.\n */\n columns: number;\n /**\n * Spacing between grid columns.\n *\n * @default 0\n */\n spacing: number | undefined;\n /**\n * The number of columns this column should take.\n *\n * @default 1\n */\n takeColumns?: number;\n /**\n * Specifies the breakpoint at which the max-width should be applied or disables it if set to `false`.\n * Can be a breakpoint name.\n */\n applyMaxWidth?: HoneyBreakpointName | false;\n };\n\n/**\n * This component defines the layout and styling for individual columns in a grid layout.\n * It provides flexibility in specifying the number of columns to take, the total number of columns in the grid,\n * and the spacing between columns.\n */\nexport const HoneyGridColumnStyled = styled<HoneyGridColumnStyledProps>(HoneyFlex)`\n ${({ columns, takeColumns = 1, spacing = 0, applyMaxWidth, theme }) => {\n const fractionalWidth = 100 / columns;\n\n const columnSpacing = resolveSpacing(spacing, null)({ theme });\n const columnWidthPercent = takeColumns * fractionalWidth;\n const columnGap = (columns - takeColumns) * (columnSpacing / columns);\n\n const columnWidth = `calc(${columnWidthPercent}% - ${columnGap}px)`;\n\n return css`\n flex-basis: ${columnWidth};\n\n ${applyMaxWidth &&\n css`\n ${bpMedia(applyMaxWidth).up} {\n max-width: ${columnWidth};\n }\n `}\n `;\n }}\n`;\n","export * from './HoneyGridColumn.types';\nexport * from './HoneyGridColumnStyled';\nexport * from './HoneyGridColumn';\n","import type { PropsWithChildren } from 'react';\nimport { useLayoutEffect, useRef, useState } from 'react';\n\nimport type { TimeoutId } from '../../types';\n\nexport interface HoneyLazyContentProps {\n /**\n * Determines whether the content should be mounted or unmounted.\n */\n mount: boolean;\n /**\n * The delay in milliseconds before unmounting the content when `mount` is set to `false`.\n */\n unmountDelay: number;\n /**\n * Determines whether the content should always remain mounted, regardless of the value of `mount`.\n * If `true`, the content will never be unmounted.\n *\n * @default false\n */\n alwaysMounted?: boolean;\n /**\n * Determines whether the content should remain mounted after the mount.\n * If `true`, the content will not be unmounted after the time it's mounted.\n *\n * @default false\n */\n keepAfterMount?: boolean;\n}\n\n/**\n * Component for lazy loading/unloading content based on a mount/unmount state.\n */\nexport const HoneyLazyContent = ({\n children,\n mount,\n unmountDelay,\n alwaysMounted = false,\n keepAfterMount = false,\n}: PropsWithChildren<HoneyLazyContentProps>) => {\n const [isMountContent, setIsMountContent] = useState(alwaysMounted || mount);\n\n const mountContentTimeoutIdRef = useRef<TimeoutId>(undefined);\n\n useLayoutEffect(() => {\n if (!mount || alwaysMounted) {\n return;\n }\n\n clearTimeout(mountContentTimeoutIdRef.current);\n\n setIsMountContent(true);\n\n return () => {\n if (!keepAfterMount) {\n mountContentTimeoutIdRef.current = setTimeout(() => setIsMountContent(false), unmountDelay);\n }\n };\n }, [mount, alwaysMounted, unmountDelay]);\n\n return isMountContent ? children : null;\n};\n","export * from './HoneyLazyContent';\n","import type { HoneyListItem, HoneyListItemId, HoneyListItemKey } from './HoneyList.types';\n\nexport const getHoneyListItemId = <Item extends HoneyListItem>(\n item: Item,\n itemKey: HoneyListItemKey<Item> | undefined,\n itemIndex: number,\n): HoneyListItemId<Item> => {\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n\n if (typeof item === 'string' || typeof item === 'number') {\n return item;\n }\n\n return itemKey ? item[itemKey] : itemIndex;\n};\n","import React, { Fragment } from 'react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport { HoneyStatusContent } from '../HoneyStatusContent';\nimport { getHoneyListItemId } from './HoneyList.helpers';\nimport { HoneyListStyled } from './HoneyListStyled';\nimport type { HoneyListGenericProps, HoneyListItem } from './HoneyList.types';\nimport type { HoneyStatusContentProps } from '../HoneyStatusContent';\nimport type { HoneyListStyledProps } from './HoneyListStyled';\n\nexport interface HoneyListProps<Item extends HoneyListItem>\n extends FastOmit<HoneyListStyledProps, 'children'>,\n HoneyListGenericProps<Item>,\n HoneyStatusContentProps {}\n\n/**\n * A generic and reusable list component that handles different states such as loading, error, or no content,\n * and dynamically renders a list of items with custom content for each item.\n *\n * This component provides a flexible and accessible way to display lists, with built-in support for\n * various states to enhance the user experience. It accepts a `ref` to access the underlying HTML element\n * for greater control and customization.\n *\n * @template Item - Represents the type of the items to be rendered in the list. This allows the component\n * to be used with any item type.\n */\nexport const HoneyList = <Item extends HoneyListItem>({\n children,\n items,\n itemKey,\n loading,\n loadingOverContent,\n loadingContent,\n error,\n errorContent,\n empty = false,\n emptyContent,\n ...props\n}: HoneyListProps<Item>) => {\n return (\n <HoneyListStyled\n role=\"list\"\n // ARIA\n aria-busy={loading}\n // Data\n data-testid=\"honey-list\"\n {...props}\n >\n <HoneyStatusContent\n loading={loading}\n loadingOverContent={loadingOverContent}\n loadingContent={loadingContent}\n error={error}\n errorContent={errorContent}\n empty={empty || items?.length === 0}\n emptyContent={emptyContent}\n >\n {items?.map((item, itemIndex, thisItems) => (\n <Fragment key={String(getHoneyListItemId(item, itemKey, itemIndex))}>\n {children(item, itemIndex, thisItems)}\n </Fragment>\n ))}\n </HoneyStatusContent>\n </HoneyListStyled>\n );\n};\n","import type { ReactNode } from 'react';\n\nexport type HoneyListItem = object | string | number;\n\nexport type HoneyListItemKey<Item extends HoneyListItem> = ((item: Item) => string) | keyof Item;\n\nexport type HoneyListItemId<Item extends HoneyListItem> = Item[keyof Item] | string | number;\n\n/**\n * Generic props for HoneyList component.\n *\n * @template Item - The type of the items to be rendered in the list.\n * @template T - Additional props type.\n */\nexport interface HoneyListGenericProps<Item extends HoneyListItem> {\n /**\n * Function to render each item in the list.\n *\n * @param item - The current item to be rendered.\n * @param itemIndex - The index of the current item.\n * @param thisItems - The array of all items.\n *\n * @returns The node to be rendered for each item.\n */\n children: (item: Item, itemIndex: number, thisItems: Item[]) => ReactNode;\n /**\n * The array of items to be displayed in the list.\n */\n items: Item[] | undefined;\n /**\n * Optional function or key to uniquely identify each item in the list.\n */\n itemKey?: HoneyListItemKey<Item>;\n}\n","import { styled } from '@react-hive/honey-style';\n\nimport { HoneyFlex } from '../HoneyFlex';\nimport type { HoneyFlexProps } from '../HoneyFlex';\n\nexport type HoneyListStyledProps = HoneyFlexProps;\n\nexport const HoneyListStyled = styled<HoneyListStyledProps>(\n HoneyFlex,\n ({ $overflow = 'hidden auto' }) => ({\n $overflow,\n }),\n)``;\n","export * from './HoneyList.types';\nexport * from './HoneyList.helpers';\nexport * from './HoneyList';\n","import React, { useCallback } from 'react';\nimport { invokeIfFunction } from '@react-hive/honey-utils';\nimport type { FastOmit } from '@react-hive/honey-style';\nimport type { ReactNode } from 'react';\n\nimport { useRegisterHoneyOverlay } from '../hooks';\nimport { mergeRefs } from '../helpers';\nimport type { HoneyActiveOverlay, HoneyOverlayId, Nullable } from '~/types';\nimport type { HoneyFlexProps } from './HoneyFlex';\nimport { HoneyFlex } from './HoneyFlex';\n\nexport interface HoneyOverlayContext {\n /**\n * The current overlay instance, including methods and metadata for managing the overlay.\n */\n overlay: Nullable<HoneyActiveOverlay>;\n /**\n * Function to deactivate the overlay. Typically, triggers the `onDeactivate` callback.\n */\n deactivateOverlay: () => void;\n}\n\nexport interface HoneyOverlayProps extends FastOmit<HoneyFlexProps, 'children'> {\n /**\n * The content of the overlay, either as static nodes or a function that receives the object\n * with the current overlay state and helper methods.\n */\n children: ReactNode | ((overlayContext: HoneyOverlayContext) => ReactNode);\n /**\n * Determines whether the overlay is currently active.\n */\n active: boolean;\n /**\n * An optional unique identifier for the overlay.\n */\n overlayId?: HoneyOverlayId;\n /**\n * Callback function invoked when the overlay is deactivated.\n * Typically called when the \"Escape\" key is pressed or another user-defined action triggers deactivation.\n */\n onDeactivate: () => void;\n}\n\n/**\n * A reusable overlay component integrated with the `HoneyLayoutProvider` system.\n *\n * Automatically registers/unregisters itself with the layout system and handles key events.\n *\n * @param props - Component configuration.\n *\n * @example\n * ```tsx\n * <HoneyOverlay\n * active={isOpen}\n * onDeactivate={() => setIsOpen(false)}\n * >\n * {({ deactivateOverlay }) => (\n * <div>\n * <h2>Settings</h2>\n * <button onClick={deactivateOverlay}>Close</button>\n * </div>\n * )}\n * </HoneyOverlay>\n * ```\n */\nexport const HoneyOverlay = ({\n ref,\n children,\n active,\n overlayId,\n onDeactivate,\n ...props\n}: HoneyOverlayProps) => {\n const overlay = useRegisterHoneyOverlay(active, {\n id: overlayId,\n onKeyUp: useCallback(\n keyCode => {\n if (keyCode === 'Escape') {\n onDeactivate();\n }\n },\n [onDeactivate],\n ),\n });\n\n const mergedRef = mergeRefs(overlay?.setContainerRef, ref);\n\n return (\n <HoneyFlex ref={mergedRef} inert={!active} {...props}>\n {invokeIfFunction(children, {\n overlay,\n deactivateOverlay: onDeactivate,\n })}\n </HoneyFlex>\n );\n};\n","import React from 'react';\nimport type { ReferenceType } from '@floating-ui/react';\n\nimport { HoneyPopupTree } from './HoneyPopupTree';\nimport { HoneyPopupContent } from './HoneyPopupContent';\nimport type { HoneyPopupContentProps } from './HoneyPopupContent';\n\nexport interface HoneyPopupProps<\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n> extends HoneyPopupContentProps<Context, Reference, UseAutoSize> {\n /**\n * Whether to wrap the popup in a `FloatingTree`.\n * Required if you're using nested floating elements like tooltips or popups within a popup.\n *\n * @default false\n *\n * @see https://floating-ui.com/docs/floatingtree\n */\n useTree?: boolean;\n}\n\n/**\n * A popup component that provides floating behavior with customizable options.\n *\n * @template Context - Optional context type passed to floating UI.\n * @template Reference - The reference type used for positioning.\n * @template UseAutoSize - Enables auto-sizing behavior for content if `true`.\n */\nexport const HoneyPopup = <Context, Reference extends ReferenceType, UseAutoSize extends boolean>({\n useTree = false,\n ...props\n}: HoneyPopupProps<Context, Reference, UseAutoSize>) => {\n return (\n <HoneyPopupTree enabled={useTree}>\n <HoneyPopupContent {...props} />\n </HoneyPopupTree>\n );\n};\n","export {};\n","import React, { useMemo, useCallback } from 'react';\nimport { FloatingArrow, FloatingFocusManager, FloatingNode } from '@floating-ui/react';\nimport { invokeIfFunction } from '@react-hive/honey-utils';\nimport type { CSSProperties, ReactNode } from 'react';\nimport type {\n ReferenceType,\n FloatingArrowProps,\n FloatingFocusManagerProps,\n MiddlewareData,\n} from '@floating-ui/react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport { HoneyOverlay } from '../HoneyOverlay';\nimport { HoneyPopupContext } from './HoneyPopupContext';\nimport { HoneyPopupStyled } from './HoneyPopupStyled';\nimport { HoneyPopupPortal } from './HoneyPopupPortal';\nimport { useHoneyPopup } from './hooks';\nimport type { HoneyPopupPortalProps } from './HoneyPopupPortal';\nimport type { HoneyPopupStyledProps } from './HoneyPopupStyled';\nimport type { HoneyPopupContextValue } from './HoneyPopupContext';\nimport type { UseHoneyPopupOptions } from './hooks';\nimport type { HoneyOverlayProps } from '../HoneyOverlay';\n\ntype InheritedHoneyOverlayProps = FastOmit<\n HoneyOverlayProps,\n 'children' | 'active' | 'onDeactivate' | '$position'\n>;\n\nexport interface HoneyPopupContentProps<\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n> extends UseHoneyPopupOptions<Reference, UseAutoSize> {\n children: ReactNode | ((context: HoneyPopupContextValue<Context, Reference>) => ReactNode);\n referenceProps?: FastOmit<HoneyPopupStyledProps, 'children' | 'content'>;\n /**\n * Content inside the popup.\n */\n content: ReactNode | ((context: HoneyPopupContextValue<Context, Reference>) => ReactNode);\n /**\n * Additional props for the floating content.\n */\n contentProps?: UseAutoSize extends true\n ? // Omit `minWidth`, `minHeight`, `maxWidth` and `maxHeight` because they will be overwritten by size() middleware\n FastOmit<InheritedHoneyOverlayProps, '$minWidth' | '$minHeight' | '$maxWidth' | '$maxHeight'>\n : InheritedHoneyOverlayProps;\n /**\n * Props for managing focus inside the popup.\n *\n * @see https://floating-ui.com/docs/floatingfocusmanager#props\n */\n focusManagerProps?: FastOmit<FloatingFocusManagerProps, 'children' | 'context'>;\n /**\n * Properties for an arrow component.\n *\n * @see https://floating-ui.com/docs/FloatingArrow#props\n */\n arrowProps?: FastOmit<FloatingArrowProps, 'ref' | 'context'>;\n /**\n * Properties for `HoneyPopupPortal` component.\n */\n portalProps?: FastOmit<HoneyPopupPortalProps, 'children'>;\n /**\n * Function to adjust the floating content's styles before rendering.\n */\n adjustStyles?: (\n styles: CSSProperties,\n executionContext: {\n middlewareData: MiddlewareData;\n },\n ) => CSSProperties;\n /**\n * Optional context for the popup.\n */\n context?: Context;\n}\n\nexport const HoneyPopupContent = <\n Context,\n Reference extends ReferenceType,\n UseAutoSize extends boolean,\n>({\n children,\n referenceProps,\n content,\n contentProps,\n focusManagerProps,\n arrowProps,\n portalProps,\n adjustStyles,\n context,\n ...popupOptions\n}: HoneyPopupContentProps<Context, Reference, UseAutoSize>) => {\n const { useArrow, onClose } = popupOptions;\n\n const { nodeId, floating, isOpen, arrowRef, interactions, transition } =\n useHoneyPopup(popupOptions);\n\n const handleDeactivateOverlay = useCallback(() => {\n onClose?.('escape-key');\n }, [onClose]);\n\n const popupContext = useMemo<HoneyPopupContextValue<Context, Reference>>(\n () => ({\n context,\n floatingContext: floating.context,\n }),\n [context, floating.context],\n );\n\n return (\n <HoneyPopupStyled\n ref={floating.refs.setReference}\n {...interactions.getReferenceProps()}\n {...referenceProps}\n // Data\n data-testid=\"honey-popup\"\n >\n <HoneyPopupContext value={popupContext}>\n {invokeIfFunction(children, popupContext)}\n\n <FloatingNode id={nodeId}>\n {transition.isMounted && (\n <HoneyPopupPortal {...portalProps}>\n <FloatingFocusManager\n context={floating.context}\n disabled={!isOpen}\n {...focusManagerProps}\n >\n <HoneyOverlay\n ref={floating.refs.setFloating}\n active={isOpen}\n style={\n adjustStyles?.(\n {\n ...floating.floatingStyles,\n ...transition.styles,\n },\n {\n middlewareData: floating.middlewareData,\n },\n ) ?? {\n ...floating.floatingStyles,\n ...transition.styles,\n }\n }\n onDeactivate={handleDeactivateOverlay}\n {...interactions.getFloatingProps()}\n {...contentProps}\n // Data\n data-testid=\"honey-popup-floating-content\"\n >\n {useArrow && (\n <FloatingArrow\n ref={arrowRef}\n context={floating.context}\n fill=\"white\"\n {...arrowProps}\n />\n )}\n\n {invokeIfFunction(content, popupContext)}\n </HoneyOverlay>\n </FloatingFocusManager>\n </HoneyPopupPortal>\n )}\n </FloatingNode>\n </HoneyPopupContext>\n </HoneyPopupStyled>\n );\n};\n","import { createContext } from 'react';\nimport type { FloatingContext, ReferenceType } from '@floating-ui/react';\n\nexport interface HoneyPopupContextValue<Context, Reference extends ReferenceType> {\n context: Context | undefined;\n floatingContext: FloatingContext<Reference>;\n}\n\nexport const HoneyPopupContext = createContext<HoneyPopupContextValue<any, any> | undefined>(\n undefined,\n);\n","import React from 'react';\nimport { FloatingPortal } from '@floating-ui/react';\nimport type { FloatingPortalProps } from '@floating-ui/react';\n\n/**\n * @see https://floating-ui.com/docs/floatingportal#props\n */\nexport interface HoneyPopupPortalProps extends FloatingPortalProps {\n /**\n * @default true\n */\n enabled?: boolean;\n}\n\nexport const HoneyPopupPortal = ({ children, enabled = true, ...props }: HoneyPopupPortalProps) => {\n return enabled ? <FloatingPortal {...props}>{children}</FloatingPortal> : children;\n};\n","import { styled } from '@react-hive/honey-style';\n\nimport { HoneyFlex } from '../HoneyFlex';\nimport type { HoneyFlexProps } from '../HoneyFlex';\n\nexport type HoneyPopupStyledProps = HoneyFlexProps;\n\nexport const HoneyPopupStyled = styled<HoneyPopupStyledProps>(\n HoneyFlex,\n ({ $width = 'max-content' }) => ({\n $width,\n }),\n)``;\n","import React from 'react';\nimport { FloatingTree, useFloatingParentNodeId } from '@floating-ui/react';\nimport type { FloatingTreeProps } from '@floating-ui/react';\n\n/**\n * @see https://floating-ui.com/docs/floatingtree\n */\ninterface HoneyPopupTreeProps extends FloatingTreeProps {\n /**\n * Whether to render the `FloatingTree` component.\n * Automatically disables if there is a parent floating node.\n *\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * Wrapper component for `FloatingTree` that conditionally renders based on whether there is a parent floating node.\n *\n * @see https://floating-ui.com/docs/floatingtree\n */\nexport const HoneyPopupTree = ({ children, enabled = true, ...props }: HoneyPopupTreeProps) => {\n const parentNodeId = useFloatingParentNodeId();\n\n if (!enabled || parentNodeId) {\n return children;\n }\n\n return <FloatingTree {...props}>{children}</FloatingTree>;\n};\n","export * from './use-honey-popup';\nexport * from './use-honey-popup-context';\n","import { useContext } from 'react';\nimport { assert } from '@react-hive/honey-utils';\nimport type { ReferenceType } from '@floating-ui/react';\n\nimport { HoneyPopupContext } from '../HoneyPopupContext';\nimport type { HoneyPopupContextValue } from '../HoneyPopupContext';\n\nexport const useHoneyPopupContext = <\n Context,\n Reference extends ReferenceType = ReferenceType,\n>() => {\n const context = useContext<HoneyPopupContextValue<Context, Reference> | undefined>(\n HoneyPopupContext,\n );\n\n assert(\n context,\n 'The `useHoneyPopupContext()` hook can only be used inside <HoneyPopup/> component!',\n );\n\n return context;\n};\n","import {\n safePolygon,\n useClick,\n useClientPoint,\n useDismiss,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n} from '@floating-ui/react';\nimport type {\n ElementProps,\n ReferenceType,\n FloatingContext,\n UseDismissProps,\n UseClickProps,\n UseHoverProps,\n UseFocusProps,\n UseClientPointProps,\n UseRoleProps,\n} from '@floating-ui/react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nexport type HoneyPopupExtraInteraction = <Props extends object>(\n context: FloatingContext,\n props?: Props,\n) => ElementProps;\n\n/**\n * Options for configuring popup interactions.\n */\nexport interface UseHoneyPopupInteractionsOptions {\n /**\n * @default true\n */\n enabled?: boolean;\n /**\n * Determines the trigger event for opening the popup.\n *\n * @default 'click'\n */\n event?: 'click' | 'hover' | 'focus' | 'point' | 'manual';\n /**\n * Configuration for dismiss behavior.\n *\n * @see https://floating-ui.com/docs/usedismiss\n */\n dismissOptions?: FastOmit<UseDismissProps, 'escapeKey'>;\n /**\n * Configuration for click interactions.\n *\n * @see https://floating-ui.com/docs/useclick\n */\n clickOptions?: FastOmit<UseClickProps, 'enabled'>;\n /**\n * Configuration for hover interactions.\n *\n * @prop restMs Default is 150.\n * @prop handleClose Default is `safePolygon()`.\n *\n * @see https://floating-ui.com/docs/usehover\n */\n hoverOptions?: FastOmit<UseHoverProps, 'enabled'>;\n /**\n * Configuration for focus interactions.\n *\n * @see https://floating-ui.com/docs/usefocus\n */\n focusOptions?: FastOmit<UseFocusProps, 'enabled'>;\n /**\n * Configuration for pointer interactions.\n *\n * @see https://floating-ui.com/docs/useclientpoint\n */\n clientPointsOptions?: FastOmit<UseClientPointProps, 'enabled'>;\n /**\n * Configuration for role assignment.\n *\n * @see https://floating-ui.com/docs/userole\n */\n roleOptions?: FastOmit<UseRoleProps, 'enabled'>;\n /**\n * Additional custom interactions to be merged with default ones.\n * Useful for extending or overriding the default behavior.\n *\n * To define custom interaction, please use the ` HoneyPopupExtraInteraction ` type.\n *\n * @default []\n *\n * @see https://floating-ui.com/docs/custom-hooks\n */\n extraInteractions?: ElementProps[];\n}\n\nexport const useHoneyPopupInteractions = <Reference extends ReferenceType>(\n context: FloatingContext<Reference>,\n {\n enabled = true,\n event = 'click',\n dismissOptions,\n clickOptions,\n hoverOptions,\n focusOptions,\n clientPointsOptions,\n roleOptions,\n extraInteractions = [],\n }: UseHoneyPopupInteractionsOptions,\n) => {\n const dismiss = useDismiss(context, {\n escapeKey: false,\n ...dismissOptions,\n });\n\n const click = useClick(context, {\n enabled: enabled && event === 'click',\n ...clickOptions,\n });\n\n const hover = useHover(context, {\n restMs: 150,\n enabled: enabled && event === 'hover',\n handleClose: safePolygon(),\n ...hoverOptions,\n });\n\n const focus = useFocus(context, {\n enabled: enabled && event === 'focus',\n ...focusOptions,\n });\n\n const clientPoint = useClientPoint(context, {\n enabled: enabled && event === 'point',\n ...clientPointsOptions,\n });\n\n const role = useRole(context, roleOptions);\n\n return useInteractions([dismiss, click, hover, focus, clientPoint, role, ...extraInteractions]);\n};\n","import { useEffect, useRef, useState } from 'react';\nimport {\n arrow,\n autoUpdate,\n flip,\n offset,\n shift,\n size,\n autoPlacement,\n useFloating,\n useFloatingNodeId,\n useTransitionStyles,\n} from '@floating-ui/react';\nimport { isFunction } from '@react-hive/honey-utils';\nimport type { RefObject } from 'react';\nimport type { Derivable } from '@floating-ui/dom';\nimport type {\n Rect,\n ReferenceType,\n AutoUpdateOptions,\n AutoPlacementOptions,\n ArrowOptions,\n FlipOptions,\n OffsetOptions,\n ShiftOptions,\n SizeOptions,\n Middleware,\n OpenChangeReason,\n UseFloatingOptions,\n UseFloatingReturn,\n UseInteractionsReturn,\n UseTransitionStylesProps,\n} from '@floating-ui/react';\nimport type { FastOmit } from '@react-hive/honey-style';\n\nimport { useHoneyLayout, useHoneyOnChange } from '../../../hooks';\nimport { useHoneyPopupInteractions } from './use-honey-popup-interactions';\nimport type { Nullable } from '../../../types';\nimport type { UseHoneyPopupInteractionsOptions } from './use-honey-popup-interactions';\n\nexport interface UseHoneyPopupOptions<\n Reference extends ReferenceType,\n UseAutoSize extends boolean = boolean,\n> extends UseHoneyPopupInteractionsOptions {\n open?: boolean;\n /**\n * Options for configuring the floating UI behavior.\n */\n floatingOptions?: FastOmit<\n UseFloatingOptions<Reference>,\n 'nodeId' | 'open' | 'whileElementsMounted' | 'onOpenChange'\n >;\n /**\n * Whether to use the offset middleware.\n *\n * @default true\n */\n useOffset?: boolean;\n /**\n * Configuration for offset middleware.\n *\n * @see https://floating-ui.com/docs/offset\n */\n offsetOptions?: OffsetOptions;\n /**\n * Whether to use the flip middleware.\n *\n * @default true\n */\n useFlip?: boolean;\n /**\n * Configuration for flip middleware.\n *\n * @prop crossAxis - Default is `false`.\n * See details by https://floating-ui.com/docs/flip#combining-with-shift\n * @prop fallbackStrategy - Default is `bestFit`.\n */\n flipOptions?: FlipOptions;\n /**\n * Whether to use the shift middleware.\n *\n * @default true\n */\n useShift?: boolean;\n /**\n * Configuration for shift middleware.\n *\n * @see https://floating-ui.com/docs/shift\n */\n shiftOptions?: ShiftOptions;\n /**\n * Whether to show an arrow indicator.\n *\n * @default false\n */\n useArrow?: boolean;\n /**\n * Configuration for the floating arrow.\n */\n arrowOptions?: FastOmit<ArrowOptions, 'element'>;\n /**\n * @prop duration Default is 250.\n *\n * @see https://floating-ui.com/docs/usetransition#usetransitionstyles\n */\n transitionOptions?: UseTransitionStylesProps;\n /**\n * @default false\n */\n useAutoPlacement?: boolean;\n /**\n * @see https://floating-ui.com/docs/autoplacement\n */\n autoPlacementOptions?: AutoPlacementOptions | Derivable<AutoPlacementOptions>;\n /**\n * Whether to use automatic position updates.\n *\n * @default false\n */\n useAutoUpdate?: boolean;\n /**\n * Configuration for auto-update behavior.\n *\n * @see https://floating-ui.com/docs/autoupdate\n */\n autoUpdateOptions?: AutoUpdateOptions;\n /**\n * @default false\n */\n useAutoSize?: UseAutoSize;\n /**\n * Configuration for auto-size behavior.\n *\n * @remarks Only works when `useAutoSize` is `true`.\n *\n * @see https://floating-ui.com/docs/size\n */\n sizeOptions?: Omit<SizeOptions, 'apply'>;\n /**\n * Minimum acceptable width for the floating element when auto-sizing.\n *\n * - If a number is provided, it is used directly as the minimum width (in pixels).\n * - If a function is provided, it is called with the reference element's `Rect`\n * and should return the minimum width.\n * - If `null`, the reference element’s width is used as the minimum.\n *\n * The final applied value is clamped against `maxAcceptableWidth`.\n *\n * @default null\n *\n * @remarks Only applied when `useAutoSize` is `true`.\n */\n minAcceptableWidth?: Nullable<number | ((reference: Rect) => number)>;\n /**\n * Minimum acceptable height for the floating element when auto-sizing.\n *\n * - If a number is provided, it is used directly as the minimum height (in pixels).\n * - If a function is provided, it is called with the reference element's `Rect`\n * and should return the minimum height.\n * - If `null`, `0` is used as the minimum height.\n *\n * The final applied value is clamped against `maxAcceptableHeight`.\n *\n * @default null\n *\n * @remarks Only applied when `useAutoSize` is `true`.\n */\n minAcceptableHeight?: Nullable<number | ((reference: Rect) => number)>;\n /**\n * Maximum acceptable width for the floating element when auto-sizing.\n *\n * - If a number is provided, it represents the absolute maximum width (in pixels).\n * - If a function is provided, it is called with the reference element's `Rect`\n * and should return the maximum width.\n * - If `undefined`, the available width calculated by Floating UI is used.\n *\n * @default undefined\n *\n * @remarks Only applied when `useAutoSize` is `true`.\n */\n maxAcceptableWidth?: number | ((reference: Rect) => number);\n /**\n * Maximum acceptable height for the floating element when auto-sizing.\n *\n * - If a number is provided, it represents the absolute maximum height (in pixels).\n * - If a function is provided, it is called with the reference element's `Rect`\n * and should return the maximum height.\n * - If `undefined`, the available height calculated by Floating UI is used.\n *\n * @default undefined\n *\n * @remarks Only applied when `useAutoSize` is `true`.\n */\n maxAcceptableHeight?: number | ((reference: Rect) => number);\n /**\n * Callback invoked when the popup opens.\n */\n onOpen?: () => void;\n /**\n * Callback invoked when the popup closes.\n */\n onClose?: (reason?: OpenChangeReason, event?: Event) => void;\n}\n\ninterface UseHoneyPopupApi<Reference extends ReferenceType> {\n /**\n * Unique identifier for the floating element.\n */\n nodeId: string | undefined;\n /**\n * Whether the popup is currently open.\n */\n isOpen: boolean;\n /**\n * Floating UI instance with positioning and middleware.\n */\n floating: UseFloatingReturn<Reference>;\n /**\n * Ref for the floating arrow element.\n */\n arrowRef: RefObject<Nullable<SVGSVGElement>>;\n /**\n * Event handlers for the popup (click, hover, etc.).\n */\n interactions: UseInteractionsReturn;\n transition: ReturnType<typeof useTransitionStyles>;\n}\n\n/**\n * Hook for managing a floating popup with customizable behavior.\n *\n * @param options - Configuration options for the popup.\n *\n * @returns An object containing state and utilities for managing the popup.\n */\nexport const useHoneyPopup = <Reference extends ReferenceType>({\n enabled = true,\n event,\n dismissOptions,\n clickOptions,\n hoverOptions,\n focusOptions,\n clientPointsOptions,\n roleOptions,\n extraInteractions,\n open,\n floatingOptions,\n useOffset = true,\n offsetOptions,\n useFlip = true,\n flipOptions,\n useShift = true,\n shiftOptions,\n useArrow = false,\n arrowOptions,\n transitionOptions,\n useAutoPlacement = false,\n autoPlacementOptions,\n useAutoUpdate = false,\n autoUpdateOptions,\n useAutoSize = false,\n sizeOptions,\n minAcceptableWidth = null,\n minAcceptableHeight = null,\n maxAcceptableWidth,\n maxAcceptableHeight,\n onOpen,\n onClose,\n}: UseHoneyPopupOptions<Reference>): UseHoneyPopupApi<Reference> => {\n const { theme } = useHoneyLayout();\n\n const nodeId = useFloatingNodeId();\n\n const [isOpenLocal, setIsOpenLocal] = useState(false);\n\n const arrowRef = useRef<Nullable<SVGSVGElement>>(null);\n\n const isOpen = enabled && (open ?? isOpenLocal);\n\n useEffect(() => {\n if (isOpen) {\n onOpen?.();\n }\n }, [isOpen]);\n\n useHoneyOnChange(enabled, enabled => {\n if (!enabled) {\n setIsOpenLocal(false);\n }\n });\n\n const middlewares: Middleware[] = [];\n\n if (useOffset) {\n middlewares.push(offset(offsetOptions ?? theme.spacings.base));\n }\n\n let flipMiddleware: Nullable<Middleware> = null;\n\n if (useAutoPlacement) {\n middlewares.push(autoPlacement(autoPlacementOptions));\n } else if (useFlip) {\n // https://floating-ui.com/docs/flip\n flipMiddleware = flip({\n // https://floating-ui.com/docs/flip#combining-with-shift\n crossAxis: false,\n fallbackStrategy: 'bestFit',\n ...flipOptions,\n });\n }\n\n if (useAutoSize) {\n // https://floating-ui.com/docs/size\n const sizeMiddleware = size({\n ...sizeOptions,\n apply({ elements, rects, availableWidth, availableHeight }) {\n const minWidth = isFunction(minAcceptableWidth)\n ? minAcceptableWidth(rects.reference)\n : (minAcceptableWidth ?? rects.reference.width);\n\n const maxWidth = isFunction(maxAcceptableWidth)\n ? maxAcceptableWidth(rects.reference)\n : Math.min(availableWidth, maxAcceptableWidth ?? Infinity);\n\n const minHeight = isFunction(minAcceptableHeight)\n ? minAcceptableHeight(rects.reference)\n : (minAcceptableHeight ?? 0);\n\n const maxHeight = isFunction(maxAcceptableHeight)\n ? maxAcceptableHeight(rects.reference)\n : Math.min(availableHeight, maxAcceptableHeight ?? Infinity);\n\n Object.assign(elements.floating.style, {\n minWidth: `${Math.min(minWidth, maxWidth)}px`,\n maxWidth: `${maxWidth}px`,\n minHeight: `${Math.min(minHeight, maxHeight)}px`,\n maxHeight: `${maxHeight}px`,\n });\n },\n });\n\n if (flipMiddleware) {\n if (flipOptions?.fallbackStrategy === 'initialPlacement') {\n /**\n * If the initial placement to take precedence, place `size()` before `flip()`.\n *\n * @see https://floating-ui.com/docs/size#initialplacement\n */\n middlewares.push(sizeMiddleware, flipMiddleware);\n } else {\n /**\n * The `bestFit` fallback strategy in the `flip()` middleware is the default, which ensures\n * the best fitting placement is used.\n * In this scenario, place `size()` after `flip()`.\n *\n * @see https://floating-ui.com/docs/size#bestfit\n */\n middlewares.push(flipMiddleware, sizeMiddleware);\n }\n } else {\n middlewares.push(sizeMiddleware);\n }\n } else if (flipMiddleware) {\n middlewares.push(flipMiddleware);\n }\n\n if (useShift) {\n middlewares.push(\n // https://floating-ui.com/docs/shift\n shift({\n padding: theme.spacings.base,\n ...shiftOptions,\n }),\n );\n }\n\n if (useArrow) {\n /**\n * The `arrow()` should generally be placed toward the end of the middlewares,\n * after `shift()` or `autoPlacement()`.\n *\n * @see https://floating-ui.com/docs/arrow\n */\n middlewares.push(\n arrow({\n element: arrowRef,\n // https://floating-ui.com/docs/floatingarrow#arrow-does-not-avoid-rounded-corners\n padding: theme.spacings.base,\n ...arrowOptions,\n }),\n );\n }\n\n const floating = useFloating<Reference>({\n nodeId,\n open: isOpen,\n middleware: middlewares,\n onOpenChange: (open, event, reason) => {\n setIsOpenLocal(open);\n\n if (!open) {\n onClose?.(reason, event);\n }\n },\n // https://floating-ui.com/docs/usefloating#whileelementsmounted\n ...(useAutoUpdate && {\n whileElementsMounted: (reference, floating, update) =>\n autoUpdate(reference, floating, update, autoUpdateOptions),\n }),\n ...floatingOptions,\n });\n\n const interactions = useHoneyPopupInteractions(floating.context, {\n enabled,\n event,\n dismissOptions,\n clickOptions,\n hoverOptions,\n focusOptions,\n clientPointsOptions,\n roleOptions,\n extraInteractions,\n });\n\n const transition = useTransitionStyles(floating.context, {\n duration: 250,\n ...transitionOptions,\n });\n\n return {\n nodeId,\n isOpen,\n floating,\n arrowRef,\n interactions,\n transition,\n };\n};\n","export * from './HoneyPopup.types';\nexport * from './HoneyPopupContext';\nexport * from './HoneyPopup';\nexport * from './hooks';\n","import React from 'react';\nimport type { ReactNode, PropsWithChildren } from 'react';\n\n/**\n * This type is used to provide properties for handling different states of a component,\n * such as loading, error, and no content states, along with the content to display in each state.\n */\nexport interface HoneyStatusContentProps {\n /**\n * A flag indicating whether the component is in a loading state.\n *\n * @default false\n */\n loading?: boolean;\n /**\n * The content to display when the component is in a loading state.\n *\n * @default null\n */\n loadingContent?: ReactNode;\n /**\n * A flag indicating whether the loading content should appear on top of the content.\n *\n * @default false\n */\n loadingOverContent?: boolean;\n /**\n * A flag indicating whether the component has encountered an error.\n *\n * @default false\n */\n error?: boolean;\n /**\n * The content to display when the component has encountered an error.\n *\n * @default null\n */\n errorContent?: ReactNode;\n /**\n * A flag indicating whether the component has no content to display.\n *\n * @default false\n */\n empty?: boolean;\n /**\n * The content to display when the component has no content to display.\n *\n * @default null\n */\n emptyContent?: ReactNode;\n}\n\n/**\n * A component that conditionally renders blocks based on specified boolean flags.\n */\nexport const HoneyStatusContent = ({\n children,\n loading = false,\n loadingOverContent = false,\n error = false,\n empty = false,\n loadingContent = null,\n errorContent = null,\n emptyContent = null,\n}: PropsWithChildren<HoneyStatusContentProps>) => {\n if (error) {\n return errorContent;\n }\n\n if (!loadingOverContent && loading) {\n return loadingContent;\n }\n\n return (\n <>\n {loadingOverContent && loading && loadingContent}\n\n {empty ? emptyContent : children}\n </>\n );\n};\n","export * from './HoneyBox';\nexport * from './HoneyFlex';\nexport * from './HoneyGrid';\nexport * from './HoneyGridColumn';\nexport * from './HoneyList';\nexport * from './HoneyStatusContent';\nexport * from './HoneyLazyContent';\nexport * from './HoneyOverlay';\nexport * from './HoneyPopup';\nexport * from './HoneyContextMenu';\n","const ENV = process.env.NODE_ENV || 'development';\n\nexport const __DEV__ = ENV !== 'production';\n\nif (__DEV__ && typeof window !== 'undefined' && !process.env.JEST_WORKER_ID) {\n console.info(\n '[@react-hive/honey-layout]: You are running in development mode. ' +\n 'This build is not optimized for production and may include extra checks or logs.',\n );\n}\n","import { createContext } from 'react';\nimport type { HoneyTheme } from '@react-hive/honey-style';\n\nimport type {\n HoneyOverlayConfig,\n HoneyScreenState,\n HoneyOverlayId,\n HoneyActiveOverlay,\n} from '../types';\n\n/**\n * Function to unregister a previously registered overlay.\n */\nexport type HoneyUnregisterOverlay = (targetOverlayId: HoneyOverlayId) => void;\n\n/**\n * Function to register a new overlay and manage its lifecycle.\n *\n * @param overlayConfig - Configuration object for the overlay.\n */\nexport type HoneyRegisterOverlay = (overlayConfig: HoneyOverlayConfig) => HoneyActiveOverlay;\n\nexport interface HoneyLayoutContextValue {\n /**\n * Represents the theme object.\n */\n theme: HoneyTheme;\n /**\n * Represents the current state of the screen.\n */\n screenState: HoneyScreenState;\n /**\n * Active overlays.\n */\n overlays: HoneyActiveOverlay[];\n /**\n * Function to register a new overlay.\n */\n registerOverlay: HoneyRegisterOverlay;\n /**\n * Function to unregister an overlay.\n */\n unregisterOverlay: HoneyUnregisterOverlay;\n}\n\nexport const HoneyLayoutContext = createContext<HoneyLayoutContextValue | undefined>(undefined);\n","export * from './HoneyLayoutContext';\n","import { css } from '@react-hive/honey-style';\n\nimport type { HoneyCSSTimingFunction, HoneyEffect } from './types';\n\n/**\n * Configuration object for defining the transition effect on visibility and opacity.\n */\ninterface HoneyVisibilityTransitionEffectConfig {\n /**\n * Duration of the transition in milliseconds.\n * Determines how long the transition will take to complete.\n */\n durationMs: number;\n /**\n * Timing function for the transition. Defines the rate of change during the transition.\n * It can either be a single timing function or an array of multiple functions applied sequentially.\n *\n * @default ease-in-out\n */\n timingFunction?: HoneyCSSTimingFunction | HoneyCSSTimingFunction[];\n /**\n * Additional CSS properties to include in the transition.\n * These properties will be animated alongside `opacity` and `visibility`.\n */\n extraProperties?: string[];\n /**\n * Optional class name that can be applied to the active state.\n * When specified, the styles for the active state (e.g., `opacity: 1` and `visibility: visible`)\n * will also be applied when the element has this class.\n */\n activeClassName?: string;\n}\n\n/**\n * Context props used to control the transition effect.\n */\nexport interface HoneyVisibilityTransitionEffectContextProps {\n /**\n * Specifies whether the transition should be applied.\n * When true, the element becomes visible and transitions in; when false, it transitions out and becomes hidden.\n *\n * @default false\n */\n active?: boolean;\n}\n\n/**\n * An effect that applies smooth transitions to the `visibility`, `opacity`, and optional extra properties of an element.\n *\n * This effect allows you to animate the appearance or disappearance of an element, making it fade in or out.\n * The behavior is customizable via the configuration, including the duration of the transition, timing functions, and any additional\n * CSS properties you want to animate. It also supports applying an `activeClassName` to represent the active state through CSS.\n */\nexport const honeyVisibilityTransitionEffect: HoneyEffect<\n HoneyVisibilityTransitionEffectConfig,\n HoneyVisibilityTransitionEffectContextProps\n> =\n ({ durationMs, timingFunction = 'ease-in-out', extraProperties = [], activeClassName }) =>\n ({ active = false }) => css`\n opacity: ${active ? 1 : 0};\n visibility: ${active ? 'visible' : 'hidden'};\n\n transition-property: ${['opacity', 'visibility', ...extraProperties].join(', ')};\n transition-duration: ${durationMs}ms;\n transition-timing-function: ${Array.isArray(timingFunction)\n ? timingFunction.join(', ')\n : timingFunction};\n\n ${activeClassName &&\n css`\n &.${activeClassName} {\n opacity: 1;\n visibility: visible;\n }\n `}\n `;\n","import * as CSS from 'csstype';\nimport { CSS_COLOR_PROPERTIES, CSS_SPACING_PROPERTIES } from '@react-hive/honey-style';\nimport { assert, camelToDashCase } from '@react-hive/honey-utils';\nimport {\n css,\n checkIsThemeColorValue,\n resolveColor,\n mediaQuery,\n resolveSpacing,\n} from '@react-hive/honey-style';\nimport type { HTMLAttributes } from 'react';\nimport type {\n FastOmit,\n HoneyTheme,\n HoneyStyledFunction,\n HoneyBreakpointName,\n HoneyBreakpoints,\n HoneyMediaQueryRule,\n HoneyCSSSpacingProperty,\n HoneyCSSColorProperty,\n} from '@react-hive/honey-style';\n\nimport type {\n HoneyScreenState,\n HoneyCSSPropertyValue,\n Honey$PrefixedCSSProperty,\n Honey$PrefixedCSSProperties,\n} from '../types';\n\nexport const generateUniqueId = () => {\n const timestamp = Date.now().toString();\n const randomNum = Math.floor(Math.random() * 10000)\n .toString()\n .padStart(4, '0');\n\n return `${timestamp}${randomNum}`;\n};\n\n/**\n * Type guard function that checks whether a given CSS property name\n * is classified as a spacing-related property.\n *\n * Spacing properties include margin, padding, positional offsets,\n * and layout gaps (e.g., `gap`, `top`, `marginLeft`, etc.).\n *\n * @param propertyName - The name of the CSS property to check.\n *\n * @returns `true` if the property is a spacing property, otherwise `false`.\n */\nconst checkIsSpacingCSSProperty = (\n propertyName: keyof CSS.Properties,\n): propertyName is HoneyCSSSpacingProperty =>\n (CSS_SPACING_PROPERTIES as string[]).includes(propertyName as string);\n\n/**\n * Type guard function to check if a property name is a color property.\n *\n * @param propertyName - The name of the CSS property.\n *\n * @returns True if the property name is a color property, false otherwise.\n */\nconst checkIsColorCSSProperty = (\n propertyName: keyof CSS.Properties,\n): propertyName is HoneyCSSColorProperty =>\n (CSS_COLOR_PROPERTIES as string[]).includes(propertyName as string);\n\n/**\n * Determines if a given HTML property is a CSS property that is prefixed with a '$'.\n * This convention is typically used for applying dynamic or responsive styles.\n *\n * @param propertyName - The HTML property or key to check.\n *\n * @returns Returns true if the property is a valid prefixed CSS property, otherwise false.\n */\nconst checkIs$PrefixedCSSProperty = (\n propertyName: string,\n): propertyName is Honey$PrefixedCSSProperty => propertyName[0] === '$';\n\n/**\n * Retrieves the CSS property value for a specific breakpoint, potentially resolving it to include units.\n *\n * This function handles different types of property values:\n * - If `propertyValue` is an object (indicating a responsive value), it extracts the value corresponding to the specified `breakpoint`.\n * - If the property is related to dimensions or spacing (e.g., `width`, `margin`),\n * it uses the `resolveSpacing` function to calculate and format the value with the appropriate unit (e.g., 'px').\n *\n * @remarks\n * The `resolveSpacing` function returns a function that requires the `theme` object to perform the resolution,\n * which needs to be provided in the context where `getCSSPropertyValue` is used.\n *\n * @param propertyName - The name of the CSS property to retrieve. Must be a key of `CSS.Properties`.\n * @param propertyValue - The value associated with the CSS property, which can be a direct value, a responsive object, or a function.\n * @param breakpoint - The name of the breakpoint used to extract the value from a responsive object, if applicable.\n *\n * @returns The resolved CSS property value. This could be:\n * - A direct value (if `propertyValue` was not an object or the property is not related to dimensions).\n * - A value formatted with units (if the property is related to dimensions or spacing and `resolveSpacing` was applied).\n */\nconst getCSSPropertyValue = <CSSProperty extends keyof CSS.Properties>(\n propertyName: CSSProperty,\n propertyValue: HoneyCSSPropertyValue<CSSProperty>,\n breakpoint: HoneyBreakpointName,\n) => {\n // Determine the actual value to use based on the breakpoint\n const resolvedValue =\n typeof propertyValue === 'object' && !Array.isArray(propertyValue)\n ? propertyValue[breakpoint]\n : propertyValue;\n\n if (resolvedValue === undefined) {\n return undefined;\n }\n\n if (checkIsSpacingCSSProperty(propertyName)) {\n if (typeof resolvedValue === 'number' || Array.isArray(resolvedValue)) {\n return resolveSpacing(resolvedValue, 'px');\n }\n } else if (checkIsColorCSSProperty(propertyName)) {\n if (typeof resolvedValue === 'string' && checkIsThemeColorValue(resolvedValue)) {\n return resolveColor(resolvedValue);\n }\n }\n\n return resolvedValue;\n};\n\nexport type HoneyStyledBoxProps = HTMLAttributes<HTMLElement> & Honey$PrefixedCSSProperties;\n\n/**\n * Filters and matches CSS properties from the provided props object based on the specified breakpoint.\n *\n * @template Props - The type representing the HTML attributes and Honey-prefixed CSS properties.\n *\n * @param props - The object containing CSS properties and other HTML attributes.\n * @param breakpoint - The name of the breakpoint for filtering CSS properties.\n *\n * @returns An array of tuples where each tuple contains a Honey-prefixed CSS property and its value.\n */\nconst matchCSSProperties = <Props extends HoneyStyledBoxProps>(\n props: Props,\n breakpoint: HoneyBreakpointName,\n) =>\n Object.entries(props).filter(\n ([propertyName, propertyValue]) =>\n (checkIs$PrefixedCSSProperty(propertyName) && breakpoint === 'xs') ||\n (propertyValue && typeof propertyValue === 'object' && breakpoint in propertyValue),\n ) as [Honey$PrefixedCSSProperty, CSS.Properties[keyof CSS.Properties]][];\n\n/**\n * Generates CSS styles based on the provided breakpoint and properties.\n * Filters the properties to include only those that match the specified breakpoint.\n * Converts the property names from camelCase to dash-case and retrieves their values.\n *\n * @template Props - The type representing HTML attributes and Honey-prefixed CSS properties.\n *\n * @param breakpoint - The name of the breakpoint to filter properties by.\n *\n * @returns A function that takes an execution context and properties, and returns a CSS block\n * with styles generated for the specified breakpoint.\n */\nexport const createStyles =\n (breakpoint: HoneyBreakpointName): HoneyStyledFunction<HoneyStyledBoxProps> =>\n ({ theme, ...props }) => css`\n ${matchCSSProperties(props, breakpoint).map(([prefixedPropertyName, propertyValue]) => {\n const propertyName = prefixedPropertyName.slice(1) as keyof CSS.Properties;\n\n return css`\n ${camelToDashCase(propertyName)}: ${getCSSPropertyValue(\n propertyName,\n propertyValue,\n breakpoint,\n )};\n `;\n })}\n `;\n\n/**\n * Determines if any of the given properties include styles that require a media query\n * for the specified breakpoint. This function checks if there are any properties in `props`\n * that are prefixed with `$` and have responsive values that include the given breakpoint.\n *\n * @param breakpoint - The name of the breakpoint to check within responsive values.\n * @param props - The object that may contain responsive styles.\n *\n * @returns Returns true if at least one property in `props` has styles for the specified breakpoint; otherwise, false.\n */\nconst hasBreakpointStyles = (\n breakpoint: HoneyBreakpointName,\n props: HoneyStyledBoxProps,\n): boolean =>\n Object.entries(props).some(\n ([propertyName, propertyValue]) =>\n checkIs$PrefixedCSSProperty(propertyName) &&\n typeof propertyValue === 'object' &&\n breakpoint in propertyValue,\n );\n\n/**\n * Utility function that returns functions for generating media queries for the specified breakpoint.\n * The down function creates a media query for screen sizes smaller than the breakpoint,\n * while the up function creates a media query for screen sizes larger than the breakpoint.\n *\n * @param breakpoint - The name of the breakpoint.\n * @param [ruleOptions={}] - Additional options for the media rule.\n *\n * @returns Styled functions for generating media queries.\n */\nexport const bpMedia = (\n breakpoint: HoneyBreakpointName,\n ruleOptions: FastOmit<HoneyMediaQueryRule, 'width' | 'minWidth' | 'maxWidth'> = {},\n) => {\n const resolveBpValue = (theme: HoneyTheme) => {\n const value = theme.breakpoints[breakpoint];\n assert(value, `[honey-layout]: Setup for breakpoint \"${breakpoint}\" was not found.`);\n\n return value;\n };\n\n const down: HoneyStyledFunction<object> = ({ theme }) =>\n mediaQuery([\n {\n maxWidth: `${resolveBpValue(theme)}px`,\n ...ruleOptions,\n },\n ]);\n\n const up: HoneyStyledFunction<object> = ({ theme }) =>\n mediaQuery([\n {\n minWidth: `${resolveBpValue(theme)}px`,\n ...ruleOptions,\n },\n ]);\n\n return {\n down,\n up,\n };\n};\n\n/**\n * Applies CSS styles wrapped in a media query for the specified breakpoint based on the provided properties.\n * If no styles are found for the specified breakpoint or if the breakpoint configuration is missing,\n * it returns `null`. Otherwise, it generates media query styles using the `createStyles` function.\n *\n * @template Props - The type representing HTML attributes and Honey-prefixed CSS properties.\n *\n * @param breakpoint - The name of the breakpoint to apply media query styles for.\n *\n * @returns A function that takes context and properties and returns a CSS block wrapped in a media query\n * if styles exist for the specified breakpoint; otherwise, returns `null`.\n */\nexport const applyBreakpointStyles =\n (breakpoint: HoneyBreakpointName): HoneyStyledFunction<HoneyStyledBoxProps> =>\n ({ theme, ...props }) => {\n const breakpointConfig = theme.breakpoints[breakpoint];\n\n if (!breakpointConfig || !hasBreakpointStyles(breakpoint, props)) {\n return null;\n }\n\n return css`\n ${bpMedia(breakpoint).up} {\n ${createStyles(breakpoint)};\n }\n `;\n };\n\n/**\n * Resolves the current screen state based on the window's dimensions and the breakpoints provided in the theme.\n *\n * This function evaluates the current orientation (portrait or landscape) by checking the screen's orientation type.\n * It then compares the window's width against the theme-defined breakpoints to determine the active breakpoint\n * (e.g., xs, sm, md, lg, xl). If no breakpoints are provided, it returns a default state with all breakpoints set to false.\n *\n * @param breakpoints - A partial mapping of breakpoints defined in the theme. These breakpoints represent the minimum\n * width required for each screen size category (e.g., xs, sm, md, lg, xl).\n *\n * @returns An object representing the screen state, including:\n * - `isPortrait`: Whether the screen is in portrait mode.\n * - `isLandscape`: Whether the screen is in landscape mode.\n * - `isXs`: Whether the screen width is less than the 'xs' breakpoint.\n * - `isSm`: Whether the screen width is less than the 'sm' breakpoint.\n * - `isMd`: Whether the screen width is less than the 'md' breakpoint.\n * - `isLg`: Whether the screen width is less than the 'lg' breakpoint.\n * - `isXl`: Whether the screen width is less than the 'xl' breakpoint.\n */\nexport const resolveScreenState = (\n breakpoints: Partial<HoneyBreakpoints> | undefined,\n): HoneyScreenState => {\n const orientationType = window.screen.orientation.type;\n\n const isPortrait =\n orientationType === 'portrait-primary' || orientationType === 'portrait-secondary';\n\n const isLandscape = !isPortrait;\n\n if (!breakpoints) {\n return {\n isPortrait,\n isLandscape,\n isXs: false,\n isSm: false,\n isMd: false,\n isLg: false,\n isXl: false,\n };\n }\n\n const sortedBreakpoints = Object.entries(breakpoints)\n .sort(([, a], [, b]) => a - b) // Sort breakpoints in ascending order of width\n .map(([name]) => name) as (keyof Partial<HoneyBreakpoints>)[];\n\n const currentBreakpoint =\n sortedBreakpoints.find(breakpoint => {\n const screenSize = breakpoints[breakpoint];\n\n return screenSize ? window.innerWidth < screenSize : false;\n }) ?? sortedBreakpoints.pop(); // Use the largest breakpoint if no match is found\n\n return {\n isPortrait,\n isLandscape,\n isXs: currentBreakpoint === 'xs',\n isSm: currentBreakpoint === 'sm',\n isMd: currentBreakpoint === 'md',\n isLg: currentBreakpoint === 'lg',\n isXl: currentBreakpoint === 'xl',\n };\n};\n","export * from './react.helpers';\nexport * from './helpers';\n","import type { RefObject, Ref, RefCallback } from 'react';\nimport { isFunction, isObject } from '@react-hive/honey-utils';\n\nimport type { Nullable } from '../types';\n\n/**\n * Merges multiple refs into a single ref callback.\n * This ensures that all provided refs receive the same reference.\n *\n * @param refs - A list of refs that need to be merged.\n *\n * @returns A single ref callback that assigns the element to all provided refs.\n */\nexport const mergeRefs =\n <T>(...refs: (Ref<T> | undefined)[]): RefCallback<T> =>\n value => {\n refs.forEach(ref => {\n if (isFunction(ref)) {\n ref(value);\n } else if (isObject(ref)) {\n (ref as RefObject<Nullable<T>>).current = value;\n }\n });\n };\n","export * from './use-honey-on-change';\nexport * from './use-honey-media-query';\nexport * from './use-honey-drag';\nexport * from './use-honey-document-key-up-handler';\nexport * from './use-honey-layout';\nexport * from './use-register-honey-overlay';\nexport * from './use-honey-overlay';\nexport * from './use-honey-resize';\nexport * from './use-honey-synthetic-scroll';\nexport * from './use-honey-synthetic-scroll-x';\nexport * from './use-honey-synthetic-scroll-y';\nexport * from './use-honey-raf-loop';\n","import { useEffect } from 'react';\n\nimport type { HoneyKeyboardEventCode } from '../types';\n\nexport type HoneyDocumentKeyUpHandler = (keyCode: HoneyKeyboardEventCode, e: KeyboardEvent) => void;\n\ninterface UseHoneyDocumentKeyUpHandlerOptions {\n /**\n * Whether the event listener should be active.\n *\n * @default true\n */\n enabled?: boolean;\n /**\n * Whether to call `preventDefault()` on matching keyup events.\n *\n * This is useful for suppressing default browser behavior (e.g., scrolling with Space key).\n *\n * @default true\n */\n preventDefault?: boolean;\n}\n\n/**\n * Hook for handling specific key up events on the `document` object.\n *\n * This hook adds a `keyup` event listener at the document level and triggers the provided `keyUpHandler`\n * when one of the specified `listenKeys` is released.\n *\n * @param keyUpHandler - The callback function invoked when a matching key is released.\n * @param listenKeys - An array of key codes (`KeyboardEvent.code`) to listen for.\n * @param options - Optional configuration to control event behavior and listener activation.\n *\n * @example\n * ```tsx\n * useHoneyDocumentKeyUpHandler(\n * (keyCode, event) => {\n * console.log('Key released:', keyCode);\n * },\n * ['Escape'],\n * );\n * ```\n */\nexport const useHoneyDocumentKeyUpHandler = (\n keyUpHandler: HoneyDocumentKeyUpHandler,\n listenKeys: HoneyKeyboardEventCode[],\n { enabled = true, preventDefault = true }: UseHoneyDocumentKeyUpHandlerOptions = {},\n) => {\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const handleKeyUp = (e: KeyboardEvent) => {\n const keyCode = e.code as HoneyKeyboardEventCode;\n\n if (listenKeys.includes(keyCode)) {\n if (preventDefault) {\n e.preventDefault();\n }\n\n keyUpHandler(keyCode, e);\n }\n };\n\n document.addEventListener('keyup', handleKeyUp);\n\n return () => {\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, [keyUpHandler, enabled, preventDefault]);\n};\n","import { useEffect } from 'react';\nimport { calculateEuclideanDistance, calculateMovingSpeed } from '@react-hive/honey-utils';\nimport type { RefObject } from 'react';\n\nimport type { Nullable } from '../types';\n\n/**\n * Handler triggered when a drag operation starts.\n *\n * @template Element - The type of the draggable element (must extend HTMLElement).\n *\n * @param draggableElement - The element being dragged.\n * @param e - The event that initiated the drag. Can be either a `MouseEvent` or a `TouchEvent`.\n *\n * @returns A Promise that resolves to a boolean:\n * - `false` to cancel the drag.\n * - `true` to proceed with the drag.\n */\nexport type HoneyDragOnStartHandler<Element extends HTMLElement> = (\n draggableElement: Element,\n e: MouseEvent | TouchEvent,\n) => Promise<boolean>;\n\n/**\n * Context provided to the move handler, containing information about the drag's movement.\n */\nexport interface HoneyDragMoveContext {\n /**\n * The horizontal distance has moved since the last frame.\n */\n deltaX: number;\n /**\n * The vertical distance has moved since the last frame.\n */\n deltaY: number;\n /**\n * The total horizontal distance from the starting position to the current position.\n */\n distanceX: number;\n /**\n * The total vertical distance from the starting position to the current position.\n */\n distanceY: number;\n /**\n * The straight-line distance from the starting position to the current position.\n */\n euclideanDistance: number;\n}\n\n/**\n * Handler triggered during a drag operation.\n *\n * @template Element - The type of the draggable element (must extend HTMLElement).\n *\n * Behavior:\n * - The handler receives the draggable element and returns a function that is called on every move event.\n * - If the returned function resolves to `false`, the drag operation stops immediately.\n *\n * This allows for real-time handling of drag events and asynchronous conditions during dragging.\n *\n * @param draggableElement - The element being dragged.\n *\n * @returns A function that handles move events and returns a Promise that resolves to `true`\n * to continue dragging, or `false` to stop it.\n */\nexport type HoneyDragOnMoveHandler<Element extends HTMLElement> = (\n draggableElement: Element,\n) => (context: HoneyDragMoveContext) => Promise<boolean>;\n\n/**\n * Context provided to the end handler, containing information about the drag's end state.\n */\ninterface HoneyDragEndContext {\n /**\n * The total horizontal movement from the starting position to the ending position.\n */\n deltaX: number;\n /**\n * The total vertical movement from the starting position to the ending position.\n */\n deltaY: number;\n /**\n * The speed of movement in the horizontal direction (X axis).\n */\n movingSpeedX: number;\n /**\n * The speed of movement in the vertical direction (Y axis).\n */\n movingSpeedY: number;\n}\n\n/**\n * Handler triggered when a drag operation ends.\n *\n * @template Element - The type of the draggable element (must extend HTMLElement).\n *\n * @param context - The context containing details about the drag operation at its end.\n * Provides information such as the final position and drag result.\n * @param draggableElement - The element that was being dragged.\n * @param e - The event that ended the drag. Can be either a `MouseEvent` or a `TouchEvent`.\n *\n * @returns A Promise that resolves when the end handler completes its operations.\n */\nexport type HoneyDragOnEndHandler<Element extends HTMLElement> = (\n context: HoneyDragEndContext,\n draggableElement: Element,\n e: MouseEvent | TouchEvent,\n) => Promise<void>;\n\n/**\n * A set of handlers that define the behavior of the drag operation at different stages.\n * These handlers are customizable for managing drag initialization, movement, and completion.\n */\nexport interface HoneyDragHandlers<Element extends HTMLElement> {\n /**\n * Optional handler triggered when the drag operation starts.\n * This is useful for capturing the initial state or performing any setup actions before the drag starts.\n *\n * @param element - The element being dragged.\n *\n * @returns A boolean or Promise resolving to a boolean indicating if the drag should proceed.\n */\n onStartDrag?: HoneyDragOnStartHandler<Element>;\n /**\n * Required handler triggered continuously during the drag operation.\n * This handler is responsible for updating the drag state and typically tracks the element's movement.\n *\n * @param element - The element being dragged.\n *\n * @returns A boolean or Promise resolving to a boolean indicating whether the drag should continue.\n */\n onMoveDrag: HoneyDragOnMoveHandler<Element>;\n /**\n * Optional handler triggered when the drag operation ends.\n * This is commonly used for cleanup or finalizing the drag process.\n *\n * @param context - Contains information about the drag operation, such as distance and speed.\n * @param element - The element being dragged.\n *\n * @returns A Promise.\n */\n onEndDrag?: HoneyDragOnEndHandler<Element>;\n}\n\n/**\n * Configuration options for the drag functionality.\n * These options control the behavior of the drag hook and modify how the drag events are handled.\n */\nexport interface HoneyDragOptions<Element extends HTMLElement> extends HoneyDragHandlers<Element> {\n /**\n * Controls whether the `onEndDrag` handler is skipped when the drag operation is forcibly stopped.\n * This can be useful when dragging is interrupted or terminated early due to movement restrictions.\n *\n * @default false\n */\n skipOnEndDragWhenStopped?: boolean;\n /**\n * Determines if the drag functionality is enabled or disabled.\n *\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * A hook that provides touch and mouse-based dragging functionality for an element.\n * It enables the ability to drag an element on both mouse and touch interfaces,\n * with customizable handlers for different stages of the drag.\n *\n * @template Element - The type of the HTML element that is being dragged.\n *\n * @param draggableElementRef - A reference to the element that can be dragged.\n * @param options - Handlers for different stages of the drag operation and configuration options\n * for controlling drag behavior.\n *\n * @returns A cleanup function to remove event listeners when the component is unmounted.\n */\nexport const useHoneyDrag = <Element extends HTMLElement>(\n draggableElementRef: RefObject<Nullable<Element>>,\n {\n skipOnEndDragWhenStopped = false,\n enabled = true,\n onMoveDrag,\n onStartDrag,\n onEndDrag,\n }: HoneyDragOptions<Element>,\n) => {\n useEffect(() => {\n const draggableElement = draggableElementRef.current;\n\n if (!enabled || !draggableElement) {\n return;\n }\n\n const onMove = onMoveDrag(draggableElement);\n\n let isDragging = false;\n\n let startX = 0;\n let startY = 0;\n let lastX = 0;\n let lastY = 0;\n\n // Store the start time of the drag to calculate speed later.\n let startTime = 0;\n\n const startDrag = async (clientX: number, clientY: number, e: MouseEvent | TouchEvent) => {\n if (onStartDrag && !(await onStartDrag(draggableElement, e))) {\n // Exit when `onStartDrag` returns false, preventing the dragging\n return;\n }\n\n isDragging = true;\n\n startX = clientX;\n startY = clientY;\n lastX = clientX;\n lastY = clientY;\n\n startTime = Date.now();\n };\n\n const stopDrag = async (isTriggerOnEndDrag: boolean, e: MouseEvent | TouchEvent) => {\n if (!isDragging) {\n return;\n }\n\n isDragging = false;\n\n if (isTriggerOnEndDrag && onEndDrag) {\n // Calculate the elapsed time for speed calculations.\n const elapsedTime = Date.now() - startTime;\n\n const deltaX = lastX - startX;\n const deltaY = lastY - startY;\n\n const endContext: HoneyDragEndContext = {\n deltaX,\n deltaY,\n get movingSpeedX() {\n return calculateMovingSpeed(deltaX, elapsedTime);\n },\n get movingSpeedY() {\n return calculateMovingSpeed(deltaY, elapsedTime);\n },\n };\n\n await onEndDrag(endContext, draggableElement, e);\n }\n };\n\n const releaseDrag = async (isTriggerOnEndDrag: boolean, e: MouseEvent | TouchEvent) => {\n await stopDrag(isTriggerOnEndDrag, e);\n\n window.removeEventListener('mousemove', mouseMoveHandler);\n window.removeEventListener('mouseup', mouseUpHandler);\n\n window.removeEventListener('touchmove', touchMoveHandler);\n window.removeEventListener('touchend', touchEndHandler);\n window.removeEventListener('touchcancel', touchCancelHandler);\n };\n\n const mouseUpHandler = async (e: MouseEvent) => {\n await releaseDrag(true, e);\n };\n\n const moveHandler = async (clientX: number, clientY: number, e: MouseEvent | TouchEvent) => {\n if (!isDragging) {\n return;\n }\n\n const moveContext: HoneyDragMoveContext = {\n deltaX: clientX - lastX,\n deltaY: clientY - lastY,\n distanceX: clientX - startX,\n distanceY: clientY - startY,\n euclideanDistance: calculateEuclideanDistance(startX, startY, clientX, clientY),\n };\n\n if (!(await onMove(moveContext))) {\n lastX = clientX;\n lastY = clientY;\n\n await releaseDrag(!skipOnEndDragWhenStopped, e);\n return;\n }\n\n lastX = clientX;\n lastY = clientY;\n };\n\n const mouseMoveHandler = async (e: MouseEvent) => {\n await moveHandler(e.clientX, e.clientY, e);\n };\n\n const touchMoveHandler = async (e: TouchEvent) => {\n const touch = e.touches[0];\n\n await moveHandler(touch.clientX, touch.clientY, e);\n };\n\n const touchEndHandler = async (e: TouchEvent) => {\n await releaseDrag(true, e);\n };\n\n const touchCancelHandler = async (e: TouchEvent) => {\n await releaseDrag(true, e);\n };\n\n const touchStartHandler = async (e: TouchEvent) => {\n e.stopPropagation();\n\n const touch = e.touches[0];\n\n await startDrag(touch.clientX, touch.clientY, e);\n\n window.addEventListener('touchmove', touchMoveHandler, {\n passive: true,\n });\n window.addEventListener('touchend', touchEndHandler);\n window.addEventListener('touchcancel', touchCancelHandler);\n };\n\n const mouseDownHandler = async (e: MouseEvent) => {\n e.stopPropagation();\n\n await startDrag(e.clientX, e.clientY, e);\n\n window.addEventListener('mousemove', mouseMoveHandler);\n window.addEventListener('mouseup', mouseUpHandler);\n };\n\n draggableElement.addEventListener('mousedown', mouseDownHandler);\n draggableElement.addEventListener('touchstart', touchStartHandler, {\n passive: true,\n });\n\n return () => {\n draggableElement.removeEventListener('mousedown', mouseDownHandler);\n draggableElement.removeEventListener('touchstart', touchStartHandler);\n };\n }, [enabled, onStartDrag, onMoveDrag, onEndDrag]);\n};\n","import { useContext } from 'react';\nimport { assert } from '@react-hive/honey-utils';\n\nimport { HoneyLayoutContext } from '../contexts';\n\n/**\n * Custom hook to access the Honey layout context.\n *\n * @throws Will throw an error if the hook is used outside of a `HoneyLayoutProvider` component.\n *\n * @returns The context value providing theming utilities and screen state.\n */\nexport const useHoneyLayout = () => {\n const context = useContext(HoneyLayoutContext);\n assert(\n context,\n 'The `useHoneyLayout()` hook must be used inside <HoneyLayoutProvider/> component!',\n );\n\n return context;\n};\n","import { useEffect, useState } from 'react';\nimport throttle from 'lodash.throttle';\nimport type { HoneyTheme } from '@react-hive/honey-style';\n\nimport { resolveScreenState } from '../helpers';\nimport type { HoneyScreenState } from '../types';\n\nexport interface UseHoneyMediaQueryOptions {\n /**\n * Throttle interval (in milliseconds) for the resize event handler.\n * This limits how often the handler runs during continuous resize events.\n *\n * @default 0\n */\n resizeThrottle?: number;\n /**\n * Manually override screen state properties like isXs, isPortrait, etc.\n *\n * @remarks\n * These values are only set once on initialization and will not dynamically update the state.\n */\n overrideScreenState?: Partial<HoneyScreenState>;\n}\n\n/**\n * The hook that tracks the current screen state based on the theme's media breakpoints.\n * It updates the state on window resize and orientation change.\n *\n * @param theme - Theme object.\n * @param options - Optional configuration object.\n *\n * @returns The current screen state, indicating the orientation (portrait or landscape)\n * and the active breakpoint (xs, sm, md, lg, xl).\n */\nexport const useHoneyMediaQuery = (\n theme: HoneyTheme,\n { resizeThrottle = 0, overrideScreenState }: UseHoneyMediaQueryOptions = {},\n) => {\n const [screenState, setScreenState] = useState<HoneyScreenState>(() => ({\n ...resolveScreenState(theme.breakpoints),\n ...overrideScreenState,\n }));\n\n useEffect(() => {\n const handleResize = throttle(() => {\n setScreenState({\n ...resolveScreenState(theme.breakpoints),\n ...overrideScreenState,\n });\n }, resizeThrottle);\n\n handleResize();\n\n window.addEventListener('resize', handleResize);\n\n window.screen.orientation.addEventListener('change', handleResize);\n\n return () => {\n handleResize.cancel();\n\n window.removeEventListener('resize', handleResize);\n\n window.screen.orientation.removeEventListener('change', handleResize);\n };\n }, []);\n\n return screenState;\n};\n","import { useEffect, useRef } from 'react';\nimport type { EffectCallback } from 'react';\n\n/**\n * A hook that invokes a callback function whenever the provided `state` value changes.\n *\n * This hook stores the previous value internally and performs a shallow comparison with the current value.\n * If a change is detected, it executes the `onChange` callback. If the callback returns a cleanup function,\n * it will be invoked before the next change or when the component unmounts, similar to standard `useEffect` behavior.\n *\n * @template T - The type of the state being observed.\n *\n * @param state - The value to monitor for changes. Can be of any type.\n * @param onChange - A function called whenever `state` changes. It may return a cleanup function.\n *\n * @returns void\n *\n * @example\n * ```ts\n * useHoneyOnChange(someValue, (newValue) => {\n * console.log('Value changed to:', newValue);\n *\n * return () => {\n * console.log('Cleanup for value:', newValue);\n * };\n * });\n * ```\n */\nexport const useHoneyOnChange = <T>(\n state: T,\n onChange: (newState: T) => ReturnType<EffectCallback>,\n) => {\n const prevStateRef = useRef(state);\n\n useEffect(() => {\n if (prevStateRef.current !== state) {\n prevStateRef.current = state;\n\n return onChange(state);\n }\n }, [state]);\n};\n","import { useEffect } from 'react';\n\nimport { useHoneyLayout } from './use-honey-layout';\nimport type { HoneyOverlayId, HoneyOverlayEventListenerHandler } from '../types';\n\ninterface UseHoneyOverlayOptions {\n onKeyUp?: HoneyOverlayEventListenerHandler;\n}\n\n/**\n * Hook for interacting with an active overlay managed by `HoneyLayoutProvider`.\n *\n * @param targetOverlayId - The unique ID of the overlay you want to interact with.\n * @param options - Optional configuration such as event handlers (e.g., `onKeyUp`).\n *\n * @returns The overlay instance matching the provided ID, or `undefined` if not found.\n *\n * @remarks\n * - This hook only works with overlays that are currently active.\n * - If the overlay is not active or not registered, `undefined` will be returned.\n * - Event handlers like `onKeyUp` are automatically registered and cleaned up for the overlay.\n *\n * @example\n * ```tsx\n * const overlay = useHoneyOverlay('my-overlay-id', {\n * onKeyUp: (keyCode, e) => {\n * if (keyCode === 'Escape') {\n * console.log('Escape key pressed!');\n * }\n * },\n * });\n * ```\n */\nexport const useHoneyOverlay = (\n targetOverlayId: HoneyOverlayId,\n { onKeyUp }: UseHoneyOverlayOptions = {},\n) => {\n const { overlays } = useHoneyLayout();\n\n const overlay = overlays.find(overlay => overlay.id === targetOverlayId);\n\n useEffect(() => {\n // If no overlay is found or no `onKeyUp` handler is provided, skip setting up the listener\n if (!overlay || !onKeyUp) {\n return;\n }\n\n overlay.addListener('keyup', onKeyUp);\n\n return () => {\n overlay.removeListener('keyup', onKeyUp);\n };\n }, [overlay, onKeyUp]);\n\n return overlay;\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { Nullable } from '~/types';\n\ninterface HoneyRafCallbackContext {\n /**\n * Stops the currently running RAF loop.\n *\n * Calling this function immediately:\n * - Cancels the next animation frame\n * - Resets internal timing state\n * - Sets `isRafLoopRunning` to `false`\n *\n * This function is safe to call from within the RAF callback\n * and is the preferred way to terminate the loop based on\n * frame-driven conditions (e.g. inertia decay, animation completion).\n */\n stop: () => void;\n}\n\n/**\n * RAF callback invoked on every animation frame.\n *\n * The callback is invoked with the elapsed time since the previous\n * frame and a control context for managing the RAF loop lifecycle.\n *\n * ⚠️ Callback stability\n * The callback should be wrapped in `useCallback` to ensure\n * referential stability and to make dependencies explicit.\n *\n * @param dtMs - Delta time in milliseconds since the previous frame.\n * The value is clamped to `maxDeltaMs` to avoid large jumps\n * when the tab is inactive, backgrounded, or the browser\n * throttles animation frames.\n *\n * @param context - RAF loop control helpers.\n */\nexport type HoneyRafCallback = (dtMs: number, context: HoneyRafCallbackContext) => void;\n\n/**\n * Configuration options for {@link useHoneyRafLoop}.\n */\ninterface UseHoneyRafLoopOptions {\n /**\n * Automatically start the RAF loop on mount.\n *\n * This is useful for continuous loops (e.g. visualizers),\n * but should generally be disabled for gesture- or intent-driven animations.\n *\n * @default false\n */\n autoStart?: boolean;\n /**\n * Whether the RAF loop should automatically resume when the\n * document becomes visible again after being hidden.\n *\n * ⚠️ Important:\n * - Visibility changes will ALWAYS stop the RAF loop\n * - Resuming is **opt-in** and never happens implicitly\n *\n * This option should only be enabled for truly continuous\n * systems (e.g. game loops, live visualizations).\n *\n * It is intentionally disabled by default to avoid restarting\n * gesture-driven or state-sensitive animations with stale data.\n *\n * Requires `autoStart` to be enabled.\n *\n * @default false\n */\n resumeOnVisibility?: boolean;\n /**\n * Maximum allowed delta time between frames.\n *\n * This prevents physics, inertia, or animation logic from receiving large\n * time steps after backgrounding, tab switches, or frame drops.\n *\n * @default 32\n */\n maxDeltaMs?: number;\n /**\n * Optional error handler invoked when the RAF callback throws.\n *\n * When an error occurs:\n * - The RAF loop is immediately stopped\n * - `isRafLoopRunning` is set to `false`\n * - The error is passed to this handler\n *\n * @default undefined\n */\n onError?: (error: unknown) => void;\n}\n\n/**\n * A hook for running a controlled `requestAnimationFrame` loop.\n *\n * Features:\n * - Explicit RAF lifecycle control (`start` / `stop`)\n * - Delta time (`dt`) calculation with frame clamping\n * - Automatic cleanup on unmounting\n * - Conservative handling of tab visibility changes (mobile-safe)\n * - Safe error handling (stops loop on exception)\n *\n * Visibility behavior:\n * - The RAF loop is always stopped when the document becomes hidden\n * - Automatic resume is disabled by default and must be explicitly enabled\n *\n * This hook is designed for gesture handling, inertia, physics simulations,\n * and animation loops that must not trigger React re-renders on every frame.\n *\n * @param callback - Function invoked on each animation frame.\n * @param options - Optional configuration for the RAF loop.\n *\n * @returns Control helpers and RAF loop state.\n *\n * @example\n * ```ts\n * // Gesture-driven inertia (recommended usage)\n * // The RAF loop stops itself when motion decays.\n *\n * const velocityRef = useRef({ x: 12, y: 4 });\n *\n * const onFrame = useCallback<HoneyRafCallback>(\n * (dtMs, { stop }) => {\n * velocityRef.current.x *= 0.94;\n * velocityRef.current.y *= 0.94;\n *\n * setPosition(p => ({\n * x: p.x + velocityRef.current.x,\n * y: p.y + velocityRef.current.y,\n * }));\n *\n * if (\n * Math.abs(velocityRef.current.x) < 0.1 &&\n * Math.abs(velocityRef.current.y) < 0.1\n * ) {\n * stop(); // terminate RAF loop\n * }\n * },\n * [],\n * );\n *\n * useHoneyRafLoop(onFrame);\n * ```\n */\nexport const useHoneyRafLoop = (\n callback: HoneyRafCallback,\n {\n autoStart = false,\n resumeOnVisibility = false,\n maxDeltaMs = 32, // ~30fps clamp\n onError,\n }: UseHoneyRafLoopOptions = {},\n) => {\n const rafIdRef = useRef<Nullable<number>>(null);\n const lastTimeRef = useRef<Nullable<number>>(null);\n\n const callbackRef = useRef(callback);\n // Always keep the latest callback without restarting RAF\n callbackRef.current = callback;\n\n const [isRafLoopRunning, setIsRafLoopRunning] = useState(false);\n\n const loop = useCallback<FrameRequestCallback>(\n time => {\n if (lastTimeRef.current === null) {\n lastTimeRef.current = time;\n }\n\n let dt = time - lastTimeRef.current;\n lastTimeRef.current = time;\n\n // Clamp delta (prevents jumps after background tab / lag)\n if (dt > maxDeltaMs) {\n dt = maxDeltaMs;\n }\n\n try {\n callbackRef.current(dt, {\n stop: stopRafLoop,\n });\n\n rafIdRef.current = requestAnimationFrame(loop);\n } catch (e) {\n stopRafLoop();\n\n onError?.(e);\n }\n },\n [maxDeltaMs, onError],\n );\n\n const startRafLoop = useCallback(() => {\n if (rafIdRef.current !== null) {\n return;\n }\n\n lastTimeRef.current = null;\n\n setIsRafLoopRunning(true);\n\n rafIdRef.current = requestAnimationFrame(loop);\n }, [loop]);\n\n const stopRafLoop = useCallback(() => {\n if (rafIdRef.current === null) {\n return;\n }\n\n cancelAnimationFrame(rafIdRef.current);\n\n rafIdRef.current = null;\n lastTimeRef.current = null;\n\n setIsRafLoopRunning(false);\n }, []);\n\n useEffect(() => {\n if (autoStart) {\n startRafLoop();\n }\n\n return stopRafLoop;\n }, [autoStart, startRafLoop, stopRafLoop]);\n\n // Pause when a tab is hidden (important for mobile)\n useEffect(() => {\n const onVisibilityChange = () => {\n if (document.hidden) {\n stopRafLoop();\n } else if (resumeOnVisibility && autoStart) {\n startRafLoop();\n }\n };\n\n document.addEventListener('visibilitychange', onVisibilityChange);\n\n return () => {\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n }, [autoStart, resumeOnVisibility, startRafLoop, stopRafLoop]);\n\n return {\n startRafLoop,\n stopRafLoop,\n isRafLoopRunning,\n };\n};\n","import { useEffect } from 'react';\nimport { isFunction } from '@react-hive/honey-utils';\nimport throttle from 'lodash.throttle';\n\nexport type UseHoneyResizeHandler = () => void;\n\ninterface UseHoneyResizeOptions {\n /**\n * Whether to invoke the resize handler immediately on mount.\n *\n * Useful when initial layout measurements should be performed\n * before any resize events occur.\n *\n * @default false\n */\n invokeOnMount?: boolean;\n /**\n * Throttle delay (in milliseconds) applied to the resize handler.\n *\n * When greater than `0`, the handler will be throttled using\n * `lodash.throttle` to reduce invocation frequency.\n *\n * @default 0\n */\n throttleTime?: number;\n /**\n * Enables or disables the resize listener.\n *\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * A hook that subscribes to the window `resize` event and invokes a handler function in response.\n *\n * The handler can be optionally throttled to limit execution frequency, which is useful\n * for expensive layout calculations or DOM measurements.\n *\n * @example\n * ```ts\n * useHoneyResize(() => {\n * console.log('Window resized');\n * }, { throttleTime: 200 });\n * ```\n *\n * @param handler - Callback invoked when the window is resized.\n * @param options - Configuration options controlling invocation timing and performance.\n */\n\nexport const useHoneyResize = (\n handler: UseHoneyResizeHandler,\n { invokeOnMount = false, throttleTime = 0, enabled = true }: UseHoneyResizeOptions = {},\n) => {\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const handleResize: UseHoneyResizeHandler | ReturnType<typeof throttle> = throttleTime\n ? throttle(handler, throttleTime)\n : handler;\n\n window.addEventListener('resize', handleResize);\n\n if (invokeOnMount) {\n handler();\n }\n\n return () => {\n if ('cancel' in handleResize && isFunction(handleResize.cancel)) {\n handleResize.cancel();\n }\n\n window.removeEventListener('resize', handleResize);\n };\n }, [enabled, invokeOnMount, handler]);\n};\n","import type { UseHoneySyntheticScrollOptions } from './use-honey-synthetic-scroll';\nimport { useHoneySyntheticScroll } from './use-honey-synthetic-scroll';\n\n/**\n * Enables synthetic horizontal (X-axis) scrolling for a container element\n * using pointer-based drag interactions.\n *\n * This is a convenience wrapper around {@link useHoneySyntheticScroll} with\n * the axis fixed to `'x'`.\n *\n * All behavior, boundaries, and lifecycle guarantees are identical to the\n * base hook, but limited to horizontal movement only.\n *\n * @template Element - The HTML element type of the scrollable container.\n *\n * @param options - Configuration options forwarded to\n * {@link useHoneySyntheticScroll}, excluding the `axis` option.\n *\n * @returns A ref that must be attached to the scrollable container element.\n */\nexport const useHoneySyntheticScrollX = <Element extends HTMLElement>(\n options?: Omit<UseHoneySyntheticScrollOptions<Element>, 'axis'>,\n) =>\n useHoneySyntheticScroll<Element>({\n ...options,\n axis: 'x',\n });\n","import type { UseHoneySyntheticScrollOptions } from './use-honey-synthetic-scroll';\nimport { useHoneySyntheticScroll } from './use-honey-synthetic-scroll';\n\n/**\n * Enables synthetic vertical (Y-axis) scrolling for a container element\n * using pointer-based drag interactions.\n *\n * This is a convenience wrapper around {@link useHoneySyntheticScroll} with\n * the axis fixed to `'y'`.\n *\n * All behavior, boundaries, and lifecycle guarantees are identical to the\n * base hook, but limited to vertical movement only.\n *\n * @template Element - The HTML element type of the scrollable container.\n *\n * @param options - Configuration options forwarded to\n * {@link useHoneySyntheticScroll}, excluding the `axis` option.\n *\n * @returns A ref that must be attached to the scrollable container element.\n */\nexport const useHoneySyntheticScrollY = <Element extends HTMLElement>(\n options?: Omit<UseHoneySyntheticScrollOptions<Element>, 'axis'>,\n) =>\n useHoneySyntheticScroll<Element>({\n ...options,\n axis: 'y',\n });\n","import { useCallback, useEffect, useRef } from 'react';\nimport type { RefObject } from 'react';\n\nimport { Axis } from '@react-hive/honey-utils';\nimport {\n resolveBoundedDelta,\n getXOverflowWidth,\n getYOverflowHeight,\n parse2DMatrix,\n resolveAxisDelta,\n} from '@react-hive/honey-utils';\n\nimport type { Nullable } from '~/types';\nimport type {\n HoneyDragHandlers,\n HoneyDragOnEndHandler,\n HoneyDragOnMoveHandler,\n HoneyDragOnStartHandler,\n} from './use-honey-drag';\nimport type { UseHoneyResizeHandler } from './use-honey-resize';\nimport { useHoneyDrag } from './use-honey-drag';\nimport { useHoneyResize } from './use-honey-resize';\n\ninterface ResolveAxisTranslateOptions {\n /**\n * Drag delta for the axis (deltaX or deltaY).\n */\n delta: number;\n /**\n * Current translate value for the axis.\n */\n translate: number;\n /**\n * Visible container size for the axis (width or height).\n */\n containerSize: number;\n /**\n * Overflow size for the axis.\n */\n overflowSize: number;\n /**\n * Overscroll window percentage.\n */\n overscrollPct: number;\n}\n\nexport const resolveAxisTranslate = ({\n delta,\n translate,\n containerSize,\n overflowSize,\n overscrollPct,\n}: ResolveAxisTranslateOptions): Nullable<number> => {\n if (overflowSize <= 0) {\n return null;\n }\n\n const threshold = containerSize * (overscrollPct / 100);\n\n return resolveBoundedDelta({\n delta,\n value: translate,\n min: -(overflowSize + threshold),\n max: threshold,\n });\n};\n\ninterface ApplyScrollDeltaOptions {\n axis: Axis;\n container: HTMLElement;\n deltaX: number;\n deltaY: number;\n overscrollPct: number;\n}\n\nconst applyScrollDelta = ({\n axis,\n container,\n deltaX,\n deltaY,\n overscrollPct,\n}: ApplyScrollDeltaOptions): boolean => {\n const { translateX, translateY } = parse2DMatrix(container);\n\n let nextX = translateX;\n let nextY = translateY;\n let shouldScroll = false;\n\n if (axis === 'x' || axis === 'both') {\n const next = resolveAxisTranslate({\n delta: deltaX,\n translate: translateX,\n containerSize: container.clientWidth,\n overflowSize: getXOverflowWidth(container),\n overscrollPct,\n });\n\n if (next !== null) {\n nextX = next;\n shouldScroll = true;\n }\n }\n\n if (axis === 'y' || axis === 'both') {\n const next = resolveAxisTranslate({\n delta: deltaY,\n translate: translateY,\n containerSize: container.clientHeight,\n overflowSize: getYOverflowHeight(container),\n overscrollPct,\n });\n\n if (next !== null) {\n nextY = next;\n shouldScroll = true;\n }\n }\n\n if (shouldScroll) {\n container.style.transform = `translate(${nextX}px, ${nextY}px)`;\n }\n\n return shouldScroll;\n};\n\nexport interface UseHoneySyntheticScrollOptions<Element extends HTMLElement> extends Pick<\n HoneyDragHandlers<Element>,\n 'onStartDrag' | 'onEndDrag'\n> {\n /**\n * Axis along which synthetic scrolling is enabled.\n *\n * - `'x'` — horizontal only\n * - `'y'` — vertical only\n * - `'both'` — horizontal and vertical\n *\n * @default 'both'\n */\n axis?: Axis;\n /**\n * Percentage of the container size used as an overscroll buffer\n * on each enabled axis.\n *\n * This allows limited dragging beyond the natural content bounds\n * before movement is clamped.\n *\n * A value of `0` disables overscroll entirely.\n *\n * @default 0\n */\n overscrollPct?: number;\n /**\n * Whether to clear any applied translation transforms when the window resizes.\n *\n * Useful to keep the layout state consistent after dimension changes.\n *\n * @default true\n */\n resetOnResize?: boolean;\n /**\n * Enables synthetic scrolling driven by pointer-based scroll input,\n * such as mouse wheels and trackpads.\n *\n * When enabled, scroll input is intercepted and converted into bounded\n * translation using the same logic as drag gestures.\n *\n * When disabled, native scrolling behavior is preserved and no scroll\n * input is handled by this hook.\n *\n * @default true\n */\n enablePointerScroll?: boolean;\n}\n\n/**\n * Enables synthetic scrolling for a container using pointer-based drag gestures.\n *\n * Instead of relying on native scrollbars, this hook translates the container\n * using CSS transforms in response to drag input.\n *\n * ### Key characteristics\n * - Dragging is only applied when content overflows the container on a given axis.\n * - Movement is clamped within calculated bounds, with optional overscroll allowance.\n * - Scroll position is stored purely in `transform: translate(...)`.\n * - Active transforms can be automatically cleared on window resize.\n *\n * ### Internals\n * - Uses {@link useHoneyDrag} to track mouse / touch movement.\n * - Uses {@link useHoneyResize} to optionally reset scroll state on resize.\n *\n * @template Element - The HTML element type of the scrollable container.\n *\n * @param options - Configuration controlling axes, boundaries, and lifecycle behavior.\n *\n * @returns A ref that must be attached to the scrollable container element.\n */\nexport const useHoneySyntheticScroll = <Element extends HTMLElement>({\n axis = 'both',\n overscrollPct = 0,\n onStartDrag,\n onEndDrag,\n resetOnResize = true,\n enablePointerScroll = true,\n}: UseHoneySyntheticScrollOptions<Element> = {}): RefObject<Nullable<Element>> => {\n const containerRef = useRef<Nullable<Element>>(null);\n\n const handleOnStartDrag = useCallback<HoneyDragOnStartHandler<Element>>(\n async (...args) => {\n return onStartDrag?.(...args) ?? true;\n },\n [onStartDrag],\n );\n\n /**\n * Handles drag movement and applies clamped translation along the enabled axis or axes.\n *\n * For each axis:\n * - Skip processing if there is no overflow.\n * - Compute the candidate translate value from the drag delta.\n * - Clamp movement within calculated min / max bounds.\n */\n const handleOnMoveDrag = useCallback<HoneyDragOnMoveHandler<Element>>(\n container =>\n async ({ deltaX, deltaY }) => {\n return applyScrollDelta({\n container,\n deltaX,\n deltaY,\n axis,\n overscrollPct,\n });\n },\n [axis, overscrollPct],\n );\n\n const handleOnEndDrag = useCallback<HoneyDragOnEndHandler<Element>>(\n async (...args) => {\n onEndDrag?.(...args);\n },\n [axis, overscrollPct, onEndDrag],\n );\n\n useHoneyDrag(containerRef, {\n onStartDrag: handleOnStartDrag,\n onMoveDrag: handleOnMoveDrag,\n onEndDrag: handleOnEndDrag,\n });\n\n const resizeHandler = useCallback<UseHoneyResizeHandler>(() => {\n const container = containerRef.current;\n if (container) {\n container.style.removeProperty('transform');\n }\n }, []);\n\n useHoneyResize(resizeHandler, {\n enabled: resetOnResize,\n });\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n container.style.overscrollBehavior = 'contain';\n container.style.touchAction = 'none';\n\n const handleOnWheel = (event: WheelEvent) => {\n const { deltaX, deltaY } = resolveAxisDelta(\n {\n deltaX: event.deltaX,\n deltaY: event.deltaY,\n },\n axis,\n );\n\n const didScroll = applyScrollDelta({\n container,\n deltaX,\n deltaY,\n axis,\n overscrollPct,\n });\n\n if (didScroll) {\n event.preventDefault();\n }\n };\n\n if (enablePointerScroll) {\n container.addEventListener('wheel', handleOnWheel, { passive: false });\n }\n\n return () => {\n container.style.removeProperty('overscroll-behavior');\n container.style.removeProperty('touch-action');\n\n if (enablePointerScroll) {\n container.removeEventListener('wheel', handleOnWheel);\n }\n };\n }, [enablePointerScroll]);\n\n return containerRef;\n};\n","import { useEffect, useRef } from 'react';\n\nimport { useHoneyLayout } from './use-honey-layout';\nimport type { HoneyActiveOverlay, HoneyOverlayConfig, Nullable } from '../types';\n\n/**\n * A hook for registering and managing an overlay in the layout system.\n *\n * @param isRegister - A flag indicating whether the overlay should be registered.\n * @param overlayConfig - Configuration object specifying overlay behavior.\n *\n * @returns The registered overlay instance, or null if not registered.\n */\nexport const useRegisterHoneyOverlay = (\n isRegister: boolean,\n overlayConfig: HoneyOverlayConfig,\n): Nullable<HoneyActiveOverlay> => {\n const { registerOverlay, unregisterOverlay } = useHoneyLayout();\n\n const overlayRef = useRef<Nullable<HoneyActiveOverlay>>(null);\n\n useEffect(() => {\n if (!isRegister) {\n return;\n }\n\n const overlay = registerOverlay(overlayConfig);\n overlayRef.current = overlay;\n\n return () => {\n overlayRef.current = null;\n\n unregisterOverlay(overlay.id);\n };\n }, [isRegister, overlayConfig.onKeyUp]);\n\n return overlayRef.current;\n};\n","import React, { useMemo } from 'react';\nimport { HoneyStyleProvider } from '@react-hive/honey-style';\nimport type { PropsWithChildren } from 'react';\nimport type { HoneyStyleProviderProps } from '@react-hive/honey-style';\n\nimport { useHoneyMediaQuery } from '../hooks';\nimport { HoneyLayoutContext } from '../contexts';\nimport { useHoneyOverlays } from './hooks';\nimport type { HoneyLayoutContextValue } from '../contexts';\nimport type { UseHoneyMediaQueryOptions } from '../hooks';\n\ninterface HoneyLayoutProviderProps extends HoneyStyleProviderProps {\n mediaQueryOptions?: UseHoneyMediaQueryOptions;\n}\n\nexport const HoneyLayoutProvider = ({\n children,\n theme,\n mediaQueryOptions,\n ...props\n}: PropsWithChildren<HoneyLayoutProviderProps>) => {\n const screenState = useHoneyMediaQuery(theme, mediaQueryOptions);\n\n const { overlays, registerOverlay, unregisterOverlay } = useHoneyOverlays();\n\n const contextValue = useMemo<HoneyLayoutContextValue>(\n () => ({\n theme,\n screenState,\n overlays,\n registerOverlay,\n unregisterOverlay,\n }),\n [theme, screenState, overlays],\n );\n\n return (\n <HoneyStyleProvider theme={theme} {...props}>\n <HoneyLayoutContext value={contextValue}>{children}</HoneyLayoutContext>\n </HoneyStyleProvider>\n );\n};\n","import React, { useContext, useMemo } from 'react';\nimport merge from 'lodash.merge';\nimport { HoneyStyleProvider } from '@react-hive/honey-style';\nimport type { PropsWithChildren } from 'react';\nimport type { HoneyTheme } from '@react-hive/honey-style';\n\nimport { HoneyLayoutContext } from '../contexts';\n\ninterface HoneyLayoutThemeOverrideProps {\n theme: HoneyTheme;\n}\n\n/**\n * Provides a theme override context to its children.\n * Merges the provided theme with the existing theme from the `ThemeContext`.\n *\n * @param props - The props for `HoneyLayoutThemeOverride`.\n *\n * @returns The ThemeProvider with the merged theme applied to its children.\n */\nexport const HoneyLayoutThemeOverride = ({\n theme,\n ...props\n}: PropsWithChildren<HoneyLayoutThemeOverrideProps>) => {\n const honeyLayout = useContext(HoneyLayoutContext);\n\n const overriddenTheme = useMemo(\n () => merge(honeyLayout?.theme, theme),\n [honeyLayout?.theme, theme],\n );\n\n return <HoneyStyleProvider theme={overriddenTheme} {...props} />;\n};\n","export * from './use-honey-overlays';\n","import type { RefObject } from 'react';\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport type {\n HoneyKeyboardEventCode,\n HoneyActiveOverlay,\n HoneyOverlayEventListener,\n Nullable,\n} from '../../types';\nimport type { HoneyRegisterOverlay, HoneyUnregisterOverlay } from '../../contexts';\nimport { generateUniqueId } from '../../helpers';\n\n/**\n * Hook to manage a stack of overlays, allowing registration and unregistration of overlays,\n * as well as handling keyboard events for the topmost overlay.\n */\nexport const useHoneyOverlays = () => {\n const overlaysRef = useRef<HoneyActiveOverlay[]>([]);\n\n useEffect(() => {\n const handleKeyUp = (e: KeyboardEvent) => {\n const overlays = overlaysRef.current;\n if (!overlays.length) {\n // No overlays to handle key events\n return;\n }\n\n const topLevelOverlay = overlays[overlays.length - 1];\n\n topLevelOverlay.notifyListeners('keyup', e.code as HoneyKeyboardEventCode, e);\n };\n\n document.addEventListener('keyup', handleKeyUp);\n\n return () => {\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n\n /**\n * Registers a new overlay and adds it to the stack.\n *\n * @param overlayConfig - The configuration for the overlay, including optional ID and event handlers.\n *\n * @returns The registered overlay object.\n */\n const registerOverlay = useCallback<HoneyRegisterOverlay>(overlayConfig => {\n const overlayId = overlayConfig.id ?? generateUniqueId();\n\n const listeners: HoneyOverlayEventListener[] = [['keyup', overlayConfig.onKeyUp]];\n const containerRef: RefObject<Nullable<HTMLDivElement>> = {\n current: null,\n };\n\n const overlay: HoneyActiveOverlay = {\n containerRef,\n id: overlayId,\n setContainerRef: element => {\n containerRef.current = element;\n },\n addListener: (type, handler) => {\n listeners.push([type, handler]);\n },\n removeListener: (targetType, targetHandler) => {\n const targetListenerIndex = listeners.findIndex(\n ([type, listenerHandler]) => type === targetType && listenerHandler === targetHandler,\n );\n\n if (targetListenerIndex !== -1) {\n listeners.splice(targetListenerIndex, 1);\n }\n },\n notifyListeners: (targetEventType, keyCode, e) => {\n const listenKeys = overlayConfig.listenKeys ?? [];\n\n if (!listenKeys.length || listenKeys.includes(keyCode)) {\n e.preventDefault();\n\n listeners.forEach(([eventType, listener]) => {\n if (eventType === targetEventType) {\n listener(keyCode, overlay, e);\n }\n });\n }\n },\n };\n\n overlaysRef.current.push(overlay);\n\n return overlay;\n }, []);\n\n /**\n * Unregisters an overlay by its ID and removes it from the stack.\n *\n * @param targetOverlayId - The ID of the overlay to be removed.\n */\n const unregisterOverlay = useCallback<HoneyUnregisterOverlay>(targetOverlayId => {\n overlaysRef.current = overlaysRef.current.filter(overlay => overlay.id !== targetOverlayId);\n }, []);\n\n return {\n overlays: overlaysRef.current,\n registerOverlay,\n unregisterOverlay,\n };\n};\n","export * from './HoneyLayoutProvider';\nexport * from './HoneyLayoutThemeOverride';\n","/**\n * The types for handling CSS properties and values, focusing on dimensions, colors, media queries, and other essential CSS concepts.\n */\nimport * as CSS from 'csstype';\nimport type {\n HoneyBreakpointName,\n HoneyStyledContext,\n HoneyColor,\n HoneyCSSSpacingValue,\n HoneyCSSColorProperty,\n HoneyCSSSpacingProperty,\n HoneyCSSShorthandSpacingProperty,\n HoneyRawCSSSpacingValue,\n} from '@react-hive/honey-style';\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function/steps#step-position\n */\ntype HoneyCSSStepFunctionPosition =\n | 'jump-start'\n | 'jump-end'\n | 'jump-none'\n | 'jump-both'\n | 'start'\n | 'end';\n\n/**\n * Defining the allowed timing functions for the transition\n */\nexport type HoneyCSSTimingFunction =\n // https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function\n | 'ease'\n // https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function/linear\n | 'linear'\n | `linear(${string})`\n // https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function/cubic-bezier\n | `cubic-bezier(${number}, ${number}, ${number}, ${number})`\n | 'ease-in'\n | 'ease-out'\n | 'ease-in-out'\n | 'step-start'\n | 'step-end'\n // https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function/steps\n | `steps(${number})`\n | `steps(${number}, ${HoneyCSSStepFunctionPosition})`;\n\n/**\n * A type representing a function that returns a value for a specific CSS property based on the provided theme.\n *\n * @template CSSProperty - The CSS property this function will generate a value for.\n */\ntype HoneyCSSPropertyValueFn<CSSProperty extends keyof CSS.Properties> = (\n context: HoneyStyledContext<object>,\n) => CSS.Properties[CSSProperty];\n\n/**\n * Represents a non-responsive (raw) CSS property value for a specific CSS property.\n *\n * This type adapts based on the nature of the property:\n *\n * - For color-related properties, it accepts theme tokens or raw color values.\n * - For shorthand spacing properties (`margin`, `padding`), it supports multi-value arrays.\n * - For other spacing-related properties, it allows numeric or token-based values.\n * - For all other properties, it falls back to the standard CSS value type.\n *\n * @template CSSProperty - The name of the CSS property.\n */\ntype HoneyRawCSSPropertyValue<CSSProperty extends keyof CSS.Properties> =\n CSSProperty extends HoneyCSSColorProperty\n ? HoneyColor\n : CSSProperty extends HoneyCSSShorthandSpacingProperty\n ? HoneyCSSSpacingValue\n : CSSProperty extends HoneyCSSSpacingProperty\n ? HoneyRawCSSSpacingValue\n : CSS.Properties[CSSProperty];\n\n/**\n * Represents a responsive CSS property value for a specific CSS property.\n *\n * This type maps each breakpoint name to a corresponding CSS property value.\n * The values can include:\n * - A standard CSS property value.\n * - A numeric value for dimension properties.\n * - A function returning a value based on the CSS property.\n *\n * @template CSSProperty - The key of a CSS property for which values are defined.\n */\ntype HoneyResponsiveCSSPropertyValue<CSSProperty extends keyof CSS.Properties> = {\n [K in HoneyBreakpointName]?:\n | HoneyRawCSSPropertyValue<CSSProperty>\n | HoneyCSSPropertyValueFn<CSSProperty>;\n};\n\n/**\n * Represents a CSS property value that can be either a single value or a responsive value.\n *\n * This type can be one of the following:\n * - A standard CSS property value.\n * - A numeric value for dimension properties.\n * - A function that generates the value based on the CSS property.\n * - A responsive value where each breakpoint maps to a specific CSS property value.\n *\n * @template CSSProperty - The key of a CSS property to check.\n */\nexport type HoneyCSSPropertyValue<CSSProperty extends keyof CSS.Properties> =\n | HoneyRawCSSPropertyValue<CSSProperty>\n | HoneyCSSPropertyValueFn<CSSProperty>\n | HoneyResponsiveCSSPropertyValue<CSSProperty>;\n\n/**\n * A utility type to add a `$` prefix to a given CSS property name.\n *\n * @template CSSProperty - The string type representing a CSS property name.\n */\nexport type Honey$PrefixedCSSProperty<\n CSSProperty extends keyof CSS.Properties = keyof CSS.Properties,\n> = `$${CSSProperty}`;\n\n/**\n * Represents an object where each key is a prefixed CSS property (with a `$` prefix).\n *\n * Example:\n * ```\n * const styles: HoneyPrefixedCSSProperties = {\n * $color: 'red',\n * $fontSize: '12px'\n * };\n * ```\n */\nexport type Honey$PrefixedCSSProperties = {\n [CSSProperty in keyof CSS.Properties as Honey$PrefixedCSSProperty<CSSProperty>]?: HoneyCSSPropertyValue<CSSProperty>;\n};\n","/**\n * Store types that represent data structures, transformations, and models used across different components and modules.\n */\nimport type { RefObject } from 'react';\nimport type { HoneyStyledFunction } from '@react-hive/honey-style';\n\nimport type { KeysWithNonArrayValues, Nullable } from './utility.types';\nimport type { HoneyKeyboardEventCode } from './dom.types';\n\nexport type HoneyEffectResultFn<Props extends object> = HoneyStyledFunction<Props>;\n\nexport type HoneyEffect<Config = unknown, Props extends object = object> = (\n config: Config,\n) => HoneyEffectResultFn<Props>;\n\nexport type HoneyOverlayId = string;\n\nexport type HoneyOverlayEventType = 'keyup';\n\n/**\n * Handler function for an overlay event listener.\n *\n * @param keyCode - The code of the key that triggered the event.\n * @param overlay - The overlay.\n * @param e - The original keyboard event.\n */\nexport type HoneyOverlayEventListenerHandler = (\n keyCode: HoneyKeyboardEventCode,\n overlay: HoneyActiveOverlay,\n e: KeyboardEvent,\n) => void;\n\n/**\n * A tuple representing an event listener, including the event type and the handler function.\n */\nexport type HoneyOverlayEventListener = [HoneyOverlayEventType, HoneyOverlayEventListenerHandler];\n\n/**\n * Configuration object for an overlay, used to specify the overlay's behavior and event handling.\n */\nexport interface HoneyOverlayConfig {\n /**\n * Custom overlay ID.\n * Automatically generated if not passed.\n *\n * @default It generates automatically\n */\n id?: HoneyOverlayId;\n /**\n * List of keyboard event codes to listen for (e.g., \"Escape\", \"Enter\").\n * If undefined or empty, all key codes will be listened to.\n *\n * @default undefined\n */\n listenKeys?: HoneyKeyboardEventCode[];\n /**\n * Callback function to be invoked when a key event occurs for the specified key(s).\n * If `listenKeys` is provided, this will only be triggered for those keys.\n */\n onKeyUp: HoneyOverlayEventListenerHandler;\n}\n\n/**\n * Represents an overlay in the layout, allowing the registration of event listeners and notifying them when events occur.\n */\nexport interface HoneyActiveOverlay {\n /**\n * Unique identifier for the overlay.\n */\n id: HoneyOverlayId;\n /**\n * Reference to the container element of the overlay.\n */\n containerRef: RefObject<Nullable<HTMLDivElement>>;\n /**\n * Sets the container reference for the overlay.\n *\n * @param element - The HTMLDivElement to set as the container.\n */\n setContainerRef: (element: HTMLDivElement) => void;\n /**\n * Adds an event listener to the overlay.\n *\n * @param type - The type of event to listen for.\n * @param handler - The handler function to execute when the event is triggered.\n */\n addListener: (type: HoneyOverlayEventType, handler: HoneyOverlayEventListenerHandler) => void;\n /**\n * Removes a specific event listener from the overlay.\n *\n * @param type - The type of event for the listener.\n * @param handler - The handler function to remove.\n */\n removeListener: (type: HoneyOverlayEventType, handler: HoneyOverlayEventListenerHandler) => void;\n /**\n * Notifies all listeners of a specific event type.\n *\n * @param targetEventType - The type of event that occurred.\n * @param keyCode - The code of the key that triggered the event.\n * @param e - The original keyboard event.\n */\n notifyListeners: (\n targetEventType: HoneyOverlayEventType,\n keyCode: HoneyKeyboardEventCode,\n e: KeyboardEvent,\n ) => void;\n}\n\n/**\n * Represents an item that has been flattened from a hierarchical data structure, with additional\n * properties to support tracking its position and relationships within the hierarchy.\n *\n * This type is particularly useful for scenarios where nested data structures, such as trees or\n * lists with sub-items, need to be transformed into a flat structure while preserving the depth\n * and parent-child relationships.\n *\n * @template OriginItem - The type of the original item from the hierarchical structure.\n * @template NestedListKey - The key within `OriginItem` that contains nested items or lists.\n */\nexport type HoneyFlattenedItem<OriginItem extends object, NestedListKey extends string> = Omit<\n OriginItem,\n // Remove `NestedListKey` from the keys of `Item`\n NestedListKey\n> & {\n /**\n * The optional id of the parent item in the flattened structure. This establishes the parent-child\n * relationship and allows the reconstruction of the original hierarchy if needed.\n */\n parentId: OriginItem[KeysWithNonArrayValues<OriginItem>] | undefined;\n /**\n * The depth level of the item in the flattened structure. This indicates how deep the item is nested\n * within the hierarchy, starting from 0 for top-level items.\n *\n * @default 0\n */\n depthLevel: number;\n /**\n * The total number of nested items that are contained within the current item. This helps to keep\n * track of the overall size of the nested structure for each item.\n *\n * @default 0\n */\n totalNestedItems: number;\n};\n","/**\n * A union type representing commonly used keyboard key codes.\n * These codes follow the `KeyboardEvent.code` specification, not `key`.\n *\n * These key codes are useful for identifying specific keyboard inputs during event handling.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code\n */\nexport type HoneyKeyboardEventCode =\n // Control keys\n | 'Escape'\n | 'Tab'\n | 'CapsLock'\n | 'ShiftLeft'\n | 'ShiftRight'\n | 'ControlLeft'\n | 'ControlRight'\n | 'AltLeft'\n | 'AltRight'\n | 'MetaLeft'\n | 'MetaRight'\n\n // Navigation\n | 'ArrowUp'\n | 'ArrowDown'\n | 'ArrowLeft'\n | 'ArrowRight'\n | 'Home'\n | 'End'\n | 'PageUp'\n | 'PageDown'\n\n // Action keys\n | 'Enter'\n | 'NumpadEnter'\n | 'Backspace'\n | 'Delete'\n | 'Insert'\n | 'Space'\n\n // Function keys\n | 'F1'\n | 'F2'\n | 'F3'\n | 'F4'\n | 'F5'\n | 'F6'\n | 'F7'\n | 'F8'\n | 'F9'\n | 'F10'\n | 'F11'\n | 'F12'\n\n // Alphanumeric\n | 'KeyA'\n | 'KeyB'\n | 'KeyC'\n | 'KeyD'\n | 'KeyE'\n | 'KeyF'\n | 'KeyG'\n | 'KeyH'\n | 'KeyI'\n | 'KeyJ'\n | 'KeyK'\n | 'KeyL'\n | 'KeyM'\n | 'KeyN'\n | 'KeyO'\n | 'KeyP'\n | 'KeyQ'\n | 'KeyR'\n | 'KeyS'\n | 'KeyT'\n | 'KeyU'\n | 'KeyV'\n | 'KeyW'\n | 'KeyX'\n | 'KeyY'\n | 'KeyZ'\n\n // Digits\n | 'Digit0'\n | 'Digit1'\n | 'Digit2'\n | 'Digit3'\n | 'Digit4'\n | 'Digit5'\n | 'Digit6'\n | 'Digit7'\n | 'Digit8'\n | 'Digit9'\n\n // Numpad\n | 'Numpad0'\n | 'Numpad1'\n | 'Numpad2'\n | 'Numpad3'\n | 'Numpad4'\n | 'Numpad5'\n | 'Numpad6'\n | 'Numpad7'\n | 'Numpad8'\n | 'Numpad9'\n | 'NumpadAdd'\n | 'NumpadSubtract'\n | 'NumpadMultiply'\n | 'NumpadDivide'\n | 'NumpadDecimal'\n\n // Symbols\n | 'Minus'\n | 'Equal'\n | 'BracketLeft'\n | 'BracketRight'\n | 'Backslash'\n | 'Semicolon'\n | 'Quote'\n | 'Backquote'\n | 'Comma'\n | 'Period'\n | 'Slash';\n","export * from './utility.types';\nexport * from './data.types';\nexport * from './state.types';\nexport * from './css.types';\nexport * from './dom.types';\n","/**\n * Types related to managing application state, React context, or any other state management tools.\n */\n\n/**\n * Represents the state of the screen layout.\n */\nexport interface HoneyScreenState {\n /** Indicates if the screen size is extra-small (xs). */\n isXs: boolean;\n /** Indicates if the screen size is small (sm). */\n isSm: boolean;\n /** Indicates if the screen size is medium (md). */\n isMd: boolean;\n /** Indicates if the screen size is large (lg). */\n isLg: boolean;\n /** Indicates if the screen size is extra-large (xl). */\n isXl: boolean;\n /** Indicates if the screen orientation is portrait. */\n isPortrait: boolean;\n /** Indicates if the screen orientation is landscape. */\n isLandscape: boolean;\n}\n","/**\n * This file stores generic or helper types that provide utility across multiple files.\n * These types are often unrelated to specific components or business logic.\n * They aim to assist in working with types more effectively and flexibly.\n */\n\nexport type TimeoutId = ReturnType<typeof setTimeout>;\n\nexport type Nullable<T> = T | null;\n\n/**\n * Extracts the keys from a given type `T` whose values match the specified `Condition`.\n *\n * @template T - The object type from which to extract keys.\n * @template Condition - The condition that the type of the values must satisfy to be included.\n *\n * @example\n * ```ts\n * type Example = { a: string; b: number; c: boolean };\n * type StringKeys = ExtractKeys<Example, string>; // \"a\"\n * ```\n */\ntype ExtractKeys<T, Condition> = {\n [K in keyof T]: T[K] extends Condition ? K : never;\n}[keyof T];\n\n/**\n * Excludes the keys from a given type `T` whose values match the specified `Condition`.\n *\n * @template T - The object type from which to exclude keys.\n * @template Condition - The condition that the type of the values must satisfy to be excluded.\n *\n * @example\n * ```ts\n * type Example = { a: string; b: number; c: boolean };\n * type NonNumberKeys = ExcludeKeys<Example, number>; // \"a\" | \"c\"\n * ```\n */\ntype ExcludeKeys<T, Condition> = {\n [K in keyof T]: T[K] extends Condition ? never : K;\n}[keyof T];\n\n/**\n * Extracts the keys from a given type `T` where the values are `string`, `null`, or `undefined`.\n *\n * @template T - The object type from which to extract string-related keys.\n *\n * @example\n * ```ts\n * type Example = { a: string; b: number; c: string | null };\n * type StringKeys = KeysWithStringValues<Example>; // \"a\" | \"c\"\n * ```\n */\nexport type KeysWithStringValues<T> = Extract<ExtractKeys<T, string | null | undefined>, string>;\n\n/**\n * Extracts the keys from a given type `T` where the values are arrays (`unknown[]`), `null`, or `undefined`.\n *\n * @template T - The object type from which to extract array-related keys.\n *\n * @example\n * ```ts\n * type Example = { a: string[]; b: number; c: number[] | null };\n * type ArrayKeys = KeysWithArrayValues<Example>; // \"a\" | \"c\"\n * ```\n */\nexport type KeysWithArrayValues<T> = Extract<ExtractKeys<T, unknown[] | null | undefined>, string>;\n\n/**\n * Extracts the keys from a given type `T` where the values are **not** arrays (`unknown[]`), `null`, or `undefined`.\n *\n * @template T - The object type from which to extract non-array keys.\n *\n * @example\n * ```ts\n * type Example = { a: string; b: number; c: string[]; d: null };\n * type NonArrayKeys = KeysWithNonArrayValues<Example>; // \"a\" | \"b\"\n * ```\n */\nexport type KeysWithNonArrayValues<T> = Extract<\n ExcludeKeys<T, unknown[] | null | undefined>,\n string\n>;\n","import { splitStringIntoWords } from '@react-hive/honey-utils';\n\nimport type {\n HoneyFlattenedItem,\n KeysWithArrayValues,\n KeysWithNonArrayValues,\n KeysWithStringValues,\n} from '../types';\n\n/**\n * Recursively converts a nested list structure into a flat list. It excludes the nested list key from the result\n * while adding hierarchical metadata, such as `depthLevel`, `parentId`, and `totalNestedItems` to each flattened item.\n *\n * This function is useful for flattening deeply nested tree-like structures (e.g., categories, folders)\n * while preserving their relationships and depth levels in the hierarchy.\n *\n * @template OriginItem - The type of the items in the nested list.\n *\n * @param items - The array of items to be flattened. If undefined, it returns an empty array.\n * @param itemIdKey - The key in each item that uniquely identifies it (e.g., 'id').\n * @param nestedItemsKey - The key in each item that contains the nested items or list (e.g., 'children').\n * @param flattenedItemsResult - An array that accumulates the flattened items. Defaults to an empty array.\n * @param parentId - Optional. The ID of the parent item in the flattened structure. Defaults to undefined for top-level items.\n * @param depthLevel - Optional. The current depth level of the item in the nested structure. Defaults to 0 for top-level items.\n *\n * @returns A flat array of items, where the nested list key is removed, and each item includes:\n * - `parentId`: ID of its parent item in the flattened structure (undefined for top-level items).\n * - `depthLevel`: The depth level of the item in the hierarchy, with 0 being the top-level.\n * - `totalNestedItems`: The total number of direct child items within the current item (defaults to 0 for leaf nodes).\n *\n * @example\n * ```ts\n * const nestedData = [\n * { id: 1, name: 'Item 1', children: [{ id: 2, name: 'Item 1.1' }] },\n * { id: 3, name: 'Item 2', children: [] },\n * ];\n *\n * const flatList = flattenNestedList(nestedData, 'id', 'children');\n *\n * // Output:\n * // [\n * // { id: 1, name: 'Item 1', parentId: undefined, depthLevel: 0, totalNestedItems: 1 },\n * // { id: 2, name: 'Item 1.1', parentId: 1, depthLevel: 1, totalNestedItems: 0 },\n * // { id: 3, name: 'Item 2', parentId: undefined, depthLevel: 0, totalNestedItems: 0 }\n * // ]\n * ```\n */\nexport const flattenNestedList = <OriginItem extends object>(\n items: OriginItem[] | undefined,\n itemIdKey: KeysWithNonArrayValues<OriginItem>,\n nestedItemsKey: KeysWithArrayValues<OriginItem>,\n ///\n flattenedItemsResult: HoneyFlattenedItem<OriginItem, typeof nestedItemsKey>[] = [],\n parentId: OriginItem[KeysWithNonArrayValues<OriginItem>] | undefined = undefined,\n depthLevel = 0,\n): HoneyFlattenedItem<OriginItem, typeof nestedItemsKey>[] => {\n items?.forEach(item => {\n const { [nestedItemsKey]: _, ...itemWithoutNestedListKey } = item;\n\n const nestedItems = item[nestedItemsKey];\n const isNestedItemArray = Array.isArray(nestedItems);\n\n flattenedItemsResult.push({\n ...itemWithoutNestedListKey,\n parentId,\n depthLevel,\n totalNestedItems: isNestedItemArray ? nestedItems.length : 0,\n });\n\n if (isNestedItemArray) {\n const parentId = item[itemIdKey];\n\n flattenNestedList(\n nestedItems,\n itemIdKey,\n nestedItemsKey,\n flattenedItemsResult,\n parentId,\n depthLevel + 1,\n );\n }\n });\n\n return flattenedItemsResult;\n};\n\n/**\n * Filters a list of flattened items based on a specified parent ID and an optional predicate function.\n *\n * This utility is useful for extracting items that share the same parent in a flattened hierarchical\n * structure, such as categories or tree-like data. Optionally, it allows further filtering through a\n * custom predicate function.\n *\n * @template OriginItem - The type of the items in the flattened list.\n * @template NestedListKey - The key within `OriginItem` that contains nested items or lists.\n *\n * @param flattenedItems - The array of flattened items to filter, which contains items with hierarchical metadata.\n * @param parentId - The parent ID to filter the items by. Only items with this parent ID will be included in the result.\n * @param predicate - Optional. A custom function to apply additional filtering logic on items that match the parent ID.\n *\n * @returns An array of flattened items that match the specified `parentId`, and if provided, the `predicate` function.\n *\n * @example\n * ```ts\n * const filteredItems = filterFlattenedItems(flatList, 1, item => item.depthLevel > 1);\n *\n * // This would return items with `parentId` equal to 1, and where `depthLevel` is greater than 1.\n * ```\n */\nexport const filterFlattenedItems = <OriginItem extends object, NestedListKey extends string>(\n flattenedItems: HoneyFlattenedItem<OriginItem, NestedListKey>[],\n parentId: OriginItem[KeysWithNonArrayValues<OriginItem>],\n predicate?: (flattenedItem: HoneyFlattenedItem<OriginItem, NestedListKey>) => boolean,\n) =>\n flattenedItems.filter(\n flattenedItem =>\n flattenedItem.parentId === parentId && (!predicate || predicate(flattenedItem)),\n );\n\n/**\n * Searches through a list of flattened items to find matches based on a search query.\n * This function considers both the items themselves and their parents in the hierarchy, ensuring that\n * any matching items and their respective parents are included in the result.\n *\n * The search is case-insensitive and can handle partial matches, making it useful for dynamic filtering\n * of hierarchical data such as categories or trees.\n *\n * @template OriginItem - The type of the original item.\n * @template NestedListKey - The key within `OriginItem` that contains nested items or lists.\n *\n * @param flattenedItems - The array of flattened items to search through, which may include hierarchical metadata.\n * @param itemIdKey - The key used to uniquely identify each item (e.g., 'id').\n * @param valueKey - The key in each item that contains the value to be searched (e.g., 'name').\n * @param searchQuery - The query string used to filter items. Supports partial matches.\n *\n * @returns An array of matched flattened items, including their parent items if applicable.\n *\n * @example\n * ```ts\n * const searchResults = searchFlattenedItems(flatList, 'id', 'name', 'search term');\n *\n * // This will return items where the 'name' field matches the search term,\n * // including any relevant parent items in the hierarchy.\n * ```\n */\nexport const searchFlattenedItems = <OriginItem extends object, NestedListKey extends string>(\n flattenedItems: HoneyFlattenedItem<OriginItem, NestedListKey>[],\n itemIdKey: KeysWithNonArrayValues<OriginItem>,\n valueKey: KeysWithStringValues<OriginItem>,\n searchQuery: string,\n) => {\n const searchWords = splitStringIntoWords(searchQuery.toLowerCase());\n if (!searchWords.length) {\n return flattenedItems;\n }\n\n const itemIdToIndexMap = flattenedItems.reduce<Record<string, number>>(\n (result, flattenedItem, flattenedItemIndex) => {\n // Item ID -> Item index\n result[flattenedItem[itemIdKey as never]] = flattenedItemIndex;\n\n return result;\n },\n {},\n );\n\n return flattenedItems.reduce<HoneyFlattenedItem<OriginItem, NestedListKey>[]>(\n (matchedFlattenedItems, flattenedItem) => {\n const flattenedItemValue = flattenedItem[valueKey as never];\n // If item value is null, undefined or empty string\n if (!flattenedItemValue) {\n return matchedFlattenedItems;\n }\n\n if (\n matchedFlattenedItems.some(\n matchedItem => matchedItem[itemIdKey as never] === flattenedItem[itemIdKey as never],\n )\n ) {\n return matchedFlattenedItems;\n }\n\n const itemWords = splitStringIntoWords((flattenedItemValue as string).toLowerCase());\n\n const isItemMatched = searchWords.every(searchWord =>\n itemWords.some(word => word.startsWith(searchWord)),\n );\n\n if (isItemMatched) {\n if (flattenedItem.parentId === undefined) {\n matchedFlattenedItems.push(flattenedItem);\n\n const insertNestedItems = (\n targetFlattenedItem: HoneyFlattenedItem<OriginItem, NestedListKey>,\n ) => {\n // If parent item does not have nested items, so do not iterate through the list\n if (!targetFlattenedItem.totalNestedItems) {\n return;\n }\n\n flattenedItems.forEach(flattenedItem => {\n if (flattenedItem.parentId === targetFlattenedItem[itemIdKey as never]) {\n matchedFlattenedItems.push(flattenedItem);\n\n insertNestedItems(flattenedItem);\n }\n });\n };\n\n insertNestedItems(flattenedItem);\n } else {\n const insertParentItems = (\n targetFlattenedItem: HoneyFlattenedItem<OriginItem, NestedListKey>,\n ) => {\n const parentItemIndex = itemIdToIndexMap[targetFlattenedItem.parentId as never];\n const parentItem = flattenedItems[parentItemIndex];\n\n if (parentItem.parentId !== undefined) {\n insertParentItems(parentItem);\n }\n\n const prevItemParentId = matchedFlattenedItems.length\n ? matchedFlattenedItems[matchedFlattenedItems.length - 1].parentId\n : null;\n\n const shouldInsertParentItem =\n prevItemParentId === null || prevItemParentId !== targetFlattenedItem.parentId;\n\n if (shouldInsertParentItem) {\n if (!parentItem) {\n throw new Error('[honey-layout]: Parent item was not found.');\n }\n\n matchedFlattenedItems.push(parentItem);\n }\n };\n\n insertParentItems(flattenedItem);\n\n matchedFlattenedItems.push(flattenedItem);\n }\n }\n\n return matchedFlattenedItems;\n },\n [],\n );\n};\n","const uniqueWarningKeys = new Set<string>();\n\nexport const warnOnce = (key: string, message: string) => {\n if (uniqueWarningKeys.has(key)) {\n return;\n }\n\n uniqueWarningKeys.add(key);\n\n console.warn(message);\n};\n","export * from './feedback';\nexport * from './data-utils';\n","module.exports = require(\"@react-hive/honey-style\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Check if module exists (development only)\n\tif (__webpack_modules__[moduleId] === undefined) {\n\t\tvar e = new Error(\"Cannot find module '\" + moduleId + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","import { resolveSpacing as deprecatedImport__resolveSpacing } from '@react-hive/honey-style';\n\n/**\n * @deprecated Please, use import from `@react-hive/honey-style`\n */\nconst resolveSpacing = deprecatedImport__resolveSpacing;\n\nexport { resolveSpacing };\n\nexport * from './constants';\nexport * from './types';\nexport * from './components';\nexport * from './providers';\nexport * from './hooks';\nexport * from './utils';\nexport * from './helpers';\nexport * from './effects';\n"],"names":[],"ignoreList":[],"sourceRoot":""}