@buoy-gg/react-query 7.0.40 → 7.0.42
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/README.md +11 -69
- package/lib/commonjs/checkPeer.js +1 -0
- package/lib/commonjs/checkPeer.web.js +1 -0
- package/lib/commonjs/index.js +1 -736
- package/lib/commonjs/preset.js +1 -243
- package/lib/commonjs/react-query/components/DataEditorMode.js +1 -317
- package/lib/commonjs/react-query/components/FilterStatusBadge.js +1 -55
- package/lib/commonjs/react-query/components/MutationBrowserMode.js +1 -52
- package/lib/commonjs/react-query/components/MutationEditorMode.js +1 -276
- package/lib/commonjs/react-query/components/QueryBrowserMode.js +1 -99
- package/lib/commonjs/react-query/components/QueryDebugInfo.js +1 -107
- package/lib/commonjs/react-query/components/QueryFilterViewV3.js +1 -224
- package/lib/commonjs/react-query/components/QuerySelector.js +1 -209
- package/lib/commonjs/react-query/components/ReactQueryDevToolsModal.js +1 -91
- package/lib/commonjs/react-query/components/ReactQuerySection.js +1 -47
- package/lib/commonjs/react-query/components/ReactQueryTracker.js +1 -38
- package/lib/commonjs/react-query/components/WifiToggle.js +1 -51
- package/lib/commonjs/react-query/components/modals/DataEditorModal.js +1 -103
- package/lib/commonjs/react-query/components/modals/MutationBrowserFooter.js +1 -61
- package/lib/commonjs/react-query/components/modals/MutationBrowserModal.js +1 -164
- package/lib/commonjs/react-query/components/modals/MutationEditorModal.js +1 -106
- package/lib/commonjs/react-query/components/modals/QueryBrowserFooter.js +1 -56
- package/lib/commonjs/react-query/components/modals/QueryBrowserModal.js +1 -254
- package/lib/commonjs/react-query/components/modals/ReactQueryModal.js +1 -83
- package/lib/commonjs/react-query/components/modals/ReactQueryModalHeader.js +1 -194
- package/lib/commonjs/react-query/components/modals/SwipeIndicator.js +1 -204
- package/lib/commonjs/react-query/components/query-browser/ActionButton.js +1 -100
- package/lib/commonjs/react-query/components/query-browser/ClearCacheButton.js +1 -53
- package/lib/commonjs/react-query/components/query-browser/Explorer.js +1 -75
- package/lib/commonjs/react-query/components/query-browser/MutationButton.js +1 -190
- package/lib/commonjs/react-query/components/query-browser/MutationDetails.js +1 -124
- package/lib/commonjs/react-query/components/query-browser/MutationDetailsChips.js +1 -68
- package/lib/commonjs/react-query/components/query-browser/MutationInformation.js +1 -118
- package/lib/commonjs/react-query/components/query-browser/MutationStatusCount.js +1 -84
- package/lib/commonjs/react-query/components/query-browser/MutationsList.js +1 -220
- package/lib/commonjs/react-query/components/query-browser/NetworkToggleButton.js +1 -54
- package/lib/commonjs/react-query/components/query-browser/QueryActions.js +1 -124
- package/lib/commonjs/react-query/components/query-browser/QueryBrowser.js +1 -181
- package/lib/commonjs/react-query/components/query-browser/QueryDetails.js +1 -141
- package/lib/commonjs/react-query/components/query-browser/QueryDetailsChip.js +1 -78
- package/lib/commonjs/react-query/components/query-browser/QueryInformation.js +1 -95
- package/lib/commonjs/react-query/components/query-browser/QueryRow.js +1 -96
- package/lib/commonjs/react-query/components/query-browser/QueryStatus.js +1 -167
- package/lib/commonjs/react-query/components/query-browser/QueryStatusCount.js +1 -100
- package/lib/commonjs/react-query/components/query-browser/StorageStatusCount.js +1 -61
- package/lib/commonjs/react-query/components/query-browser/index.js +1 -170
- package/lib/commonjs/react-query/components/query-browser/svgs.js +1 -72
- package/lib/commonjs/react-query/hooks/useActionButtons.js +1 -51
- package/lib/commonjs/react-query/hooks/useAllMutations.js +1 -85
- package/lib/commonjs/react-query/hooks/useAllQueries.js +1 -117
- package/lib/commonjs/react-query/hooks/useModalManager.js +1 -178
- package/lib/commonjs/react-query/hooks/useModalPersistence.js +1 -71
- package/lib/commonjs/react-query/hooks/useMutationActionButtons.js +1 -21
- package/lib/commonjs/react-query/hooks/useQueryStatusCounts.js +1 -114
- package/lib/commonjs/react-query/hooks/useReactQueryState.js +1 -24
- package/lib/commonjs/react-query/hooks/useSelectedMutation.js +1 -30
- package/lib/commonjs/react-query/hooks/useSelectedQuery.js +1 -96
- package/lib/commonjs/react-query/hooks/useStorageQueryCounts.js +1 -28
- package/lib/commonjs/react-query/hooks/useWifiState.js +1 -67
- package/lib/commonjs/react-query/stores/reactQueryEventStore.js +1 -302
- package/lib/commonjs/react-query/sync/dehydrate.js +1 -166
- package/lib/commonjs/react-query/sync/reactQuerySyncAdapter.js +1 -593
- package/lib/commonjs/react-query/sync/snapshotProvider.js +1 -289
- package/lib/commonjs/react-query/sync/useReactQuerySyncAdapter.js +1 -34
- package/lib/commonjs/react-query/types/types.js +1 -14
- package/lib/commonjs/react-query/utils/actions/deleteItem.js +1 -23
- package/lib/commonjs/react-query/utils/actions/emitDevToolsEvent.js +1 -40
- package/lib/commonjs/react-query/utils/actions/invalidate.js +1 -15
- package/lib/commonjs/react-query/utils/actions/refetch.js +1 -17
- package/lib/commonjs/react-query/utils/actions/remove.js +1 -15
- package/lib/commonjs/react-query/utils/actions/reset.js +1 -17
- package/lib/commonjs/react-query/utils/actions/triggerError.js +1 -33
- package/lib/commonjs/react-query/utils/actions/triggerLoading.js +1 -54
- package/lib/commonjs/react-query/utils/deleteNestedDataByPath.js +1 -56
- package/lib/commonjs/react-query/utils/getQueryStatusColor.js +1 -16
- package/lib/commonjs/react-query/utils/getQueryStatusLabel.js +1 -23
- package/lib/commonjs/react-query/utils/getStorageQueryCounts.js +1 -35
- package/lib/commonjs/react-query/utils/modalStorageOperations.js +1 -127
- package/lib/commonjs/react-query/utils/storageQueryUtils.js +1 -149
- package/lib/commonjs/react-query/utils/testIDs.js +1 -61
- package/lib/commonjs/react-query/utils/updateNestedDataByPath.js +1 -61
- package/lib/module/checkPeer.js +1 -0
- package/lib/module/checkPeer.web.js +1 -0
- package/lib/module/index.js +1 -135
- package/lib/module/preset.js +1 -239
- package/lib/module/react-query/components/DataEditorMode.js +1 -311
- package/lib/module/react-query/components/FilterStatusBadge.js +1 -51
- package/lib/module/react-query/components/MutationBrowserMode.js +1 -47
- package/lib/module/react-query/components/MutationEditorMode.js +1 -270
- package/lib/module/react-query/components/QueryBrowserMode.js +1 -94
- package/lib/module/react-query/components/QueryDebugInfo.js +1 -104
- package/lib/module/react-query/components/QueryFilterViewV3.js +1 -221
- package/lib/module/react-query/components/QuerySelector.js +1 -205
- package/lib/module/react-query/components/ReactQueryDevToolsModal.js +1 -87
- package/lib/module/react-query/components/ReactQuerySection.js +1 -43
- package/lib/module/react-query/components/ReactQueryTracker.js +1 -35
- package/lib/module/react-query/components/WifiToggle.js +1 -48
- package/lib/module/react-query/components/modals/DataEditorModal.js +1 -99
- package/lib/module/react-query/components/modals/MutationBrowserFooter.js +1 -56
- package/lib/module/react-query/components/modals/MutationBrowserModal.js +1 -161
- package/lib/module/react-query/components/modals/MutationEditorModal.js +1 -102
- package/lib/module/react-query/components/modals/QueryBrowserFooter.js +1 -51
- package/lib/module/react-query/components/modals/QueryBrowserModal.js +1 -250
- package/lib/module/react-query/components/modals/ReactQueryModal.js +1 -79
- package/lib/module/react-query/components/modals/ReactQueryModalHeader.js +1 -190
- package/lib/module/react-query/components/modals/SwipeIndicator.js +1 -201
- package/lib/module/react-query/components/query-browser/ActionButton.js +1 -96
- package/lib/module/react-query/components/query-browser/ClearCacheButton.js +1 -49
- package/lib/module/react-query/components/query-browser/Explorer.js +1 -70
- package/lib/module/react-query/components/query-browser/MutationButton.js +1 -186
- package/lib/module/react-query/components/query-browser/MutationDetails.js +1 -119
- package/lib/module/react-query/components/query-browser/MutationDetailsChips.js +1 -64
- package/lib/module/react-query/components/query-browser/MutationInformation.js +1 -113
- package/lib/module/react-query/components/query-browser/MutationStatusCount.js +1 -79
- package/lib/module/react-query/components/query-browser/MutationsList.js +1 -215
- package/lib/module/react-query/components/query-browser/NetworkToggleButton.js +1 -50
- package/lib/module/react-query/components/query-browser/QueryActions.js +1 -119
- package/lib/module/react-query/components/query-browser/QueryBrowser.js +1 -176
- package/lib/module/react-query/components/query-browser/QueryDetails.js +1 -136
- package/lib/module/react-query/components/query-browser/QueryDetailsChip.js +1 -74
- package/lib/module/react-query/components/query-browser/QueryInformation.js +1 -90
- package/lib/module/react-query/components/query-browser/QueryRow.js +1 -92
- package/lib/module/react-query/components/query-browser/QueryStatus.js +1 -163
- package/lib/module/react-query/components/query-browser/QueryStatusCount.js +1 -95
- package/lib/module/react-query/components/query-browser/StorageStatusCount.js +1 -56
- package/lib/module/react-query/components/query-browser/index.js +1 -22
- package/lib/module/react-query/components/query-browser/svgs.js +1 -64
- package/lib/module/react-query/hooks/useActionButtons.js +1 -46
- package/lib/module/react-query/hooks/useAllMutations.js +1 -82
- package/lib/module/react-query/hooks/useAllQueries.js +1 -114
- package/lib/module/react-query/hooks/useModalManager.js +1 -175
- package/lib/module/react-query/hooks/useModalPersistence.js +1 -67
- package/lib/module/react-query/hooks/useMutationActionButtons.js +1 -17
- package/lib/module/react-query/hooks/useQueryStatusCounts.js +1 -112
- package/lib/module/react-query/hooks/useReactQueryState.js +1 -20
- package/lib/module/react-query/hooks/useSelectedMutation.js +1 -27
- package/lib/module/react-query/hooks/useSelectedQuery.js +1 -92
- package/lib/module/react-query/hooks/useStorageQueryCounts.js +1 -25
- package/lib/module/react-query/hooks/useWifiState.js +1 -64
- package/lib/module/react-query/stores/reactQueryEventStore.js +1 -293
- package/lib/module/react-query/sync/dehydrate.js +1 -156
- package/lib/module/react-query/sync/reactQuerySyncAdapter.js +1 -589
- package/lib/module/react-query/sync/snapshotProvider.js +1 -284
- package/lib/module/react-query/sync/useReactQuerySyncAdapter.js +1 -31
- package/lib/module/react-query/types/types.js +1 -10
- package/lib/module/react-query/utils/actions/deleteItem.js +1 -19
- package/lib/module/react-query/utils/actions/emitDevToolsEvent.js +1 -36
- package/lib/module/react-query/utils/actions/invalidate.js +1 -11
- package/lib/module/react-query/utils/actions/refetch.js +1 -13
- package/lib/module/react-query/utils/actions/remove.js +1 -11
- package/lib/module/react-query/utils/actions/reset.js +1 -13
- package/lib/module/react-query/utils/actions/triggerError.js +1 -29
- package/lib/module/react-query/utils/actions/triggerLoading.js +1 -50
- package/lib/module/react-query/utils/deleteNestedDataByPath.js +1 -51
- package/lib/module/react-query/utils/getQueryStatusColor.js +1 -12
- package/lib/module/react-query/utils/getQueryStatusLabel.js +1 -19
- package/lib/module/react-query/utils/getStorageQueryCounts.js +1 -31
- package/lib/module/react-query/utils/modalStorageOperations.js +1 -117
- package/lib/module/react-query/utils/storageQueryUtils.js +1 -140
- package/lib/module/react-query/utils/testIDs.js +1 -54
- package/lib/module/react-query/utils/updateNestedDataByPath.js +1 -56
- package/lib/typescript/checkPeer.d.ts +1 -0
- package/lib/typescript/checkPeer.web.d.ts +2 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/web/index.mjs +11 -0
- package/package.json +36 -12
- package/lib/typescript/index.d.ts.map +0 -1
- package/lib/typescript/preset.d.ts.map +0 -1
- package/lib/typescript/react-query/components/DataEditorMode.d.ts.map +0 -1
- package/lib/typescript/react-query/components/FilterStatusBadge.d.ts.map +0 -1
- package/lib/typescript/react-query/components/MutationBrowserMode.d.ts.map +0 -1
- package/lib/typescript/react-query/components/MutationEditorMode.d.ts.map +0 -1
- package/lib/typescript/react-query/components/QueryBrowserMode.d.ts.map +0 -1
- package/lib/typescript/react-query/components/QueryDebugInfo.d.ts.map +0 -1
- package/lib/typescript/react-query/components/QueryFilterViewV3.d.ts.map +0 -1
- package/lib/typescript/react-query/components/QuerySelector.d.ts.map +0 -1
- package/lib/typescript/react-query/components/ReactQueryDevToolsModal.d.ts.map +0 -1
- package/lib/typescript/react-query/components/ReactQuerySection.d.ts.map +0 -1
- package/lib/typescript/react-query/components/ReactQueryTracker.d.ts.map +0 -1
- package/lib/typescript/react-query/components/WifiToggle.d.ts.map +0 -1
- package/lib/typescript/react-query/components/modals/DataEditorModal.d.ts.map +0 -1
- package/lib/typescript/react-query/components/modals/MutationBrowserFooter.d.ts.map +0 -1
- package/lib/typescript/react-query/components/modals/MutationBrowserModal.d.ts.map +0 -1
- package/lib/typescript/react-query/components/modals/MutationEditorModal.d.ts.map +0 -1
- package/lib/typescript/react-query/components/modals/QueryBrowserFooter.d.ts.map +0 -1
- package/lib/typescript/react-query/components/modals/QueryBrowserModal.d.ts.map +0 -1
- package/lib/typescript/react-query/components/modals/ReactQueryModal.d.ts.map +0 -1
- package/lib/typescript/react-query/components/modals/ReactQueryModalHeader.d.ts.map +0 -1
- package/lib/typescript/react-query/components/modals/SwipeIndicator.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/ActionButton.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/ClearCacheButton.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/Explorer.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/MutationButton.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/MutationDetails.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/MutationDetailsChips.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/MutationInformation.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/MutationStatusCount.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/MutationsList.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/NetworkToggleButton.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/QueryActions.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/QueryBrowser.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/QueryDetails.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/QueryDetailsChip.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/QueryInformation.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/QueryRow.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/QueryStatus.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/QueryStatusCount.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/StorageStatusCount.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/index.d.ts.map +0 -1
- package/lib/typescript/react-query/components/query-browser/svgs.d.ts.map +0 -1
- package/lib/typescript/react-query/hooks/useActionButtons.d.ts.map +0 -1
- package/lib/typescript/react-query/hooks/useAllMutations.d.ts.map +0 -1
- package/lib/typescript/react-query/hooks/useAllQueries.d.ts.map +0 -1
- package/lib/typescript/react-query/hooks/useModalManager.d.ts.map +0 -1
- package/lib/typescript/react-query/hooks/useModalPersistence.d.ts.map +0 -1
- package/lib/typescript/react-query/hooks/useMutationActionButtons.d.ts.map +0 -1
- package/lib/typescript/react-query/hooks/useQueryStatusCounts.d.ts.map +0 -1
- package/lib/typescript/react-query/hooks/useReactQueryState.d.ts.map +0 -1
- package/lib/typescript/react-query/hooks/useSelectedMutation.d.ts.map +0 -1
- package/lib/typescript/react-query/hooks/useSelectedQuery.d.ts.map +0 -1
- package/lib/typescript/react-query/hooks/useStorageQueryCounts.d.ts.map +0 -1
- package/lib/typescript/react-query/hooks/useWifiState.d.ts.map +0 -1
- package/lib/typescript/react-query/stores/reactQueryEventStore.d.ts.map +0 -1
- package/lib/typescript/react-query/sync/dehydrate.d.ts.map +0 -1
- package/lib/typescript/react-query/sync/reactQuerySyncAdapter.d.ts.map +0 -1
- package/lib/typescript/react-query/sync/snapshotProvider.d.ts.map +0 -1
- package/lib/typescript/react-query/sync/useReactQuerySyncAdapter.d.ts.map +0 -1
- package/lib/typescript/react-query/types/types.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/actions/deleteItem.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/actions/emitDevToolsEvent.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/actions/invalidate.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/actions/refetch.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/actions/remove.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/actions/reset.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/actions/triggerError.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/actions/triggerLoading.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/deleteNestedDataByPath.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/getQueryStatusColor.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/getQueryStatusLabel.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/getStorageQueryCounts.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/modalStorageOperations.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/storageQueryUtils.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/testIDs.d.ts.map +0 -1
- package/lib/typescript/react-query/utils/updateNestedDataByPath.d.ts.map +0 -1
|
@@ -1,254 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.QueryBrowserModal = QueryBrowserModal;
|
|
7
|
-
var _reactQuery = require("@tanstack/react-query");
|
|
8
|
-
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
9
|
-
var _useSelectedQuery = require("../../hooks/useSelectedQuery");
|
|
10
|
-
var _ReactQueryModalHeader = require("./ReactQueryModalHeader");
|
|
11
|
-
var _QueryBrowserMode = require("../QueryBrowserMode");
|
|
12
|
-
var _QueryBrowserFooter = require("./QueryBrowserFooter");
|
|
13
|
-
var _QueryFilterViewV = require("../QueryFilterViewV3");
|
|
14
|
-
var _react = require("react");
|
|
15
|
-
var _reactNative = require("react-native");
|
|
16
|
-
var _useAllQueries = _interopRequireDefault(require("../../hooks/useAllQueries"));
|
|
17
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
|
-
/**
|
|
20
|
-
* Specialized modal for query browsing following "Decompose by Responsibility"
|
|
21
|
-
* Single purpose: Display query browser when no query is selected
|
|
22
|
-
*/
|
|
23
|
-
function QueryBrowserModal({
|
|
24
|
-
visible,
|
|
25
|
-
selectedQueryKey,
|
|
26
|
-
onQuerySelect,
|
|
27
|
-
onClose,
|
|
28
|
-
onMinimize,
|
|
29
|
-
activeFilter: externalActiveFilter,
|
|
30
|
-
onFilterChange: externalOnFilterChange,
|
|
31
|
-
enableSharedModalDimensions = false,
|
|
32
|
-
onTabChange,
|
|
33
|
-
searchText = "",
|
|
34
|
-
onSearchChange
|
|
35
|
-
}) {
|
|
36
|
-
const queryClient = (0, _reactQuery.useQueryClient)();
|
|
37
|
-
const selectedQuery = (0, _useSelectedQuery.useGetQueryByQueryKey)(selectedQueryKey);
|
|
38
|
-
const allQueries = (0, _useAllQueries.default)();
|
|
39
|
-
|
|
40
|
-
// Clear query cache handler
|
|
41
|
-
const handleClearCache = (0, _react.useCallback)(() => {
|
|
42
|
-
queryClient.getQueryCache().clear();
|
|
43
|
-
}, [queryClient]);
|
|
44
|
-
|
|
45
|
-
// Use external filter state if provided (for persistence), otherwise use internal state
|
|
46
|
-
const [internalActiveFilter, setInternalActiveFilter] = (0, _react.useState)(null);
|
|
47
|
-
const activeFilter = externalActiveFilter ?? internalActiveFilter;
|
|
48
|
-
const setActiveFilter = externalOnFilterChange ?? setInternalActiveFilter;
|
|
49
|
-
|
|
50
|
-
// Filter modal state
|
|
51
|
-
const [showFilterView, setShowFilterView] = (0, _react.useState)(false);
|
|
52
|
-
const [ignoredPatterns, setIgnoredPatterns] = (0, _react.useState)(new Set());
|
|
53
|
-
const [includedPatterns, setIncludedPatterns] = (0, _react.useState)(new Set());
|
|
54
|
-
|
|
55
|
-
// Load ignored patterns from storage on mount
|
|
56
|
-
(0, _react.useEffect)(() => {
|
|
57
|
-
const loadFilters = async () => {
|
|
58
|
-
try {
|
|
59
|
-
const stored = await _sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.reactQuery.ignoredPatterns());
|
|
60
|
-
if (stored) {
|
|
61
|
-
const patterns = JSON.parse(stored);
|
|
62
|
-
if (Array.isArray(patterns)) {
|
|
63
|
-
setIgnoredPatterns(new Set(patterns));
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
} catch (error) {
|
|
67
|
-
console.error("Failed to load ignored patterns:", error);
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
loadFilters();
|
|
71
|
-
}, []);
|
|
72
|
-
|
|
73
|
-
// Load included patterns from storage on mount
|
|
74
|
-
(0, _react.useEffect)(() => {
|
|
75
|
-
const loadFilters = async () => {
|
|
76
|
-
try {
|
|
77
|
-
const stored = await _sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.reactQuery.includedPatterns());
|
|
78
|
-
if (stored) {
|
|
79
|
-
const patterns = JSON.parse(stored);
|
|
80
|
-
if (Array.isArray(patterns)) {
|
|
81
|
-
setIncludedPatterns(new Set(patterns));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
} catch (error) {
|
|
85
|
-
console.error("Failed to load included patterns:", error);
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
loadFilters();
|
|
89
|
-
}, []);
|
|
90
|
-
|
|
91
|
-
// Save ignored patterns to storage when they change
|
|
92
|
-
(0, _react.useEffect)(() => {
|
|
93
|
-
const saveFilters = async () => {
|
|
94
|
-
try {
|
|
95
|
-
const patterns = Array.from(ignoredPatterns);
|
|
96
|
-
await _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.reactQuery.ignoredPatterns(), JSON.stringify(patterns));
|
|
97
|
-
} catch (error) {
|
|
98
|
-
console.error("Failed to save ignored patterns:", error);
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
saveFilters();
|
|
102
|
-
}, [ignoredPatterns]);
|
|
103
|
-
|
|
104
|
-
// Save included patterns to storage when they change
|
|
105
|
-
(0, _react.useEffect)(() => {
|
|
106
|
-
const saveFilters = async () => {
|
|
107
|
-
try {
|
|
108
|
-
const patterns = Array.from(includedPatterns);
|
|
109
|
-
await _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.reactQuery.includedPatterns(), JSON.stringify(patterns));
|
|
110
|
-
} catch (error) {
|
|
111
|
-
console.error("Failed to save included patterns:", error);
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
saveFilters();
|
|
115
|
-
}, [includedPatterns]);
|
|
116
|
-
|
|
117
|
-
// Toggle pattern in ignored set
|
|
118
|
-
const handlePatternToggle = (0, _react.useCallback)(pattern => {
|
|
119
|
-
setIgnoredPatterns(prev => {
|
|
120
|
-
const newSet = new Set(prev);
|
|
121
|
-
if (newSet.has(pattern)) {
|
|
122
|
-
newSet.delete(pattern);
|
|
123
|
-
} else {
|
|
124
|
-
newSet.add(pattern);
|
|
125
|
-
}
|
|
126
|
-
return newSet;
|
|
127
|
-
});
|
|
128
|
-
}, []);
|
|
129
|
-
|
|
130
|
-
// Toggle pattern in included set
|
|
131
|
-
const handleIncludedPatternToggle = (0, _react.useCallback)(pattern => {
|
|
132
|
-
setIncludedPatterns(prev => {
|
|
133
|
-
const newSet = new Set(prev);
|
|
134
|
-
if (newSet.has(pattern)) {
|
|
135
|
-
newSet.delete(pattern);
|
|
136
|
-
} else {
|
|
137
|
-
newSet.add(pattern);
|
|
138
|
-
}
|
|
139
|
-
return newSet;
|
|
140
|
-
});
|
|
141
|
-
}, []);
|
|
142
|
-
|
|
143
|
-
// Track modal mode for conditional styling
|
|
144
|
-
const [modalMode, setModalMode] = (0, _react.useState)("bottomSheet");
|
|
145
|
-
const storagePrefix = enableSharedModalDimensions ? _sharedUi.devToolsStorageKeys.reactQuery.modal() : _sharedUi.devToolsStorageKeys.reactQuery.browserModal();
|
|
146
|
-
const handleModeChange = (0, _react.useCallback)(mode => {
|
|
147
|
-
setModalMode(mode);
|
|
148
|
-
}, []);
|
|
149
|
-
|
|
150
|
-
// JsModal overlays the footer on the content and only reserves `footerHeight`
|
|
151
|
-
// of padding beneath it. QueryBrowserFooter grows by the safe-area inset when
|
|
152
|
-
// docked, so the reserve must track that or the list bottom hides behind the
|
|
153
|
-
// footer.
|
|
154
|
-
const insets = (0, _sharedUi.useSafeAreaInsets)({
|
|
155
|
-
minBottom: 16
|
|
156
|
-
});
|
|
157
|
-
const footerHeight = modalMode === "floating" ? 56 : 48 + insets.bottom;
|
|
158
|
-
if (!visible) return null;
|
|
159
|
-
const renderHeaderContent = () => {
|
|
160
|
-
// Filter view header with back button
|
|
161
|
-
if (showFilterView) {
|
|
162
|
-
const tabs = [{
|
|
163
|
-
key: "filters",
|
|
164
|
-
label: "Filters"
|
|
165
|
-
}];
|
|
166
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
|
|
167
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
|
|
168
|
-
onBack: () => setShowFilterView(false)
|
|
169
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
|
|
170
|
-
title: "",
|
|
171
|
-
noMargin: true,
|
|
172
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TabSelector, {
|
|
173
|
-
tabs: tabs,
|
|
174
|
-
activeTab: "filters",
|
|
175
|
-
testIDPrefix: "buoy-rq-filterview-tab",
|
|
176
|
-
onTabChange: () => {}
|
|
177
|
-
})
|
|
178
|
-
})]
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// Normal query browser header
|
|
183
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ReactQueryModalHeader.ReactQueryModalHeader, {
|
|
184
|
-
selectedQuery: selectedQuery,
|
|
185
|
-
activeTab: "queries",
|
|
186
|
-
onTabChange: onTabChange,
|
|
187
|
-
onBack: () => onQuerySelect(undefined),
|
|
188
|
-
searchText: searchText,
|
|
189
|
-
onSearchChange: onSearchChange,
|
|
190
|
-
onFilterPress: () => setShowFilterView(true),
|
|
191
|
-
hasActiveFilters: activeFilter !== null || ignoredPatterns.size > 0 || includedPatterns.size > 0,
|
|
192
|
-
onClearCache: handleClearCache
|
|
193
|
-
});
|
|
194
|
-
};
|
|
195
|
-
const footerNode = /*#__PURE__*/(0, _jsxRuntime.jsx)(_QueryBrowserFooter.QueryBrowserFooter, {
|
|
196
|
-
activeFilter: activeFilter,
|
|
197
|
-
onFilterChange: setActiveFilter,
|
|
198
|
-
isFloatingMode: modalMode === "floating"
|
|
199
|
-
});
|
|
200
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.JsModal, {
|
|
201
|
-
visible: visible,
|
|
202
|
-
onClose: onClose,
|
|
203
|
-
onMinimize: onMinimize,
|
|
204
|
-
persistenceKey: storagePrefix,
|
|
205
|
-
header: {
|
|
206
|
-
customContent: renderHeaderContent(),
|
|
207
|
-
showToggleButton: true
|
|
208
|
-
},
|
|
209
|
-
onModeChange: handleModeChange,
|
|
210
|
-
enablePersistence: true,
|
|
211
|
-
initialMode: "bottomSheet",
|
|
212
|
-
enableGlitchEffects: true
|
|
213
|
-
// The query list virtualizes itself (see QueryBrowser) — it must own
|
|
214
|
-
// scrolling. The filter view keeps the wrapper.
|
|
215
|
-
,
|
|
216
|
-
disableScrollWrapper: !showFilterView,
|
|
217
|
-
styles: {},
|
|
218
|
-
footer: !showFilterView ? footerNode : undefined,
|
|
219
|
-
footerHeight: !showFilterView ? footerHeight : undefined,
|
|
220
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
221
|
-
style: styles.container,
|
|
222
|
-
children: showFilterView ?
|
|
223
|
-
/*#__PURE__*/
|
|
224
|
-
/* Show filter view */
|
|
225
|
-
(0, _jsxRuntime.jsx)(_QueryFilterViewV.QueryFilterViewV3, {
|
|
226
|
-
queries: allQueries,
|
|
227
|
-
activeFilter: activeFilter,
|
|
228
|
-
onFilterChange: setActiveFilter,
|
|
229
|
-
ignoredPatterns: ignoredPatterns,
|
|
230
|
-
onPatternToggle: handlePatternToggle,
|
|
231
|
-
includedPatterns: includedPatterns,
|
|
232
|
-
onIncludedPatternToggle: handleIncludedPatternToggle
|
|
233
|
-
}) :
|
|
234
|
-
/*#__PURE__*/
|
|
235
|
-
/* Show query browser */
|
|
236
|
-
(0, _jsxRuntime.jsx)(_QueryBrowserMode.QueryBrowserMode, {
|
|
237
|
-
selectedQuery: selectedQuery,
|
|
238
|
-
onQuerySelect: onQuerySelect,
|
|
239
|
-
activeFilter: activeFilter,
|
|
240
|
-
searchText: searchText,
|
|
241
|
-
ignoredPatterns: ignoredPatterns,
|
|
242
|
-
includedPatterns: includedPatterns,
|
|
243
|
-
onFilterPress: () => setShowFilterView(true)
|
|
244
|
-
})
|
|
245
|
-
})
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
const styles = _reactNative.StyleSheet.create({
|
|
249
|
-
container: {
|
|
250
|
-
flex: 1,
|
|
251
|
-
// Transparent so JsModal's ToolBackground shows through (the modal paints opaque base beneath it).
|
|
252
|
-
backgroundColor: "transparent"
|
|
253
|
-
}
|
|
254
|
-
});
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.QueryBrowserModal=QueryBrowserModal;var _reactQuery=require("@tanstack/react-query");var _sharedUi=require("@buoy-gg/shared-ui");var _useSelectedQuery=require("../../hooks/useSelectedQuery");var _ReactQueryModalHeader=require("./ReactQueryModalHeader");var _QueryBrowserMode=require("../QueryBrowserMode");var _QueryBrowserFooter=require("./QueryBrowserFooter");var _QueryFilterViewV=require("../QueryFilterViewV3");var _react=require("react");var _reactNative=require("react-native");var _useAllQueries=_interopRequireDefault(require("../../hooks/useAllQueries"));var _jsxRuntime=require("react/jsx-runtime");function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}function QueryBrowserModal({visible:s,selectedQueryKey:v,onQuerySelect:c,onClose:Q,onMinimize:F,activeFilter:w,onFilterChange:b,enableSharedModalDimensions:C=false,onTabChange:M,searchText:u="",onSearchChange:P}){const d=(0,_reactQuery.useQueryClient)();const y=(0,_useSelectedQuery.useGetQueryByQueryKey)(v);const p=(0,_useAllQueries.default)();const x=(0,_react.useCallback)(()=>{d.getQueryCache().clear()},[d]);const[m,q]=(0,_react.useState)(null);const i=w??m;const g=b??q;const[a,l]=(0,_react.useState)(false);const[o,f]=(0,_react.useState)(new Set);const[n,h]=(0,_react.useState)(new Set);(0,_react.useEffect)(()=>{const t=async()=>{try{const e=await _sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.reactQuery.ignoredPatterns());if(e){const r=JSON.parse(e);if(Array.isArray(r)){f(new Set(r))}}}catch(e){console.error("Failed to load ignored patterns:",e)}};t()},[]);(0,_react.useEffect)(()=>{const t=async()=>{try{const e=await _sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.reactQuery.includedPatterns());if(e){const r=JSON.parse(e);if(Array.isArray(r)){h(new Set(r))}}}catch(e){console.error("Failed to load included patterns:",e)}};t()},[]);(0,_react.useEffect)(()=>{const t=async()=>{try{const e=Array.from(o);await _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.reactQuery.ignoredPatterns(),JSON.stringify(e))}catch(e){console.error("Failed to save ignored patterns:",e)}};t()},[o]);(0,_react.useEffect)(()=>{const t=async()=>{try{const e=Array.from(n);await _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.reactQuery.includedPatterns(),JSON.stringify(e))}catch(e){console.error("Failed to save included patterns:",e)}};t()},[n]);const T=(0,_react.useCallback)(t=>{f(e=>{const r=new Set(e);if(r.has(t)){r.delete(t)}else{r.add(t)}return r})},[]);const _=(0,_react.useCallback)(t=>{h(e=>{const r=new Set(e);if(r.has(t)){r.delete(t)}else{r.add(t)}return r})},[]);const[S,j]=(0,_react.useState)("bottomSheet");const A=C?_sharedUi.devToolsStorageKeys.reactQuery.modal():_sharedUi.devToolsStorageKeys.reactQuery.browserModal();const B=(0,_react.useCallback)(t=>{j(t)},[]);const k=(0,_sharedUi.useSafeAreaInsets)({minBottom:16});const I=S==="floating"?56:48+k.bottom;if(!s)return null;const H=()=>{if(a){const t=[{key:"filters",label:"Filters"}];return(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader,{children:[(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation,{onBack:()=>l(false)}),(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Content,{title:"",noMargin:true,children:(0,_jsxRuntime.jsx)(_sharedUi.TabSelector,{tabs:t,activeTab:"filters",testIDPrefix:"buoy-rq-filterview-tab",onTabChange:()=>{}})})]})}return(0,_jsxRuntime.jsx)(_ReactQueryModalHeader.ReactQueryModalHeader,{selectedQuery:y,activeTab:"queries",onTabChange:M,onBack:()=>c(void 0),searchText:u,onSearchChange:P,onFilterPress:()=>l(true),hasActiveFilters:i!==null||o.size>0||n.size>0,onClearCache:x})};const V=(0,_jsxRuntime.jsx)(_QueryBrowserFooter.QueryBrowserFooter,{activeFilter:i,onFilterChange:g,isFloatingMode:S==="floating"});return(0,_jsxRuntime.jsx)(_sharedUi.JsModal,{visible:s,onClose:Q,onMinimize:F,persistenceKey:A,header:{customContent:H(),showToggleButton:true},onModeChange:B,enablePersistence:true,initialMode:"bottomSheet",enableGlitchEffects:true,disableScrollWrapper:!a,styles:{},footer:!a?V:void 0,footerHeight:!a?I:void 0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.container,children:a?(0,_jsxRuntime.jsx)(_QueryFilterViewV.QueryFilterViewV3,{queries:p,activeFilter:i,onFilterChange:g,ignoredPatterns:o,onPatternToggle:T,includedPatterns:n,onIncludedPatternToggle:_}):(0,_jsxRuntime.jsx)(_QueryBrowserMode.QueryBrowserMode,{selectedQuery:y,onQuerySelect:c,activeFilter:i,searchText:u,ignoredPatterns:o,includedPatterns:n,onFilterPress:()=>l(true)})})})}const styles=_reactNative.StyleSheet.create({container:{flex:1,backgroundColor:"transparent"}});
|
|
@@ -1,83 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ReactQueryModal = ReactQueryModal;
|
|
7
|
-
var _QueryBrowserModal = require("./QueryBrowserModal");
|
|
8
|
-
var _DataEditorModal = require("./DataEditorModal");
|
|
9
|
-
var _MutationBrowserModal = require("./MutationBrowserModal");
|
|
10
|
-
var _MutationEditorModal = require("./MutationEditorModal");
|
|
11
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
-
/**
|
|
13
|
-
* Refactored ReactQueryModal following composition principles
|
|
14
|
-
*
|
|
15
|
-
* Applied principles:
|
|
16
|
-
* - Decompose by Responsibility: Separated query browser and data editor modals
|
|
17
|
-
* - Prefer Composition over Configuration: Uses specialized modal components
|
|
18
|
-
* - Extract Reusable Logic: Modal routing logic based on query selection
|
|
19
|
-
* - Utilize Render Props: Each modal handles its own rendering responsibility
|
|
20
|
-
*/
|
|
21
|
-
function ReactQueryModal({
|
|
22
|
-
visible,
|
|
23
|
-
selectedQueryKey,
|
|
24
|
-
selectedMutationId,
|
|
25
|
-
onQuerySelect,
|
|
26
|
-
onMutationSelect,
|
|
27
|
-
onClose,
|
|
28
|
-
onMinimize,
|
|
29
|
-
activeFilter,
|
|
30
|
-
onFilterChange,
|
|
31
|
-
activeTab,
|
|
32
|
-
onTabChange,
|
|
33
|
-
enableSharedModalDimensions = false,
|
|
34
|
-
searchText = "",
|
|
35
|
-
onSearchChange
|
|
36
|
-
}) {
|
|
37
|
-
// Check if we have a key/id even if the query/mutation hasn't been found yet
|
|
38
|
-
const inDetail = !!selectedQueryKey || !!selectedMutationId;
|
|
39
|
-
const isQueryMode = activeTab === "queries";
|
|
40
|
-
const isMutationMode = activeTab === "mutations";
|
|
41
|
-
const commonProps = {
|
|
42
|
-
onClose,
|
|
43
|
-
onMinimize,
|
|
44
|
-
activeFilter,
|
|
45
|
-
onFilterChange,
|
|
46
|
-
enableSharedModalDimensions
|
|
47
|
-
};
|
|
48
|
-
const showQueryBrowserModal = visible && !inDetail && isQueryMode;
|
|
49
|
-
const showMutationBrowserModal = visible && !inDetail && isMutationMode;
|
|
50
|
-
const showDataEditorModal = visible && inDetail && isQueryMode && !!selectedQueryKey;
|
|
51
|
-
const showMutationEditorModal = visible && inDetail && isMutationMode && !!selectedMutationId;
|
|
52
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
53
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_QueryBrowserModal.QueryBrowserModal, {
|
|
54
|
-
visible: showQueryBrowserModal,
|
|
55
|
-
selectedQueryKey: selectedQueryKey,
|
|
56
|
-
onQuerySelect: onQuerySelect,
|
|
57
|
-
onTabChange: onTabChange,
|
|
58
|
-
searchText: searchText,
|
|
59
|
-
onSearchChange: onSearchChange,
|
|
60
|
-
...commonProps
|
|
61
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_MutationBrowserModal.MutationBrowserModal, {
|
|
62
|
-
visible: showMutationBrowserModal,
|
|
63
|
-
selectedMutationId: selectedMutationId,
|
|
64
|
-
onMutationSelect: onMutationSelect,
|
|
65
|
-
onTabChange: onTabChange,
|
|
66
|
-
searchText: searchText,
|
|
67
|
-
onSearchChange: onSearchChange,
|
|
68
|
-
...commonProps
|
|
69
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataEditorModal.DataEditorModal, {
|
|
70
|
-
visible: showDataEditorModal,
|
|
71
|
-
selectedQueryKey: selectedQueryKey,
|
|
72
|
-
onQuerySelect: onQuerySelect,
|
|
73
|
-
onTabChange: onTabChange,
|
|
74
|
-
...commonProps
|
|
75
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_MutationEditorModal.MutationEditorModal, {
|
|
76
|
-
visible: showMutationEditorModal,
|
|
77
|
-
selectedMutationId: selectedMutationId,
|
|
78
|
-
onMutationSelect: onMutationSelect,
|
|
79
|
-
onTabChange: onTabChange,
|
|
80
|
-
...commonProps
|
|
81
|
-
})]
|
|
82
|
-
});
|
|
83
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ReactQueryModal=ReactQueryModal;var _QueryBrowserModal=require("./QueryBrowserModal");var _DataEditorModal=require("./DataEditorModal");var _MutationBrowserModal=require("./MutationBrowserModal");var _MutationEditorModal=require("./MutationEditorModal");var _jsxRuntime=require("react/jsx-runtime");function ReactQueryModal({visible:o,selectedQueryKey:r,selectedMutationId:t,onQuerySelect:i,onMutationSelect:n,onClose:w,onMinimize:x,activeFilter:h,onFilterChange:j,activeTab:u,onTabChange:e,enableSharedModalDimensions:B=false,searchText:M="",onSearchChange:d}){const a=!!r||!!t;const l=u==="queries";const c=u==="mutations";const s={onClose:w,onMinimize:x,activeFilter:h,onFilterChange:j,enableSharedModalDimensions:B};const E=o&&!a&&l;const y=o&&!a&&c;const Q=o&&a&&l&&!!r;const _=o&&a&&c&&!!t;return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_QueryBrowserModal.QueryBrowserModal,{visible:E,selectedQueryKey:r,onQuerySelect:i,onTabChange:e,searchText:M,onSearchChange:d,...s}),(0,_jsxRuntime.jsx)(_MutationBrowserModal.MutationBrowserModal,{visible:y,selectedMutationId:t,onMutationSelect:n,onTabChange:e,searchText:M,onSearchChange:d,...s}),(0,_jsxRuntime.jsx)(_DataEditorModal.DataEditorModal,{visible:Q,selectedQueryKey:r,onQuerySelect:i,onTabChange:e,...s}),(0,_jsxRuntime.jsx)(_MutationEditorModal.MutationEditorModal,{visible:_,selectedMutationId:t,onMutationSelect:n,onTabChange:e,...s})]})}
|
|
@@ -1,194 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ReactQueryModalHeader = ReactQueryModalHeader;
|
|
7
|
-
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
8
|
-
var _react = require("react");
|
|
9
|
-
var _reactNative = require("react-native");
|
|
10
|
-
var _WifiToggle = require("../WifiToggle");
|
|
11
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
-
/**
|
|
13
|
-
* Shared header for all React Query modals. Handles tab switching when browsing and presents
|
|
14
|
-
* breadcrumbs when a specific query or mutation is selected.
|
|
15
|
-
*/
|
|
16
|
-
function ReactQueryModalHeader({
|
|
17
|
-
selectedQuery,
|
|
18
|
-
selectedMutation,
|
|
19
|
-
activeTab,
|
|
20
|
-
onTabChange,
|
|
21
|
-
onBack,
|
|
22
|
-
searchText = "",
|
|
23
|
-
onSearchChange,
|
|
24
|
-
onFilterPress,
|
|
25
|
-
hasActiveFilters = false,
|
|
26
|
-
onClearCache,
|
|
27
|
-
showWifiToggle = false
|
|
28
|
-
}) {
|
|
29
|
-
const [isSearchActive, setIsSearchActive] = (0, _react.useState)(false);
|
|
30
|
-
// True while the header's clear ✕ is being pressed. With a mouse, pressing
|
|
31
|
-
// the ✕ blurs the input FIRST, and the blur handler closes search — which
|
|
32
|
-
// unmounts the ✕ before its own press can fire, so the query was never
|
|
33
|
-
// cleared (desktop). Press-in lands before the blur, so the blur handler can
|
|
34
|
-
// tell this dismissal apart from a click elsewhere.
|
|
35
|
-
const clearPressRef = (0, _react.useRef)(false);
|
|
36
|
-
const searchInputRef = (0, _react.useRef)(null);
|
|
37
|
-
|
|
38
|
-
// Auto-focus search input when search becomes active
|
|
39
|
-
(0, _react.useEffect)(() => {
|
|
40
|
-
if (isSearchActive && searchInputRef.current) {
|
|
41
|
-
searchInputRef.current.focus();
|
|
42
|
-
}
|
|
43
|
-
}, [isSearchActive]);
|
|
44
|
-
const handleSearchToggle = () => {
|
|
45
|
-
setIsSearchActive(!isSearchActive);
|
|
46
|
-
if (isSearchActive && onSearchChange) {
|
|
47
|
-
onSearchChange("");
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
const handleSearch = text => {
|
|
51
|
-
if (onSearchChange) {
|
|
52
|
-
onSearchChange(text);
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
// Simple function to get query display text
|
|
56
|
-
const getQueryText = query => {
|
|
57
|
-
if (!query?.queryKey) return "Unknown Query";
|
|
58
|
-
const keys = Array.isArray(query.queryKey) ? query.queryKey : [query.queryKey];
|
|
59
|
-
return keys.filter(k => k != null).map(k => String(k)).join(" › ") || "Unknown Query";
|
|
60
|
-
};
|
|
61
|
-
const getItemText = item => {
|
|
62
|
-
if ("queryKey" in item) {
|
|
63
|
-
return getQueryText(item);
|
|
64
|
-
} else {
|
|
65
|
-
return item.options.mutationKey ? (Array.isArray(item.options.mutationKey) ? item.options.mutationKey : [item.options.mutationKey]).filter(k => k != null).map(k => String(k)).join(" › ") || `Mutation #${item.mutationId}` : `Mutation #${item.mutationId}`;
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
const tabs = [{
|
|
69
|
-
key: "queries",
|
|
70
|
-
label: "Queries"
|
|
71
|
-
}, {
|
|
72
|
-
key: "mutations",
|
|
73
|
-
label: "Mutations"
|
|
74
|
-
}];
|
|
75
|
-
|
|
76
|
-
// Show details view when an item is selected
|
|
77
|
-
if (selectedQuery || selectedMutation) {
|
|
78
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
|
|
79
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
|
|
80
|
-
onBack: onBack
|
|
81
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
|
|
82
|
-
title: getItemText(selectedQuery ?? selectedMutation),
|
|
83
|
-
testID: "buoy-rq-detail-title"
|
|
84
|
-
})]
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
// Show browser view with tabs when no item is selected
|
|
89
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
|
|
90
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
|
|
91
|
-
title: "",
|
|
92
|
-
noMargin: true,
|
|
93
|
-
children: isSearchActive ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Search, {
|
|
94
|
-
value: searchText,
|
|
95
|
-
onChangeText: handleSearch,
|
|
96
|
-
onCancel: () => {
|
|
97
|
-
handleSearch("");
|
|
98
|
-
setIsSearchActive(false);
|
|
99
|
-
},
|
|
100
|
-
onDismiss: () => setIsSearchActive(false),
|
|
101
|
-
dismissOnBlur: true,
|
|
102
|
-
clearOnlyWhenText: true,
|
|
103
|
-
placeholder: "Search query keys...",
|
|
104
|
-
accessibilityLabel: "Search queries and mutations",
|
|
105
|
-
iconSize: 14
|
|
106
|
-
// These handles predate the shared field and are the reverse of
|
|
107
|
-
// its convention (container = "-field", input = bare); kept as-is
|
|
108
|
-
// so the e2e suite keeps its targets.
|
|
109
|
-
,
|
|
110
|
-
testID: "buoy-rq-search",
|
|
111
|
-
containerTestID: "buoy-rq-search-field",
|
|
112
|
-
clearTestID: "buoy-rq-search-clear",
|
|
113
|
-
inputProps: {
|
|
114
|
-
"sentry-label": "ignore react query search header"
|
|
115
|
-
}
|
|
116
|
-
}) : showWifiToggle ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
117
|
-
style: styles.tabRow,
|
|
118
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
119
|
-
style: styles.tabSelectorWrap,
|
|
120
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TabSelector, {
|
|
121
|
-
tabs: tabs,
|
|
122
|
-
activeTab: activeTab,
|
|
123
|
-
testIDPrefix: "buoy-rq-tab",
|
|
124
|
-
onTabChange: tab => onTabChange(tab)
|
|
125
|
-
})
|
|
126
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_WifiToggle.WifiToggle, {
|
|
127
|
-
size: 16,
|
|
128
|
-
testID: "buoy-rq-wifi"
|
|
129
|
-
})]
|
|
130
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TabSelector, {
|
|
131
|
-
tabs: tabs,
|
|
132
|
-
activeTab: activeTab,
|
|
133
|
-
testIDPrefix: "buoy-rq-tab",
|
|
134
|
-
onTabChange: tab => onTabChange(tab)
|
|
135
|
-
})
|
|
136
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader.Actions, {
|
|
137
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
138
|
-
"sentry-label": "ignore open search",
|
|
139
|
-
testID: "buoy-rq-search-open",
|
|
140
|
-
accessibilityRole: "button",
|
|
141
|
-
accessibilityLabel: "Search queries and mutations",
|
|
142
|
-
onPress: handleSearchToggle,
|
|
143
|
-
style: styles.headerActionButton,
|
|
144
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Search, {
|
|
145
|
-
size: 14,
|
|
146
|
-
color: _sharedUi.night.color.textSecondary
|
|
147
|
-
})
|
|
148
|
-
}), onFilterPress && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
149
|
-
"sentry-label": "ignore open filter",
|
|
150
|
-
testID: "buoy-rq-filters",
|
|
151
|
-
accessibilityRole: "button",
|
|
152
|
-
accessibilityLabel: hasActiveFilters ? "Filters, active" : "Filters",
|
|
153
|
-
onPress: onFilterPress,
|
|
154
|
-
style: [styles.headerActionButton, hasActiveFilters && styles.activeFilterButton],
|
|
155
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Filter, {
|
|
156
|
-
size: 14,
|
|
157
|
-
color: hasActiveFilters ? _sharedUi.night.color.accent : _sharedUi.night.color.textSecondary
|
|
158
|
-
})
|
|
159
|
-
}), onClearCache && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
160
|
-
"sentry-label": "ignore clear cache",
|
|
161
|
-
testID: "buoy-rq-clear-cache",
|
|
162
|
-
accessibilityRole: "button",
|
|
163
|
-
onPress: onClearCache,
|
|
164
|
-
style: [styles.headerActionButton, styles.clearCacheButton],
|
|
165
|
-
accessibilityLabel: `Clear ${activeTab} cache`,
|
|
166
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Trash, {
|
|
167
|
-
size: 14,
|
|
168
|
-
color: _sharedUi.night.color.warning
|
|
169
|
-
})
|
|
170
|
-
})]
|
|
171
|
-
})]
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
const styles = _reactNative.StyleSheet.create({
|
|
175
|
-
tabRow: {
|
|
176
|
-
flex: 1,
|
|
177
|
-
flexDirection: "row",
|
|
178
|
-
alignItems: "center",
|
|
179
|
-
gap: 12
|
|
180
|
-
},
|
|
181
|
-
tabSelectorWrap: {
|
|
182
|
-
flex: 1
|
|
183
|
-
},
|
|
184
|
-
headerActionButton: {
|
|
185
|
-
padding: 6,
|
|
186
|
-
borderRadius: 4
|
|
187
|
-
},
|
|
188
|
-
activeFilterButton: {
|
|
189
|
-
backgroundColor: _sharedUi.night.color.accentSoft
|
|
190
|
-
},
|
|
191
|
-
clearCacheButton: {
|
|
192
|
-
backgroundColor: _sharedUi.night.color.warningSoft
|
|
193
|
-
}
|
|
194
|
-
});
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ReactQueryModalHeader=ReactQueryModalHeader;var _sharedUi=require("@buoy-gg/shared-ui");var _react=require("react");var _reactNative=require("react-native");var _WifiToggle=require("../WifiToggle");var _jsxRuntime=require("react/jsx-runtime");function ReactQueryModalHeader({selectedQuery:c,selectedMutation:l,activeTab:o,onTabChange:u,onBack:x,searchText:g="",onSearchChange:a,onFilterPress:y,hasActiveFilters:i=false,onClearCache:d,showWifiToggle:j=false}){const[t,s]=(0,_react.useState)(false);const T=(0,_react.useRef)(false);const b=(0,_react.useRef)(null);(0,_react.useEffect)(()=>{if(t&&b.current){b.current.focus()}},[t]);const p=()=>{s(!t);if(t&&a){a("")}};const h=e=>{if(a){a(e)}};const q=e=>{if(!e?.queryKey)return"Unknown Query";const r=Array.isArray(e.queryKey)?e.queryKey:[e.queryKey];return r.filter(n=>n!=null).map(n=>String(n)).join(" \u203A ")||"Unknown Query"};const S=e=>{if("queryKey"in e){return q(e)}else{return e.options.mutationKey?(Array.isArray(e.options.mutationKey)?e.options.mutationKey:[e.options.mutationKey]).filter(r=>r!=null).map(r=>String(r)).join(" \u203A ")||`Mutation #${e.mutationId}`:`Mutation #${e.mutationId}`}};const f=[{key:"queries",label:"Queries"},{key:"mutations",label:"Mutations"}];if(c||l){return(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader,{children:[(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation,{onBack:x}),(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Content,{title:S(c??l),testID:"buoy-rq-detail-title"})]})}return(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader,{children:[(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Content,{title:"",noMargin:true,children:t?(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Search,{value:g,onChangeText:h,onCancel:()=>{h("");s(false)},onDismiss:()=>s(false),dismissOnBlur:true,clearOnlyWhenText:true,placeholder:"Search query keys...",accessibilityLabel:"Search queries and mutations",iconSize:14,testID:"buoy-rq-search",containerTestID:"buoy-rq-search-field",clearTestID:"buoy-rq-search-clear",inputProps:{"sentry-label":"ignore react query search header"}}):j?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.tabRow,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.tabSelectorWrap,children:(0,_jsxRuntime.jsx)(_sharedUi.TabSelector,{tabs:f,activeTab:o,testIDPrefix:"buoy-rq-tab",onTabChange:e=>u(e)})}),(0,_jsxRuntime.jsx)(_WifiToggle.WifiToggle,{size:16,testID:"buoy-rq-wifi"})]}):(0,_jsxRuntime.jsx)(_sharedUi.TabSelector,{tabs:f,activeTab:o,testIDPrefix:"buoy-rq-tab",onTabChange:e=>u(e)})}),(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader.Actions,{children:[(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{"sentry-label":"ignore open search",testID:"buoy-rq-search-open",accessibilityRole:"button",accessibilityLabel:"Search queries and mutations",onPress:p,style:styles.headerActionButton,children:(0,_jsxRuntime.jsx)(_sharedUi.Search,{size:14,color:_sharedUi.night.color.textSecondary})}),y&&(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{"sentry-label":"ignore open filter",testID:"buoy-rq-filters",accessibilityRole:"button",accessibilityLabel:i?"Filters, active":"Filters",onPress:y,style:[styles.headerActionButton,i&&styles.activeFilterButton],children:(0,_jsxRuntime.jsx)(_sharedUi.Filter,{size:14,color:i?_sharedUi.night.color.accent:_sharedUi.night.color.textSecondary})}),d&&(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{"sentry-label":"ignore clear cache",testID:"buoy-rq-clear-cache",accessibilityRole:"button",onPress:d,style:[styles.headerActionButton,styles.clearCacheButton],accessibilityLabel:`Clear ${o} cache`,children:(0,_jsxRuntime.jsx)(_sharedUi.Trash,{size:14,color:_sharedUi.night.color.warning})})]})]})}const styles=_reactNative.StyleSheet.create({tabRow:{flex:1,flexDirection:"row",alignItems:"center",gap:12},tabSelectorWrap:{flex:1},headerActionButton:{padding:6,borderRadius:4},activeFilterButton:{backgroundColor:_sharedUi.night.color.accentSoft},clearCacheButton:{backgroundColor:_sharedUi.night.color.warningSoft}});
|