@tanstack/react-query-devtools 5.0.0-alpha.12 → 5.0.0-alpha.17

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.
Files changed (73) hide show
  1. package/build/lib/CachePanel/ActiveQuery.d.ts +18 -0
  2. package/build/lib/CachePanel/ActiveQuery.esm.js +271 -0
  3. package/build/lib/CachePanel/ActiveQuery.esm.js.map +1 -0
  4. package/build/lib/CachePanel/ActiveQuery.js +275 -0
  5. package/build/lib/CachePanel/ActiveQuery.js.map +1 -0
  6. package/build/lib/CachePanel/ActiveQuery.mjs +257 -0
  7. package/build/lib/CachePanel/ActiveQuery.mjs.map +1 -0
  8. package/build/lib/CachePanel/CachePanel.d.ts +57 -0
  9. package/build/lib/CachePanel/CachePanel.esm.js +310 -0
  10. package/build/lib/CachePanel/CachePanel.esm.js.map +1 -0
  11. package/build/lib/CachePanel/CachePanel.js +315 -0
  12. package/build/lib/CachePanel/CachePanel.js.map +1 -0
  13. package/build/lib/CachePanel/CachePanel.mjs +310 -0
  14. package/build/lib/CachePanel/CachePanel.mjs.map +1 -0
  15. package/build/lib/CachePanel/Header/QueryStatusCount.d.ts +7 -0
  16. package/build/lib/CachePanel/Header/QueryStatusCount.esm.js +49 -0
  17. package/build/lib/CachePanel/Header/QueryStatusCount.esm.js.map +1 -0
  18. package/build/lib/CachePanel/Header/QueryStatusCount.js +53 -0
  19. package/build/lib/CachePanel/Header/QueryStatusCount.js.map +1 -0
  20. package/build/lib/CachePanel/Header/QueryStatusCount.mjs +49 -0
  21. package/build/lib/CachePanel/Header/QueryStatusCount.mjs.map +1 -0
  22. package/build/lib/CachePanel/QueryRow.d.ts +13 -0
  23. package/build/lib/CachePanel/QueryRow.esm.js +98 -0
  24. package/build/lib/CachePanel/QueryRow.esm.js.map +1 -0
  25. package/build/lib/CachePanel/QueryRow.js +102 -0
  26. package/build/lib/CachePanel/QueryRow.js.map +1 -0
  27. package/build/lib/CachePanel/QueryRow.mjs +82 -0
  28. package/build/lib/CachePanel/QueryRow.mjs.map +1 -0
  29. package/build/lib/devtools.d.ts +3 -64
  30. package/build/lib/devtools.esm.js +2 -669
  31. package/build/lib/devtools.esm.js.map +1 -1
  32. package/build/lib/devtools.js +3 -669
  33. package/build/lib/devtools.js.map +1 -1
  34. package/build/lib/devtools.mjs +2 -639
  35. package/build/lib/devtools.mjs.map +1 -1
  36. package/build/lib/index.esm.js +2 -1
  37. package/build/lib/index.esm.js.map +1 -1
  38. package/build/lib/index.js +2 -1
  39. package/build/lib/index.js.map +1 -1
  40. package/build/lib/index.mjs +2 -1
  41. package/build/lib/index.mjs.map +1 -1
  42. package/build/lib/index.prod.esm.js +754 -713
  43. package/build/lib/index.prod.esm.js.map +1 -1
  44. package/build/lib/index.prod.js +751 -710
  45. package/build/lib/index.prod.js.map +1 -1
  46. package/build/lib/index.prod.mjs +755 -714
  47. package/build/lib/index.prod.mjs.map +1 -1
  48. package/build/lib/styledComponents.esm.js +8 -0
  49. package/build/lib/styledComponents.esm.js.map +1 -1
  50. package/build/lib/styledComponents.js +8 -0
  51. package/build/lib/styledComponents.js.map +1 -1
  52. package/build/lib/styledComponents.mjs +8 -0
  53. package/build/lib/styledComponents.mjs.map +1 -1
  54. package/build/lib/types.d.ts +11 -0
  55. package/build/lib/useSubscribeToQueryCache.d.ts +3 -0
  56. package/build/lib/useSubscribeToQueryCache.esm.js +15 -0
  57. package/build/lib/useSubscribeToQueryCache.esm.js.map +1 -0
  58. package/build/lib/useSubscribeToQueryCache.js +19 -0
  59. package/build/lib/useSubscribeToQueryCache.js.map +1 -0
  60. package/build/lib/useSubscribeToQueryCache.mjs +15 -0
  61. package/build/lib/useSubscribeToQueryCache.mjs.map +1 -0
  62. package/build/umd/index.development.js +2394 -2353
  63. package/build/umd/index.development.js.map +1 -1
  64. package/package.json +1 -1
  65. package/src/CachePanel/ActiveQuery.tsx +380 -0
  66. package/src/CachePanel/CachePanel.tsx +439 -0
  67. package/src/CachePanel/Header/QueryStatusCount.tsx +93 -0
  68. package/src/CachePanel/QueryRow.tsx +125 -0
  69. package/src/__tests__/devtools.test.tsx +46 -0
  70. package/src/devtools.tsx +5 -1008
  71. package/src/styledComponents.ts +16 -0
  72. package/src/types.ts +12 -0
  73. package/src/useSubscribeToQueryCache.ts +26 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CachePanel.esm.js","sources":["../../../src/CachePanel/CachePanel.tsx"],"sourcesContent":["import React from 'react'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { useQueryClient, onlineManager } from '@tanstack/react-query'\nimport { rankItem } from '@tanstack/match-sorter-utils'\n\nimport { Panel, Button, Input, Select } from '../styledComponents'\nimport useSubscribeToQueryCache from '../useSubscribeToQueryCache'\nimport QueryStatusCount from './Header/QueryStatusCount'\nimport QueryRow from './QueryRow'\nimport ActiveQuery from './ActiveQuery'\nimport type { Side } from '../utils'\nimport { sortFns, getResizeHandleStyle, defaultPanelSize } from '../utils'\nimport { ThemeProvider, defaultTheme as theme } from '../theme'\nimport type { DevToolsErrorType } from '../types'\nimport useLocalStorage from '../useLocalStorage'\nimport Logo from '../Logo'\nimport ScreenReader from '../screenreader'\n\ninterface DevtoolsPanelOptions {\n /**\n * The standard React style object used to style a component with inline styles\n */\n style?: React.CSSProperties\n /**\n * The standard React className property used to style a component with classes\n */\n className?: string\n /**\n * A boolean variable indicating whether the panel is open or closed\n */\n isOpen?: boolean\n /**\n * nonce for style element for CSP\n */\n styleNonce?: string\n /**\n * A function that toggles the open and close state of the panel\n */\n setIsOpen: (isOpen: boolean) => void\n /**\n * Handles the opening and closing the devtools panel\n */\n onDragStart: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void\n /**\n * The position of the React Query devtools panel.\n * Defaults to 'bottom'.\n */\n position?: Side\n /**\n * Handles the panel position select change\n */\n onPositionChange?: (side: Side) => void\n /**\n * Show a close button inside the panel\n */\n showCloseButton?: boolean\n /**\n * Use this to add props to the close button. For example, you can add className, style (merge and override default style), onClick (extend default handler), etc.\n */\n closeButtonProps?: React.ComponentPropsWithoutRef<'button'>\n /**\n * Custom instance of QueryClient\n */\n queryClient?: QueryClient\n /**\n * Use this so you can define custom errors that can be shown in the devtools.\n */\n errorTypes?: DevToolsErrorType[]\n}\n\nexport const ReactQueryDevtoolsPanel = React.forwardRef<\n HTMLDivElement,\n DevtoolsPanelOptions\n>(function ReactQueryDevtoolsPanel(props, ref): React.ReactElement {\n const {\n isOpen = true,\n styleNonce,\n setIsOpen,\n queryClient,\n onDragStart,\n onPositionChange,\n showCloseButton,\n position,\n closeButtonProps = {},\n errorTypes = [],\n ...panelProps\n } = props\n\n const { onClick: onCloseClick, ...otherCloseButtonProps } = closeButtonProps\n\n const client = useQueryClient(queryClient)\n const queryCache = client.getQueryCache()\n\n const [sort, setSort] = useLocalStorage(\n 'reactQueryDevtoolsSortFn',\n Object.keys(sortFns)[0],\n )\n\n const [filter, setFilter] = useLocalStorage('reactQueryDevtoolsFilter', '')\n\n const [baseSort, setBaseSort] = useLocalStorage(\n 'reactQueryDevtoolsBaseSort',\n 1,\n )\n\n const sortFn = React.useMemo(() => sortFns[sort as string], [sort])\n\n const queriesCount = useSubscribeToQueryCache(\n queryCache,\n () => queryCache.getAll().length,\n !isOpen,\n )\n\n const [activeQueryHash, setActiveQueryHash] = useLocalStorage(\n 'reactQueryDevtoolsActiveQueryHash',\n '',\n )\n\n const queries = React.useMemo(() => {\n const unsortedQueries = queryCache.getAll()\n\n if (queriesCount === 0) {\n return []\n }\n\n const filtered = filter\n ? unsortedQueries.filter(\n (item) => rankItem(item.queryHash, filter).passed,\n )\n : [...unsortedQueries]\n\n const sorted = sortFn\n ? filtered.sort((a, b) => sortFn(a, b) * (baseSort as number))\n : filtered\n\n return sorted\n }, [baseSort, sortFn, filter, queriesCount, queryCache])\n\n const [isMockOffline, setMockOffline] = React.useState(false)\n\n return (\n <ThemeProvider theme={theme}>\n <Panel\n ref={ref}\n className=\"ReactQueryDevtoolsPanel\"\n aria-label=\"React Query Devtools Panel\"\n id=\"ReactQueryDevtoolsPanel\"\n {...panelProps}\n style={{\n height: defaultPanelSize,\n position: 'relative',\n ...panelProps.style,\n }}\n >\n <style\n nonce={styleNonce}\n dangerouslySetInnerHTML={{\n __html: `\n .ReactQueryDevtoolsPanel * {\n scrollbar-color: ${theme.backgroundAlt} ${theme.gray};\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar, .ReactQueryDevtoolsPanel scrollbar {\n width: 1em;\n height: 1em;\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar-track, .ReactQueryDevtoolsPanel scrollbar-track {\n background: ${theme.backgroundAlt};\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar-thumb, .ReactQueryDevtoolsPanel scrollbar-thumb {\n background: ${theme.gray};\n border-radius: .5em;\n border: 3px solid ${theme.backgroundAlt};\n }\n `,\n }}\n />\n <div\n style={getResizeHandleStyle(position)}\n onMouseDown={onDragStart}\n ></div>\n\n {isOpen && (\n <div\n style={{\n flex: '1 1 500px',\n minHeight: '40%',\n maxHeight: '100%',\n overflow: 'auto',\n borderRight: `1px solid ${theme.grayAlt}`,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <div\n style={{\n padding: '.5em',\n background: theme.backgroundAlt,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <button\n type=\"button\"\n aria-label=\"Close React Query Devtools\"\n aria-controls=\"ReactQueryDevtoolsPanel\"\n aria-haspopup=\"true\"\n aria-expanded=\"true\"\n onClick={() => setIsOpen(false)}\n style={{\n display: 'inline-flex',\n background: 'none',\n border: 0,\n padding: 0,\n marginRight: '.5em',\n cursor: 'pointer',\n }}\n >\n <Logo aria-hidden />\n <ScreenReader text=\"Close React Query Devtools\" />\n </button>\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '.5em',\n }}\n >\n <QueryStatusCount queryCache={queryCache} />\n {position && onPositionChange ? (\n <Select\n aria-label=\"Panel position\"\n value={position}\n style={{ marginInlineStart: '.5em' }}\n onChange={(e) => onPositionChange(e.target.value as Side)}\n >\n <option value=\"left\">Left</option>\n <option value=\"right\">Right</option>\n <option value=\"top\">Top</option>\n <option value=\"bottom\">Bottom</option>\n </Select>\n ) : null}\n </div>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: '0.5em',\n }}\n >\n <Input\n placeholder=\"Filter\"\n aria-label=\"Filter by queryhash\"\n value={filter ?? ''}\n onChange={(e) => setFilter(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Escape') setFilter('')\n }}\n style={{\n flex: '1',\n width: '100%',\n }}\n />\n <Select\n aria-label=\"Sort queries\"\n value={sort}\n onChange={(e) => setSort(e.target.value)}\n style={{\n flex: '1',\n minWidth: 75,\n marginRight: '.5em',\n }}\n >\n {Object.keys(sortFns).map((key) => (\n <option key={key} value={key}>\n Sort by {key}\n </option>\n ))}\n </Select>\n <Button\n type=\"button\"\n onClick={() => setBaseSort((old) => old * -1)}\n style={{\n padding: '.3em .4em',\n marginRight: '.5em',\n }}\n >\n {baseSort === 1 ? '⬆ Asc' : '⬇ Desc'}\n </Button>\n <Button\n title=\"Clear cache\"\n aria-label=\"Clear cache\"\n type=\"button\"\n onClick={() => queryCache.clear()}\n style={{\n padding: '.3em .4em',\n marginRight: '.5em',\n }}\n >\n Clear\n </Button>\n <Button\n type=\"button\"\n onClick={() => {\n if (isMockOffline) {\n onlineManager.setOnline(undefined)\n setMockOffline(false)\n window.dispatchEvent(new Event('online'))\n } else {\n onlineManager.setOnline(false)\n setMockOffline(true)\n window.dispatchEvent(new Event('offline'))\n }\n }}\n aria-label={\n isMockOffline\n ? 'Restore offline mock'\n : 'Mock offline behavior'\n }\n title={\n isMockOffline\n ? 'Restore offline mock'\n : 'Mock offline behavior'\n }\n style={{\n padding: '0',\n height: '2em',\n }}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"2em\"\n height=\"2em\"\n viewBox=\"0 0 24 24\"\n stroke={isMockOffline ? theme.danger : 'currentColor'}\n fill=\"none\"\n >\n {isMockOffline ? (\n <>\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\n <path d=\"M9.172 15.172a4 4 0 0 1 5.656 0\" />\n <path d=\"M6.343 12.343a7.963 7.963 0 0 1 3.864 -2.14m4.163 .155a7.965 7.965 0 0 1 3.287 2\" />\n <path d=\"M3.515 9.515a12 12 0 0 1 3.544 -2.455m3.101 -.92a12 12 0 0 1 10.325 3.374\" />\n <line x1=\"3\" y1=\"3\" x2=\"21\" y2=\"21\" />\n </>\n ) : (\n <>\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\n <path d=\"M9.172 15.172a4 4 0 0 1 5.656 0\" />\n <path d=\"M6.343 12.343a8 8 0 0 1 11.314 0\" />\n <path d=\"M3.515 9.515c4.686 -4.687 12.284 -4.687 17 0\" />\n </>\n )}\n </svg>\n <ScreenReader\n text={\n isMockOffline\n ? 'Restore offline mock'\n : 'Mock offline behavior'\n }\n />\n </Button>\n </div>\n </div>\n </div>\n <div\n style={{\n overflowY: 'auto',\n flex: '1',\n }}\n >\n {queries.map((query) => {\n return (\n <QueryRow\n queryKey={query.queryKey}\n activeQueryHash={activeQueryHash}\n setActiveQueryHash={setActiveQueryHash}\n key={query.queryHash}\n queryCache={queryCache}\n />\n )\n })}\n </div>\n </div>\n )}\n\n {activeQueryHash && isOpen ? (\n <ActiveQuery\n activeQueryHash={activeQueryHash}\n queryCache={queryCache}\n queryClient={client}\n errorTypes={errorTypes}\n />\n ) : null}\n\n {showCloseButton ? (\n <Button\n type=\"button\"\n aria-controls=\"ReactQueryDevtoolsPanel\"\n aria-haspopup=\"true\"\n aria-expanded=\"true\"\n {...(otherCloseButtonProps as Record<string, unknown>)}\n style={{\n position: 'absolute',\n zIndex: 99999,\n margin: '.5em',\n bottom: 0,\n left: 0,\n ...otherCloseButtonProps.style,\n }}\n onClick={(e) => {\n setIsOpen(false)\n onCloseClick?.(e)\n }}\n >\n Close\n </Button>\n ) : null}\n </Panel>\n </ThemeProvider>\n )\n})\n\nReactQueryDevtoolsPanel.displayName = 'ReactQueryDevtoolsPanel'\n\nexport default ReactQueryDevtoolsPanel\n"],"names":["ReactQueryDevtoolsPanel","React","forwardRef","props","ref","isOpen","styleNonce","setIsOpen","queryClient","onDragStart","onPositionChange","showCloseButton","position","closeButtonProps","errorTypes","panelProps","onClick","onCloseClick","otherCloseButtonProps","client","useQueryClient","queryCache","getQueryCache","sort","setSort","useLocalStorage","Object","keys","sortFns","filter","setFilter","baseSort","setBaseSort","sortFn","useMemo","queriesCount","useSubscribeToQueryCache","getAll","length","activeQueryHash","setActiveQueryHash","queries","unsortedQueries","filtered","item","rankItem","queryHash","passed","sorted","a","b","isMockOffline","setMockOffline","useState","theme","height","defaultPanelSize","style","__html","backgroundAlt","gray","getResizeHandleStyle","flex","minHeight","maxHeight","overflow","borderRight","grayAlt","display","flexDirection","padding","background","justifyContent","alignItems","border","marginRight","cursor","marginBottom","marginInlineStart","e","target","value","flexWrap","gap","key","width","minWidth","map","old","clear","onlineManager","setOnline","undefined","window","dispatchEvent","Event","danger","overflowY","query","queryKey","zIndex","margin","bottom","left","displayName"],"mappings":"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"}
@@ -0,0 +1,315 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
6
+ var React = require('react');
7
+ var reactQuery = require('@tanstack/react-query');
8
+ var matchSorterUtils = require('@tanstack/match-sorter-utils');
9
+ var styledComponents = require('../styledComponents.js');
10
+ var useSubscribeToQueryCache = require('../useSubscribeToQueryCache.js');
11
+ var QueryStatusCount = require('./Header/QueryStatusCount.js');
12
+ var QueryRow = require('./QueryRow.js');
13
+ var ActiveQuery = require('./ActiveQuery.js');
14
+ var utils = require('../utils.js');
15
+ var theme = require('../theme.js');
16
+ var useLocalStorage = require('../useLocalStorage.js');
17
+ var Logo = require('../Logo.js');
18
+ var screenreader = require('../screenreader.js');
19
+
20
+ const ReactQueryDevtoolsPanel = /*#__PURE__*/React.forwardRef(function ReactQueryDevtoolsPanel(props, ref) {
21
+ const {
22
+ isOpen = true,
23
+ styleNonce,
24
+ setIsOpen,
25
+ queryClient,
26
+ onDragStart,
27
+ onPositionChange,
28
+ showCloseButton,
29
+ position,
30
+ closeButtonProps = {},
31
+ errorTypes = [],
32
+ ...panelProps
33
+ } = props;
34
+ const {
35
+ onClick: onCloseClick,
36
+ ...otherCloseButtonProps
37
+ } = closeButtonProps;
38
+ const client = reactQuery.useQueryClient(queryClient);
39
+ const queryCache = client.getQueryCache();
40
+ const [sort, setSort] = useLocalStorage.default('reactQueryDevtoolsSortFn', Object.keys(utils.sortFns)[0]);
41
+ const [filter, setFilter] = useLocalStorage.default('reactQueryDevtoolsFilter', '');
42
+ const [baseSort, setBaseSort] = useLocalStorage.default('reactQueryDevtoolsBaseSort', 1);
43
+ const sortFn = React.useMemo(() => utils.sortFns[sort], [sort]);
44
+ const queriesCount = useSubscribeToQueryCache.default(queryCache, () => queryCache.getAll().length, !isOpen);
45
+ const [activeQueryHash, setActiveQueryHash] = useLocalStorage.default('reactQueryDevtoolsActiveQueryHash', '');
46
+ const queries = React.useMemo(() => {
47
+ const unsortedQueries = queryCache.getAll();
48
+ if (queriesCount === 0) {
49
+ return [];
50
+ }
51
+ const filtered = filter ? unsortedQueries.filter(item => matchSorterUtils.rankItem(item.queryHash, filter).passed) : [...unsortedQueries];
52
+ const sorted = sortFn ? filtered.sort((a, b) => sortFn(a, b) * baseSort) : filtered;
53
+ return sorted;
54
+ }, [baseSort, sortFn, filter, queriesCount, queryCache]);
55
+ const [isMockOffline, setMockOffline] = React.useState(false);
56
+ return /*#__PURE__*/React.createElement(theme.ThemeProvider, {
57
+ theme: theme.defaultTheme
58
+ }, /*#__PURE__*/React.createElement(styledComponents.Panel, _rollupPluginBabelHelpers.extends({
59
+ ref: ref,
60
+ className: "ReactQueryDevtoolsPanel",
61
+ "aria-label": "React Query Devtools Panel",
62
+ id: "ReactQueryDevtoolsPanel"
63
+ }, panelProps, {
64
+ style: {
65
+ height: utils.defaultPanelSize,
66
+ position: 'relative',
67
+ ...panelProps.style
68
+ }
69
+ }), /*#__PURE__*/React.createElement("style", {
70
+ nonce: styleNonce,
71
+ dangerouslySetInnerHTML: {
72
+ __html: `
73
+ .ReactQueryDevtoolsPanel * {
74
+ scrollbar-color: ${theme.defaultTheme.backgroundAlt} ${theme.defaultTheme.gray};
75
+ }
76
+
77
+ .ReactQueryDevtoolsPanel *::-webkit-scrollbar, .ReactQueryDevtoolsPanel scrollbar {
78
+ width: 1em;
79
+ height: 1em;
80
+ }
81
+
82
+ .ReactQueryDevtoolsPanel *::-webkit-scrollbar-track, .ReactQueryDevtoolsPanel scrollbar-track {
83
+ background: ${theme.defaultTheme.backgroundAlt};
84
+ }
85
+
86
+ .ReactQueryDevtoolsPanel *::-webkit-scrollbar-thumb, .ReactQueryDevtoolsPanel scrollbar-thumb {
87
+ background: ${theme.defaultTheme.gray};
88
+ border-radius: .5em;
89
+ border: 3px solid ${theme.defaultTheme.backgroundAlt};
90
+ }
91
+ `
92
+ }
93
+ }), /*#__PURE__*/React.createElement("div", {
94
+ style: utils.getResizeHandleStyle(position),
95
+ onMouseDown: onDragStart
96
+ }), isOpen && /*#__PURE__*/React.createElement("div", {
97
+ style: {
98
+ flex: '1 1 500px',
99
+ minHeight: '40%',
100
+ maxHeight: '100%',
101
+ overflow: 'auto',
102
+ borderRight: `1px solid ${theme.defaultTheme.grayAlt}`,
103
+ display: 'flex',
104
+ flexDirection: 'column'
105
+ }
106
+ }, /*#__PURE__*/React.createElement("div", {
107
+ style: {
108
+ padding: '.5em',
109
+ background: theme.defaultTheme.backgroundAlt,
110
+ display: 'flex',
111
+ justifyContent: 'space-between',
112
+ alignItems: 'center'
113
+ }
114
+ }, /*#__PURE__*/React.createElement("button", {
115
+ type: "button",
116
+ "aria-label": "Close React Query Devtools",
117
+ "aria-controls": "ReactQueryDevtoolsPanel",
118
+ "aria-haspopup": "true",
119
+ "aria-expanded": "true",
120
+ onClick: () => setIsOpen(false),
121
+ style: {
122
+ display: 'inline-flex',
123
+ background: 'none',
124
+ border: 0,
125
+ padding: 0,
126
+ marginRight: '.5em',
127
+ cursor: 'pointer'
128
+ }
129
+ }, /*#__PURE__*/React.createElement(Logo.default, {
130
+ "aria-hidden": true
131
+ }), /*#__PURE__*/React.createElement(screenreader.default, {
132
+ text: "Close React Query Devtools"
133
+ })), /*#__PURE__*/React.createElement("div", {
134
+ style: {
135
+ display: 'flex',
136
+ flexDirection: 'column'
137
+ }
138
+ }, /*#__PURE__*/React.createElement("div", {
139
+ style: {
140
+ display: 'flex',
141
+ justifyContent: 'space-between',
142
+ alignItems: 'center',
143
+ marginBottom: '.5em'
144
+ }
145
+ }, /*#__PURE__*/React.createElement(QueryStatusCount.default, {
146
+ queryCache: queryCache
147
+ }), position && onPositionChange ? /*#__PURE__*/React.createElement(styledComponents.Select, {
148
+ "aria-label": "Panel position",
149
+ value: position,
150
+ style: {
151
+ marginInlineStart: '.5em'
152
+ },
153
+ onChange: e => onPositionChange(e.target.value)
154
+ }, /*#__PURE__*/React.createElement("option", {
155
+ value: "left"
156
+ }, "Left"), /*#__PURE__*/React.createElement("option", {
157
+ value: "right"
158
+ }, "Right"), /*#__PURE__*/React.createElement("option", {
159
+ value: "top"
160
+ }, "Top"), /*#__PURE__*/React.createElement("option", {
161
+ value: "bottom"
162
+ }, "Bottom")) : null), /*#__PURE__*/React.createElement("div", {
163
+ style: {
164
+ display: 'flex',
165
+ alignItems: 'center',
166
+ flexWrap: 'wrap',
167
+ gap: '0.5em'
168
+ }
169
+ }, /*#__PURE__*/React.createElement(styledComponents.Input, {
170
+ placeholder: "Filter",
171
+ "aria-label": "Filter by queryhash",
172
+ value: filter != null ? filter : '',
173
+ onChange: e => setFilter(e.target.value),
174
+ onKeyDown: e => {
175
+ if (e.key === 'Escape') setFilter('');
176
+ },
177
+ style: {
178
+ flex: '1',
179
+ width: '100%'
180
+ }
181
+ }), /*#__PURE__*/React.createElement(styledComponents.Select, {
182
+ "aria-label": "Sort queries",
183
+ value: sort,
184
+ onChange: e => setSort(e.target.value),
185
+ style: {
186
+ flex: '1',
187
+ minWidth: 75,
188
+ marginRight: '.5em'
189
+ }
190
+ }, Object.keys(utils.sortFns).map(key => /*#__PURE__*/React.createElement("option", {
191
+ key: key,
192
+ value: key
193
+ }, "Sort by ", key))), /*#__PURE__*/React.createElement(styledComponents.Button, {
194
+ type: "button",
195
+ onClick: () => setBaseSort(old => old * -1),
196
+ style: {
197
+ padding: '.3em .4em',
198
+ marginRight: '.5em'
199
+ }
200
+ }, baseSort === 1 ? '⬆ Asc' : '⬇ Desc'), /*#__PURE__*/React.createElement(styledComponents.Button, {
201
+ title: "Clear cache",
202
+ "aria-label": "Clear cache",
203
+ type: "button",
204
+ onClick: () => queryCache.clear(),
205
+ style: {
206
+ padding: '.3em .4em',
207
+ marginRight: '.5em'
208
+ }
209
+ }, "Clear"), /*#__PURE__*/React.createElement(styledComponents.Button, {
210
+ type: "button",
211
+ onClick: () => {
212
+ if (isMockOffline) {
213
+ reactQuery.onlineManager.setOnline(undefined);
214
+ setMockOffline(false);
215
+ window.dispatchEvent(new Event('online'));
216
+ } else {
217
+ reactQuery.onlineManager.setOnline(false);
218
+ setMockOffline(true);
219
+ window.dispatchEvent(new Event('offline'));
220
+ }
221
+ },
222
+ "aria-label": isMockOffline ? 'Restore offline mock' : 'Mock offline behavior',
223
+ title: isMockOffline ? 'Restore offline mock' : 'Mock offline behavior',
224
+ style: {
225
+ padding: '0',
226
+ height: '2em'
227
+ }
228
+ }, /*#__PURE__*/React.createElement("svg", {
229
+ xmlns: "http://www.w3.org/2000/svg",
230
+ width: "2em",
231
+ height: "2em",
232
+ viewBox: "0 0 24 24",
233
+ stroke: isMockOffline ? theme.defaultTheme.danger : 'currentColor',
234
+ fill: "none"
235
+ }, isMockOffline ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("path", {
236
+ stroke: "none",
237
+ d: "M0 0h24v24H0z",
238
+ fill: "none"
239
+ }), /*#__PURE__*/React.createElement("line", {
240
+ x1: "12",
241
+ y1: "18",
242
+ x2: "12.01",
243
+ y2: "18"
244
+ }), /*#__PURE__*/React.createElement("path", {
245
+ d: "M9.172 15.172a4 4 0 0 1 5.656 0"
246
+ }), /*#__PURE__*/React.createElement("path", {
247
+ d: "M6.343 12.343a7.963 7.963 0 0 1 3.864 -2.14m4.163 .155a7.965 7.965 0 0 1 3.287 2"
248
+ }), /*#__PURE__*/React.createElement("path", {
249
+ d: "M3.515 9.515a12 12 0 0 1 3.544 -2.455m3.101 -.92a12 12 0 0 1 10.325 3.374"
250
+ }), /*#__PURE__*/React.createElement("line", {
251
+ x1: "3",
252
+ y1: "3",
253
+ x2: "21",
254
+ y2: "21"
255
+ })) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("path", {
256
+ stroke: "none",
257
+ d: "M0 0h24v24H0z",
258
+ fill: "none"
259
+ }), /*#__PURE__*/React.createElement("line", {
260
+ x1: "12",
261
+ y1: "18",
262
+ x2: "12.01",
263
+ y2: "18"
264
+ }), /*#__PURE__*/React.createElement("path", {
265
+ d: "M9.172 15.172a4 4 0 0 1 5.656 0"
266
+ }), /*#__PURE__*/React.createElement("path", {
267
+ d: "M6.343 12.343a8 8 0 0 1 11.314 0"
268
+ }), /*#__PURE__*/React.createElement("path", {
269
+ d: "M3.515 9.515c4.686 -4.687 12.284 -4.687 17 0"
270
+ }))), /*#__PURE__*/React.createElement(screenreader.default, {
271
+ text: isMockOffline ? 'Restore offline mock' : 'Mock offline behavior'
272
+ }))))), /*#__PURE__*/React.createElement("div", {
273
+ style: {
274
+ overflowY: 'auto',
275
+ flex: '1'
276
+ }
277
+ }, queries.map(query => {
278
+ return /*#__PURE__*/React.createElement(QueryRow.default, {
279
+ queryKey: query.queryKey,
280
+ activeQueryHash: activeQueryHash,
281
+ setActiveQueryHash: setActiveQueryHash,
282
+ key: query.queryHash,
283
+ queryCache: queryCache
284
+ });
285
+ }))), activeQueryHash && isOpen ? /*#__PURE__*/React.createElement(ActiveQuery.default, {
286
+ activeQueryHash: activeQueryHash,
287
+ queryCache: queryCache,
288
+ queryClient: client,
289
+ errorTypes: errorTypes
290
+ }) : null, showCloseButton ? /*#__PURE__*/React.createElement(styledComponents.Button, _rollupPluginBabelHelpers.extends({
291
+ type: "button",
292
+ "aria-controls": "ReactQueryDevtoolsPanel",
293
+ "aria-haspopup": "true",
294
+ "aria-expanded": "true"
295
+ }, otherCloseButtonProps, {
296
+ style: {
297
+ position: 'absolute',
298
+ zIndex: 99999,
299
+ margin: '.5em',
300
+ bottom: 0,
301
+ left: 0,
302
+ ...otherCloseButtonProps.style
303
+ },
304
+ onClick: e => {
305
+ setIsOpen(false);
306
+ onCloseClick == null ? void 0 : onCloseClick(e);
307
+ }
308
+ }), "Close") : null));
309
+ });
310
+ ReactQueryDevtoolsPanel.displayName = 'ReactQueryDevtoolsPanel';
311
+ var ReactQueryDevtoolsPanel$1 = ReactQueryDevtoolsPanel;
312
+
313
+ exports.ReactQueryDevtoolsPanel = ReactQueryDevtoolsPanel;
314
+ exports.default = ReactQueryDevtoolsPanel$1;
315
+ //# sourceMappingURL=CachePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CachePanel.js","sources":["../../../src/CachePanel/CachePanel.tsx"],"sourcesContent":["import React from 'react'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { useQueryClient, onlineManager } from '@tanstack/react-query'\nimport { rankItem } from '@tanstack/match-sorter-utils'\n\nimport { Panel, Button, Input, Select } from '../styledComponents'\nimport useSubscribeToQueryCache from '../useSubscribeToQueryCache'\nimport QueryStatusCount from './Header/QueryStatusCount'\nimport QueryRow from './QueryRow'\nimport ActiveQuery from './ActiveQuery'\nimport type { Side } from '../utils'\nimport { sortFns, getResizeHandleStyle, defaultPanelSize } from '../utils'\nimport { ThemeProvider, defaultTheme as theme } from '../theme'\nimport type { DevToolsErrorType } from '../types'\nimport useLocalStorage from '../useLocalStorage'\nimport Logo from '../Logo'\nimport ScreenReader from '../screenreader'\n\ninterface DevtoolsPanelOptions {\n /**\n * The standard React style object used to style a component with inline styles\n */\n style?: React.CSSProperties\n /**\n * The standard React className property used to style a component with classes\n */\n className?: string\n /**\n * A boolean variable indicating whether the panel is open or closed\n */\n isOpen?: boolean\n /**\n * nonce for style element for CSP\n */\n styleNonce?: string\n /**\n * A function that toggles the open and close state of the panel\n */\n setIsOpen: (isOpen: boolean) => void\n /**\n * Handles the opening and closing the devtools panel\n */\n onDragStart: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void\n /**\n * The position of the React Query devtools panel.\n * Defaults to 'bottom'.\n */\n position?: Side\n /**\n * Handles the panel position select change\n */\n onPositionChange?: (side: Side) => void\n /**\n * Show a close button inside the panel\n */\n showCloseButton?: boolean\n /**\n * Use this to add props to the close button. For example, you can add className, style (merge and override default style), onClick (extend default handler), etc.\n */\n closeButtonProps?: React.ComponentPropsWithoutRef<'button'>\n /**\n * Custom instance of QueryClient\n */\n queryClient?: QueryClient\n /**\n * Use this so you can define custom errors that can be shown in the devtools.\n */\n errorTypes?: DevToolsErrorType[]\n}\n\nexport const ReactQueryDevtoolsPanel = React.forwardRef<\n HTMLDivElement,\n DevtoolsPanelOptions\n>(function ReactQueryDevtoolsPanel(props, ref): React.ReactElement {\n const {\n isOpen = true,\n styleNonce,\n setIsOpen,\n queryClient,\n onDragStart,\n onPositionChange,\n showCloseButton,\n position,\n closeButtonProps = {},\n errorTypes = [],\n ...panelProps\n } = props\n\n const { onClick: onCloseClick, ...otherCloseButtonProps } = closeButtonProps\n\n const client = useQueryClient(queryClient)\n const queryCache = client.getQueryCache()\n\n const [sort, setSort] = useLocalStorage(\n 'reactQueryDevtoolsSortFn',\n Object.keys(sortFns)[0],\n )\n\n const [filter, setFilter] = useLocalStorage('reactQueryDevtoolsFilter', '')\n\n const [baseSort, setBaseSort] = useLocalStorage(\n 'reactQueryDevtoolsBaseSort',\n 1,\n )\n\n const sortFn = React.useMemo(() => sortFns[sort as string], [sort])\n\n const queriesCount = useSubscribeToQueryCache(\n queryCache,\n () => queryCache.getAll().length,\n !isOpen,\n )\n\n const [activeQueryHash, setActiveQueryHash] = useLocalStorage(\n 'reactQueryDevtoolsActiveQueryHash',\n '',\n )\n\n const queries = React.useMemo(() => {\n const unsortedQueries = queryCache.getAll()\n\n if (queriesCount === 0) {\n return []\n }\n\n const filtered = filter\n ? unsortedQueries.filter(\n (item) => rankItem(item.queryHash, filter).passed,\n )\n : [...unsortedQueries]\n\n const sorted = sortFn\n ? filtered.sort((a, b) => sortFn(a, b) * (baseSort as number))\n : filtered\n\n return sorted\n }, [baseSort, sortFn, filter, queriesCount, queryCache])\n\n const [isMockOffline, setMockOffline] = React.useState(false)\n\n return (\n <ThemeProvider theme={theme}>\n <Panel\n ref={ref}\n className=\"ReactQueryDevtoolsPanel\"\n aria-label=\"React Query Devtools Panel\"\n id=\"ReactQueryDevtoolsPanel\"\n {...panelProps}\n style={{\n height: defaultPanelSize,\n position: 'relative',\n ...panelProps.style,\n }}\n >\n <style\n nonce={styleNonce}\n dangerouslySetInnerHTML={{\n __html: `\n .ReactQueryDevtoolsPanel * {\n scrollbar-color: ${theme.backgroundAlt} ${theme.gray};\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar, .ReactQueryDevtoolsPanel scrollbar {\n width: 1em;\n height: 1em;\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar-track, .ReactQueryDevtoolsPanel scrollbar-track {\n background: ${theme.backgroundAlt};\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar-thumb, .ReactQueryDevtoolsPanel scrollbar-thumb {\n background: ${theme.gray};\n border-radius: .5em;\n border: 3px solid ${theme.backgroundAlt};\n }\n `,\n }}\n />\n <div\n style={getResizeHandleStyle(position)}\n onMouseDown={onDragStart}\n ></div>\n\n {isOpen && (\n <div\n style={{\n flex: '1 1 500px',\n minHeight: '40%',\n maxHeight: '100%',\n overflow: 'auto',\n borderRight: `1px solid ${theme.grayAlt}`,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <div\n style={{\n padding: '.5em',\n background: theme.backgroundAlt,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <button\n type=\"button\"\n aria-label=\"Close React Query Devtools\"\n aria-controls=\"ReactQueryDevtoolsPanel\"\n aria-haspopup=\"true\"\n aria-expanded=\"true\"\n onClick={() => setIsOpen(false)}\n style={{\n display: 'inline-flex',\n background: 'none',\n border: 0,\n padding: 0,\n marginRight: '.5em',\n cursor: 'pointer',\n }}\n >\n <Logo aria-hidden />\n <ScreenReader text=\"Close React Query Devtools\" />\n </button>\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '.5em',\n }}\n >\n <QueryStatusCount queryCache={queryCache} />\n {position && onPositionChange ? (\n <Select\n aria-label=\"Panel position\"\n value={position}\n style={{ marginInlineStart: '.5em' }}\n onChange={(e) => onPositionChange(e.target.value as Side)}\n >\n <option value=\"left\">Left</option>\n <option value=\"right\">Right</option>\n <option value=\"top\">Top</option>\n <option value=\"bottom\">Bottom</option>\n </Select>\n ) : null}\n </div>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: '0.5em',\n }}\n >\n <Input\n placeholder=\"Filter\"\n aria-label=\"Filter by queryhash\"\n value={filter ?? ''}\n onChange={(e) => setFilter(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Escape') setFilter('')\n }}\n style={{\n flex: '1',\n width: '100%',\n }}\n />\n <Select\n aria-label=\"Sort queries\"\n value={sort}\n onChange={(e) => setSort(e.target.value)}\n style={{\n flex: '1',\n minWidth: 75,\n marginRight: '.5em',\n }}\n >\n {Object.keys(sortFns).map((key) => (\n <option key={key} value={key}>\n Sort by {key}\n </option>\n ))}\n </Select>\n <Button\n type=\"button\"\n onClick={() => setBaseSort((old) => old * -1)}\n style={{\n padding: '.3em .4em',\n marginRight: '.5em',\n }}\n >\n {baseSort === 1 ? '⬆ Asc' : '⬇ Desc'}\n </Button>\n <Button\n title=\"Clear cache\"\n aria-label=\"Clear cache\"\n type=\"button\"\n onClick={() => queryCache.clear()}\n style={{\n padding: '.3em .4em',\n marginRight: '.5em',\n }}\n >\n Clear\n </Button>\n <Button\n type=\"button\"\n onClick={() => {\n if (isMockOffline) {\n onlineManager.setOnline(undefined)\n setMockOffline(false)\n window.dispatchEvent(new Event('online'))\n } else {\n onlineManager.setOnline(false)\n setMockOffline(true)\n window.dispatchEvent(new Event('offline'))\n }\n }}\n aria-label={\n isMockOffline\n ? 'Restore offline mock'\n : 'Mock offline behavior'\n }\n title={\n isMockOffline\n ? 'Restore offline mock'\n : 'Mock offline behavior'\n }\n style={{\n padding: '0',\n height: '2em',\n }}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"2em\"\n height=\"2em\"\n viewBox=\"0 0 24 24\"\n stroke={isMockOffline ? theme.danger : 'currentColor'}\n fill=\"none\"\n >\n {isMockOffline ? (\n <>\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\n <path d=\"M9.172 15.172a4 4 0 0 1 5.656 0\" />\n <path d=\"M6.343 12.343a7.963 7.963 0 0 1 3.864 -2.14m4.163 .155a7.965 7.965 0 0 1 3.287 2\" />\n <path d=\"M3.515 9.515a12 12 0 0 1 3.544 -2.455m3.101 -.92a12 12 0 0 1 10.325 3.374\" />\n <line x1=\"3\" y1=\"3\" x2=\"21\" y2=\"21\" />\n </>\n ) : (\n <>\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\n <path d=\"M9.172 15.172a4 4 0 0 1 5.656 0\" />\n <path d=\"M6.343 12.343a8 8 0 0 1 11.314 0\" />\n <path d=\"M3.515 9.515c4.686 -4.687 12.284 -4.687 17 0\" />\n </>\n )}\n </svg>\n <ScreenReader\n text={\n isMockOffline\n ? 'Restore offline mock'\n : 'Mock offline behavior'\n }\n />\n </Button>\n </div>\n </div>\n </div>\n <div\n style={{\n overflowY: 'auto',\n flex: '1',\n }}\n >\n {queries.map((query) => {\n return (\n <QueryRow\n queryKey={query.queryKey}\n activeQueryHash={activeQueryHash}\n setActiveQueryHash={setActiveQueryHash}\n key={query.queryHash}\n queryCache={queryCache}\n />\n )\n })}\n </div>\n </div>\n )}\n\n {activeQueryHash && isOpen ? (\n <ActiveQuery\n activeQueryHash={activeQueryHash}\n queryCache={queryCache}\n queryClient={client}\n errorTypes={errorTypes}\n />\n ) : null}\n\n {showCloseButton ? (\n <Button\n type=\"button\"\n aria-controls=\"ReactQueryDevtoolsPanel\"\n aria-haspopup=\"true\"\n aria-expanded=\"true\"\n {...(otherCloseButtonProps as Record<string, unknown>)}\n style={{\n position: 'absolute',\n zIndex: 99999,\n margin: '.5em',\n bottom: 0,\n left: 0,\n ...otherCloseButtonProps.style,\n }}\n onClick={(e) => {\n setIsOpen(false)\n onCloseClick?.(e)\n }}\n >\n Close\n </Button>\n ) : null}\n </Panel>\n </ThemeProvider>\n )\n})\n\nReactQueryDevtoolsPanel.displayName = 'ReactQueryDevtoolsPanel'\n\nexport default ReactQueryDevtoolsPanel\n"],"names":["ReactQueryDevtoolsPanel","React","forwardRef","props","ref","isOpen","styleNonce","setIsOpen","queryClient","onDragStart","onPositionChange","showCloseButton","position","closeButtonProps","errorTypes","panelProps","onClick","onCloseClick","otherCloseButtonProps","client","useQueryClient","queryCache","getQueryCache","sort","setSort","useLocalStorage","Object","keys","sortFns","filter","setFilter","baseSort","setBaseSort","sortFn","useMemo","queriesCount","useSubscribeToQueryCache","getAll","length","activeQueryHash","setActiveQueryHash","queries","unsortedQueries","filtered","item","rankItem","queryHash","passed","sorted","a","b","isMockOffline","setMockOffline","useState","ThemeProvider","theme","Panel","_extends","height","defaultPanelSize","style","__html","backgroundAlt","gray","getResizeHandleStyle","flex","minHeight","maxHeight","overflow","borderRight","grayAlt","display","flexDirection","padding","background","justifyContent","alignItems","border","marginRight","cursor","Logo","ScreenReader","marginBottom","QueryStatusCount","Select","marginInlineStart","e","target","value","flexWrap","gap","Input","key","width","minWidth","map","Button","old","clear","onlineManager","setOnline","undefined","window","dispatchEvent","Event","danger","overflowY","query","QueryRow","queryKey","ActiveQuery","zIndex","margin","bottom","left","displayName"],"mappings":"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"}