{
  "version": 3,
  "sources": ["../../../src/components/sidebar/index.jsx"],
  "sourcesContent": ["import clsx from 'clsx';\nimport {\n\tcreateContext,\n\tuseContext,\n\tuseState,\n\tuseRef,\n\tuseLayoutEffect,\n} from '@wordpress/element';\nimport { focus } from '@wordpress/dom';\n\nexport const SidebarNavigationContext = createContext( () => {} );\nSidebarNavigationContext.displayName = 'SidebarNavigationContext';\n\n// Focus a sidebar element after a navigation. The element to focus is either\n// specified by `focusSelector` (when navigating back) or it is the first\n// tabbable element (usually the \"Back\" button).\nfunction focusSidebarElement( el, direction, focusSelector ) {\n\tlet elementToFocus;\n\tif ( direction === 'back' && focusSelector ) {\n\t\telementToFocus = el.querySelector( focusSelector );\n\t}\n\tif ( direction !== null && ! elementToFocus ) {\n\t\tconst [ firstTabbable ] = focus.tabbable.find( el );\n\t\telementToFocus = firstTabbable ?? el;\n\t}\n\telementToFocus?.focus();\n}\n\n// Navigation state that is updated when navigating back or forward. Helps us\n// manage the animations and also focus.\nfunction createNavState() {\n\tlet state = {\n\t\tdirection: null,\n\t\tfocusSelector: null,\n\t};\n\n\treturn {\n\t\tget() {\n\t\t\treturn state;\n\t\t},\n\t\tnavigate( direction, focusSelector = null ) {\n\t\t\tstate = {\n\t\t\t\tdirection,\n\t\t\t\tfocusSelector:\n\t\t\t\t\tdirection === 'forward' && focusSelector\n\t\t\t\t\t\t? focusSelector\n\t\t\t\t\t\t: state.focusSelector,\n\t\t\t};\n\t\t},\n\t};\n}\n\nfunction SidebarContentWrapper( { children, shouldAnimate } ) {\n\tconst navState = useContext( SidebarNavigationContext );\n\tconst wrapperRef = useRef();\n\tconst [ navAnimation, setNavAnimation ] = useState( null );\n\n\tuseLayoutEffect( () => {\n\t\tconst { direction, focusSelector } = navState.get();\n\t\tfocusSidebarElement( wrapperRef.current, direction, focusSelector );\n\t\tsetNavAnimation( direction );\n\t}, [ navState ] );\n\n\tconst wrapperCls = clsx(\n\t\t'edit-site-sidebar__screen-wrapper',\n\t\t/*\n\t\t * Some panes do not have sub-panes and therefore\n\t\t * should not animate when clicked on.\n\t\t */\n\t\tshouldAnimate\n\t\t\t? {\n\t\t\t\t\t'slide-from-left': navAnimation === 'back',\n\t\t\t\t\t'slide-from-right': navAnimation === 'forward',\n\t\t\t  }\n\t\t\t: {}\n\t);\n\n\treturn (\n\t\t<div ref={ wrapperRef } className={ wrapperCls }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nexport function SidebarNavigationProvider( { children } ) {\n\tconst [ navState ] = useState( createNavState );\n\n\treturn (\n\t\t<SidebarNavigationContext.Provider value={ navState }>\n\t\t\t{ children }\n\t\t</SidebarNavigationContext.Provider>\n\t);\n}\n\nexport function SidebarContent( { routeKey, shouldAnimate, children } ) {\n\treturn (\n\t\t<div className=\"edit-site-sidebar__content\">\n\t\t\t<SidebarContentWrapper\n\t\t\t\tshouldAnimate={ shouldAnimate }\n\t\t\t\tkey={ routeKey }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</SidebarContentWrapper>\n\t\t</div>\n\t);\n}\n"],
  "mappings": ";AAAA,OAAO,UAAU;AACjB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,aAAa;AAsEpB;AApEK,IAAM,2BAA2B,cAAe,MAAM;AAAC,CAAE;AAChE,yBAAyB,cAAc;AAKvC,SAAS,oBAAqB,IAAI,WAAW,eAAgB;AAC5D,MAAI;AACJ,MAAK,cAAc,UAAU,eAAgB;AAC5C,qBAAiB,GAAG,cAAe,aAAc;AAAA,EAClD;AACA,MAAK,cAAc,QAAQ,CAAE,gBAAiB;AAC7C,UAAM,CAAE,aAAc,IAAI,MAAM,SAAS,KAAM,EAAG;AAClD,qBAAiB,iBAAiB;AAAA,EACnC;AACA,kBAAgB,MAAM;AACvB;AAIA,SAAS,iBAAiB;AACzB,MAAI,QAAQ;AAAA,IACX,WAAW;AAAA,IACX,eAAe;AAAA,EAChB;AAEA,SAAO;AAAA,IACN,MAAM;AACL,aAAO;AAAA,IACR;AAAA,IACA,SAAU,WAAW,gBAAgB,MAAO;AAC3C,cAAQ;AAAA,QACP;AAAA,QACA,eACC,cAAc,aAAa,gBACxB,gBACA,MAAM;AAAA,MACX;AAAA,IACD;AAAA,EACD;AACD;AAEA,SAAS,sBAAuB,EAAE,UAAU,cAAc,GAAI;AAC7D,QAAM,WAAW,WAAY,wBAAyB;AACtD,QAAM,aAAa,OAAO;AAC1B,QAAM,CAAE,cAAc,eAAgB,IAAI,SAAU,IAAK;AAEzD,kBAAiB,MAAM;AACtB,UAAM,EAAE,WAAW,cAAc,IAAI,SAAS,IAAI;AAClD,wBAAqB,WAAW,SAAS,WAAW,aAAc;AAClE,oBAAiB,SAAU;AAAA,EAC5B,GAAG,CAAE,QAAS,CAAE;AAEhB,QAAM,aAAa;AAAA,IAClB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,gBACG;AAAA,MACA,mBAAmB,iBAAiB;AAAA,MACpC,oBAAoB,iBAAiB;AAAA,IACrC,IACA,CAAC;AAAA,EACL;AAEA,SACC,oBAAC,SAAI,KAAM,YAAa,WAAY,YACjC,UACH;AAEF;AAEO,SAAS,0BAA2B,EAAE,SAAS,GAAI;AACzD,QAAM,CAAE,QAAS,IAAI,SAAU,cAAe;AAE9C,SACC,oBAAC,yBAAyB,UAAzB,EAAkC,OAAQ,UACxC,UACH;AAEF;AAEO,SAAS,eAAgB,EAAE,UAAU,eAAe,SAAS,GAAI;AACvE,SACC,oBAAC,SAAI,WAAU,8BACd;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MAGE;AAAA;AAAA,IAFI;AAAA,EAGP,GACD;AAEF;",
  "names": []
}
