@tanstack/router-devtools 0.0.1-alpha.0 → 0.0.1-beta.100

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 (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -1
  3. package/build/cjs/Explorer.js +57 -81
  4. package/build/cjs/Explorer.js.map +1 -1
  5. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +1 -19
  6. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  7. package/build/cjs/devtools.js +317 -272
  8. package/build/cjs/devtools.js.map +1 -1
  9. package/build/cjs/index.js +3 -3
  10. package/build/cjs/styledComponents.js +10 -38
  11. package/build/cjs/styledComponents.js.map +1 -1
  12. package/build/cjs/theme.js +5 -8
  13. package/build/cjs/theme.js.map +1 -1
  14. package/build/cjs/useLocalStorage.js +3 -10
  15. package/build/cjs/useLocalStorage.js.map +1 -1
  16. package/build/cjs/useMediaQuery.js +13 -12
  17. package/build/cjs/useMediaQuery.js.map +1 -1
  18. package/build/cjs/utils.js +30 -35
  19. package/build/cjs/utils.js.map +1 -1
  20. package/build/esm/index.js +391 -1361
  21. package/build/esm/index.js.map +1 -1
  22. package/build/stats-html.html +59 -49
  23. package/build/stats-react.json +223 -9444
  24. package/build/types/Explorer.d.ts +47 -0
  25. package/build/types/devtools.d.ts +65 -0
  26. package/build/types/index.d.ts +1 -76
  27. package/build/types/styledComponents.d.ts +7 -0
  28. package/build/types/theme.d.ts +34 -0
  29. package/build/types/useLocalStorage.d.ts +1 -0
  30. package/build/types/useMediaQuery.d.ts +1 -0
  31. package/build/types/utils.d.ts +23 -0
  32. package/build/umd/index.development.js +430 -1340
  33. package/build/umd/index.development.js.map +1 -1
  34. package/build/umd/index.production.js +22 -2
  35. package/build/umd/index.production.js.map +1 -1
  36. package/package.json +11 -10
  37. package/src/Explorer.tsx +14 -12
  38. package/src/devtools.tsx +349 -345
  39. package/src/useLocalStorage.ts +5 -5
  40. package/src/useMediaQuery.ts +3 -0
  41. package/src/utils.ts +57 -16
  42. package/build/cjs/Logo.js +0 -73
  43. package/build/cjs/Logo.js.map +0 -1
  44. package/build/cjs/packages/react-location-devtools/src/Explorer.js +0 -240
  45. package/build/cjs/packages/react-location-devtools/src/Explorer.js.map +0 -1
  46. package/build/cjs/packages/react-location-devtools/src/Logo.js +0 -73
  47. package/build/cjs/packages/react-location-devtools/src/Logo.js.map +0 -1
  48. package/build/cjs/packages/react-location-devtools/src/devtools.js +0 -614
  49. package/build/cjs/packages/react-location-devtools/src/devtools.js.map +0 -1
  50. package/build/cjs/packages/react-location-devtools/src/index.js +0 -21
  51. package/build/cjs/packages/react-location-devtools/src/index.js.map +0 -1
  52. package/build/cjs/packages/react-location-devtools/src/styledComponents.js +0 -107
  53. package/build/cjs/packages/react-location-devtools/src/styledComponents.js.map +0 -1
  54. package/build/cjs/packages/react-location-devtools/src/theme.js +0 -54
  55. package/build/cjs/packages/react-location-devtools/src/theme.js.map +0 -1
  56. package/build/cjs/packages/react-location-devtools/src/useLocalStorage.js +0 -65
  57. package/build/cjs/packages/react-location-devtools/src/useLocalStorage.js.map +0 -1
  58. package/build/cjs/packages/react-location-devtools/src/useMediaQuery.js +0 -57
  59. package/build/cjs/packages/react-location-devtools/src/useMediaQuery.js.map +0 -1
  60. package/build/cjs/packages/react-location-devtools/src/utils.js +0 -117
  61. package/build/cjs/packages/react-location-devtools/src/utils.js.map +0 -1
  62. package/build/cjs/packages/react-router-devtools/src/Explorer.js +0 -245
  63. package/build/cjs/packages/react-router-devtools/src/Explorer.js.map +0 -1
  64. package/build/cjs/packages/react-router-devtools/src/Logo.js +0 -73
  65. package/build/cjs/packages/react-router-devtools/src/Logo.js.map +0 -1
  66. package/build/cjs/packages/react-router-devtools/src/devtools.js +0 -654
  67. package/build/cjs/packages/react-router-devtools/src/devtools.js.map +0 -1
  68. package/build/cjs/packages/react-router-devtools/src/index.js +0 -21
  69. package/build/cjs/packages/react-router-devtools/src/index.js.map +0 -1
  70. package/build/cjs/packages/react-router-devtools/src/styledComponents.js +0 -107
  71. package/build/cjs/packages/react-router-devtools/src/styledComponents.js.map +0 -1
  72. package/build/cjs/packages/react-router-devtools/src/theme.js +0 -54
  73. package/build/cjs/packages/react-router-devtools/src/theme.js.map +0 -1
  74. package/build/cjs/packages/react-router-devtools/src/useLocalStorage.js +0 -65
  75. package/build/cjs/packages/react-router-devtools/src/useLocalStorage.js.map +0 -1
  76. package/build/cjs/packages/react-router-devtools/src/useMediaQuery.js +0 -57
  77. package/build/cjs/packages/react-router-devtools/src/useMediaQuery.js.map +0 -1
  78. package/build/cjs/packages/react-router-devtools/src/utils.js +0 -117
  79. package/build/cjs/packages/react-router-devtools/src/utils.js.map +0 -1
  80. package/src/Logo.tsx +0 -37
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-location-devtools
2
+ * router-devtools
3
3
  *
4
4
  * Copyright (c) TanStack
5
5
  *
@@ -12,7 +12,6 @@
12
12
 
13
13
  Object.defineProperty(exports, '__esModule', { value: true });
14
14
 
15
- var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
16
15
  var React = require('react');
17
16
  var theme = require('./theme.js');
18
17
  var useMediaQuery = require('./useMediaQuery.js');
@@ -21,41 +20,36 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
21
20
 
22
21
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
22
 
24
- const _excluded = ["style"];
25
23
  const isServer = typeof window === 'undefined';
26
24
  function getStatusColor(match, theme) {
27
- return match.isPending ? theme.warning : match.status === 'loading' ? theme.active : match.status === 'rejected' ? theme.danger : match.status === 'resolved' ? theme.success : theme.gray;
28
- } // export function getQueryStatusLabel(query: Query) {
29
- // return query.state.isFetching
30
- // ? 'fetching'
31
- // : !query.getObserversCount()
32
- // ? 'inactive'
33
- // : query.isStale()
34
- // ? 'stale'
35
- // : 'fresh'
36
- // }
37
-
38
- function styled(type, newStyles, queries) {
39
- if (queries === void 0) {
40
- queries = {};
41
- }
42
-
43
- return /*#__PURE__*/React__default["default"].forwardRef((_ref, ref) => {
44
- let {
45
- style
46
- } = _ref,
47
- rest = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(_ref, _excluded);
48
-
25
+ return match.state.status === 'pending' ? theme.active : match.state.status === 'error' ? theme.danger : match.state.status === 'success' ? theme.success : theme.gray;
26
+ }
27
+ function getRouteStatusColor(matches, route, theme) {
28
+ const found = matches.find(d => d.route === route);
29
+ return found ? found.route.status === 'pending' ? theme.active : found.state.status === 'error' ? theme.danger : found.state.status === 'success' ? theme.success : theme.gray : theme.gray;
30
+ }
31
+ function styled(type, newStyles, queries = {}) {
32
+ return /*#__PURE__*/React__default["default"].forwardRef(({
33
+ style,
34
+ ...rest
35
+ }, ref) => {
49
36
  const theme$1 = theme.useTheme();
50
- const mediaStyles = Object.entries(queries).reduce((current, _ref2) => {
51
- let [key, value] = _ref2;
37
+ const mediaStyles = Object.entries(queries).reduce((current, [key, value]) => {
52
38
  // eslint-disable-next-line react-hooks/rules-of-hooks
53
- return useMediaQuery["default"](key) ? _rollupPluginBabelHelpers["extends"]({}, current, typeof value === 'function' ? value(rest, theme$1) : value) : current;
39
+ return useMediaQuery["default"](key) ? {
40
+ ...current,
41
+ ...(typeof value === 'function' ? value(rest, theme$1) : value)
42
+ } : current;
54
43
  }, {});
55
- return /*#__PURE__*/React__default["default"].createElement(type, _rollupPluginBabelHelpers["extends"]({}, rest, {
56
- style: _rollupPluginBabelHelpers["extends"]({}, typeof newStyles === 'function' ? newStyles(rest, theme$1) : newStyles, style, mediaStyles),
44
+ return /*#__PURE__*/React__default["default"].createElement(type, {
45
+ ...rest,
46
+ style: {
47
+ ...(typeof newStyles === 'function' ? newStyles(rest, theme$1) : newStyles),
48
+ ...style,
49
+ ...mediaStyles
50
+ },
57
51
  ref
58
- }));
52
+ });
59
53
  });
60
54
  }
61
55
  function useIsMounted() {
@@ -69,22 +63,22 @@ function useIsMounted() {
69
63
  }, []);
70
64
  return isMounted;
71
65
  }
66
+
72
67
  /**
73
68
  * Displays a string regardless the type of the data
74
69
  * @param {unknown} value Value to be stringified
75
70
  */
76
-
77
71
  const displayValue = value => {
78
72
  const name = Object.getOwnPropertyNames(Object(value));
79
- const newValue = typeof value === 'bigint' ? value.toString() + "n" : value;
73
+ const newValue = typeof value === 'bigint' ? `${value.toString()}n` : value;
80
74
  return JSON.stringify(newValue, name);
81
75
  };
76
+
82
77
  /**
83
78
  * This hook is a safe useState version which schedules state updates in microtasks
84
79
  * to prevent updating a component state while React is rendering different components
85
80
  * or when the component is not mounted anymore.
86
81
  */
87
-
88
82
  function useSafeState(initialState) {
89
83
  const isMounted = useIsMounted();
90
84
  const [state, setState] = React__default["default"].useState(initialState);
@@ -97,11 +91,11 @@ function useSafeState(initialState) {
97
91
  }, [isMounted]);
98
92
  return [state, safeSetState];
99
93
  }
94
+
100
95
  /**
101
96
  * Schedules a microtask.
102
97
  * This can be useful to schedule state updates after rendering.
103
98
  */
104
-
105
99
  function scheduleMicrotask(callback) {
106
100
  Promise.resolve().then(callback).catch(error => setTimeout(() => {
107
101
  throw error;
@@ -109,6 +103,7 @@ function scheduleMicrotask(callback) {
109
103
  }
110
104
 
111
105
  exports.displayValue = displayValue;
106
+ exports.getRouteStatusColor = getRouteStatusColor;
112
107
  exports.getStatusColor = getStatusColor;
113
108
  exports.isServer = isServer;
114
109
  exports.styled = styled;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import React from 'react'\nimport { RouteMatch } from '@tanstack/react-location'\n\nimport { Theme, useTheme } from './theme'\nimport useMediaQuery from './useMediaQuery'\n\nexport const isServer = typeof window === 'undefined'\n\ntype StyledComponent<T> = T extends 'button'\n ? React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n : T extends 'input'\n ? React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >\n : T extends 'select'\n ? React.DetailedHTMLProps<\n React.SelectHTMLAttributes<HTMLSelectElement>,\n HTMLSelectElement\n >\n : T extends keyof HTMLElementTagNameMap\n ? React.HTMLAttributes<HTMLElementTagNameMap[T]>\n : never\n\nexport function getStatusColor(match: RouteMatch, theme: Theme) {\n return match.isPending\n ? theme.warning\n : match.status === 'loading'\n ? theme.active\n : match.status === 'rejected'\n ? theme.danger\n : match.status === 'resolved'\n ? theme.success\n : theme.gray\n}\n\n// export function getQueryStatusLabel(query: Query) {\n// return query.state.isFetching\n// ? 'fetching'\n// : !query.getObserversCount()\n// ? 'inactive'\n// : query.isStale()\n// ? 'stale'\n// : 'fresh'\n// }\n\ntype Styles =\n | React.CSSProperties\n | ((props: Record<string, any>, theme: Theme) => React.CSSProperties)\n\nexport function styled<T extends keyof HTMLElementTagNameMap>(\n type: T,\n newStyles: Styles,\n queries: Record<string, Styles> = {},\n) {\n return React.forwardRef<HTMLElementTagNameMap[T], StyledComponent<T>>(\n ({ style, ...rest }, ref) => {\n const theme = useTheme()\n\n const mediaStyles = Object.entries(queries).reduce(\n (current, [key, value]) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useMediaQuery(key)\n ? {\n ...current,\n ...(typeof value === 'function' ? value(rest, theme) : value),\n }\n : current\n },\n {},\n )\n\n return React.createElement(type, {\n ...rest,\n style: {\n ...(typeof newStyles === 'function'\n ? newStyles(rest, theme)\n : newStyles),\n ...style,\n ...mediaStyles,\n },\n ref,\n })\n },\n )\n}\n\nexport function useIsMounted() {\n const mountedRef = React.useRef(false)\n const isMounted = React.useCallback(() => mountedRef.current, [])\n\n React[isServer ? 'useEffect' : 'useLayoutEffect'](() => {\n mountedRef.current = true\n return () => {\n mountedRef.current = false\n }\n }, [])\n\n return isMounted\n}\n\n/**\n * Displays a string regardless the type of the data\n * @param {unknown} value Value to be stringified\n */\nexport const displayValue = (value: unknown) => {\n const name = Object.getOwnPropertyNames(Object(value))\n const newValue = typeof value === 'bigint' ? `${value.toString()}n` : value\n\n return JSON.stringify(newValue, name)\n}\n\n/**\n * This hook is a safe useState version which schedules state updates in microtasks\n * to prevent updating a component state while React is rendering different components\n * or when the component is not mounted anymore.\n */\nexport function useSafeState<T>(initialState: T): [T, (value: T) => void] {\n const isMounted = useIsMounted()\n const [state, setState] = React.useState(initialState)\n\n const safeSetState = React.useCallback(\n (value: T) => {\n scheduleMicrotask(() => {\n if (isMounted()) {\n setState(value)\n }\n })\n },\n [isMounted],\n )\n\n return [state, safeSetState]\n}\n\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\nfunction scheduleMicrotask(callback: () => void) {\n Promise.resolve()\n .then(callback)\n .catch((error) =>\n setTimeout(() => {\n throw error\n }),\n )\n}\n"],"names":["isServer","window","getStatusColor","match","theme","isPending","warning","status","active","danger","success","gray","styled","type","newStyles","queries","React","forwardRef","ref","style","rest","_objectWithoutPropertiesLoose","useTheme","mediaStyles","Object","entries","reduce","current","key","value","useMediaQuery","createElement","useIsMounted","mountedRef","useRef","isMounted","useCallback","displayValue","name","getOwnPropertyNames","newValue","toString","JSON","stringify","useSafeState","initialState","state","setState","useState","safeSetState","scheduleMicrotask","callback","Promise","resolve","then","catch","error","setTimeout"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import React from 'react'\nimport {\n AnyRootRoute,\n AnyRoute,\n AnyRouteMatch,\n RouteMatch,\n} from '@tanstack/router'\n\nimport { Theme, useTheme } from './theme'\nimport useMediaQuery from './useMediaQuery'\n\nexport const isServer = typeof window === 'undefined'\n\ntype StyledComponent<T> = T extends 'button'\n ? React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n : T extends 'input'\n ? React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >\n : T extends 'select'\n ? React.DetailedHTMLProps<\n React.SelectHTMLAttributes<HTMLSelectElement>,\n HTMLSelectElement\n >\n : T extends keyof HTMLElementTagNameMap\n ? React.HTMLAttributes<HTMLElementTagNameMap[T]>\n : never\n\nexport function getStatusColor(match: AnyRouteMatch, theme: Theme) {\n return match.state.status === 'pending'\n ? theme.active\n : match.state.status === 'error'\n ? theme.danger\n : match.state.status === 'success'\n ? theme.success\n : theme.gray\n}\n\nexport function getRouteStatusColor(\n matches: AnyRouteMatch[],\n route: AnyRoute | AnyRootRoute,\n theme: Theme,\n) {\n const found = matches.find((d) => d.route === route)\n\n return found\n ? found.route.status === 'pending'\n ? theme.active\n : found.state.status === 'error'\n ? theme.danger\n : found.state.status === 'success'\n ? theme.success\n : theme.gray\n : theme.gray\n}\n\ntype Styles =\n | React.CSSProperties\n | ((props: Record<string, any>, theme: Theme) => React.CSSProperties)\n\nexport function styled<T extends keyof HTMLElementTagNameMap>(\n type: T,\n newStyles: Styles,\n queries: Record<string, Styles> = {},\n) {\n return React.forwardRef<HTMLElementTagNameMap[T], StyledComponent<T>>(\n ({ style, ...rest }, ref) => {\n const theme = useTheme()\n\n const mediaStyles = Object.entries(queries).reduce(\n (current, [key, value]) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useMediaQuery(key)\n ? {\n ...current,\n ...(typeof value === 'function' ? value(rest, theme) : value),\n }\n : current\n },\n {},\n )\n\n return React.createElement(type, {\n ...rest,\n style: {\n ...(typeof newStyles === 'function'\n ? newStyles(rest, theme)\n : newStyles),\n ...style,\n ...mediaStyles,\n },\n ref,\n })\n },\n )\n}\n\nexport function useIsMounted() {\n const mountedRef = React.useRef(false)\n const isMounted = React.useCallback(() => mountedRef.current, [])\n\n React[isServer ? 'useEffect' : 'useLayoutEffect'](() => {\n mountedRef.current = true\n return () => {\n mountedRef.current = false\n }\n }, [])\n\n return isMounted\n}\n\n/**\n * Displays a string regardless the type of the data\n * @param {unknown} value Value to be stringified\n */\nexport const displayValue = (value: unknown) => {\n const name = Object.getOwnPropertyNames(Object(value))\n const newValue = typeof value === 'bigint' ? `${value.toString()}n` : value\n\n return JSON.stringify(newValue, name)\n}\n\n/**\n * This hook is a safe useState version which schedules state updates in microtasks\n * to prevent updating a component state while React is rendering different components\n * or when the component is not mounted anymore.\n */\nexport function useSafeState<T>(initialState: T): [T, (value: T) => void] {\n const isMounted = useIsMounted()\n const [state, setState] = React.useState(initialState)\n\n const safeSetState = React.useCallback(\n (value: T) => {\n scheduleMicrotask(() => {\n if (isMounted()) {\n setState(value)\n }\n })\n },\n [isMounted],\n )\n\n return [state, safeSetState]\n}\n\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\nfunction scheduleMicrotask(callback: () => void) {\n Promise.resolve()\n .then(callback)\n .catch((error) =>\n setTimeout(() => {\n throw error\n }),\n )\n}\n\nexport function multiSortBy<T>(\n arr: T[],\n accessors: ((item: T) => any)[] = [(d) => d],\n): T[] {\n return arr\n .map((d, i) => [d, i] as const)\n .sort(([a, ai], [b, bi]) => {\n for (const accessor of accessors) {\n const ao = accessor(a)\n const bo = accessor(b)\n\n if (typeof ao === 'undefined') {\n if (typeof bo === 'undefined') {\n continue\n }\n return 1\n }\n\n if (ao === bo) {\n continue\n }\n\n return ao > bo ? 1 : -1\n }\n\n return ai - bi\n })\n .map(([d]) => d)\n}\n"],"names":["isServer","window","getStatusColor","match","theme","state","status","active","danger","success","gray","getRouteStatusColor","matches","route","found","find","d","styled","type","newStyles","queries","React","forwardRef","style","rest","ref","useTheme","mediaStyles","Object","entries","reduce","current","key","value","useMediaQuery","createElement","useIsMounted","mountedRef","useRef","isMounted","useCallback","displayValue","name","getOwnPropertyNames","newValue","toString","JSON","stringify","useSafeState","initialState","setState","useState","safeSetState","scheduleMicrotask","callback","Promise","resolve","then","catch","error","setTimeout"],"mappings":"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"}