@tanstack/router-devtools 0.0.1-alpha.0

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 (76) hide show
  1. package/README.md +3 -0
  2. package/build/cjs/Explorer.js +240 -0
  3. package/build/cjs/Explorer.js.map +1 -0
  4. package/build/cjs/Logo.js +73 -0
  5. package/build/cjs/Logo.js.map +1 -0
  6. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +49 -0
  7. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  8. package/build/cjs/devtools.js +593 -0
  9. package/build/cjs/devtools.js.map +1 -0
  10. package/build/cjs/index.js +21 -0
  11. package/build/cjs/index.js.map +1 -0
  12. package/build/cjs/packages/react-location-devtools/src/Explorer.js +240 -0
  13. package/build/cjs/packages/react-location-devtools/src/Explorer.js.map +1 -0
  14. package/build/cjs/packages/react-location-devtools/src/Logo.js +73 -0
  15. package/build/cjs/packages/react-location-devtools/src/Logo.js.map +1 -0
  16. package/build/cjs/packages/react-location-devtools/src/devtools.js +614 -0
  17. package/build/cjs/packages/react-location-devtools/src/devtools.js.map +1 -0
  18. package/build/cjs/packages/react-location-devtools/src/index.js +21 -0
  19. package/build/cjs/packages/react-location-devtools/src/index.js.map +1 -0
  20. package/build/cjs/packages/react-location-devtools/src/styledComponents.js +107 -0
  21. package/build/cjs/packages/react-location-devtools/src/styledComponents.js.map +1 -0
  22. package/build/cjs/packages/react-location-devtools/src/theme.js +54 -0
  23. package/build/cjs/packages/react-location-devtools/src/theme.js.map +1 -0
  24. package/build/cjs/packages/react-location-devtools/src/useLocalStorage.js +65 -0
  25. package/build/cjs/packages/react-location-devtools/src/useLocalStorage.js.map +1 -0
  26. package/build/cjs/packages/react-location-devtools/src/useMediaQuery.js +57 -0
  27. package/build/cjs/packages/react-location-devtools/src/useMediaQuery.js.map +1 -0
  28. package/build/cjs/packages/react-location-devtools/src/utils.js +117 -0
  29. package/build/cjs/packages/react-location-devtools/src/utils.js.map +1 -0
  30. package/build/cjs/packages/react-router-devtools/src/Explorer.js +245 -0
  31. package/build/cjs/packages/react-router-devtools/src/Explorer.js.map +1 -0
  32. package/build/cjs/packages/react-router-devtools/src/Logo.js +73 -0
  33. package/build/cjs/packages/react-router-devtools/src/Logo.js.map +1 -0
  34. package/build/cjs/packages/react-router-devtools/src/devtools.js +654 -0
  35. package/build/cjs/packages/react-router-devtools/src/devtools.js.map +1 -0
  36. package/build/cjs/packages/react-router-devtools/src/index.js +21 -0
  37. package/build/cjs/packages/react-router-devtools/src/index.js.map +1 -0
  38. package/build/cjs/packages/react-router-devtools/src/styledComponents.js +107 -0
  39. package/build/cjs/packages/react-router-devtools/src/styledComponents.js.map +1 -0
  40. package/build/cjs/packages/react-router-devtools/src/theme.js +54 -0
  41. package/build/cjs/packages/react-router-devtools/src/theme.js.map +1 -0
  42. package/build/cjs/packages/react-router-devtools/src/useLocalStorage.js +65 -0
  43. package/build/cjs/packages/react-router-devtools/src/useLocalStorage.js.map +1 -0
  44. package/build/cjs/packages/react-router-devtools/src/useMediaQuery.js +57 -0
  45. package/build/cjs/packages/react-router-devtools/src/useMediaQuery.js.map +1 -0
  46. package/build/cjs/packages/react-router-devtools/src/utils.js +117 -0
  47. package/build/cjs/packages/react-router-devtools/src/utils.js.map +1 -0
  48. package/build/cjs/styledComponents.js +107 -0
  49. package/build/cjs/styledComponents.js.map +1 -0
  50. package/build/cjs/theme.js +54 -0
  51. package/build/cjs/theme.js.map +1 -0
  52. package/build/cjs/useLocalStorage.js +65 -0
  53. package/build/cjs/useLocalStorage.js.map +1 -0
  54. package/build/cjs/useMediaQuery.js +57 -0
  55. package/build/cjs/useMediaQuery.js.map +1 -0
  56. package/build/cjs/utils.js +117 -0
  57. package/build/cjs/utils.js.map +1 -0
  58. package/build/esm/index.js +2013 -0
  59. package/build/esm/index.js.map +1 -0
  60. package/build/stats-html.html +4034 -0
  61. package/build/stats-react.json +9681 -0
  62. package/build/types/index.d.ts +76 -0
  63. package/build/umd/index.development.js +2043 -0
  64. package/build/umd/index.development.js.map +1 -0
  65. package/build/umd/index.production.js +12 -0
  66. package/build/umd/index.production.js.map +1 -0
  67. package/package.json +49 -0
  68. package/src/Explorer.tsx +288 -0
  69. package/src/Logo.tsx +37 -0
  70. package/src/devtools.tsx +960 -0
  71. package/src/index.tsx +1 -0
  72. package/src/styledComponents.ts +106 -0
  73. package/src/theme.tsx +31 -0
  74. package/src/useLocalStorage.ts +52 -0
  75. package/src/useMediaQuery.ts +36 -0
  76. package/src/utils.ts +151 -0
@@ -0,0 +1,593 @@
1
+ /**
2
+ * react-location-devtools
3
+ *
4
+ * Copyright (c) TanStack
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE.md file in the root directory of this source tree.
8
+ *
9
+ * @license MIT
10
+ */
11
+ 'use strict';
12
+
13
+ Object.defineProperty(exports, '__esModule', { value: true });
14
+
15
+ var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
16
+ var React = require('react');
17
+ var reactLocation = require('@tanstack/react-location');
18
+ var useLocalStorage = require('./useLocalStorage.js');
19
+ var utils = require('./utils.js');
20
+ var styledComponents = require('./styledComponents.js');
21
+ var theme = require('./theme.js');
22
+ var Explorer = require('./Explorer.js');
23
+ var Logo = require('./Logo.js');
24
+
25
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
26
+
27
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
28
+
29
+ const _excluded = ["style"],
30
+ _excluded2 = ["style", "onClick"],
31
+ _excluded3 = ["style", "onClick"],
32
+ _excluded4 = ["isOpen", "setIsOpen", "handleDragStart", "useRouter"],
33
+ _excluded5 = ["listeners", "buildLocation", "mount", "update", "buildNext", "navigate", "cancelMatches", "loadLocation", "cleanPreloadCache", "loadRoute", "matchRoutes", "resolveMatches", "loadMatches", "invalidateRoute", "getOutletElement", "resolvePath", "matchRoute", "loaderData", "getLoaderData", "buildLinkInfo", "__experimental__createSnapshot", "stringifySearch", "parseSearch", "destroy", "defaultPendingElement", "rootMatch"],
34
+ _excluded6 = ["abortController", "resolve", "ready", "cancel", "startPending", "cancelPending", "setParentMatch", "load", "router", "element", "errorElement", "pendingElement", "dataPromise", "onExit"];
35
+ const isServer = typeof window === 'undefined';
36
+ function ReactLocationDevtools(_ref) {
37
+ let {
38
+ initialIsOpen,
39
+ panelProps = {},
40
+ closeButtonProps = {},
41
+ toggleButtonProps = {},
42
+ position = 'bottom-left',
43
+ containerElement: Container = 'footer',
44
+ useRouter: useRouterImpl = reactLocation.useRouter
45
+ } = _ref;
46
+ const rootRef = React__default["default"].useRef(null);
47
+ const panelRef = React__default["default"].useRef(null);
48
+ const [isOpen, setIsOpen] = useLocalStorage["default"]('reactLocationDevtoolsOpen', initialIsOpen);
49
+ const [devtoolsHeight, setDevtoolsHeight] = useLocalStorage["default"]('reactLocationDevtoolsHeight', null);
50
+ const [isResolvedOpen, setIsResolvedOpen] = utils.useSafeState(false);
51
+ const [isResizing, setIsResizing] = utils.useSafeState(false);
52
+ const isMounted = utils.useIsMounted();
53
+
54
+ const _handleDragStart = (panelElement, startEvent) => {
55
+ var _panelElement$getBoun;
56
+
57
+ if (startEvent.button !== 0) return; // Only allow left click for drag
58
+
59
+ setIsResizing(true);
60
+ const dragInfo = {
61
+ originalHeight: (_panelElement$getBoun = panelElement == null ? void 0 : panelElement.getBoundingClientRect().height) != null ? _panelElement$getBoun : 0,
62
+ pageY: startEvent.pageY
63
+ };
64
+
65
+ const run = moveEvent => {
66
+ const delta = dragInfo.pageY - moveEvent.pageY;
67
+ const newHeight = (dragInfo == null ? void 0 : dragInfo.originalHeight) + delta;
68
+ setDevtoolsHeight(newHeight);
69
+
70
+ if (newHeight < 70) {
71
+ setIsOpen(false);
72
+ } else {
73
+ setIsOpen(true);
74
+ }
75
+ };
76
+
77
+ const unsub = () => {
78
+ setIsResizing(false);
79
+ document.removeEventListener('mousemove', run);
80
+ document.removeEventListener('mouseUp', unsub);
81
+ };
82
+
83
+ document.addEventListener('mousemove', run);
84
+ document.addEventListener('mouseup', unsub);
85
+ };
86
+
87
+ React__default["default"].useEffect(() => {
88
+ setIsResolvedOpen(isOpen != null ? isOpen : false);
89
+ }, [isOpen, isResolvedOpen, setIsResolvedOpen]); // Toggle panel visibility before/after transition (depending on direction).
90
+ // Prevents focusing in a closed panel.
91
+
92
+ React__default["default"].useEffect(() => {
93
+ const ref = panelRef.current;
94
+
95
+ if (ref) {
96
+ const handlePanelTransitionStart = () => {
97
+ if (ref && isResolvedOpen) {
98
+ ref.style.visibility = 'visible';
99
+ }
100
+ };
101
+
102
+ const handlePanelTransitionEnd = () => {
103
+ if (ref && !isResolvedOpen) {
104
+ ref.style.visibility = 'hidden';
105
+ }
106
+ };
107
+
108
+ ref.addEventListener('transitionstart', handlePanelTransitionStart);
109
+ ref.addEventListener('transitionend', handlePanelTransitionEnd);
110
+ return () => {
111
+ ref.removeEventListener('transitionstart', handlePanelTransitionStart);
112
+ ref.removeEventListener('transitionend', handlePanelTransitionEnd);
113
+ };
114
+ }
115
+ }, [isResolvedOpen]);
116
+ React__default["default"][isServer ? 'useEffect' : 'useLayoutEffect'](() => {
117
+ if (isResolvedOpen) {
118
+ var _rootRef$current, _rootRef$current$pare;
119
+
120
+ const previousValue = (_rootRef$current = rootRef.current) == null ? void 0 : (_rootRef$current$pare = _rootRef$current.parentElement) == null ? void 0 : _rootRef$current$pare.style.paddingBottom;
121
+
122
+ const run = () => {
123
+ var _panelRef$current, _rootRef$current2;
124
+
125
+ const containerHeight = (_panelRef$current = panelRef.current) == null ? void 0 : _panelRef$current.getBoundingClientRect().height;
126
+
127
+ if ((_rootRef$current2 = rootRef.current) != null && _rootRef$current2.parentElement) {
128
+ rootRef.current.parentElement.style.paddingBottom = containerHeight + "px";
129
+ }
130
+ };
131
+
132
+ run();
133
+
134
+ if (typeof window !== 'undefined') {
135
+ window.addEventListener('resize', run);
136
+ return () => {
137
+ var _rootRef$current3;
138
+
139
+ window.removeEventListener('resize', run);
140
+
141
+ if ((_rootRef$current3 = rootRef.current) != null && _rootRef$current3.parentElement && typeof previousValue === 'string') {
142
+ rootRef.current.parentElement.style.paddingBottom = previousValue;
143
+ }
144
+ };
145
+ }
146
+ }
147
+ }, [isResolvedOpen]);
148
+
149
+ const {
150
+ style: panelStyle = {}
151
+ } = panelProps,
152
+ otherPanelProps = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(panelProps, _excluded);
153
+
154
+ const {
155
+ style: closeButtonStyle = {},
156
+ onClick: onCloseClick
157
+ } = closeButtonProps,
158
+ otherCloseButtonProps = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(closeButtonProps, _excluded2);
159
+
160
+ const {
161
+ style: toggleButtonStyle = {},
162
+ onClick: onToggleClick
163
+ } = toggleButtonProps,
164
+ otherToggleButtonProps = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(toggleButtonProps, _excluded3); // Do not render on the server
165
+
166
+
167
+ if (!isMounted()) return null;
168
+ return /*#__PURE__*/React__default["default"].createElement(Container, {
169
+ ref: rootRef,
170
+ className: "ReactLocationDevtools"
171
+ }, /*#__PURE__*/React__default["default"].createElement(theme.ThemeProvider, {
172
+ theme: theme.defaultTheme
173
+ }, /*#__PURE__*/React__default["default"].createElement(ReactLocationDevtoolsPanel, _rollupPluginBabelHelpers["extends"]({
174
+ ref: panelRef
175
+ }, otherPanelProps, {
176
+ useRouter: useRouterImpl,
177
+ style: _rollupPluginBabelHelpers["extends"]({
178
+ position: 'fixed',
179
+ bottom: '0',
180
+ right: '0',
181
+ zIndex: 99999,
182
+ width: '100%',
183
+ height: devtoolsHeight != null ? devtoolsHeight : 500,
184
+ maxHeight: '90%',
185
+ boxShadow: '0 0 20px rgba(0,0,0,.3)',
186
+ borderTop: "1px solid " + theme.defaultTheme.gray,
187
+ transformOrigin: 'top',
188
+ // visibility will be toggled after transitions, but set initial state here
189
+ visibility: isOpen ? 'visible' : 'hidden'
190
+ }, panelStyle, isResizing ? {
191
+ transition: "none"
192
+ } : {
193
+ transition: "all .2s ease"
194
+ }, isResolvedOpen ? {
195
+ opacity: 1,
196
+ pointerEvents: 'all',
197
+ transform: "translateY(0) scale(1)"
198
+ } : {
199
+ opacity: 0,
200
+ pointerEvents: 'none',
201
+ transform: "translateY(15px) scale(1.02)"
202
+ }),
203
+ isOpen: isResolvedOpen,
204
+ setIsOpen: setIsOpen,
205
+ handleDragStart: e => _handleDragStart(panelRef.current, e)
206
+ })), isResolvedOpen ? /*#__PURE__*/React__default["default"].createElement(styledComponents.Button, _rollupPluginBabelHelpers["extends"]({
207
+ type: "button",
208
+ "aria-label": "Close TanStack Location Devtools"
209
+ }, otherCloseButtonProps, {
210
+ onClick: e => {
211
+ setIsOpen(false);
212
+ onCloseClick && onCloseClick(e);
213
+ },
214
+ style: _rollupPluginBabelHelpers["extends"]({
215
+ position: 'fixed',
216
+ zIndex: 99999,
217
+ margin: '.5em',
218
+ bottom: 0
219
+ }, position === 'top-right' ? {
220
+ right: '0'
221
+ } : position === 'top-left' ? {
222
+ left: '0'
223
+ } : position === 'bottom-right' ? {
224
+ right: '0'
225
+ } : {
226
+ left: '0'
227
+ }, closeButtonStyle)
228
+ }), "Close") : null), !isResolvedOpen ? /*#__PURE__*/React__default["default"].createElement("button", _rollupPluginBabelHelpers["extends"]({
229
+ type: "button"
230
+ }, otherToggleButtonProps, {
231
+ "aria-label": "Open TanStack Location Devtools",
232
+ onClick: e => {
233
+ setIsOpen(true);
234
+ onToggleClick && onToggleClick(e);
235
+ },
236
+ style: _rollupPluginBabelHelpers["extends"]({
237
+ background: 'none',
238
+ border: 0,
239
+ padding: 0,
240
+ position: 'fixed',
241
+ zIndex: 99999,
242
+ display: 'inline-flex',
243
+ fontSize: '1.5em',
244
+ margin: '.5em',
245
+ cursor: 'pointer',
246
+ width: 'fit-content'
247
+ }, position === 'top-right' ? {
248
+ top: '0',
249
+ right: '0'
250
+ } : position === 'top-left' ? {
251
+ top: '0',
252
+ left: '0'
253
+ } : position === 'bottom-right' ? {
254
+ bottom: '0',
255
+ right: '0'
256
+ } : {
257
+ bottom: '0',
258
+ left: '0'
259
+ }, toggleButtonStyle)
260
+ }), /*#__PURE__*/React__default["default"].createElement(Logo["default"], {
261
+ "aria-hidden": true
262
+ })) : null);
263
+ }
264
+ const ReactLocationDevtoolsPanel = /*#__PURE__*/React__default["default"].forwardRef(function ReactLocationDevtoolsPanel(props, ref) {
265
+ var _router$state$current, _router$state$pending;
266
+
267
+ const {
268
+ isOpen = true,
269
+ handleDragStart,
270
+ useRouter
271
+ } = props,
272
+ panelProps = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(props, _excluded4);
273
+
274
+ const router = useRouter();
275
+ const [activeMatchId, setActiveRouteId] = useLocalStorage["default"]('reactLocationDevtoolsActiveRouteId', '');
276
+ const activeMatch = (_router$state$current = router.state.current.matches) == null ? void 0 : _router$state$current.find(d => d.id === activeMatchId);
277
+ return /*#__PURE__*/React__default["default"].createElement(theme.ThemeProvider, {
278
+ theme: theme.defaultTheme
279
+ }, /*#__PURE__*/React__default["default"].createElement(styledComponents.Panel, _rollupPluginBabelHelpers["extends"]({
280
+ ref: ref,
281
+ className: "ReactLocationDevtoolsPanel"
282
+ }, panelProps), /*#__PURE__*/React__default["default"].createElement("style", {
283
+ dangerouslySetInnerHTML: {
284
+ __html: "\n\n .ReactLocationDevtoolsPanel * {\n scrollbar-color: " + theme.defaultTheme.backgroundAlt + " " + theme.defaultTheme.gray + ";\n }\n\n .ReactLocationDevtoolsPanel *::-webkit-scrollbar, .ReactLocationDevtoolsPanel scrollbar {\n width: 1em;\n height: 1em;\n }\n\n .ReactLocationDevtoolsPanel *::-webkit-scrollbar-track, .ReactLocationDevtoolsPanel scrollbar-track {\n background: " + theme.defaultTheme.backgroundAlt + ";\n }\n\n .ReactLocationDevtoolsPanel *::-webkit-scrollbar-thumb, .ReactLocationDevtoolsPanel scrollbar-thumb {\n background: " + theme.defaultTheme.gray + ";\n border-radius: .5em;\n border: 3px solid " + theme.defaultTheme.backgroundAlt + ";\n }\n\n .ReactLocationDevtoolsPanel table {\n width: 100%;\n }\n\n .ReactLocationDevtoolsPanel table tr {\n border-bottom: 2px dotted rgba(255, 255, 255, .2);\n }\n\n .ReactLocationDevtoolsPanel table tr:last-child {\n border-bottom: none\n }\n\n .ReactLocationDevtoolsPanel table td {\n padding: .25rem .5rem;\n border-right: 2px dotted rgba(255, 255, 255, .05);\n }\n\n .ReactLocationDevtoolsPanel table td:last-child {\n border-right: none\n }\n\n "
285
+ }
286
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
287
+ style: {
288
+ position: 'absolute',
289
+ left: 0,
290
+ top: 0,
291
+ width: '100%',
292
+ height: '4px',
293
+ marginBottom: '-4px',
294
+ cursor: 'row-resize',
295
+ zIndex: 100000
296
+ },
297
+ onMouseDown: handleDragStart
298
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
299
+ style: {
300
+ flex: '1 1 500px',
301
+ minHeight: '40%',
302
+ maxHeight: '100%',
303
+ overflow: 'auto',
304
+ borderRight: "1px solid " + theme.defaultTheme.grayAlt,
305
+ display: 'flex',
306
+ flexDirection: 'column'
307
+ }
308
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
309
+ style: {
310
+ padding: '.5em',
311
+ background: theme.defaultTheme.backgroundAlt,
312
+ display: 'flex',
313
+ justifyContent: 'space-between',
314
+ alignItems: 'center'
315
+ }
316
+ }, /*#__PURE__*/React__default["default"].createElement(Logo["default"], {
317
+ "aria-hidden": true,
318
+ style: {
319
+ marginRight: '.5em'
320
+ }
321
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
322
+ style: {
323
+ marginRight: 'auto',
324
+ fontSize: 'clamp(.8rem, 2vw, 1.3rem)',
325
+ fontWeight: 'bold'
326
+ }
327
+ }, "TanStack Location", ' ', /*#__PURE__*/React__default["default"].createElement("span", {
328
+ style: {
329
+ fontWeight: 100
330
+ }
331
+ }, "Devtools")), /*#__PURE__*/React__default["default"].createElement("div", {
332
+ style: {
333
+ display: 'flex',
334
+ flexDirection: 'column'
335
+ }
336
+ })), /*#__PURE__*/React__default["default"].createElement("div", {
337
+ style: {
338
+ overflowY: 'auto',
339
+ flex: '1'
340
+ }
341
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
342
+ style: {
343
+ padding: '.5em'
344
+ }
345
+ }, /*#__PURE__*/React__default["default"].createElement(Explorer["default"], {
346
+ label: "Router",
347
+ value: (() => {
348
+ const rest = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(router, _excluded5);
349
+
350
+ return rest;
351
+ })(),
352
+ defaultExpanded: {}
353
+ })))), /*#__PURE__*/React__default["default"].createElement("div", {
354
+ style: {
355
+ flex: '1 1 500px',
356
+ minHeight: '40%',
357
+ maxHeight: '100%',
358
+ overflow: 'auto',
359
+ borderRight: "1px solid " + theme.defaultTheme.grayAlt,
360
+ display: 'flex',
361
+ flexDirection: 'column'
362
+ }
363
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
364
+ style: {
365
+ padding: '.5em',
366
+ background: theme.defaultTheme.backgroundAlt,
367
+ position: 'sticky',
368
+ top: 0,
369
+ zIndex: 1
370
+ }
371
+ }, "Loader Data"), /*#__PURE__*/React__default["default"].createElement("div", {
372
+ style: {
373
+ padding: '.5em'
374
+ }
375
+ }, /*#__PURE__*/React__default["default"].createElement(Explorer["default"], {
376
+ value: router.getLoaderData(),
377
+ defaultExpanded: Object.keys(router.getLoaderData()).reduce((obj, next) => {
378
+ obj[next] = {};
379
+ return obj;
380
+ }, {})
381
+ }))), /*#__PURE__*/React__default["default"].createElement("div", {
382
+ style: {
383
+ flex: '1 1 500px',
384
+ minHeight: '40%',
385
+ maxHeight: '100%',
386
+ overflow: 'auto',
387
+ borderRight: "1px solid " + theme.defaultTheme.grayAlt,
388
+ display: 'flex',
389
+ flexDirection: 'column'
390
+ }
391
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
392
+ style: {
393
+ padding: '.5em',
394
+ background: theme.defaultTheme.backgroundAlt,
395
+ position: 'sticky',
396
+ top: 0,
397
+ zIndex: 1
398
+ }
399
+ }, "Current Matches"), router.state.current.matches.map((match, i) => {
400
+ return /*#__PURE__*/React__default["default"].createElement("div", {
401
+ key: match.id || i,
402
+ role: "button",
403
+ "aria-label": "Open match details for " + match.id,
404
+ onClick: () => setActiveRouteId(activeMatchId === match.id ? '' : match.id),
405
+ style: {
406
+ display: 'flex',
407
+ borderBottom: "solid 1px " + theme.defaultTheme.grayAlt,
408
+ cursor: 'pointer',
409
+ alignItems: 'center',
410
+ background: match === activeMatch ? 'rgba(255,255,255,.1)' : undefined
411
+ }
412
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
413
+ style: {
414
+ flex: '0 0 auto',
415
+ width: '1.3rem',
416
+ height: '1.3rem',
417
+ marginLeft: '.25rem',
418
+ background: utils.getStatusColor(match, theme.defaultTheme),
419
+ alignItems: 'center',
420
+ justifyContent: 'center',
421
+ fontWeight: 'bold',
422
+ borderRadius: '.25rem',
423
+ transition: 'all .2s ease-out'
424
+ }
425
+ }), /*#__PURE__*/React__default["default"].createElement(styledComponents.Code, {
426
+ style: {
427
+ padding: '.5em'
428
+ }
429
+ }, "" + match.id));
430
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
431
+ style: {
432
+ marginTop: '2rem',
433
+ padding: '.5em',
434
+ background: theme.defaultTheme.backgroundAlt,
435
+ position: 'sticky',
436
+ top: 0,
437
+ zIndex: 1
438
+ }
439
+ }, "Pending Matches"), (_router$state$pending = router.state.pending) == null ? void 0 : _router$state$pending.matches.map((match, i) => {
440
+ return /*#__PURE__*/React__default["default"].createElement("div", {
441
+ key: match.id || i,
442
+ role: "button",
443
+ "aria-label": "Open match details for " + match.id,
444
+ onClick: () => setActiveRouteId(activeMatchId === match.id ? '' : match.id),
445
+ style: {
446
+ display: 'flex',
447
+ borderBottom: "solid 1px " + theme.defaultTheme.grayAlt,
448
+ cursor: 'pointer',
449
+ background: match === activeMatch ? 'rgba(255,255,255,.1)' : undefined
450
+ }
451
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
452
+ style: {
453
+ flex: '0 0 auto',
454
+ width: '1.3rem',
455
+ height: '1.3rem',
456
+ marginLeft: '.25rem',
457
+ background: utils.getStatusColor(match, theme.defaultTheme),
458
+ alignItems: 'center',
459
+ justifyContent: 'center',
460
+ fontWeight: 'bold',
461
+ borderRadius: '.25rem',
462
+ transition: 'all .2s ease-out'
463
+ }
464
+ }), /*#__PURE__*/React__default["default"].createElement(styledComponents.Code, {
465
+ style: {
466
+ padding: '.5em'
467
+ }
468
+ }, "" + match.id));
469
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
470
+ style: {
471
+ marginTop: '2rem',
472
+ padding: '.5em',
473
+ background: theme.defaultTheme.backgroundAlt,
474
+ position: 'sticky',
475
+ top: 0,
476
+ zIndex: 1
477
+ }
478
+ }, "Preloading Matches"), Object.keys(router.preloadCache).map((key, i) => {
479
+ const {
480
+ match,
481
+ expiresAt
482
+ } = router.preloadCache[key];
483
+ return /*#__PURE__*/React__default["default"].createElement("div", {
484
+ key: match.id || i,
485
+ role: "button",
486
+ "aria-label": "Open match details for " + match.id,
487
+ onClick: () => setActiveRouteId(activeMatchId === match.id ? '' : match.id),
488
+ style: {
489
+ display: 'flex',
490
+ borderBottom: "solid 1px " + theme.defaultTheme.grayAlt,
491
+ cursor: 'pointer',
492
+ background: match === activeMatch ? 'rgba(255,255,255,.1)' : undefined
493
+ }
494
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
495
+ style: {
496
+ display: 'flex',
497
+ flexDirection: 'column',
498
+ padding: '.5rem',
499
+ gap: '.3rem'
500
+ }
501
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
502
+ style: {
503
+ display: 'flex',
504
+ alignItems: 'center',
505
+ gap: '.5rem'
506
+ }
507
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
508
+ style: {
509
+ flex: '0 0 auto',
510
+ width: '1.3rem',
511
+ height: '1.3rem',
512
+ background: utils.getStatusColor(match, theme.defaultTheme),
513
+ alignItems: 'center',
514
+ justifyContent: 'center',
515
+ fontWeight: 'bold',
516
+ borderRadius: '.25rem',
517
+ transition: 'all .2s ease-out'
518
+ }
519
+ }), /*#__PURE__*/React__default["default"].createElement(styledComponents.Code, null, "" + match.id)), /*#__PURE__*/React__default["default"].createElement(styledComponents.Code, null, "Expires: ", new Date(expiresAt).toLocaleTimeString())));
520
+ })), activeMatch ? /*#__PURE__*/React__default["default"].createElement(styledComponents.ActivePanel, null, /*#__PURE__*/React__default["default"].createElement("div", {
521
+ style: {
522
+ padding: '.5em',
523
+ background: theme.defaultTheme.backgroundAlt,
524
+ position: 'sticky',
525
+ top: 0,
526
+ zIndex: 1
527
+ }
528
+ }, "Match Details"), /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("table", null, /*#__PURE__*/React__default["default"].createElement("tbody", null, /*#__PURE__*/React__default["default"].createElement("tr", null, /*#__PURE__*/React__default["default"].createElement("td", {
529
+ style: {
530
+ opacity: '.5'
531
+ }
532
+ }, "ID"), /*#__PURE__*/React__default["default"].createElement("td", null, /*#__PURE__*/React__default["default"].createElement(styledComponents.Code, {
533
+ style: {
534
+ lineHeight: '1.8em'
535
+ }
536
+ }, JSON.stringify(activeMatch.id, null, 2)))), /*#__PURE__*/React__default["default"].createElement("tr", null, /*#__PURE__*/React__default["default"].createElement("td", {
537
+ style: {
538
+ opacity: '.5'
539
+ }
540
+ }, "Last Updated"), /*#__PURE__*/React__default["default"].createElement("td", null, activeMatch.updatedAt ? /*#__PURE__*/React__default["default"].createElement(styledComponents.Code, null, new Date(activeMatch.updatedAt).toLocaleTimeString()) : 'N/A'))))), /*#__PURE__*/React__default["default"].createElement("div", {
541
+ style: {
542
+ background: theme.defaultTheme.backgroundAlt,
543
+ padding: '.5em',
544
+ position: 'sticky',
545
+ top: 0,
546
+ zIndex: 1
547
+ }
548
+ }, "Actions"), /*#__PURE__*/React__default["default"].createElement("div", {
549
+ style: {
550
+ padding: '0.5em'
551
+ }
552
+ }, /*#__PURE__*/React__default["default"].createElement(styledComponents.Button, {
553
+ type: "button",
554
+ onClick: () => {
555
+ router.invalidateRoute(activeMatch);
556
+ router.notify();
557
+ },
558
+ style: {
559
+ background: theme.defaultTheme.warning,
560
+ color: theme.defaultTheme.inputTextColor
561
+ }
562
+ }, "Invalidate"), ' ', /*#__PURE__*/React__default["default"].createElement(styledComponents.Button, {
563
+ type: "button",
564
+ onClick: () => router.reload(),
565
+ style: {
566
+ background: theme.defaultTheme.gray
567
+ }
568
+ }, "Reload")), /*#__PURE__*/React__default["default"].createElement("div", {
569
+ style: {
570
+ background: theme.defaultTheme.backgroundAlt,
571
+ padding: '.5em',
572
+ position: 'sticky',
573
+ top: 0,
574
+ zIndex: 1
575
+ }
576
+ }, "Explorer"), /*#__PURE__*/React__default["default"].createElement("div", {
577
+ style: {
578
+ padding: '.5em'
579
+ }
580
+ }, /*#__PURE__*/React__default["default"].createElement(Explorer["default"], {
581
+ label: "Match",
582
+ value: (() => {
583
+ const rest = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(activeMatch, _excluded6);
584
+
585
+ return rest;
586
+ })(),
587
+ defaultExpanded: {}
588
+ }))) : null));
589
+ });
590
+
591
+ exports.ReactLocationDevtools = ReactLocationDevtools;
592
+ exports.ReactLocationDevtoolsPanel = ReactLocationDevtoolsPanel;
593
+ //# sourceMappingURL=devtools.js.map