@itwin/itwinui-react
Version:
A react component library for iTwinUI
64 lines (63 loc) • 1.87 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
function _export(target, all) {
for (var name in all)
Object.defineProperty(target, name, {
enumerable: true,
get: all[name],
});
}
_export(exports, {
PanelsInstanceContext: function () {
return PanelsInstanceContext;
},
PanelsInstanceProvider: function () {
return PanelsInstanceProvider;
},
});
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _index = require('../../utils/index.js');
const _Panels = require('./Panels.js');
const PanelsInstanceContext = _react.createContext(void 0);
if ('development' === process.env.NODE_ENV)
PanelsInstanceContext.displayName = 'PanelsInstanceContext';
const PanelsInstanceProvider = (props) => {
let { children, instance: instanceProp } = props;
let instanceBackup = _Panels.Panels.useInstance();
let instance = instanceProp || instanceBackup;
let { activePanelId, changeActivePanel, triggers, setShouldFocus } = (0,
_index.useSafeContext)(_Panels.PanelsWrapperContext);
let goBack = _react.useCallback(async () => {
if (null == activePanelId) return;
let trigger = triggers[activePanelId];
if (null != trigger.triggerId) {
setShouldFocus({
fromPanelId: activePanelId,
toPanelId: trigger.panelId,
direction: 'backward',
});
changeActivePanel(trigger.panelId);
}
}, [activePanelId, changeActivePanel, setShouldFocus, triggers]);
(0, _index.useSynchronizeInstance)(
instance,
_react.useMemo(
() => ({
goBack,
}),
[goBack],
),
);
return _react.createElement(
PanelsInstanceContext.Provider,
{
value: {
instance,
},
},
children,
);
};