UNPKG

@grafana/ui

Version:
66 lines (61 loc) 1.83 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var jsxRuntime = require('react/jsx-runtime'); var React = require('react'); "use strict"; const TimeRangeContext = React.createContext(void 0); function TimeRangeProvider({ children }) { const [pickersCount, setPickersCount] = React.useState(0); const [syncedValue, setSyncedValue] = React.useState(); const contextVal = React.useMemo(() => { return { sync: (value) => setSyncedValue(value), unSync: () => setSyncedValue(void 0), addPicker: () => setPickersCount((val) => val + 1), removePicker: () => { setPickersCount((val) => { const newVal = val - 1; if (newVal < 2) { setSyncedValue(void 0); } return newVal; }); }, syncPossible: pickersCount > 1, synced: Boolean(syncedValue), syncedValue }; }, [pickersCount, syncedValue]); return /* @__PURE__ */ jsxRuntime.jsx(TimeRangeContext.Provider, { value: contextVal, children }); } function useTimeRangeContext(initialSyncValue) { const context = React.useContext(TimeRangeContext); React.useEffect(() => { if (context) { context.addPicker(); if (initialSyncValue) { context.sync(initialSyncValue); } return () => { context.removePicker(); }; } return () => { }; }, []); return React.useMemo(() => { if (!context) { return context; } return { sync: context.sync, unSync: context.unSync, syncPossible: context.syncPossible, synced: context.synced, syncedValue: context.syncedValue }; }, [context]); } exports.TimeRangeProvider = TimeRangeProvider; exports.useTimeRangeContext = useTimeRangeContext; //# sourceMappingURL=TimeRangeContext.cjs.map