construct-hub-webapp 0.1.276 → 0.1.280
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/asset-manifest.json +42 -42
- package/build/index.html +1 -1
- package/build/service-worker.js +1 -1
- package/build/static/js/{0.01076643.chunk.js → 0.6dd1b184.chunk.js} +2 -2
- package/build/static/js/{0.01076643.chunk.js.map → 0.6dd1b184.chunk.js.map} +1 -1
- package/build/static/js/{1.7efe2b06.chunk.js → 1.74feae39.chunk.js} +2 -2
- package/build/static/js/{1.7efe2b06.chunk.js.map → 1.74feae39.chunk.js.map} +1 -1
- package/build/static/js/10.9f4504cb.chunk.js +2 -0
- package/build/static/js/10.9f4504cb.chunk.js.map +1 -0
- package/build/static/js/11.393198d3.chunk.js +2 -0
- package/build/static/js/11.393198d3.chunk.js.map +1 -0
- package/build/static/js/12.9746e3ee.chunk.js +2 -0
- package/build/static/js/12.9746e3ee.chunk.js.map +1 -0
- package/build/static/js/{14.a40917a3.chunk.js → 13.9bce7ee4.chunk.js} +2 -2
- package/build/static/js/{14.a40917a3.chunk.js.map → 13.9bce7ee4.chunk.js.map} +1 -1
- package/build/static/js/{15.f6946442.chunk.js → 14.3785957e.chunk.js} +2 -2
- package/build/static/js/{15.f6946442.chunk.js.map → 14.3785957e.chunk.js.map} +1 -1
- package/build/static/js/15.01795446.chunk.js +2 -0
- package/build/static/js/15.01795446.chunk.js.map +1 -0
- package/build/static/js/{16.ad041986.chunk.js → 16.26341162.chunk.js} +3 -3
- package/build/static/js/{16.ad041986.chunk.js.LICENSE.txt → 16.26341162.chunk.js.LICENSE.txt} +0 -0
- package/build/static/js/{16.ad041986.chunk.js.map → 16.26341162.chunk.js.map} +1 -1
- package/build/static/js/{17.cf0c8971.chunk.js → 17.7ae41f92.chunk.js} +2 -2
- package/build/static/js/{17.cf0c8971.chunk.js.map → 17.7ae41f92.chunk.js.map} +1 -1
- package/build/static/js/2.dc3446e0.chunk.js +2 -0
- package/build/static/js/2.dc3446e0.chunk.js.map +1 -0
- package/build/static/js/5.04328654.chunk.js +3 -0
- package/build/static/js/{6.f20d821e.chunk.js.LICENSE.txt → 5.04328654.chunk.js.LICENSE.txt} +0 -0
- package/build/static/js/5.04328654.chunk.js.map +1 -0
- package/build/static/js/6.68ea4a85.chunk.js +3 -0
- package/build/static/js/{7.3ec0b9d4.chunk.js.LICENSE.txt → 6.68ea4a85.chunk.js.LICENSE.txt} +0 -0
- package/build/static/js/6.68ea4a85.chunk.js.map +1 -0
- package/build/static/js/7.4347f5e4.chunk.js +2 -0
- package/build/static/js/7.4347f5e4.chunk.js.map +1 -0
- package/build/static/js/8.bb5dfbab.chunk.js +2 -0
- package/build/static/js/8.bb5dfbab.chunk.js.map +1 -0
- package/build/static/js/9.2e9cba2f.chunk.js +2 -0
- package/build/static/js/9.2e9cba2f.chunk.js.map +1 -0
- package/build/static/js/main.09317a58.chunk.js +2 -0
- package/build/static/js/main.09317a58.chunk.js.map +1 -0
- package/build/static/js/runtime-main.448e74e5.js +2 -0
- package/build/static/js/{runtime-main.94050b24.js.map → runtime-main.448e74e5.js.map} +1 -1
- package/cypress/integration/header.spec.ts +36 -5
- package/cypress/integration/home.spec.ts +27 -0
- package/cypress/integration/search.spec.ts +11 -0
- package/cypress/support/commands.ts +1 -1
- package/package.json +4 -4
- package/build/static/js/10.e14dabc8.chunk.js +0 -2
- package/build/static/js/10.e14dabc8.chunk.js.map +0 -1
- package/build/static/js/11.4fa20ae6.chunk.js +0 -2
- package/build/static/js/11.4fa20ae6.chunk.js.map +0 -1
- package/build/static/js/12.1f0d32c6.chunk.js +0 -2
- package/build/static/js/12.1f0d32c6.chunk.js.map +0 -1
- package/build/static/js/13.a1af9f29.chunk.js +0 -2
- package/build/static/js/13.a1af9f29.chunk.js.map +0 -1
- package/build/static/js/2.b57d6cff.chunk.js +0 -2
- package/build/static/js/2.b57d6cff.chunk.js.map +0 -1
- package/build/static/js/3.2a95eb1f.chunk.js +0 -2
- package/build/static/js/3.2a95eb1f.chunk.js.map +0 -1
- package/build/static/js/6.f20d821e.chunk.js +0 -3
- package/build/static/js/6.f20d821e.chunk.js.map +0 -1
- package/build/static/js/7.3ec0b9d4.chunk.js +0 -3
- package/build/static/js/7.3ec0b9d4.chunk.js.map +0 -1
- package/build/static/js/8.39dec1af.chunk.js +0 -2
- package/build/static/js/8.39dec1af.chunk.js.map +0 -1
- package/build/static/js/9.a5bd98cc.chunk.js +0 -2
- package/build/static/js/9.a5bd98cc.chunk.js.map +0 -1
- package/build/static/js/main.a9b1d223.chunk.js +0 -2
- package/build/static/js/main.a9b1d223.chunk.js.map +0 -1
- package/build/static/js/runtime-main.94050b24.js +0 -2
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[3],{301:function(e,r,t){"use strict";t.d(r,"a",(function(){return v}));var n=t(19),o=t(22),a=t(26),c=t(8),i=t(0),u=t(5),s=t(145);function l(){return l=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},l.apply(this,arguments)}function d(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}var p=i.forwardRef((function(e,r){var t=e.htmlWidth,n=e.htmlHeight,o=e.alt,a=d(e,["htmlWidth","htmlHeight","alt"]);return i.createElement("img",l({width:t,height:n,ref:r,alt:o},a))})),v=Object(n.a)((function(e,r){var t=e.fallbackSrc,n=e.fallback,c=e.src,v=e.srcSet,f=e.align,b=e.fit,O=e.loading,j=e.ignoreFallback,g=e.crossOrigin,m=d(e,["fallbackSrc","fallback","src","srcSet","align","fit","loading","ignoreFallback","crossOrigin"]),h=null!=O||j||void 0===t&&void 0===n,y=function(e){var r=e.loading,t=e.src,n=e.srcSet,o=e.onLoad,a=e.onError,c=e.crossOrigin,l=e.sizes,d=e.ignoreFallback,p=Object(i.useState)("pending"),v=Object(u.a)(p,2),f=v[0],b=v[1];Object(i.useEffect)((function(){b(t?"loading":"pending")}),[t]);var O=Object(i.useRef)(),j=Object(i.useCallback)((function(){if(t){g();var e=new Image;e.src=t,c&&(e.crossOrigin=c),n&&(e.srcset=n),l&&(e.sizes=l),r&&(e.loading=r),e.onload=function(e){g(),b("loaded"),null==o||o(e)},e.onerror=function(e){g(),b("failed"),null==a||a(e)},O.current=e}}),[t,c,n,l,o,a,r]),g=function(){O.current&&(O.current.onload=null,O.current.onerror=null,O.current=null)};return Object(s.a)((function(){if(!d)return"loading"===f&&j(),function(){g()}}),[f,j,d]),d?"loaded":f}(l({},e,{ignoreFallback:h})),w=l({ref:r,objectFit:b,objectPosition:f},h?m:Object(a.g)(m,["onError","onLoad"]));return"loaded"!==y?n||i.createElement(o.a.img,l({as:p,className:"chakra-image__placeholder",src:t},w)):i.createElement(o.a.img,l({as:p,src:c,srcSet:v,crossOrigin:g,loading:O,className:"chakra-image"},w))}));c.a&&(v.displayName="Image")},359:function(e,r,t){"use strict";t.d(r,"a",(function(){return o}));var n=t(76),o=Object(n.a)({d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z",displayName:"ChevronRightIcon"})},600:function(e,r,t){"use strict";t.d(r,"a",(function(){return oe})),t.d(r,"g",(function(){return ae})),t.d(r,"e",(function(){return ce})),t.d(r,"f",(function(){return ie})),t.d(r,"c",(function(){return ue})),t.d(r,"d",(function(){return se})),t.d(r,"b",(function(){return le}));var n=t(198),o=t(63),a=t(36),c=t(62),i=t(19),u=t(22),s=t(28),l=t(8),d=t(16),p=t(0),v=t.n(p),f=t(5),b=t(114),O=Object(b.a)({name:"PopoverContext",errorMessage:"usePopoverContext: `context` is undefined. Seems you forgot to wrap all popover components within `<Popover />`"}),j=Object(f.a)(O,2),g=j[0],m=j[1],h=t(180),y=t(46),w=t.n(y);function P(){return P=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},P.apply(this,arguments)}var k=function(e){if(e)return w()(e,{enter:{visibility:"visible"},exit:{transitionEnd:{visibility:"hidden"}}})},E=Object(h.a)(u.a.section),C=v.a.forwardRef((function(e,r){var t=m().isOpen;return v.a.createElement(E,P({ref:r,variants:k(e.variants)},e,{initial:!1,animate:t?"enter":"exit"}))}));C.defaultProps={variants:{exit:{opacity:0,scale:.95,transition:{duration:.1,ease:[.4,0,1,1]}},enter:{scale:1,opacity:1,transition:{duration:.15,ease:[0,0,.2,1]}}}};var S=t(4),_=t(201),N=t(112);var x=t(38),F=t(176);function R(e){return!!e.touches}var B={pageX:0,pageY:0};function M(e,r){void 0===r&&(r="page");var t=e.touches[0]||e.changedTouches[0]||B;return{x:t[r+"X"],y:t[r+"Y"]}}function T(e,r){return void 0===r&&(r="page"),{x:e[r+"X"],y:e[r+"Y"]}}function z(e,r){return void 0===r&&(r="page"),{point:R(e)?M(e,r):T(e,r)}}var A=function(e,r){void 0===r&&(r=!1);var t,n=function(r){return e(r,z(r))};return r?(t=n,function(e){var r=e instanceof Object(d.g)(e).MouseEvent;(!r||r&&0===e.button)&&t(e)}):n},L={pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointercancel:"mousecancel",pointerover:"mouseover",pointerout:"mouseout",pointerenter:"mouseenter",pointerleave:"mouseleave"},D={pointerdown:"touchstart",pointermove:"touchmove",pointerup:"touchend",pointercancel:"touchcancel"};function I(e){return d.j&&null===window.onpointerdown?e:d.j&&null===window.ontouchstart?D[e]:d.j&&null===window.onmousedown?L[e]:e}var K=t(183);function H(e){var r,t,n,o,a,c=e.ref,i=e.elements,u=e.enabled,s=(r="Safari",!!d.j&&function(e){var r=e.userAgent,t=e.vendor,n=/(android)/i.test(r);switch(!0){case/CriOS/.test(r):return"Chrome for iOS";case/Edg\//.test(r):return"Edge";case n&&/Silk\//.test(r):return"Silk";case/Chrome/.test(r)&&/Google Inc/.test(t):return"Chrome";case/Firefox\/\d+\.\d+$/.test(r):return"Firefox";case n:return"AOSP";case/MSIE|Trident/.test(r):return"IE";case/Safari/.test(e.userAgent)&&/Apple Computer/.test(r):return"Safari";case/AppleWebKit/.test(r):return"WebKit";default:return null}}(window.navigator)===r);t=function(){return Object(d.h)(c.current)},n="pointerdown",o=function(e){if(s&&u){var r=e.target,t=(null!=i?i:[c]).some((function(e){var t=Object(l.j)(e)?e.current:e;return Object(d.c)(t,r)}));!Object(x.a)(r)&&t&&(e.preventDefault(),Object(F.a)(r))}},Object(K.a)(I(n),A(o,"pointerdown"===n),t,a)}var U=t(211),W=t(197),X=t(138),Y={preventScroll:!0,shouldFocus:!1};var J=t(220),G=t(25),$=t(155),q=t(212),Q=t(196);function V(){return V=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},V.apply(this,arguments)}var Z="click",ee="hover";function re(e){void 0===e&&(e={});var r=e,t=r.closeOnBlur,n=void 0===t||t,o=r.closeOnEsc,a=void 0===o||o,c=r.initialFocusRef,i=r.id,u=r.returnFocusOnClose,v=void 0===u||u,b=r.autoFocus,O=void 0===b||b,j=r.arrowSize,g=r.arrowShadowColor,m=r.trigger,h=void 0===m?Z:m,y=r.openDelay,w=void 0===y?200:y,P=r.closeDelay,k=void 0===P?200:P,E=r.isLazy,C=r.lazyBehavior,x=void 0===C?"unmount":C,R=r.computePositionOnMount,B=function(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,["closeOnBlur","closeOnEsc","initialFocusRef","id","returnFocusOnClose","autoFocus","arrowSize","arrowShadowColor","trigger","openDelay","closeDelay","isLazy","lazyBehavior","computePositionOnMount"]),M=Object(_.a)(e),T=M.isOpen,z=M.onClose,A=M.onOpen,L=M.onToggle,D=Object(p.useRef)(null),I=Object(p.useRef)(null),re=Object(p.useRef)(!1),te=Object(p.useRef)(!1);T&&(te.current=!0);var ne=Object(p.useState)(!1),oe=Object(f.a)(ne,2),ae=oe[0],ce=oe[1],ie=Object(p.useState)(!1),ue=Object(f.a)(ie,2),se=ue[0],le=ue[1],de=Object(N.c)(i,"popover-trigger","popover-content","popover-header","popover-body"),pe=Object(f.a)(de,4),ve=pe[0],fe=pe[1],be=pe[2],Oe=pe[3],je=Object(J.a)(V({},B,{enabled:T||R})),ge=je.referenceRef,me=je.getArrowProps,he=je.getPopperProps,ye=je.getArrowInnerProps,we=je.forceUpdate;H({enabled:T,ref:D}),Object(U.a)(I,{focusRef:D,visible:T,shouldFocus:v&&h===Z}),function(e,r){void 0===r&&(r=Y);var t=r,n=t.focusRef,o=t.preventScroll,a=t.shouldFocus,c=t.visible,i=Object(l.j)(e)?e.current:e,u=a&&c,s=Object(p.useCallback)((function(){if(i&&u&&!Object(d.c)(i,document.activeElement))if(null!=n&&n.current)Object(F.a)(n.current,{preventScroll:o,nextTick:!0});else{var e=Object(W.a)(i);e.length>0&&Object(F.a)(e[0],{preventScroll:o,nextTick:!0})}}),[u,o,i,n]);Object(X.a)((function(){s()}),[s]),Object(K.a)("transitionend",s,i)}(I,{focusRef:c,visible:T,shouldFocus:O&&h===Z});var Pe=Object(q.a)({hasBeenSelected:te.current,isLazy:E,lazyBehavior:x,isSelected:T}),ke=Object(p.useCallback)((function(e,r){var t;void 0===e&&(e={}),void 0===r&&(r=null);var o=V({},e,{style:V({},e.style,(t={transformOrigin:G.a.transformOrigin.varRef},Object(S.a)(t,G.a.arrowSize.var,j?Object(Q.b)(j):void 0),Object(S.a)(t,G.a.arrowShadowColor.var,g),t)),ref:Object($.a)(I,r),children:Pe?e.children:null,id:fe,tabIndex:-1,role:"dialog",onKeyDown:Object(s.b)(e.onKeyDown,(function(e){a&&"Escape"===e.key&&z()})),onBlur:Object(s.b)(e.onBlur,(function(e){var r=Object(d.i)(e),t=Object(d.c)(I.current,r),o=Object(d.c)(D.current,r);T&&n&&(!t&&!o)&&z()})),"aria-labelledby":ae?be:void 0,"aria-describedby":se?Oe:void 0});return h===ee&&(o.role="tooltip",o.onMouseEnter=Object(s.b)(e.onMouseEnter,(function(){re.current=!0})),o.onMouseLeave=Object(s.b)(e.onMouseLeave,(function(){re.current=!1,setTimeout(z,k)}))),o}),[Pe,fe,ae,be,se,Oe,h,a,z,T,n,k,g,j]),Ee=Object(p.useCallback)((function(e,r){return void 0===e&&(e={}),void 0===r&&(r=null),he(V({},e,{style:V({visibility:T?"visible":"hidden"},e.style)}),r)}),[T,he]),Ce=Object(p.useRef)(),Se=Object(p.useRef)(),_e=Object(p.useCallback)((function(e,r){void 0===e&&(e={}),void 0===r&&(r=null);var t=V({},e,{ref:Object($.a)(D,r,ge),id:ve,"aria-haspopup":"dialog","aria-expanded":T,"aria-controls":fe});return h===Z&&(t.onClick=Object(s.b)(e.onClick,L)),h===ee&&(t.onFocus=Object(s.b)(e.onFocus,A),t.onBlur=Object(s.b)(e.onBlur,z),t.onKeyDown=Object(s.b)(e.onKeyDown,(function(e){"Escape"===e.key&&z()})),t.onMouseEnter=Object(s.b)(e.onMouseEnter,(function(){re.current=!0,Ce.current=window.setTimeout(A,w)})),t.onMouseLeave=Object(s.b)(e.onMouseLeave,(function(){re.current=!1,Ce.current&&(clearTimeout(Ce.current),Ce.current=void 0),Se.current=window.setTimeout((function(){!1===re.current&&z()}),k)}))),t}),[ve,T,fe,h,ge,L,A,z,w,k]);Object(p.useEffect)((function(){return function(){Ce.current&&clearTimeout(Ce.current),Se.current&&clearTimeout(Se.current)}}),[]);var Ne=Object(p.useCallback)((function(e,r){return void 0===e&&(e={}),void 0===r&&(r=null),V({},e,{id:be,ref:Object($.a)(r,(function(e){ce(!!e)}))})}),[be]),xe=Object(p.useCallback)((function(e,r){return void 0===e&&(e={}),void 0===r&&(r=null),V({},e,{id:Oe,ref:Object($.a)(r,(function(e){le(!!e)}))})}),[Oe]);return{forceUpdate:we,isOpen:T,onClose:z,getArrowProps:me,getArrowInnerProps:ye,getPopoverPositionerProps:Ee,getPopoverProps:ke,getTriggerProps:_e,getHeaderProps:Ne,getBodyProps:xe}}function te(){return te=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},te.apply(this,arguments)}function ne(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}var oe=function(e){var r=Object(o.a)("Popover",e),t=Object(a.b)(e),n=t.children,i=re(te({},ne(t,["children"]),{direction:Object(c.e)().direction}));return p.createElement(g,{value:i},p.createElement(c.b,{value:r},Object(s.e)(n,{isOpen:i.isOpen,onClose:i.onClose,forceUpdate:i.forceUpdate})))};l.a&&(oe.displayName="Popover");var ae=function(e){var r=p.Children.only(e.children),t=m().getTriggerProps;return p.cloneElement(r,t(r.props,r.ref))};l.a&&(ae.displayName="PopoverTrigger");var ce=Object(i.a)((function(e,r){var t=e.rootProps,n=ne(e,["rootProps"]),o=m(),a=o.getPopoverProps,i=o.getPopoverPositionerProps,s=Object(c.d)(),l=te({position:"relative",display:"flex",flexDirection:"column"},s.content);return p.createElement(u.a.div,te({},i(t),{__css:s.popper,className:"chakra-popover__popper"}),p.createElement(C,te({},a(n,r),{className:Object(d.d)("chakra-popover__content",e.className),__css:l})))}));l.a&&(ce.displayName="PopoverContent");var ie=Object(i.a)((function(e,r){var t=m().getHeaderProps,n=Object(c.d)();return p.createElement(u.a.header,te({},t(e,r),{className:Object(d.d)("chakra-popover__header",e.className),__css:n.header}))}));l.a&&(ie.displayName="PopoverHeader");var ue=Object(i.a)((function(e,r){var t=m().getBodyProps,n=Object(c.d)();return p.createElement(u.a.div,te({},t(e,r),{className:Object(d.d)("chakra-popover__body",e.className),__css:n.body}))}));l.a&&(ue.displayName="PopoverBody");l.a;var se=function(e){var r=m().onClose;return p.createElement(n.a,te({size:"sm",onClick:r,position:"absolute",borderRadius:"md",top:"0.25rem",insetEnd:"0.5rem",padding:"0.5rem"},e))};l.a&&(se.displayName="PopoverCloseButton");var le=function(e){var r,t=e.bg,n=e.bgColor,o=e.backgroundColor,a=m(),i=a.getArrowProps,s=a.getArrowInnerProps,l=Object(c.d)(),v=null!=(r=null!=t?t:n)?r:o;return p.createElement(u.a.div,te({},i(),{className:"chakra-popover__arrow-positioner"}),p.createElement(u.a.div,te({className:Object(d.d)("chakra-popover__arrow",e.className)},s(e),{__css:te({},l.arrow,{"--popper-arrow-bg":v?"colors."+v+", "+v:void 0})})))};l.a&&(le.displayName="PopoverArrow")}}]);
|
|
2
|
-
//# sourceMappingURL=3.2a95eb1f.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/image.tsx","../../../src/use-image.ts","../../../src/ChevronRight.tsx","../../../src/popover-context.ts","../../../src/popover-transition.tsx","../../../src/pointer-event.ts","../../../src/use-focus-on-pointerdown.ts","../../../src/user-agent.ts","../../../src/use-pointer-event.ts","../../../src/use-focus-on-show.ts","../../../src/use-popover.ts","../../../src/popover.tsx"],"names":["NativeImage","alt","width","height","ref","Image","forwardRef","crossOrigin","shouldIgnore","loading","fallbackSrc","fallback","status","props","ignoreFallback","useState","useEffect","setStatus","src","imageRef","useRef","load","useCallback","flush","img","event","onLoad","error","onError","srcSet","sizes","useSafeLayoutEffect","useImage","shared","objectFit","objectPosition","align","rest","omit","as","className","ChevronRightIcon","createIcon","d","displayName","createContext","name","errorMessage","mergeVariants","variants","mergeWith","enter","visibility","exit","transitionEnd","Section","motion","chakra","PopoverTransition","isOpen","usePopoverContext","initial","animate","opacity","scale","transition","duration","ease","isTouchEvent","defaultPagePoint","pageX","pageY","pointFromTouch","e","pointType","point","x","y","pointFromMouse","extractEventInfo","wrapPointerEventHandler","shouldFilterPrimaryPointer","eventHandler","listener","handler","isMouseEvent","getEventWindow","mouseEventNames","pointerdown","pointermove","pointerup","pointercancel","pointerover","pointerout","pointerenter","pointerleave","touchEventNames","getPointerEventName","isBrowser","window","useFocusOnPointerDown","browser","enabled","isSafari","navigator","userAgent","vendor","android","test","ua","getUserAgentBrowser","getOwnerDocument","target","isValidTarget","elements","elementOrRef","el","isRefObject","contains","isActiveElement","focus","useEventListener","eventName","defaultOptions","preventScroll","shouldFocus","TRIGGER","usePopover","closeOnBlur","closeOnEsc","returnFocusOnClose","autoFocus","trigger","openDelay","closeDelay","lazyBehavior","computePositionOnMount","useDisclosure","onToggle","triggerRef","popoverRef","isHoveringRef","hasBeenOpened","useIds","usePopper","forceUpdate","useFocusOnHide","focusRef","visible","options","element","onFocus","document","nextTick","tabbableEls","getAllFocusable","useUpdateEffect","useFocusOnShow","shouldRenderChildren","determineLazyBehavior","hasBeenSelected","isLazy","isSelected","getPopoverProps","_ref","popoverProps","style","transformOrigin","popperCSSVars","arrowSize","px","arrowShadowColor","mergeRefs","children","id","tabIndex","role","onKeyDown","callAllHandlers","onClose","onBlur","relatedTarget","getRelatedTarget","targetIsPopover","targetIsTrigger","hasHeader","headerId","hasBody","bodyId","undefined","setTimeout","getPopoverPositionerProps","forwardedRef","getPopperProps","openTimeout","closeTimeout","getTriggerProps","triggerProps","popoverId","clearTimeout","getHeaderProps","node","setHasHeader","getBodyProps","setHasBody","getArrowProps","getArrowInnerProps","Popover","styles","useMultiStyleConfig","omitThemingProps","context","direction","useTheme","value","runIfFn","PopoverTrigger","child","React","PopoverContent","rootProps","useStyles","contentStyles","position","display","flexDirection","__css","contentProps","cx","PopoverHeader","header","PopoverBody","body","PopoverCloseButton","size","onClick","borderRadius","top","insetEnd","padding","PopoverArrow","backgroundColor","arrowBg","bg"],"mappings":"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","file":"static/js/3.2a95eb1f.chunk.js","sourcesContent":["import {\n chakra,\n PropsOf,\n SystemProps,\n forwardRef,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { omit, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\nimport { useImage, UseImageProps } from \"./use-image\"\n\ninterface NativeImageOptions {\n /**\n * The native HTML `width` attribute to the passed to the `img`\n */\n htmlWidth?: string | number\n /**\n * The native HTML `height` attribute to the passed to the `img`\n */\n htmlHeight?: string | number\n}\n\ninterface NativeImageProps extends PropsOf<\"img\">, NativeImageOptions {}\n\nconst NativeImage = React.forwardRef(\n (props: NativeImageProps, ref: React.Ref<any>) => {\n const { htmlWidth, htmlHeight, alt, ...rest } = props\n return (\n <img\n width={htmlWidth}\n height={htmlHeight}\n ref={ref}\n alt={alt}\n {...rest}\n />\n )\n },\n)\n\ninterface ImageOptions extends NativeImageOptions {\n /**\n * Fallback image `src` to show if image is loading or image fails.\n *\n * Note 🚨: We recommend you use a local image\n */\n fallbackSrc?: string\n /**\n * Fallback element to show if image is loading or image fails.\n * @type React.ReactElement\n */\n fallback?: React.ReactElement\n /**\n * Defines loading strategy\n */\n loading?: \"eager\" | \"lazy\"\n /**\n * How the image to fit within its bounds.\n * It maps to css `object-fit` property.\n * @type SystemProps[\"objectFit\"]\n */\n fit?: SystemProps[\"objectFit\"]\n /**\n * How to align the image within its bounds.\n * It maps to css `object-position` property.\n * @type SystemProps[\"objectPosition\"]\n */\n align?: SystemProps[\"objectPosition\"]\n /**\n * If `true`, opt out of the `fallbackSrc` logic and use as `img`\n */\n ignoreFallback?: boolean\n}\n\nexport interface ImageProps\n extends UseImageProps,\n Omit<HTMLChakraProps<\"img\">, keyof UseImageProps>,\n ImageOptions {}\n\n/**\n * React component that renders an image with support\n * for fallbacks\n *\n * @see Docs https://chakra-ui.com/image\n */\nexport const Image = forwardRef<ImageProps, \"img\">((props, ref) => {\n const {\n fallbackSrc,\n fallback,\n src,\n srcSet,\n align,\n fit,\n loading,\n ignoreFallback,\n crossOrigin,\n ...rest\n } = props\n\n /**\n * Defer to native `img` tag if `loading` prop is passed\n * @see https://github.com/chakra-ui/chakra-ui/issues/1027\n */\n const shouldIgnore =\n loading != null ||\n ignoreFallback ||\n (fallbackSrc === undefined && fallback === undefined) // if the user doesn't provide any kind of fallback we should ignore it\n\n const status = useImage({\n ...props,\n ignoreFallback: shouldIgnore,\n })\n\n const shared = {\n ref,\n objectFit: fit,\n objectPosition: align,\n ...(shouldIgnore ? rest : omit(rest, [\"onError\", \"onLoad\"])),\n }\n\n if (status !== \"loaded\") {\n /**\n * If user passed a custom fallback component,\n * let's render it here.\n */\n if (fallback) return fallback\n\n return (\n <chakra.img\n as={NativeImage}\n className=\"chakra-image__placeholder\"\n src={fallbackSrc}\n {...shared}\n />\n )\n }\n\n return (\n <chakra.img\n as={NativeImage}\n src={src}\n srcSet={srcSet}\n crossOrigin={crossOrigin}\n loading={loading}\n className=\"chakra-image\"\n {...shared}\n />\n )\n})\n\nexport interface ImgProps extends HTMLChakraProps<\"img\">, NativeImageOptions {}\n\n/**\n * Fallback component for most SSR users who want to use the native `img` with\n * support for chakra props\n */\nexport const Img = forwardRef<ImgProps, \"img\">((props, ref) => (\n <chakra.img ref={ref} as={NativeImage} className=\"chakra-image\" {...props} />\n))\n\nif (__DEV__) {\n Image.displayName = \"Image\"\n}\n","import { useSafeLayoutEffect } from \"@chakra-ui/hooks\"\nimport {\n ImgHTMLAttributes,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\"\n\ntype NativeImageProps = ImgHTMLAttributes<HTMLImageElement>\n\nexport interface UseImageProps {\n /**\n * The image `src` attribute\n */\n src?: string\n /**\n * The image `srcset` attribute\n */\n srcSet?: string\n /**\n * The image `sizes` attribute\n */\n sizes?: string\n /**\n * A callback for when the image `src` has been loaded\n */\n onLoad?: NativeImageProps[\"onLoad\"]\n /**\n * A callback for when there was an error loading the image `src`\n */\n onError?: NativeImageProps[\"onError\"]\n /**\n * If `true`, opt out of the `fallbackSrc` logic and use as `img`\n */\n ignoreFallback?: boolean\n /**\n * The key used to set the crossOrigin on the HTMLImageElement into which the image will be loaded.\n * This tells the browser to request cross-origin access when trying to download the image data.\n */\n crossOrigin?: NativeImageProps[\"crossOrigin\"]\n loading?: NativeImageProps[\"loading\"]\n}\n\ntype Status = \"loading\" | \"failed\" | \"pending\" | \"loaded\"\n\ntype ImageEvent = React.SyntheticEvent<HTMLImageElement, Event>\n\n/**\n * React hook that loads an image in the browser,\n * and let's us know the `status` so we can show image\n * fallback if it is still `pending`\n *\n * @returns the status of the image loading progress\n *\n * @example\n *\n * ```jsx\n * function App(){\n * const status = useImage({ src: \"image.png\" })\n * return status === \"loaded\" ? <img src=\"image.png\" /> : <Placeholder />\n * }\n * ```\n */\nexport function useImage(props: UseImageProps) {\n const {\n loading,\n src,\n srcSet,\n onLoad,\n onError,\n crossOrigin,\n sizes,\n ignoreFallback,\n } = props\n\n const [status, setStatus] = useState<Status>(\"pending\")\n\n useEffect(() => {\n setStatus(src ? \"loading\" : \"pending\")\n }, [src])\n\n const imageRef = useRef<HTMLImageElement | null>()\n\n const load = useCallback(() => {\n if (!src) return\n\n flush()\n\n const img = new Image()\n img.src = src\n if (crossOrigin) img.crossOrigin = crossOrigin\n if (srcSet) img.srcset = srcSet\n if (sizes) img.sizes = sizes\n if (loading) img.loading = loading\n\n img.onload = (event) => {\n flush()\n setStatus(\"loaded\")\n onLoad?.((event as unknown) as ImageEvent)\n }\n img.onerror = (error) => {\n flush()\n setStatus(\"failed\")\n onError?.(error as any)\n }\n\n imageRef.current = img\n }, [src, crossOrigin, srcSet, sizes, onLoad, onError, loading])\n\n const flush = () => {\n if (imageRef.current) {\n imageRef.current.onload = null\n imageRef.current.onerror = null\n imageRef.current = null\n }\n }\n\n useSafeLayoutEffect(() => {\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's bail out.\n */\n if (ignoreFallback) return undefined\n\n if (status === \"loading\") {\n load()\n }\n return () => {\n flush()\n }\n }, [status, load, ignoreFallback])\n\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's just return 'loaded'\n */\n return ignoreFallback ? \"loaded\" : status\n}\n\nexport type UseImageReturn = ReturnType<typeof useImage>\n","import { createIcon } from \"@chakra-ui/icon\"\n\nexport const ChevronRightIcon = createIcon({\n d: \"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\",\n displayName: \"ChevronRightIcon\",\n})\n","import { createContext } from \"@chakra-ui/react-utils\"\nimport { UsePopoverReturn } from \"./use-popover\"\n\nexport const [\n PopoverProvider,\n usePopoverContext,\n] = createContext<UsePopoverReturn>({\n name: \"PopoverContext\",\n errorMessage:\n \"usePopoverContext: `context` is undefined. Seems you forgot to wrap all popover components within `<Popover />`\",\n})\n","import { chakra, HTMLChakraProps } from \"@chakra-ui/system\"\nimport { HTMLMotionProps, motion, Variant } from \"framer-motion\"\nimport { mergeWith } from \"@chakra-ui/utils\"\nimport React from \"react\"\nimport { usePopoverContext } from \"./popover-context\"\n\n// TODO: consider moving this to some util\ntype HTMLMotionChakraProps<T extends keyof React.ReactHTML> = Omit<\n HTMLChakraProps<T>,\n keyof HTMLMotionProps<T>\n> &\n Omit<\n HTMLMotionProps<T>,\n | \"style\"\n | \"onDrag\"\n | \"onDragEnd\"\n | \"onDragStart\"\n | \"onAnimationStart\"\n | \"variants\"\n > & {\n variants?: MotionVariants\n }\n\ntype MotionVariants = Partial<Record<\"enter\" | \"exit\", Variant>>\n\nconst mergeVariants = (variants?: MotionVariants) => {\n if (!variants) return\n return mergeWith(variants, {\n enter: {\n visibility: \"visible\",\n },\n exit: {\n transitionEnd: {\n visibility: \"hidden\",\n },\n },\n })\n}\n\nconst scaleFade: MotionVariants = {\n exit: {\n opacity: 0,\n scale: 0.95,\n transition: {\n duration: 0.1,\n ease: [0.4, 0, 1, 1],\n },\n },\n enter: {\n scale: 1,\n opacity: 1,\n transition: {\n duration: 0.15,\n ease: [0, 0, 0.2, 1],\n },\n },\n}\n\nconst Section = motion(chakra.section)\n\nexport interface PopoverTransitionProps\n extends HTMLMotionChakraProps<\"section\"> {}\n\nexport const PopoverTransition = React.forwardRef(\n (props: HTMLMotionChakraProps<\"section\">, ref: React.Ref<any>) => {\n const { isOpen } = usePopoverContext()\n return (\n <Section\n ref={ref}\n variants={mergeVariants(props.variants)}\n {...props}\n initial={false}\n animate={isOpen ? \"enter\" : \"exit\"}\n />\n )\n },\n)\n\nPopoverTransition.defaultProps = {\n variants: scaleFade,\n}\n","/**\n * Credit goes to `framer-motion` of this useful utilities.\n * License can be found here: https://github.com/framer/motion\n */\n\nimport { addDomEvent, getEventWindow, isBrowser } from \"./dom\"\n\nexport type AnyPointerEvent = MouseEvent | TouchEvent | PointerEvent\n\ntype PointType = \"page\" | \"client\"\n\nexport function isMouseEvent(event: AnyPointerEvent): event is MouseEvent {\n const win = getEventWindow(event)\n\n // PointerEvent inherits from MouseEvent so we can't use a straight instanceof check.\n if (\n typeof win.PointerEvent !== \"undefined\" &&\n event instanceof win.PointerEvent\n ) {\n return !!(event.pointerType === \"mouse\")\n }\n\n return event instanceof win.MouseEvent\n}\n\nexport function isTouchEvent(event: AnyPointerEvent): event is TouchEvent {\n const hasTouches = !!(event as TouchEvent).touches\n return hasTouches\n}\n\nexport interface Point {\n x: number\n y: number\n}\n\nexport interface PointerEventInfo {\n point: Point\n}\n\nexport type EventHandler = (\n event: AnyPointerEvent,\n info: PointerEventInfo,\n) => void\n\n/**\n * Filters out events not attached to the primary pointer (currently left mouse button)\n * @param eventHandler\n */\nfunction filterPrimaryPointer(eventHandler: EventListener): EventListener {\n return (event: Event) => {\n const win = getEventWindow(event)\n const isMouseEvent = event instanceof win.MouseEvent\n const isPrimaryPointer =\n !isMouseEvent || (isMouseEvent && (event as MouseEvent).button === 0)\n if (isPrimaryPointer) {\n eventHandler(event)\n }\n }\n}\n\nexport type EventListenerWithPointInfo = (\n e: AnyPointerEvent,\n info: PointerEventInfo,\n) => void\n\nconst defaultPagePoint = { pageX: 0, pageY: 0 }\n\nfunction pointFromTouch(e: TouchEvent, pointType: PointType = \"page\") {\n const primaryTouch = e.touches[0] || e.changedTouches[0]\n const point = primaryTouch || defaultPagePoint\n\n return {\n x: point[`${pointType}X`],\n y: point[`${pointType}Y`],\n }\n}\n\nfunction pointFromMouse(\n point: MouseEvent | PointerEvent,\n pointType: PointType = \"page\",\n) {\n return {\n x: point[`${pointType}X`],\n y: point[`${pointType}Y`],\n }\n}\n\nexport function extractEventInfo(\n event: AnyPointerEvent,\n pointType: PointType = \"page\",\n): PointerEventInfo {\n return {\n point: isTouchEvent(event)\n ? pointFromTouch(event, pointType)\n : pointFromMouse(event, pointType),\n }\n}\n\nexport function getViewportPointFromEvent(event: AnyPointerEvent) {\n return extractEventInfo(event, \"client\")\n}\n\nexport const wrapPointerEventHandler = (\n handler: EventListenerWithPointInfo,\n shouldFilterPrimaryPointer = false,\n): EventListener => {\n const listener: EventListener = (event: any) =>\n handler(event, extractEventInfo(event))\n\n return shouldFilterPrimaryPointer ? filterPrimaryPointer(listener) : listener\n}\n\n// We check for event support via functions in case they've been mocked by a testing suite.\nconst supportsPointerEvents = () => isBrowser && window.onpointerdown === null\nconst supportsTouchEvents = () => isBrowser && window.ontouchstart === null\nconst supportsMouseEvents = () => isBrowser && window.onmousedown === null\n\ninterface PointerNameMap {\n pointerdown: string\n pointermove: string\n pointerup: string\n pointercancel: string\n pointerover?: string\n pointerout?: string\n pointerenter?: string\n pointerleave?: string\n}\n\nconst mouseEventNames: PointerNameMap = {\n pointerdown: \"mousedown\",\n pointermove: \"mousemove\",\n pointerup: \"mouseup\",\n pointercancel: \"mousecancel\",\n pointerover: \"mouseover\",\n pointerout: \"mouseout\",\n pointerenter: \"mouseenter\",\n pointerleave: \"mouseleave\",\n}\n\nconst touchEventNames: PointerNameMap = {\n pointerdown: \"touchstart\",\n pointermove: \"touchmove\",\n pointerup: \"touchend\",\n pointercancel: \"touchcancel\",\n}\n\nexport function getPointerEventName(name: string): string {\n if (supportsPointerEvents()) {\n return name\n }\n if (supportsTouchEvents()) {\n return touchEventNames[name]\n }\n if (supportsMouseEvents()) {\n return mouseEventNames[name]\n }\n\n return name\n}\n\nexport function addPointerEvent(\n target: EventTarget,\n eventName: string,\n handler: EventListenerWithPointInfo,\n options?: AddEventListenerOptions,\n) {\n return addDomEvent(\n target,\n getPointerEventName(eventName),\n wrapPointerEventHandler(handler, eventName === \"pointerdown\"),\n options,\n )\n}\n\nexport function isMultiTouchEvent(event: AnyPointerEvent) {\n return isTouchEvent(event) && event.touches.length > 1\n}\n","import {\n contains,\n detectBrowser,\n focus,\n getOwnerDocument,\n isActiveElement,\n isRefObject,\n} from \"@chakra-ui/utils\"\nimport { RefObject } from \"react\"\nimport { usePointerEvent } from \"./use-pointer-event\"\n\nexport interface UseFocusOnMouseDownProps {\n enabled?: boolean\n ref: RefObject<HTMLElement>\n elements?: Array<RefObject<HTMLElement> | HTMLElement | null>\n}\n\n/**\n * Polyfill to get `relatedTarget` working correctly consistently\n * across all browsers.\n *\n * It ensures that elements receives focus on pointer down if\n * it's not the active active element.\n *\n * @internal\n */\nexport function useFocusOnPointerDown(props: UseFocusOnMouseDownProps) {\n const { ref, elements, enabled } = props\n\n const isSafari = detectBrowser(\"Safari\")\n const doc = () => getOwnerDocument(ref.current)\n\n usePointerEvent(doc, \"pointerdown\", (event) => {\n if (!isSafari || !enabled) return\n const target = event.target as HTMLElement\n\n const els = elements ?? [ref]\n const isValidTarget = els.some((elementOrRef) => {\n const el = isRefObject(elementOrRef) ? elementOrRef.current : elementOrRef\n return contains(el, target)\n })\n\n if (!isActiveElement(target) && isValidTarget) {\n event.preventDefault()\n focus(target)\n }\n })\n}\n","import { isBrowser } from \"./dom\"\n\nfunction getUserAgentBrowser(navigator: Navigator) {\n const { userAgent: ua, vendor } = navigator\n const android = /(android)/i.test(ua)\n\n switch (true) {\n case /CriOS/.test(ua):\n return \"Chrome for iOS\"\n case /Edg\\//.test(ua):\n return \"Edge\"\n case android && /Silk\\//.test(ua):\n return \"Silk\"\n case /Chrome/.test(ua) && /Google Inc/.test(vendor):\n return \"Chrome\"\n case /Firefox\\/\\d+\\.\\d+$/.test(ua):\n return \"Firefox\"\n case android:\n return \"AOSP\"\n case /MSIE|Trident/.test(ua):\n return \"IE\"\n case /Safari/.test(navigator.userAgent) && /Apple Computer/.test(ua):\n return \"Safari\"\n case /AppleWebKit/.test(ua):\n return \"WebKit\"\n default:\n return null\n }\n}\n\nexport type UserAgentBrowser = NonNullable<\n ReturnType<typeof getUserAgentBrowser>\n>\n\nfunction getUserAgentOS(navigator: Navigator) {\n const { userAgent: ua, platform } = navigator\n switch (true) {\n case /Android/.test(ua):\n return \"Android\"\n case /iPhone|iPad|iPod/.test(platform):\n return \"iOS\"\n case /Win/.test(platform):\n return \"Windows\"\n case /Mac/.test(platform):\n return \"Mac\"\n case /CrOS/.test(ua):\n return \"Chrome OS\"\n case /Firefox/.test(ua):\n return \"Firefox OS\"\n default:\n return null\n }\n}\n\nexport type UserAgentOS = NonNullable<ReturnType<typeof getUserAgentOS>>\n\nexport function detectDeviceType(navigator: Navigator) {\n const { userAgent: ua } = navigator\n if (/(tablet)|(iPad)|(Nexus 9)/i.test(ua)) return \"tablet\"\n if (/(mobi)/i.test(ua)) return \"phone\"\n return \"desktop\"\n}\n\nexport type UserAgentDeviceType = NonNullable<\n ReturnType<typeof detectDeviceType>\n>\n\nexport function detectOS(os: UserAgentOS) {\n if (!isBrowser) return false\n return getUserAgentOS(window.navigator) === os\n}\n\nexport function detectBrowser(browser: UserAgentBrowser) {\n if (!isBrowser) return false\n return getUserAgentBrowser(window.navigator) === browser\n}\n\nexport function detectTouch() {\n if (!isBrowser) return false\n return (\n window.ontouchstart === null &&\n window.ontouchmove === null &&\n window.ontouchend === null\n )\n}\n","/**\n * Credit goes to `framer-motion` of this useful utilities.\n * License can be found here: https://github.com/framer/motion\n */\n\nimport {\n EventListenerWithPointInfo,\n getPointerEventName,\n wrapPointerEventHandler,\n} from \"@chakra-ui/utils\"\nimport { EventListenerEnv, useEventListener } from \"./use-event-listener\"\n\n/**\n * @internal\n */\nexport function usePointerEvent(\n env: EventListenerEnv,\n eventName: string,\n handler: EventListenerWithPointInfo,\n options?: AddEventListenerOptions,\n) {\n return useEventListener(\n getPointerEventName(eventName),\n wrapPointerEventHandler(handler, eventName === \"pointerdown\"),\n env,\n options,\n )\n}\n","import {\n contains,\n focus,\n FocusableElement,\n getAllFocusable,\n isRefObject,\n} from \"@chakra-ui/utils\"\nimport React, { useCallback } from \"react\"\nimport { useEventListener } from \"./use-event-listener\"\nimport { useUpdateEffect } from \"./use-update-effect\"\n\nexport interface UseFocusOnShowOptions {\n visible?: boolean\n shouldFocus?: boolean\n preventScroll?: boolean\n focusRef?: React.RefObject<FocusableElement>\n}\n\nconst defaultOptions: UseFocusOnShowOptions = {\n preventScroll: true,\n shouldFocus: false,\n}\n\nexport function useFocusOnShow<T extends HTMLElement>(\n target: React.RefObject<T> | T,\n options = defaultOptions,\n) {\n const { focusRef, preventScroll, shouldFocus, visible } = options\n const element = isRefObject(target) ? target.current : target\n\n const autoFocus = shouldFocus && visible\n\n const onFocus = useCallback(() => {\n if (!element || !autoFocus) return\n\n if (contains(element, document.activeElement as HTMLElement)) return\n\n if (focusRef?.current) {\n focus(focusRef.current, { preventScroll, nextTick: true })\n } else {\n const tabbableEls = getAllFocusable(element)\n if (tabbableEls.length > 0) {\n focus(tabbableEls[0], { preventScroll, nextTick: true })\n }\n }\n }, [autoFocus, preventScroll, element, focusRef])\n\n useUpdateEffect(() => {\n onFocus()\n }, [onFocus])\n\n useEventListener(\"transitionend\", onFocus, element)\n}\n","import {\n useDisclosure,\n useFocusOnHide,\n useFocusOnPointerDown,\n useFocusOnShow,\n useIds,\n} from \"@chakra-ui/hooks\"\nimport { popperCSSVars, usePopper, UsePopperProps } from \"@chakra-ui/popper\"\nimport { HTMLProps, mergeRefs, PropGetter } from \"@chakra-ui/react-utils\"\nimport {\n callAllHandlers,\n contains,\n determineLazyBehavior,\n FocusableElement,\n getRelatedTarget,\n LazyBehavior,\n px,\n} from \"@chakra-ui/utils\"\nimport { RefObject, useCallback, useEffect, useRef, useState } from \"react\"\n\nconst TRIGGER = {\n click: \"click\",\n hover: \"hover\",\n} as const\n\nexport interface UsePopoverProps extends UsePopperProps {\n /**\n * The html `id` attribute of the popover.\n * If not provided, we generate a unique id.\n *\n * This `id` is also used to auto-generate the `aria-labelledby`\n * and `aria-decribedby` attributes that points to the `PopoverHeader` and `PopoverBody`\n */\n id?: string\n /**\n * If `true`, the popover will be opened in controlled mode.\n */\n isOpen?: boolean\n /**\n * If `true`, the popover will be initially opened.\n */\n defaultIsOpen?: boolean\n /**\n * The `ref` of the element that should receive focus when the popover opens.\n */\n initialFocusRef?: RefObject<FocusableElement>\n /**\n * If `true`, focus will be returned to the element that triggers the popover\n * when it closes\n */\n returnFocusOnClose?: boolean\n /**\n * If `true`, focus will be transferred to the first interactive element\n * when the popover opens\n */\n autoFocus?: boolean\n /**\n * If `true`, the popover will close when you blur out it by\n * clicking outside or tabbing out\n */\n closeOnBlur?: boolean\n /**\n * If `true`, the popover will close when you hit the `Esc` key\n */\n closeOnEsc?: boolean\n /**\n * Callback fired when the popover opens\n */\n onOpen?: () => void\n /**\n * Callback fired when the popover closes\n */\n onClose?: () => void\n /**\n * The size of the popover arrow\n */\n arrowSize?: number\n /**\n * The `box-shadow` of the popover arrow\n */\n arrowShadowColor?: string\n /**\n * The interaction that triggers the popover.\n *\n * `hover` - means the popover will open when you hover with mouse or\n * focus with keyboard on the popover trigger\n *\n * `click` - means the popover will open on click or\n * press `Enter` to `Space` on keyboard\n */\n trigger?: keyof typeof TRIGGER\n openDelay?: number\n closeDelay?: number\n /**\n * Performance 🚀:\n * If `true`, the PopoverContent rendering will be deferred\n * until the popover is open.\n */\n isLazy?: boolean\n /**\n * Performance 🚀:\n * The lazy behavior of popover's content when not visible.\n * Only works when `isLazy={true}`\n *\n * - \"unmount\": The popover's content is always unmounted when not open.\n * - \"keepMounted\": The popover's content initially unmounted,\n * but stays mounted when popover is open.\n *\n * @default \"unmount\"\n */\n lazyBehavior?: LazyBehavior\n /**\n * If `true`, the popover will be positioned when it mounts\n * (even if it's not open)\n *\n * Note 🚨: We don't recommend using this in a popover/menu intensive UI or page\n * as it might affect scrolling performance.\n */\n computePositionOnMount?: boolean\n}\n\n/**\n * @internal\n */\nexport function usePopover(props: UsePopoverProps = {}) {\n const {\n closeOnBlur = true,\n closeOnEsc = true,\n initialFocusRef,\n id,\n returnFocusOnClose = true,\n autoFocus = true,\n arrowSize,\n arrowShadowColor,\n trigger = TRIGGER.click,\n openDelay = 200,\n closeDelay = 200,\n isLazy,\n lazyBehavior = \"unmount\",\n computePositionOnMount,\n ...popperProps\n } = props\n\n const { isOpen, onClose, onOpen, onToggle } = useDisclosure(props)\n\n const triggerRef = useRef<HTMLElement>(null)\n const popoverRef = useRef<HTMLElement>(null)\n\n const isHoveringRef = useRef(false)\n\n const hasBeenOpened = useRef(false)\n if (isOpen) {\n hasBeenOpened.current = true\n }\n\n const [hasHeader, setHasHeader] = useState(false)\n const [hasBody, setHasBody] = useState(false)\n\n const [triggerId, popoverId, headerId, bodyId] = useIds(\n id,\n \"popover-trigger\",\n \"popover-content\",\n \"popover-header\",\n \"popover-body\",\n )\n\n const {\n referenceRef,\n getArrowProps,\n getPopperProps,\n getArrowInnerProps,\n forceUpdate,\n } = usePopper({\n ...popperProps,\n enabled: isOpen || computePositionOnMount,\n })\n\n useFocusOnPointerDown({\n enabled: isOpen,\n ref: triggerRef,\n })\n\n useFocusOnHide(popoverRef, {\n focusRef: triggerRef,\n visible: isOpen,\n shouldFocus: returnFocusOnClose && trigger === TRIGGER.click,\n })\n\n useFocusOnShow(popoverRef, {\n focusRef: initialFocusRef,\n visible: isOpen,\n shouldFocus: autoFocus && trigger === TRIGGER.click,\n })\n\n const shouldRenderChildren = determineLazyBehavior({\n hasBeenSelected: hasBeenOpened.current,\n isLazy,\n lazyBehavior,\n isSelected: isOpen,\n })\n\n const getPopoverProps: PropGetter = useCallback(\n (props = {}, _ref = null) => {\n const popoverProps: HTMLProps = {\n ...props,\n style: {\n ...props.style,\n transformOrigin: popperCSSVars.transformOrigin.varRef,\n [popperCSSVars.arrowSize.var]: arrowSize ? px(arrowSize) : undefined,\n [popperCSSVars.arrowShadowColor.var]: arrowShadowColor,\n },\n ref: mergeRefs(popoverRef, _ref),\n children: shouldRenderChildren ? props.children : null,\n id: popoverId,\n tabIndex: -1,\n role: \"dialog\",\n onKeyDown: callAllHandlers(props.onKeyDown, (event) => {\n if (closeOnEsc && event.key === \"Escape\") {\n onClose()\n }\n }),\n onBlur: callAllHandlers(props.onBlur, (event) => {\n const relatedTarget = getRelatedTarget(event)\n const targetIsPopover = contains(popoverRef.current, relatedTarget)\n const targetIsTrigger = contains(triggerRef.current, relatedTarget)\n const isValidBlur = !targetIsPopover && !targetIsTrigger\n\n if (isOpen && closeOnBlur && isValidBlur) {\n onClose()\n }\n }),\n \"aria-labelledby\": hasHeader ? headerId : undefined,\n \"aria-describedby\": hasBody ? bodyId : undefined,\n }\n\n if (trigger === TRIGGER.hover) {\n popoverProps.role = \"tooltip\"\n popoverProps.onMouseEnter = callAllHandlers(props.onMouseEnter, () => {\n isHoveringRef.current = true\n })\n popoverProps.onMouseLeave = callAllHandlers(props.onMouseLeave, () => {\n isHoveringRef.current = false\n setTimeout(onClose, closeDelay)\n })\n }\n\n return popoverProps\n },\n [\n shouldRenderChildren,\n popoverId,\n hasHeader,\n headerId,\n hasBody,\n bodyId,\n trigger,\n closeOnEsc,\n onClose,\n isOpen,\n closeOnBlur,\n closeDelay,\n arrowShadowColor,\n arrowSize,\n ],\n )\n\n const getPopoverPositionerProps: PropGetter = useCallback(\n (props = {}, forwardedRef = null) =>\n getPopperProps(\n {\n ...props,\n style: {\n visibility: isOpen ? \"visible\" : \"hidden\",\n ...props.style,\n },\n },\n forwardedRef,\n ),\n [isOpen, getPopperProps],\n )\n\n const openTimeout = useRef<number>()\n const closeTimeout = useRef<number>()\n\n const getTriggerProps: PropGetter = useCallback(\n (props = {}, _ref = null) => {\n const triggerProps: HTMLProps = {\n ...props,\n ref: mergeRefs(triggerRef, _ref, referenceRef),\n id: triggerId,\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": isOpen,\n \"aria-controls\": popoverId,\n }\n\n if (trigger === TRIGGER.click) {\n triggerProps.onClick = callAllHandlers(props.onClick, onToggle)\n }\n\n if (trigger === TRIGGER.hover) {\n /**\n * Any content that shows on pointer hover should also show on keyboard focus.\n * Consider focus and blur to be the `hover` for keyboard users.\n *\n * @see https://www.w3.org/WAI/WCAG21/Understanding/content-on-hover-or-focus.html\n */\n triggerProps.onFocus = callAllHandlers(props.onFocus, onOpen)\n triggerProps.onBlur = callAllHandlers(props.onBlur, onClose)\n\n /**\n * Any content that shows on hover or focus must be dismissible.\n * This case pressing `Escape` will dismiss the popover\n */\n triggerProps.onKeyDown = callAllHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Escape\") {\n onClose()\n }\n })\n\n triggerProps.onMouseEnter = callAllHandlers(props.onMouseEnter, () => {\n isHoveringRef.current = true\n openTimeout.current = window.setTimeout(onOpen, openDelay)\n })\n\n triggerProps.onMouseLeave = callAllHandlers(props.onMouseLeave, () => {\n isHoveringRef.current = false\n\n if (openTimeout.current) {\n clearTimeout(openTimeout.current)\n openTimeout.current = undefined\n }\n\n closeTimeout.current = window.setTimeout(() => {\n if (isHoveringRef.current === false) {\n onClose()\n }\n }, closeDelay)\n })\n }\n\n return triggerProps\n },\n [\n triggerId,\n isOpen,\n popoverId,\n trigger,\n referenceRef,\n onToggle,\n onOpen,\n onClose,\n openDelay,\n closeDelay,\n ],\n )\n\n useEffect(() => {\n return () => {\n if (openTimeout.current) {\n clearTimeout(openTimeout.current)\n }\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current)\n }\n }\n }, [])\n\n const getHeaderProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...props,\n id: headerId,\n ref: mergeRefs(ref, (node: HTMLElement | null) => {\n setHasHeader(!!node)\n }),\n }),\n [headerId],\n )\n\n const getBodyProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...props,\n id: bodyId,\n ref: mergeRefs(ref, (node) => {\n setHasBody(!!node)\n }),\n }),\n [bodyId],\n )\n\n return {\n forceUpdate,\n isOpen,\n onClose,\n getArrowProps,\n getArrowInnerProps,\n getPopoverPositionerProps,\n getPopoverProps,\n getTriggerProps,\n getHeaderProps,\n getBodyProps,\n }\n}\n\nexport type UsePopoverReturn = ReturnType<typeof usePopover>\n","import { CloseButton, CloseButtonProps } from \"@chakra-ui/close-button\"\nimport { MaybeRenderProp } from \"@chakra-ui/react-utils\"\nimport {\n chakra,\n forwardRef,\n HTMLChakraProps,\n omitThemingProps,\n StylesProvider,\n SystemStyleObject,\n ThemingProps,\n useMultiStyleConfig,\n useStyles,\n useTheme,\n} from \"@chakra-ui/system\"\nimport { cx, runIfFn, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\nimport { PopoverProvider, usePopoverContext } from \"./popover-context\"\nimport { PopoverTransition, PopoverTransitionProps } from \"./popover-transition\"\nimport { usePopover, UsePopoverProps } from \"./use-popover\"\n\nexport { usePopoverContext }\n\nexport interface PopoverProps extends UsePopoverProps, ThemingProps<\"Popover\"> {\n /**\n * The content of the popover. It is usually the `PopoverTrigger`,\n * and `PopoverContent`\n */\n children?: MaybeRenderProp<{\n isOpen: boolean\n onClose: () => void\n forceUpdate: (() => void) | undefined\n }>\n}\n\n/**\n * Popover is used to bring attention to specific user interface elements,\n * typically to suggest an action or to guide users through a new experience.\n */\nexport const Popover: React.FC<PopoverProps> = (props) => {\n const styles = useMultiStyleConfig(\"Popover\", props)\n\n const { children, ...rest } = omitThemingProps(props)\n const theme = useTheme()\n const context = usePopover({ ...rest, direction: theme.direction })\n\n return (\n <PopoverProvider value={context}>\n <StylesProvider value={styles}>\n {runIfFn(children, {\n isOpen: context.isOpen,\n onClose: context.onClose,\n forceUpdate: context.forceUpdate,\n })}\n </StylesProvider>\n </PopoverProvider>\n )\n}\n\nif (__DEV__) {\n Popover.displayName = \"Popover\"\n}\n\n/**\n * PopoverTrigger opens the popover's content. It must be an interactive element\n * such as `button` or `a`.\n */\nexport const PopoverTrigger: React.FC = (props) => {\n // enforce a single child\n const child: any = React.Children.only(props.children)\n const { getTriggerProps } = usePopoverContext()\n return React.cloneElement(child, getTriggerProps(child.props, child.ref))\n}\n\nif (__DEV__) {\n PopoverTrigger.displayName = \"PopoverTrigger\"\n}\n\nexport interface PopoverContentProps extends PopoverTransitionProps {\n rootProps?: HTMLChakraProps<\"div\">\n}\n\nexport const PopoverContent = forwardRef<PopoverContentProps, \"section\">(\n (props, ref) => {\n const { rootProps, ...contentProps } = props\n\n const { getPopoverProps, getPopoverPositionerProps } = usePopoverContext()\n\n const styles = useStyles()\n const contentStyles: SystemStyleObject = {\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n ...styles.content,\n }\n\n return (\n <chakra.div\n {...getPopoverPositionerProps(rootProps)}\n __css={styles.popper}\n className=\"chakra-popover__popper\"\n >\n <PopoverTransition\n {...getPopoverProps(contentProps, ref)}\n className={cx(\"chakra-popover__content\", props.className)}\n __css={contentStyles}\n />\n </chakra.div>\n )\n },\n)\n\nif (__DEV__) {\n PopoverContent.displayName = \"PopoverContent\"\n}\n\nexport interface PopoverHeaderProps extends HTMLChakraProps<\"header\"> {}\n\n/**\n * PopoverHeader is the accessible header or label\n * for the popover's content and it is first announced by screenreaders.\n */\nexport const PopoverHeader = forwardRef<PopoverHeaderProps, \"header\">(\n (props, ref) => {\n const { getHeaderProps } = usePopoverContext()\n\n const styles = useStyles()\n\n return (\n <chakra.header\n {...getHeaderProps(props, ref)}\n className={cx(\"chakra-popover__header\", props.className)}\n __css={styles.header}\n />\n )\n },\n)\n\nif (__DEV__) {\n PopoverHeader.displayName = \"PopoverHeader\"\n}\n\nexport interface PopoverBodyProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * PopoverBody is the main content area for the popover. Should contain\n * at least one interactive element.\n */\nexport const PopoverBody = forwardRef<PopoverBodyProps, \"div\">((props, ref) => {\n const { getBodyProps } = usePopoverContext()\n\n const styles = useStyles()\n\n return (\n <chakra.div\n {...getBodyProps(props, ref)}\n className={cx(\"chakra-popover__body\", props.className)}\n __css={styles.body}\n />\n )\n})\n\nif (__DEV__) {\n PopoverBody.displayName = \"PopoverBody\"\n}\nexport interface PopoverFooterProps extends HTMLChakraProps<\"footer\"> {}\n\nexport const PopoverFooter: React.FC<PopoverFooterProps> = (props) => {\n const styles = useStyles()\n return (\n <chakra.footer\n {...props}\n className={cx(\"chakra-popover__footer\", props.className)}\n __css={styles.footer}\n />\n )\n}\n\nif (__DEV__) {\n PopoverFooter.displayName = \"PopoverFooter\"\n}\n\nexport type PopoverCloseButtonProps = CloseButtonProps\n\nexport const PopoverCloseButton: React.FC<CloseButtonProps> = (props) => {\n const { onClose } = usePopoverContext()\n return (\n <CloseButton\n size=\"sm\"\n onClick={onClose}\n position=\"absolute\"\n borderRadius=\"md\"\n top=\"0.25rem\"\n insetEnd=\"0.5rem\"\n padding=\"0.5rem\"\n {...props}\n />\n )\n}\n\nif (__DEV__) {\n PopoverCloseButton.displayName = \"PopoverCloseButton\"\n}\n\nexport interface PopoverArrowProps extends HTMLChakraProps<\"div\"> {}\n\nexport const PopoverArrow: React.FC<PopoverArrowProps> = (props) => {\n const { bg, bgColor, backgroundColor } = props\n const { getArrowProps, getArrowInnerProps } = usePopoverContext()\n const styles = useStyles()\n const arrowBg = bg ?? bgColor ?? backgroundColor\n return (\n <chakra.div\n {...getArrowProps()}\n className=\"chakra-popover__arrow-positioner\"\n >\n <chakra.div\n className={cx(\"chakra-popover__arrow\", props.className)}\n {...getArrowInnerProps(props)}\n __css={{\n ...styles.arrow,\n \"--popper-arrow-bg\": arrowBg\n ? `colors.${arrowBg}, ${arrowBg}`\n : undefined,\n }}\n />\n </chakra.div>\n )\n}\n\nif (__DEV__) {\n PopoverArrow.displayName = \"PopoverArrow\"\n}\n"],"sourceRoot":""}
|