@radix-solid-js/menu 0.1.2

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/menu.tsx"],"names":["createCollection","createContextScope","createPopperScope","createRovingFocusGroupScope","splitProps","createSignal","direction","useDirection","createEffect","onCleanup","Popper","PopperAnchor","Presence","PortalPrimitive","Show","hideOthers","mergeRefs","composeEventHandlers","useFocusGuards","FocusScope","DismissableLayer","RovingFocusGroup","PopperContent","Primitive","dispatchDiscreteCustomEvent","onMount","RovingFocusGroupItem","PopperArrow","createId"],"mappings":";;;;;;;;;;;;;;;;;;;;AAwCA,IAAM,cAAA,GAAiB,CAAC,OAAA,EAAS,GAAG,CAAA;AACpC,IAAM,UAAA,GAAa,CAAC,WAAA,EAAa,QAAA,EAAU,MAAM,CAAA;AACjD,IAAM,SAAA,GAAY,CAAC,SAAA,EAAW,UAAA,EAAY,KAAK,CAAA;AAC/C,IAAM,eAAA,GAAkB,CAAC,GAAG,UAAA,EAAY,GAAG,SAAS,CAAA;AACpD,IAAM,aAAA,GAA6C;AAAA,EACjD,GAAA,EAAK,CAAC,GAAG,cAAA,EAAgB,YAAY,CAAA;AAAA,EACrC,GAAA,EAAK,CAAC,GAAG,cAAA,EAAgB,WAAW;AACtC,CAAA;AACA,IAAM,cAAA,GAA8C;AAAA,EAClD,GAAA,EAAK,CAAC,WAAW,CAAA;AAAA,EACjB,GAAA,EAAK,CAAC,YAAY;AACpB,CAAA;AAMA,IAAM,SAAA,GAAY,MAAA;AAGlB,IAAM,CAAC,UAAA,EAAY,aAAA,EAAe,qBAAqB,CAAA,GAAIA,4BAGzD,SAAS,CAAA;AAGX,IAAM,CAAC,iBAAA,EAAmB,eAAe,CAAA,GAAIC,2BAAmB,SAAA,EAAW;AAAA,EACzE,qBAAA;AAAA,EACAC,wBAAA;AAAA,EACAC;AACF,CAAC;AACD,IAAM,iBAAiBD,wBAAA,EAAkB;AACzC,IAAM,2BAA2BC,uCAAA,EAA4B;AAS7D,IAAM,CAAC,YAAA,EAAc,cAAc,CAAA,GACjC,kBAAoC,SAAS,CAAA;AAU/C,IAAM,CAAC,gBAAA,EAAkB,kBAAkB,CAAA,GACzC,kBAAwC,SAAS,CAAA;AAUnD,SAAS,KAAK,KAAA,EAA+B;AAC3C,EAAA,MAAM,CAAC,KAAK,CAAA,GAAIC,kBAAA,CAAW,KAAA,EAAO;AAAA,IAChC,aAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,KAAA,CAAM,WAAW,CAAA;AACpD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,qBAAoC,IAAI,CAAA;AACtE,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,qBAAa,KAAK,CAAA;AAChE,EAAA,MAAMC,WAAA,GAAYC,sBAAA,CAAa,KAAA,CAAM,GAAG,CAAA;AAExC,EAAA,MAAM,IAAA,GAAO,MAAM,KAAA,CAAM,IAAA,IAAQ,KAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,CAAM,KAAA,IAAS,IAAA;AACnC,EAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAmB,KAAA,CAAM,eAAe,KAAK,CAAA;AAEvE,EAAAC,oBAAA,CAAa,MAAM;AACjB,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,MAAA,QAAA,CAAS,gBAAA,CAAiB,eAAe,aAAA,EAAe;AAAA,QACtD,OAAA,EAAS,IAAA;AAAA,QACT,IAAA,EAAM;AAAA,OACP,CAAA;AACD,MAAA,QAAA,CAAS,gBAAA,CAAiB,eAAe,aAAA,EAAe;AAAA,QACtD,OAAA,EAAS,IAAA;AAAA,QACT,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH,CAAA;AACA,IAAA,MAAM,aAAA,GAAgB,MAAM,kBAAA,CAAmB,KAAK,CAAA;AACpD,IAAA,QAAA,CAAS,iBAAiB,SAAA,EAAW,aAAA,EAAe,EAAE,OAAA,EAAS,MAAM,CAAA;AACrE,IAAAC,iBAAA,CAAU,MAAM;AACd,MAAA,QAAA,CAAS,oBAAoB,SAAA,EAAW,aAAA,EAAe,EAAE,OAAA,EAAS,MAAM,CAAA;AACxE,MAAA,QAAA,CAAS,mBAAA,CAAoB,eAAe,aAAA,EAAe;AAAA,QACzD,OAAA,EAAS;AAAA,OACV,CAAA;AACD,MAAA,QAAA,CAAS,mBAAA,CAAoB,eAAe,aAAA,EAAe;AAAA,QACzD,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,uBACE,KAAA,CAAA,aAAA,CAACC,aAAA,EAAA,EAAQ,GAAG,WAAA,EAAA,kBACV,KAAA,CAAA,aAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,OAAO,KAAA,CAAM,WAAA;AAAA,MACb,MAAM,IAAA,EAAK;AAAA,MACX,YAAA,EAAc,gBAAA;AAAA,MACd,SAAS,OAAA,EAAQ;AAAA,MACjB,eAAA,EAAiB;AAAA,KAAA;AAAA,oBAEjB,KAAA,CAAA,aAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,OAAO,KAAA,CAAM,WAAA;AAAA,QACb,OAAA,EAAS,MAAM,gBAAA,CAAiB,KAAK,CAAA;AAAA,QACrC,iBAAiB,eAAA,EAAgB;AAAA,QACjC,uBAAA,EAAyB,kBAAA;AAAA,QACzB,GAAA,EAAKJ,WAAA;AAAA,QACL,OAAO,KAAA;AAAM,OAAA;AAAA,MAEZ,KAAA,CAAM;AAAA;AACT,GAEJ,CAAA;AAEJ;AAEA,IAAA,CAAK,WAAA,GAAc,SAAA;AAMnB,IAAM,WAAA,GAAc,YAAA;AAOpB,SAAS,WAAW,OAAA,EAAuC;AACzD,EAAA,MAAM,CAAC,OAAO,IAAI,CAAA,GAAIF,mBAAW,OAAA,EAAS,CAAC,aAAA,EAAe,KAAK,CAAC,CAAA;AAChE,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,KAAA,CAAM,WAAW,CAAA;AACpD,EAAA,uBAAO,KAAA,CAAA,aAAA,CAACO,uBAAc,GAAG,WAAA,EAAc,GAAG,IAAA,EAAM,GAAA,EAAK,MAAM,GAAA,EAAK,CAAA;AAClE;AAEA,UAAA,CAAW,WAAA,GAAc,WAAA;AAMzB,IAAM,WAAA,GAAc,YAAA;AAGpB,IAAM,CAAC,cAAA,EAAgB,gBAAgB,CAAA,GACrC,kBAAsC,WAAA,EAAa;AAAA,EACjD,UAAA,EAAY;AACd,CAAC,CAAA;AAQH,SAAS,WAAW,KAAA,EAAqC;AACvD,EAAA,MAAM,CAAC,KAAK,CAAA,GAAIP,kBAAA,CAAW,KAAA,EAAO;AAAA,IAChC,aAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,WAAA,EAAa,KAAA,CAAM,WAAW,CAAA;AAC7D,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,kBAAe,KAAA,EAAO,KAAA,CAAM,aAAa,UAAA,EAAY,KAAA,CAAM,UAAA,EAAA,kBAC1D,KAAA,CAAA,aAAA,CAACQ,iBAAA,EAAA,EAAS,OAAA,EAAS,MAAM,UAAA,IAAc,OAAA,CAAQ,IAAA,EAAA,kBAC7C,KAAA,CAAA,aAAA,CAACC,aAAA,EAAA,EAAgB,SAAA,EAAW,MAAM,SAAA,EAAA,EAC/B,KAAA,CAAM,QACT,CACF,CACF,CAAA;AAEJ;AAEA,UAAA,CAAW,WAAA,GAAc,WAAA;AAMzB,IAAM,YAAA,GAAe,aAAA;AAarB,IAAM,CAAC,mBAAA,EAAqB,qBAAqB,CAAA,GAC/C,kBAA2C,YAAY,CAAA;AAMzD,SAAS,YAAY,OAAA,EAAwC;AAC3D,EAAA,MAAM,CAAC,OAAO,IAAI,CAAA,GAAIT,mBAAW,OAAA,EAAS,CAAC,aAAA,EAAe,YAAY,CAAC,CAAA;AACvE,EAAA,MAAM,aAAA,GAAgB,gBAAA,CAAiB,YAAA,EAAc,KAAA,CAAM,WAAW,CAAA;AACtE,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,YAAA,EAAc,KAAA,CAAM,WAAW,CAAA;AAC9D,EAAA,MAAM,WAAA,GAAc,kBAAA,CAAmB,YAAA,EAAc,KAAA,CAAM,WAAW,CAAA;AACtE,EAAA,MAAM,UAAA,GAAa,MAAM,KAAA,CAAM,UAAA,IAAc,aAAA,CAAc,UAAA;AAE3D,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,WAAW,QAAA,EAAX,EAAoB,OAAO,KAAA,CAAM,WAAA,EAAA,sCAC/BQ,iBAAA,EAAA,EAAS,OAAA,EAAS,YAAW,IAAK,OAAA,CAAQ,wBACzC,KAAA,CAAA,aAAA,CAAC,UAAA,CAAW,MAAX,EAAgB,KAAA,EAAO,MAAM,WAAA,EAAA,kBAC5B,KAAA,CAAA,aAAA;AAAA,IAACE,YAAA;AAAA,IAAA;AAAA,MACC,MAAM,WAAA,CAAY,KAAA;AAAA,MAClB,QAAA,kBACE,KAAA,CAAA,aAAA;AAAA,QAAC,uBAAA;AAAA,QAAA;AAAA,UACE,GAAG,IAAA;AAAA,UACJ,aAAa,KAAA,CAAM;AAAA;AAAA;AACrB,KAAA;AAAA,wCAGD,oBAAA,EAAA,EAAsB,GAAG,IAAA,EAAM,WAAA,EAAa,MAAM,WAAA,EAAa;AAAA,GAEpE,CACF,CACF,CAAA;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,YAAA;AAa1B,SAAS,qBAAqB,OAAA,EAAgD;AAC5E,EAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAIV,mBAAW,OAAA,EAAS;AAAA,IACxC,aAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,YAAA,EAAc,KAAA,CAAM,WAAW,CAAA;AAC9D,EAAA,IAAI,UAAA;AAGJ,EAAAI,oBAAA,CAAa,MAAM;AACjB,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,MAAM,OAAA,GAAUO,sBAAW,UAAU,CAAA;AACrC,MAAAN,iBAAA,CAAU,MAAM,WAAW,CAAA;AAAA,IAC7B;AAAA,EACF,CAAC,CAAA;AAED,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,GAAA,EAAKO,qBAAA,CAAU,KAAA,CAAM,GAAA,EAAK,CAAC,EAAA,KAAoB;AAC7C,QAAA,UAAA,GAAa,EAAA;AAAA,MACf,CAAC,CAAA;AAAA,MACD,WAAW,OAAA,CAAQ,IAAA;AAAA,MACnB,6BAA6B,OAAA,CAAQ,IAAA;AAAA,MACrC,oBAAA,EAAoB,IAAA;AAAA,MACpB,cAAA,EAAgBC,8BAAA;AAAA,QAAqB,KAAA,CAAM,cAAA;AAAA,QAAgB,CAAC,KAAA,KAC1D,KAAA,CAAM,cAAA;AAAe,OACvB;AAAA,MACA,SAAA,EAAW,MAAM,OAAA,CAAQ,YAAA,CAAa,KAAK;AAAA;AAAA,GAC7C;AAEJ;AAEA,SAAS,wBACP,OAAA,EACA;AACA,EAAA,MAAM,CAAC,OAAO,IAAI,CAAA,GAAIb,mBAAW,OAAA,EAAS,CAAC,aAAa,CAAC,CAAA;AACzD,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,YAAA,EAAc,KAAA,CAAM,WAAW,CAAA;AAC9D,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,SAAA,EAAW,KAAA;AAAA,MACX,2BAAA,EAA6B,KAAA;AAAA,MAC7B,oBAAA,EAAsB,KAAA;AAAA,MACtB,SAAA,EAAW,MAAM,OAAA,CAAQ,YAAA,CAAa,KAAK;AAAA;AAAA,GAC7C;AAEJ;AAgCA,SAAS,gBAAgB,OAAA,EAA4C;AACnE,EAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAIA,mBAAW,OAAA,EAAS;AAAA,IACxC,aAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,kBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sBAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,sBAAA;AAAA,IACA,gBAAA;AAAA,IACA,mBAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA;AAAA,IACA,kBAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,kBAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,YAAA,EAAc,KAAA,CAAM,WAAW,CAAA;AAC9D,EAAA,MAAM,WAAA,GAAc,kBAAA,CAAmB,YAAA,EAAc,KAAA,CAAM,WAAW,CAAA;AACtE,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,KAAA,CAAM,WAAW,CAAA;AACpD,EAAA,MAAM,qBAAA,GAAwB,wBAAA,CAAyB,KAAA,CAAM,WAAW,CAAA;AACxE,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,KAAA,CAAM,WAAW,CAAA;AAEhD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIC,qBAA4B,IAAI,CAAA;AAC1E,EAAA,IAAI,UAAA;AACJ,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,SAAA,GAAY,EAAA;AAChB,EAAA,IAAI,oBAAA,GAAuB,CAAA;AAC3B,EAAA,IAAI,qBAAA,GAA4C,IAAA;AAChD,EAAA,IAAI,aAAA,GAAsB,OAAA;AAC1B,EAAA,IAAI,eAAA,GAAkB,CAAA;AAGtB,EAAAG,oBAAA,CAAa,MAAM;AACjB,IAAA,IAAI,MAAM,oBAAA,EAAsB;AAC9B,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA;AACtB,MAAA,MAAM,cAAA,GACJ,MAAA,CAAO,UAAA,GAAa,QAAA,CAAS,eAAA,CAAgB,WAAA;AAC/C,MAAA,MAAM,gBAAA,GAAmB,KAAK,KAAA,CAAM,QAAA;AACpC,MAAA,MAAM,oBAAA,GAAuB,KAAK,KAAA,CAAM,YAAA;AAExC,MAAA,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AACtB,MAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,QAAA,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,CAAA,EAAG,cAAc,CAAA,EAAA,CAAA;AAAA,MAC7C;AAEA,MAAAC,iBAAA,CAAU,MAAM;AACd,QAAA,IAAA,CAAK,MAAM,QAAA,GAAW,gBAAA;AACtB,QAAA,IAAA,CAAK,MAAM,YAAA,GAAe,oBAAA;AAAA,MAC5B,CAAC,CAAA;AAAA,IACH;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAM,qBAAA,GAAwB,CAAC,GAAA,KAAgB;AAC7C,IAAA,MAAM,SAAS,SAAA,GAAY,GAAA;AAC3B,IAAA,MAAM,KAAA,GAAQ,UAAS,CAAE,MAAA,CAAO,CAAC,IAAA,KAAc,CAAC,KAAK,QAAQ,CAAA;AAC7D,IAAA,MAAM,cAAc,QAAA,CAAS,aAAA;AAC7B,IAAA,MAAM,eAAe,KAAA,CAAM,IAAA;AAAA,MACzB,CAAC,IAAA,KAAc,IAAA,CAAK,GAAA,KAAQ;AAAA,KAC9B,EAAG,SAAA;AACH,IAAA,MAAM,SAAS,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAc,KAAK,SAAS,CAAA;AACtD,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,MAAA,EAAQ,MAAA,EAAQ,YAAY,CAAA;AAC3D,IAAA,MAAM,UAAU,KAAA,CAAM,IAAA;AAAA,MACpB,CAAC,IAAA,KAAc,IAAA,CAAK,SAAA,KAAc;AAAA,KACpC,EAAG,GAAA;AAGH,IAAA,CAAC,SAAS,aAAa,KAAA,EAAe;AACpC,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA,MAAA,CAAO,aAAa,QAAQ,CAAA;AAC5B,MAAA,IAAI,KAAA,KAAU,EAAA;AACZ,QAAA,QAAA,GAAW,OAAO,UAAA,CAAW,MAAM,YAAA,CAAa,EAAE,GAAG,GAAI,CAAA;AAAA,IAC7D,GAAG,MAAM,CAAA;AAET,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,UAAA,CAAW,MAAO,OAAA,CAAwB,KAAA,EAAO,CAAA;AAAA,IACnD;AAAA,EACF,CAAA;AAEA,EAAAA,iBAAA,CAAU,MAAM,MAAA,CAAO,YAAA,CAAa,QAAQ,CAAC,CAAA;AAG7C,EAAAS,0BAAA,EAAe;AAEf,EAAA,MAAM,wBAAA,GAA2B,CAAC,KAAA,KAAwB;AACxD,IAAA,MAAM,eAAA,GAAkB,kBAAkB,qBAAA,EAAuB,IAAA;AACjE,IAAA,OACE,eAAA,IACA,oBAAA,CAAqB,KAAA,EAAO,qBAAA,EAAuB,IAAI,CAAA;AAAA,EAE3D,CAAA;AAEA,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,OAAO,KAAA,CAAM,WAAA;AAAA,MACb,SAAA;AAAA,MACA,cAAA,EAAgB,CAAC,KAAA,KAAkB;AACjC,QAAA,SAAA,GAAY,KAAA;AAAA,MACd,CAAA;AAAA,MACA,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,QAAA,IAAI,wBAAA,CAAyB,KAAK,CAAA,EAAG,KAAA,CAAM,cAAA,EAAe;AAAA,MAC5D,CAAA;AAAA,MACA,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,QAAA,IAAI,wBAAA,CAAyB,KAAK,CAAA,EAAG;AACrC,QAAA,UAAA,EAAY,KAAA,EAAM;AAClB,QAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,MACvB,CAAA;AAAA,MACA,cAAA,EAAgB,CAAC,KAAA,KAAU;AACzB,QAAA,IAAI,wBAAA,CAAyB,KAAK,CAAA,EAAG,KAAA,CAAM,cAAA,EAAe;AAAA,MAC5D,CAAA;AAAA,MACA,oBAAA;AAAA,MACA,yBAAA,EAA2B,CAAC,KAAA,KAAkB;AAC5C,QAAA,oBAAA,GAAuB,KAAA;AAAA,MACzB,CAAA;AAAA,MACA,0BAAA,EAA4B,CAAC,MAAA,KAAW;AACtC,QAAA,qBAAA,GAAwB,MAAA;AAAA,MAC1B;AAAA,KAAA;AAAA,oBAEA,KAAA,CAAA,aAAA;AAAA,MAACC,qBAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,SAAA;AAAA,QACf,gBAAA,EAAkBF,8BAAA;AAAA,UAChB,KAAA,CAAM,eAAA;AAAA,UACN,CAAC,KAAA,KAAiB;AAGhB,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,UAAA,EAAY,KAAA,CAAM,EAAE,aAAA,EAAe,IAAA,EAAM,CAAA;AAAA,UAC3C;AAAA,SACF;AAAA,QACA,oBAAoB,KAAA,CAAM;AAAA,OAAA;AAAA,sBAE1B,KAAA,CAAA,aAAA;AAAA,QAACG,iCAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAO,IAAA;AAAA,UACP,6BAA6B,KAAA,CAAM,2BAAA;AAAA,UACnC,iBAAiB,KAAA,CAAM,eAAA;AAAA,UACvB,sBAAsB,KAAA,CAAM,oBAAA;AAAA,UAC5B,gBAAgB,KAAA,CAAM,cAAA;AAAA,UACtB,mBAAmB,KAAA,CAAM,iBAAA;AAAA,UACzB,WAAW,KAAA,CAAM;AAAA,SAAA;AAAA,wBAEjB,KAAA,CAAA,aAAA;AAAA,UAACC,4BAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAO,IAAA;AAAA,YACN,GAAG,qBAAA;AAAA,YACJ,KAAK,WAAA,CAAY,GAAA;AAAA,YACjB,WAAA,EAAY,UAAA;AAAA,YACZ,IAAA,EAAM,MAAM,IAAA,IAAQ,KAAA;AAAA,YACpB,kBAAkB,aAAA,EAAc;AAAA,YAChC,wBAAA,EAA0B,gBAAA;AAAA,YAC1B,YAAA,EAAcJ,8BAAA;AAAA,cACZ,KAAA,CAAM,YAAA;AAAA,cACN,CAAC,KAAA,KAAiB;AAEhB,gBAAA,IAAI,CAAC,WAAA,CAAY,eAAA,EAAiB,KAAA,CAAM,cAAA,EAAe;AAAA,cACzD;AAAA,aACF;AAAA,YACA,yBAAA,EAAyB;AAAA,WAAA;AAAA,0BAEzB,KAAA,CAAA,aAAA;AAAA,YAACK,oBAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,MAAA;AAAA,cACL,kBAAA,EAAiB,UAAA;AAAA,cACjB,YAAA,EAAY,YAAA,CAAa,OAAA,CAAQ,IAAI,CAAA;AAAA,cACrC,yBAAA,EAAwB,EAAA;AAAA,cACxB,KAAK,WAAA,CAAY,GAAA;AAAA,cAChB,GAAG,WAAA;AAAA,cACH,GAAG,IAAA;AAAA,cACJ,GAAA,EAAKN,qBAAA,CAAU,KAAA,CAAM,GAAA,EAAK,CAAC,EAAA,KAAoB;AAC7C,gBAAA,UAAA,GAAa,EAAA;AACb,gBAAA,OAAA,CAAQ,gBAAgB,EAAoB,CAAA;AAAA,cAC9C,CAAC,CAAA;AAAA,cACD,MAAM,KAAA,CAAM,IAAA;AAAA,cACZ,YAAY,KAAA,CAAM,UAAA;AAAA,cAClB,OAAO,KAAA,CAAM,KAAA;AAAA,cACb,aAAa,KAAA,CAAM,WAAA;AAAA,cACnB,iBAAiB,KAAA,CAAM,eAAA;AAAA,cACvB,mBAAmB,KAAA,CAAM,iBAAA;AAAA,cACzB,kBAAkB,KAAA,CAAM,gBAAA;AAAA,cACxB,cAAc,KAAA,CAAM,YAAA;AAAA,cACpB,QAAQ,KAAA,CAAM,MAAA;AAAA,cACd,kBAAkB,KAAA,CAAM,gBAAA;AAAA,cACxB,KAAA,EACE;AAAA,gBACE,OAAA,EAAS,MAAA;AAAA,gBACT,GAAI,OAAO,KAAA,CAAM,UAAU,QAAA,GAAW,KAAA,CAAM,QAAQ,EAAC;AAAA,gBACrD,uCAAA,EACE,sCAAA;AAAA,gBACF,sCAAA,EACE,qCAAA;AAAA,gBACF,uCAAA,EACE,sCAAA;AAAA,gBACF,4BAAA,EACE,kCAAA;AAAA,gBACF,6BAAA,EACE;AAAA,eACJ;AAAA,cAEF,SAAA,EAAWC,8BAAA;AAAA,gBACT,KAAA,CAAM,SAAA;AAAA,gBACN,CAAC,KAAA,KAAyB;AAExB,kBAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,kBAAA,MAAM,eAAA,GACJ,MAAA,CAAO,OAAA,CAAQ,2BAA2B,MAC1C,KAAA,CAAM,aAAA;AACR,kBAAA,MAAM,aAAA,GACJ,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,UAAU,KAAA,CAAM,OAAA;AACzC,kBAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,GAAA,CAAI,MAAA,KAAW,CAAA;AAC5C,kBAAA,IAAI,eAAA,EAAiB;AAEnB,oBAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,KAAA,EAAO,KAAA,CAAM,cAAA,EAAe;AAC9C,oBAAA,IAAI,CAAC,aAAA,IAAiB,cAAA;AACpB,sBAAA,qBAAA,CAAsB,MAAM,GAAG,CAAA;AAAA,kBACnC;AAEA,kBAAA,MAAM,OAAA,GAAU,UAAA;AAChB,kBAAA,IAAI,KAAA,CAAM,WAAW,OAAA,EAAS;AAC9B,kBAAA,IAAI,CAAC,eAAA,CAAgB,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,EAAG;AAC1C,kBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,kBAAA,MAAM,KAAA,GAAQ,UAAS,CAAE,MAAA;AAAA,oBACvB,CAAC,IAAA,KAAc,CAAC,IAAA,CAAK;AAAA,mBACvB;AACA,kBAAA,MAAM,iBAAiB,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAc,KAAK,GAAG,CAAA;AACxD,kBAAA,IAAI,UAAU,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,iBAAkB,OAAA,EAAQ;AAC1D,kBAAA,UAAA,CAAW,cAAc,CAAA;AAAA,gBAC3B;AAAA,eACF;AAAA,cACA,MAAA,EAAQA,8BAAA;AAAA,gBACN,KAAA,CAAM,MAAA;AAAA,gBACN,CAAC,KAAA,KAAsB;AAErB,kBAAA,IACE,CAAE,MAAM,aAAA,CAA8B,QAAA;AAAA,oBACpC,KAAA,CAAM;AAAA,mBACR,EACA;AACA,oBAAA,MAAA,CAAO,aAAa,QAAQ,CAAA;AAC5B,oBAAA,SAAA,GAAY,EAAA;AAAA,kBACd;AAAA,gBACF;AAAA,eACF;AAAA,cACA,aAAA,EAAeA,8BAAA;AAAA,gBACb,KAAA,CAAM,aAAA;AAAA,gBACN,SAAA,CAAU,CAAC,KAAA,KAAwB;AACjC,kBAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,kBAAA,MAAM,kBAAA,GAAqB,oBAAoB,KAAA,CAAM,OAAA;AAErD,kBAAA,IACG,KAAA,CAAM,aAAA,CAA8B,QAAA,CAAS,MAAM,KACpD,kBAAA,EACA;AACA,oBAAA,MAAM,MAAA,GACJ,KAAA,CAAM,OAAA,GAAU,eAAA,GAAkB,OAAA,GAAU,MAAA;AAC9C,oBAAA,aAAA,GAAgB,MAAA;AAChB,oBAAA,eAAA,GAAkB,KAAA,CAAM,OAAA;AAAA,kBAC1B;AAAA,gBACF,CAAC;AAAA;AACH;AAAA;AACF;AACF;AACF;AACF,GACF;AAEJ;AAMA,IAAM,UAAA,GAAa,WAAA;AAMnB,SAAS,UAAU,OAAA,EAAsC;AACvD,EAAA,MAAM,CAAC,OAAO,IAAI,CAAA,GAAIb,mBAAW,OAAA,EAAS,CAAC,aAAA,EAAe,KAAK,CAAC,CAAA;AAChE,EAAA,uBAAO,KAAA,CAAA,aAAA,CAACmB,4BAAA,CAAU,GAAA,EAAV,EAAc,IAAA,EAAK,SAAS,GAAG,IAAA,EAAM,GAAA,EAAK,KAAA,CAAM,GAAA,EAAK,CAAA;AAC/D;AAEA,SAAA,CAAU,WAAA,GAAc,UAAA;AAMxB,IAAM,UAAA,GAAa,WAAA;AAMnB,SAAS,UAAU,OAAA,EAAsC;AACvD,EAAA,MAAM,CAAC,OAAO,IAAI,CAAA,GAAInB,mBAAW,OAAA,EAAS,CAAC,aAAA,EAAe,KAAK,CAAC,CAAA;AAChE,EAAA,uBAAO,KAAA,CAAA,aAAA,CAACmB,6BAAU,GAAA,EAAV,EAAe,GAAG,IAAA,EAAM,GAAA,EAAK,MAAM,GAAA,EAAK,CAAA;AAClD;AAEA,SAAA,CAAU,WAAA,GAAc,UAAA;AAMxB,IAAM,SAAA,GAAY,UAAA;AAClB,IAAM,WAAA,GAAc,iBAAA;AAMpB,SAAS,SAAS,OAAA,EAAqC;AACrD,EAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAInB,mBAAW,OAAA,EAAS;AAAA,IACxC,aAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,WAAA,GAAc,kBAAA,CAAmB,SAAA,EAAW,KAAA,CAAM,WAAW,CAAA;AACnE,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,SAAA,EAAW,KAAA,CAAM,WAAW,CAAA;AACzE,EAAA,IAAI,OAAA;AACJ,EAAA,IAAI,gBAAA,GAAmB,KAAA;AACvB,EAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,QAAA,IAAY,KAAA;AAEzC,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,MAAM,QAAA,GAAW,OAAA;AACjB,IAAA,IAAI,CAAC,QAAA,EAAS,IAAK,QAAA,EAAU;AAC3B,MAAA,MAAM,eAAA,GAAkB,IAAI,WAAA,CAAY,WAAA,EAAa;AAAA,QACnD,OAAA,EAAS,IAAA;AAAA,QACT,UAAA,EAAY;AAAA,OACb,CAAA;AACD,MAAA,QAAA,CAAS,gBAAA;AAAA,QACP,WAAA;AAAA,QACA,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,GAAW,KAAK,CAAA;AAAA,QACjC,EAAE,MAAM,IAAA;AAAK,OACf;AACA,MAAAoB,8CAAA,CAA4B,UAAU,eAAe,CAAA;AACrD,MAAA,IAAI,gBAAgB,gBAAA,EAAkB;AACpC,QAAA,gBAAA,GAAmB,KAAA;AAAA,MACrB,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,OAAA,EAAQ;AAAA,MACtB;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,GAAA,EAAKR,qBAAA,CAAU,KAAA,CAAM,GAAA,EAAK,CAAC,EAAA,KAAoB;AAC7C,QAAA,OAAA,GAAU,EAAA;AAAA,MACZ,CAAC,CAAA;AAAA,MACD,UAAU,QAAA,EAAS;AAAA,MACnB,OAAA,EAASC,8BAAA,CAAqB,KAAA,CAAM,OAAA,EAAgB,YAAY,CAAA;AAAA,MAChE,aAAA,EAAeA,8BAAA,CAAqB,KAAA,CAAM,aAAA,EAAsB,MAAM;AACpE,QAAA,gBAAA,GAAmB,IAAA;AAAA,MACrB,CAAC,CAAA;AAAA,MACD,WAAA,EAAaA,8BAAA;AAAA,QACX,KAAA,CAAM,WAAA;AAAA,QACN,CAAC,KAAA,KAAwB;AACvB,UAAA,IAAI,CAAC,gBAAA,EAAmB,KAAA,CAAM,eAA+B,KAAA,EAAM;AAAA,QACrE;AAAA,OACF;AAAA,MACA,SAAA,EAAWA,8BAAA;AAAA,QACT,KAAA,CAAM,SAAA;AAAA,QACN,CAAC,KAAA,KAAyB;AACxB,UAAA,MAAM,aAAA,GAAgB,eAAe,SAAA,KAAc,EAAA;AACnD,UAAA,IAAI,QAAA,EAAS,IAAM,aAAA,IAAiB,KAAA,CAAM,QAAQ,GAAA,EAAM;AACxD,UAAA,IAAI,cAAA,CAAe,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,EAAG;AACtC,YAAC,KAAA,CAAM,cAA8B,KAAA,EAAM;AAC3C,YAAA,KAAA,CAAM,cAAA,EAAe;AAAA,UACvB;AAAA,QACF;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,SAAA;AAUvB,SAAS,aAAa,OAAA,EAAyC;AAC7D,EAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAIb,mBAAW,OAAA,EAAS;AAAA,IACxC,aAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,SAAA,EAAW,KAAA,CAAM,WAAW,CAAA;AACzE,EAAA,MAAM,qBAAA,GAAwB,wBAAA,CAAyB,KAAA,CAAM,WAAW,CAAA;AACxE,EAAA,IAAI,OAAA;AACJ,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIC,qBAAa,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,qBAAa,EAAE,CAAA;AACrD,EAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,QAAA,IAAY,KAAA;AAGzC,EAAAoB,eAAA,CAAQ,MAAM;AACZ,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,cAAA,CAAA,CAAgB,OAAA,CAAQ,WAAA,IAAe,EAAA,EAAI,IAAA,EAAM,CAAA;AAAA,IACnD;AAAA,EACF,CAAC,CAAA;AAED,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA,CAAW,QAAA;AAAA,IAAX;AAAA,MACC,OAAO,KAAA,CAAM,WAAA;AAAA,MACb,UAAU,QAAA,EAAS;AAAA,MACnB,SAAA,EAAW,KAAA,CAAM,SAAA,IAAa,WAAA;AAAY,KAAA;AAAA,oBAE1C,KAAA,CAAA,aAAA;AAAA,MAACC,gCAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAO,IAAA;AAAA,QACN,GAAG,qBAAA;AAAA,QACJ,SAAA,EAAW,CAAC,QAAA;AAAS,OAAA;AAAA,sBAErB,KAAA,CAAA,aAAA;AAAA,QAACH,4BAAA,CAAU,GAAA;AAAA,QAAV;AAAA,UACC,IAAA,EAAK,UAAA;AAAA,UACL,kBAAA,EAAkB,SAAA,EAAU,GAAI,EAAA,GAAK,MAAA;AAAA,UACrC,eAAA,EAAe,UAAS,IAAK,MAAA;AAAA,UAC7B,eAAA,EAAe,QAAA,EAAS,GAAI,EAAA,GAAK,MAAA;AAAA,UAChC,GAAG,IAAA;AAAA,UACJ,GAAA,EAAKP,qBAAA,CAAU,KAAA,CAAM,GAAA,EAAK,CAAC,EAAA,KAAoB;AAC7C,YAAA,OAAA,GAAU,EAAA;AAAA,UACZ,CAAC,CAAA;AAAA,UACD,aAAA,EAAeC,8BAAA;AAAA,YACb,KAAA,CAAM,aAAA;AAAA,YACN,SAAA,CAAU,CAAC,KAAA,KAAwB;AACjC,cAAA,IAAI,UAAS,EAAG;AACd,gBAAA,cAAA,CAAe,YAAY,KAAK,CAAA;AAAA,cAClC,CAAA,MAAO;AACL,gBAAA,cAAA,CAAe,YAAY,KAAK,CAAA;AAChC,gBAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,kBAAA,MAAM,OAAO,KAAA,CAAM,aAAA;AACnB,kBAAA,IAAA,CAAK,KAAA,CAAM,EAAE,aAAA,EAAe,IAAA,EAAM,CAAA;AAAA,gBACpC;AAAA,cACF;AAAA,YACF,CAAC;AAAA,WACH;AAAA,UACA,cAAA,EAAgBA,8BAAA;AAAA,YACd,KAAA,CAAM,cAAA;AAAA,YACN,SAAA;AAAA,cAAU,CAAC,KAAA,KACT,cAAA,CAAe,WAAA,CAAY,KAAK;AAAA;AAClC,WACF;AAAA,UACA,OAAA,EAASA,8BAAA;AAAA,YAAqB,KAAA,CAAM,OAAA;AAAA,YAAgB,MAClD,aAAa,IAAI;AAAA,WACnB;AAAA,UACA,MAAA,EAAQA,8BAAA;AAAA,YAAqB,KAAA,CAAM,MAAA;AAAA,YAAe,MAChD,aAAa,KAAK;AAAA;AACpB;AAAA;AACF;AACF,GACF;AAEJ;AAMA,IAAM,kBAAA,GAAqB,kBAAA;AAS3B,SAAS,iBAAiB,OAAA,EAA6C;AACrE,EAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAIb,mBAAW,OAAA,EAAS;AAAA,IACxC,aAAA;AAAA,IACA,SAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,OAAA,GAAU,MAAM,KAAA,CAAM,OAAA,IAAW,KAAA;AAEvC,EAAA,2CACG,qBAAA,EAAA,EAAsB,KAAA,EAAO,MAAM,WAAA,EAAa,OAAA,EAAS,SAAQ,EAAA,kBAChE,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,kBAAA;AAAA,MACL,gBAAc,eAAA,CAAgB,OAAA,EAAS,CAAA,GAAI,UAAU,OAAA,EAAQ;AAAA,MAC5D,GAAI,IAAA;AAAA,MACL,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,YAAA,EAAY,eAAA,CAAgB,OAAA,EAAS,CAAA;AAAA,MACrC,QAAA,EAAUa,8BAAA;AAAA,QACR,KAAA,CAAM,QAAA;AAAA,QACN,MACE,KAAA,CAAM,eAAA;AAAA,UACJ,gBAAgB,OAAA,EAAS,CAAA,GAAI,IAAA,GAAO,CAAC,OAAA;AAAQ,SAC/C;AAAA,QACF,EAAE,0BAA0B,KAAA;AAAM;AACpC;AAAA,GAEJ,CAAA;AAEJ;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAM/B,IAAM,gBAAA,GAAmB,gBAAA;AAOzB,IAAM,CAAC,kBAAA,EAAoB,oBAAoB,CAAA,GAC7C,kBAA0C,gBAAA,EAAkB;AAAA,EAC1D,KAAA,EAAO,MAAA;AAAA,EACP,eAAe,MAAM;AAAA,EAAC;AACxB,CAAC,CAAA;AAOH,SAAS,eAAe,OAAA,EAA2C;AACjE,EAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAIb,mBAAW,OAAA,EAAS;AAAA,IACxC,aAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,OAAO,KAAA,CAAM,WAAA;AAAA,MACb,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,eAAe,KAAA,CAAM;AAAA,KAAA;AAAA,wCAEpB,SAAA,EAAA,EAAW,GAAG,IAAA,EAAM,WAAA,EAAa,MAAM,WAAA,EAAa;AAAA,GACvD;AAEJ;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAM7B,IAAM,eAAA,GAAkB,eAAA;AAMxB,SAAS,cAAc,OAAA,EAA0C;AAC/D,EAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAIA,mBAAW,OAAA,EAAS;AAAA,IACxC,aAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,eAAA,EAAiB,KAAA,CAAM,WAAW,CAAA;AACvE,EAAA,MAAM,OAAA,GAAU,MAAM,KAAA,CAAM,KAAA,KAAU,OAAA,CAAQ,KAAA;AAE9C,EAAA,2CACG,qBAAA,EAAA,EAAsB,KAAA,EAAO,MAAM,WAAA,EAAa,OAAA,EAAS,SAAQ,EAAA,kBAChE,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,eAAA;AAAA,MACL,gBAAc,OAAA,EAAQ;AAAA,MACrB,GAAG,IAAA;AAAA,MACJ,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,YAAA,EAAY,eAAA,CAAgB,OAAA,EAAS,CAAA;AAAA,MACrC,QAAA,EAAUa,8BAAA;AAAA,QACR,KAAA,CAAM,QAAA;AAAA,QACN,MAAM,OAAA,CAAQ,aAAA,GAAgB,KAAA,CAAM,KAAK,CAAA;AAAA,QACzC,EAAE,0BAA0B,KAAA;AAAM;AACpC;AAAA,GAEJ,CAAA;AAEJ;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAM5B,IAAM,mBAAA,GAAsB,mBAAA;AAI5B,IAAM,CAAC,qBAAA,EAAuB,uBAAuB,CAAA,GACnD,kBAA6C,mBAAA,EAAqB;AAAA,EAChE,OAAA,EAAS;AACX,CAAC,CAAA;AAOH,SAAS,kBAAkB,OAAA,EAA8C;AACvE,EAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAIb,mBAAW,OAAA,EAAS;AAAA,IACxC,aAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,gBAAA,GAAmB,uBAAA;AAAA,IACvB,mBAAA;AAAA,IACA,KAAA,CAAM;AAAA,GACR;AACA,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAACQ,iBAAA;AAAA,IAAA;AAAA,MACC,OAAA,EACE,MAAM,UAAA,IACN,eAAA,CAAgB,iBAAiB,OAAO,CAAA,IACxC,iBAAiB,OAAA,KAAY;AAAA,KAAA;AAAA,oBAG/B,KAAA,CAAA,aAAA;AAAA,MAACW,4BAAA,CAAU,IAAA;AAAA,MAAV;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,KAAK,KAAA,CAAM,GAAA;AAAA,QACX,YAAA,EAAY,eAAA,CAAgB,gBAAA,CAAiB,OAAO;AAAA;AAAA;AACtD,GACF;AAEJ;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAMhC,IAAM,cAAA,GAAiB,eAAA;AAMvB,SAAS,cAAc,OAAA,EAA0C;AAC/D,EAAA,MAAM,CAAC,OAAO,IAAI,CAAA,GAAInB,mBAAW,OAAA,EAAS,CAAC,aAAA,EAAe,KAAK,CAAC,CAAA;AAChE,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAACmB,4BAAA,CAAU,GAAA;AAAA,IAAV;AAAA,MACC,IAAA,EAAK,WAAA;AAAA,MACL,kBAAA,EAAiB,YAAA;AAAA,MAChB,GAAG,IAAA;AAAA,MACJ,KAAK,KAAA,CAAM;AAAA;AAAA,GACb;AAEJ;AAEA,aAAA,CAAc,WAAA,GAAc,cAAA;AAM5B,IAAM,UAAA,GAAa,WAAA;AAMnB,SAAS,UAAU,OAAA,EAAsC;AACvD,EAAA,MAAM,CAAC,OAAO,IAAI,CAAA,GAAInB,mBAAW,OAAA,EAAS,CAAC,aAAa,CAAC,CAAA;AACzD,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,KAAA,CAAM,WAAW,CAAA;AACpD,EAAA,uBAAO,KAAA,CAAA,aAAA,CAACuB,kBAAA,EAAA,EAAa,GAAG,WAAA,EAAc,GAAG,IAAA,EAAM,CAAA;AACjD;AAEA,SAAA,CAAU,WAAA,GAAc,UAAA;AAMxB,IAAM,QAAA,GAAW,SAAA;AASjB,IAAM,CAAC,eAAA,EAAiB,iBAAiB,CAAA,GACvC,kBAAuC,QAAQ,CAAA;AAQjD,SAAS,QAAQ,KAAA,EAAkC;AACjD,EAAA,MAAM,CAAC,KAAK,CAAA,GAAIvB,kBAAA,CAAW,KAAA,EAAO;AAAA,IAChC,aAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,iBAAA,GAAoB,cAAA,CAAe,QAAA,EAAU,KAAA,CAAM,WAAW,CAAA;AACpE,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,KAAA,CAAM,WAAW,CAAA;AACpD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,qBAAoC,IAAI,CAAA;AACtE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,qBAAoC,IAAI,CAAA;AACtE,EAAA,MAAM,IAAA,GAAO,MAAM,KAAA,CAAM,IAAA,IAAQ,KAAA;AACjC,EAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAmB,KAAA,CAAM,eAAe,KAAK,CAAA;AAGvE,EAAAG,oBAAA,CAAa,MAAM;AACjB,IAAA,IAAI,iBAAA,CAAkB,IAAA,KAAS,KAAA,EAAO,gBAAA,CAAiB,KAAK,CAAA;AAC5D,IAAAC,iBAAA,CAAU,MAAM,gBAAA,CAAiB,KAAK,CAAC,CAAA;AAAA,EACzC,CAAC,CAAA;AAED,EAAA,uBACE,KAAA,CAAA,aAAA,CAACC,aAAA,EAAA,EAAQ,GAAG,WAAA,EAAA,kBACV,KAAA,CAAA,aAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,OAAO,KAAA,CAAM,WAAA;AAAA,MACb,MAAM,IAAA,EAAK;AAAA,MACX,YAAA,EAAc,gBAAA;AAAA,MACd,SAAS,OAAA,EAAQ;AAAA,MACjB,eAAA,EAAiB;AAAA,KAAA;AAAA,oBAEjB,KAAA,CAAA,aAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,OAAO,KAAA,CAAM,WAAA;AAAA,QACb,WAAWkB,WAAA,EAAS;AAAA,QACpB,WAAWA,WAAA,EAAS;AAAA,QACpB,SAAS,OAAA,EAAQ;AAAA,QACjB,eAAA,EAAiB;AAAA,OAAA;AAAA,MAEhB,KAAA,CAAM;AAAA;AACT,GAEJ,CAAA;AAEJ;AAEA,OAAA,CAAQ,WAAA,GAAc,QAAA;AAMtB,IAAM,gBAAA,GAAmB,gBAAA;AAIzB,SAAS,eAAe,OAAA,EAA2C;AACjE,EAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAIxB,mBAAW,OAAA,EAAS;AAAA,IACxC,aAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,gBAAA,EAAkB,KAAA,CAAM,WAAW,CAAA;AAClE,EAAA,MAAM,WAAA,GAAc,kBAAA,CAAmB,gBAAA,EAAkB,KAAA,CAAM,WAAW,CAAA;AAC1E,EAAA,MAAM,UAAA,GAAa,iBAAA,CAAkB,gBAAA,EAAkB,KAAA,CAAM,WAAW,CAAA;AACxE,EAAA,MAAM,cAAA,GAAiB,qBAAA;AAAA,IACrB,gBAAA;AAAA,IACA,KAAA,CAAM;AAAA,GACR;AACA,EAAA,IAAI,YAAA,GAA8B,IAAA;AAElC,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,IAAI,YAAA,EAAc,MAAA,CAAO,YAAA,CAAa,YAAY,CAAA;AAClD,IAAA,YAAA,GAAe,IAAA;AAAA,EACjB,CAAA;AAEA,EAAAK,iBAAA,CAAU,MAAM;AACd,IAAA,cAAA,EAAe;AACf,IAAA,MAAA,CAAO,YAAA,CAAa,eAAe,oBAAoB,CAAA;AACvD,IAAA,cAAA,CAAe,2BAA2B,IAAI,CAAA;AAAA,EAChD,CAAC,CAAA;AAED,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,UAAA,EAAA,EAAW,WAAA,EAAa,KAAA,CAAM,WAAA,EAAA,kBAC7B,KAAA,CAAA,aAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,IAAI,UAAA,CAAW,SAAA;AAAA,MACf,eAAA,EAAc,MAAA;AAAA,MACd,iBAAe,OAAA,CAAQ,IAAA;AAAA,MACvB,iBAAe,UAAA,CAAW,SAAA;AAAA,MAC1B,YAAA,EAAY,YAAA,CAAa,OAAA,CAAQ,IAAI,CAAA;AAAA,MACpC,GAAG,IAAA;AAAA,MACJ,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,GAAA,EAAKO,qBAAA;AAAA,QAAU,KAAA,CAAM,GAAA;AAAA,QAAK,CAAC,EAAA,KACzB,UAAA,CAAW,eAAA,CAAgB,EAAoB;AAAA,OACjD;AAAA,MACA,OAAA,EAASC,8BAAA;AAAA,QACP,KAAA,CAAM,OAAA;AAAA,QACN,CAAC,KAAA,KAAsB;AACrB,UAAA,IAAI,IAAA,CAAK,QAAA,IAAY,KAAA,CAAM,gBAAA,EAAkB;AAC7C,UAAC,KAAA,CAAM,cAA8B,KAAA,EAAM;AAC3C,UAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,EAAM,OAAA,CAAQ,aAAa,IAAI,CAAA;AAAA,QAC9C;AAAA,OACF;AAAA,MACA,aAAA,EAAeA,8BAAA;AAAA,QACb,KAAA,CAAM,aAAA;AAAA,QACN,SAAA,CAAU,CAAC,KAAA,KAAwB;AACjC,UAAA,cAAA,CAAe,YAAY,KAAK,CAAA;AAChC,UAAA,IAAI,MAAM,gBAAA,EAAkB;AAC5B,UAAA,IAAI,CAAC,IAAA,CAAK,QAAA,IAAY,CAAC,OAAA,CAAQ,IAAA,IAAQ,CAAC,YAAA,EAAc;AACpD,YAAA,cAAA,CAAe,2BAA2B,IAAI,CAAA;AAC9C,YAAA,YAAA,GAAe,MAAA,CAAO,WAAW,MAAM;AACrC,cAAA,OAAA,CAAQ,aAAa,IAAI,CAAA;AACzB,cAAA,cAAA,EAAe;AAAA,YACjB,GAAG,GAAG,CAAA;AAAA,UACR;AAAA,QACF,CAAC;AAAA,OACH;AAAA,MACA,cAAA,EAAgBA,8BAAA;AAAA,QACd,KAAA,CAAM,cAAA;AAAA,QACN,SAAA,CAAU,CAAC,KAAA,KAAwB;AACjC,UAAA,cAAA,EAAe;AAEf,UAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,OAAA,EAAS,qBAAA,EAAsB;AAC3D,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,OAAA,EAAS,OAAA,CAAQ,IAAA;AACtC,YAAA,MAAM,YAAY,IAAA,KAAS,OAAA;AAC3B,YAAA,MAAM,KAAA,GAAQ,YAAY,EAAA,GAAK,CAAA;AAC/B,YAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,SAAA,GAAY,MAAA,GAAS,OAAO,CAAA;AAChE,YAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,SAAA,GAAY,OAAA,GAAU,MAAM,CAAA;AAE/D,YAAA,cAAA,CAAe,0BAAA,CAA2B;AAAA,cACxC,IAAA,EAAM;AAAA,gBACJ,EAAE,CAAA,EAAG,KAAA,CAAM,UAAU,KAAA,EAAO,CAAA,EAAG,MAAM,OAAA,EAAQ;AAAA,gBAC7C,EAAE,CAAA,EAAG,eAAA,EAAiB,CAAA,EAAG,YAAY,GAAA,EAAI;AAAA,gBACzC,EAAE,CAAA,EAAG,cAAA,EAAgB,CAAA,EAAG,YAAY,GAAA,EAAI;AAAA,gBACxC,EAAE,CAAA,EAAG,cAAA,EAAgB,CAAA,EAAG,YAAY,MAAA,EAAO;AAAA,gBAC3C,EAAE,CAAA,EAAG,eAAA,EAAiB,CAAA,EAAG,YAAY,MAAA;AAAO,eAC9C;AAAA,cACA;AAAA,aACD,CAAA;AAED,YAAA,MAAA,CAAO,YAAA,CAAa,eAAe,oBAAoB,CAAA;AACvD,YAAA,cAAA,CAAe,yBAAA;AAAA,cACb,MAAA,CAAO,UAAA;AAAA,gBACL,MAAM,cAAA,CAAe,0BAAA,CAA2B,IAAI,CAAA;AAAA,gBACpD;AAAA;AACF,aACF;AAAA,UACF,CAAA,MAAO;AACL,YAAA,cAAA,CAAe,eAAe,KAAK,CAAA;AACnC,YAAA,IAAI,MAAM,gBAAA,EAAkB;AAC5B,YAAA,cAAA,CAAe,2BAA2B,IAAI,CAAA;AAAA,UAChD;AAAA,QACF,CAAC;AAAA,OACH;AAAA,MACA,SAAA,EAAWA,8BAAA;AAAA,QACT,KAAA,CAAM,SAAA;AAAA,QACN,CAAC,KAAA,KAAyB;AACxB,UAAA,MAAM,aAAA,GAAgB,eAAe,SAAA,KAAc,EAAA;AACnD,UAAA,IAAI,IAAA,CAAK,QAAA,IAAa,aAAA,IAAiB,KAAA,CAAM,QAAQ,GAAA,EAAM;AAC3D,UAAA,IAAI,cAAc,WAAA,CAAY,GAAG,EAAE,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,EAAG;AACtD,YAAA,OAAA,CAAQ,aAAa,IAAI,CAAA;AACzB,YAAA,OAAA,CAAQ,SAAS,KAAA,EAAM;AACvB,YAAA,KAAA,CAAM,cAAA,EAAe;AAAA,UACvB;AAAA,QACF;AAAA;AACF;AAAA,GAEJ,CAAA;AAEJ;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAM7B,IAAM,gBAAA,GAAmB,gBAAA;AAiBzB,SAAS,eAAe,OAAA,EAA2C;AACjE,EAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAIb,mBAAW,OAAA,EAAS;AAAA,IACxC,aAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,gBAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB,gBAAA,CAAiB,YAAA,EAAc,KAAA,CAAM,WAAW,CAAA;AACtE,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,YAAA,EAAc,KAAA,CAAM,WAAW,CAAA;AAC9D,EAAA,MAAM,WAAA,GAAc,kBAAA,CAAmB,YAAA,EAAc,KAAA,CAAM,WAAW,CAAA;AACtE,EAAA,MAAM,UAAA,GAAa,iBAAA,CAAkB,gBAAA,EAAkB,KAAA,CAAM,WAAW,CAAA;AACxE,EAAA,MAAM,UAAA,GAAa,MAAM,KAAA,CAAM,UAAA,IAAc,aAAA,CAAc,UAAA;AAC3D,EAAA,IAAI,UAAA;AAEJ,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,WAAW,QAAA,EAAX,EAAoB,OAAO,KAAA,CAAM,WAAA,EAAA,sCAC/BQ,iBAAA,EAAA,EAAS,OAAA,EAAS,YAAW,IAAK,OAAA,CAAQ,wBACzC,KAAA,CAAA,aAAA,CAAC,UAAA,CAAW,MAAX,EAAgB,KAAA,EAAO,MAAM,WAAA,EAAA,kBAC5B,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,IAAI,UAAA,CAAW,SAAA;AAAA,MACf,mBAAiB,UAAA,CAAW,SAAA;AAAA,MAC3B,GAAG,IAAA;AAAA,MACJ,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,GAAA,EAAKI,qBAAA,CAAU,KAAA,CAAM,GAAA,EAAK,CAAC,EAAA,KAAoB;AAC7C,QAAA,UAAA,GAAa,EAAA;AAAA,MACf,CAAC,CAAA;AAAA,MACD,KAAA,EAAM,OAAA;AAAA,MACN,IAAA,EAAM,WAAA,CAAY,GAAA,KAAQ,KAAA,GAAQ,MAAA,GAAS,OAAA;AAAA,MAC3C,2BAAA,EAA6B,KAAA;AAAA,MAC7B,oBAAA,EAAsB,KAAA;AAAA,MACtB,SAAA,EAAW,KAAA;AAAA,MACX,eAAA,EAAiB,CAAC,KAAA,KAAiB;AAEjC,QAAA,IAAI,WAAA,CAAY,eAAA,EAAiB,UAAA,EAAY,KAAA,EAAM;AACnD,QAAA,KAAA,CAAM,cAAA,EAAe;AAAA,MACvB,CAAA;AAAA,MACA,gBAAA,EAAkB,CAAC,KAAA,KAAiB,KAAA,CAAM,cAAA,EAAe;AAAA,MACzD,cAAA,EAAgBC,8BAAA;AAAA,QACd,KAAA,CAAM,cAAA;AAAA,QACN,CAAC,KAAA,KAAe;AACd,UAAA,IAAI,KAAA,CAAM,WAAW,UAAA,CAAW,OAAA;AAC9B,YAAA,OAAA,CAAQ,aAAa,KAAK,CAAA;AAAA,QAC9B;AAAA,OACF;AAAA,MACA,eAAA,EAAiBA,8BAAA;AAAA,QACf,KAAA,CAAM,eAAA;AAAA,QACN,CAAC,KAAA,KAAyB;AACxB,UAAA,WAAA,CAAY,OAAA,EAAQ;AACpB,UAAA,KAAA,CAAM,cAAA,EAAe;AAAA,QACvB;AAAA,OACF;AAAA,MACA,SAAA,EAAWA,8BAAA;AAAA,QACT,KAAA,CAAM,SAAA;AAAA,QACN,CAAC,KAAA,KAAyB;AACxB,UAAA,MAAM,eAAA,GACJ,KAAA,CAAM,aAAA,CACN,QAAA,CAAS,MAAM,MAAqB,CAAA;AACtC,UAAA,MAAM,UAAA,GAAa,cAAA,CAAe,WAAA,CAAY,GAAG,CAAA,CAAE,QAAA;AAAA,YACjD,KAAA,CAAM;AAAA,WACR;AACA,UAAA,IAAI,mBAAmB,UAAA,EAAY;AACjC,YAAA,OAAA,CAAQ,aAAa,KAAK,CAAA;AAC1B,YAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAC1B,YAAA,KAAA,CAAM,cAAA,EAAe;AAAA,UACvB;AAAA,QACF;AAAA;AACF;AAAA,GAEJ,CACF,CACF,CAAA;AAEJ;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAM7B,SAAS,aAAa,IAAA,EAAe;AACnC,EAAA,OAAO,OAAO,MAAA,GAAS,QAAA;AACzB;AAEA,SAAS,gBAAgB,OAAA,EAAoD;AAC3E,EAAA,OAAO,OAAA,KAAY,eAAA;AACrB;AAEA,SAAS,gBAAgB,OAAA,EAAuB;AAC9C,EAAA,OAAO,eAAA,CAAgB,OAAO,CAAA,GAC1B,eAAA,GACA,UACE,SAAA,GACA,WAAA;AACR;AAEA,SAAS,WAAW,UAAA,EAA2B;AAC7C,EAAA,MAAM,6BAA6B,QAAA,CAAS,aAAA;AAC5C,EAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,IAAA,IAAI,cAAc,0BAAA,EAA4B;AAC9C,IAAA,SAAA,CAAU,KAAA,EAAM;AAChB,IAAA,IAAI,QAAA,CAAS,kBAAkB,0BAAA,EAA4B;AAAA,EAC7D;AACF;AAMA,SAAS,SAAA,CAAa,OAAY,UAAA,EAAoB;AACpD,EAAA,OAAO,KAAA,CAAM,GAAA;AAAA,IACX,CAAC,CAAA,EAAG,KAAA,KAAU,OAAO,UAAA,GAAa,KAAA,IAAS,MAAM,MAAM;AAAA,GACzD;AACF;AAMA,SAAS,YAAA,CAAa,MAAA,EAAkB,MAAA,EAAgB,YAAA,EAAuB;AAC7E,EAAA,MAAM,UAAA,GACJ,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,MAAM,IAAA,CAAK,MAAM,CAAA,CAAE,KAAA,CAAM,CAAC,IAAA,KAAS,IAAA,KAAS,MAAA,CAAO,CAAC,CAAC,CAAA;AAC5E,EAAA,MAAM,gBAAA,GAAmB,UAAA,GAAa,MAAA,CAAO,CAAC,CAAA,GAAK,MAAA;AACnD,EAAA,MAAM,iBAAA,GAAoB,YAAA,GAAe,MAAA,CAAO,OAAA,CAAQ,YAAY,CAAA,GAAI,EAAA;AACxE,EAAA,IAAI,gBAAgB,SAAA,CAAU,MAAA,EAAQ,KAAK,GAAA,CAAI,iBAAA,EAAmB,CAAC,CAAC,CAAA;AACpE,EAAA,MAAM,mBAAA,GAAsB,iBAAiB,MAAA,KAAW,CAAA;AACxD,EAAA,IAAI,mBAAA;AACF,IAAA,aAAA,GAAgB,aAAA,CAAc,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,YAAY,CAAA;AAChE,EAAA,MAAM,YAAY,aAAA,CAAc,IAAA;AAAA,IAAK,CAAC,UACpC,KAAA,CAAM,WAAA,GAAc,UAAA,CAAW,gBAAA,CAAiB,aAAa;AAAA,GAC/D;AACA,EAAA,OAAO,SAAA,KAAc,eAAe,SAAA,GAAY,MAAA;AAClD;AAWA,SAAS,gBAAA,CAAiB,OAAc,OAAA,EAAkB;AACxD,EAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAE,GAAI,KAAA;AACjB,EAAA,IAAI,MAAA,GAAS,KAAA;AACb,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,MAAA,GAAS,GAAG,CAAA,GAAI,OAAA,CAAQ,MAAA,EAAQ,CAAA,GAAI,CAAA,EAAA,EAAK;AACnE,IAAA,MAAM,EAAA,GAAK,QAAQ,CAAC,CAAA;AACpB,IAAA,MAAM,EAAA,GAAK,QAAQ,CAAC,CAAA;AACpB,IAAA,MAAM,KAAK,EAAA,CAAG,CAAA;AACd,IAAA,MAAM,KAAK,EAAA,CAAG,CAAA;AACd,IAAA,MAAM,KAAK,EAAA,CAAG,CAAA;AACd,IAAA,MAAM,KAAK,EAAA,CAAG,CAAA;AAEd,IAAA,MAAM,SAAA,GACJ,EAAA,GAAK,CAAA,KAAM,EAAA,GAAK,CAAA,IAAK,CAAA,GAAA,CAAM,EAAA,GAAK,EAAA,KAAO,CAAA,GAAI,EAAA,CAAA,IAAQ,EAAA,GAAK,EAAA,CAAA,GAAM,EAAA;AAChE,IAAA,IAAI,SAAA,WAAoB,CAAC,MAAA;AAAA,EAC3B;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,oBAAA,CAAqB,OAAqB,IAAA,EAAgB;AACjE,EAAA,IAAI,CAAC,MAAM,OAAO,KAAA;AAClB,EAAA,MAAM,YAAY,EAAE,CAAA,EAAG,MAAM,OAAA,EAAS,CAAA,EAAG,MAAM,OAAA,EAAQ;AACvD,EAAA,OAAO,gBAAA,CAAiB,WAAW,IAAI,CAAA;AACzC;AAEA,SAAS,UACP,OAAA,EACoB;AACpB,EAAA,OAAO,CAAC,KAAA,KACN,KAAA,CAAM,gBAAgB,OAAA,GAAU,OAAA,CAAQ,KAAK,CAAA,GAAI,MAAA;AACrD;AAMA,IAAM,IAAA,GAAO;AACb,IAAM,MAAA,GAAS;AACf,IAAM,YAAA,GAAe;AACrB,IAAM,OAAA,GAAU;AAChB,IAAM,KAAA,GAAQ;AACd,IAAM,KAAA,GAAQ;AACd,IAAM,IAAA,GAAO;AACb,IAAM,YAAA,GAAe;AACrB,IAAM,UAAA,GAAa;AACnB,IAAM,SAAA,GAAY;AAClB,IAAM,aAAA,GAAgB;AACtB,IAAM,SAAA,GAAY;AAClB,IAAM,KAAA,GAAQ;AACd,IAAM,GAAA,GAAM;AACZ,IAAM,UAAA,GAAa;AACnB,IAAM,UAAA,GAAa","file":"index.cjs","sourcesContent":["import {\n type JSX,\n createSignal,\n createEffect,\n onCleanup,\n onMount,\n splitProps,\n Show,\n} from \"solid-js\";\nimport { composeEventHandlers } from \"@radix-solid-js/primitive\";\nimport { createCollection } from \"@radix-solid-js/collection\";\nimport { mergeRefs } from \"@radix-solid-js/compose-refs\";\nimport { createContextScope, type Scope } from \"@radix-solid-js/context\";\nimport { useDirection } from \"@radix-solid-js/direction\";\nimport { DismissableLayer } from \"@radix-solid-js/dismissable-layer\";\nimport { useFocusGuards } from \"@radix-solid-js/focus-guards\";\nimport { FocusScope } from \"@radix-solid-js/focus-scope\";\nimport { createId } from \"@radix-solid-js/id\";\nimport {\n createPopperScope,\n Popper,\n PopperAnchor,\n PopperContent,\n PopperArrow,\n} from \"@radix-solid-js/popper\";\nimport { Portal as PortalPrimitive } from \"@radix-solid-js/portal\";\nimport { Presence } from \"@radix-solid-js/presence\";\nimport {\n Primitive,\n dispatchDiscreteCustomEvent,\n} from \"@radix-solid-js/primitive-component\";\nimport {\n createRovingFocusGroupScope,\n RovingFocusGroup,\n RovingFocusGroupItem,\n} from \"@radix-solid-js/roving-focus\";\nimport { hideOthers } from \"aria-hidden\";\n\ntype Direction = \"ltr\" | \"rtl\";\n\nconst SELECTION_KEYS = [\"Enter\", \" \"];\nconst FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nconst LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nconst FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nconst SUB_OPEN_KEYS: Record<Direction, string[]> = {\n ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n rtl: [...SELECTION_KEYS, \"ArrowLeft\"],\n};\nconst SUB_CLOSE_KEYS: Record<Direction, string[]> = {\n ltr: [\"ArrowLeft\"],\n rtl: [\"ArrowRight\"],\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Menu\n * -----------------------------------------------------------------------------------------------*/\n\nconst MENU_NAME = \"Menu\";\n\ntype ItemData = { disabled: boolean; textValue: string };\nconst [Collection, useCollection, createCollectionScope] = createCollection<\n HTMLElement,\n ItemData\n>(MENU_NAME);\n\ntype ScopedProps<P> = P & { __scopeMenu?: Scope };\nconst [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n createCollectionScope,\n createPopperScope,\n createRovingFocusGroupScope,\n]);\nconst usePopperScope = createPopperScope();\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype MenuContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n content: HTMLDivElement | null;\n onContentChange(content: HTMLDivElement | null): void;\n};\n\nconst [MenuProvider, useMenuContext] =\n createMenuContext<MenuContextValue>(MENU_NAME);\n\ntype MenuRootContextValue = {\n onClose(): void;\n isUsingKeyboard: boolean;\n onIsUsingKeyboardChange(value: boolean): void;\n dir: Direction;\n modal: boolean;\n};\n\nconst [MenuRootProvider, useMenuRootContext] =\n createMenuContext<MenuRootContextValue>(MENU_NAME);\n\ninterface MenuProps {\n children?: JSX.Element;\n open?: boolean;\n onOpenChange?(open: boolean): void;\n dir?: Direction;\n modal?: boolean;\n}\n\nfunction Menu(props: ScopedProps<MenuProps>) {\n const [local] = splitProps(props, [\n \"__scopeMenu\",\n \"children\",\n \"open\",\n \"onOpenChange\",\n \"dir\",\n \"modal\",\n ]);\n\n const popperScope = usePopperScope(local.__scopeMenu);\n const [content, setContent] = createSignal<HTMLDivElement | null>(null);\n const [isUsingKeyboard, setIsUsingKeyboard] = createSignal(false);\n const direction = useDirection(local.dir);\n\n const open = () => local.open ?? false;\n const modal = () => local.modal ?? true;\n const handleOpenChange = (value: boolean) => local.onOpenChange?.(value);\n\n createEffect(() => {\n const handleKeyDown = () => {\n setIsUsingKeyboard(true);\n document.addEventListener(\"pointerdown\", handlePointer, {\n capture: true,\n once: true,\n });\n document.addEventListener(\"pointermove\", handlePointer, {\n capture: true,\n once: true,\n });\n };\n const handlePointer = () => setIsUsingKeyboard(false);\n document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n onCleanup(() => {\n document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n document.removeEventListener(\"pointerdown\", handlePointer, {\n capture: true,\n });\n document.removeEventListener(\"pointermove\", handlePointer, {\n capture: true,\n });\n });\n });\n\n return (\n <Popper {...popperScope}>\n <MenuProvider\n scope={local.__scopeMenu}\n open={open()}\n onOpenChange={handleOpenChange}\n content={content()}\n onContentChange={setContent}\n >\n <MenuRootProvider\n scope={local.__scopeMenu}\n onClose={() => handleOpenChange(false)}\n isUsingKeyboard={isUsingKeyboard()}\n onIsUsingKeyboardChange={setIsUsingKeyboard}\n dir={direction as unknown as Direction}\n modal={modal()}\n >\n {local.children}\n </MenuRootProvider>\n </MenuProvider>\n </Popper>\n );\n}\n\nMenu.displayName = MENU_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuAnchor\n * -----------------------------------------------------------------------------------------------*/\n\nconst ANCHOR_NAME = \"MenuAnchor\";\n\ninterface MenuAnchorProps extends JSX.HTMLAttributes<HTMLDivElement> {\n virtualRef?: { getBoundingClientRect(): DOMRect };\n ref?: (el: HTMLElement) => void;\n}\n\nfunction MenuAnchor(inProps: ScopedProps<MenuAnchorProps>) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\", \"ref\"]);\n const popperScope = usePopperScope(local.__scopeMenu);\n return <PopperAnchor {...popperScope} {...rest} ref={local.ref} />;\n}\n\nMenuAnchor.displayName = ANCHOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = \"MenuPortal\";\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] =\n createMenuContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n });\n\ninterface MenuPortalProps {\n children?: JSX.Element;\n container?: Element | DocumentFragment | null;\n forceMount?: true;\n}\n\nfunction MenuPortal(props: ScopedProps<MenuPortalProps>) {\n const [local] = splitProps(props, [\n \"__scopeMenu\",\n \"forceMount\",\n \"children\",\n \"container\",\n ]);\n const context = useMenuContext(PORTAL_NAME, local.__scopeMenu);\n return (\n <PortalProvider scope={local.__scopeMenu} forceMount={local.forceMount}>\n <Presence present={local.forceMount || context.open}>\n <PortalPrimitive container={local.container}>\n {local.children}\n </PortalPrimitive>\n </Presence>\n </PortalProvider>\n );\n}\n\nMenuPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = \"MenuContent\";\n\ntype MenuContentContextValue = {\n onItemEnter(event: PointerEvent): void;\n onItemLeave(event: PointerEvent): void;\n onTriggerLeave(event: PointerEvent): void;\n searchRef: string;\n onSearchChange(value: string): void;\n pointerGraceTimerRef: number;\n onPointerGraceTimerChange(value: number): void;\n onPointerGraceIntentChange(intent: GraceIntent | null): void;\n};\n\nconst [MenuContentProvider, useMenuContentContext] =\n createMenuContext<MenuContentContextValue>(CONTENT_NAME);\n\ninterface MenuContentProps extends MenuContentImplProps {\n forceMount?: true;\n}\n\nfunction MenuContent(inProps: ScopedProps<MenuContentProps>) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\", \"forceMount\"]);\n const portalContext = usePortalContext(CONTENT_NAME, local.__scopeMenu);\n const context = useMenuContext(CONTENT_NAME, local.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, local.__scopeMenu);\n const forceMount = () => local.forceMount ?? portalContext.forceMount;\n\n return (\n <Collection.Provider scope={local.__scopeMenu}>\n <Presence present={forceMount() || context.open}>\n <Collection.Slot scope={local.__scopeMenu}>\n <Show\n when={rootContext.modal}\n fallback={\n <MenuRootContentNonModal\n {...rest}\n __scopeMenu={local.__scopeMenu}\n />\n }\n >\n <MenuRootContentModal {...rest} __scopeMenu={local.__scopeMenu} />\n </Show>\n </Collection.Slot>\n </Presence>\n </Collection.Provider>\n );\n}\n\nMenuContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ninterface MenuRootContentTypeProps extends Omit<\n MenuContentImplProps,\n | \"onOpenAutoFocus\"\n | \"onDismiss\"\n | \"disableOutsidePointerEvents\"\n | \"disableOutsideScroll\"\n | \"trapFocus\"\n> {}\n\nfunction MenuRootContentModal(inProps: ScopedProps<MenuRootContentTypeProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"ref\",\n \"onFocusOutside\",\n ]);\n const context = useMenuContext(CONTENT_NAME, local.__scopeMenu);\n let contentRef: HTMLDivElement | undefined;\n\n // Hide everything from ARIA except the MenuContent\n createEffect(() => {\n if (contentRef) {\n const cleanup = hideOthers(contentRef);\n onCleanup(() => cleanup?.());\n }\n });\n\n return (\n <MenuContentImpl\n {...rest}\n __scopeMenu={local.__scopeMenu}\n ref={mergeRefs(local.ref, (el: HTMLElement) => {\n contentRef = el as HTMLDivElement;\n })}\n trapFocus={context.open}\n disableOutsidePointerEvents={context.open}\n disableOutsideScroll\n onFocusOutside={composeEventHandlers(local.onFocusOutside, (event: any) =>\n event.preventDefault()\n )}\n onDismiss={() => context.onOpenChange(false)}\n />\n );\n}\n\nfunction MenuRootContentNonModal(\n inProps: ScopedProps<MenuRootContentTypeProps>\n) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\"]);\n const context = useMenuContext(CONTENT_NAME, local.__scopeMenu);\n return (\n <MenuContentImpl\n {...rest}\n __scopeMenu={local.__scopeMenu}\n trapFocus={false}\n disableOutsidePointerEvents={false}\n disableOutsideScroll={false}\n onDismiss={() => context.onOpenChange(false)}\n />\n );\n}\n\n/* ---------------------------------------------------------------------------------------------- */\n\ninterface MenuContentImplProps extends JSX.HTMLAttributes<HTMLDivElement> {\n ref?: (el: HTMLElement) => void;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n sideOffset?: number;\n align?: \"start\" | \"center\" | \"end\";\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | Element[] | null;\n collisionPadding?:\n | number\n | Partial<Record<\"top\" | \"right\" | \"bottom\" | \"left\", number>>;\n arrowPadding?: number;\n sticky?: \"partial\" | \"always\";\n hideWhenDetached?: boolean;\n onOpenAutoFocus?: (event: Event) => void;\n onCloseAutoFocus?: (event: Event) => void;\n disableOutsidePointerEvents?: boolean;\n disableOutsideScroll?: boolean;\n trapFocus?: boolean;\n loop?: boolean;\n onEntryFocus?: (event: Event) => void;\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n onPointerDownOutside?: (event: any) => void;\n onFocusOutside?: (event: any) => void;\n onInteractOutside?: (event: any) => void;\n onDismiss?: () => void;\n}\n\nfunction MenuContentImpl(inProps: ScopedProps<MenuContentImplProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"ref\",\n \"loop\",\n \"trapFocus\",\n \"onOpenAutoFocus\",\n \"onCloseAutoFocus\",\n \"disableOutsidePointerEvents\",\n \"disableOutsideScroll\",\n \"onEntryFocus\",\n \"onEscapeKeyDown\",\n \"onPointerDownOutside\",\n \"onFocusOutside\",\n \"onInteractOutside\",\n \"onDismiss\",\n \"side\",\n \"sideOffset\",\n \"align\",\n \"alignOffset\",\n \"avoidCollisions\",\n \"collisionBoundary\",\n \"collisionPadding\",\n \"arrowPadding\",\n \"sticky\",\n \"hideWhenDetached\",\n \"style\",\n \"onKeyDown\",\n \"onBlur\",\n \"onPointerMove\",\n ]);\n\n const context = useMenuContext(CONTENT_NAME, local.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, local.__scopeMenu);\n const popperScope = usePopperScope(local.__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(local.__scopeMenu);\n const getItems = useCollection(local.__scopeMenu);\n\n const [currentItemId, setCurrentItemId] = createSignal<string | null>(null);\n let contentRef: HTMLDivElement | undefined;\n let timerRef = 0;\n let searchRef = \"\";\n let pointerGraceTimerRef = 0;\n let pointerGraceIntentRef: GraceIntent | null = null;\n let pointerDirRef: Side = \"right\";\n let lastPointerXRef = 0;\n\n // Prevent body scroll when disableOutsideScroll is true (e.g., modal context menus)\n createEffect(() => {\n if (local.disableOutsideScroll) {\n const body = document.body;\n const scrollbarWidth =\n window.innerWidth - document.documentElement.clientWidth;\n const originalOverflow = body.style.overflow;\n const originalPaddingRight = body.style.paddingRight;\n\n body.style.overflow = \"hidden\";\n if (scrollbarWidth > 0) {\n body.style.paddingRight = `${scrollbarWidth}px`;\n }\n\n onCleanup(() => {\n body.style.overflow = originalOverflow;\n body.style.paddingRight = originalPaddingRight;\n });\n }\n });\n\n const handleTypeaheadSearch = (key: string) => {\n const search = searchRef + key;\n const items = getItems().filter((item: any) => !item.disabled);\n const currentItem = document.activeElement;\n const currentMatch = items.find(\n (item: any) => item.ref === currentItem\n )?.textValue;\n const values = items.map((item: any) => item.textValue);\n const nextMatch = getNextMatch(values, search, currentMatch);\n const newItem = items.find(\n (item: any) => item.textValue === nextMatch\n )?.ref;\n\n // Reset searchRef 1 second after it was last updated\n (function updateSearch(value: string) {\n searchRef = value;\n window.clearTimeout(timerRef);\n if (value !== \"\")\n timerRef = window.setTimeout(() => updateSearch(\"\"), 1000);\n })(search);\n\n if (newItem) {\n setTimeout(() => (newItem as HTMLElement).focus());\n }\n };\n\n onCleanup(() => window.clearTimeout(timerRef));\n\n // Make sure the whole tree has focus guards\n useFocusGuards();\n\n const isPointerMovingToSubmenu = (event: PointerEvent) => {\n const isMovingTowards = pointerDirRef === pointerGraceIntentRef?.side;\n return (\n isMovingTowards &&\n isPointerInGraceArea(event, pointerGraceIntentRef?.area)\n );\n };\n\n return (\n <MenuContentProvider\n scope={local.__scopeMenu}\n searchRef={searchRef}\n onSearchChange={(value: string) => {\n searchRef = value;\n }}\n onItemEnter={(event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n }}\n onItemLeave={(event) => {\n if (isPointerMovingToSubmenu(event)) return;\n contentRef?.focus();\n setCurrentItemId(null);\n }}\n onTriggerLeave={(event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n }}\n pointerGraceTimerRef={pointerGraceTimerRef}\n onPointerGraceTimerChange={(value: number) => {\n pointerGraceTimerRef = value;\n }}\n onPointerGraceIntentChange={(intent) => {\n pointerGraceIntentRef = intent;\n }}\n >\n <FocusScope\n trapped={local.trapFocus}\n onMountAutoFocus={composeEventHandlers(\n local.onOpenAutoFocus,\n (event: Event) => {\n // when opening, explicitly focus the content area only and leave\n // `onEntryFocus` in control of focusing first item\n event.preventDefault();\n contentRef?.focus({ preventScroll: true });\n }\n )}\n onUnmountAutoFocus={local.onCloseAutoFocus}\n >\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={local.disableOutsidePointerEvents}\n onEscapeKeyDown={local.onEscapeKeyDown}\n onPointerDownOutside={local.onPointerDownOutside}\n onFocusOutside={local.onFocusOutside}\n onInteractOutside={local.onInteractOutside}\n onDismiss={local.onDismiss}\n >\n <RovingFocusGroup\n asChild\n {...rovingFocusGroupScope}\n dir={rootContext.dir}\n orientation=\"vertical\"\n loop={local.loop ?? false}\n currentTabStopId={currentItemId()}\n onCurrentTabStopIdChange={setCurrentItemId}\n onEntryFocus={composeEventHandlers(\n local.onEntryFocus,\n (event: Event) => {\n // only focus first item when using keyboard\n if (!rootContext.isUsingKeyboard) event.preventDefault();\n }\n )}\n preventScrollOnEntryFocus\n >\n <PopperContent\n role=\"menu\"\n aria-orientation=\"vertical\"\n data-state={getOpenState(context.open)}\n data-radix-menu-content=\"\"\n dir={rootContext.dir}\n {...popperScope}\n {...rest}\n ref={mergeRefs(local.ref, (el: HTMLElement) => {\n contentRef = el as HTMLDivElement;\n context.onContentChange(el as HTMLDivElement);\n })}\n side={local.side}\n sideOffset={local.sideOffset}\n align={local.align}\n alignOffset={local.alignOffset}\n avoidCollisions={local.avoidCollisions}\n collisionBoundary={local.collisionBoundary}\n collisionPadding={local.collisionPadding}\n arrowPadding={local.arrowPadding}\n sticky={local.sticky}\n hideWhenDetached={local.hideWhenDetached}\n style={\n {\n outline: \"none\",\n ...(typeof local.style === \"object\" ? local.style : {}),\n \"--radix-menu-content-transform-origin\":\n \"var(--radix-popper-transform-origin)\",\n \"--radix-menu-content-available-width\":\n \"var(--radix-popper-available-width)\",\n \"--radix-menu-content-available-height\":\n \"var(--radix-popper-available-height)\",\n \"--radix-menu-trigger-width\":\n \"var(--radix-popper-anchor-width)\",\n \"--radix-menu-trigger-height\":\n \"var(--radix-popper-anchor-height)\",\n } as JSX.CSSProperties\n }\n onKeyDown={composeEventHandlers(\n local.onKeyDown as any,\n (event: KeyboardEvent) => {\n // submenu key events bubble through portals. We only care about keys in this menu.\n const target = event.target as HTMLElement;\n const isKeyDownInside =\n target.closest(\"[data-radix-menu-content]\") ===\n event.currentTarget;\n const isModifierKey =\n event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n if (isKeyDownInside) {\n // menus should not be navigated using tab key so we prevent it\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && isCharacterKey)\n handleTypeaheadSearch(event.key);\n }\n // focus first/last item based on key pressed\n const content = contentRef;\n if (event.target !== content) return;\n if (!FIRST_LAST_KEYS.includes(event.key)) return;\n event.preventDefault();\n const items = getItems().filter(\n (item: any) => !item.disabled\n );\n const candidateNodes = items.map((item: any) => item.ref);\n if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n focusFirst(candidateNodes);\n }\n )}\n onBlur={composeEventHandlers(\n local.onBlur as any,\n (event: FocusEvent) => {\n // clear search buffer when leaving the menu\n if (\n !(event.currentTarget as HTMLElement).contains(\n event.target as Node\n )\n ) {\n window.clearTimeout(timerRef);\n searchRef = \"\";\n }\n }\n )}\n onPointerMove={composeEventHandlers(\n local.onPointerMove as any,\n whenMouse((event: PointerEvent) => {\n const target = event.target as HTMLElement;\n const pointerXHasChanged = lastPointerXRef !== event.clientX;\n\n if (\n (event.currentTarget as HTMLElement).contains(target) &&\n pointerXHasChanged\n ) {\n const newDir =\n event.clientX > lastPointerXRef ? \"right\" : \"left\";\n pointerDirRef = newDir;\n lastPointerXRef = event.clientX;\n }\n })\n )}\n />\n </RovingFocusGroup>\n </DismissableLayer>\n </FocusScope>\n </MenuContentProvider>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * MenuGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = \"MenuGroup\";\n\ninterface MenuGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {\n ref?: (el: HTMLElement) => void;\n}\n\nfunction MenuGroup(inProps: ScopedProps<MenuGroupProps>) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\", \"ref\"]);\n return <Primitive.div role=\"group\" {...rest} ref={local.ref} />;\n}\n\nMenuGroup.displayName = GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = \"MenuLabel\";\n\ninterface MenuLabelProps extends JSX.HTMLAttributes<HTMLDivElement> {\n ref?: (el: HTMLElement) => void;\n}\n\nfunction MenuLabel(inProps: ScopedProps<MenuLabelProps>) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\", \"ref\"]);\n return <Primitive.div {...rest} ref={local.ref} />;\n}\n\nMenuLabel.displayName = LABEL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = \"MenuItem\";\nconst ITEM_SELECT = \"menu.itemSelect\";\n\ninterface MenuItemProps extends Omit<MenuItemImplProps, \"onSelect\"> {\n onSelect?: (event: Event) => void;\n}\n\nfunction MenuItem(inProps: ScopedProps<MenuItemProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"disabled\",\n \"onSelect\",\n \"ref\",\n \"onClick\",\n \"onPointerDown\",\n \"onPointerUp\",\n \"onKeyDown\",\n ]);\n const rootContext = useMenuRootContext(ITEM_NAME, local.__scopeMenu);\n const contentContext = useMenuContentContext(ITEM_NAME, local.__scopeMenu);\n let itemRef: HTMLDivElement | undefined;\n let isPointerDownRef = false;\n const disabled = () => local.disabled ?? false;\n\n const handleSelect = () => {\n const menuItem = itemRef;\n if (!disabled() && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, {\n bubbles: true,\n cancelable: true,\n });\n menuItem.addEventListener(\n ITEM_SELECT,\n (event) => local.onSelect?.(event),\n { once: true }\n );\n dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented) {\n isPointerDownRef = false;\n } else {\n rootContext.onClose();\n }\n }\n };\n\n return (\n <MenuItemImpl\n {...rest}\n __scopeMenu={local.__scopeMenu}\n ref={mergeRefs(local.ref, (el: HTMLElement) => {\n itemRef = el as HTMLDivElement;\n })}\n disabled={disabled()}\n onClick={composeEventHandlers(local.onClick as any, handleSelect)}\n onPointerDown={composeEventHandlers(local.onPointerDown as any, () => {\n isPointerDownRef = true;\n })}\n onPointerUp={composeEventHandlers(\n local.onPointerUp as any,\n (event: PointerEvent) => {\n if (!isPointerDownRef) (event.currentTarget as HTMLElement)?.click();\n }\n )}\n onKeyDown={composeEventHandlers(\n local.onKeyDown as any,\n (event: KeyboardEvent) => {\n const isTypingAhead = contentContext.searchRef !== \"\";\n if (disabled() || (isTypingAhead && event.key === \" \")) return;\n if (SELECTION_KEYS.includes(event.key)) {\n (event.currentTarget as HTMLElement).click();\n event.preventDefault();\n }\n }\n )}\n />\n );\n}\n\nMenuItem.displayName = ITEM_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ninterface MenuItemImplProps extends JSX.HTMLAttributes<HTMLDivElement> {\n ref?: (el: HTMLElement) => void;\n disabled?: boolean;\n textValue?: string;\n}\n\nfunction MenuItemImpl(inProps: ScopedProps<MenuItemImplProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"disabled\",\n \"textValue\",\n \"ref\",\n \"onPointerMove\",\n \"onPointerLeave\",\n \"onFocus\",\n \"onBlur\",\n ]);\n\n const contentContext = useMenuContentContext(ITEM_NAME, local.__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(local.__scopeMenu);\n let itemRef: HTMLDivElement | undefined;\n const [isFocused, setIsFocused] = createSignal(false);\n const [textContent, setTextContent] = createSignal(\"\");\n const disabled = () => local.disabled ?? false;\n\n // get the item's textContent as default strategy for typeahead textValue\n onMount(() => {\n if (itemRef) {\n setTextContent((itemRef.textContent ?? \"\").trim());\n }\n });\n\n return (\n <Collection.ItemSlot\n scope={local.__scopeMenu}\n disabled={disabled()}\n textValue={local.textValue ?? textContent()}\n >\n <RovingFocusGroupItem\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled()}\n >\n <Primitive.div\n role=\"menuitem\"\n data-highlighted={isFocused() ? \"\" : undefined}\n aria-disabled={disabled() || undefined}\n data-disabled={disabled() ? \"\" : undefined}\n {...rest}\n ref={mergeRefs(local.ref, (el: HTMLElement) => {\n itemRef = el as HTMLDivElement;\n })}\n onPointerMove={composeEventHandlers(\n local.onPointerMove as any,\n whenMouse((event: PointerEvent) => {\n if (disabled()) {\n contentContext.onItemLeave(event);\n } else {\n contentContext.onItemEnter(event);\n if (!event.defaultPrevented) {\n const item = event.currentTarget as HTMLElement;\n item.focus({ preventScroll: true });\n }\n }\n })\n )}\n onPointerLeave={composeEventHandlers(\n local.onPointerLeave as any,\n whenMouse((event: PointerEvent) =>\n contentContext.onItemLeave(event)\n )\n )}\n onFocus={composeEventHandlers(local.onFocus as any, () =>\n setIsFocused(true)\n )}\n onBlur={composeEventHandlers(local.onBlur as any, () =>\n setIsFocused(false)\n )}\n />\n </RovingFocusGroupItem>\n </Collection.ItemSlot>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * MenuCheckboxItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\n\ntype CheckedState = boolean | \"indeterminate\";\n\ninterface MenuCheckboxItemProps extends MenuItemProps {\n checked?: CheckedState;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nfunction MenuCheckboxItem(inProps: ScopedProps<MenuCheckboxItemProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"checked\",\n \"onCheckedChange\",\n \"onSelect\",\n ]);\n const checked = () => local.checked ?? false;\n\n return (\n <ItemIndicatorProvider scope={local.__scopeMenu} checked={checked()}>\n <MenuItem\n role=\"menuitemcheckbox\"\n aria-checked={isIndeterminate(checked()) ? \"mixed\" : checked() as boolean}\n {...(rest as any)}\n __scopeMenu={local.__scopeMenu}\n data-state={getCheckedState(checked())}\n onSelect={composeEventHandlers(\n local.onSelect,\n () =>\n local.onCheckedChange?.(\n isIndeterminate(checked()) ? true : !checked()\n ),\n { checkForDefaultPrevented: false }\n )}\n />\n </ItemIndicatorProvider>\n );\n}\n\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuRadioGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_GROUP_NAME = \"MenuRadioGroup\";\n\ntype RadioGroupContextValue = {\n value?: string;\n onValueChange?: (value: string) => void;\n};\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n createMenuContext<RadioGroupContextValue>(RADIO_GROUP_NAME, {\n value: undefined,\n onValueChange: () => {},\n });\n\ninterface MenuRadioGroupProps extends MenuGroupProps {\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nfunction MenuRadioGroup(inProps: ScopedProps<MenuRadioGroupProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"value\",\n \"onValueChange\",\n ]);\n return (\n <RadioGroupProvider\n scope={local.__scopeMenu}\n value={local.value}\n onValueChange={local.onValueChange}\n >\n <MenuGroup {...rest} __scopeMenu={local.__scopeMenu} />\n </RadioGroupProvider>\n );\n}\n\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuRadioItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_ITEM_NAME = \"MenuRadioItem\";\n\ninterface MenuRadioItemProps extends MenuItemProps {\n value: string;\n}\n\nfunction MenuRadioItem(inProps: ScopedProps<MenuRadioItemProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"value\",\n \"onSelect\",\n ]);\n const context = useRadioGroupContext(RADIO_ITEM_NAME, local.__scopeMenu);\n const checked = () => local.value === context.value;\n\n return (\n <ItemIndicatorProvider scope={local.__scopeMenu} checked={checked()}>\n <MenuItem\n role=\"menuitemradio\"\n aria-checked={checked()}\n {...rest}\n __scopeMenu={local.__scopeMenu}\n data-state={getCheckedState(checked())}\n onSelect={composeEventHandlers(\n local.onSelect,\n () => context.onValueChange?.(local.value),\n { checkForDefaultPrevented: false }\n )}\n />\n </ItemIndicatorProvider>\n );\n}\n\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuItemIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\n\ntype ItemIndicatorContextValue = { checked: CheckedState };\n\nconst [ItemIndicatorProvider, useItemIndicatorContext] =\n createMenuContext<ItemIndicatorContextValue>(ITEM_INDICATOR_NAME, {\n checked: false,\n });\n\ninterface MenuItemIndicatorProps extends JSX.HTMLAttributes<HTMLSpanElement> {\n ref?: (el: HTMLElement) => void;\n forceMount?: true;\n}\n\nfunction MenuItemIndicator(inProps: ScopedProps<MenuItemIndicatorProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"forceMount\",\n \"ref\",\n ]);\n const indicatorContext = useItemIndicatorContext(\n ITEM_INDICATOR_NAME,\n local.__scopeMenu\n );\n return (\n <Presence\n present={\n local.forceMount ||\n isIndeterminate(indicatorContext.checked) ||\n indicatorContext.checked === true\n }\n >\n <Primitive.span\n {...rest}\n ref={local.ref}\n data-state={getCheckedState(indicatorContext.checked)}\n />\n </Presence>\n );\n}\n\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuSeparator\n * -----------------------------------------------------------------------------------------------*/\n\nconst SEPARATOR_NAME = \"MenuSeparator\";\n\ninterface MenuSeparatorProps extends JSX.HTMLAttributes<HTMLDivElement> {\n ref?: (el: HTMLElement) => void;\n}\n\nfunction MenuSeparator(inProps: ScopedProps<MenuSeparatorProps>) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\", \"ref\"]);\n return (\n <Primitive.div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n {...rest}\n ref={local.ref}\n />\n );\n}\n\nMenuSeparator.displayName = SEPARATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = \"MenuArrow\";\n\ninterface MenuArrowProps extends JSX.SvgSVGAttributes<SVGSVGElement> {\n ref?: (el: SVGSVGElement) => void;\n}\n\nfunction MenuArrow(inProps: ScopedProps<MenuArrowProps>) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\"]);\n const popperScope = usePopperScope(local.__scopeMenu);\n return <PopperArrow {...popperScope} {...rest} />;\n}\n\nMenuArrow.displayName = ARROW_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuSub\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_NAME = \"MenuSub\";\n\ntype MenuSubContextValue = {\n contentId: string;\n triggerId: string;\n trigger: HTMLDivElement | null;\n onTriggerChange(trigger: HTMLDivElement | null): void;\n};\n\nconst [MenuSubProvider, useMenuSubContext] =\n createMenuContext<MenuSubContextValue>(SUB_NAME);\n\ninterface MenuSubProps {\n children?: JSX.Element;\n open?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nfunction MenuSub(props: ScopedProps<MenuSubProps>) {\n const [local] = splitProps(props, [\n \"__scopeMenu\",\n \"children\",\n \"open\",\n \"onOpenChange\",\n ]);\n\n const parentMenuContext = useMenuContext(SUB_NAME, local.__scopeMenu);\n const popperScope = usePopperScope(local.__scopeMenu);\n const [trigger, setTrigger] = createSignal<HTMLDivElement | null>(null);\n const [content, setContent] = createSignal<HTMLDivElement | null>(null);\n const open = () => local.open ?? false;\n const handleOpenChange = (value: boolean) => local.onOpenChange?.(value);\n\n // Prevent the parent menu from reopening with open submenus.\n createEffect(() => {\n if (parentMenuContext.open === false) handleOpenChange(false);\n onCleanup(() => handleOpenChange(false));\n });\n\n return (\n <Popper {...popperScope}>\n <MenuProvider\n scope={local.__scopeMenu}\n open={open()}\n onOpenChange={handleOpenChange}\n content={content()}\n onContentChange={setContent}\n >\n <MenuSubProvider\n scope={local.__scopeMenu}\n contentId={createId()}\n triggerId={createId()}\n trigger={trigger()}\n onTriggerChange={setTrigger}\n >\n {local.children}\n </MenuSubProvider>\n </MenuProvider>\n </Popper>\n );\n}\n\nMenuSub.displayName = SUB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuSubTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_TRIGGER_NAME = \"MenuSubTrigger\";\n\ninterface MenuSubTriggerProps extends MenuItemImplProps {}\n\nfunction MenuSubTrigger(inProps: ScopedProps<MenuSubTriggerProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"ref\",\n \"onClick\",\n \"onPointerMove\",\n \"onPointerLeave\",\n \"onKeyDown\",\n ]);\n\n const context = useMenuContext(SUB_TRIGGER_NAME, local.__scopeMenu);\n const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, local.__scopeMenu);\n const subContext = useMenuSubContext(SUB_TRIGGER_NAME, local.__scopeMenu);\n const contentContext = useMenuContentContext(\n SUB_TRIGGER_NAME,\n local.__scopeMenu\n );\n let openTimerRef: number | null = null;\n\n const clearOpenTimer = () => {\n if (openTimerRef) window.clearTimeout(openTimerRef);\n openTimerRef = null;\n };\n\n onCleanup(() => {\n clearOpenTimer();\n window.clearTimeout(contentContext.pointerGraceTimerRef);\n contentContext.onPointerGraceIntentChange(null);\n });\n\n return (\n <MenuAnchor __scopeMenu={local.__scopeMenu}>\n <MenuItemImpl\n id={subContext.triggerId}\n aria-haspopup=\"menu\"\n aria-expanded={context.open}\n aria-controls={subContext.contentId}\n data-state={getOpenState(context.open)}\n {...rest}\n __scopeMenu={local.__scopeMenu}\n ref={mergeRefs(local.ref, (el: HTMLElement) =>\n subContext.onTriggerChange(el as HTMLDivElement)\n )}\n onClick={composeEventHandlers(\n local.onClick as any,\n (event: MouseEvent) => {\n if (rest.disabled || event.defaultPrevented) return;\n (event.currentTarget as HTMLElement).focus();\n if (!context.open) context.onOpenChange(true);\n }\n )}\n onPointerMove={composeEventHandlers(\n local.onPointerMove as any,\n whenMouse((event: PointerEvent) => {\n contentContext.onItemEnter(event);\n if (event.defaultPrevented) return;\n if (!rest.disabled && !context.open && !openTimerRef) {\n contentContext.onPointerGraceIntentChange(null);\n openTimerRef = window.setTimeout(() => {\n context.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n })\n )}\n onPointerLeave={composeEventHandlers(\n local.onPointerLeave as any,\n whenMouse((event: PointerEvent) => {\n clearOpenTimer();\n\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n const side = context.content?.dataset.side as Side;\n const rightSide = side === \"right\";\n const bleed = rightSide ? -5 : +5;\n const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n\n contentContext.onPointerGraceIntentChange({\n area: [\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom },\n ],\n side,\n });\n\n window.clearTimeout(contentContext.pointerGraceTimerRef);\n contentContext.onPointerGraceTimerChange(\n window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n )\n );\n } else {\n contentContext.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n contentContext.onPointerGraceIntentChange(null);\n }\n })\n )}\n onKeyDown={composeEventHandlers(\n local.onKeyDown as any,\n (event: KeyboardEvent) => {\n const isTypingAhead = contentContext.searchRef !== \"\";\n if (rest.disabled || (isTypingAhead && event.key === \" \")) return;\n if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n context.onOpenChange(true);\n context.content?.focus();\n event.preventDefault();\n }\n }\n )}\n />\n </MenuAnchor>\n );\n}\n\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuSubContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_CONTENT_NAME = \"MenuSubContent\";\n\ninterface MenuSubContentProps extends Omit<\n MenuContentImplProps,\n | \"onOpenAutoFocus\"\n | \"onDismiss\"\n | \"disableOutsidePointerEvents\"\n | \"disableOutsideScroll\"\n | \"trapFocus\"\n | \"onCloseAutoFocus\"\n | \"onEntryFocus\"\n | \"side\"\n | \"align\"\n> {\n forceMount?: true;\n}\n\nfunction MenuSubContent(inProps: ScopedProps<MenuSubContentProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"forceMount\",\n \"ref\",\n \"onFocusOutside\",\n \"onEscapeKeyDown\",\n \"onKeyDown\",\n ]);\n\n const portalContext = usePortalContext(CONTENT_NAME, local.__scopeMenu);\n const context = useMenuContext(CONTENT_NAME, local.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, local.__scopeMenu);\n const subContext = useMenuSubContext(SUB_CONTENT_NAME, local.__scopeMenu);\n const forceMount = () => local.forceMount ?? portalContext.forceMount;\n let contentRef: HTMLDivElement | undefined;\n\n return (\n <Collection.Provider scope={local.__scopeMenu}>\n <Presence present={forceMount() || context.open}>\n <Collection.Slot scope={local.__scopeMenu}>\n <MenuContentImpl\n id={subContext.contentId}\n aria-labelledby={subContext.triggerId}\n {...rest}\n __scopeMenu={local.__scopeMenu}\n ref={mergeRefs(local.ref, (el: HTMLElement) => {\n contentRef = el as HTMLDivElement;\n })}\n align=\"start\"\n side={rootContext.dir === \"rtl\" ? \"left\" : \"right\"}\n disableOutsidePointerEvents={false}\n disableOutsideScroll={false}\n trapFocus={false}\n onOpenAutoFocus={(event: Event) => {\n // when opening a submenu, focus content for keyboard users only\n if (rootContext.isUsingKeyboard) contentRef?.focus();\n event.preventDefault();\n }}\n onCloseAutoFocus={(event: Event) => event.preventDefault()}\n onFocusOutside={composeEventHandlers(\n local.onFocusOutside,\n (event: any) => {\n if (event.target !== subContext.trigger)\n context.onOpenChange(false);\n }\n )}\n onEscapeKeyDown={composeEventHandlers(\n local.onEscapeKeyDown,\n (event: KeyboardEvent) => {\n rootContext.onClose();\n event.preventDefault();\n }\n )}\n onKeyDown={composeEventHandlers(\n local.onKeyDown as any,\n (event: KeyboardEvent) => {\n const isKeyDownInside = (\n event.currentTarget as HTMLElement\n ).contains(event.target as HTMLElement);\n const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(\n event.key\n );\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n subContext.trigger?.focus();\n event.preventDefault();\n }\n }\n )}\n />\n </Collection.Slot>\n </Presence>\n </Collection.Provider>\n );\n}\n\nMenuSubContent.displayName = SUB_CONTENT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Utility functions\n * -----------------------------------------------------------------------------------------------*/\n\nfunction getOpenState(open: boolean) {\n return open ? \"open\" : \"closed\";\n}\n\nfunction isIndeterminate(checked?: CheckedState): checked is \"indeterminate\" {\n return checked === \"indeterminate\";\n}\n\nfunction getCheckedState(checked: CheckedState) {\n return isIndeterminate(checked)\n ? \"indeterminate\"\n : checked\n ? \"checked\"\n : \"unchecked\";\n}\n\nfunction focusFirst(candidates: HTMLElement[]) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nfunction wrapArray<T>(array: T[], startIndex: number) {\n return array.map<T>(\n (_, index) => array[(startIndex + index) % array.length]!\n );\n}\n\n/**\n * Typeahead matching logic. Takes in all the values, the search and the current match,\n * and returns the next match (or undefined).\n */\nfunction getNextMatch(values: string[], search: string, currentMatch?: string) {\n const isRepeated =\n search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0]! : search;\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n const excludeCurrentMatch = normalizedSearch.length === 1;\n if (excludeCurrentMatch)\n wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n const nextMatch = wrappedValues.find((value) =>\n value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextMatch !== currentMatch ? nextMatch : undefined;\n}\n\ntype Point = { x: number; y: number };\ntype Polygon = Point[];\ntype Side = \"left\" | \"right\";\ntype GraceIntent = { area: Polygon; side: Side };\n\n/**\n * Determine if a point is inside of a polygon.\n * Based on https://github.com/substack/point-in-polygon\n */\nfunction isPointInPolygon(point: Point, polygon: Polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i]!;\n const jj = polygon[j]!;\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n\n const intersect =\n yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n\n return inside;\n}\n\nfunction isPointerInGraceArea(event: PointerEvent, area?: Polygon) {\n if (!area) return false;\n const cursorPos = { x: event.clientX, y: event.clientY };\n return isPointInPolygon(cursorPos, area);\n}\n\nfunction whenMouse<E extends PointerEvent>(\n handler: (event: E) => void\n): (event: E) => void {\n return (event) =>\n event.pointerType === \"mouse\" ? handler(event) : undefined;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Aliases\n * -----------------------------------------------------------------------------------------------*/\n\nconst Root = Menu;\nconst Anchor = MenuAnchor;\nconst PortalExport = MenuPortal;\nconst Content = MenuContent;\nconst Group = MenuGroup;\nconst Label = MenuLabel;\nconst Item = MenuItem;\nconst CheckboxItem = MenuCheckboxItem;\nconst RadioGroup = MenuRadioGroup;\nconst RadioItem = MenuRadioItem;\nconst ItemIndicator = MenuItemIndicator;\nconst Separator = MenuSeparator;\nconst Arrow = MenuArrow;\nconst Sub = MenuSub;\nconst SubTrigger = MenuSubTrigger;\nconst SubContent = MenuSubContent;\n\n/* -------------------------------------------------------------------------------------------------\n * Exports\n * -----------------------------------------------------------------------------------------------*/\n\nexport {\n createMenuScope,\n //\n Menu,\n MenuAnchor,\n MenuPortal,\n MenuContent,\n MenuGroup,\n MenuLabel,\n MenuItem,\n MenuCheckboxItem,\n MenuRadioGroup,\n MenuRadioItem,\n MenuItemIndicator,\n MenuSeparator,\n MenuArrow,\n MenuSub,\n MenuSubTrigger,\n MenuSubContent,\n //\n Root,\n Anchor,\n PortalExport as Portal,\n Content,\n Group,\n Label,\n Item,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Separator,\n Arrow,\n Sub,\n SubTrigger,\n SubContent,\n};\nexport type {\n MenuProps,\n MenuAnchorProps,\n MenuPortalProps,\n MenuContentProps,\n MenuGroupProps,\n MenuLabelProps,\n MenuItemProps,\n MenuCheckboxItemProps,\n MenuRadioGroupProps,\n MenuRadioItemProps,\n MenuItemIndicatorProps,\n MenuSeparatorProps,\n MenuArrowProps,\n MenuSubProps,\n MenuSubTriggerProps,\n MenuSubContentProps,\n};\n"]}
@@ -0,0 +1,183 @@
1
+ import * as _radix_solid_js_context from '@radix-solid-js/context';
2
+ import { Scope } from '@radix-solid-js/context';
3
+ import { JSX } from 'solid-js';
4
+
5
+ type Direction = "ltr" | "rtl";
6
+ type ScopedProps<P> = P & {
7
+ __scopeMenu?: Scope;
8
+ };
9
+ declare const createMenuScope: _radix_solid_js_context.CreateScope;
10
+ interface MenuProps {
11
+ children?: JSX.Element;
12
+ open?: boolean;
13
+ onOpenChange?(open: boolean): void;
14
+ dir?: Direction;
15
+ modal?: boolean;
16
+ }
17
+ declare function Menu(props: ScopedProps<MenuProps>): JSX.Element;
18
+ declare namespace Menu {
19
+ var displayName: string;
20
+ }
21
+ interface MenuAnchorProps extends JSX.HTMLAttributes<HTMLDivElement> {
22
+ virtualRef?: {
23
+ getBoundingClientRect(): DOMRect;
24
+ };
25
+ ref?: (el: HTMLElement) => void;
26
+ }
27
+ declare function MenuAnchor(inProps: ScopedProps<MenuAnchorProps>): JSX.Element;
28
+ declare namespace MenuAnchor {
29
+ var displayName: string;
30
+ }
31
+ interface MenuPortalProps {
32
+ children?: JSX.Element;
33
+ container?: Element | DocumentFragment | null;
34
+ forceMount?: true;
35
+ }
36
+ declare function MenuPortal(props: ScopedProps<MenuPortalProps>): JSX.Element;
37
+ declare namespace MenuPortal {
38
+ var displayName: string;
39
+ }
40
+ interface MenuContentProps extends MenuContentImplProps {
41
+ forceMount?: true;
42
+ }
43
+ declare function MenuContent(inProps: ScopedProps<MenuContentProps>): JSX.Element;
44
+ declare namespace MenuContent {
45
+ var displayName: string;
46
+ }
47
+ interface MenuContentImplProps extends JSX.HTMLAttributes<HTMLDivElement> {
48
+ ref?: (el: HTMLElement) => void;
49
+ side?: "top" | "right" | "bottom" | "left";
50
+ sideOffset?: number;
51
+ align?: "start" | "center" | "end";
52
+ alignOffset?: number;
53
+ avoidCollisions?: boolean;
54
+ collisionBoundary?: Element | Element[] | null;
55
+ collisionPadding?: number | Partial<Record<"top" | "right" | "bottom" | "left", number>>;
56
+ arrowPadding?: number;
57
+ sticky?: "partial" | "always";
58
+ hideWhenDetached?: boolean;
59
+ onOpenAutoFocus?: (event: Event) => void;
60
+ onCloseAutoFocus?: (event: Event) => void;
61
+ disableOutsidePointerEvents?: boolean;
62
+ disableOutsideScroll?: boolean;
63
+ trapFocus?: boolean;
64
+ loop?: boolean;
65
+ onEntryFocus?: (event: Event) => void;
66
+ onEscapeKeyDown?: (event: KeyboardEvent) => void;
67
+ onPointerDownOutside?: (event: any) => void;
68
+ onFocusOutside?: (event: any) => void;
69
+ onInteractOutside?: (event: any) => void;
70
+ onDismiss?: () => void;
71
+ }
72
+ interface MenuGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {
73
+ ref?: (el: HTMLElement) => void;
74
+ }
75
+ declare function MenuGroup(inProps: ScopedProps<MenuGroupProps>): JSX.Element;
76
+ declare namespace MenuGroup {
77
+ var displayName: string;
78
+ }
79
+ interface MenuLabelProps extends JSX.HTMLAttributes<HTMLDivElement> {
80
+ ref?: (el: HTMLElement) => void;
81
+ }
82
+ declare function MenuLabel(inProps: ScopedProps<MenuLabelProps>): JSX.Element;
83
+ declare namespace MenuLabel {
84
+ var displayName: string;
85
+ }
86
+ interface MenuItemProps extends Omit<MenuItemImplProps, "onSelect"> {
87
+ onSelect?: (event: Event) => void;
88
+ }
89
+ declare function MenuItem(inProps: ScopedProps<MenuItemProps>): JSX.Element;
90
+ declare namespace MenuItem {
91
+ var displayName: string;
92
+ }
93
+ interface MenuItemImplProps extends JSX.HTMLAttributes<HTMLDivElement> {
94
+ ref?: (el: HTMLElement) => void;
95
+ disabled?: boolean;
96
+ textValue?: string;
97
+ }
98
+ type CheckedState = boolean | "indeterminate";
99
+ interface MenuCheckboxItemProps extends MenuItemProps {
100
+ checked?: CheckedState;
101
+ onCheckedChange?: (checked: boolean) => void;
102
+ }
103
+ declare function MenuCheckboxItem(inProps: ScopedProps<MenuCheckboxItemProps>): JSX.Element;
104
+ declare namespace MenuCheckboxItem {
105
+ var displayName: string;
106
+ }
107
+ interface MenuRadioGroupProps extends MenuGroupProps {
108
+ value?: string;
109
+ onValueChange?: (value: string) => void;
110
+ }
111
+ declare function MenuRadioGroup(inProps: ScopedProps<MenuRadioGroupProps>): JSX.Element;
112
+ declare namespace MenuRadioGroup {
113
+ var displayName: string;
114
+ }
115
+ interface MenuRadioItemProps extends MenuItemProps {
116
+ value: string;
117
+ }
118
+ declare function MenuRadioItem(inProps: ScopedProps<MenuRadioItemProps>): JSX.Element;
119
+ declare namespace MenuRadioItem {
120
+ var displayName: string;
121
+ }
122
+ interface MenuItemIndicatorProps extends JSX.HTMLAttributes<HTMLSpanElement> {
123
+ ref?: (el: HTMLElement) => void;
124
+ forceMount?: true;
125
+ }
126
+ declare function MenuItemIndicator(inProps: ScopedProps<MenuItemIndicatorProps>): JSX.Element;
127
+ declare namespace MenuItemIndicator {
128
+ var displayName: string;
129
+ }
130
+ interface MenuSeparatorProps extends JSX.HTMLAttributes<HTMLDivElement> {
131
+ ref?: (el: HTMLElement) => void;
132
+ }
133
+ declare function MenuSeparator(inProps: ScopedProps<MenuSeparatorProps>): JSX.Element;
134
+ declare namespace MenuSeparator {
135
+ var displayName: string;
136
+ }
137
+ interface MenuArrowProps extends JSX.SvgSVGAttributes<SVGSVGElement> {
138
+ ref?: (el: SVGSVGElement) => void;
139
+ }
140
+ declare function MenuArrow(inProps: ScopedProps<MenuArrowProps>): JSX.Element;
141
+ declare namespace MenuArrow {
142
+ var displayName: string;
143
+ }
144
+ interface MenuSubProps {
145
+ children?: JSX.Element;
146
+ open?: boolean;
147
+ onOpenChange?(open: boolean): void;
148
+ }
149
+ declare function MenuSub(props: ScopedProps<MenuSubProps>): JSX.Element;
150
+ declare namespace MenuSub {
151
+ var displayName: string;
152
+ }
153
+ interface MenuSubTriggerProps extends MenuItemImplProps {
154
+ }
155
+ declare function MenuSubTrigger(inProps: ScopedProps<MenuSubTriggerProps>): JSX.Element;
156
+ declare namespace MenuSubTrigger {
157
+ var displayName: string;
158
+ }
159
+ interface MenuSubContentProps extends Omit<MenuContentImplProps, "onOpenAutoFocus" | "onDismiss" | "disableOutsidePointerEvents" | "disableOutsideScroll" | "trapFocus" | "onCloseAutoFocus" | "onEntryFocus" | "side" | "align"> {
160
+ forceMount?: true;
161
+ }
162
+ declare function MenuSubContent(inProps: ScopedProps<MenuSubContentProps>): JSX.Element;
163
+ declare namespace MenuSubContent {
164
+ var displayName: string;
165
+ }
166
+ declare const Root: typeof Menu;
167
+ declare const Anchor: typeof MenuAnchor;
168
+ declare const PortalExport: typeof MenuPortal;
169
+ declare const Content: typeof MenuContent;
170
+ declare const Group: typeof MenuGroup;
171
+ declare const Label: typeof MenuLabel;
172
+ declare const Item: typeof MenuItem;
173
+ declare const CheckboxItem: typeof MenuCheckboxItem;
174
+ declare const RadioGroup: typeof MenuRadioGroup;
175
+ declare const RadioItem: typeof MenuRadioItem;
176
+ declare const ItemIndicator: typeof MenuItemIndicator;
177
+ declare const Separator: typeof MenuSeparator;
178
+ declare const Arrow: typeof MenuArrow;
179
+ declare const Sub: typeof MenuSub;
180
+ declare const SubTrigger: typeof MenuSubTrigger;
181
+ declare const SubContent: typeof MenuSubContent;
182
+
183
+ export { Anchor, Arrow, CheckboxItem, Content, Group, Item, ItemIndicator, Label, Menu, MenuAnchor, type MenuAnchorProps, MenuArrow, type MenuArrowProps, MenuCheckboxItem, type MenuCheckboxItemProps, MenuContent, type MenuContentProps, MenuGroup, type MenuGroupProps, MenuItem, MenuItemIndicator, type MenuItemIndicatorProps, type MenuItemProps, MenuLabel, type MenuLabelProps, MenuPortal, type MenuPortalProps, type MenuProps, MenuRadioGroup, type MenuRadioGroupProps, MenuRadioItem, type MenuRadioItemProps, MenuSeparator, type MenuSeparatorProps, MenuSub, MenuSubContent, type MenuSubContentProps, type MenuSubProps, MenuSubTrigger, type MenuSubTriggerProps, PortalExport as Portal, RadioGroup, RadioItem, Root, Separator, Sub, SubContent, SubTrigger, createMenuScope };
@@ -0,0 +1,183 @@
1
+ import * as _radix_solid_js_context from '@radix-solid-js/context';
2
+ import { Scope } from '@radix-solid-js/context';
3
+ import { JSX } from 'solid-js';
4
+
5
+ type Direction = "ltr" | "rtl";
6
+ type ScopedProps<P> = P & {
7
+ __scopeMenu?: Scope;
8
+ };
9
+ declare const createMenuScope: _radix_solid_js_context.CreateScope;
10
+ interface MenuProps {
11
+ children?: JSX.Element;
12
+ open?: boolean;
13
+ onOpenChange?(open: boolean): void;
14
+ dir?: Direction;
15
+ modal?: boolean;
16
+ }
17
+ declare function Menu(props: ScopedProps<MenuProps>): JSX.Element;
18
+ declare namespace Menu {
19
+ var displayName: string;
20
+ }
21
+ interface MenuAnchorProps extends JSX.HTMLAttributes<HTMLDivElement> {
22
+ virtualRef?: {
23
+ getBoundingClientRect(): DOMRect;
24
+ };
25
+ ref?: (el: HTMLElement) => void;
26
+ }
27
+ declare function MenuAnchor(inProps: ScopedProps<MenuAnchorProps>): JSX.Element;
28
+ declare namespace MenuAnchor {
29
+ var displayName: string;
30
+ }
31
+ interface MenuPortalProps {
32
+ children?: JSX.Element;
33
+ container?: Element | DocumentFragment | null;
34
+ forceMount?: true;
35
+ }
36
+ declare function MenuPortal(props: ScopedProps<MenuPortalProps>): JSX.Element;
37
+ declare namespace MenuPortal {
38
+ var displayName: string;
39
+ }
40
+ interface MenuContentProps extends MenuContentImplProps {
41
+ forceMount?: true;
42
+ }
43
+ declare function MenuContent(inProps: ScopedProps<MenuContentProps>): JSX.Element;
44
+ declare namespace MenuContent {
45
+ var displayName: string;
46
+ }
47
+ interface MenuContentImplProps extends JSX.HTMLAttributes<HTMLDivElement> {
48
+ ref?: (el: HTMLElement) => void;
49
+ side?: "top" | "right" | "bottom" | "left";
50
+ sideOffset?: number;
51
+ align?: "start" | "center" | "end";
52
+ alignOffset?: number;
53
+ avoidCollisions?: boolean;
54
+ collisionBoundary?: Element | Element[] | null;
55
+ collisionPadding?: number | Partial<Record<"top" | "right" | "bottom" | "left", number>>;
56
+ arrowPadding?: number;
57
+ sticky?: "partial" | "always";
58
+ hideWhenDetached?: boolean;
59
+ onOpenAutoFocus?: (event: Event) => void;
60
+ onCloseAutoFocus?: (event: Event) => void;
61
+ disableOutsidePointerEvents?: boolean;
62
+ disableOutsideScroll?: boolean;
63
+ trapFocus?: boolean;
64
+ loop?: boolean;
65
+ onEntryFocus?: (event: Event) => void;
66
+ onEscapeKeyDown?: (event: KeyboardEvent) => void;
67
+ onPointerDownOutside?: (event: any) => void;
68
+ onFocusOutside?: (event: any) => void;
69
+ onInteractOutside?: (event: any) => void;
70
+ onDismiss?: () => void;
71
+ }
72
+ interface MenuGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {
73
+ ref?: (el: HTMLElement) => void;
74
+ }
75
+ declare function MenuGroup(inProps: ScopedProps<MenuGroupProps>): JSX.Element;
76
+ declare namespace MenuGroup {
77
+ var displayName: string;
78
+ }
79
+ interface MenuLabelProps extends JSX.HTMLAttributes<HTMLDivElement> {
80
+ ref?: (el: HTMLElement) => void;
81
+ }
82
+ declare function MenuLabel(inProps: ScopedProps<MenuLabelProps>): JSX.Element;
83
+ declare namespace MenuLabel {
84
+ var displayName: string;
85
+ }
86
+ interface MenuItemProps extends Omit<MenuItemImplProps, "onSelect"> {
87
+ onSelect?: (event: Event) => void;
88
+ }
89
+ declare function MenuItem(inProps: ScopedProps<MenuItemProps>): JSX.Element;
90
+ declare namespace MenuItem {
91
+ var displayName: string;
92
+ }
93
+ interface MenuItemImplProps extends JSX.HTMLAttributes<HTMLDivElement> {
94
+ ref?: (el: HTMLElement) => void;
95
+ disabled?: boolean;
96
+ textValue?: string;
97
+ }
98
+ type CheckedState = boolean | "indeterminate";
99
+ interface MenuCheckboxItemProps extends MenuItemProps {
100
+ checked?: CheckedState;
101
+ onCheckedChange?: (checked: boolean) => void;
102
+ }
103
+ declare function MenuCheckboxItem(inProps: ScopedProps<MenuCheckboxItemProps>): JSX.Element;
104
+ declare namespace MenuCheckboxItem {
105
+ var displayName: string;
106
+ }
107
+ interface MenuRadioGroupProps extends MenuGroupProps {
108
+ value?: string;
109
+ onValueChange?: (value: string) => void;
110
+ }
111
+ declare function MenuRadioGroup(inProps: ScopedProps<MenuRadioGroupProps>): JSX.Element;
112
+ declare namespace MenuRadioGroup {
113
+ var displayName: string;
114
+ }
115
+ interface MenuRadioItemProps extends MenuItemProps {
116
+ value: string;
117
+ }
118
+ declare function MenuRadioItem(inProps: ScopedProps<MenuRadioItemProps>): JSX.Element;
119
+ declare namespace MenuRadioItem {
120
+ var displayName: string;
121
+ }
122
+ interface MenuItemIndicatorProps extends JSX.HTMLAttributes<HTMLSpanElement> {
123
+ ref?: (el: HTMLElement) => void;
124
+ forceMount?: true;
125
+ }
126
+ declare function MenuItemIndicator(inProps: ScopedProps<MenuItemIndicatorProps>): JSX.Element;
127
+ declare namespace MenuItemIndicator {
128
+ var displayName: string;
129
+ }
130
+ interface MenuSeparatorProps extends JSX.HTMLAttributes<HTMLDivElement> {
131
+ ref?: (el: HTMLElement) => void;
132
+ }
133
+ declare function MenuSeparator(inProps: ScopedProps<MenuSeparatorProps>): JSX.Element;
134
+ declare namespace MenuSeparator {
135
+ var displayName: string;
136
+ }
137
+ interface MenuArrowProps extends JSX.SvgSVGAttributes<SVGSVGElement> {
138
+ ref?: (el: SVGSVGElement) => void;
139
+ }
140
+ declare function MenuArrow(inProps: ScopedProps<MenuArrowProps>): JSX.Element;
141
+ declare namespace MenuArrow {
142
+ var displayName: string;
143
+ }
144
+ interface MenuSubProps {
145
+ children?: JSX.Element;
146
+ open?: boolean;
147
+ onOpenChange?(open: boolean): void;
148
+ }
149
+ declare function MenuSub(props: ScopedProps<MenuSubProps>): JSX.Element;
150
+ declare namespace MenuSub {
151
+ var displayName: string;
152
+ }
153
+ interface MenuSubTriggerProps extends MenuItemImplProps {
154
+ }
155
+ declare function MenuSubTrigger(inProps: ScopedProps<MenuSubTriggerProps>): JSX.Element;
156
+ declare namespace MenuSubTrigger {
157
+ var displayName: string;
158
+ }
159
+ interface MenuSubContentProps extends Omit<MenuContentImplProps, "onOpenAutoFocus" | "onDismiss" | "disableOutsidePointerEvents" | "disableOutsideScroll" | "trapFocus" | "onCloseAutoFocus" | "onEntryFocus" | "side" | "align"> {
160
+ forceMount?: true;
161
+ }
162
+ declare function MenuSubContent(inProps: ScopedProps<MenuSubContentProps>): JSX.Element;
163
+ declare namespace MenuSubContent {
164
+ var displayName: string;
165
+ }
166
+ declare const Root: typeof Menu;
167
+ declare const Anchor: typeof MenuAnchor;
168
+ declare const PortalExport: typeof MenuPortal;
169
+ declare const Content: typeof MenuContent;
170
+ declare const Group: typeof MenuGroup;
171
+ declare const Label: typeof MenuLabel;
172
+ declare const Item: typeof MenuItem;
173
+ declare const CheckboxItem: typeof MenuCheckboxItem;
174
+ declare const RadioGroup: typeof MenuRadioGroup;
175
+ declare const RadioItem: typeof MenuRadioItem;
176
+ declare const ItemIndicator: typeof MenuItemIndicator;
177
+ declare const Separator: typeof MenuSeparator;
178
+ declare const Arrow: typeof MenuArrow;
179
+ declare const Sub: typeof MenuSub;
180
+ declare const SubTrigger: typeof MenuSubTrigger;
181
+ declare const SubContent: typeof MenuSubContent;
182
+
183
+ export { Anchor, Arrow, CheckboxItem, Content, Group, Item, ItemIndicator, Label, Menu, MenuAnchor, type MenuAnchorProps, MenuArrow, type MenuArrowProps, MenuCheckboxItem, type MenuCheckboxItemProps, MenuContent, type MenuContentProps, MenuGroup, type MenuGroupProps, MenuItem, MenuItemIndicator, type MenuItemIndicatorProps, type MenuItemProps, MenuLabel, type MenuLabelProps, MenuPortal, type MenuPortalProps, type MenuProps, MenuRadioGroup, type MenuRadioGroupProps, MenuRadioItem, type MenuRadioItemProps, MenuSeparator, type MenuSeparatorProps, MenuSub, MenuSubContent, type MenuSubContentProps, type MenuSubProps, MenuSubTrigger, type MenuSubTriggerProps, PortalExport as Portal, RadioGroup, RadioItem, Root, Separator, Sub, SubContent, SubTrigger, createMenuScope };