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