{"mappings":"C,A,S,C,C,C,C,C,C,C,C,C,E,I,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,A,Y,O,C,C,E,E,C,C,E,C,E,E,K,E,C,E,E,A,a,O,Q,A,Y,O,O,O,E,O,O,C,I,C,Q,S,E,C,C,C,E,G,C,C,C,E,C,C,G,C,C,C,E,C,C,I,E,A,Y,O,C,C,E,E,C,C,E,C,G,C,G,E,O,E,E,C,G,G,E,O,E,E,C,G,G,G,A,U,O,E,O,E,G,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,O,C,S,C,E,I,E,C,C,E,C,E,C,E,C,O,A,M,E,E,C,E,E,K,C,C,E,I,E,C,C,E,C,I,E,M,C,G,C,C,E,C,E,C,I,C,E,O,C,E,E,E,O,C,I,C,C,O,C,C,E,C,O,C,S,E,C,E,I,E,E,O,C,G,M,A,C,I,E,C,E,E,E,C,C,E,e,C,C,E,E,M,C,S,C,E,I,C,E,C,E,I,C,M,C,E,I,C,O,C,C,C,E,E,O,C,E,E,K,C,E,E,M,C,E,E,Q,C,S,C,C,C,E,C,C,E,C,C,S,C,C,C,E,E,O,C,C,E,C,E,A,E,O,c,C,E,O,C,I,W,O,C,C,E,A,C,G,C,C,E,C,E,I,I,E,E,E,E,M,C,I,E,C,C,E,C,E,C,M,C,S,C,C,C,C,C,ECUC,IAAA,EAAA,EAAA,kD,E,iB,C,GAED,EAAA,MAAA,CAAA,EAAA,YAAA,IAAA,EAAA,SAAA,EACA,EAAA,MAAA,CAAA,EAAA,iBAAA,IAAA,EAAA,cAAA,EAAA,EAAA,MAAA,CAAA,EAAA,sBAAA,IAAA,EAAA,mBAAA,EACA,EAAA,MAAA,CAAA,EAAA,WAAA,IAAA,EAAA,QAAA,EACA,EAAA,MAAA,CAAA,EAAA,iBAAA,IAAA,EAAA,cAAA,EAAA,EAAA,MAAA,CAAA,EAAA,yBAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,MAAA,CAAA,EAAA,yBAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,MAAA,CAAA,EAAA,yBAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,MAAA,CAAA,EAAA,yBAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,MAAA,CAAA,EAAA,kBAAA,IAAA,EAAA,eAAA,EAAA,EAAA,MAAA,CAAA,EAAA,0BAAA,IAAA,EAAA,uBAAA,EASA,EAAA,MAAA,CAAA,EAAA,iBAAA,IAAA,EAAA,cAAA,EACA,EAAA,MAAA,CAAA,EAAA,WAAA,IAAA,EAAA,QAAA,EACA,EAAA,MAAA,CAAA,EAAA,qBAAA,IAAA,EAAA,kBAAA,EACA,EAAA,MAAA,CAAA,EAAA,cAAA,IAAA,EAAA,WAAA,EACA,EAAA,MAAA,CAAA,EAAA,UAAA,IAAA,EAAA,OAAA,EACA,EAAA,MAAA,CAAA,EAAA,WAAA,IAAA,EAAA,QAAA,EACA,EAAA,MAAA,CAAA,EAAA,iBAAA,IAAA,EAAA,cAAA,EACA,EAAA,MAAA,CAAA,EAAA,eAAA,IAAA,EAAA,YAAA,EAnBA,IAAA,EAAA,EAAA,eACA,EAAA,EAAA,oBACA,EAAA,EAAA,cACA,EAAA,EAAA,qBASA,EAAA,EAAA,oBACA,EAAA,EAAA,cACA,EAAA,EAAA,wBACA,EAAA,EAAA,iBACA,EAAA,EAAA,aACA,EAAA,EAAA,cACA,EAAA,EAAA,oBACA,EAAA,EAAA,iB,E,C,c,C,E,mB,Q,a,Q,oB,Q,mB,Q,a,Q,uB,Q,gB,Q,Y,Q,a,Q,mB,Q,iB,Q,iD,O,E,C,M,C,S,C,C,C,C,C,ECrBC,IAAA,EAAA,EAAA,kD,E,iB,C,GAYY,EAAA,MAAA,CAAA,EAAA,iBAAA,IAAA,GAkCb,EAAA,MAAA,CAAA,EAAA,sBAAA,IAAgB,GA3ChB,IAAA,EAAA,EAAA,qBAEA,EAAA,EAAA,aACA,EAAA,EAAA,S,E,E,c,C,GAMO,IAAM,EAAiB,AAAA,CAAA,EAAA,EAAA,OAAI,AAAJ,EAAM,UAAU,CAAC,CAAC,CAAC,SAAA,CAAQ,CAAE,GAAG,EAA2B,CAAE,KACzF,IAAI,EAAe,AAAA,CAAA,EAAA,EAAA,MAAK,AAAL,EAAO,CAAA,GACtB,EAAc,AAAA,CAAA,EAAA,EAAA,UAAS,AAAT,EAAW,EAAA,qBAAoB,EACjD,EAAM,AAAA,CAAA,EAAA,EAAA,YAAY,AAAZ,EAAa,GAAO,GAAa,KACvC,IAAI,EAAU,AAAA,CAAA,EAAA,EAAA,UAAU,AAAV,EAAW,GAAe,CAAC,EAAG,CAC1C,GAAG,CAAK,CACR,IAAA,EACA,WACE,EAAa,OAAO,CAAG,CAAA,EACnB,GACF,EAAY,QAAQ,EAExB,CACF,GAcA,MAZA,AAAA,CAAA,EAAA,EAAA,UAAU,AAAV,EAAW,EAAa,GAExB,AAAA,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,KACH,EAAa,OAAO,GACvB,QAAQ,IAAI,CACV,6IAGF,EAAa,OAAO,CAAG,CAAA,EAE3B,EAAG,EAAE,EAGH,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAA,aAAA,CAAC,AAAA,EAAA,qBAAoB,CAAE,QAAQ,CADjC,CACkC,MAAO,CACpC,EAAA,EAGP,GAEO,SAAS,EAAoB,CAAC,SAAA,CAAQ,CAAwB,EACnE,IAAI,EAAU,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAQ,IAAO,CAAA,CAAC,SAAU,KAAO,CAAC,CAAA,EAAI,EAAE,EACtD,MACE,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAA,aAAA,CAAC,AAAA,EAAA,qBAAoB,CAAE,QAAQ,CADjC,CACkC,MAAO,CACpC,EAAA,EAGP,C,E,C,oB,Q,Y,Q,M,Q,iD,O,E,C,Q,C,S,C,C,C,C,C,ECrDC,IAAA,EAAA,EAAA,kD,E,iB,C,GAWY,EAAA,MAAA,CAAA,EAAA,wBAAA,IAAA,GAPb,IAAA,EAAA,EAAA,SAOO,IAAM,EAAwB,AAAA,CAAA,EAAA,A,E,c,C,GAAA,OAAK,AAAL,EAAM,aAAa,CAAyB,CAAC,SAAU,KAAO,CAAC,EACpG,CAAA,EAAsB,WAAW,CAAG,uB,E,C,M,Q,iD,O,E,C,Q,C,S,C,C,C,C,C,E,I,E,E,kD,E,iB,C,GCcpC,EAAA,MAAA,CAAA,EAAA,WAAA,IAAgB,GAlBhB,IAAA,EAAA,EAAA,SACA,EAAA,EAAA,qBACA,EAAA,EAAA,WAgBO,SAAS,EAA6D,CAAyB,EACpG,GAAI,CACF,WAAA,CAAU,CACV,QAAS,CAAW,CACpB,OAAQ,CAAU,CAClB,cAAA,CAAa,CACd,CAAG,EAEE,EAAuC,AAAA,CAAA,EAAA,EAAA,WAAU,AAAV,EAAY,AAAC,IACxD,GAAI,EAAE,MAAM,GAAK,EAAE,aAAa,CAS9B,OARI,GACF,EAAW,GAGT,GACF,EAAc,CAAA,GAGT,CAAA,CAEX,EAAG,CAAC,EAAY,EAAc,EAGxB,EAAmB,AAAA,CAAA,EAAA,EAAA,qBAAoB,AAApB,EAA8B,GAEjD,EAAyC,AAAA,CAAA,EAAA,EAAA,WAAU,AAAV,EAAY,AAAC,IAI1D,IAAM,EAAgB,AAAA,CAAA,EAAA,EAAA,gBAAgB,AAAhB,EAAiB,EAAE,MAAM,CAE3C,CAAA,EAAE,MAAM,GAAK,EAAE,aAAa,EAAI,EAAc,aAAa,GAAK,EAAE,MAAM,GACtE,GACF,EAAY,GAGV,GACF,EAAc,CAAA,GAGhB,EAAiB,GAErB,EAAG,CAAC,EAAe,EAAa,EAAiB,EAEjD,MAAO,CACL,WAAY,CACV,QAAU,CAAC,GAAe,CAAA,GAAe,GAAiB,CAAA,EAAe,EAAU,KAAA,EACnF,OAAS,CAAC,GAAe,CAAA,GAAc,CAAA,EAAkB,EAAS,KAAA,CACpE,CACF,CACF,C,E,C,M,Q,oB,Q,U,Q,iD,O,E,C,Q,C,S,C,C,C,C,C,EC5EC,IAAA,EAAA,EAAA,kD,E,iB,C,GAKD,EAAA,MAAA,CAAA,EAAA,sBAAA,IAAa,GAgDb,EAAA,MAAA,CAAA,EAAA,wBAAA,IAAgB,GAnDhB,IAAA,EAAA,EAAA,SACA,EAAA,EAAA,oBAEO,OAAM,EAaX,YAAY,CAAY,CAAE,CAAuB,CAAE,CACjD,IAAI,CAAC,WAAW,CAAG,EACnB,IAAI,CAAC,MAAM,CAAG,EAAY,MAAM,CAChC,IAAI,CAAC,aAAa,CAAG,EAAY,aAAa,CAC9C,IAAI,CAAC,aAAa,CAAG,EAAY,aAAa,CAC9C,IAAI,CAAC,OAAO,CAAG,EAAY,OAAO,CAClC,IAAI,CAAC,UAAU,CAAG,EAAY,UAAU,CACxC,IAAI,CAAC,gBAAgB,CAAG,EAAY,gBAAgB,CACpD,IAAI,CAAC,UAAU,CAAG,EAAY,UAAU,CACxC,IAAI,CAAC,SAAS,CAAG,EAAY,SAAS,CACtC,IAAI,CAAC,SAAS,CAAG,EAAY,SAAS,CACtC,IAAI,CAAC,IAAI,CAAG,CACd,CAEA,oBAA8B,CAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,AAC1C,CAEA,gBAAuB,CACrB,IAAI,CAAC,gBAAgB,CAAG,CAAA,EACxB,IAAI,CAAC,WAAW,CAAC,cAAc,EACjC,CAEA,iBAAwB,CACtB,IAAI,CAAC,WAAW,CAAC,eAAe,GAChC,IAAI,CAAC,oBAAoB,CAAG,IAAM,CAAA,CACpC,CAEA,sBAAgC,CAC9B,MAAO,CAAA,CACT,CAEA,SAAU,CAAC,CACb,CAEO,SAAS,EAAwC,CAA4C,EAClG,IAAI,EAAW,AAAA,CAAA,EAAA,EAAA,MAAK,AAAL,EAAO,CACpB,UAAW,CAAA,EACX,SAAU,IACZ,GAIA,AAAA,CAAA,EAAA,EAAA,eAAe,AAAf,EAAgB,KACd,IAAM,EAAQ,EAAS,OAAO,CAC9B,MAAO,KACD,EAAM,QAAQ,GAChB,EAAM,QAAQ,CAAC,UAAU,GACzB,EAAM,QAAQ,CAAG,KAErB,CACF,EAAG,EAAE,EAEL,IAAI,EAAe,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,AAAC,IACjC,IAAS,EACX,GAGA,MAAO,AAAA,CAAA,EAAA,EAAA,WAAW,AAAX,EAAY,AAAC,IAKlB,GACE,EAAE,MAAM,YAAY,mBACpB,EAAE,MAAM,YAAY,kBACpB,EAAE,MAAM,YAAY,qBACpB,EAAE,MAAM,YAAY,kBACpB,CACA,EAAS,OAAO,CAAC,SAAS,CAAG,CAAA,EAE7B,IAAI,EAAS,EAAE,MAAM,CAgBrB,EAAO,gBAAgB,CAAC,WAfuC,AAAC,IAC9D,EAAS,OAAO,CAAC,SAAS,CAAG,CAAA,EAEzB,EAAO,QAAQ,EAEjB,EAAa,IAAI,EAAoB,OAAQ,IAI3C,EAAS,OAAO,CAAC,QAAQ,GAC3B,EAAS,OAAO,CAAC,QAAQ,CAAC,UAAU,GACpC,EAAS,OAAO,CAAC,QAAQ,CAAG,KAEhC,EAEmD,CAAC,KAAM,CAAA,CAAI,GAE9D,EAAS,OAAO,CAAC,QAAQ,CAAG,IAAI,iBAAiB,KAC/C,GAAI,EAAS,OAAO,CAAC,SAAS,EAAI,EAAO,QAAQ,CAAE,CACjD,EAAS,OAAO,CAAC,QAAQ,EAAE,aAC3B,IAAI,EAAkB,IAAW,SAAS,aAAa,CAAG,KAAO,SAAS,aAAa,CACvF,EAAO,aAAa,CAAC,IAAI,WAAW,OAAQ,CAAC,cAAe,CAAe,IAC3E,EAAO,aAAa,CAAC,IAAI,WAAW,WAAY,CAAC,QAAS,CAAA,EAAM,cAAe,CAAe,GAChG,CACF,GAEA,EAAS,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAQ,CAAC,WAAY,CAAA,EAAM,gBAAiB,CAAC,WAAW,AAAA,EAC5F,CACF,EAAG,CAAC,EAAa,CACnB,C,E,C,M,Q,oB,Q,iD,O,E,C,M,C,S,C,C,C,C,C,E,I,E,E,kD,E,iB,C,GCvFW,EAAA,MAAA,CAAA,EAAA,0BAAA,IAAA,GAyKX,EAAA,MAAA,CAAA,EAAA,yBAAA,IAAgB,GAwBhB,EAAA,MAAA,CAAA,EAAA,iBAAA,IAAgB,GAIhB,EAAA,MAAA,CAAA,EAAA,yBAAA,IAAgB,GAIhB,EAAA,MAAA,CAAA,EAAA,yBAAA,IAAgB,GAQhB,EAAA,MAAA,CAAA,EAAA,yBAAA,IAAgB,GAkDhB,EAAA,MAAA,CAAA,EAAA,kBAAA,IAAgB,GAahB,EAAA,MAAA,CAAA,EAAA,0BAAA,IAAgB,GAzShB,IAAA,EAAA,EAAA,qBACA,EAAA,EAAA,SACA,EAAA,EAAA,mBAkBA,IAAI,EAAmC,KACnC,EAAiB,IAAI,IAId,EAA0B,IAAI,IACrC,EAAsB,CAAA,EACtB,EAA2B,CAAA,EAGzB,EAA2B,CAC/B,IAAK,CAAA,EACL,OAAQ,CAAA,CACV,EAEA,SAAS,EAAsB,CAAkB,CAAE,CAAe,EAChE,IAAK,IAAI,KAAW,EAClB,EAAQ,EAAU,EAEtB,CAWA,SAAS,EAAoB,CAAgB,EAC3C,EAAsB,CAAA,EALb,AAMM,EANJ,OAAO,EAAK,CAAC,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,KAAW,AAMpB,EANsB,MAAM,EAAK,AAMjC,EANmC,OAAO,EAAI,AAAU,YAAV,AAM9C,EANgD,GAAG,EAAkB,AAAU,UAAV,AAMrE,EANuE,GAAG,EAAgB,AAAU,SAAV,AAM1F,EAN4F,GAAG,GAO5G,EAAkB,WAClB,EAAsB,WAAY,GAEtC,CAEA,SAAS,EAAmB,CAA4B,EACtD,EAAkB,UACd,CAAA,AAAW,cAAX,EAAE,IAAI,EAAoB,AAAW,gBAAX,EAAE,IAAI,AAAK,IACvC,EAAsB,CAAA,EACtB,EAAsB,UAAW,GAErC,CAEA,SAAS,EAAiB,CAAa,EACjC,AAAA,CAAA,EAAA,EAAA,cAAc,AAAd,EAAe,KACjB,EAAsB,CAAA,EACtB,EAAkB,UAEtB,CAEA,SAAS,EAAiB,CAAa,EAIjC,EAAE,MAAM,GAAK,QAAU,EAAE,MAAM,GAAK,WAMnC,GAAwB,IAC3B,EAAkB,UAClB,EAAsB,UAAW,IAGnC,EAAsB,CAAA,EACtB,EAA2B,CAAA,EAC7B,CAEA,SAAS,IAGP,EAAsB,CAAA,EACtB,EAA2B,CAAA,CAC7B,CAKA,SAAS,EAAuB,CAA4B,EAC1D,GAAI,AAAkB,aAAlB,OAAO,QAA0B,EAAwB,GAAG,CAAC,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,IAC9E,OAGF,IAAM,EAAe,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,GAC9B,EAAiB,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,GAMpC,EAAQ,EAAa,WAAW,CAAC,SAAS,CAAC,KAAK,AACpD,CAAA,EAAa,WAAW,CAAC,SAAS,CAAC,KAAK,CAAG,WACzC,EAAsB,CAAA,EACtB,EAAM,KAAK,CAAC,IAAI,CAAE,UACpB,EAEA,EAAe,gBAAgB,CAAC,UAAW,EAAqB,CAAA,GAChE,EAAe,gBAAgB,CAAC,QAAS,EAAqB,CAAA,GAC9D,EAAe,gBAAgB,CAAC,QAAS,EAAkB,CAAA,GAI3D,EAAa,gBAAgB,CAAC,QAAS,EAAkB,CAAA,GACzD,EAAa,gBAAgB,CAAC,OAAQ,EAAkB,CAAA,GAEpD,AAAwB,aAAxB,OAAO,cACT,EAAe,gBAAgB,CAAC,cAAe,EAAoB,CAAA,GACnE,EAAe,gBAAgB,CAAC,cAAe,EAAoB,CAAA,GACnE,EAAe,gBAAgB,CAAC,YAAa,EAAoB,CAAA,KAEjE,EAAe,gBAAgB,CAAC,YAAa,EAAoB,CAAA,GACjE,EAAe,gBAAgB,CAAC,YAAa,EAAoB,CAAA,GACjE,EAAe,gBAAgB,CAAC,UAAW,EAAoB,CAAA,IAIjE,EAAa,gBAAgB,CAAC,eAAgB,KAC5C,EAA4B,EAC9B,EAAG,CAAC,KAAM,CAAA,CAAI,GAEd,EAAwB,GAAG,CAAC,EAAc,CAAC,MAAA,CAAK,EAClD,CAEA,IAAM,EAA8B,CAAC,EAAS,KAC5C,IAAM,EAAe,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,GAC9B,EAAiB,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,GACpC,GACF,EAAe,mBAAmB,CAAC,mBAAoB,GAEpD,EAAwB,GAAG,CAAC,KAGjC,EAAa,WAAW,CAAC,SAAS,CAAC,KAAK,CAAG,EAAwB,GAAG,CAAC,GAAe,KAAK,CAE3F,EAAe,mBAAmB,CAAC,UAAW,EAAqB,CAAA,GACnE,EAAe,mBAAmB,CAAC,QAAS,EAAqB,CAAA,GACjE,EAAe,mBAAmB,CAAC,QAAS,EAAkB,CAAA,GAC9D,EAAa,mBAAmB,CAAC,QAAS,EAAkB,CAAA,GAC5D,EAAa,mBAAmB,CAAC,OAAQ,EAAkB,CAAA,GAEvD,AAAwB,aAAxB,OAAO,cACT,EAAe,mBAAmB,CAAC,cAAe,EAAoB,CAAA,GACtE,EAAe,mBAAmB,CAAC,cAAe,EAAoB,CAAA,GACtE,EAAe,mBAAmB,CAAC,YAAa,EAAoB,CAAA,KAEpE,EAAe,mBAAmB,CAAC,YAAa,EAAoB,CAAA,GACpE,EAAe,mBAAmB,CAAC,YAAa,EAAoB,CAAA,GACpE,EAAe,mBAAmB,CAAC,UAAW,EAAoB,CAAA,IAGpE,EAAwB,MAAM,CAAC,GACjC,EAmBO,SAAS,EAAuB,CAA4B,MAE7D,EADJ,IAAM,EAAiB,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,GAWxC,MATI,AAA8B,YAA9B,EAAe,UAAU,CAC3B,EAAuB,IAEvB,EAAe,KACb,EAAuB,EACzB,EACA,EAAe,gBAAgB,CAAC,mBAAoB,IAG/C,IAAM,EAA4B,EAAS,EACpD,CAWO,SAAS,IACd,MAAO,AAAoB,YAApB,CACT,CAEO,SAAS,IACd,OAAO,CACT,CAEO,SAAS,EAAuB,CAAkB,EACvD,EAAkB,EAClB,EAAsB,EAAU,KAClC,CAKO,SAAS,IACd,IAEA,GAAI,CAAC,EAAU,EAAY,CAAG,AAAA,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAS,GAYvC,MAXA,AAAA,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,KACR,IAAI,EAAU,KACZ,EAAY,EACd,EAGA,OADA,EAAe,GAAG,CAAC,GACZ,KACL,EAAe,MAAM,CAAC,EACxB,CACF,EAAG,EAAE,EAEE,AAAA,CAAA,EAAA,EAAA,QAAQ,AAAR,IAAa,KAAO,CAC7B,CAvCwB,aAApB,OAAO,UACT,IAwCF,IAAM,EAAoB,IAAI,IAAI,CAChC,WACA,QACA,QACA,QACA,OACA,QACA,SACA,SACA,QACD,EAsBM,SAAS,EAAgB,EAA2B,CAAC,CAAC,EAC3D,GAAI,CAAC,YAAA,CAAW,CAAE,UAAA,CAAS,CAAC,CAAG,EAC3B,CAAC,EAAqB,EAAgB,CAAG,AAAA,CAAA,EAAA,EAAA,QAAO,AAAP,EAAS,GAAa,KAKnE,OAJA,EAAwB,AAAC,IACvB,EAAgB,EAClB,EAAG,CAAC,EAAY,CAAE,CAAC,YAAA,CAAW,GAEvB,CAAC,eAAgB,CAAmB,CAC7C,CAKO,SAAS,EAAwB,CAAuB,CAAE,CAAwB,CAAE,CAA8B,EACvH,IAEA,AAAA,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,KACR,IAAI,EAAU,CAAC,EAAoB,KAC5B,AAlCX,CAAA,SAA8B,CAAoB,CAAE,CAAkB,CAAE,CAAe,EACrF,IAAM,EAAoB,AAAkB,aAAlB,OAAO,OAAyB,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,GAAG,QAAmB,gBAAgB,CAAG,iBAC5G,EAAuB,AAAkB,aAAlB,OAAO,OAAyB,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,GAAG,QAAmB,mBAAmB,CAAG,oBAClH,EAAe,AAAkB,aAAlB,OAAO,OAAyB,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,GAAG,QAAmB,WAAW,CAAG,YAClG,EAAiB,AAAkB,aAAlB,OAAO,OAAyB,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,GAAG,QAAmB,aAAa,CAAG,cAM5G,MAAO,CAAE,CAAA,AAJT,CAAA,EAAc,GACX,GAAG,kBAAkB,GAAqB,CAAC,EAAkB,GAAG,CAAC,GAAG,QAAQ,OAC7E,GAAG,kBAAkB,GACpB,GAAG,kBAAkB,GAAgB,GAAG,OAAO,iBAHlD,GAIwB,AAAa,aAAb,GAA2B,aAAa,GAAkB,CAAC,CAAwB,CAAC,EAAE,GAAG,CAAC,AAAD,CACnH,CAAA,EAuBgC,CAAC,CAAE,GAAM,YAAc,EAAU,IAG3D,EAAG,IACL,EAEA,OADA,EAAe,GAAG,CAAC,GACZ,KACL,EAAe,MAAM,CAAC,EACxB,CAEF,EAAG,EACL,C,E,C,oB,Q,M,Q,kB,Q,iD,O,E,C,M,C,S,C,C,C,C,C,E,I,E,E,kD,E,iB,C,GClSA,EAAA,MAAA,CAAA,EAAA,iBAAA,IAAgB,GAtBhB,IAAA,EAAA,EAAA,SACA,EAAA,EAAA,WAqBO,SAAS,EAAe,CAAuB,EACpD,GAAI,CACF,WAAA,CAAU,CACV,aAAA,CAAY,CACZ,cAAA,CAAa,CACb,oBAAA,CAAmB,CACpB,CAAG,EACA,EAAQ,AAAA,CAAA,EAAA,EAAA,MAAK,AAAL,EAAO,CACjB,cAAe,CAAA,CACjB,GAEI,EAAS,AAAA,CAAA,EAAA,EAAA,WAAU,AAAV,EAAY,AAAC,IAIpB,EAAM,OAAO,CAAC,aAAa,EAAI,CAAE,EAAE,aAAa,CAAa,QAAQ,CAAC,EAAE,aAAa,IACvF,EAAM,OAAO,CAAC,aAAa,CAAG,CAAA,EAE1B,GACF,EAAa,GAGX,GACF,EAAoB,CAAA,GAG1B,EAAG,CAAC,EAAc,EAAqB,EAAM,EAEzC,EAAmB,AAAA,CAAA,EAAA,EAAA,qBAAoB,AAApB,EAAsB,GACzC,EAAU,AAAA,CAAA,EAAA,EAAA,WAAU,AAAV,EAAY,AAAC,IAGpB,EAAM,OAAO,CAAC,aAAa,EAAI,SAAS,aAAa,GAAK,EAAE,MAAM,GACjE,GACF,EAAc,GAGZ,GACF,EAAoB,CAAA,GAGtB,EAAM,OAAO,CAAC,aAAa,CAAG,CAAA,EAC9B,EAAiB,GAErB,EAAG,CAAC,EAAe,EAAqB,EAAiB,SAEzD,AAAI,EACK,CACL,iBAAkB,CAEhB,QAAS,KAAA,EACT,OAAQ,KAAA,CACV,CACF,EAGK,CACL,iBAAkB,CAChB,QAAA,EACA,OAAA,CACF,CACF,CACF,C,E,C,M,Q,U,Q,iD,O,E,C,M,C,S,C,C,C,C,C,E,I,E,E,kD,E,iB,C,GCjBA,EAAA,MAAA,CAAA,EAAA,WAAA,IAAgB,GAnEhB,IAAA,EAAA,EAAA,SAgBA,IAAI,EAAkC,CAAA,EAClC,EAAa,EAEjB,SAAS,IACP,EAAkC,CAAA,EAMlC,WAAW,KACT,EAAkC,CAAA,CACpC,EAAG,GACL,CAEA,SAAS,EAAyB,CAAC,EACX,UAAlB,EAAE,WAAW,EACf,GAEJ,CAEA,SAAS,IACP,GAAI,AAAoB,aAApB,OAAO,SAWX,MAPI,AAAwB,aAAxB,OAAO,aACT,SAAS,gBAAgB,CAAC,YAAa,GAEvC,SAAS,gBAAgB,CAAC,WAAY,GAGxC,IACO,OAED,EAAa,IAIb,AAAwB,aAAxB,OAAO,aACT,SAAS,mBAAmB,CAAC,YAAa,GAE1C,SAAS,mBAAmB,CAAC,WAAY,GAE7C,CACF,CAMO,SAAS,EAAS,CAAiB,EACxC,GAAI,CACF,aAAA,CAAY,CACZ,cAAA,CAAa,CACb,WAAA,CAAU,CACV,WAAA,CAAU,CACX,CAAG,EAEA,CAAC,EAAW,EAAW,CAAG,AAAA,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAS,CAAA,GACnC,EAAQ,AAAA,CAAA,EAAA,EAAA,MAAK,AAAL,EAAO,CACjB,UAAW,CAAA,EACX,0BAA2B,CAAA,EAC3B,YAAa,GACb,OAAQ,IACV,GAAG,OAAO,CAEV,AAAA,CAAA,EAAA,EAAA,SAAQ,AAAR,EAAU,EAAwB,EAAE,EAEpC,GAAI,CAAC,WAAA,CAAU,CAAE,gBAAA,CAAe,CAAC,CAAG,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAQ,KAC1C,IAAI,EAAoB,CAAC,EAAO,KAE9B,GADA,EAAM,WAAW,CAAG,EAChB,GAAc,AAAgB,UAAhB,GAA2B,EAAM,SAAS,EAAI,CAAC,EAAM,aAAa,CAAC,QAAQ,CAAC,EAAM,MAAM,EACxG,MAGF,CAAA,EAAM,SAAS,CAAG,CAAA,EAClB,IAAI,EAAS,EAAM,aAAa,AAChC,CAAA,EAAM,MAAM,CAAG,EAEX,GACF,EAAa,CACX,KAAM,aACN,OAAA,EACA,YAAA,CACF,GAGE,GACF,EAAc,CAAA,GAGhB,EAAW,CAAA,EACb,EAEI,EAAkB,CAAC,EAAO,KAI5B,GAHA,EAAM,WAAW,CAAG,GACpB,EAAM,MAAM,CAAG,KAEX,AAAgB,UAAhB,GAA2B,CAAC,EAAM,SAAS,CAC7C,MAGF,CAAA,EAAM,SAAS,CAAG,CAAA,EAClB,IAAI,EAAS,EAAM,aAAa,CAC5B,GACF,EAAW,CACT,KAAM,WACN,OAAA,EACA,YAAA,CACF,GAGE,GACF,EAAc,CAAA,GAGhB,EAAW,CAAA,EACb,EAEI,EAA4B,CAAC,EAmCjC,MAjCI,AAAwB,aAAxB,OAAO,cACT,EAAW,cAAc,CAAG,AAAC,IACvB,GAAmC,AAAkB,UAAlB,EAAE,WAAW,EAIpD,EAAkB,EAAG,EAAE,WAAW,CACpC,EAEA,EAAW,cAAc,CAAG,AAAC,IACvB,CAAC,GAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAClD,EAAgB,EAAG,EAAE,WAAW,CAEpC,IAEA,EAAW,YAAY,CAAG,KACxB,EAAM,yBAAyB,CAAG,CAAA,CACpC,EAEA,EAAW,YAAY,CAAG,AAAC,IACpB,EAAM,yBAAyB,EAAK,GACvC,EAAkB,EAAG,SAGvB,EAAM,yBAAyB,CAAG,CAAA,CACpC,EAEA,EAAW,YAAY,CAAG,AAAC,IACrB,CAAC,GAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAClD,EAAgB,EAAG,QAEvB,GAEK,CAAC,WAAA,EAAY,gBAAA,CAAe,CACrC,EAAG,CAAC,EAAc,EAAe,EAAY,EAAY,EAAM,EAW/D,MATA,AAAA,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,KAGJ,GACF,EAAgB,CAAC,cAAe,EAAM,MAAM,AAAA,EAAG,EAAM,WAAW,CAGpE,EAAG,CAAC,EAAW,EAER,CACL,WAAA,EACA,UAAA,CACF,CACF,C,E,C,M,Q,iD,O,E,C,M,C,S,C,C,C,C,C,E,I,E,E,kD,E,iB,C,GC5KA,EAAA,MAAA,CAAA,EAAA,qBAAA,IAAgB,GAhBhB,IAAA,EAAA,EAAA,qBAEA,EAAA,EAAA,SAcO,SAAS,EAAmB,CAA2B,EAC5D,GAAI,CAAC,IAAA,CAAG,CAAE,kBAAA,CAAiB,CAAE,WAAA,CAAU,CAAE,uBAAA,CAAsB,CAAC,CAAG,EAC/D,EAAW,AAAA,CAAA,EAAA,EAAA,MAAK,AAAL,EAAO,CACpB,cAAe,CAAA,EACf,0BAA2B,CAAA,CAC7B,GAEI,EAAgB,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,AAAC,IAC9B,GAAqB,EAAa,EAAG,KACnC,GACF,EAAuB,GAEzB,EAAS,OAAO,CAAC,aAAa,CAAG,CAAA,EAErC,GAEI,EAAyB,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,AAAC,IACvC,GACF,EAAkB,EAEtB,GAEA,AAAA,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,KACR,IAAI,EAAQ,EAAS,OAAO,CAC5B,GAAI,EACF,OAGF,IAAM,EAAU,EAAI,OAAO,CACrB,EAAiB,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,GAGxC,GAAI,AAAwB,aAAxB,OAAO,aAA8B,CACvC,IAAI,EAAc,AAAC,IACb,EAAM,aAAa,EAAI,EAAa,EAAG,IACzC,EAAuB,GAEzB,EAAM,aAAa,CAAG,CAAA,CACxB,EAMA,OAHA,EAAe,gBAAgB,CAAC,cAAe,EAAe,CAAA,GAC9D,EAAe,gBAAgB,CAAC,YAAa,EAAa,CAAA,GAEnD,KACL,EAAe,mBAAmB,CAAC,cAAe,EAAe,CAAA,GACjE,EAAe,mBAAmB,CAAC,YAAa,EAAa,CAAA,EAC/D,CACF,CAAO,CACL,IAAI,EAAY,AAAC,IACX,EAAM,yBAAyB,CACjC,EAAM,yBAAyB,CAAG,CAAA,EACzB,EAAM,aAAa,EAAI,EAAa,EAAG,IAChD,EAAuB,GAEzB,EAAM,aAAa,CAAG,CAAA,CACxB,EAEI,EAAa,AAAC,IAChB,EAAM,yBAAyB,CAAG,CAAA,EAC9B,EAAM,aAAa,EAAI,EAAa,EAAG,IACzC,EAAuB,GAEzB,EAAM,aAAa,CAAG,CAAA,CACxB,EAOA,OALA,EAAe,gBAAgB,CAAC,YAAa,EAAe,CAAA,GAC5D,EAAe,gBAAgB,CAAC,UAAW,EAAW,CAAA,GACtD,EAAe,gBAAgB,CAAC,aAAc,EAAe,CAAA,GAC7D,EAAe,gBAAgB,CAAC,WAAY,EAAY,CAAA,GAEjD,KACL,EAAe,mBAAmB,CAAC,YAAa,EAAe,CAAA,GAC/D,EAAe,mBAAmB,CAAC,UAAW,EAAW,CAAA,GACzD,EAAe,mBAAmB,CAAC,aAAc,EAAe,CAAA,GAChE,EAAe,mBAAmB,CAAC,WAAY,EAAY,CAAA,EAC7D,CACF,CACF,EAAG,CAAC,EAAK,EAAY,EAAe,EAAuB,CAC7D,CAEA,SAAS,EAAa,CAAK,CAAE,CAAG,EAC9B,GAAI,EAAM,MAAM,CAAG,EACjB,MAAO,CAAA,EAGT,GAAI,EAAM,MAAM,CAAE,CAEhB,IAAM,EAAgB,EAAM,MAAM,CAAC,aAAa,CAChD,GAAI,CAAC,GAAiB,CAAC,EAAc,eAAe,CAAC,QAAQ,CAAC,EAAM,MAAM,GAKtE,EAAM,MAAM,CAAC,OAAO,CAAC,+BAJvB,MAAO,CAAA,CAOX,CAEA,OAAO,EAAI,OAAO,EAAI,CAAC,EAAI,OAAO,CAAC,QAAQ,CAAC,EAAM,MAAM,CAC1D,C,E,C,oB,Q,M,Q,iD,O,E,C,Q,C,S,C,C,C,C,C,EC3HC,IAAA,EAAA,EAAA,kD,E,iB,C,GAkBD,EAAA,MAAA,CAAA,EAAA,cAAA,IAAgB,GAhBhB,IAAA,EAAA,EAAA,wBAgBO,SAAS,EAAY,CAAoB,EAC9C,MAAO,CACL,cAAe,EAAM,UAAU,CAAG,CAAC,EAAI,CACrC,UAAW,AAAA,CAAA,EAAA,EAAA,kBAAkB,AAAlB,EAAmB,EAAM,SAAS,EAC7C,QAAS,AAAA,CAAA,EAAA,EAAA,kBAAkB,AAAlB,EAAmB,EAAM,OAAO,CAC3C,CACF,CACF,C,E,C,uB,Q,iD,O,E,C,Q,C,S,C,C,C,C,C,ECzBC,IAAA,EAAA,EAAA,kDAQM,SAAS,EAA6C,CAAmC,EAC9F,GAAI,CAAC,EACH,OAGF,IAAI,EAAwB,CAAA,EAC5B,OAAO,AAAC,IAiBN,EAhB0B,CACxB,GAAG,CAAC,CACJ,iBACE,EAAE,cAAc,EAClB,EACA,mBAAA,IACS,EAAE,kBAAkB,GAE7B,kBACE,QAAQ,KAAK,CAAC,uIAChB,EACA,sBACE,EAAwB,CAAA,CAC1B,CACF,GAII,GACF,EAAE,eAAe,EAErB,CACF,C,E,iB,C,GA7BA,EAAA,MAAA,CAAA,EAAA,qBAAA,IAAgB,E,E,C,iD,O,E,C,M,C,S,C,C,C,C,C,ECRf,IAAA,EAAA,EAAA,kD,E,iB,C,GAwBD,EAAA,MAAA,CAAA,EAAA,UAAA,IAAgB,GAtBhB,IAAA,EAAA,EAAA,mBAEA,EAAA,EAAA,SACA,EAAA,EAAA,qBAmBO,SAAS,EAAQ,CAAiB,EACvC,GAAI,CAAC,YAAA,CAAW,CAAE,OAAA,CAAM,CAAE,UAAA,CAAS,CAAC,CAAG,EAEnC,EAAQ,AAAA,CAAA,EAAA,EAAA,MAAK,AAAL,EAIT,CAAC,QAAS,CAAA,EAAO,aAAc,KAAM,GAAI,IAAI,GAE5C,CAAC,kBAAA,CAAiB,CAAE,qBAAA,CAAoB,CAAC,CAAG,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,IAE5C,EAAO,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,CAAC,EAA0B,EAA0B,EAAgB,KACzF,CAAA,AAAW,IAAX,GAAgB,AAAW,IAAX,CAAW,IAI1B,EAAM,OAAO,CAAC,OAAO,GACxB,EAAM,OAAO,CAAC,OAAO,CAAG,CAAA,EACxB,IAAc,CACZ,KAAM,YACN,YAAA,EACA,SAAU,EAAc,QAAQ,CAChC,QAAS,EAAc,OAAO,CAC9B,QAAS,EAAc,OAAO,CAC9B,OAAQ,EAAc,MAAM,AAC9B,IAEF,IAAS,CACP,KAAM,OACN,YAAA,EACA,OAAQ,EACR,OAAQ,EACR,SAAU,EAAc,QAAQ,CAChC,QAAS,EAAc,OAAO,CAC9B,QAAS,EAAc,OAAO,CAC9B,OAAQ,EAAc,MAAM,AAC9B,GACF,GAEI,EAAM,AAAA,CAAA,EAAA,EAAA,cAAc,AAAd,EAAe,CAAC,EAA0B,KAClD,AAAA,CAAA,EAAA,EAAA,oBAAmB,AAAnB,IACI,EAAM,OAAO,CAAC,OAAO,EACvB,IAAY,CACV,KAAM,UACN,YAAA,EACA,SAAU,EAAc,QAAQ,CAChC,QAAS,EAAc,OAAO,CAC9B,QAAS,EAAc,OAAO,CAC9B,OAAQ,EAAc,MAAM,AAC9B,EAEJ,GAgJA,MAAO,CAAC,UA9IQ,AAAA,CAAA,EAAA,EAAA,OAAM,AAAN,EAAQ,KACtB,IAAI,EAA2B,CAAC,EAE5B,EAAQ,KACV,AAAA,CAAA,EAAA,EAAA,oBAAmB,AAAnB,IACA,EAAM,OAAO,CAAC,OAAO,CAAG,CAAA,CAC1B,EAEA,GAAI,AAAwB,aAAxB,OAAO,aAA8B,CACvC,IAAI,EAAc,AAAC,IACA,IAAb,EAAE,MAAM,GACV,EAAK,EAAG,QAAS,EAAE,KAAK,CAAI,CAAA,EAAM,OAAO,CAAC,YAAY,EAAE,OAAS,CAAA,EAAI,EAAE,KAAK,CAAI,CAAA,EAAM,OAAO,CAAC,YAAY,EAAE,OAAS,CAAA,GACrH,EAAM,OAAO,CAAC,YAAY,CAAG,CAAC,MAAO,EAAE,KAAK,CAAE,MAAO,EAAE,KAAK,AAAA,EAEhE,EACI,EAAY,AAAC,IACE,IAAb,EAAE,MAAM,GACV,EAAI,EAAG,SACP,EAAqB,OAAQ,YAAa,EAAa,CAAA,GACvD,EAAqB,OAAQ,UAAW,EAAW,CAAA,GAEvD,CACA,CAAA,EAAU,WAAW,CAAG,AAAC,IACN,IAAb,EAAE,MAAM,GACV,IACA,EAAE,eAAe,GACjB,EAAE,cAAc,GAChB,EAAM,OAAO,CAAC,YAAY,CAAG,CAAC,MAAO,EAAE,KAAK,CAAE,MAAO,EAAE,KAAK,AAAA,EAC5D,EAAkB,OAAQ,YAAa,EAAa,CAAA,GACpD,EAAkB,OAAQ,UAAW,EAAW,CAAA,GAEpD,EAEA,IAAI,EAAc,AAAC,IACjB,IAAI,EAAQ,IAAI,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAA,CAAU,CAAC,GAAK,IAAe,EAAM,OAAO,CAAC,EAAE,EAC7F,GAAI,GAAS,EAAG,CACd,GAAI,CAAC,MAAA,CAAK,CAAE,MAAA,CAAK,CAAC,CAAG,EAAE,cAAc,CAAC,EAAM,CAC5C,EAAK,EAAG,QAAS,EAAS,CAAA,EAAM,OAAO,CAAC,YAAY,EAAE,OAAS,CAAA,EAAI,EAAS,CAAA,EAAM,OAAO,CAAC,YAAY,EAAE,OAAS,CAAA,GACjH,EAAM,OAAO,CAAC,YAAY,CAAG,CAAC,MAAA,EAAO,MAAA,CAAK,CAC5C,CACF,EACI,EAAa,AAAC,IACJ,IAAI,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAA,CAAU,CAAC,GAAK,IAAe,EAAM,OAAO,CAAC,EAAE,GAChF,IACX,EAAI,EAAG,SACP,EAAM,OAAO,CAAC,EAAE,CAAG,KACnB,EAAqB,OAAQ,YAAa,GAC1C,EAAqB,OAAQ,WAAY,GACzC,EAAqB,OAAQ,cAAe,GAEhD,CACA,CAAA,EAAU,YAAY,CAAG,AAAC,IACxB,GAAI,AAA4B,IAA5B,EAAE,cAAc,CAAC,MAAM,EAAU,AAAoB,MAApB,EAAM,OAAO,CAAC,EAAE,CACnD,OAGF,GAAI,CAAC,MAAA,CAAK,CAAE,MAAA,CAAK,CAAE,WAAA,CAAU,CAAC,CAAG,EAAE,cAAc,CAAC,EAAE,CACpD,IACA,EAAE,eAAe,GACjB,EAAE,cAAc,GAChB,EAAM,OAAO,CAAC,YAAY,CAAG,CAAC,MAAA,EAAO,MAAA,CAAK,EAC1C,EAAM,OAAO,CAAC,EAAE,CAAG,EACnB,EAAkB,OAAQ,YAAa,EAAa,CAAA,GACpD,EAAkB,OAAQ,WAAY,EAAY,CAAA,GAClD,EAAkB,OAAQ,cAAe,EAAY,CAAA,EACvD,CACF,KAAO,CACL,IAAI,EAAgB,AAAC,IACnB,GAAI,EAAE,SAAS,GAAK,EAAM,OAAO,CAAC,EAAE,CAAE,CACpC,IAAI,EAAe,EAAE,WAAW,EAAI,QAKpC,EAAK,EAAG,EAAa,EAAE,KAAK,CAAI,CAAA,EAAM,OAAO,CAAC,YAAY,EAAE,OAAS,CAAA,EAAI,EAAE,KAAK,CAAI,CAAA,EAAM,OAAO,CAAC,YAAY,EAAE,OAAS,CAAA,GACzH,EAAM,OAAO,CAAC,YAAY,CAAG,CAAC,MAAO,EAAE,KAAK,CAAE,MAAO,EAAE,KAAK,AAAA,CAC9D,CACF,EAEI,EAAc,AAAC,IACjB,GAAI,EAAE,SAAS,GAAK,EAAM,OAAO,CAAC,EAAE,CAAE,CACpC,IAAI,EAAe,EAAE,WAAW,EAAI,QACpC,EAAI,EAAG,GACP,EAAM,OAAO,CAAC,EAAE,CAAG,KACnB,EAAqB,OAAQ,cAAe,EAAe,CAAA,GAC3D,EAAqB,OAAQ,YAAa,EAAa,CAAA,GACvD,EAAqB,OAAQ,gBAAiB,EAAa,CAAA,EAC7D,CACF,CAEA,CAAA,EAAU,aAAa,CAAG,AAAC,IACR,IAAb,EAAE,MAAM,EAAU,AAAoB,MAApB,EAAM,OAAO,CAAC,EAAE,GACpC,IACA,EAAE,eAAe,GACjB,EAAE,cAAc,GAChB,EAAM,OAAO,CAAC,YAAY,CAAG,CAAC,MAAO,EAAE,KAAK,CAAE,MAAO,EAAE,KAAK,AAAA,EAC5D,EAAM,OAAO,CAAC,EAAE,CAAG,EAAE,SAAS,CAC9B,EAAkB,OAAQ,cAAe,EAAe,CAAA,GACxD,EAAkB,OAAQ,YAAa,EAAa,CAAA,GACpD,EAAkB,OAAQ,gBAAiB,EAAa,CAAA,GAE5D,CACF,CAEA,IAAI,EAAsB,CAAC,EAAc,EAAgB,KACvD,IACA,EAAK,EAAG,WAAY,EAAQ,GAC5B,EAAI,EAAG,WACT,EA+BA,OA7BA,EAAU,SAAS,CAAG,AAAC,IACrB,OAAQ,EAAE,GAAG,EACX,IAAK,OACL,IAAK,YACH,EAAE,cAAc,GAChB,EAAE,eAAe,GACjB,EAAoB,EAAG,GAAI,GAC3B,KACF,KAAK,QACL,IAAK,aACH,EAAE,cAAc,GAChB,EAAE,eAAe,GACjB,EAAoB,EAAG,EAAG,GAC1B,KACF,KAAK,KACL,IAAK,UACH,EAAE,cAAc,GAChB,EAAE,eAAe,GACjB,EAAoB,EAAG,EAAG,IAC1B,KACF,KAAK,OACL,IAAK,YACH,EAAE,cAAc,GAChB,EAAE,eAAe,GACjB,EAAoB,EAAG,EAAG,EAE9B,CACF,EAEO,CACT,EAAG,CAAC,EAAO,EAAmB,EAAsB,EAAM,EAAI,CAE7C,CACnB,C,E,C,kB,Q,M,Q,oB,Q,iD,O,E,C,Q,C,S,C,C,C,C,C,EC5NC,IAAA,EAAA,EAAA,kD,E,iB,C,GAyBD,EAAA,MAAA,CAAA,EAAA,uBAAA,IAAgB,GAkBhB,EAAA,MAAA,CAAA,EAAA,uBAAA,IAAgB,GAzChB,IAAA,EAAA,EAAA,qBAmBA,IAAI,EAAe,UACf,EAAkB,GAClB,EAAqB,IAAI,QAEtB,SAAS,EAAqB,CAAgB,EACnD,GAAI,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,IAAS,CACX,GAAI,AAAU,YAAV,EAAqB,CAEvB,IAAM,EAAiB,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,GACxC,EAAkB,EAAe,eAAe,CAAC,KAAK,CAAC,gBAAgB,CACvE,EAAe,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAG,MAC1D,CAEA,EAAQ,UACV,KAAW,CAAA,aAAkB,aAAe,aAAkB,UAAA,IAG5D,EAAmB,GAAG,CAAC,EAAQ,EAAO,KAAK,CAAC,UAAU,EACtD,EAAO,KAAK,CAAC,UAAU,CAAG,OAE9B,CAEO,SAAS,EAAqB,CAAgB,EACnD,GAAI,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,IAGY,aAAV,IAIJ,EAAQ,YAIR,WAAW,KAGT,AAAA,CAAA,EAAA,EAAA,kBAAkB,AAAlB,EAAmB,KAEjB,GAAI,AAAU,cAAV,EAAuB,CAEzB,IAAM,EAAiB,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,EACsB,CAAA,SAA1D,EAAe,eAAe,CAAC,KAAK,CAAC,gBAAgB,EACvD,CAAA,EAAe,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAG,GAAmB,EAD7E,EAIA,EAAkB,GAClB,EAAQ,SACV,CACF,EACF,EAAG,WACE,GAAI,CAAA,aAAkB,aAAe,aAAkB,UAAA,GAGxD,GAAU,EAAmB,GAAG,CAAC,GAAS,CAC5C,IAAI,EAAsB,EAAmB,GAAG,CAAC,EAEjB,CAAA,SAA5B,EAAO,KAAK,CAAC,UAAU,EACzB,CAAA,EAAO,KAAK,CAAC,UAAU,CAAG,CAD5B,EAIqC,KAAjC,EAAO,YAAY,CAAC,UACtB,EAAO,eAAe,CAAC,SAEzB,EAAmB,MAAM,CAAC,EAC5B,CAEJ,C,E,C,oB,Q,iD,O,E,C,M,C,S,C,C,C,C,C,E,I,E,E,kD,E,iB,C,GCkDA,EAAA,MAAA,CAAA,EAAA,WAAA,IAAgB,GAnIhB,IAAA,EAAA,EAAA,qBACA,EAAA,EAAA,mBAEA,EAAA,EAAA,aACA,EAAA,EAAA,QAsEA,OAAM,EAUJ,CAAC,CAAqB,AAAQ,AAE9B,aAAY,CAAyB,CAAE,CAAwB,CAAE,CAAwB,CAAE,CAAkB,CAAE,CAF/G,IAAA,CAAA,CAAC,CAAqB,CAAG,CAAA,EAGvB,IAAI,EAAgB,GAAO,QAAU,EAAc,aAAa,CAC1D,EAA6B,GAA2B,wBAC1D,EAAG,EAAI,EACP,EAAS,EAAyB,IACT,OAAzB,EAAc,OAAO,EAAY,AAAyB,MAAzB,EAAc,OAAO,GACxD,EAAU,EAAc,OAAO,CAC/B,EAAU,EAAc,OAAO,EAE7B,IACE,AAAW,MAAX,GAAmB,AAAW,MAAX,GACrB,EAAI,EAAU,EAAK,IAAI,CACvB,EAAI,EAAU,EAAK,GAAG,GAEtB,EAAI,EAAK,KAAK,CAAG,EACjB,EAAI,EAAK,MAAM,CAAG,IAGtB,IAAI,CAAC,IAAI,CAAG,EACZ,IAAI,CAAC,WAAW,CAAG,EACnB,IAAI,CAAC,MAAM,CAAG,EAAc,aAAa,CACzC,IAAI,CAAC,QAAQ,CAAG,EAAc,QAAQ,CACtC,IAAI,CAAC,OAAO,CAAG,EAAc,OAAO,CACpC,IAAI,CAAC,OAAO,CAAG,EAAc,OAAO,CACpC,IAAI,CAAC,MAAM,CAAG,EAAc,MAAM,CAClC,IAAI,CAAC,CAAC,CAAG,EACT,IAAI,CAAC,CAAC,CAAG,CACX,CAEA,qBAAsB,CACpB,IAAI,CAAC,CAAC,CAAqB,CAAG,CAAA,CAChC,CAEA,IAAI,uBAAwB,CAC1B,OAAO,IAAI,CAAC,CAAC,CAAqB,AACpC,CACF,CAEA,IAAM,EAAe,OAAO,eAOrB,SAAS,EAAS,CAAqB,EAC5C,GAAI,CACF,QAAA,CAAO,CACP,cAAA,CAAa,CACb,aAAA,CAAY,CACZ,WAAA,CAAU,CACV,UAAA,CAAS,CACT,WAAA,CAAU,CACV,UAAW,CAAa,CACxB,oBAAA,CAAmB,CACnB,0BAAA,CAAyB,CACzB,0BAAA,CAAyB,CAEzB,IAAK,CAAC,CACN,GAAG,EACJ,CAAG,AArFN,SAAkC,CAAqB,EAErD,IAAI,EAAU,AAAA,CAAA,EAAA,EAAA,UAAS,AAAT,EAAW,EAAA,qBAAoB,EAC7C,GAAI,EAAS,CACX,GAAI,CAAC,SAAA,CAAQ,CAAE,GAAG,EAAa,CAAG,EAClC,EAAQ,AAAA,CAAA,EAAA,EAAA,UAAU,AAAV,EAAW,EAAc,GACjC,GACF,CAGA,MAFA,AAAA,CAAA,EAAA,EAAA,UAAS,AAAT,EAAW,EAAS,EAAM,GAAG,EAEtB,CACT,EA0E+B,GAEzB,CAAC,EAAW,EAAW,CAAG,AAAA,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAS,CAAA,GACnC,EAAM,AAAA,CAAA,EAAA,EAAA,MAAK,AAAL,EAAmB,CAC3B,UAAW,CAAA,EACX,0BAA2B,CAAA,EAC3B,sBAAuB,CAAA,EACvB,kBAAmB,CAAA,EACnB,kBAAmB,CAAA,EACnB,gBAAiB,KACjB,OAAQ,KACR,aAAc,CAAA,EACd,YAAa,IACf,GAEI,CAAC,kBAAA,CAAiB,CAAE,yBAAA,CAAwB,CAAC,CAAG,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,IAEhD,EAAoB,AAAA,CAAA,EAAA,EAAA,cAAc,AAAd,EAAe,CAAC,EAA0B,KAChE,IAAI,EAAQ,EAAI,OAAO,CACvB,GAAI,GAAc,EAAM,iBAAiB,CACvC,MAAO,CAAA,EAGT,IAAI,EAAwB,CAAA,EAE5B,GADA,EAAM,iBAAiB,CAAG,CAAA,EACtB,EAAc,CAChB,IAAI,EAAQ,IAAI,EAAW,aAAc,EAAa,GACtD,EAAa,GACb,EAAwB,EAAM,qBAAqB,AACrD,CASA,OAPI,GACF,EAAc,CAAA,GAGhB,EAAM,iBAAiB,CAAG,CAAA,EAC1B,EAAM,iBAAiB,CAAG,CAAA,EAC1B,EAAW,CAAA,GACJ,CACT,GAEI,EAAkB,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,CAAC,EAA0B,EAA0B,EAAa,CAAA,CAAI,IACzG,IAAI,EAAQ,EAAI,OAAO,CACvB,GAAI,CAAC,EAAM,iBAAiB,CAC1B,MAAO,CAAA,CAGT,CAAA,EAAM,qBAAqB,CAAG,CAAA,EAC9B,EAAM,iBAAiB,CAAG,CAAA,EAC1B,EAAM,iBAAiB,CAAG,CAAA,EAE1B,IAAI,EAAwB,CAAA,EAC5B,GAAI,EAAY,CACd,IAAI,EAAQ,IAAI,EAAW,WAAY,EAAa,GACpD,EAAW,GACX,EAAwB,EAAM,qBAAqB,AACrD,CAQA,GANI,GACF,EAAc,CAAA,GAGhB,EAAW,CAAA,GAEP,GAAW,GAAc,CAAC,EAAY,CACxC,IAAI,EAAQ,IAAI,EAAW,QAAS,EAAa,GACjD,EAAQ,GACR,IAA0B,EAAM,qBAAqB,AACvD,CAGA,OADA,EAAM,iBAAiB,CAAG,CAAA,EACnB,CACT,GAEI,EAAiB,AAAA,CAAA,EAAA,EAAA,cAAc,AAAd,EAAe,CAAC,EAA0B,KAC7D,IAAI,EAAQ,EAAI,OAAO,CACvB,GAAI,EACF,MAAO,CAAA,EAGT,GAAI,EAAW,CACb,EAAM,iBAAiB,CAAG,CAAA,EAC1B,IAAI,EAAQ,IAAI,EAAW,UAAW,EAAa,GAGnD,OAFA,EAAU,GACV,EAAM,iBAAiB,CAAG,CAAA,EACnB,EAAM,qBAAqB,AACpC,CAEA,MAAO,CAAA,CACT,GAEI,EAAS,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,AAAC,IAC3B,IAAI,EAAQ,EAAI,OAAO,AACnB,CAAA,EAAM,SAAS,EAAI,EAAM,MAAM,GAC7B,EAAM,YAAY,EAAI,AAAqB,MAArB,EAAM,WAAW,EACzC,EAAgB,EAAY,EAAM,MAAM,CAAE,GAAI,EAAM,WAAW,CAAE,CAAA,GAEnE,EAAM,SAAS,CAAG,CAAA,EAClB,EAAM,YAAY,CAAG,CAAA,EACrB,EAAM,eAAe,CAAG,KACxB,EAAM,WAAW,CAAG,KACpB,IACK,GACH,AAAA,CAAA,EAAA,EAAA,oBAAmB,AAAnB,EAAqB,EAAM,MAAM,EAGvC,GAEI,EAAsB,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,AAAC,IACpC,GACF,EAAO,EAEX,GAEI,EAAa,AAAA,CAAA,EAAA,EAAA,OAAM,AAAN,EAAQ,KACvB,IAAI,EAAQ,EAAI,OAAO,CACnB,EAA4B,CAC9B,UAAU,CAAC,EACT,GAAI,EAAqB,EAAE,WAAW,CAAE,EAAE,aAAa,GAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAc,CACrG,EAA6B,EAAE,MAAM,CAAa,EAAE,GAAG,GACzD,EAAE,cAAc,GAMlB,IAAI,EAAwB,CAAA,EAC5B,GAAI,CAAC,EAAM,SAAS,EAAI,CAAC,EAAE,MAAM,CAAE,CACjC,EAAM,MAAM,CAAG,EAAE,aAAa,CAC9B,EAAM,SAAS,CAAG,CAAA,EAClB,EAAwB,EAAkB,EAAG,YAK7C,IAAI,EAAiB,EAAE,aAAa,CAOpC,EAAkB,AAAA,CAAA,EAAA,EAAA,gBAAgB,AAAhB,EAAiB,EAAE,aAAa,EAAG,QAAS,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,EANhD,AAAC,IACT,EAAqB,EAAG,IAAmB,CAAC,EAAE,MAAM,EAAI,EAAe,QAAQ,CAAC,EAAE,MAAM,GAAgB,EAAM,MAAM,EACtH,EAAe,EAAY,EAAM,MAAM,CAAE,GAAI,WAEjD,EAE6E,GAAU,CAAA,EACzF,CAEI,GACF,EAAE,eAAe,GAUf,EAAE,OAAO,EAAI,AAAA,CAAA,EAAA,EAAA,KAAK,AAAL,KACf,EAAM,aAAa,EAAE,IAAI,EAAE,GAAG,CAAE,EAAE,WAAW,CAEjD,KAAqB,SAAV,EAAE,GAAG,EACd,CAAA,EAAM,aAAa,CAAG,IAAI,GAD5B,CAGF,EACA,QAAQ,CAAC,EACP,GAAI,CAAA,CAAA,GAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA,GAIvC,GAAK,AAAa,IAAb,EAAE,MAAM,EAAU,CAAC,EAAM,iBAAiB,EAAI,CAAE,AAAA,EAAA,QAAQ,CAAS,SAAS,CAAE,CACnF,IAAI,EAAwB,CAAA,EAO5B,GANI,GACF,EAAE,cAAc,GAKd,CAAC,EAAM,qBAAqB,EAAI,CAAC,EAAM,yBAAyB,EAAI,CAAC,EAAM,SAAS,EAAK,CAAA,AAAsB,YAAtB,EAAM,WAAW,EAAkB,AAAA,CAAA,EAAA,EAAA,cAAc,AAAd,EAAe,EAAE,WAAW,CAAA,EAAI,CAEzJ,GAAe,GAClB,AAAA,CAAA,EAAA,EAAA,qBAAqB,AAArB,EAAsB,EAAE,aAAa,EAGvC,IAAI,EAAiB,EAAkB,EAAG,WACtC,EAAc,EAAe,EAAG,WAChC,EAAe,EAAgB,EAAG,WACtC,EAAwB,GAAkB,GAAe,CAC3D,CAEA,EAAM,yBAAyB,CAAG,CAAA,EAClC,EAAM,qBAAqB,CAAG,CAAA,EAC1B,GACF,EAAE,eAAe,EAErB,CACF,CACF,EAEI,EAAU,AAAC,IACb,GAAI,EAAM,SAAS,EAAI,EAAM,MAAM,EAAI,EAAqB,EAAG,EAAM,MAAM,EAAG,CACxE,EAA6B,EAAE,MAAM,CAAa,EAAE,GAAG,GACzD,EAAE,cAAc,GAGlB,IAAI,EAAS,EAAE,MAAM,CACrB,EAAgB,EAAY,EAAM,MAAM,CAAE,GAAI,WAAY,EAAM,MAAM,CAAC,QAAQ,CAAC,IAChF,IAKc,UAAV,EAAE,GAAG,EAAgB,EAAiB,EAAM,MAAM,GAAK,EAAM,MAAM,CAAC,QAAQ,CAAC,IAAW,CAAC,CAAC,CAAC,EAAa,GAG1G,CAAC,CAAC,EAAa,CAAG,CAAA,EAClB,AAAA,CAAA,EAAA,EAAA,QAAO,AAAP,EAAS,EAAM,MAAM,CAAE,EAAG,CAAA,IAG5B,EAAM,SAAS,CAAG,CAAA,EAClB,EAAM,aAAa,EAAE,OAAO,EAAE,GAAG,CACnC,MAAO,GAAI,AAAU,SAAV,EAAE,GAAG,EAAe,EAAM,aAAa,EAAE,KAAM,CAIxD,IAAI,EAAS,EAAM,aAAa,CAEhC,IAAK,IAAI,KADT,EAAM,aAAa,CAAG,KAAA,EACJ,EAAO,MAAM,IAC7B,EAAM,MAAM,EAAE,cAAc,IAAI,cAAc,QAAS,GAE3D,CACF,EAEA,GAAI,AAAwB,aAAxB,OAAO,aAA8B,CACvC,EAAW,aAAa,CAAG,AAAC,IAE1B,GAAI,AAAa,IAAb,EAAE,MAAM,EAAU,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EACtD,OAOF,GAAI,AAAA,CAAA,EAAA,EAAA,qBAAoB,AAApB,EAAsB,EAAE,WAAW,EAAG,CACxC,EAAM,WAAW,CAAG,UACpB,MACF,CAII,EAAyB,EAAE,aAAa,GAC1C,EAAE,cAAc,GAGlB,EAAM,WAAW,CAAG,EAAE,WAAW,CAEjC,IAAI,EAAwB,CAAA,CACvB,CAAA,EAAM,SAAS,GAClB,EAAM,SAAS,CAAG,CAAA,EAClB,EAAM,YAAY,CAAG,CAAA,EACrB,EAAM,eAAe,CAAG,EAAE,SAAS,CACnC,EAAM,MAAM,CAAG,EAAE,aAAa,CAEzB,GAAe,GAClB,AAAA,CAAA,EAAA,EAAA,qBAAqB,AAArB,EAAsB,EAAE,aAAa,EAGlC,GACH,AAAA,CAAA,EAAA,EAAA,oBAAmB,AAAnB,EAAqB,EAAM,MAAM,EAGnC,EAAwB,EAAkB,EAAG,EAAM,WAAW,EAE9D,EAAkB,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,EAAE,aAAa,EAAG,cAAe,EAAe,CAAA,GACnF,EAAkB,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,EAAE,aAAa,EAAG,YAAa,EAAa,CAAA,GAC/E,EAAkB,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,EAAE,aAAa,EAAG,gBAAiB,EAAiB,CAAA,IAGrF,GACF,EAAE,eAAe,EAErB,EAEA,EAAW,WAAW,CAAG,AAAC,IACnB,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAIlC,AAAa,IAAb,EAAE,MAAM,GAIN,EAAyB,EAAE,aAAa,GAC1C,EAAE,cAAc,GAGlB,EAAE,eAAe,GAErB,EAEA,EAAW,WAAW,CAAG,AAAC,IAEnB,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAgB,AAAsB,YAAtB,EAAM,WAAW,EAOnE,AAAa,IAAb,EAAE,MAAM,EAAU,EAAa,EAAG,EAAE,aAAa,GACnD,EAAe,EAAG,EAAM,WAAW,EAAI,EAAE,WAAW,CAExD,EAKA,IAAI,EAAgB,AAAC,IACf,EAAE,SAAS,GAAK,EAAM,eAAe,GAIrC,EAAM,MAAM,EAAI,EAAa,EAAG,EAAM,MAAM,EACzC,EAAM,YAAY,EAAI,AAAqB,MAArB,EAAM,WAAW,GAC1C,EAAM,YAAY,CAAG,CAAA,EACrB,EAAkB,EAAY,EAAM,MAAM,CAAE,GAAI,EAAM,WAAW,GAE1D,EAAM,MAAM,EAAI,EAAM,YAAY,EAAI,AAAqB,MAArB,EAAM,WAAW,GAChE,EAAM,YAAY,CAAG,CAAA,EACrB,EAAgB,EAAY,EAAM,MAAM,CAAE,GAAI,EAAM,WAAW,CAAE,CAAA,GACjE,EAAoB,IAExB,EAEI,EAAc,AAAC,IACb,EAAE,SAAS,GAAK,EAAM,eAAe,EAAI,EAAM,SAAS,EAAI,AAAa,IAAb,EAAE,MAAM,EAAU,EAAM,MAAM,GACxF,EAAa,EAAG,EAAM,MAAM,GAAK,AAAqB,MAArB,EAAM,WAAW,CACpD,EAAgB,EAAY,EAAM,MAAM,CAAE,GAAI,EAAM,WAAW,EACtD,EAAM,YAAY,EAAI,AAAqB,MAArB,EAAM,WAAW,EAChD,EAAgB,EAAY,EAAM,MAAM,CAAE,GAAI,EAAM,WAAW,CAAE,CAAA,GAGnE,EAAM,SAAS,CAAG,CAAA,EAClB,EAAM,YAAY,CAAG,CAAA,EACrB,EAAM,eAAe,CAAG,KACxB,EAAM,WAAW,CAAG,KACpB,IACK,GACH,AAAA,CAAA,EAAA,EAAA,oBAAmB,AAAnB,EAAqB,EAAM,MAAM,EAK/B,eAAgB,EAAM,MAAM,EAAI,AAAkB,UAAlB,EAAE,WAAW,EAC/C,EAAkB,EAAM,MAAM,CAAE,WAAY,EAAY,CAAC,KAAM,CAAA,CAAI,GAGzE,EAQI,EAAa,AAAC,IAEZ,EAAuB,EAAE,MAAM,GACjC,EAAE,cAAc,EAEpB,EAEI,EAAkB,AAAC,IACrB,EAAO,EACT,CAEA,CAAA,EAAW,WAAW,CAAG,AAAC,IACnB,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAKtC,EAAO,EACT,CACF,KAAO,CACL,EAAW,WAAW,CAAG,AAAC,IAExB,GAAI,AAAa,IAAb,EAAE,MAAM,EAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAUxD,GAJI,EAAyB,EAAE,aAAa,GAC1C,EAAE,cAAc,GAGd,EAAM,yBAAyB,CAAE,CACnC,EAAE,eAAe,GACjB,MACF,CAEA,EAAM,SAAS,CAAG,CAAA,EAClB,EAAM,YAAY,CAAG,CAAA,EACrB,EAAM,MAAM,CAAG,EAAE,aAAa,CAC9B,EAAM,WAAW,CAAG,AAAA,CAAA,EAAA,EAAA,cAAc,AAAd,EAAe,EAAE,WAAW,EAAI,UAAY,QAE3D,GAAe,GAClB,AAAA,CAAA,EAAA,EAAA,qBAAqB,AAArB,EAAsB,EAAE,aAAa,EAGX,EAAkB,EAAG,EAAM,WAAW,GAEhE,EAAE,eAAe,GAGnB,EAAkB,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,EAAE,aAAa,EAAG,UAAW,EAAW,CAAA,GAC7E,EAEA,EAAW,YAAY,CAAG,AAAC,IACzB,GAAI,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EACpC,OAGF,IAAI,EAAwB,CAAA,CACxB,CAAA,EAAM,SAAS,EAAI,CAAC,EAAM,yBAAyB,EAAI,AAAqB,MAArB,EAAM,WAAW,GAC1E,EAAM,YAAY,CAAG,CAAA,EACrB,EAAwB,EAAkB,EAAG,EAAM,WAAW,GAG5D,GACF,EAAE,eAAe,EAErB,EAEA,EAAW,YAAY,CAAG,AAAC,IACzB,GAAI,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EACpC,OAGF,IAAI,EAAwB,CAAA,CACxB,CAAA,EAAM,SAAS,EAAI,CAAC,EAAM,yBAAyB,EAAI,AAAqB,MAArB,EAAM,WAAW,GAC1E,EAAM,YAAY,CAAG,CAAA,EACrB,EAAwB,EAAgB,EAAG,EAAM,WAAW,CAAE,CAAA,GAC9D,EAAoB,IAGlB,GACF,EAAE,eAAe,EAErB,EAEA,EAAW,SAAS,CAAG,AAAC,IACjB,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAIlC,CAAC,EAAM,yBAAyB,EAAI,AAAa,IAAb,EAAE,MAAM,EAC9C,EAAe,EAAG,EAAM,WAAW,EAAI,QAE3C,EAEA,IAAI,EAAY,AAAC,IAEf,GAAI,AAAa,IAAb,EAAE,MAAM,EAOZ,GAHA,EAAM,SAAS,CAAG,CAAA,EAClB,IAEI,EAAM,yBAAyB,CAAE,CACnC,EAAM,yBAAyB,CAAG,CAAA,EAClC,MACF,CAEI,EAAM,MAAM,EAAI,EAAa,EAAG,EAAM,MAAM,GAAK,AAAqB,MAArB,EAAM,WAAW,CACpE,EAAgB,EAAY,EAAM,MAAM,CAAE,GAAI,EAAM,WAAW,EACtD,EAAM,MAAM,EAAI,EAAM,YAAY,EAAI,AAAqB,MAArB,EAAM,WAAW,EAChE,EAAgB,EAAY,EAAM,MAAM,CAAE,GAAI,EAAM,WAAW,CAAE,CAAA,GAGnE,EAAM,YAAY,CAAG,CAAA,EACvB,CAEA,CAAA,EAAW,YAAY,CAAG,AAAC,IACzB,GAAI,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EACpC,OAGF,IAAI,EAAQ,AA6KpB,SAA2B,CAAiB,EAC1C,GAAM,CAAC,cAAA,CAAa,CAAC,CAAG,SACxB,AAAI,EAAc,MAAM,CAAG,EAClB,CAAa,CAAC,EAAE,CAElB,IACT,EAnLsC,EAAE,WAAW,EACtC,IAGL,EAAM,eAAe,CAAG,EAAM,UAAU,CACxC,EAAM,yBAAyB,CAAG,CAAA,EAClC,EAAM,YAAY,CAAG,CAAA,EACrB,EAAM,SAAS,CAAG,CAAA,EAClB,EAAM,MAAM,CAAG,EAAE,aAAa,CAC9B,EAAM,WAAW,CAAG,QAIf,GAAe,GAClB,AAAA,CAAA,EAAA,EAAA,qBAAqB,AAArB,EAAsB,EAAE,aAAa,EAGlC,GACH,AAAA,CAAA,EAAA,EAAA,oBAAmB,AAAnB,EAAqB,EAAM,MAAM,EAGP,EAAkB,EAAiB,EAAM,MAAM,CAAE,GAAI,EAAM,WAAW,GAEhG,EAAE,eAAe,GAGnB,EAAkB,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,EAAE,aAAa,EAAG,SAAU,EAAU,CAAA,GACzE,EAEA,EAAW,WAAW,CAAG,AAAC,IACxB,GAAI,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EACpC,OAGF,GAAI,CAAC,EAAM,SAAS,CAAE,CACpB,EAAE,eAAe,GACjB,MACF,CAEA,IAAI,EAAQ,EAAa,EAAE,WAAW,CAAE,EAAM,eAAe,EACzD,EAAwB,CAAA,CACxB,CAAA,GAAS,EAAa,EAAO,EAAE,aAAa,EACzC,EAAM,YAAY,EAAI,AAAqB,MAArB,EAAM,WAAW,GAC1C,EAAM,YAAY,CAAG,CAAA,EACrB,EAAwB,EAAkB,EAAiB,EAAM,MAAM,CAAG,GAAI,EAAM,WAAW,GAExF,EAAM,YAAY,EAAI,AAAqB,MAArB,EAAM,WAAW,GAChD,EAAM,YAAY,CAAG,CAAA,EACrB,EAAwB,EAAgB,EAAiB,EAAM,MAAM,CAAG,GAAI,EAAM,WAAW,CAAE,CAAA,GAC/F,EAAoB,EAAiB,EAAM,MAAM,CAAG,KAGlD,GACF,EAAE,eAAe,EAErB,EAEA,EAAW,UAAU,CAAG,AAAC,IACvB,GAAI,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EACpC,OAGF,GAAI,CAAC,EAAM,SAAS,CAAE,CACpB,EAAE,eAAe,GACjB,MACF,CAEA,IAAI,EAAQ,EAAa,EAAE,WAAW,CAAE,EAAM,eAAe,EACzD,EAAwB,CAAA,CACxB,CAAA,GAAS,EAAa,EAAO,EAAE,aAAa,GAAK,AAAqB,MAArB,EAAM,WAAW,EACpE,EAAe,EAAiB,EAAM,MAAM,CAAG,GAAI,EAAM,WAAW,EACpE,EAAwB,EAAgB,EAAiB,EAAM,MAAM,CAAG,GAAI,EAAM,WAAW,GACpF,EAAM,YAAY,EAAI,AAAqB,MAArB,EAAM,WAAW,EAChD,CAAA,EAAwB,EAAgB,EAAiB,EAAM,MAAM,CAAG,GAAI,EAAM,WAAW,CAAE,CAAA,EADjG,EAII,GACF,EAAE,eAAe,GAGnB,EAAM,SAAS,CAAG,CAAA,EAClB,EAAM,eAAe,CAAG,KACxB,EAAM,YAAY,CAAG,CAAA,EACrB,EAAM,yBAAyB,CAAG,CAAA,EAC9B,EAAM,MAAM,EAAI,CAAC,GACnB,AAAA,CAAA,EAAA,EAAA,oBAAoB,AAApB,EAAqB,EAAM,MAAM,EAEnC,GACF,EAEA,EAAW,aAAa,CAAG,AAAC,IACrB,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,IAItC,EAAE,eAAe,GACb,EAAM,SAAS,EACjB,EAAO,EAAiB,EAAM,MAAM,CAAG,IAE3C,EAEA,IAAI,EAAW,AAAC,IACV,EAAM,SAAS,EAAK,EAAE,MAAM,CAAa,QAAQ,CAAC,EAAM,MAAM,GAChE,EAAO,CACL,cAAe,EAAM,MAAM,CAC3B,SAAU,CAAA,EACV,QAAS,CAAA,EACT,QAAS,CAAA,EACT,OAAQ,CAAA,CACV,EAEJ,CAEA,CAAA,EAAW,WAAW,CAAG,AAAC,IACnB,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAItC,EAAO,EACT,CACF,CAEA,OAAO,CACT,EAAG,CACD,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,EAaD,MATA,AAAA,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,IACD,KACA,GAEH,AAAA,CAAA,EAAA,EAAA,oBAAmB,AAAnB,EAAqB,EAAI,OAAO,CAAC,MAAM,EAAI,KAAA,EAE/C,EACC,CAAC,EAA0B,EAEvB,CACL,UAAW,GAAiB,EAC5B,WAAY,AAAA,CAAA,EAAA,EAAA,UAAU,AAAV,EAAW,EAAU,EACnC,CACF,CAEA,SAAS,EAAiB,CAAe,EACvC,MAAO,AAAmB,MAAnB,EAAO,OAAO,EAAY,EAAO,YAAY,CAAC,OACvD,CAEA,SAAS,EAAqB,CAAoB,CAAE,CAAsB,EACxE,GAAM,CAAC,IAAA,CAAG,CAAE,KAAA,CAAI,CAAC,CAAG,EAEd,EAAO,AADG,EACK,YAAY,CAAC,QAGlC,MACG,AAAA,CAAA,AAAQ,UAAR,GAAmB,AAAQ,MAAR,GAAe,AAAQ,aAAR,GAAsB,AAAS,UAAT,CAAS,GAClE,CAAG,CAAA,AANW,YAMQ,AAAA,CAAA,EAAA,EAAA,cAAc,AAAd,EANR,GAMgC,gBAAgB,EAAI,CAAC,EANrD,EAM8E,IAC1F,AAPY,YAOO,AAAA,CAAA,EAAA,EAAA,cAAc,AAAd,EAPP,GAO+B,mBAAmB,EAC9D,AARY,EAQJ,iBAAgB,AAAhB,GAEV,CAAG,CAAA,AAAA,CAAA,AAAS,SAAT,GAAoB,CAAC,GAAQ,EAVlB,EAUmC,GAAc,AAAQ,UAAR,CAAQ,CAE3E,CAUA,SAAS,EACP,CAAiB,CACjB,CAAwB,EAExB,IAAM,EAAiB,EAAM,cAAc,CAC3C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAe,MAAM,CAAE,IAAK,CAC9C,IAAM,EAAQ,CAAc,CAAC,EAAE,CAC/B,GAAI,EAAM,UAAU,GAAK,EACvB,OAAO,CAEX,CACA,OAAO,IACT,CAEA,SAAS,EAAiB,CAAwB,CAAE,CAAgC,EAClF,IAAI,EAAU,EACV,EAAU,EAKd,OAJI,EAAE,aAAa,EAAI,AAA2B,IAA3B,EAAE,aAAa,CAAC,MAAM,GAC3C,EAAU,EAAE,aAAa,CAAC,EAAE,CAAC,OAAO,CACpC,EAAU,EAAE,aAAa,CAAC,EAAE,CAAC,OAAO,EAE/B,CACL,cAAe,EACf,SAAU,EAAE,QAAQ,CACpB,QAAS,EAAE,OAAO,CAClB,QAAS,EAAE,OAAO,CAClB,OAAQ,EAAE,MAAM,CAChB,QAAA,EACA,QAAA,CACF,CACF,CAEA,SAAS,EAAY,CAAwB,CAAE,CAAY,EACzD,IAAI,EAAU,EAAE,OAAO,CACnB,EAAU,EAAE,OAAO,CACvB,MAAO,CACL,cAAe,EACf,SAAU,EAAE,QAAQ,CACpB,QAAS,EAAE,OAAO,CAClB,QAAS,EAAE,OAAO,CAClB,OAAQ,EAAE,MAAM,CAChB,QAAA,EACA,QAAA,CACF,CACF,CAoDA,SAAS,EAAa,CAAiB,CAAE,CAAe,EACtD,IAlCI,EACA,EAiCA,EAAO,EAAO,qBAAqB,GACnC,GAnCA,EAAU,EACV,EAAU,EACV,AAAgB,KAAA,IAAhB,AAiC+B,EAjCzB,KAAK,CACb,EAAW,AAgCsB,EAhChB,KAAK,CAAG,EACE,KAAA,IAAlB,AA+BwB,EA/BlB,OAAO,EACtB,CAAA,EAAU,AA8BuB,EA9BjB,OAAO,AAAP,EAEd,AAAiB,KAAA,IAAjB,AA4B+B,EA5BzB,MAAM,CACd,EAAW,AA2BsB,EA3BhB,MAAM,CAAG,EACC,KAAA,IAAlB,AA0BwB,EA1BlB,OAAO,EACtB,CAAA,EAAU,AAyBuB,EAzBjB,OAAO,AAAP,EAGX,CACL,IAAK,AAqB4B,EArBtB,OAAO,CAAG,EACrB,MAAO,AAoB0B,EApBpB,OAAO,CAAG,EACvB,OAAQ,AAmByB,EAnBnB,OAAO,CAAG,EACxB,KAAM,AAkB2B,EAlBrB,OAAO,CAAG,CACxB,GAkBA,OAbI,CAAA,AAa4B,EAb1B,IAAI,CAAG,AAayB,EAbvB,KAAK,AAAL,IAAS,CAAA,AAac,EAbZ,IAAI,CAAG,AAaD,EAbG,KAAK,AAAL,IAI/B,CAAA,AAS4B,EAT1B,GAAG,CAAG,AAS0B,EATxB,MAAM,AAAN,IAAU,CAAA,AASc,EATZ,GAAG,CAAG,AASA,EATE,MAAM,AAAN,CAUpC,CAEA,SAAS,EAAyB,CAAe,EAE/C,MAAO,CAAE,CAAA,aAAkB,WAAA,GAAgB,CAAC,EAAO,YAAY,CAAC,YAClE,CAEA,SAAS,EAAuB,CAAe,QAC7C,CAAI,CAAA,aAAkB,gBAAA,IAIlB,aAAkB,kBACb,AAAgB,WAAhB,EAAO,IAAI,EAAiB,AAAgB,UAAhB,EAAO,IAAI,EAG5C,EAAiB,GAKvB,CAEA,SAAS,EAA6B,CAAe,CAAE,CAAW,SAChE,AAAI,aAAkB,iBACb,CAAC,EAAgB,EAAQ,GAG3B,EAAuB,EAChC,CAEA,IAAM,EAAoB,IAAI,IAAI,CAChC,WACA,QACA,QACA,QACA,OACA,QACA,SACA,SACA,QACD,EAED,SAAS,EAAgB,CAAwB,CAAE,CAAW,EAE5D,MAAO,AAAgB,aAAhB,EAAO,IAAI,EAAmB,AAAgB,UAAhB,EAAO,IAAI,CAC5C,AAAQ,MAAR,EACA,EAAkB,GAAG,CAAC,EAAO,IAAI,CACvC,C,E,C,oB,Q,kB,Q,Y,Q,M,Q,iD,O,E,C,Q,C,S,C,C,C,C,C,EC38BC,IAAA,EAAA,EAAA,kD,E,iB,C,GAYD,EAAA,MAAA,CAAA,EAAA,iBAAA,IAAgB,GAThB,IAAA,EAAA,EAAA,SACA,EAAA,EAAA,qBAQO,SAAS,EAAe,CAAuB,CAAE,CAAkC,EACxF,GAAI,CAAC,SAAA,CAAQ,CAAE,WAAA,CAAU,CAAC,CAAG,EACzB,EAAkB,AAAA,CAAA,EAAA,EAAA,WAAU,AAAV,EAAY,AAAC,KAE7B,EAAE,OAAO,GAKb,EAAE,cAAc,GAChB,EAAE,eAAe,GAEb,GACF,EAAS,CAAC,OAAQ,EAAE,MAAM,CAAE,OAAQ,EAAE,MAAM,AAAA,GAEhD,EAAG,CAAC,EAAS,EAEb,AAAA,CAAA,EAAA,EAAA,QAAO,AAAP,EAAS,EAAK,QAAS,EAAa,KAAA,EAAY,EAClD,C,E,C,M,Q,oB,Q,iD,O,E,C,Q,C,S,C,C,C,C,C,EC9BC,IAAA,EAAA,EAAA,kD,E,iB,C,GA6CD,EAAA,MAAA,CAAA,EAAA,eAAA,IAAgB,GA1ChB,IAAA,EAAA,EAAA,qBACA,EAAA,EAAA,cACA,EAAA,EAAA,SAwCO,SAAS,EAAa,CAAqB,EAChD,GAAI,CACF,WAAA,CAAU,CACV,iBAAA,CAAgB,CAChB,eAAA,CAAc,CACd,YAAA,CAAW,CACX,UAAA,EAZsB,GAYO,CAC7B,yBAAA,CAAwB,CACzB,CAAG,EAEE,EAAU,AAAA,CAAA,EAAA,EAAA,MAAK,AAAL,EAAkD,KAAA,GAC9D,CAAC,kBAAA,CAAiB,CAAE,qBAAA,CAAoB,CAAC,CAAG,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,IAE5C,CAAC,WAAA,CAAU,CAAC,CAAG,AAAA,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAS,CAC1B,WAAA,EACA,aAAa,CAAC,EAEZ,GADA,EAAE,mBAAmB,GACjB,CAAA,AAAkB,UAAlB,EAAE,WAAW,EAAgB,AAAkB,UAAlB,EAAE,WAAW,AAAK,IAC7C,GACF,EAAiB,CACf,GAAG,CAAC,CACJ,KAAM,gBACR,GAGF,EAAQ,OAAO,CAAG,WAAW,KAE3B,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,gBAAiB,CAAC,QAAS,CAAA,CAAI,IACnE,GACF,EAAY,CACV,GAAG,CAAC,CACJ,KAAM,WACR,GAEF,EAAQ,OAAO,CAAG,KAAA,CACpB,EAAG,GAGC,AAAkB,UAAlB,EAAE,WAAW,EAAc,CAC7B,IAAI,EAAgB,AAAA,IAClB,EAAE,cAAc,EAClB,EAEA,EAAkB,EAAE,MAAM,CAAE,cAAe,EAAe,CAAC,KAAM,CAAA,CAAI,GACrE,EAAkB,OAAQ,YAAa,KAGrC,WAAW,KACT,EAAqB,EAAE,MAAM,CAAE,cAAe,EAChD,EAAG,GACL,EAAG,CAAC,KAAM,CAAA,CAAI,EAChB,CAEJ,EACA,WAAW,CAAC,EACN,EAAQ,OAAO,EACjB,aAAa,EAAQ,OAAO,EAG1B,GAAmB,CAAA,AAAkB,UAAlB,EAAE,WAAW,EAAgB,AAAkB,UAAlB,EAAE,WAAW,AAAK,GACpE,EAAe,CACb,GAAG,CAAC,CACJ,KAAM,cACR,EAEJ,CACF,GAEI,EAAmB,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,EAAe,GAAe,CAAC,EAAa,EAA2B,KAAA,GAE9F,MAAO,CACL,eAAgB,AAAA,CAAA,EAAA,EAAA,UAAU,AAAV,EAAW,EAAY,EACzC,CACF,C,E,C,oB,Q,a,Q,M,Q,iD,O,E,E,E,C,E","sources":["<anon>","packages/@react-aria/interactions/src/index.ts","packages/@react-aria/interactions/src/PressResponder.tsx","packages/@react-aria/interactions/src/context.ts","packages/@react-aria/interactions/src/useFocus.ts","packages/@react-aria/interactions/src/utils.ts","packages/@react-aria/interactions/src/useFocusVisible.ts","packages/@react-aria/interactions/src/useFocusWithin.ts","packages/@react-aria/interactions/src/useHover.ts","packages/@react-aria/interactions/src/useInteractOutside.ts","packages/@react-aria/interactions/src/useKeyboard.ts","packages/@react-aria/interactions/src/createEventHandler.ts","packages/@react-aria/interactions/src/useMove.ts","packages/@react-aria/interactions/src/textSelection.ts","packages/@react-aria/interactions/src/usePress.ts","packages/@react-aria/interactions/src/useScrollWheel.ts","packages/@react-aria/interactions/src/useLongPress.ts"],"sourcesContent":["// modules are defined as an array\n// [ module function, map of requires ]\n//\n// map of requires is short require name -> numeric require\n//\n// anything defined in a previous bundle is accessed via the\n// orig method which is the require for previous bundles\n\n(function (modules, entry, mainEntry, parcelRequireName, globalName) {\n  /* eslint-disable no-undef */\n  var globalObject =\n    typeof globalThis !== 'undefined'\n      ? globalThis\n      : typeof self !== 'undefined'\n      ? self\n      : typeof window !== 'undefined'\n      ? window\n      : typeof global !== 'undefined'\n      ? global\n      : {};\n  /* eslint-enable no-undef */\n\n  // Save the require from previous bundle to this closure if any\n  var previousRequire =\n    typeof globalObject[parcelRequireName] === 'function' &&\n    globalObject[parcelRequireName];\n\n  var cache = previousRequire.cache || {};\n  // Do not use `require` to prevent Webpack from trying to bundle this call\n  var nodeRequire =\n    typeof module !== 'undefined' &&\n    typeof module.require === 'function' &&\n    module.require.bind(module);\n\n  function newRequire(name, jumped) {\n    if (!cache[name]) {\n      if (!modules[name]) {\n        // if we cannot find the module within our internal map or\n        // cache jump to the current global require ie. the last bundle\n        // that was added to the page.\n        var currentRequire =\n          typeof globalObject[parcelRequireName] === 'function' &&\n          globalObject[parcelRequireName];\n        if (!jumped && currentRequire) {\n          return currentRequire(name, true);\n        }\n\n        // If there are other bundles on this page the require from the\n        // previous one is saved to 'previousRequire'. Repeat this as\n        // many times as there are bundles until the module is found or\n        // we exhaust the require chain.\n        if (previousRequire) {\n          return previousRequire(name, true);\n        }\n\n        // Try the node require function if it exists.\n        if (nodeRequire && typeof name === 'string') {\n          return nodeRequire(name);\n        }\n\n        var err = new Error(\"Cannot find module '\" + name + \"'\");\n        err.code = 'MODULE_NOT_FOUND';\n        throw err;\n      }\n\n      localRequire.resolve = resolve;\n      localRequire.cache = {};\n\n      var module = (cache[name] = new newRequire.Module(name));\n\n      modules[name][0].call(\n        module.exports,\n        localRequire,\n        module,\n        module.exports,\n        this\n      );\n    }\n\n    return cache[name].exports;\n\n    function localRequire(x) {\n      var res = localRequire.resolve(x);\n      return res === false ? {} : newRequire(res);\n    }\n\n    function resolve(x) {\n      var id = modules[name][1][x];\n      return id != null ? id : x;\n    }\n  }\n\n  function Module(moduleName) {\n    this.id = moduleName;\n    this.bundle = newRequire;\n    this.exports = {};\n  }\n\n  newRequire.isParcelRequire = true;\n  newRequire.Module = Module;\n  newRequire.modules = modules;\n  newRequire.cache = cache;\n  newRequire.parent = previousRequire;\n  newRequire.register = function (id, exports) {\n    modules[id] = [\n      function (require, module) {\n        module.exports = exports;\n      },\n      {},\n    ];\n  };\n\n  Object.defineProperty(newRequire, 'root', {\n    get: function () {\n      return globalObject[parcelRequireName];\n    },\n  });\n\n  globalObject[parcelRequireName] = newRequire;\n\n  for (var i = 0; i < entry.length; i++) {\n    newRequire(entry[i]);\n  }\n\n  if (mainEntry) {\n    // Expose entry point to Node, AMD or browser globals\n    // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js\n    var mainExports = newRequire(mainEntry);\n\n    // CommonJS\n    if (typeof exports === 'object' && typeof module !== 'undefined') {\n      module.exports = mainExports;\n\n      // RequireJS\n    } else if (typeof define === 'function' && define.amd) {\n      define(function () {\n        return mainExports;\n      });\n\n      // <script>\n    } else if (globalName) {\n      this[globalName] = mainExports;\n    }\n  }\n})({\"dtdXE\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"Pressable\", ()=>(0, _pressable.Pressable));\nparcelHelpers.export(exports, \"PressResponder\", ()=>(0, _pressResponder.PressResponder));\nparcelHelpers.export(exports, \"ClearPressResponder\", ()=>(0, _pressResponder.ClearPressResponder));\nparcelHelpers.export(exports, \"useFocus\", ()=>(0, _useFocus.useFocus));\nparcelHelpers.export(exports, \"isFocusVisible\", ()=>(0, _useFocusVisible.isFocusVisible));\nparcelHelpers.export(exports, \"getInteractionModality\", ()=>(0, _useFocusVisible.getInteractionModality));\nparcelHelpers.export(exports, \"setInteractionModality\", ()=>(0, _useFocusVisible.setInteractionModality));\nparcelHelpers.export(exports, \"addWindowFocusTracking\", ()=>(0, _useFocusVisible.addWindowFocusTracking));\nparcelHelpers.export(exports, \"useInteractionModality\", ()=>(0, _useFocusVisible.useInteractionModality));\nparcelHelpers.export(exports, \"useFocusVisible\", ()=>(0, _useFocusVisible.useFocusVisible));\nparcelHelpers.export(exports, \"useFocusVisibleListener\", ()=>(0, _useFocusVisible.useFocusVisibleListener));\nparcelHelpers.export(exports, \"useFocusWithin\", ()=>(0, _useFocusWithin.useFocusWithin));\nparcelHelpers.export(exports, \"useHover\", ()=>(0, _useHover.useHover));\nparcelHelpers.export(exports, \"useInteractOutside\", ()=>(0, _useInteractOutside.useInteractOutside));\nparcelHelpers.export(exports, \"useKeyboard\", ()=>(0, _useKeyboard.useKeyboard));\nparcelHelpers.export(exports, \"useMove\", ()=>(0, _useMove.useMove));\nparcelHelpers.export(exports, \"usePress\", ()=>(0, _usePress.usePress));\nparcelHelpers.export(exports, \"useScrollWheel\", ()=>(0, _useScrollWheel.useScrollWheel));\nparcelHelpers.export(exports, \"useLongPress\", ()=>(0, _useLongPress.useLongPress));\nvar _pressable = require(\"./Pressable\");\nvar _pressResponder = require(\"./PressResponder\");\nvar _useFocus = require(\"./useFocus\");\nvar _useFocusVisible = require(\"./useFocusVisible\");\nvar _useFocusWithin = require(\"./useFocusWithin\");\nvar _useHover = require(\"./useHover\");\nvar _useInteractOutside = require(\"./useInteractOutside\");\nvar _useKeyboard = require(\"./useKeyboard\");\nvar _useMove = require(\"./useMove\");\nvar _usePress = require(\"./usePress\");\nvar _useScrollWheel = require(\"./useScrollWheel\");\nvar _useLongPress = require(\"./useLongPress\");\n\n},{\"./Pressable\":false,\"./PressResponder\":\"gV9F2\",\"./useFocus\":\"5lXaz\",\"./useFocusVisible\":\"cebUE\",\"./useFocusWithin\":\"ldMvb\",\"./useHover\":\"jXiCN\",\"./useInteractOutside\":\"az5o7\",\"./useKeyboard\":\"6oNef\",\"./useMove\":\"fAGcD\",\"./usePress\":\"fOpRp\",\"./useScrollWheel\":\"4d7Vp\",\"./useLongPress\":\"6FTm4\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"gV9F2\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"PressResponder\", ()=>PressResponder);\nparcelHelpers.export(exports, \"ClearPressResponder\", ()=>ClearPressResponder);\nvar _utils = require(\"@react-aria/utils\");\nvar _context = require(\"./context\");\nvar _react = require(\"react\");\nvar _reactDefault = parcelHelpers.interopDefault(_react);\nconst PressResponder = /*#__PURE__*/ (0, _reactDefault.default).forwardRef(({ children, ...props }, ref)=>{\n    let isRegistered = (0, _react.useRef)(false);\n    let prevContext = (0, _react.useContext)((0, _context.PressResponderContext));\n    ref = (0, _utils.useObjectRef)(ref || prevContext?.ref);\n    let context = (0, _utils.mergeProps)(prevContext || {}, {\n        ...props,\n        ref,\n        register () {\n            isRegistered.current = true;\n            if (prevContext) prevContext.register();\n        }\n    });\n    (0, _utils.useSyncRef)(prevContext, ref);\n    (0, _react.useEffect)(()=>{\n        if (!isRegistered.current) {\n            console.warn(\"A PressResponder was rendered without a pressable child. Either call the usePress hook, or wrap your DOM node with <Pressable> component.\");\n            isRegistered.current = true; // only warn once in strict mode.\n        }\n    }, []);\n    return /*#__PURE__*/ (0, _reactDefault.default).createElement((0, _context.PressResponderContext).Provider, {\n        value: context\n    }, children);\n});\nfunction ClearPressResponder({ children }) {\n    let context = (0, _react.useMemo)(()=>({\n            register: ()=>{}\n        }), []);\n    return /*#__PURE__*/ (0, _reactDefault.default).createElement((0, _context.PressResponderContext).Provider, {\n        value: context\n    }, children);\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"./context\":\"6hjZq\",\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"6hjZq\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"PressResponderContext\", ()=>PressResponderContext);\nvar _react = require(\"react\");\nvar _reactDefault = parcelHelpers.interopDefault(_react);\nconst PressResponderContext = (0, _reactDefault.default).createContext({\n    register: ()=>{}\n});\nPressResponderContext.displayName = 'PressResponderContext';\n\n},{\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"5lXaz\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Handles focus events for the immediate target.\n * Focus events on child elements will be ignored.\n */ parcelHelpers.export(exports, \"useFocus\", ()=>useFocus);\nvar _react = require(\"react\");\nvar _utils = require(\"@react-aria/utils\");\nvar _utils1 = require(\"./utils\");\nfunction useFocus(props) {\n    let { isDisabled, onFocus: onFocusProp, onBlur: onBlurProp, onFocusChange } = props;\n    const onBlur = (0, _react.useCallback)((e)=>{\n        if (e.target === e.currentTarget) {\n            if (onBlurProp) onBlurProp(e);\n            if (onFocusChange) onFocusChange(false);\n            return true;\n        }\n    }, [\n        onBlurProp,\n        onFocusChange\n    ]);\n    const onSyntheticFocus = (0, _utils1.useSyntheticBlurEvent)(onBlur);\n    const onFocus = (0, _react.useCallback)((e)=>{\n        // Double check that document.activeElement actually matches e.target in case a previously chained\n        // focus handler already moved focus somewhere else.\n        const ownerDocument = (0, _utils.getOwnerDocument)(e.target);\n        if (e.target === e.currentTarget && ownerDocument.activeElement === e.target) {\n            if (onFocusProp) onFocusProp(e);\n            if (onFocusChange) onFocusChange(true);\n            onSyntheticFocus(e);\n        }\n    }, [\n        onFocusChange,\n        onFocusProp,\n        onSyntheticFocus\n    ]);\n    return {\n        focusProps: {\n            onFocus: !isDisabled && (onFocusProp || onFocusChange || onBlurProp) ? onFocus : undefined,\n            onBlur: !isDisabled && (onBlurProp || onFocusChange) ? onBlur : undefined\n        }\n    };\n}\n\n},{\"react\":\"jEiK2\",\"@react-aria/utils\":\"e9Yvo\",\"./utils\":\"9VJmY\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"9VJmY\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"SyntheticFocusEvent\", ()=>SyntheticFocusEvent);\nparcelHelpers.export(exports, \"useSyntheticBlurEvent\", ()=>useSyntheticBlurEvent);\nvar _react = require(\"react\");\nvar _utils = require(\"@react-aria/utils\");\nclass SyntheticFocusEvent {\n    constructor(type, nativeEvent){\n        this.nativeEvent = nativeEvent;\n        this.target = nativeEvent.target;\n        this.currentTarget = nativeEvent.currentTarget;\n        this.relatedTarget = nativeEvent.relatedTarget;\n        this.bubbles = nativeEvent.bubbles;\n        this.cancelable = nativeEvent.cancelable;\n        this.defaultPrevented = nativeEvent.defaultPrevented;\n        this.eventPhase = nativeEvent.eventPhase;\n        this.isTrusted = nativeEvent.isTrusted;\n        this.timeStamp = nativeEvent.timeStamp;\n        this.type = type;\n    }\n    isDefaultPrevented() {\n        return this.nativeEvent.defaultPrevented;\n    }\n    preventDefault() {\n        this.defaultPrevented = true;\n        this.nativeEvent.preventDefault();\n    }\n    stopPropagation() {\n        this.nativeEvent.stopPropagation();\n        this.isPropagationStopped = ()=>true;\n    }\n    isPropagationStopped() {\n        return false;\n    }\n    persist() {}\n}\nfunction useSyntheticBlurEvent(onBlur) {\n    let stateRef = (0, _react.useRef)({\n        isFocused: false,\n        observer: null\n    });\n    // Clean up MutationObserver on unmount. See below.\n    // eslint-disable-next-line arrow-body-style\n    (0, _utils.useLayoutEffect)(()=>{\n        const state = stateRef.current;\n        return ()=>{\n            if (state.observer) {\n                state.observer.disconnect();\n                state.observer = null;\n            }\n        };\n    }, []);\n    let dispatchBlur = (0, _utils.useEffectEvent)((e)=>{\n        onBlur?.(e);\n    });\n    // This function is called during a React onFocus event.\n    return (0, _react.useCallback)((e)=>{\n        // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n        // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n        // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n        // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n        if (e.target instanceof HTMLButtonElement || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement) {\n            stateRef.current.isFocused = true;\n            let target = e.target;\n            let onBlurHandler = (e)=>{\n                stateRef.current.isFocused = false;\n                if (target.disabled) // For backward compatibility, dispatch a (fake) React synthetic event.\n                dispatchBlur(new SyntheticFocusEvent('blur', e));\n                // We no longer need the MutationObserver once the target is blurred.\n                if (stateRef.current.observer) {\n                    stateRef.current.observer.disconnect();\n                    stateRef.current.observer = null;\n                }\n            };\n            target.addEventListener('focusout', onBlurHandler, {\n                once: true\n            });\n            stateRef.current.observer = new MutationObserver(()=>{\n                if (stateRef.current.isFocused && target.disabled) {\n                    stateRef.current.observer?.disconnect();\n                    let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n                    target.dispatchEvent(new FocusEvent('blur', {\n                        relatedTarget: relatedTargetEl\n                    }));\n                    target.dispatchEvent(new FocusEvent('focusout', {\n                        bubbles: true,\n                        relatedTarget: relatedTargetEl\n                    }));\n                }\n            });\n            stateRef.current.observer.observe(target, {\n                attributes: true,\n                attributeFilter: [\n                    'disabled'\n                ]\n            });\n        }\n    }, [\n        dispatchBlur\n    ]);\n}\n\n},{\"react\":\"jEiK2\",\"@react-aria/utils\":\"e9Yvo\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"cebUE\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"hasSetupGlobalListeners\", ()=>hasSetupGlobalListeners);\n/**\n * EXPERIMENTAL\n * Adds a window (i.e. iframe) to the list of windows that are being tracked for focus visible.\n *\n * Sometimes apps render portions of their tree into an iframe. In this case, we cannot accurately track if the focus\n * is visible because we cannot see interactions inside the iframe. If you have this in your application's architecture,\n * then this function will attach event listeners inside the iframe. You should call `addWindowFocusTracking` with an\n * element from inside the window you wish to add. We'll retrieve the relevant elements based on that.\n * Note, you do not need to call this for the default window, as we call it for you.\n *\n * When you are ready to stop listening, but you do not wish to unmount the iframe, you may call the cleanup function\n * returned by `addWindowFocusTracking`. Otherwise, when you unmount the iframe, all listeners and state will be cleaned\n * up automatically for you.\n *\n * @param element @default document.body - The element provided will be used to get the window to add.\n * @returns A function to remove the event listeners and cleanup the state.\n */ parcelHelpers.export(exports, \"addWindowFocusTracking\", ()=>addWindowFocusTracking);\n/**\n * If true, keyboard focus is visible.\n */ parcelHelpers.export(exports, \"isFocusVisible\", ()=>isFocusVisible);\nparcelHelpers.export(exports, \"getInteractionModality\", ()=>getInteractionModality);\nparcelHelpers.export(exports, \"setInteractionModality\", ()=>setInteractionModality);\n/**\n * Keeps state of the current modality.\n */ parcelHelpers.export(exports, \"useInteractionModality\", ()=>useInteractionModality);\n/**\n * Manages focus visible state for the page, and subscribes individual components for updates.\n */ parcelHelpers.export(exports, \"useFocusVisible\", ()=>useFocusVisible);\n/**\n * Listens for trigger change and reports if focus is visible (i.e., modality is not pointer).\n */ parcelHelpers.export(exports, \"useFocusVisibleListener\", ()=>useFocusVisibleListener);\nvar _utils = require(\"@react-aria/utils\");\nvar _react = require(\"react\");\nvar _ssr = require(\"@react-aria/ssr\");\nlet currentModality = null;\nlet changeHandlers = new Set();\nlet hasSetupGlobalListeners = new Map(); // We use a map here to support setting event listeners across multiple document objects.\nlet hasEventBeforeFocus = false;\nlet hasBlurredWindowRecently = false;\n// Only Tab or Esc keys will make focus visible on text input elements\nconst FOCUS_VISIBLE_INPUT_KEYS = {\n    Tab: true,\n    Escape: true\n};\nfunction triggerChangeHandlers(modality, e) {\n    for (let handler of changeHandlers)handler(modality, e);\n}\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */ function isValidKey(e) {\n    // Control and Shift keys trigger when navigating back to the tab with keyboard.\n    return !(e.metaKey || !(0, _utils.isMac)() && e.altKey || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\nfunction handleKeyboardEvent(e) {\n    hasEventBeforeFocus = true;\n    if (isValidKey(e)) {\n        currentModality = 'keyboard';\n        triggerChangeHandlers('keyboard', e);\n    }\n}\nfunction handlePointerEvent(e) {\n    currentModality = 'pointer';\n    if (e.type === 'mousedown' || e.type === 'pointerdown') {\n        hasEventBeforeFocus = true;\n        triggerChangeHandlers('pointer', e);\n    }\n}\nfunction handleClickEvent(e) {\n    if ((0, _utils.isVirtualClick)(e)) {\n        hasEventBeforeFocus = true;\n        currentModality = 'virtual';\n    }\n}\nfunction handleFocusEvent(e) {\n    // Firefox fires two extra focus events when the user first clicks into an iframe:\n    // first on the window, then on the document. We ignore these events so they don't\n    // cause keyboard focus rings to appear.\n    if (e.target === window || e.target === document) return;\n    // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n    // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n    if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n        currentModality = 'virtual';\n        triggerChangeHandlers('virtual', e);\n    }\n    hasEventBeforeFocus = false;\n    hasBlurredWindowRecently = false;\n}\nfunction handleWindowBlur() {\n    // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n    // for example, since a subsequent focus event won't be fired.\n    hasEventBeforeFocus = false;\n    hasBlurredWindowRecently = true;\n}\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */ function setupGlobalFocusEvents(element) {\n    if (typeof window === 'undefined' || hasSetupGlobalListeners.get((0, _utils.getOwnerWindow)(element))) return;\n    const windowObject = (0, _utils.getOwnerWindow)(element);\n    const documentObject = (0, _utils.getOwnerDocument)(element);\n    // Programmatic focus() calls shouldn't affect the current input modality.\n    // However, we need to detect other cases when a focus event occurs without\n    // a preceding user event (e.g. screen reader focus). Overriding the focus\n    // method on HTMLElement.prototype is a bit hacky, but works.\n    let focus = windowObject.HTMLElement.prototype.focus;\n    windowObject.HTMLElement.prototype.focus = function() {\n        hasEventBeforeFocus = true;\n        focus.apply(this, arguments);\n    };\n    documentObject.addEventListener('keydown', handleKeyboardEvent, true);\n    documentObject.addEventListener('keyup', handleKeyboardEvent, true);\n    documentObject.addEventListener('click', handleClickEvent, true);\n    // Register focus events on the window so they are sure to happen\n    // before React's event listeners (registered on the document).\n    windowObject.addEventListener('focus', handleFocusEvent, true);\n    windowObject.addEventListener('blur', handleWindowBlur, false);\n    if (typeof PointerEvent !== 'undefined') {\n        documentObject.addEventListener('pointerdown', handlePointerEvent, true);\n        documentObject.addEventListener('pointermove', handlePointerEvent, true);\n        documentObject.addEventListener('pointerup', handlePointerEvent, true);\n    } else {\n        documentObject.addEventListener('mousedown', handlePointerEvent, true);\n        documentObject.addEventListener('mousemove', handlePointerEvent, true);\n        documentObject.addEventListener('mouseup', handlePointerEvent, true);\n    }\n    // Add unmount handler\n    windowObject.addEventListener('beforeunload', ()=>{\n        tearDownWindowFocusTracking(element);\n    }, {\n        once: true\n    });\n    hasSetupGlobalListeners.set(windowObject, {\n        focus\n    });\n}\nconst tearDownWindowFocusTracking = (element, loadListener)=>{\n    const windowObject = (0, _utils.getOwnerWindow)(element);\n    const documentObject = (0, _utils.getOwnerDocument)(element);\n    if (loadListener) documentObject.removeEventListener('DOMContentLoaded', loadListener);\n    if (!hasSetupGlobalListeners.has(windowObject)) return;\n    windowObject.HTMLElement.prototype.focus = hasSetupGlobalListeners.get(windowObject).focus;\n    documentObject.removeEventListener('keydown', handleKeyboardEvent, true);\n    documentObject.removeEventListener('keyup', handleKeyboardEvent, true);\n    documentObject.removeEventListener('click', handleClickEvent, true);\n    windowObject.removeEventListener('focus', handleFocusEvent, true);\n    windowObject.removeEventListener('blur', handleWindowBlur, false);\n    if (typeof PointerEvent !== 'undefined') {\n        documentObject.removeEventListener('pointerdown', handlePointerEvent, true);\n        documentObject.removeEventListener('pointermove', handlePointerEvent, true);\n        documentObject.removeEventListener('pointerup', handlePointerEvent, true);\n    } else {\n        documentObject.removeEventListener('mousedown', handlePointerEvent, true);\n        documentObject.removeEventListener('mousemove', handlePointerEvent, true);\n        documentObject.removeEventListener('mouseup', handlePointerEvent, true);\n    }\n    hasSetupGlobalListeners.delete(windowObject);\n};\nfunction addWindowFocusTracking(element) {\n    const documentObject = (0, _utils.getOwnerDocument)(element);\n    let loadListener;\n    if (documentObject.readyState !== 'loading') setupGlobalFocusEvents(element);\n    else {\n        loadListener = ()=>{\n            setupGlobalFocusEvents(element);\n        };\n        documentObject.addEventListener('DOMContentLoaded', loadListener);\n    }\n    return ()=>tearDownWindowFocusTracking(element, loadListener);\n}\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') addWindowFocusTracking();\nfunction isFocusVisible() {\n    return currentModality !== 'pointer';\n}\nfunction getInteractionModality() {\n    return currentModality;\n}\nfunction setInteractionModality(modality) {\n    currentModality = modality;\n    triggerChangeHandlers(modality, null);\n}\nfunction useInteractionModality() {\n    setupGlobalFocusEvents();\n    let [modality, setModality] = (0, _react.useState)(currentModality);\n    (0, _react.useEffect)(()=>{\n        let handler = ()=>{\n            setModality(currentModality);\n        };\n        changeHandlers.add(handler);\n        return ()=>{\n            changeHandlers.delete(handler);\n        };\n    }, []);\n    return (0, _ssr.useIsSSR)() ? null : modality;\n}\nconst nonTextInputTypes = new Set([\n    'checkbox',\n    'radio',\n    'range',\n    'color',\n    'file',\n    'image',\n    'button',\n    'submit',\n    'reset'\n]);\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */ function isKeyboardFocusEvent(isTextInput, modality, e) {\n    const IHTMLInputElement = typeof window !== 'undefined' ? (0, _utils.getOwnerWindow)(e?.target).HTMLInputElement : HTMLInputElement;\n    const IHTMLTextAreaElement = typeof window !== 'undefined' ? (0, _utils.getOwnerWindow)(e?.target).HTMLTextAreaElement : HTMLTextAreaElement;\n    const IHTMLElement = typeof window !== 'undefined' ? (0, _utils.getOwnerWindow)(e?.target).HTMLElement : HTMLElement;\n    const IKeyboardEvent = typeof window !== 'undefined' ? (0, _utils.getOwnerWindow)(e?.target).KeyboardEvent : KeyboardEvent;\n    isTextInput = isTextInput || e?.target instanceof IHTMLInputElement && !nonTextInputTypes.has(e?.target?.type) || e?.target instanceof IHTMLTextAreaElement || e?.target instanceof IHTMLElement && e?.target.isContentEditable;\n    return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\nfunction useFocusVisible(props = {}) {\n    let { isTextInput, autoFocus } = props;\n    let [isFocusVisibleState, setFocusVisible] = (0, _react.useState)(autoFocus || isFocusVisible());\n    useFocusVisibleListener((isFocusVisible)=>{\n        setFocusVisible(isFocusVisible);\n    }, [\n        isTextInput\n    ], {\n        isTextInput\n    });\n    return {\n        isFocusVisible: isFocusVisibleState\n    };\n}\nfunction useFocusVisibleListener(fn, deps, opts) {\n    setupGlobalFocusEvents();\n    (0, _react.useEffect)(()=>{\n        let handler = (modality, e)=>{\n            if (!isKeyboardFocusEvent(!!opts?.isTextInput, modality, e)) return;\n            fn(isFocusVisible());\n        };\n        changeHandlers.add(handler);\n        return ()=>{\n            changeHandlers.delete(handler);\n        };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, deps);\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"react\":\"jEiK2\",\"@react-aria/ssr\":\"jNw7O\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"ldMvb\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Handles focus events for the target and its descendants.\n */ parcelHelpers.export(exports, \"useFocusWithin\", ()=>useFocusWithin);\nvar _react = require(\"react\");\nvar _utils = require(\"./utils\");\nfunction useFocusWithin(props) {\n    let { isDisabled, onBlurWithin, onFocusWithin, onFocusWithinChange } = props;\n    let state = (0, _react.useRef)({\n        isFocusWithin: false\n    });\n    let onBlur = (0, _react.useCallback)((e)=>{\n        // We don't want to trigger onBlurWithin and then immediately onFocusWithin again\n        // when moving focus inside the element. Only trigger if the currentTarget doesn't\n        // include the relatedTarget (where focus is moving).\n        if (state.current.isFocusWithin && !e.currentTarget.contains(e.relatedTarget)) {\n            state.current.isFocusWithin = false;\n            if (onBlurWithin) onBlurWithin(e);\n            if (onFocusWithinChange) onFocusWithinChange(false);\n        }\n    }, [\n        onBlurWithin,\n        onFocusWithinChange,\n        state\n    ]);\n    let onSyntheticFocus = (0, _utils.useSyntheticBlurEvent)(onBlur);\n    let onFocus = (0, _react.useCallback)((e)=>{\n        // Double check that document.activeElement actually matches e.target in case a previously chained\n        // focus handler already moved focus somewhere else.\n        if (!state.current.isFocusWithin && document.activeElement === e.target) {\n            if (onFocusWithin) onFocusWithin(e);\n            if (onFocusWithinChange) onFocusWithinChange(true);\n            state.current.isFocusWithin = true;\n            onSyntheticFocus(e);\n        }\n    }, [\n        onFocusWithin,\n        onFocusWithinChange,\n        onSyntheticFocus\n    ]);\n    if (isDisabled) return {\n        focusWithinProps: {\n            // These should not have been null, that would conflict in mergeProps\n            onFocus: undefined,\n            onBlur: undefined\n        }\n    };\n    return {\n        focusWithinProps: {\n            onFocus,\n            onBlur\n        }\n    };\n}\n\n},{\"react\":\"jEiK2\",\"./utils\":\"9VJmY\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"jXiCN\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Handles pointer hover interactions for an element. Normalizes behavior\n * across browsers and platforms, and ignores emulated mouse events on touch devices.\n */ parcelHelpers.export(exports, \"useHover\", ()=>useHover);\nvar _react = require(\"react\");\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet globalIgnoreEmulatedMouseEvents = false;\nlet hoverCount = 0;\nfunction setGlobalIgnoreEmulatedMouseEvents() {\n    globalIgnoreEmulatedMouseEvents = true;\n    // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter\n    // with pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other\n    // devices that don't have this quirk, we don't want to ignore a mouse hover sometime in\n    // the distant future because a user previously touched the element.\n    setTimeout(()=>{\n        globalIgnoreEmulatedMouseEvents = false;\n    }, 50);\n}\nfunction handleGlobalPointerEvent(e) {\n    if (e.pointerType === 'touch') setGlobalIgnoreEmulatedMouseEvents();\n}\nfunction setupGlobalTouchEvents() {\n    if (typeof document === 'undefined') return;\n    if (typeof PointerEvent !== 'undefined') document.addEventListener('pointerup', handleGlobalPointerEvent);\n    else document.addEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n    hoverCount++;\n    return ()=>{\n        hoverCount--;\n        if (hoverCount > 0) return;\n        if (typeof PointerEvent !== 'undefined') document.removeEventListener('pointerup', handleGlobalPointerEvent);\n        else document.removeEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n    };\n}\nfunction useHover(props) {\n    let { onHoverStart, onHoverChange, onHoverEnd, isDisabled } = props;\n    let [isHovered, setHovered] = (0, _react.useState)(false);\n    let state = (0, _react.useRef)({\n        isHovered: false,\n        ignoreEmulatedMouseEvents: false,\n        pointerType: '',\n        target: null\n    }).current;\n    (0, _react.useEffect)(setupGlobalTouchEvents, []);\n    let { hoverProps, triggerHoverEnd } = (0, _react.useMemo)(()=>{\n        let triggerHoverStart = (event, pointerType)=>{\n            state.pointerType = pointerType;\n            if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) return;\n            state.isHovered = true;\n            let target = event.currentTarget;\n            state.target = target;\n            if (onHoverStart) onHoverStart({\n                type: 'hoverstart',\n                target,\n                pointerType\n            });\n            if (onHoverChange) onHoverChange(true);\n            setHovered(true);\n        };\n        let triggerHoverEnd = (event, pointerType)=>{\n            state.pointerType = '';\n            state.target = null;\n            if (pointerType === 'touch' || !state.isHovered) return;\n            state.isHovered = false;\n            let target = event.currentTarget;\n            if (onHoverEnd) onHoverEnd({\n                type: 'hoverend',\n                target,\n                pointerType\n            });\n            if (onHoverChange) onHoverChange(false);\n            setHovered(false);\n        };\n        let hoverProps = {};\n        if (typeof PointerEvent !== 'undefined') {\n            hoverProps.onPointerEnter = (e)=>{\n                if (globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') return;\n                triggerHoverStart(e, e.pointerType);\n            };\n            hoverProps.onPointerLeave = (e)=>{\n                if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, e.pointerType);\n            };\n        } else {\n            hoverProps.onTouchStart = ()=>{\n                state.ignoreEmulatedMouseEvents = true;\n            };\n            hoverProps.onMouseEnter = (e)=>{\n                if (!state.ignoreEmulatedMouseEvents && !globalIgnoreEmulatedMouseEvents) triggerHoverStart(e, 'mouse');\n                state.ignoreEmulatedMouseEvents = false;\n            };\n            hoverProps.onMouseLeave = (e)=>{\n                if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, 'mouse');\n            };\n        }\n        return {\n            hoverProps,\n            triggerHoverEnd\n        };\n    }, [\n        onHoverStart,\n        onHoverChange,\n        onHoverEnd,\n        isDisabled,\n        state\n    ]);\n    (0, _react.useEffect)(()=>{\n        // Call the triggerHoverEnd as soon as isDisabled changes to true\n        // Safe to call triggerHoverEnd, it will early return if we aren't currently hovering\n        if (isDisabled) triggerHoverEnd({\n            currentTarget: state.target\n        }, state.pointerType);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [\n        isDisabled\n    ]);\n    return {\n        hoverProps,\n        isHovered\n    };\n}\n\n},{\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"az5o7\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Example, used in components like Dialogs and Popovers so they can close\n * when a user clicks outside them.\n */ parcelHelpers.export(exports, \"useInteractOutside\", ()=>useInteractOutside);\nvar _utils = require(\"@react-aria/utils\");\nvar _react = require(\"react\");\nfunction useInteractOutside(props) {\n    let { ref, onInteractOutside, isDisabled, onInteractOutsideStart } = props;\n    let stateRef = (0, _react.useRef)({\n        isPointerDown: false,\n        ignoreEmulatedMouseEvents: false\n    });\n    let onPointerDown = (0, _utils.useEffectEvent)((e)=>{\n        if (onInteractOutside && isValidEvent(e, ref)) {\n            if (onInteractOutsideStart) onInteractOutsideStart(e);\n            stateRef.current.isPointerDown = true;\n        }\n    });\n    let triggerInteractOutside = (0, _utils.useEffectEvent)((e)=>{\n        if (onInteractOutside) onInteractOutside(e);\n    });\n    (0, _react.useEffect)(()=>{\n        let state = stateRef.current;\n        if (isDisabled) return;\n        const element = ref.current;\n        const documentObject = (0, _utils.getOwnerDocument)(element);\n        // Use pointer events if available. Otherwise, fall back to mouse and touch events.\n        if (typeof PointerEvent !== 'undefined') {\n            let onPointerUp = (e)=>{\n                if (state.isPointerDown && isValidEvent(e, ref)) triggerInteractOutside(e);\n                state.isPointerDown = false;\n            };\n            // changing these to capture phase fixed combobox\n            documentObject.addEventListener('pointerdown', onPointerDown, true);\n            documentObject.addEventListener('pointerup', onPointerUp, true);\n            return ()=>{\n                documentObject.removeEventListener('pointerdown', onPointerDown, true);\n                documentObject.removeEventListener('pointerup', onPointerUp, true);\n            };\n        } else {\n            let onMouseUp = (e)=>{\n                if (state.ignoreEmulatedMouseEvents) state.ignoreEmulatedMouseEvents = false;\n                else if (state.isPointerDown && isValidEvent(e, ref)) triggerInteractOutside(e);\n                state.isPointerDown = false;\n            };\n            let onTouchEnd = (e)=>{\n                state.ignoreEmulatedMouseEvents = true;\n                if (state.isPointerDown && isValidEvent(e, ref)) triggerInteractOutside(e);\n                state.isPointerDown = false;\n            };\n            documentObject.addEventListener('mousedown', onPointerDown, true);\n            documentObject.addEventListener('mouseup', onMouseUp, true);\n            documentObject.addEventListener('touchstart', onPointerDown, true);\n            documentObject.addEventListener('touchend', onTouchEnd, true);\n            return ()=>{\n                documentObject.removeEventListener('mousedown', onPointerDown, true);\n                documentObject.removeEventListener('mouseup', onMouseUp, true);\n                documentObject.removeEventListener('touchstart', onPointerDown, true);\n                documentObject.removeEventListener('touchend', onTouchEnd, true);\n            };\n        }\n    }, [\n        ref,\n        isDisabled,\n        onPointerDown,\n        triggerInteractOutside\n    ]);\n}\nfunction isValidEvent(event, ref) {\n    if (event.button > 0) return false;\n    if (event.target) {\n        // if the event target is no longer in the document, ignore\n        const ownerDocument = event.target.ownerDocument;\n        if (!ownerDocument || !ownerDocument.documentElement.contains(event.target)) return false;\n        // If the target is within a top layer element (e.g. toasts), ignore.\n        if (event.target.closest('[data-react-aria-top-layer]')) return false;\n    }\n    return ref.current && !ref.current.contains(event.target);\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"6oNef\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Handles keyboard interactions for a focusable element.\n */ parcelHelpers.export(exports, \"useKeyboard\", ()=>useKeyboard);\nvar _createEventHandler = require(\"./createEventHandler\");\nfunction useKeyboard(props) {\n    return {\n        keyboardProps: props.isDisabled ? {} : {\n            onKeyDown: (0, _createEventHandler.createEventHandler)(props.onKeyDown),\n            onKeyUp: (0, _createEventHandler.createEventHandler)(props.onKeyUp)\n        }\n    };\n}\n\n},{\"./createEventHandler\":\"1as4h\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"1as4h\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * This function wraps a React event handler to make stopPropagation the default, and support continuePropagation instead.\n */ parcelHelpers.export(exports, \"createEventHandler\", ()=>createEventHandler);\nfunction createEventHandler(handler) {\n    if (!handler) return undefined;\n    let shouldStopPropagation = true;\n    return (e)=>{\n        let event = {\n            ...e,\n            preventDefault () {\n                e.preventDefault();\n            },\n            isDefaultPrevented () {\n                return e.isDefaultPrevented();\n            },\n            stopPropagation () {\n                console.error('stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.');\n            },\n            continuePropagation () {\n                shouldStopPropagation = false;\n            }\n        };\n        handler(event);\n        if (shouldStopPropagation) e.stopPropagation();\n    };\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"fAGcD\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Handles move interactions across mouse, touch, and keyboard, including dragging with\n * the mouse or touch, and using the arrow keys. Normalizes behavior across browsers and\n * platforms, and ignores emulated mouse events on touch devices.\n */ parcelHelpers.export(exports, \"useMove\", ()=>useMove);\nvar _textSelection = require(\"./textSelection\");\nvar _react = require(\"react\");\nvar _utils = require(\"@react-aria/utils\");\nfunction useMove(props) {\n    let { onMoveStart, onMove, onMoveEnd } = props;\n    let state = (0, _react.useRef)({\n        didMove: false,\n        lastPosition: null,\n        id: null\n    });\n    let { addGlobalListener, removeGlobalListener } = (0, _utils.useGlobalListeners)();\n    let move = (0, _utils.useEffectEvent)((originalEvent, pointerType, deltaX, deltaY)=>{\n        if (deltaX === 0 && deltaY === 0) return;\n        if (!state.current.didMove) {\n            state.current.didMove = true;\n            onMoveStart?.({\n                type: 'movestart',\n                pointerType,\n                shiftKey: originalEvent.shiftKey,\n                metaKey: originalEvent.metaKey,\n                ctrlKey: originalEvent.ctrlKey,\n                altKey: originalEvent.altKey\n            });\n        }\n        onMove?.({\n            type: 'move',\n            pointerType,\n            deltaX: deltaX,\n            deltaY: deltaY,\n            shiftKey: originalEvent.shiftKey,\n            metaKey: originalEvent.metaKey,\n            ctrlKey: originalEvent.ctrlKey,\n            altKey: originalEvent.altKey\n        });\n    });\n    let end = (0, _utils.useEffectEvent)((originalEvent, pointerType)=>{\n        (0, _textSelection.restoreTextSelection)();\n        if (state.current.didMove) onMoveEnd?.({\n            type: 'moveend',\n            pointerType,\n            shiftKey: originalEvent.shiftKey,\n            metaKey: originalEvent.metaKey,\n            ctrlKey: originalEvent.ctrlKey,\n            altKey: originalEvent.altKey\n        });\n    });\n    let moveProps = (0, _react.useMemo)(()=>{\n        let moveProps = {};\n        let start = ()=>{\n            (0, _textSelection.disableTextSelection)();\n            state.current.didMove = false;\n        };\n        if (typeof PointerEvent === 'undefined') {\n            let onMouseMove = (e)=>{\n                if (e.button === 0) {\n                    move(e, 'mouse', e.pageX - (state.current.lastPosition?.pageX ?? 0), e.pageY - (state.current.lastPosition?.pageY ?? 0));\n                    state.current.lastPosition = {\n                        pageX: e.pageX,\n                        pageY: e.pageY\n                    };\n                }\n            };\n            let onMouseUp = (e)=>{\n                if (e.button === 0) {\n                    end(e, 'mouse');\n                    removeGlobalListener(window, 'mousemove', onMouseMove, false);\n                    removeGlobalListener(window, 'mouseup', onMouseUp, false);\n                }\n            };\n            moveProps.onMouseDown = (e)=>{\n                if (e.button === 0) {\n                    start();\n                    e.stopPropagation();\n                    e.preventDefault();\n                    state.current.lastPosition = {\n                        pageX: e.pageX,\n                        pageY: e.pageY\n                    };\n                    addGlobalListener(window, 'mousemove', onMouseMove, false);\n                    addGlobalListener(window, 'mouseup', onMouseUp, false);\n                }\n            };\n            let onTouchMove = (e)=>{\n                let touch = [\n                    ...e.changedTouches\n                ].findIndex(({ identifier })=>identifier === state.current.id);\n                if (touch >= 0) {\n                    let { pageX, pageY } = e.changedTouches[touch];\n                    move(e, 'touch', pageX - (state.current.lastPosition?.pageX ?? 0), pageY - (state.current.lastPosition?.pageY ?? 0));\n                    state.current.lastPosition = {\n                        pageX,\n                        pageY\n                    };\n                }\n            };\n            let onTouchEnd = (e)=>{\n                let touch = [\n                    ...e.changedTouches\n                ].findIndex(({ identifier })=>identifier === state.current.id);\n                if (touch >= 0) {\n                    end(e, 'touch');\n                    state.current.id = null;\n                    removeGlobalListener(window, 'touchmove', onTouchMove);\n                    removeGlobalListener(window, 'touchend', onTouchEnd);\n                    removeGlobalListener(window, 'touchcancel', onTouchEnd);\n                }\n            };\n            moveProps.onTouchStart = (e)=>{\n                if (e.changedTouches.length === 0 || state.current.id != null) return;\n                let { pageX, pageY, identifier } = e.changedTouches[0];\n                start();\n                e.stopPropagation();\n                e.preventDefault();\n                state.current.lastPosition = {\n                    pageX,\n                    pageY\n                };\n                state.current.id = identifier;\n                addGlobalListener(window, 'touchmove', onTouchMove, false);\n                addGlobalListener(window, 'touchend', onTouchEnd, false);\n                addGlobalListener(window, 'touchcancel', onTouchEnd, false);\n            };\n        } else {\n            let onPointerMove = (e)=>{\n                if (e.pointerId === state.current.id) {\n                    let pointerType = e.pointerType || 'mouse';\n                    // Problems with PointerEvent#movementX/movementY:\n                    // 1. it is always 0 on macOS Safari.\n                    // 2. On Chrome Android, it's scaled by devicePixelRatio, but not on Chrome macOS\n                    move(e, pointerType, e.pageX - (state.current.lastPosition?.pageX ?? 0), e.pageY - (state.current.lastPosition?.pageY ?? 0));\n                    state.current.lastPosition = {\n                        pageX: e.pageX,\n                        pageY: e.pageY\n                    };\n                }\n            };\n            let onPointerUp = (e)=>{\n                if (e.pointerId === state.current.id) {\n                    let pointerType = e.pointerType || 'mouse';\n                    end(e, pointerType);\n                    state.current.id = null;\n                    removeGlobalListener(window, 'pointermove', onPointerMove, false);\n                    removeGlobalListener(window, 'pointerup', onPointerUp, false);\n                    removeGlobalListener(window, 'pointercancel', onPointerUp, false);\n                }\n            };\n            moveProps.onPointerDown = (e)=>{\n                if (e.button === 0 && state.current.id == null) {\n                    start();\n                    e.stopPropagation();\n                    e.preventDefault();\n                    state.current.lastPosition = {\n                        pageX: e.pageX,\n                        pageY: e.pageY\n                    };\n                    state.current.id = e.pointerId;\n                    addGlobalListener(window, 'pointermove', onPointerMove, false);\n                    addGlobalListener(window, 'pointerup', onPointerUp, false);\n                    addGlobalListener(window, 'pointercancel', onPointerUp, false);\n                }\n            };\n        }\n        let triggerKeyboardMove = (e, deltaX, deltaY)=>{\n            start();\n            move(e, 'keyboard', deltaX, deltaY);\n            end(e, 'keyboard');\n        };\n        moveProps.onKeyDown = (e)=>{\n            switch(e.key){\n                case 'Left':\n                case 'ArrowLeft':\n                    e.preventDefault();\n                    e.stopPropagation();\n                    triggerKeyboardMove(e, -1, 0);\n                    break;\n                case 'Right':\n                case 'ArrowRight':\n                    e.preventDefault();\n                    e.stopPropagation();\n                    triggerKeyboardMove(e, 1, 0);\n                    break;\n                case 'Up':\n                case 'ArrowUp':\n                    e.preventDefault();\n                    e.stopPropagation();\n                    triggerKeyboardMove(e, 0, -1);\n                    break;\n                case 'Down':\n                case 'ArrowDown':\n                    e.preventDefault();\n                    e.stopPropagation();\n                    triggerKeyboardMove(e, 0, 1);\n                    break;\n            }\n        };\n        return moveProps;\n    }, [\n        state,\n        addGlobalListener,\n        removeGlobalListener,\n        move,\n        end\n    ]);\n    return {\n        moveProps\n    };\n}\n\n},{\"./textSelection\":\"7DdaW\",\"react\":\"jEiK2\",\"@react-aria/utils\":\"e9Yvo\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"7DdaW\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"disableTextSelection\", ()=>disableTextSelection);\nparcelHelpers.export(exports, \"restoreTextSelection\", ()=>restoreTextSelection);\nvar _utils = require(\"@react-aria/utils\");\n// Note that state only matters here for iOS. Non-iOS gets user-select: none applied to the target element\n// rather than at the document level so we just need to apply/remove user-select: none for each pressed element individually\nlet state = 'default';\nlet savedUserSelect = '';\nlet modifiedElementMap = new WeakMap();\nfunction disableTextSelection(target) {\n    if ((0, _utils.isIOS)()) {\n        if (state === 'default') {\n            // eslint-disable-next-line no-restricted-globals\n            const documentObject = (0, _utils.getOwnerDocument)(target);\n            savedUserSelect = documentObject.documentElement.style.webkitUserSelect;\n            documentObject.documentElement.style.webkitUserSelect = 'none';\n        }\n        state = 'disabled';\n    } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n        // If not iOS, store the target's original user-select and change to user-select: none\n        // Ignore state since it doesn't apply for non iOS\n        modifiedElementMap.set(target, target.style.userSelect);\n        target.style.userSelect = 'none';\n    }\n}\nfunction restoreTextSelection(target) {\n    if ((0, _utils.isIOS)()) {\n        // If the state is already default, there's nothing to do.\n        // If it is restoring, then there's no need to queue a second restore.\n        if (state !== 'disabled') return;\n        state = 'restoring';\n        // There appears to be a delay on iOS where selection still might occur\n        // after pointer up, so wait a bit before removing user-select.\n        setTimeout(()=>{\n            // Wait for any CSS transitions to complete so we don't recompute style\n            // for the whole page in the middle of the animation and cause jank.\n            (0, _utils.runAfterTransition)(()=>{\n                // Avoid race conditions\n                if (state === 'restoring') {\n                    // eslint-disable-next-line no-restricted-globals\n                    const documentObject = (0, _utils.getOwnerDocument)(target);\n                    if (documentObject.documentElement.style.webkitUserSelect === 'none') documentObject.documentElement.style.webkitUserSelect = savedUserSelect || '';\n                    savedUserSelect = '';\n                    state = 'default';\n                }\n            });\n        }, 300);\n    } else if (target instanceof HTMLElement || target instanceof SVGElement) // If not iOS, restore the target's original user-select if any\n    // Ignore state since it doesn't apply for non iOS\n    {\n        if (target && modifiedElementMap.has(target)) {\n            let targetOldUserSelect = modifiedElementMap.get(target);\n            if (target.style.userSelect === 'none') target.style.userSelect = targetOldUserSelect;\n            if (target.getAttribute('style') === '') target.removeAttribute('style');\n            modifiedElementMap.delete(target);\n        }\n    }\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"fOpRp\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Handles press interactions across mouse, touch, keyboard, and screen readers.\n * It normalizes behavior across browsers and platforms, and handles many nuances\n * of dealing with pointer and keyboard events.\n */ parcelHelpers.export(exports, \"usePress\", ()=>usePress);\nvar _utils = require(\"@react-aria/utils\");\nvar _textSelection = require(\"./textSelection\");\nvar _context = require(\"./context\");\nvar _react = require(\"react\");\nfunction usePressResponderContext(props) {\n    // Consume context from <PressResponder> and merge with props.\n    let context = (0, _react.useContext)((0, _context.PressResponderContext));\n    if (context) {\n        let { register, ...contextProps } = context;\n        props = (0, _utils.mergeProps)(contextProps, props);\n        register();\n    }\n    (0, _utils.useSyncRef)(context, props.ref);\n    return props;\n}\nclass PressEvent {\n    #shouldStopPropagation;\n    constructor(type, pointerType, originalEvent, state){\n        this.#shouldStopPropagation = true;\n        let currentTarget = state?.target ?? originalEvent.currentTarget;\n        const rect = currentTarget?.getBoundingClientRect();\n        let x, y = 0;\n        let clientX, clientY = null;\n        if (originalEvent.clientX != null && originalEvent.clientY != null) {\n            clientX = originalEvent.clientX;\n            clientY = originalEvent.clientY;\n        }\n        if (rect) {\n            if (clientX != null && clientY != null) {\n                x = clientX - rect.left;\n                y = clientY - rect.top;\n            } else {\n                x = rect.width / 2;\n                y = rect.height / 2;\n            }\n        }\n        this.type = type;\n        this.pointerType = pointerType;\n        this.target = originalEvent.currentTarget;\n        this.shiftKey = originalEvent.shiftKey;\n        this.metaKey = originalEvent.metaKey;\n        this.ctrlKey = originalEvent.ctrlKey;\n        this.altKey = originalEvent.altKey;\n        this.x = x;\n        this.y = y;\n    }\n    continuePropagation() {\n        this.#shouldStopPropagation = false;\n    }\n    get shouldStopPropagation() {\n        return this.#shouldStopPropagation;\n    }\n}\nconst LINK_CLICKED = Symbol('linkClicked');\nfunction usePress(props) {\n    let { onPress, onPressChange, onPressStart, onPressEnd, onPressUp, isDisabled, isPressed: isPressedProp, preventFocusOnPress, shouldCancelOnPointerExit, allowTextSelectionOnPress, // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    ref: _, ...domProps } = usePressResponderContext(props);\n    let [isPressed, setPressed] = (0, _react.useState)(false);\n    let ref = (0, _react.useRef)({\n        isPressed: false,\n        ignoreEmulatedMouseEvents: false,\n        ignoreClickAfterPress: false,\n        didFirePressStart: false,\n        isTriggeringEvent: false,\n        activePointerId: null,\n        target: null,\n        isOverTarget: false,\n        pointerType: null\n    });\n    let { addGlobalListener, removeAllGlobalListeners } = (0, _utils.useGlobalListeners)();\n    let triggerPressStart = (0, _utils.useEffectEvent)((originalEvent, pointerType)=>{\n        let state = ref.current;\n        if (isDisabled || state.didFirePressStart) return false;\n        let shouldStopPropagation = true;\n        state.isTriggeringEvent = true;\n        if (onPressStart) {\n            let event = new PressEvent('pressstart', pointerType, originalEvent);\n            onPressStart(event);\n            shouldStopPropagation = event.shouldStopPropagation;\n        }\n        if (onPressChange) onPressChange(true);\n        state.isTriggeringEvent = false;\n        state.didFirePressStart = true;\n        setPressed(true);\n        return shouldStopPropagation;\n    });\n    let triggerPressEnd = (0, _utils.useEffectEvent)((originalEvent, pointerType, wasPressed = true)=>{\n        let state = ref.current;\n        if (!state.didFirePressStart) return false;\n        state.ignoreClickAfterPress = true;\n        state.didFirePressStart = false;\n        state.isTriggeringEvent = true;\n        let shouldStopPropagation = true;\n        if (onPressEnd) {\n            let event = new PressEvent('pressend', pointerType, originalEvent);\n            onPressEnd(event);\n            shouldStopPropagation = event.shouldStopPropagation;\n        }\n        if (onPressChange) onPressChange(false);\n        setPressed(false);\n        if (onPress && wasPressed && !isDisabled) {\n            let event = new PressEvent('press', pointerType, originalEvent);\n            onPress(event);\n            shouldStopPropagation &&= event.shouldStopPropagation;\n        }\n        state.isTriggeringEvent = false;\n        return shouldStopPropagation;\n    });\n    let triggerPressUp = (0, _utils.useEffectEvent)((originalEvent, pointerType)=>{\n        let state = ref.current;\n        if (isDisabled) return false;\n        if (onPressUp) {\n            state.isTriggeringEvent = true;\n            let event = new PressEvent('pressup', pointerType, originalEvent);\n            onPressUp(event);\n            state.isTriggeringEvent = false;\n            return event.shouldStopPropagation;\n        }\n        return true;\n    });\n    let cancel = (0, _utils.useEffectEvent)((e)=>{\n        let state = ref.current;\n        if (state.isPressed && state.target) {\n            if (state.isOverTarget && state.pointerType != null) triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n            state.isPressed = false;\n            state.isOverTarget = false;\n            state.activePointerId = null;\n            state.pointerType = null;\n            removeAllGlobalListeners();\n            if (!allowTextSelectionOnPress) (0, _textSelection.restoreTextSelection)(state.target);\n        }\n    });\n    let cancelOnPointerExit = (0, _utils.useEffectEvent)((e)=>{\n        if (shouldCancelOnPointerExit) cancel(e);\n    });\n    let pressProps = (0, _react.useMemo)(()=>{\n        let state = ref.current;\n        let pressProps = {\n            onKeyDown (e) {\n                if (isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && e.currentTarget.contains(e.target)) {\n                    if (shouldPreventDefaultKeyboard(e.target, e.key)) e.preventDefault();\n                    // If the event is repeating, it may have started on a different element\n                    // after which focus moved to the current element. Ignore these events and\n                    // only handle the first key down event.\n                    let shouldStopPropagation = true;\n                    if (!state.isPressed && !e.repeat) {\n                        state.target = e.currentTarget;\n                        state.isPressed = true;\n                        shouldStopPropagation = triggerPressStart(e, 'keyboard');\n                        // Focus may move before the key up event, so register the event on the document\n                        // instead of the same element where the key down event occurred. Make it capturing so that it will trigger\n                        // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.\n                        let originalTarget = e.currentTarget;\n                        let pressUp = (e)=>{\n                            if (isValidKeyboardEvent(e, originalTarget) && !e.repeat && originalTarget.contains(e.target) && state.target) triggerPressUp(createEvent(state.target, e), 'keyboard');\n                        };\n                        addGlobalListener((0, _utils.getOwnerDocument)(e.currentTarget), 'keyup', (0, _utils.chain)(pressUp, onKeyUp), true);\n                    }\n                    if (shouldStopPropagation) e.stopPropagation();\n                    // Keep track of the keydown events that occur while the Meta (e.g. Command) key is held.\n                    // macOS has a bug where keyup events are not fired while the Meta key is down.\n                    // When the Meta key itself is released we will get an event for that, and we'll act as if\n                    // all of these other keys were released as well.\n                    // https://bugs.chromium.org/p/chromium/issues/detail?id=1393524\n                    // https://bugs.webkit.org/show_bug.cgi?id=55291\n                    // https://bugzilla.mozilla.org/show_bug.cgi?id=1299553\n                    if (e.metaKey && (0, _utils.isMac)()) state.metaKeyEvents?.set(e.key, e.nativeEvent);\n                } else if (e.key === 'Meta') state.metaKeyEvents = new Map();\n            },\n            onClick (e) {\n                if (e && !e.currentTarget.contains(e.target)) return;\n                if (e && e.button === 0 && !state.isTriggeringEvent && !(0, _utils.openLink).isOpening) {\n                    let shouldStopPropagation = true;\n                    if (isDisabled) e.preventDefault();\n                    // If triggered from a screen reader or by using element.click(),\n                    // trigger as if it were a keyboard click.\n                    if (!state.ignoreClickAfterPress && !state.ignoreEmulatedMouseEvents && !state.isPressed && (state.pointerType === 'virtual' || (0, _utils.isVirtualClick)(e.nativeEvent))) {\n                        // Ensure the element receives focus (VoiceOver on iOS does not do this)\n                        if (!isDisabled && !preventFocusOnPress) (0, _utils.focusWithoutScrolling)(e.currentTarget);\n                        let stopPressStart = triggerPressStart(e, 'virtual');\n                        let stopPressUp = triggerPressUp(e, 'virtual');\n                        let stopPressEnd = triggerPressEnd(e, 'virtual');\n                        shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;\n                    }\n                    state.ignoreEmulatedMouseEvents = false;\n                    state.ignoreClickAfterPress = false;\n                    if (shouldStopPropagation) e.stopPropagation();\n                }\n            }\n        };\n        let onKeyUp = (e)=>{\n            if (state.isPressed && state.target && isValidKeyboardEvent(e, state.target)) {\n                if (shouldPreventDefaultKeyboard(e.target, e.key)) e.preventDefault();\n                let target = e.target;\n                triggerPressEnd(createEvent(state.target, e), 'keyboard', state.target.contains(target));\n                removeAllGlobalListeners();\n                // If a link was triggered with a key other than Enter, open the URL ourselves.\n                // This means the link has a role override, and the default browser behavior\n                // only applies when using the Enter key.\n                if (e.key !== 'Enter' && isHTMLAnchorLink(state.target) && state.target.contains(target) && !e[LINK_CLICKED]) {\n                    // Store a hidden property on the event so we only trigger link click once,\n                    // even if there are multiple usePress instances attached to the element.\n                    e[LINK_CLICKED] = true;\n                    (0, _utils.openLink)(state.target, e, false);\n                }\n                state.isPressed = false;\n                state.metaKeyEvents?.delete(e.key);\n            } else if (e.key === 'Meta' && state.metaKeyEvents?.size) {\n                // If we recorded keydown events that occurred while the Meta key was pressed,\n                // and those haven't received keyup events already, fire keyup events ourselves.\n                // See comment above for more info about the macOS bug causing this.\n                let events = state.metaKeyEvents;\n                state.metaKeyEvents = undefined;\n                for (let event of events.values())state.target?.dispatchEvent(new KeyboardEvent('keyup', event));\n            }\n        };\n        if (typeof PointerEvent !== 'undefined') {\n            pressProps.onPointerDown = (e)=>{\n                // Only handle left clicks, and ignore events that bubbled through portals.\n                if (e.button !== 0 || !e.currentTarget.contains(e.target)) return;\n                // iOS safari fires pointer events from VoiceOver with incorrect coordinates/target.\n                // Ignore and let the onClick handler take care of it instead.\n                // https://bugs.webkit.org/show_bug.cgi?id=222627\n                // https://bugs.webkit.org/show_bug.cgi?id=223202\n                if ((0, _utils.isVirtualPointerEvent)(e.nativeEvent)) {\n                    state.pointerType = 'virtual';\n                    return;\n                }\n                // Due to browser inconsistencies, especially on mobile browsers, we prevent\n                // default on pointer down and handle focusing the pressable element ourselves.\n                if (shouldPreventDefaultDown(e.currentTarget)) e.preventDefault();\n                state.pointerType = e.pointerType;\n                let shouldStopPropagation = true;\n                if (!state.isPressed) {\n                    state.isPressed = true;\n                    state.isOverTarget = true;\n                    state.activePointerId = e.pointerId;\n                    state.target = e.currentTarget;\n                    if (!isDisabled && !preventFocusOnPress) (0, _utils.focusWithoutScrolling)(e.currentTarget);\n                    if (!allowTextSelectionOnPress) (0, _textSelection.disableTextSelection)(state.target);\n                    shouldStopPropagation = triggerPressStart(e, state.pointerType);\n                    addGlobalListener((0, _utils.getOwnerDocument)(e.currentTarget), 'pointermove', onPointerMove, false);\n                    addGlobalListener((0, _utils.getOwnerDocument)(e.currentTarget), 'pointerup', onPointerUp, false);\n                    addGlobalListener((0, _utils.getOwnerDocument)(e.currentTarget), 'pointercancel', onPointerCancel, false);\n                }\n                if (shouldStopPropagation) e.stopPropagation();\n            };\n            pressProps.onMouseDown = (e)=>{\n                if (!e.currentTarget.contains(e.target)) return;\n                if (e.button === 0) {\n                    // Chrome and Firefox on touch Windows devices require mouse down events\n                    // to be canceled in addition to pointer events, or an extra asynchronous\n                    // focus event will be fired.\n                    if (shouldPreventDefaultDown(e.currentTarget)) e.preventDefault();\n                    e.stopPropagation();\n                }\n            };\n            pressProps.onPointerUp = (e)=>{\n                // iOS fires pointerup with zero width and height, so check the pointerType recorded during pointerdown.\n                if (!e.currentTarget.contains(e.target) || state.pointerType === 'virtual') return;\n                // Only handle left clicks\n                // Safari on iOS sometimes fires pointerup events, even\n                // when the touch isn't over the target, so double check.\n                if (e.button === 0 && isOverTarget(e, e.currentTarget)) triggerPressUp(e, state.pointerType || e.pointerType);\n            };\n            // Safari on iOS < 13.2 does not implement pointerenter/pointerleave events correctly.\n            // Use pointer move events instead to implement our own hit testing.\n            // See https://bugs.webkit.org/show_bug.cgi?id=199803\n            let onPointerMove = (e)=>{\n                if (e.pointerId !== state.activePointerId) return;\n                if (state.target && isOverTarget(e, state.target)) {\n                    if (!state.isOverTarget && state.pointerType != null) {\n                        state.isOverTarget = true;\n                        triggerPressStart(createEvent(state.target, e), state.pointerType);\n                    }\n                } else if (state.target && state.isOverTarget && state.pointerType != null) {\n                    state.isOverTarget = false;\n                    triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n                    cancelOnPointerExit(e);\n                }\n            };\n            let onPointerUp = (e)=>{\n                if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {\n                    if (isOverTarget(e, state.target) && state.pointerType != null) triggerPressEnd(createEvent(state.target, e), state.pointerType);\n                    else if (state.isOverTarget && state.pointerType != null) triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n                    state.isPressed = false;\n                    state.isOverTarget = false;\n                    state.activePointerId = null;\n                    state.pointerType = null;\n                    removeAllGlobalListeners();\n                    if (!allowTextSelectionOnPress) (0, _textSelection.restoreTextSelection)(state.target);\n                    // Prevent subsequent touchend event from triggering onClick on unrelated elements on Android. See below.\n                    // Both 'touch' and 'pen' pointerTypes trigger onTouchEnd, but 'mouse' does not.\n                    if ('ontouchend' in state.target && e.pointerType !== 'mouse') addGlobalListener(state.target, 'touchend', onTouchEnd, {\n                        once: true\n                    });\n                }\n            };\n            // This is a workaround for an Android Chrome/Firefox issue where click events are fired on an incorrect element\n            // if the original target is removed during onPointerUp (before onClick).\n            // https://github.com/adobe/react-spectrum/issues/1513\n            // https://issues.chromium.org/issues/40732224\n            // Note: this event must be registered directly on the element, not via React props in order to work.\n            // https://github.com/facebook/react/issues/9809\n            let onTouchEnd = (e)=>{\n                // Don't preventDefault if we actually want the default (e.g. submit/link click).\n                if (shouldPreventDefaultUp(e.target)) e.preventDefault();\n            };\n            let onPointerCancel = (e)=>{\n                cancel(e);\n            };\n            pressProps.onDragStart = (e)=>{\n                if (!e.currentTarget.contains(e.target)) return;\n                // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.\n                cancel(e);\n            };\n        } else {\n            pressProps.onMouseDown = (e)=>{\n                // Only handle left clicks\n                if (e.button !== 0 || !e.currentTarget.contains(e.target)) return;\n                // Due to browser inconsistencies, especially on mobile browsers, we prevent\n                // default on mouse down and handle focusing the pressable element ourselves.\n                if (shouldPreventDefaultDown(e.currentTarget)) e.preventDefault();\n                if (state.ignoreEmulatedMouseEvents) {\n                    e.stopPropagation();\n                    return;\n                }\n                state.isPressed = true;\n                state.isOverTarget = true;\n                state.target = e.currentTarget;\n                state.pointerType = (0, _utils.isVirtualClick)(e.nativeEvent) ? 'virtual' : 'mouse';\n                if (!isDisabled && !preventFocusOnPress) (0, _utils.focusWithoutScrolling)(e.currentTarget);\n                let shouldStopPropagation = triggerPressStart(e, state.pointerType);\n                if (shouldStopPropagation) e.stopPropagation();\n                addGlobalListener((0, _utils.getOwnerDocument)(e.currentTarget), 'mouseup', onMouseUp, false);\n            };\n            pressProps.onMouseEnter = (e)=>{\n                if (!e.currentTarget.contains(e.target)) return;\n                let shouldStopPropagation = true;\n                if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n                    state.isOverTarget = true;\n                    shouldStopPropagation = triggerPressStart(e, state.pointerType);\n                }\n                if (shouldStopPropagation) e.stopPropagation();\n            };\n            pressProps.onMouseLeave = (e)=>{\n                if (!e.currentTarget.contains(e.target)) return;\n                let shouldStopPropagation = true;\n                if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n                    state.isOverTarget = false;\n                    shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n                    cancelOnPointerExit(e);\n                }\n                if (shouldStopPropagation) e.stopPropagation();\n            };\n            pressProps.onMouseUp = (e)=>{\n                if (!e.currentTarget.contains(e.target)) return;\n                if (!state.ignoreEmulatedMouseEvents && e.button === 0) triggerPressUp(e, state.pointerType || 'mouse');\n            };\n            let onMouseUp = (e)=>{\n                // Only handle left clicks\n                if (e.button !== 0) return;\n                state.isPressed = false;\n                removeAllGlobalListeners();\n                if (state.ignoreEmulatedMouseEvents) {\n                    state.ignoreEmulatedMouseEvents = false;\n                    return;\n                }\n                if (state.target && isOverTarget(e, state.target) && state.pointerType != null) triggerPressEnd(createEvent(state.target, e), state.pointerType);\n                else if (state.target && state.isOverTarget && state.pointerType != null) triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n                state.isOverTarget = false;\n            };\n            pressProps.onTouchStart = (e)=>{\n                if (!e.currentTarget.contains(e.target)) return;\n                let touch = getTouchFromEvent(e.nativeEvent);\n                if (!touch) return;\n                state.activePointerId = touch.identifier;\n                state.ignoreEmulatedMouseEvents = true;\n                state.isOverTarget = true;\n                state.isPressed = true;\n                state.target = e.currentTarget;\n                state.pointerType = 'touch';\n                // Due to browser inconsistencies, especially on mobile browsers, we prevent default\n                // on the emulated mouse event and handle focusing the pressable element ourselves.\n                if (!isDisabled && !preventFocusOnPress) (0, _utils.focusWithoutScrolling)(e.currentTarget);\n                if (!allowTextSelectionOnPress) (0, _textSelection.disableTextSelection)(state.target);\n                let shouldStopPropagation = triggerPressStart(createTouchEvent(state.target, e), state.pointerType);\n                if (shouldStopPropagation) e.stopPropagation();\n                addGlobalListener((0, _utils.getOwnerWindow)(e.currentTarget), 'scroll', onScroll, true);\n            };\n            pressProps.onTouchMove = (e)=>{\n                if (!e.currentTarget.contains(e.target)) return;\n                if (!state.isPressed) {\n                    e.stopPropagation();\n                    return;\n                }\n                let touch = getTouchById(e.nativeEvent, state.activePointerId);\n                let shouldStopPropagation = true;\n                if (touch && isOverTarget(touch, e.currentTarget)) {\n                    if (!state.isOverTarget && state.pointerType != null) {\n                        state.isOverTarget = true;\n                        shouldStopPropagation = triggerPressStart(createTouchEvent(state.target, e), state.pointerType);\n                    }\n                } else if (state.isOverTarget && state.pointerType != null) {\n                    state.isOverTarget = false;\n                    shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target, e), state.pointerType, false);\n                    cancelOnPointerExit(createTouchEvent(state.target, e));\n                }\n                if (shouldStopPropagation) e.stopPropagation();\n            };\n            pressProps.onTouchEnd = (e)=>{\n                if (!e.currentTarget.contains(e.target)) return;\n                if (!state.isPressed) {\n                    e.stopPropagation();\n                    return;\n                }\n                let touch = getTouchById(e.nativeEvent, state.activePointerId);\n                let shouldStopPropagation = true;\n                if (touch && isOverTarget(touch, e.currentTarget) && state.pointerType != null) {\n                    triggerPressUp(createTouchEvent(state.target, e), state.pointerType);\n                    shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target, e), state.pointerType);\n                } else if (state.isOverTarget && state.pointerType != null) shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target, e), state.pointerType, false);\n                if (shouldStopPropagation) e.stopPropagation();\n                state.isPressed = false;\n                state.activePointerId = null;\n                state.isOverTarget = false;\n                state.ignoreEmulatedMouseEvents = true;\n                if (state.target && !allowTextSelectionOnPress) (0, _textSelection.restoreTextSelection)(state.target);\n                removeAllGlobalListeners();\n            };\n            pressProps.onTouchCancel = (e)=>{\n                if (!e.currentTarget.contains(e.target)) return;\n                e.stopPropagation();\n                if (state.isPressed) cancel(createTouchEvent(state.target, e));\n            };\n            let onScroll = (e)=>{\n                if (state.isPressed && e.target.contains(state.target)) cancel({\n                    currentTarget: state.target,\n                    shiftKey: false,\n                    ctrlKey: false,\n                    metaKey: false,\n                    altKey: false\n                });\n            };\n            pressProps.onDragStart = (e)=>{\n                if (!e.currentTarget.contains(e.target)) return;\n                cancel(e);\n            };\n        }\n        return pressProps;\n    }, [\n        addGlobalListener,\n        isDisabled,\n        preventFocusOnPress,\n        removeAllGlobalListeners,\n        allowTextSelectionOnPress,\n        cancel,\n        cancelOnPointerExit,\n        triggerPressEnd,\n        triggerPressStart,\n        triggerPressUp\n    ]);\n    // Remove user-select: none in case component unmounts immediately after pressStart\n    // eslint-disable-next-line arrow-body-style\n    (0, _react.useEffect)(()=>{\n        return ()=>{\n            if (!allowTextSelectionOnPress) // eslint-disable-next-line react-hooks/exhaustive-deps\n            (0, _textSelection.restoreTextSelection)(ref.current.target ?? undefined);\n        };\n    }, [\n        allowTextSelectionOnPress\n    ]);\n    return {\n        isPressed: isPressedProp || isPressed,\n        pressProps: (0, _utils.mergeProps)(domProps, pressProps)\n    };\n}\nfunction isHTMLAnchorLink(target) {\n    return target.tagName === 'A' && target.hasAttribute('href');\n}\nfunction isValidKeyboardEvent(event, currentTarget) {\n    const { key, code } = event;\n    const element = currentTarget;\n    const role = element.getAttribute('role');\n    // Accessibility for keyboards. Space and Enter only.\n    // \"Spacebar\" is for IE 11\n    return (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') && !(element instanceof (0, _utils.getOwnerWindow)(element).HTMLInputElement && !isValidInputKey(element, key) || element instanceof (0, _utils.getOwnerWindow)(element).HTMLTextAreaElement || element.isContentEditable) && // Links should only trigger with Enter key\n    !((role === 'link' || !role && isHTMLAnchorLink(element)) && key !== 'Enter');\n}\nfunction getTouchFromEvent(event) {\n    const { targetTouches } = event;\n    if (targetTouches.length > 0) return targetTouches[0];\n    return null;\n}\nfunction getTouchById(event, pointerId) {\n    const changedTouches = event.changedTouches;\n    for(let i = 0; i < changedTouches.length; i++){\n        const touch = changedTouches[i];\n        if (touch.identifier === pointerId) return touch;\n    }\n    return null;\n}\nfunction createTouchEvent(target, e) {\n    let clientX = 0;\n    let clientY = 0;\n    if (e.targetTouches && e.targetTouches.length === 1) {\n        clientX = e.targetTouches[0].clientX;\n        clientY = e.targetTouches[0].clientY;\n    }\n    return {\n        currentTarget: target,\n        shiftKey: e.shiftKey,\n        ctrlKey: e.ctrlKey,\n        metaKey: e.metaKey,\n        altKey: e.altKey,\n        clientX,\n        clientY\n    };\n}\nfunction createEvent(target, e) {\n    let clientX = e.clientX;\n    let clientY = e.clientY;\n    return {\n        currentTarget: target,\n        shiftKey: e.shiftKey,\n        ctrlKey: e.ctrlKey,\n        metaKey: e.metaKey,\n        altKey: e.altKey,\n        clientX,\n        clientY\n    };\n}\nfunction getPointClientRect(point) {\n    let offsetX = 0;\n    let offsetY = 0;\n    if (point.width !== undefined) offsetX = point.width / 2;\n    else if (point.radiusX !== undefined) offsetX = point.radiusX;\n    if (point.height !== undefined) offsetY = point.height / 2;\n    else if (point.radiusY !== undefined) offsetY = point.radiusY;\n    return {\n        top: point.clientY - offsetY,\n        right: point.clientX + offsetX,\n        bottom: point.clientY + offsetY,\n        left: point.clientX - offsetX\n    };\n}\nfunction areRectanglesOverlapping(a, b) {\n    // check if they cannot overlap on x axis\n    if (a.left > b.right || b.left > a.right) return false;\n    // check if they cannot overlap on y axis\n    if (a.top > b.bottom || b.top > a.bottom) return false;\n    return true;\n}\nfunction isOverTarget(point, target) {\n    let rect = target.getBoundingClientRect();\n    let pointRect = getPointClientRect(point);\n    return areRectanglesOverlapping(rect, pointRect);\n}\nfunction shouldPreventDefaultDown(target) {\n    // We cannot prevent default if the target is a draggable element.\n    return !(target instanceof HTMLElement) || !target.hasAttribute('draggable');\n}\nfunction shouldPreventDefaultUp(target) {\n    if (target instanceof HTMLInputElement) return false;\n    if (target instanceof HTMLButtonElement) return target.type !== 'submit' && target.type !== 'reset';\n    if (isHTMLAnchorLink(target)) return false;\n    return true;\n}\nfunction shouldPreventDefaultKeyboard(target, key) {\n    if (target instanceof HTMLInputElement) return !isValidInputKey(target, key);\n    return shouldPreventDefaultUp(target);\n}\nconst nonTextInputTypes = new Set([\n    'checkbox',\n    'radio',\n    'range',\n    'color',\n    'file',\n    'image',\n    'button',\n    'submit',\n    'reset'\n]);\nfunction isValidInputKey(target, key) {\n    // Only space should toggle checkboxes and radios, not enter.\n    return target.type === 'checkbox' || target.type === 'radio' ? key === ' ' : nonTextInputTypes.has(target.type);\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"./textSelection\":\"7DdaW\",\"./context\":\"6hjZq\",\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"4d7Vp\":[function(require,module,exports) {\n/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n// scroll wheel needs to be added not passively so it's cancelable, small helper hook to remember that\nparcelHelpers.export(exports, \"useScrollWheel\", ()=>useScrollWheel);\nvar _react = require(\"react\");\nvar _utils = require(\"@react-aria/utils\");\nfunction useScrollWheel(props, ref) {\n    let { onScroll, isDisabled } = props;\n    let onScrollHandler = (0, _react.useCallback)((e)=>{\n        // If the ctrlKey is pressed, this is a zoom event, do nothing.\n        if (e.ctrlKey) return;\n        // stop scrolling the page\n        e.preventDefault();\n        e.stopPropagation();\n        if (onScroll) onScroll({\n            deltaX: e.deltaX,\n            deltaY: e.deltaY\n        });\n    }, [\n        onScroll\n    ]);\n    (0, _utils.useEvent)(ref, 'wheel', isDisabled ? undefined : onScrollHandler);\n}\n\n},{\"react\":\"jEiK2\",\"@react-aria/utils\":\"e9Yvo\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"6FTm4\":[function(require,module,exports) {\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Handles long press interactions across mouse and touch devices. Supports a customizable time threshold,\n * accessibility description, and normalizes behavior across browsers and devices.\n */ parcelHelpers.export(exports, \"useLongPress\", ()=>useLongPress);\nvar _utils = require(\"@react-aria/utils\");\nvar _usePress = require(\"./usePress\");\nvar _react = require(\"react\");\nconst DEFAULT_THRESHOLD = 500;\nfunction useLongPress(props) {\n    let { isDisabled, onLongPressStart, onLongPressEnd, onLongPress, threshold = DEFAULT_THRESHOLD, accessibilityDescription } = props;\n    const timeRef = (0, _react.useRef)(undefined);\n    let { addGlobalListener, removeGlobalListener } = (0, _utils.useGlobalListeners)();\n    let { pressProps } = (0, _usePress.usePress)({\n        isDisabled,\n        onPressStart (e) {\n            e.continuePropagation();\n            if (e.pointerType === 'mouse' || e.pointerType === 'touch') {\n                if (onLongPressStart) onLongPressStart({\n                    ...e,\n                    type: 'longpressstart'\n                });\n                timeRef.current = setTimeout(()=>{\n                    // Prevent other usePress handlers from also handling this event.\n                    e.target.dispatchEvent(new PointerEvent('pointercancel', {\n                        bubbles: true\n                    }));\n                    if (onLongPress) onLongPress({\n                        ...e,\n                        type: 'longpress'\n                    });\n                    timeRef.current = undefined;\n                }, threshold);\n                // Prevent context menu, which may be opened on long press on touch devices\n                if (e.pointerType === 'touch') {\n                    let onContextMenu = (e)=>{\n                        e.preventDefault();\n                    };\n                    addGlobalListener(e.target, 'contextmenu', onContextMenu, {\n                        once: true\n                    });\n                    addGlobalListener(window, 'pointerup', ()=>{\n                        // If no contextmenu event is fired quickly after pointerup, remove the handler\n                        // so future context menu events outside a long press are not prevented.\n                        setTimeout(()=>{\n                            removeGlobalListener(e.target, 'contextmenu', onContextMenu);\n                        }, 30);\n                    }, {\n                        once: true\n                    });\n                }\n            }\n        },\n        onPressEnd (e) {\n            if (timeRef.current) clearTimeout(timeRef.current);\n            if (onLongPressEnd && (e.pointerType === 'mouse' || e.pointerType === 'touch')) onLongPressEnd({\n                ...e,\n                type: 'longpressend'\n            });\n        }\n    });\n    let descriptionProps = (0, _utils.useDescription)(onLongPress && !isDisabled ? accessibilityDescription : undefined);\n    return {\n        longPressProps: (0, _utils.mergeProps)(pressProps, descriptionProps)\n    };\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"./usePress\":\"fOpRp\",\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}]},[], null, \"parcelRequire94c2\")\n\n//# sourceMappingURL=useButton.stories.35b7ce16.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport {Pressable} from './Pressable';\nexport {PressResponder, ClearPressResponder} from './PressResponder';\nexport {useFocus} from './useFocus';\nexport {\n  isFocusVisible,\n  getInteractionModality,\n  setInteractionModality,\n  addWindowFocusTracking,\n  useInteractionModality,\n  useFocusVisible,\n  useFocusVisibleListener\n} from './useFocusVisible';\nexport {useFocusWithin} from './useFocusWithin';\nexport {useHover} from './useHover';\nexport {useInteractOutside} from './useInteractOutside';\nexport {useKeyboard} from './useKeyboard';\nexport {useMove} from './useMove';\nexport {usePress} from './usePress';\nexport {useScrollWheel} from './useScrollWheel';\nexport {useLongPress} from './useLongPress';\n\nexport type {FocusProps, FocusResult} from './useFocus';\nexport type {FocusVisibleHandler, FocusVisibleProps, FocusVisibleResult, Modality} from './useFocusVisible';\nexport type {FocusWithinProps, FocusWithinResult} from './useFocusWithin';\nexport type {HoverProps, HoverResult} from './useHover';\nexport type {InteractOutsideProps} from './useInteractOutside';\nexport type {KeyboardProps, KeyboardResult} from './useKeyboard';\nexport type {PressProps, PressHookProps, PressResult} from './usePress';\nexport type {PressEvent, PressEvents, MoveStartEvent, MoveMoveEvent, MoveEndEvent, MoveEvents, HoverEvent, HoverEvents, FocusEvents, KeyboardEvents} from '@react-types/shared';\nexport type {MoveResult} from './useMove';\nexport type {LongPressProps, LongPressResult} from './useLongPress';\nexport type {ScrollWheelProps} from './useScrollWheel';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusableElement} from '@react-types/shared';\nimport {mergeProps, useObjectRef, useSyncRef} from '@react-aria/utils';\nimport {PressProps} from './usePress';\nimport {PressResponderContext} from './context';\nimport React, {ForwardedRef, ReactNode, useContext, useEffect, useMemo, useRef} from 'react';\n\ninterface PressResponderProps extends PressProps {\n  children: ReactNode\n}\n\nexport const PressResponder = React.forwardRef(({children, ...props}: PressResponderProps, ref: ForwardedRef<FocusableElement>) => {\n  let isRegistered = useRef(false);\n  let prevContext = useContext(PressResponderContext);\n  ref = useObjectRef(ref || prevContext?.ref);\n  let context = mergeProps(prevContext || {}, {\n    ...props,\n    ref,\n    register() {\n      isRegistered.current = true;\n      if (prevContext) {\n        prevContext.register();\n      }\n    }\n  });\n\n  useSyncRef(prevContext, ref);\n\n  useEffect(() => {\n    if (!isRegistered.current) {\n      console.warn(\n        'A PressResponder was rendered without a pressable child. ' +\n        'Either call the usePress hook, or wrap your DOM node with <Pressable> component.'\n      );\n      isRegistered.current = true; // only warn once in strict mode.\n    }\n  }, []);\n\n  return (\n    <PressResponderContext.Provider value={context}>\n      {children}\n    </PressResponderContext.Provider>\n  );\n});\n\nexport function ClearPressResponder({children}: {children: ReactNode}) {\n  let context = useMemo(() => ({register: () => {}}), []);\n  return (\n    <PressResponderContext.Provider value={context}>\n      {children}\n    </PressResponderContext.Provider>\n  );\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusableElement} from '@react-types/shared';\nimport {PressProps} from './usePress';\nimport React, {MutableRefObject} from 'react';\n\ninterface IPressResponderContext extends PressProps {\n  register(): void,\n  ref?: MutableRefObject<FocusableElement>\n}\n\nexport const PressResponderContext = React.createContext<IPressResponderContext>({register: () => {}});\nPressResponderContext.displayName = 'PressResponderContext';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {DOMAttributes, FocusableElement, FocusEvents} from '@react-types/shared';\nimport {FocusEvent, useCallback} from 'react';\nimport {getOwnerDocument} from '@react-aria/utils';\nimport {useSyntheticBlurEvent} from './utils';\n\nexport interface FocusProps<Target = FocusableElement> extends FocusEvents<Target> {\n  /** Whether the focus events should be disabled. */\n  isDisabled?: boolean\n}\n\nexport interface FocusResult<Target = FocusableElement> {\n  /** Props to spread onto the target element. */\n  focusProps: DOMAttributes<Target>\n}\n\n/**\n * Handles focus events for the immediate target.\n * Focus events on child elements will be ignored.\n */\nexport function useFocus<Target extends FocusableElement = FocusableElement>(props: FocusProps<Target>): FocusResult<Target> {\n  let {\n    isDisabled,\n    onFocus: onFocusProp,\n    onBlur: onBlurProp,\n    onFocusChange\n  } = props;\n\n  const onBlur: FocusProps<Target>['onBlur'] = useCallback((e: FocusEvent<Target>) => {\n    if (e.target === e.currentTarget) {\n      if (onBlurProp) {\n        onBlurProp(e);\n      }\n\n      if (onFocusChange) {\n        onFocusChange(false);\n      }\n\n      return true;\n    }\n  }, [onBlurProp, onFocusChange]);\n\n\n  const onSyntheticFocus = useSyntheticBlurEvent<Target>(onBlur);\n\n  const onFocus: FocusProps<Target>['onFocus'] = useCallback((e: FocusEvent<Target>) => {\n    // Double check that document.activeElement actually matches e.target in case a previously chained\n    // focus handler already moved focus somewhere else.\n\n    const ownerDocument = getOwnerDocument(e.target);\n\n    if (e.target === e.currentTarget && ownerDocument.activeElement === e.target) {\n      if (onFocusProp) {\n        onFocusProp(e);\n      }\n\n      if (onFocusChange) {\n        onFocusChange(true);\n      }\n\n      onSyntheticFocus(e);\n    }\n  }, [onFocusChange, onFocusProp, onSyntheticFocus]);\n\n  return {\n    focusProps: {\n      onFocus: (!isDisabled && (onFocusProp || onFocusChange || onBlurProp)) ? onFocus : undefined,\n      onBlur: (!isDisabled && (onBlurProp || onFocusChange)) ? onBlur : undefined\n    }\n  };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusEvent as ReactFocusEvent, useCallback, useRef} from 'react';\nimport {useEffectEvent, useLayoutEffect} from '@react-aria/utils';\n\nexport class SyntheticFocusEvent<Target = Element> implements ReactFocusEvent<Target> {\n  nativeEvent: FocusEvent;\n  target: EventTarget & Target;\n  currentTarget: EventTarget & Target;\n  relatedTarget: Element;\n  bubbles: boolean;\n  cancelable: boolean;\n  defaultPrevented: boolean;\n  eventPhase: number;\n  isTrusted: boolean;\n  timeStamp: number;\n  type: string;\n\n  constructor(type: string, nativeEvent: FocusEvent) {\n    this.nativeEvent = nativeEvent;\n    this.target = nativeEvent.target as EventTarget & Target;\n    this.currentTarget = nativeEvent.currentTarget as EventTarget & Target;\n    this.relatedTarget = nativeEvent.relatedTarget as Element;\n    this.bubbles = nativeEvent.bubbles;\n    this.cancelable = nativeEvent.cancelable;\n    this.defaultPrevented = nativeEvent.defaultPrevented;\n    this.eventPhase = nativeEvent.eventPhase;\n    this.isTrusted = nativeEvent.isTrusted;\n    this.timeStamp = nativeEvent.timeStamp;\n    this.type = type;\n  }\n\n  isDefaultPrevented(): boolean {\n    return this.nativeEvent.defaultPrevented;\n  }\n\n  preventDefault(): void {\n    this.defaultPrevented = true;\n    this.nativeEvent.preventDefault();\n  }\n\n  stopPropagation(): void {\n    this.nativeEvent.stopPropagation();\n    this.isPropagationStopped = () => true;\n  }\n\n  isPropagationStopped(): boolean {\n    return false;\n  }\n\n  persist() {}\n}\n\nexport function useSyntheticBlurEvent<Target = Element>(onBlur: (e: ReactFocusEvent<Target>) => void) {\n  let stateRef = useRef({\n    isFocused: false,\n    observer: null as MutationObserver | null\n  });\n\n  // Clean up MutationObserver on unmount. See below.\n  // eslint-disable-next-line arrow-body-style\n  useLayoutEffect(() => {\n    const state = stateRef.current;\n    return () => {\n      if (state.observer) {\n        state.observer.disconnect();\n        state.observer = null;\n      }\n    };\n  }, []);\n\n  let dispatchBlur = useEffectEvent((e: SyntheticFocusEvent<Target>) => {\n    onBlur?.(e);\n  });\n\n  // This function is called during a React onFocus event.\n  return useCallback((e: ReactFocusEvent<Target>) => {\n    // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n    // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n    // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n    // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n    if (\n      e.target instanceof HTMLButtonElement ||\n      e.target instanceof HTMLInputElement ||\n      e.target instanceof HTMLTextAreaElement ||\n      e.target instanceof HTMLSelectElement\n    ) {\n      stateRef.current.isFocused = true;\n\n      let target = e.target;\n      let onBlurHandler: EventListenerOrEventListenerObject | null = (e) => {\n        stateRef.current.isFocused = false;\n\n        if (target.disabled) {\n          // For backward compatibility, dispatch a (fake) React synthetic event.\n          dispatchBlur(new SyntheticFocusEvent('blur', e as FocusEvent));\n        }\n\n        // We no longer need the MutationObserver once the target is blurred.\n        if (stateRef.current.observer) {\n          stateRef.current.observer.disconnect();\n          stateRef.current.observer = null;\n        }\n      };\n\n      target.addEventListener('focusout', onBlurHandler, {once: true});\n\n      stateRef.current.observer = new MutationObserver(() => {\n        if (stateRef.current.isFocused && target.disabled) {\n          stateRef.current.observer?.disconnect();\n          let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n          target.dispatchEvent(new FocusEvent('blur', {relatedTarget: relatedTargetEl}));\n          target.dispatchEvent(new FocusEvent('focusout', {bubbles: true, relatedTarget: relatedTargetEl}));\n        }\n      });\n\n      stateRef.current.observer.observe(target, {attributes: true, attributeFilter: ['disabled']});\n    }\n  }, [dispatchBlur]);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {getOwnerDocument, getOwnerWindow, isMac, isVirtualClick} from '@react-aria/utils';\nimport {useEffect, useState} from 'react';\nimport {useIsSSR} from '@react-aria/ssr';\n\nexport type Modality = 'keyboard' | 'pointer' | 'virtual';\ntype HandlerEvent = PointerEvent | MouseEvent | KeyboardEvent | FocusEvent | null;\ntype Handler = (modality: Modality, e: HandlerEvent) => void;\nexport type FocusVisibleHandler = (isFocusVisible: boolean) => void;\nexport interface FocusVisibleProps {\n  /** Whether the element is a text input. */\n  isTextInput?: boolean,\n  /** Whether the element will be auto focused. */\n  autoFocus?: boolean\n}\n\nexport interface FocusVisibleResult {\n  /** Whether keyboard focus is visible globally. */\n  isFocusVisible: boolean\n}\n\nlet currentModality: null | Modality = null;\nlet changeHandlers = new Set<Handler>();\ninterface GlobalListenerData {\n  focus: () => void\n}\nexport let hasSetupGlobalListeners = new Map<Window, GlobalListenerData>(); // We use a map here to support setting event listeners across multiple document objects.\nlet hasEventBeforeFocus = false;\nlet hasBlurredWindowRecently = false;\n\n// Only Tab or Esc keys will make focus visible on text input elements\nconst FOCUS_VISIBLE_INPUT_KEYS = {\n  Tab: true,\n  Escape: true\n};\n\nfunction triggerChangeHandlers(modality: Modality, e: HandlerEvent) {\n  for (let handler of changeHandlers) {\n    handler(modality, e);\n  }\n}\n\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */\nfunction isValidKey(e: KeyboardEvent) {\n  // Control and Shift keys trigger when navigating back to the tab with keyboard.\n  return !(e.metaKey || (!isMac() && e.altKey) || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\n\n\nfunction handleKeyboardEvent(e: KeyboardEvent) {\n  hasEventBeforeFocus = true;\n  if (isValidKey(e)) {\n    currentModality = 'keyboard';\n    triggerChangeHandlers('keyboard', e);\n  }\n}\n\nfunction handlePointerEvent(e: PointerEvent | MouseEvent) {\n  currentModality = 'pointer';\n  if (e.type === 'mousedown' || e.type === 'pointerdown') {\n    hasEventBeforeFocus = true;\n    triggerChangeHandlers('pointer', e);\n  }\n}\n\nfunction handleClickEvent(e: MouseEvent) {\n  if (isVirtualClick(e)) {\n    hasEventBeforeFocus = true;\n    currentModality = 'virtual';\n  }\n}\n\nfunction handleFocusEvent(e: FocusEvent) {\n  // Firefox fires two extra focus events when the user first clicks into an iframe:\n  // first on the window, then on the document. We ignore these events so they don't\n  // cause keyboard focus rings to appear.\n  if (e.target === window || e.target === document) {\n    return;\n  }\n\n  // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n  // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n  if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n    currentModality = 'virtual';\n    triggerChangeHandlers('virtual', e);\n  }\n\n  hasEventBeforeFocus = false;\n  hasBlurredWindowRecently = false;\n}\n\nfunction handleWindowBlur() {\n  // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n  // for example, since a subsequent focus event won't be fired.\n  hasEventBeforeFocus = false;\n  hasBlurredWindowRecently = true;\n}\n\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */\nfunction setupGlobalFocusEvents(element?: HTMLElement | null) {\n  if (typeof window === 'undefined' || hasSetupGlobalListeners.get(getOwnerWindow(element))) {\n    return;\n  }\n\n  const windowObject = getOwnerWindow(element);\n  const documentObject = getOwnerDocument(element);\n\n  // Programmatic focus() calls shouldn't affect the current input modality.\n  // However, we need to detect other cases when a focus event occurs without\n  // a preceding user event (e.g. screen reader focus). Overriding the focus\n  // method on HTMLElement.prototype is a bit hacky, but works.\n  let focus = windowObject.HTMLElement.prototype.focus;\n  windowObject.HTMLElement.prototype.focus = function () {\n    hasEventBeforeFocus = true;\n    focus.apply(this, arguments as unknown as [options?: FocusOptions | undefined]);\n  };\n\n  documentObject.addEventListener('keydown', handleKeyboardEvent, true);\n  documentObject.addEventListener('keyup', handleKeyboardEvent, true);\n  documentObject.addEventListener('click', handleClickEvent, true);\n\n  // Register focus events on the window so they are sure to happen\n  // before React's event listeners (registered on the document).\n  windowObject.addEventListener('focus', handleFocusEvent, true);\n  windowObject.addEventListener('blur', handleWindowBlur, false);\n\n  if (typeof PointerEvent !== 'undefined') {\n    documentObject.addEventListener('pointerdown', handlePointerEvent, true);\n    documentObject.addEventListener('pointermove', handlePointerEvent, true);\n    documentObject.addEventListener('pointerup', handlePointerEvent, true);\n  } else {\n    documentObject.addEventListener('mousedown', handlePointerEvent, true);\n    documentObject.addEventListener('mousemove', handlePointerEvent, true);\n    documentObject.addEventListener('mouseup', handlePointerEvent, true);\n  }\n\n  // Add unmount handler\n  windowObject.addEventListener('beforeunload', () => {\n    tearDownWindowFocusTracking(element);\n  }, {once: true});\n\n  hasSetupGlobalListeners.set(windowObject, {focus});\n}\n\nconst tearDownWindowFocusTracking = (element, loadListener?: () => void) => {\n  const windowObject = getOwnerWindow(element);\n  const documentObject = getOwnerDocument(element);\n  if (loadListener) {\n    documentObject.removeEventListener('DOMContentLoaded', loadListener);\n  }\n  if (!hasSetupGlobalListeners.has(windowObject)) {\n    return;\n  }\n  windowObject.HTMLElement.prototype.focus = hasSetupGlobalListeners.get(windowObject)!.focus;\n\n  documentObject.removeEventListener('keydown', handleKeyboardEvent, true);\n  documentObject.removeEventListener('keyup', handleKeyboardEvent, true);\n  documentObject.removeEventListener('click', handleClickEvent, true);\n  windowObject.removeEventListener('focus', handleFocusEvent, true);\n  windowObject.removeEventListener('blur', handleWindowBlur, false);\n\n  if (typeof PointerEvent !== 'undefined') {\n    documentObject.removeEventListener('pointerdown', handlePointerEvent, true);\n    documentObject.removeEventListener('pointermove', handlePointerEvent, true);\n    documentObject.removeEventListener('pointerup', handlePointerEvent, true);\n  } else {\n    documentObject.removeEventListener('mousedown', handlePointerEvent, true);\n    documentObject.removeEventListener('mousemove', handlePointerEvent, true);\n    documentObject.removeEventListener('mouseup', handlePointerEvent, true);\n  }\n\n  hasSetupGlobalListeners.delete(windowObject);\n};\n\n/**\n * EXPERIMENTAL\n * Adds a window (i.e. iframe) to the list of windows that are being tracked for focus visible.\n *\n * Sometimes apps render portions of their tree into an iframe. In this case, we cannot accurately track if the focus\n * is visible because we cannot see interactions inside the iframe. If you have this in your application's architecture,\n * then this function will attach event listeners inside the iframe. You should call `addWindowFocusTracking` with an\n * element from inside the window you wish to add. We'll retrieve the relevant elements based on that.\n * Note, you do not need to call this for the default window, as we call it for you.\n *\n * When you are ready to stop listening, but you do not wish to unmount the iframe, you may call the cleanup function\n * returned by `addWindowFocusTracking`. Otherwise, when you unmount the iframe, all listeners and state will be cleaned\n * up automatically for you.\n *\n * @param element @default document.body - The element provided will be used to get the window to add.\n * @returns A function to remove the event listeners and cleanup the state.\n */\nexport function addWindowFocusTracking(element?: HTMLElement | null): () => void {\n  const documentObject = getOwnerDocument(element);\n  let loadListener;\n  if (documentObject.readyState !== 'loading') {\n    setupGlobalFocusEvents(element);\n  } else {\n    loadListener = () => {\n      setupGlobalFocusEvents(element);\n    };\n    documentObject.addEventListener('DOMContentLoaded', loadListener);\n  }\n\n  return () => tearDownWindowFocusTracking(element, loadListener);\n}\n\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') {\n  addWindowFocusTracking();\n}\n\n/**\n * If true, keyboard focus is visible.\n */\nexport function isFocusVisible(): boolean {\n  return currentModality !== 'pointer';\n}\n\nexport function getInteractionModality(): Modality | null {\n  return currentModality;\n}\n\nexport function setInteractionModality(modality: Modality) {\n  currentModality = modality;\n  triggerChangeHandlers(modality, null);\n}\n\n/**\n * Keeps state of the current modality.\n */\nexport function useInteractionModality(): Modality | null {\n  setupGlobalFocusEvents();\n\n  let [modality, setModality] = useState(currentModality);\n  useEffect(() => {\n    let handler = () => {\n      setModality(currentModality);\n    };\n\n    changeHandlers.add(handler);\n    return () => {\n      changeHandlers.delete(handler);\n    };\n  }, []);\n\n  return useIsSSR() ? null : modality;\n}\n\nconst nonTextInputTypes = new Set([\n  'checkbox',\n  'radio',\n  'range',\n  'color',\n  'file',\n  'image',\n  'button',\n  'submit',\n  'reset'\n]);\n\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */\nfunction isKeyboardFocusEvent(isTextInput: boolean, modality: Modality, e: HandlerEvent) {\n  const IHTMLInputElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLInputElement : HTMLInputElement;\n  const IHTMLTextAreaElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLTextAreaElement : HTMLTextAreaElement;\n  const IHTMLElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLElement : HTMLElement;\n  const IKeyboardEvent = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).KeyboardEvent : KeyboardEvent;\n\n  isTextInput = isTextInput ||\n    (e?.target instanceof IHTMLInputElement && !nonTextInputTypes.has(e?.target?.type)) ||\n    e?.target instanceof IHTMLTextAreaElement ||\n    (e?.target instanceof IHTMLElement && e?.target.isContentEditable);\n  return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\n\n/**\n * Manages focus visible state for the page, and subscribes individual components for updates.\n */\nexport function useFocusVisible(props: FocusVisibleProps = {}): FocusVisibleResult {\n  let {isTextInput, autoFocus} = props;\n  let [isFocusVisibleState, setFocusVisible] = useState(autoFocus || isFocusVisible());\n  useFocusVisibleListener((isFocusVisible) => {\n    setFocusVisible(isFocusVisible);\n  }, [isTextInput], {isTextInput});\n\n  return {isFocusVisible: isFocusVisibleState};\n}\n\n/**\n * Listens for trigger change and reports if focus is visible (i.e., modality is not pointer).\n */\nexport function useFocusVisibleListener(fn: FocusVisibleHandler, deps: ReadonlyArray<any>, opts?: {isTextInput?: boolean}): void {\n  setupGlobalFocusEvents();\n\n  useEffect(() => {\n    let handler = (modality: Modality, e: HandlerEvent) => {\n      if (!isKeyboardFocusEvent(!!(opts?.isTextInput), modality, e)) {\n        return;\n      }\n      fn(isFocusVisible());\n    };\n    changeHandlers.add(handler);\n    return () => {\n      changeHandlers.delete(handler);\n    };\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, deps);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {DOMAttributes} from '@react-types/shared';\nimport {FocusEvent, useCallback, useRef} from 'react';\nimport {useSyntheticBlurEvent} from './utils';\n\nexport interface FocusWithinProps {\n  /** Whether the focus within events should be disabled. */\n  isDisabled?: boolean,\n  /** Handler that is called when the target element or a descendant receives focus. */\n  onFocusWithin?: (e: FocusEvent) => void,\n  /** Handler that is called when the target element and all descendants lose focus. */\n  onBlurWithin?: (e: FocusEvent) => void,\n  /** Handler that is called when the the focus within state changes. */\n  onFocusWithinChange?: (isFocusWithin: boolean) => void\n}\n\nexport interface FocusWithinResult {\n  /** Props to spread onto the target element. */\n  focusWithinProps: DOMAttributes\n}\n\n/**\n * Handles focus events for the target and its descendants.\n */\nexport function useFocusWithin(props: FocusWithinProps): FocusWithinResult {\n  let {\n    isDisabled,\n    onBlurWithin,\n    onFocusWithin,\n    onFocusWithinChange\n  } = props;\n  let state = useRef({\n    isFocusWithin: false\n  });\n\n  let onBlur = useCallback((e: FocusEvent) => {\n    // We don't want to trigger onBlurWithin and then immediately onFocusWithin again\n    // when moving focus inside the element. Only trigger if the currentTarget doesn't\n    // include the relatedTarget (where focus is moving).\n    if (state.current.isFocusWithin && !(e.currentTarget as Element).contains(e.relatedTarget as Element)) {\n      state.current.isFocusWithin = false;\n\n      if (onBlurWithin) {\n        onBlurWithin(e);\n      }\n\n      if (onFocusWithinChange) {\n        onFocusWithinChange(false);\n      }\n    }\n  }, [onBlurWithin, onFocusWithinChange, state]);\n\n  let onSyntheticFocus = useSyntheticBlurEvent(onBlur);\n  let onFocus = useCallback((e: FocusEvent) => {\n    // Double check that document.activeElement actually matches e.target in case a previously chained\n    // focus handler already moved focus somewhere else.\n    if (!state.current.isFocusWithin && document.activeElement === e.target) {\n      if (onFocusWithin) {\n        onFocusWithin(e);\n      }\n\n      if (onFocusWithinChange) {\n        onFocusWithinChange(true);\n      }\n\n      state.current.isFocusWithin = true;\n      onSyntheticFocus(e);\n    }\n  }, [onFocusWithin, onFocusWithinChange, onSyntheticFocus]);\n\n  if (isDisabled) {\n    return {\n      focusWithinProps: {\n        // These should not have been null, that would conflict in mergeProps\n        onFocus: undefined,\n        onBlur: undefined\n      }\n    };\n  }\n\n  return {\n    focusWithinProps: {\n      onFocus,\n      onBlur\n    }\n  };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {DOMAttributes, HoverEvents} from '@react-types/shared';\nimport {useEffect, useMemo, useRef, useState} from 'react';\n\nexport interface HoverProps extends HoverEvents {\n  /** Whether the hover events should be disabled. */\n  isDisabled?: boolean\n}\n\nexport interface HoverResult {\n  /** Props to spread on the target element. */\n  hoverProps: DOMAttributes,\n  isHovered: boolean\n}\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet globalIgnoreEmulatedMouseEvents = false;\nlet hoverCount = 0;\n\nfunction setGlobalIgnoreEmulatedMouseEvents() {\n  globalIgnoreEmulatedMouseEvents = true;\n\n  // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter\n  // with pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other\n  // devices that don't have this quirk, we don't want to ignore a mouse hover sometime in\n  // the distant future because a user previously touched the element.\n  setTimeout(() => {\n    globalIgnoreEmulatedMouseEvents = false;\n  }, 50);\n}\n\nfunction handleGlobalPointerEvent(e) {\n  if (e.pointerType === 'touch') {\n    setGlobalIgnoreEmulatedMouseEvents();\n  }\n}\n\nfunction setupGlobalTouchEvents() {\n  if (typeof document === 'undefined') {\n    return;\n  }\n\n  if (typeof PointerEvent !== 'undefined') {\n    document.addEventListener('pointerup', handleGlobalPointerEvent);\n  } else {\n    document.addEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n  }\n\n  hoverCount++;\n  return () => {\n    hoverCount--;\n    if (hoverCount > 0) {\n      return;\n    }\n\n    if (typeof PointerEvent !== 'undefined') {\n      document.removeEventListener('pointerup', handleGlobalPointerEvent);\n    } else {\n      document.removeEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n    }\n  };\n}\n\n/**\n * Handles pointer hover interactions for an element. Normalizes behavior\n * across browsers and platforms, and ignores emulated mouse events on touch devices.\n */\nexport function useHover(props: HoverProps): HoverResult {\n  let {\n    onHoverStart,\n    onHoverChange,\n    onHoverEnd,\n    isDisabled\n  } = props;\n\n  let [isHovered, setHovered] = useState(false);\n  let state = useRef({\n    isHovered: false,\n    ignoreEmulatedMouseEvents: false,\n    pointerType: '',\n    target: null\n  }).current;\n\n  useEffect(setupGlobalTouchEvents, []);\n\n  let {hoverProps, triggerHoverEnd} = useMemo(() => {\n    let triggerHoverStart = (event, pointerType) => {\n      state.pointerType = pointerType;\n      if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) {\n        return;\n      }\n\n      state.isHovered = true;\n      let target = event.currentTarget;\n      state.target = target;\n\n      if (onHoverStart) {\n        onHoverStart({\n          type: 'hoverstart',\n          target,\n          pointerType\n        });\n      }\n\n      if (onHoverChange) {\n        onHoverChange(true);\n      }\n\n      setHovered(true);\n    };\n\n    let triggerHoverEnd = (event, pointerType) => {\n      state.pointerType = '';\n      state.target = null;\n\n      if (pointerType === 'touch' || !state.isHovered) {\n        return;\n      }\n\n      state.isHovered = false;\n      let target = event.currentTarget;\n      if (onHoverEnd) {\n        onHoverEnd({\n          type: 'hoverend',\n          target,\n          pointerType\n        });\n      }\n\n      if (onHoverChange) {\n        onHoverChange(false);\n      }\n\n      setHovered(false);\n    };\n\n    let hoverProps: DOMAttributes = {};\n\n    if (typeof PointerEvent !== 'undefined') {\n      hoverProps.onPointerEnter = (e) => {\n        if (globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') {\n          return;\n        }\n\n        triggerHoverStart(e, e.pointerType);\n      };\n\n      hoverProps.onPointerLeave = (e) => {\n        if (!isDisabled && e.currentTarget.contains(e.target as Element)) {\n          triggerHoverEnd(e, e.pointerType);\n        }\n      };\n    } else {\n      hoverProps.onTouchStart = () => {\n        state.ignoreEmulatedMouseEvents = true;\n      };\n\n      hoverProps.onMouseEnter = (e) => {\n        if (!state.ignoreEmulatedMouseEvents && !globalIgnoreEmulatedMouseEvents) {\n          triggerHoverStart(e, 'mouse');\n        }\n\n        state.ignoreEmulatedMouseEvents = false;\n      };\n\n      hoverProps.onMouseLeave = (e) => {\n        if (!isDisabled && e.currentTarget.contains(e.target as Element)) {\n          triggerHoverEnd(e, 'mouse');\n        }\n      };\n    }\n    return {hoverProps, triggerHoverEnd};\n  }, [onHoverStart, onHoverChange, onHoverEnd, isDisabled, state]);\n\n  useEffect(() => {\n    // Call the triggerHoverEnd as soon as isDisabled changes to true\n    // Safe to call triggerHoverEnd, it will early return if we aren't currently hovering\n    if (isDisabled) {\n      triggerHoverEnd({currentTarget: state.target}, state.pointerType);\n    }\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isDisabled]);\n\n  return {\n    hoverProps,\n    isHovered\n  };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {getOwnerDocument, useEffectEvent} from '@react-aria/utils';\nimport {RefObject} from '@react-types/shared';\nimport {useEffect, useRef} from 'react';\n\nexport interface InteractOutsideProps {\n  ref: RefObject<Element | null>,\n  onInteractOutside?: (e: PointerEvent) => void,\n  onInteractOutsideStart?: (e: PointerEvent) => void,\n  /** Whether the interact outside events should be disabled. */\n  isDisabled?: boolean\n}\n\n/**\n * Example, used in components like Dialogs and Popovers so they can close\n * when a user clicks outside them.\n */\nexport function useInteractOutside(props: InteractOutsideProps) {\n  let {ref, onInteractOutside, isDisabled, onInteractOutsideStart} = props;\n  let stateRef = useRef({\n    isPointerDown: false,\n    ignoreEmulatedMouseEvents: false\n  });\n\n  let onPointerDown = useEffectEvent((e) => {\n    if (onInteractOutside && isValidEvent(e, ref)) {\n      if (onInteractOutsideStart) {\n        onInteractOutsideStart(e);\n      }\n      stateRef.current.isPointerDown = true;\n    }\n  });\n\n  let triggerInteractOutside = useEffectEvent((e: PointerEvent) => {\n    if (onInteractOutside) {\n      onInteractOutside(e);\n    }\n  });\n\n  useEffect(() => {\n    let state = stateRef.current;\n    if (isDisabled) {\n      return;\n    }\n\n    const element = ref.current;\n    const documentObject = getOwnerDocument(element);\n\n    // Use pointer events if available. Otherwise, fall back to mouse and touch events.\n    if (typeof PointerEvent !== 'undefined') {\n      let onPointerUp = (e) => {\n        if (state.isPointerDown && isValidEvent(e, ref)) {\n          triggerInteractOutside(e);\n        }\n        state.isPointerDown = false;\n      };\n\n      // changing these to capture phase fixed combobox\n      documentObject.addEventListener('pointerdown', onPointerDown, true);\n      documentObject.addEventListener('pointerup', onPointerUp, true);\n\n      return () => {\n        documentObject.removeEventListener('pointerdown', onPointerDown, true);\n        documentObject.removeEventListener('pointerup', onPointerUp, true);\n      };\n    } else {\n      let onMouseUp = (e) => {\n        if (state.ignoreEmulatedMouseEvents) {\n          state.ignoreEmulatedMouseEvents = false;\n        } else if (state.isPointerDown && isValidEvent(e, ref)) {\n          triggerInteractOutside(e);\n        }\n        state.isPointerDown = false;\n      };\n\n      let onTouchEnd = (e) => {\n        state.ignoreEmulatedMouseEvents = true;\n        if (state.isPointerDown && isValidEvent(e, ref)) {\n          triggerInteractOutside(e);\n        }\n        state.isPointerDown = false;\n      };\n\n      documentObject.addEventListener('mousedown', onPointerDown, true);\n      documentObject.addEventListener('mouseup', onMouseUp, true);\n      documentObject.addEventListener('touchstart', onPointerDown, true);\n      documentObject.addEventListener('touchend', onTouchEnd, true);\n\n      return () => {\n        documentObject.removeEventListener('mousedown', onPointerDown, true);\n        documentObject.removeEventListener('mouseup', onMouseUp, true);\n        documentObject.removeEventListener('touchstart', onPointerDown, true);\n        documentObject.removeEventListener('touchend', onTouchEnd, true);\n      };\n    }\n  }, [ref, isDisabled, onPointerDown, triggerInteractOutside]);\n}\n\nfunction isValidEvent(event, ref) {\n  if (event.button > 0) {\n    return false;\n  }\n\n  if (event.target) {\n    // if the event target is no longer in the document, ignore\n    const ownerDocument = event.target.ownerDocument;\n    if (!ownerDocument || !ownerDocument.documentElement.contains(event.target)) {\n      return false;\n    }\n\n    // If the target is within a top layer element (e.g. toasts), ignore.\n    if (event.target.closest('[data-react-aria-top-layer]')) {\n      return false;\n    }\n  }\n\n  return ref.current && !ref.current.contains(event.target);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {createEventHandler} from './createEventHandler';\nimport {DOMAttributes, KeyboardEvents} from '@react-types/shared';\n\nexport interface KeyboardProps extends KeyboardEvents {\n  /** Whether the keyboard events should be disabled. */\n  isDisabled?: boolean\n}\n\nexport interface KeyboardResult {\n  /** Props to spread onto the target element. */\n  keyboardProps: DOMAttributes\n}\n\n/**\n * Handles keyboard interactions for a focusable element.\n */\nexport function useKeyboard(props: KeyboardProps): KeyboardResult {\n  return {\n    keyboardProps: props.isDisabled ? {} : {\n      onKeyDown: createEventHandler(props.onKeyDown),\n      onKeyUp: createEventHandler(props.onKeyUp)\n    }\n  };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {BaseEvent} from '@react-types/shared';\nimport {SyntheticEvent} from 'react';\n\n/**\n * This function wraps a React event handler to make stopPropagation the default, and support continuePropagation instead.\n */\nexport function createEventHandler<T extends SyntheticEvent>(handler?: (e: BaseEvent<T>) => void): ((e: T) => void) | undefined {\n  if (!handler) {\n    return undefined;\n  }\n\n  let shouldStopPropagation = true;\n  return (e: T) => {\n    let event: BaseEvent<T> = {\n      ...e,\n      preventDefault() {\n        e.preventDefault();\n      },\n      isDefaultPrevented() {\n        return e.isDefaultPrevented();\n      },\n      stopPropagation() {\n        console.error('stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.');\n      },\n      continuePropagation() {\n        shouldStopPropagation = false;\n      }\n    };\n\n    handler(event);\n\n    if (shouldStopPropagation) {\n      e.stopPropagation();\n    }\n  };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {disableTextSelection, restoreTextSelection}  from './textSelection';\nimport {DOMAttributes, MoveEvents, PointerType} from '@react-types/shared';\nimport React, {useMemo, useRef} from 'react';\nimport {useEffectEvent, useGlobalListeners} from '@react-aria/utils';\n\nexport interface MoveResult {\n  /** Props to spread on the target element. */\n  moveProps: DOMAttributes\n}\n\ninterface EventBase {\n  shiftKey: boolean,\n  ctrlKey: boolean,\n  metaKey: boolean,\n  altKey: boolean\n}\n\n/**\n * Handles move interactions across mouse, touch, and keyboard, including dragging with\n * the mouse or touch, and using the arrow keys. Normalizes behavior across browsers and\n * platforms, and ignores emulated mouse events on touch devices.\n */\nexport function useMove(props: MoveEvents): MoveResult {\n  let {onMoveStart, onMove, onMoveEnd} = props;\n\n  let state = useRef<{\n    didMove: boolean,\n    lastPosition: {pageX: number, pageY: number} | null,\n    id: number | null\n  }>({didMove: false, lastPosition: null, id: null});\n\n  let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n  let move = useEffectEvent((originalEvent: EventBase, pointerType: PointerType, deltaX: number, deltaY: number) => {\n    if (deltaX === 0 && deltaY === 0) {\n      return;\n    }\n\n    if (!state.current.didMove) {\n      state.current.didMove = true;\n      onMoveStart?.({\n        type: 'movestart',\n        pointerType,\n        shiftKey: originalEvent.shiftKey,\n        metaKey: originalEvent.metaKey,\n        ctrlKey: originalEvent.ctrlKey,\n        altKey: originalEvent.altKey\n      });\n    }\n    onMove?.({\n      type: 'move',\n      pointerType,\n      deltaX: deltaX,\n      deltaY: deltaY,\n      shiftKey: originalEvent.shiftKey,\n      metaKey: originalEvent.metaKey,\n      ctrlKey: originalEvent.ctrlKey,\n      altKey: originalEvent.altKey\n    });\n  });\n\n  let end = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n    restoreTextSelection();\n    if (state.current.didMove) {\n      onMoveEnd?.({\n        type: 'moveend',\n        pointerType,\n        shiftKey: originalEvent.shiftKey,\n        metaKey: originalEvent.metaKey,\n        ctrlKey: originalEvent.ctrlKey,\n        altKey: originalEvent.altKey\n      });\n    }\n  });\n\n  let moveProps = useMemo(() => {\n    let moveProps: DOMAttributes = {};\n\n    let start = () => {\n      disableTextSelection();\n      state.current.didMove = false;\n    };\n\n    if (typeof PointerEvent === 'undefined') {\n      let onMouseMove = (e: MouseEvent) => {\n        if (e.button === 0) {\n          move(e, 'mouse', e.pageX - (state.current.lastPosition?.pageX ?? 0), e.pageY - (state.current.lastPosition?.pageY ?? 0));\n          state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n        }\n      };\n      let onMouseUp = (e: MouseEvent) => {\n        if (e.button === 0) {\n          end(e, 'mouse');\n          removeGlobalListener(window, 'mousemove', onMouseMove, false);\n          removeGlobalListener(window, 'mouseup', onMouseUp, false);\n        }\n      };\n      moveProps.onMouseDown = (e: React.MouseEvent) => {\n        if (e.button === 0) {\n          start();\n          e.stopPropagation();\n          e.preventDefault();\n          state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n          addGlobalListener(window, 'mousemove', onMouseMove, false);\n          addGlobalListener(window, 'mouseup', onMouseUp, false);\n        }\n      };\n\n      let onTouchMove = (e: TouchEvent) => {\n        let touch = [...e.changedTouches].findIndex(({identifier}) => identifier === state.current.id);\n        if (touch >= 0) {\n          let {pageX, pageY} = e.changedTouches[touch];\n          move(e, 'touch', pageX - (state.current.lastPosition?.pageX ?? 0), pageY - (state.current.lastPosition?.pageY ?? 0));\n          state.current.lastPosition = {pageX, pageY};\n        }\n      };\n      let onTouchEnd = (e: TouchEvent) => {\n        let touch = [...e.changedTouches].findIndex(({identifier}) => identifier === state.current.id);\n        if (touch >= 0) {\n          end(e, 'touch');\n          state.current.id = null;\n          removeGlobalListener(window, 'touchmove', onTouchMove);\n          removeGlobalListener(window, 'touchend', onTouchEnd);\n          removeGlobalListener(window, 'touchcancel', onTouchEnd);\n        }\n      };\n      moveProps.onTouchStart = (e: React.TouchEvent) => {\n        if (e.changedTouches.length === 0 || state.current.id != null) {\n          return;\n        }\n\n        let {pageX, pageY, identifier} = e.changedTouches[0];\n        start();\n        e.stopPropagation();\n        e.preventDefault();\n        state.current.lastPosition = {pageX, pageY};\n        state.current.id = identifier;\n        addGlobalListener(window, 'touchmove', onTouchMove, false);\n        addGlobalListener(window, 'touchend', onTouchEnd, false);\n        addGlobalListener(window, 'touchcancel', onTouchEnd, false);\n      };\n    } else {\n      let onPointerMove = (e: PointerEvent) => {\n        if (e.pointerId === state.current.id) {\n          let pointerType = (e.pointerType || 'mouse') as PointerType;\n\n          // Problems with PointerEvent#movementX/movementY:\n          // 1. it is always 0 on macOS Safari.\n          // 2. On Chrome Android, it's scaled by devicePixelRatio, but not on Chrome macOS\n          move(e, pointerType, e.pageX - (state.current.lastPosition?.pageX ?? 0), e.pageY - (state.current.lastPosition?.pageY ?? 0));\n          state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n        }\n      };\n\n      let onPointerUp = (e: PointerEvent) => {\n        if (e.pointerId === state.current.id) {\n          let pointerType = (e.pointerType || 'mouse') as PointerType;\n          end(e, pointerType);\n          state.current.id = null;\n          removeGlobalListener(window, 'pointermove', onPointerMove, false);\n          removeGlobalListener(window, 'pointerup', onPointerUp, false);\n          removeGlobalListener(window, 'pointercancel', onPointerUp, false);\n        }\n      };\n\n      moveProps.onPointerDown = (e: React.PointerEvent) => {\n        if (e.button === 0 && state.current.id == null) {\n          start();\n          e.stopPropagation();\n          e.preventDefault();\n          state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n          state.current.id = e.pointerId;\n          addGlobalListener(window, 'pointermove', onPointerMove, false);\n          addGlobalListener(window, 'pointerup', onPointerUp, false);\n          addGlobalListener(window, 'pointercancel', onPointerUp, false);\n        }\n      };\n    }\n\n    let triggerKeyboardMove = (e: EventBase, deltaX: number, deltaY: number) => {\n      start();\n      move(e, 'keyboard', deltaX, deltaY);\n      end(e, 'keyboard');\n    };\n\n    moveProps.onKeyDown = (e) => {\n      switch (e.key) {\n        case 'Left':\n        case 'ArrowLeft':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(e, -1, 0);\n          break;\n        case 'Right':\n        case 'ArrowRight':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(e, 1, 0);\n          break;\n        case 'Up':\n        case 'ArrowUp':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(e, 0, -1);\n          break;\n        case 'Down':\n        case 'ArrowDown':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(e, 0, 1);\n          break;\n      }\n    };\n\n    return moveProps;\n  }, [state, addGlobalListener, removeGlobalListener, move, end]);\n\n  return {moveProps};\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {getOwnerDocument, isIOS, runAfterTransition} from '@react-aria/utils';\n\n// Safari on iOS starts selecting text on long press. The only way to avoid this, it seems,\n// is to add user-select: none to the entire page. Adding it to the pressable element prevents\n// that element from being selected, but nearby elements may still receive selection. We add\n// user-select: none on touch start, and remove it again on touch end to prevent this.\n// This must be implemented using global state to avoid race conditions between multiple elements.\n\n// There are three possible states due to the delay before removing user-select: none after\n// pointer up. The 'default' state always transitions to the 'disabled' state, which transitions\n// to 'restoring'. The 'restoring' state can either transition back to 'disabled' or 'default'.\n\n// For non-iOS devices, we apply user-select: none to the pressed element instead to avoid possible\n// performance issues that arise from applying and removing user-select: none to the entire page\n// (see https://github.com/adobe/react-spectrum/issues/1609).\ntype State = 'default' | 'disabled' | 'restoring';\n\n// Note that state only matters here for iOS. Non-iOS gets user-select: none applied to the target element\n// rather than at the document level so we just need to apply/remove user-select: none for each pressed element individually\nlet state: State = 'default';\nlet savedUserSelect = '';\nlet modifiedElementMap = new WeakMap<Element, string>();\n\nexport function disableTextSelection(target?: Element) {\n  if (isIOS()) {\n    if (state === 'default') {\n      // eslint-disable-next-line no-restricted-globals\n      const documentObject = getOwnerDocument(target);\n      savedUserSelect = documentObject.documentElement.style.webkitUserSelect;\n      documentObject.documentElement.style.webkitUserSelect = 'none';\n    }\n\n    state = 'disabled';\n  } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n    // If not iOS, store the target's original user-select and change to user-select: none\n    // Ignore state since it doesn't apply for non iOS\n    modifiedElementMap.set(target, target.style.userSelect);\n    target.style.userSelect = 'none';\n  }\n}\n\nexport function restoreTextSelection(target?: Element) {\n  if (isIOS()) {\n    // If the state is already default, there's nothing to do.\n    // If it is restoring, then there's no need to queue a second restore.\n    if (state !== 'disabled') {\n      return;\n    }\n\n    state = 'restoring';\n\n    // There appears to be a delay on iOS where selection still might occur\n    // after pointer up, so wait a bit before removing user-select.\n    setTimeout(() => {\n      // Wait for any CSS transitions to complete so we don't recompute style\n      // for the whole page in the middle of the animation and cause jank.\n      runAfterTransition(() => {\n        // Avoid race conditions\n        if (state === 'restoring') {\n          // eslint-disable-next-line no-restricted-globals\n          const documentObject = getOwnerDocument(target);\n          if (documentObject.documentElement.style.webkitUserSelect === 'none') {\n            documentObject.documentElement.style.webkitUserSelect = savedUserSelect || '';\n          }\n\n          savedUserSelect = '';\n          state = 'default';\n        }\n      });\n    }, 300);\n  } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n    // If not iOS, restore the target's original user-select if any\n    // Ignore state since it doesn't apply for non iOS\n    if (target && modifiedElementMap.has(target)) {\n      let targetOldUserSelect = modifiedElementMap.get(target) as string;\n\n      if (target.style.userSelect === 'none') {\n        target.style.userSelect = targetOldUserSelect;\n      }\n\n      if (target.getAttribute('style') === '') {\n        target.removeAttribute('style');\n      }\n      modifiedElementMap.delete(target);\n    }\n  }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {chain, focusWithoutScrolling, getOwnerDocument, getOwnerWindow, isMac, isVirtualClick, isVirtualPointerEvent, mergeProps, openLink, useEffectEvent, useGlobalListeners, useSyncRef} from '@react-aria/utils';\nimport {disableTextSelection, restoreTextSelection} from './textSelection';\nimport {DOMAttributes, FocusableElement, PressEvent as IPressEvent, PointerType, PressEvents, RefObject} from '@react-types/shared';\nimport {PressResponderContext} from './context';\nimport {TouchEvent as RTouchEvent, useContext, useEffect, useMemo, useRef, useState} from 'react';\n\nexport interface PressProps extends PressEvents {\n  /** Whether the target is in a controlled press state (e.g. an overlay it triggers is open). */\n  isPressed?: boolean,\n  /** Whether the press events should be disabled. */\n  isDisabled?: boolean,\n  /** Whether the target should not receive focus on press. */\n  preventFocusOnPress?: boolean,\n  /**\n   * Whether press events should be canceled when the pointer leaves the target while pressed.\n   * By default, this is `false`, which means if the pointer returns back over the target while\n   * still pressed, onPressStart will be fired again. If set to `true`, the press is canceled\n   * when the pointer leaves the target and onPressStart will not be fired if the pointer returns.\n   */\n  shouldCancelOnPointerExit?: boolean,\n  /** Whether text selection should be enabled on the pressable element. */\n  allowTextSelectionOnPress?: boolean\n}\n\nexport interface PressHookProps extends PressProps {\n  /** A ref to the target element. */\n  ref?: RefObject<Element | null>\n}\n\ninterface PressState {\n  isPressed: boolean,\n  ignoreEmulatedMouseEvents: boolean,\n  ignoreClickAfterPress: boolean,\n  didFirePressStart: boolean,\n  isTriggeringEvent: boolean,\n  activePointerId: any,\n  target: FocusableElement | null,\n  isOverTarget: boolean,\n  pointerType: PointerType | null,\n  userSelect?: string,\n  metaKeyEvents?: Map<string, KeyboardEvent>\n}\n\ninterface EventBase {\n  currentTarget: EventTarget | null,\n  shiftKey: boolean,\n  ctrlKey: boolean,\n  metaKey: boolean,\n  altKey: boolean,\n  clientX?: number,\n  clientY?: number,\n  targetTouches?: Array<{clientX?: number, clientY?: number}>\n}\n\nexport interface PressResult {\n  /** Whether the target is currently pressed. */\n  isPressed: boolean,\n  /** Props to spread on the target element. */\n  pressProps: DOMAttributes\n}\n\nfunction usePressResponderContext(props: PressHookProps): PressHookProps {\n  // Consume context from <PressResponder> and merge with props.\n  let context = useContext(PressResponderContext);\n  if (context) {\n    let {register, ...contextProps} = context;\n    props = mergeProps(contextProps, props) as PressHookProps;\n    register();\n  }\n  useSyncRef(context, props.ref);\n\n  return props;\n}\n\nclass PressEvent implements IPressEvent {\n  type: IPressEvent['type'];\n  pointerType: PointerType;\n  target: Element;\n  shiftKey: boolean;\n  ctrlKey: boolean;\n  metaKey: boolean;\n  altKey: boolean;\n  x: number;\n  y: number;\n  #shouldStopPropagation = true;\n\n  constructor(type: IPressEvent['type'], pointerType: PointerType, originalEvent: EventBase, state?: PressState) {\n    let currentTarget = state?.target ?? originalEvent.currentTarget;\n    const rect: DOMRect | undefined = (currentTarget as Element)?.getBoundingClientRect();\n    let x, y = 0;\n    let clientX, clientY: number | null = null;\n    if (originalEvent.clientX != null && originalEvent.clientY != null) {\n      clientX = originalEvent.clientX;\n      clientY = originalEvent.clientY;\n    }\n    if (rect) {\n      if (clientX != null && clientY != null) {\n        x = clientX - rect.left;\n        y = clientY - rect.top;\n      } else {\n        x = rect.width / 2;\n        y = rect.height / 2;\n      }\n    }\n    this.type = type;\n    this.pointerType = pointerType;\n    this.target = originalEvent.currentTarget as Element;\n    this.shiftKey = originalEvent.shiftKey;\n    this.metaKey = originalEvent.metaKey;\n    this.ctrlKey = originalEvent.ctrlKey;\n    this.altKey = originalEvent.altKey;\n    this.x = x;\n    this.y = y;\n  }\n\n  continuePropagation() {\n    this.#shouldStopPropagation = false;\n  }\n\n  get shouldStopPropagation() {\n    return this.#shouldStopPropagation;\n  }\n}\n\nconst LINK_CLICKED = Symbol('linkClicked');\n\n/**\n * Handles press interactions across mouse, touch, keyboard, and screen readers.\n * It normalizes behavior across browsers and platforms, and handles many nuances\n * of dealing with pointer and keyboard events.\n */\nexport function usePress(props: PressHookProps): PressResult {\n  let {\n    onPress,\n    onPressChange,\n    onPressStart,\n    onPressEnd,\n    onPressUp,\n    isDisabled,\n    isPressed: isPressedProp,\n    preventFocusOnPress,\n    shouldCancelOnPointerExit,\n    allowTextSelectionOnPress,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    ref: _, // Removing `ref` from `domProps` because TypeScript is dumb\n    ...domProps\n  } = usePressResponderContext(props);\n\n  let [isPressed, setPressed] = useState(false);\n  let ref = useRef<PressState>({\n    isPressed: false,\n    ignoreEmulatedMouseEvents: false,\n    ignoreClickAfterPress: false,\n    didFirePressStart: false,\n    isTriggeringEvent: false,\n    activePointerId: null,\n    target: null,\n    isOverTarget: false,\n    pointerType: null\n  });\n\n  let {addGlobalListener, removeAllGlobalListeners} = useGlobalListeners();\n\n  let triggerPressStart = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n    let state = ref.current;\n    if (isDisabled || state.didFirePressStart) {\n      return false;\n    }\n\n    let shouldStopPropagation = true;\n    state.isTriggeringEvent = true;\n    if (onPressStart) {\n      let event = new PressEvent('pressstart', pointerType, originalEvent);\n      onPressStart(event);\n      shouldStopPropagation = event.shouldStopPropagation;\n    }\n\n    if (onPressChange) {\n      onPressChange(true);\n    }\n\n    state.isTriggeringEvent = false;\n    state.didFirePressStart = true;\n    setPressed(true);\n    return shouldStopPropagation;\n  });\n\n  let triggerPressEnd = useEffectEvent((originalEvent: EventBase, pointerType: PointerType, wasPressed = true) => {\n    let state = ref.current;\n    if (!state.didFirePressStart) {\n      return false;\n    }\n\n    state.ignoreClickAfterPress = true;\n    state.didFirePressStart = false;\n    state.isTriggeringEvent = true;\n\n    let shouldStopPropagation = true;\n    if (onPressEnd) {\n      let event = new PressEvent('pressend', pointerType, originalEvent);\n      onPressEnd(event);\n      shouldStopPropagation = event.shouldStopPropagation;\n    }\n\n    if (onPressChange) {\n      onPressChange(false);\n    }\n\n    setPressed(false);\n\n    if (onPress && wasPressed && !isDisabled) {\n      let event = new PressEvent('press', pointerType, originalEvent);\n      onPress(event);\n      shouldStopPropagation &&= event.shouldStopPropagation;\n    }\n\n    state.isTriggeringEvent = false;\n    return shouldStopPropagation;\n  });\n\n  let triggerPressUp = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n    let state = ref.current;\n    if (isDisabled) {\n      return false;\n    }\n\n    if (onPressUp) {\n      state.isTriggeringEvent = true;\n      let event = new PressEvent('pressup', pointerType, originalEvent);\n      onPressUp(event);\n      state.isTriggeringEvent = false;\n      return event.shouldStopPropagation;\n    }\n\n    return true;\n  });\n\n  let cancel = useEffectEvent((e: EventBase) => {\n    let state = ref.current;\n    if (state.isPressed && state.target) {\n      if (state.isOverTarget && state.pointerType != null) {\n        triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n      }\n      state.isPressed = false;\n      state.isOverTarget = false;\n      state.activePointerId = null;\n      state.pointerType = null;\n      removeAllGlobalListeners();\n      if (!allowTextSelectionOnPress) {\n        restoreTextSelection(state.target);\n      }\n    }\n  });\n\n  let cancelOnPointerExit = useEffectEvent((e: EventBase) => {\n    if (shouldCancelOnPointerExit) {\n      cancel(e);\n    }\n  });\n\n  let pressProps = useMemo(() => {\n    let state = ref.current;\n    let pressProps: DOMAttributes = {\n      onKeyDown(e) {\n        if (isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && e.currentTarget.contains(e.target as Element)) {\n          if (shouldPreventDefaultKeyboard(e.target as Element, e.key)) {\n            e.preventDefault();\n          }\n\n          // If the event is repeating, it may have started on a different element\n          // after which focus moved to the current element. Ignore these events and\n          // only handle the first key down event.\n          let shouldStopPropagation = true;\n          if (!state.isPressed && !e.repeat) {\n            state.target = e.currentTarget;\n            state.isPressed = true;\n            shouldStopPropagation = triggerPressStart(e, 'keyboard');\n\n            // Focus may move before the key up event, so register the event on the document\n            // instead of the same element where the key down event occurred. Make it capturing so that it will trigger\n            // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.\n            let originalTarget = e.currentTarget;\n            let pressUp = (e) => {\n              if (isValidKeyboardEvent(e, originalTarget) && !e.repeat && originalTarget.contains(e.target as Element) && state.target) {\n                triggerPressUp(createEvent(state.target, e), 'keyboard');\n              }\n            };\n\n            addGlobalListener(getOwnerDocument(e.currentTarget), 'keyup', chain(pressUp, onKeyUp), true);\n          }\n\n          if (shouldStopPropagation) {\n            e.stopPropagation();\n          }\n\n          // Keep track of the keydown events that occur while the Meta (e.g. Command) key is held.\n          // macOS has a bug where keyup events are not fired while the Meta key is down.\n          // When the Meta key itself is released we will get an event for that, and we'll act as if\n          // all of these other keys were released as well.\n          // https://bugs.chromium.org/p/chromium/issues/detail?id=1393524\n          // https://bugs.webkit.org/show_bug.cgi?id=55291\n          // https://bugzilla.mozilla.org/show_bug.cgi?id=1299553\n          if (e.metaKey && isMac()) {\n            state.metaKeyEvents?.set(e.key, e.nativeEvent);\n          }\n        } else if (e.key === 'Meta') {\n          state.metaKeyEvents = new Map();\n        }\n      },\n      onClick(e) {\n        if (e && !e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        if (e && e.button === 0 && !state.isTriggeringEvent && !(openLink as any).isOpening) {\n          let shouldStopPropagation = true;\n          if (isDisabled) {\n            e.preventDefault();\n          }\n\n          // If triggered from a screen reader or by using element.click(),\n          // trigger as if it were a keyboard click.\n          if (!state.ignoreClickAfterPress && !state.ignoreEmulatedMouseEvents && !state.isPressed && (state.pointerType === 'virtual' || isVirtualClick(e.nativeEvent))) {\n            // Ensure the element receives focus (VoiceOver on iOS does not do this)\n            if (!isDisabled && !preventFocusOnPress) {\n              focusWithoutScrolling(e.currentTarget);\n            }\n\n            let stopPressStart = triggerPressStart(e, 'virtual');\n            let stopPressUp = triggerPressUp(e, 'virtual');\n            let stopPressEnd = triggerPressEnd(e, 'virtual');\n            shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;\n          }\n\n          state.ignoreEmulatedMouseEvents = false;\n          state.ignoreClickAfterPress = false;\n          if (shouldStopPropagation) {\n            e.stopPropagation();\n          }\n        }\n      }\n    };\n\n    let onKeyUp = (e: KeyboardEvent) => {\n      if (state.isPressed && state.target && isValidKeyboardEvent(e, state.target)) {\n        if (shouldPreventDefaultKeyboard(e.target as Element, e.key)) {\n          e.preventDefault();\n        }\n\n        let target = e.target as Element;\n        triggerPressEnd(createEvent(state.target, e), 'keyboard', state.target.contains(target));\n        removeAllGlobalListeners();\n\n        // If a link was triggered with a key other than Enter, open the URL ourselves.\n        // This means the link has a role override, and the default browser behavior\n        // only applies when using the Enter key.\n        if (e.key !== 'Enter' && isHTMLAnchorLink(state.target) && state.target.contains(target) && !e[LINK_CLICKED]) {\n          // Store a hidden property on the event so we only trigger link click once,\n          // even if there are multiple usePress instances attached to the element.\n          e[LINK_CLICKED] = true;\n          openLink(state.target, e, false);\n        }\n\n        state.isPressed = false;\n        state.metaKeyEvents?.delete(e.key);\n      } else if (e.key === 'Meta' && state.metaKeyEvents?.size) {\n        // If we recorded keydown events that occurred while the Meta key was pressed,\n        // and those haven't received keyup events already, fire keyup events ourselves.\n        // See comment above for more info about the macOS bug causing this.\n        let events = state.metaKeyEvents;\n        state.metaKeyEvents = undefined;\n        for (let event of events.values()) {\n          state.target?.dispatchEvent(new KeyboardEvent('keyup', event));\n        }\n      }\n    };\n\n    if (typeof PointerEvent !== 'undefined') {\n      pressProps.onPointerDown = (e) => {\n        // Only handle left clicks, and ignore events that bubbled through portals.\n        if (e.button !== 0 || !e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        // iOS safari fires pointer events from VoiceOver with incorrect coordinates/target.\n        // Ignore and let the onClick handler take care of it instead.\n        // https://bugs.webkit.org/show_bug.cgi?id=222627\n        // https://bugs.webkit.org/show_bug.cgi?id=223202\n        if (isVirtualPointerEvent(e.nativeEvent)) {\n          state.pointerType = 'virtual';\n          return;\n        }\n\n        // Due to browser inconsistencies, especially on mobile browsers, we prevent\n        // default on pointer down and handle focusing the pressable element ourselves.\n        if (shouldPreventDefaultDown(e.currentTarget as Element)) {\n          e.preventDefault();\n        }\n\n        state.pointerType = e.pointerType;\n\n        let shouldStopPropagation = true;\n        if (!state.isPressed) {\n          state.isPressed = true;\n          state.isOverTarget = true;\n          state.activePointerId = e.pointerId;\n          state.target = e.currentTarget;\n\n          if (!isDisabled && !preventFocusOnPress) {\n            focusWithoutScrolling(e.currentTarget);\n          }\n\n          if (!allowTextSelectionOnPress) {\n            disableTextSelection(state.target);\n          }\n\n          shouldStopPropagation = triggerPressStart(e, state.pointerType);\n\n          addGlobalListener(getOwnerDocument(e.currentTarget), 'pointermove', onPointerMove, false);\n          addGlobalListener(getOwnerDocument(e.currentTarget), 'pointerup', onPointerUp, false);\n          addGlobalListener(getOwnerDocument(e.currentTarget), 'pointercancel', onPointerCancel, false);\n        }\n\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n      };\n\n      pressProps.onMouseDown = (e) => {\n        if (!e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        if (e.button === 0) {\n          // Chrome and Firefox on touch Windows devices require mouse down events\n          // to be canceled in addition to pointer events, or an extra asynchronous\n          // focus event will be fired.\n          if (shouldPreventDefaultDown(e.currentTarget as Element)) {\n            e.preventDefault();\n          }\n\n          e.stopPropagation();\n        }\n      };\n\n      pressProps.onPointerUp = (e) => {\n        // iOS fires pointerup with zero width and height, so check the pointerType recorded during pointerdown.\n        if (!e.currentTarget.contains(e.target as Element) || state.pointerType === 'virtual') {\n          return;\n        }\n\n        // Only handle left clicks\n        // Safari on iOS sometimes fires pointerup events, even\n        // when the touch isn't over the target, so double check.\n        if (e.button === 0 && isOverTarget(e, e.currentTarget)) {\n          triggerPressUp(e, state.pointerType || e.pointerType);\n        }\n      };\n\n      // Safari on iOS < 13.2 does not implement pointerenter/pointerleave events correctly.\n      // Use pointer move events instead to implement our own hit testing.\n      // See https://bugs.webkit.org/show_bug.cgi?id=199803\n      let onPointerMove = (e: PointerEvent) => {\n        if (e.pointerId !== state.activePointerId) {\n          return;\n        }\n\n        if (state.target && isOverTarget(e, state.target)) {\n          if (!state.isOverTarget && state.pointerType != null) {\n            state.isOverTarget = true;\n            triggerPressStart(createEvent(state.target, e), state.pointerType);\n          }\n        } else if (state.target && state.isOverTarget && state.pointerType != null) {\n          state.isOverTarget = false;\n          triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n          cancelOnPointerExit(e);\n        }\n      };\n\n      let onPointerUp = (e: PointerEvent) => {\n        if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {\n          if (isOverTarget(e, state.target) && state.pointerType != null) {\n            triggerPressEnd(createEvent(state.target, e), state.pointerType);\n          } else if (state.isOverTarget && state.pointerType != null) {\n            triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n          }\n\n          state.isPressed = false;\n          state.isOverTarget = false;\n          state.activePointerId = null;\n          state.pointerType = null;\n          removeAllGlobalListeners();\n          if (!allowTextSelectionOnPress) {\n            restoreTextSelection(state.target);\n          }\n\n          // Prevent subsequent touchend event from triggering onClick on unrelated elements on Android. See below.\n          // Both 'touch' and 'pen' pointerTypes trigger onTouchEnd, but 'mouse' does not.\n          if ('ontouchend' in state.target && e.pointerType !== 'mouse') {\n            addGlobalListener(state.target, 'touchend', onTouchEnd, {once: true});\n          }\n        }\n      };\n\n      // This is a workaround for an Android Chrome/Firefox issue where click events are fired on an incorrect element\n      // if the original target is removed during onPointerUp (before onClick).\n      // https://github.com/adobe/react-spectrum/issues/1513\n      // https://issues.chromium.org/issues/40732224\n      // Note: this event must be registered directly on the element, not via React props in order to work.\n      // https://github.com/facebook/react/issues/9809\n      let onTouchEnd = (e: TouchEvent) => {\n        // Don't preventDefault if we actually want the default (e.g. submit/link click).\n        if (shouldPreventDefaultUp(e.target as Element)) {\n          e.preventDefault();\n        }\n      };\n\n      let onPointerCancel = (e: PointerEvent) => {\n        cancel(e);\n      };\n\n      pressProps.onDragStart = (e) => {\n        if (!e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.\n        cancel(e);\n      };\n    } else {\n      pressProps.onMouseDown = (e) => {\n        // Only handle left clicks\n        if (e.button !== 0 || !e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        // Due to browser inconsistencies, especially on mobile browsers, we prevent\n        // default on mouse down and handle focusing the pressable element ourselves.\n        if (shouldPreventDefaultDown(e.currentTarget)) {\n          e.preventDefault();\n        }\n\n        if (state.ignoreEmulatedMouseEvents) {\n          e.stopPropagation();\n          return;\n        }\n\n        state.isPressed = true;\n        state.isOverTarget = true;\n        state.target = e.currentTarget;\n        state.pointerType = isVirtualClick(e.nativeEvent) ? 'virtual' : 'mouse';\n\n        if (!isDisabled && !preventFocusOnPress) {\n          focusWithoutScrolling(e.currentTarget);\n        }\n\n        let shouldStopPropagation = triggerPressStart(e, state.pointerType);\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n\n        addGlobalListener(getOwnerDocument(e.currentTarget), 'mouseup', onMouseUp, false);\n      };\n\n      pressProps.onMouseEnter = (e) => {\n        if (!e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        let shouldStopPropagation = true;\n        if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n          state.isOverTarget = true;\n          shouldStopPropagation = triggerPressStart(e, state.pointerType);\n        }\n\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n      };\n\n      pressProps.onMouseLeave = (e) => {\n        if (!e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        let shouldStopPropagation = true;\n        if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n          state.isOverTarget = false;\n          shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n          cancelOnPointerExit(e);\n        }\n\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n      };\n\n      pressProps.onMouseUp = (e) => {\n        if (!e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        if (!state.ignoreEmulatedMouseEvents && e.button === 0) {\n          triggerPressUp(e, state.pointerType || 'mouse');\n        }\n      };\n\n      let onMouseUp = (e: MouseEvent) => {\n        // Only handle left clicks\n        if (e.button !== 0) {\n          return;\n        }\n\n        state.isPressed = false;\n        removeAllGlobalListeners();\n\n        if (state.ignoreEmulatedMouseEvents) {\n          state.ignoreEmulatedMouseEvents = false;\n          return;\n        }\n\n        if (state.target && isOverTarget(e, state.target) && state.pointerType != null) {\n          triggerPressEnd(createEvent(state.target, e), state.pointerType);\n        } else if (state.target && state.isOverTarget && state.pointerType != null) {\n          triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n        }\n\n        state.isOverTarget = false;\n      };\n\n      pressProps.onTouchStart = (e) => {\n        if (!e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        let touch = getTouchFromEvent(e.nativeEvent);\n        if (!touch) {\n          return;\n        }\n        state.activePointerId = touch.identifier;\n        state.ignoreEmulatedMouseEvents = true;\n        state.isOverTarget = true;\n        state.isPressed = true;\n        state.target = e.currentTarget;\n        state.pointerType = 'touch';\n\n        // Due to browser inconsistencies, especially on mobile browsers, we prevent default\n        // on the emulated mouse event and handle focusing the pressable element ourselves.\n        if (!isDisabled && !preventFocusOnPress) {\n          focusWithoutScrolling(e.currentTarget);\n        }\n\n        if (!allowTextSelectionOnPress) {\n          disableTextSelection(state.target);\n        }\n\n        let shouldStopPropagation = triggerPressStart(createTouchEvent(state.target, e), state.pointerType);\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n\n        addGlobalListener(getOwnerWindow(e.currentTarget), 'scroll', onScroll, true);\n      };\n\n      pressProps.onTouchMove = (e) => {\n        if (!e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        if (!state.isPressed) {\n          e.stopPropagation();\n          return;\n        }\n\n        let touch = getTouchById(e.nativeEvent, state.activePointerId);\n        let shouldStopPropagation = true;\n        if (touch && isOverTarget(touch, e.currentTarget)) {\n          if (!state.isOverTarget && state.pointerType != null) {\n            state.isOverTarget = true;\n            shouldStopPropagation = triggerPressStart(createTouchEvent(state.target!, e), state.pointerType);\n          }\n        } else if (state.isOverTarget && state.pointerType != null) {\n          state.isOverTarget = false;\n          shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target!, e), state.pointerType, false);\n          cancelOnPointerExit(createTouchEvent(state.target!, e));\n        }\n\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n      };\n\n      pressProps.onTouchEnd = (e) => {\n        if (!e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        if (!state.isPressed) {\n          e.stopPropagation();\n          return;\n        }\n\n        let touch = getTouchById(e.nativeEvent, state.activePointerId);\n        let shouldStopPropagation = true;\n        if (touch && isOverTarget(touch, e.currentTarget) && state.pointerType != null) {\n          triggerPressUp(createTouchEvent(state.target!, e), state.pointerType);\n          shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target!, e), state.pointerType);\n        } else if (state.isOverTarget && state.pointerType != null) {\n          shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target!, e), state.pointerType, false);\n        }\n\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n\n        state.isPressed = false;\n        state.activePointerId = null;\n        state.isOverTarget = false;\n        state.ignoreEmulatedMouseEvents = true;\n        if (state.target && !allowTextSelectionOnPress) {\n          restoreTextSelection(state.target);\n        }\n        removeAllGlobalListeners();\n      };\n\n      pressProps.onTouchCancel = (e) => {\n        if (!e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        e.stopPropagation();\n        if (state.isPressed) {\n          cancel(createTouchEvent(state.target!, e));\n        }\n      };\n\n      let onScroll = (e: Event) => {\n        if (state.isPressed && (e.target as Element).contains(state.target)) {\n          cancel({\n            currentTarget: state.target,\n            shiftKey: false,\n            ctrlKey: false,\n            metaKey: false,\n            altKey: false\n          });\n        }\n      };\n\n      pressProps.onDragStart = (e) => {\n        if (!e.currentTarget.contains(e.target as Element)) {\n          return;\n        }\n\n        cancel(e);\n      };\n    }\n\n    return pressProps;\n  }, [\n    addGlobalListener,\n    isDisabled,\n    preventFocusOnPress,\n    removeAllGlobalListeners,\n    allowTextSelectionOnPress,\n    cancel,\n    cancelOnPointerExit,\n    triggerPressEnd,\n    triggerPressStart,\n    triggerPressUp\n  ]);\n\n  // Remove user-select: none in case component unmounts immediately after pressStart\n  // eslint-disable-next-line arrow-body-style\n  useEffect(() => {\n    return () => {\n      if (!allowTextSelectionOnPress) {\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        restoreTextSelection(ref.current.target ?? undefined);\n      }\n    };\n  }, [allowTextSelectionOnPress]);\n\n  return {\n    isPressed: isPressedProp || isPressed,\n    pressProps: mergeProps(domProps, pressProps)\n  };\n}\n\nfunction isHTMLAnchorLink(target: Element): target is HTMLAnchorElement {\n  return target.tagName === 'A' && target.hasAttribute('href');\n}\n\nfunction isValidKeyboardEvent(event: KeyboardEvent, currentTarget: Element): boolean {\n  const {key, code} = event;\n  const element = currentTarget as HTMLElement;\n  const role = element.getAttribute('role');\n  // Accessibility for keyboards. Space and Enter only.\n  // \"Spacebar\" is for IE 11\n  return (\n    (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') &&\n    !((element instanceof getOwnerWindow(element).HTMLInputElement && !isValidInputKey(element, key)) ||\n      element instanceof getOwnerWindow(element).HTMLTextAreaElement ||\n      element.isContentEditable) &&\n    // Links should only trigger with Enter key\n    !((role === 'link' || (!role && isHTMLAnchorLink(element))) && key !== 'Enter')\n  );\n}\n\nfunction getTouchFromEvent(event: TouchEvent): Touch | null {\n  const {targetTouches} = event;\n  if (targetTouches.length > 0) {\n    return targetTouches[0];\n  }\n  return null;\n}\n\nfunction getTouchById(\n  event: TouchEvent,\n  pointerId: null | number\n): null | Touch {\n  const changedTouches = event.changedTouches;\n  for (let i = 0; i < changedTouches.length; i++) {\n    const touch = changedTouches[i];\n    if (touch.identifier === pointerId) {\n      return touch;\n    }\n  }\n  return null;\n}\n\nfunction createTouchEvent(target: FocusableElement, e: RTouchEvent<FocusableElement>): EventBase {\n  let clientX = 0;\n  let clientY = 0;\n  if (e.targetTouches && e.targetTouches.length === 1) {\n    clientX = e.targetTouches[0].clientX;\n    clientY = e.targetTouches[0].clientY;\n  }\n  return {\n    currentTarget: target,\n    shiftKey: e.shiftKey,\n    ctrlKey: e.ctrlKey,\n    metaKey: e.metaKey,\n    altKey: e.altKey,\n    clientX,\n    clientY\n  };\n}\n\nfunction createEvent(target: FocusableElement, e: EventBase): EventBase {\n  let clientX = e.clientX;\n  let clientY = e.clientY;\n  return {\n    currentTarget: target,\n    shiftKey: e.shiftKey,\n    ctrlKey: e.ctrlKey,\n    metaKey: e.metaKey,\n    altKey: e.altKey,\n    clientX,\n    clientY\n  };\n}\n\ninterface Rect {\n  top: number,\n  right: number,\n  bottom: number,\n  left: number\n}\n\ninterface EventPoint {\n  clientX: number,\n  clientY: number,\n  width?: number,\n  height?: number,\n  radiusX?: number,\n  radiusY?: number\n}\n\nfunction getPointClientRect(point: EventPoint): Rect {\n  let offsetX = 0;\n  let offsetY = 0;\n  if (point.width !== undefined) {\n    offsetX = (point.width / 2);\n  } else if (point.radiusX !== undefined) {\n    offsetX = point.radiusX;\n  }\n  if (point.height !== undefined) {\n    offsetY = (point.height / 2);\n  } else if (point.radiusY !== undefined) {\n    offsetY = point.radiusY;\n  }\n\n  return {\n    top: point.clientY - offsetY,\n    right: point.clientX + offsetX,\n    bottom: point.clientY + offsetY,\n    left: point.clientX - offsetX\n  };\n}\n\nfunction areRectanglesOverlapping(a: Rect, b: Rect) {\n  // check if they cannot overlap on x axis\n  if (a.left > b.right || b.left > a.right) {\n    return false;\n  }\n  // check if they cannot overlap on y axis\n  if (a.top > b.bottom || b.top > a.bottom) {\n    return false;\n  }\n  return true;\n}\n\nfunction isOverTarget(point: EventPoint, target: Element) {\n  let rect = target.getBoundingClientRect();\n  let pointRect = getPointClientRect(point);\n  return areRectanglesOverlapping(rect, pointRect);\n}\n\nfunction shouldPreventDefaultDown(target: Element) {\n  // We cannot prevent default if the target is a draggable element.\n  return !(target instanceof HTMLElement) || !target.hasAttribute('draggable');\n}\n\nfunction shouldPreventDefaultUp(target: Element) {\n  if (target instanceof HTMLInputElement) {\n    return false;\n  }\n  \n  if (target instanceof HTMLButtonElement) {\n    return target.type !== 'submit' && target.type !== 'reset';\n  }\n\n  if (isHTMLAnchorLink(target)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction shouldPreventDefaultKeyboard(target: Element, key: string) {\n  if (target instanceof HTMLInputElement) {\n    return !isValidInputKey(target, key);\n  }\n\n  return shouldPreventDefaultUp(target);\n}\n\nconst nonTextInputTypes = new Set([\n  'checkbox',\n  'radio',\n  'range',\n  'color',\n  'file',\n  'image',\n  'button',\n  'submit',\n  'reset'\n]);\n\nfunction isValidInputKey(target: HTMLInputElement, key: string) {\n  // Only space should toggle checkboxes and radios, not enter.\n  return target.type === 'checkbox' || target.type === 'radio'\n    ? key === ' '\n    : nonTextInputTypes.has(target.type);\n}\n","/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {RefObject, ScrollEvents} from '@react-types/shared';\nimport {useCallback} from 'react';\nimport {useEvent} from '@react-aria/utils';\n\nexport interface ScrollWheelProps extends ScrollEvents {\n  /** Whether the scroll listener should be disabled. */\n  isDisabled?: boolean\n}\n\n// scroll wheel needs to be added not passively so it's cancelable, small helper hook to remember that\nexport function useScrollWheel(props: ScrollWheelProps, ref: RefObject<HTMLElement | null>): void {\n  let {onScroll, isDisabled} = props;\n  let onScrollHandler = useCallback((e) => {\n    // If the ctrlKey is pressed, this is a zoom event, do nothing.\n    if (e.ctrlKey) {\n      return;\n    }\n\n    // stop scrolling the page\n    e.preventDefault();\n    e.stopPropagation();\n\n    if (onScroll) {\n      onScroll({deltaX: e.deltaX, deltaY: e.deltaY});\n    }\n  }, [onScroll]);\n\n  useEvent(ref, 'wheel', isDisabled ? undefined : onScrollHandler);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {DOMAttributes, LongPressEvent} from '@react-types/shared';\nimport {mergeProps, useDescription, useGlobalListeners} from '@react-aria/utils';\nimport {usePress} from './usePress';\nimport {useRef} from 'react';\n\nexport interface LongPressProps {\n  /** Whether long press events should be disabled. */\n  isDisabled?: boolean,\n  /** Handler that is called when a long press interaction starts. */\n  onLongPressStart?: (e: LongPressEvent) => void,\n  /**\n   * Handler that is called when a long press interaction ends, either\n   * over the target or when the pointer leaves the target.\n   */\n  onLongPressEnd?: (e: LongPressEvent) => void,\n  /**\n   * Handler that is called when the threshold time is met while\n   * the press is over the target.\n   */\n  onLongPress?: (e: LongPressEvent) => void,\n  /**\n   * The amount of time in milliseconds to wait before triggering a long press.\n   * @default 500ms\n   */\n  threshold?: number,\n  /**\n   * A description for assistive techology users indicating that a long press\n   * action is available, e.g. \"Long press to open menu\".\n   */\n  accessibilityDescription?: string\n}\n\nexport interface LongPressResult {\n  /** Props to spread on the target element. */\n  longPressProps: DOMAttributes\n}\n\nconst DEFAULT_THRESHOLD = 500;\n\n/**\n * Handles long press interactions across mouse and touch devices. Supports a customizable time threshold,\n * accessibility description, and normalizes behavior across browsers and devices.\n */\nexport function useLongPress(props: LongPressProps): LongPressResult {\n  let {\n    isDisabled,\n    onLongPressStart,\n    onLongPressEnd,\n    onLongPress,\n    threshold = DEFAULT_THRESHOLD,\n    accessibilityDescription\n  } = props;\n\n  const timeRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n  let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n  let {pressProps} = usePress({\n    isDisabled,\n    onPressStart(e) {\n      e.continuePropagation();\n      if (e.pointerType === 'mouse' || e.pointerType === 'touch') {\n        if (onLongPressStart) {\n          onLongPressStart({\n            ...e,\n            type: 'longpressstart'\n          });\n        }\n\n        timeRef.current = setTimeout(() => {\n          // Prevent other usePress handlers from also handling this event.\n          e.target.dispatchEvent(new PointerEvent('pointercancel', {bubbles: true}));\n          if (onLongPress) {\n            onLongPress({\n              ...e,\n              type: 'longpress'\n            });\n          }\n          timeRef.current = undefined;\n        }, threshold);\n\n        // Prevent context menu, which may be opened on long press on touch devices\n        if (e.pointerType === 'touch') {\n          let onContextMenu = e => {\n            e.preventDefault();\n          };\n\n          addGlobalListener(e.target, 'contextmenu', onContextMenu, {once: true});\n          addGlobalListener(window, 'pointerup', () => {\n            // If no contextmenu event is fired quickly after pointerup, remove the handler\n            // so future context menu events outside a long press are not prevented.\n            setTimeout(() => {\n              removeGlobalListener(e.target, 'contextmenu', onContextMenu);\n            }, 30);\n          }, {once: true});\n        }\n      }\n    },\n    onPressEnd(e) {\n      if (timeRef.current) {\n        clearTimeout(timeRef.current);\n      }\n\n      if (onLongPressEnd && (e.pointerType === 'mouse' || e.pointerType === 'touch')) {\n        onLongPressEnd({\n          ...e,\n          type: 'longpressend'\n        });\n      }\n    }\n  });\n\n  let descriptionProps = useDescription(onLongPress && !isDisabled ? accessibilityDescription : undefined);\n\n  return {\n    longPressProps: mergeProps(pressProps, descriptionProps)\n  };\n}\n"],"names":["modules","entry","mainEntry","parcelRequireName","globalName","globalObject","globalThis","self","window","global","previousRequire","cache","nodeRequire","module","require","bind","newRequire","name","jumped","currentRequire","err","Error","code","localRequire","resolve","x","id","Module","call","exports","res","isParcelRequire","moduleName","bundle","parent","register","Object","defineProperty","get","i","length","parcelHelpers","defineInteropFlag","export","_pressable","Pressable","_pressResponder","PressResponder","ClearPressResponder","_useFocus","useFocus","_useFocusVisible","isFocusVisible","getInteractionModality","setInteractionModality","addWindowFocusTracking","useInteractionModality","useFocusVisible","useFocusVisibleListener","_useFocusWithin","useFocusWithin","_useHover","useHover","_useInteractOutside","useInteractOutside","_useKeyboard","useKeyboard","_useMove","useMove","_usePress","usePress","_useScrollWheel","useScrollWheel","_useLongPress","useLongPress","_utils","_context","_react","_reactDefault","interopDefault","default","forwardRef","children","props","ref","isRegistered","useRef","prevContext","useContext","PressResponderContext","useObjectRef","context","mergeProps","current","useSyncRef","useEffect","console","warn","createElement","Provider","value","useMemo","createContext","displayName","_utils1","isDisabled","onFocus","onFocusProp","onBlur","onBlurProp","onFocusChange","useCallback","e","target","currentTarget","onSyntheticFocus","useSyntheticBlurEvent","ownerDocument","getOwnerDocument","activeElement","focusProps","undefined","SyntheticFocusEvent","constructor","type","nativeEvent","relatedTarget","bubbles","cancelable","defaultPrevented","eventPhase","isTrusted","timeStamp","isDefaultPrevented","preventDefault","stopPropagation","isPropagationStopped","persist","stateRef","isFocused","observer","useLayoutEffect","state","disconnect","dispatchBlur","useEffectEvent","HTMLButtonElement","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","addEventListener","disabled","once","MutationObserver","relatedTargetEl","document","dispatchEvent","FocusEvent","observe","attributes","attributeFilter","hasSetupGlobalListeners","_ssr","currentModality","changeHandlers","Set","Map","hasEventBeforeFocus","hasBlurredWindowRecently","FOCUS_VISIBLE_INPUT_KEYS","Tab","Escape","triggerChangeHandlers","modality","handler","handleKeyboardEvent","metaKey","isMac","altKey","ctrlKey","key","handlePointerEvent","handleClickEvent","isVirtualClick","handleFocusEvent","handleWindowBlur","setupGlobalFocusEvents","element","getOwnerWindow","windowObject","documentObject","focus","HTMLElement","prototype","apply","arguments","PointerEvent","tearDownWindowFocusTracking","set","loadListener","removeEventListener","has","delete","readyState","setModality","useState","add","useIsSSR","nonTextInputTypes","isTextInput","autoFocus","isFocusVisibleState","setFocusVisible","fn","deps","opts","isKeyboardFocusEvent","IHTMLInputElement","IHTMLTextAreaElement","IHTMLElement","IKeyboardEvent","KeyboardEvent","isContentEditable","onBlurWithin","onFocusWithin","onFocusWithinChange","isFocusWithin","contains","focusWithinProps","globalIgnoreEmulatedMouseEvents","hoverCount","setGlobalIgnoreEmulatedMouseEvents","setTimeout","handleGlobalPointerEvent","pointerType","setupGlobalTouchEvents","onHoverStart","onHoverChange","onHoverEnd","isHovered","setHovered","ignoreEmulatedMouseEvents","hoverProps","triggerHoverEnd","triggerHoverStart","event","onPointerEnter","onPointerLeave","onTouchStart","onMouseEnter","onMouseLeave","onInteractOutside","onInteractOutsideStart","isPointerDown","onPointerDown","isValidEvent","triggerInteractOutside","onPointerUp","onMouseUp","onTouchEnd","button","documentElement","closest","_createEventHandler","keyboardProps","onKeyDown","createEventHandler","onKeyUp","shouldStopPropagation","error","continuePropagation","_textSelection","onMoveStart","onMove","onMoveEnd","didMove","lastPosition","addGlobalListener","removeGlobalListener","useGlobalListeners","move","originalEvent","deltaX","deltaY","shiftKey","end","restoreTextSelection","moveProps","start","disableTextSelection","onMouseMove","pageX","pageY","onMouseDown","onTouchMove","touch","changedTouches","findIndex","identifier","onPointerMove","pointerId","triggerKeyboardMove","savedUserSelect","modifiedElementMap","WeakMap","isIOS","style","webkitUserSelect","SVGElement","userSelect","runAfterTransition","targetOldUserSelect","getAttribute","removeAttribute","PressEvent","rect","getBoundingClientRect","y","clientX","clientY","left","top","width","height","LINK_CLICKED","Symbol","onPress","onPressChange","onPressStart","onPressEnd","onPressUp","isPressed","isPressedProp","preventFocusOnPress","shouldCancelOnPointerExit","allowTextSelectionOnPress","_","domProps","usePressResponderContext","contextProps","setPressed","ignoreClickAfterPress","didFirePressStart","isTriggeringEvent","activePointerId","isOverTarget","removeAllGlobalListeners","triggerPressStart","triggerPressEnd","wasPressed","triggerPressUp","cancel","createEvent","cancelOnPointerExit","pressProps","isValidKeyboardEvent","shouldPreventDefaultKeyboard","repeat","originalTarget","chain","metaKeyEvents","onClick","openLink","isOpening","focusWithoutScrolling","stopPressStart","stopPressUp","stopPressEnd","isHTMLAnchorLink","size","events","values","isVirtualPointerEvent","shouldPreventDefaultDown","onPointerCancel","shouldPreventDefaultUp","onDragStart","getTouchFromEvent","targetTouches","createTouchEvent","onScroll","getTouchById","onTouchCancel","tagName","hasAttribute","role","isValidInputKey","point","offsetX","offsetY","pointRect","radiusX","radiusY","right","bottom","a","b","onScrollHandler","useEvent","onLongPressStart","onLongPressEnd","onLongPress","threshold","accessibilityDescription","timeRef","onContextMenu","clearTimeout","descriptionProps","useDescription","longPressProps"],"version":3,"file":"useButton.stories.35b7ce16.js.map"}