@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,107 @@
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 utils = require('./utils.js');
16
+
17
+ const Panel = utils.styled('div', (_props, theme) => ({
18
+ fontSize: 'clamp(12px, 1.5vw, 14px)',
19
+ fontFamily: "sans-serif",
20
+ display: 'flex',
21
+ backgroundColor: theme.background,
22
+ color: theme.foreground
23
+ }), {
24
+ '(max-width: 700px)': {
25
+ flexDirection: 'column'
26
+ },
27
+ '(max-width: 600px)': {
28
+ fontSize: '.9em' // flexDirection: 'column',
29
+
30
+ }
31
+ });
32
+ const ActivePanel = utils.styled('div', () => ({
33
+ flex: '1 1 500px',
34
+ display: 'flex',
35
+ flexDirection: 'column',
36
+ overflow: 'auto',
37
+ height: '100%'
38
+ }), {
39
+ '(max-width: 700px)': (_props, theme) => ({
40
+ borderTop: "2px solid " + theme.gray
41
+ })
42
+ });
43
+ const Button = utils.styled('button', (props, theme) => ({
44
+ appearance: 'none',
45
+ fontSize: '.9em',
46
+ fontWeight: 'bold',
47
+ background: theme.gray,
48
+ border: '0',
49
+ borderRadius: '.3em',
50
+ color: 'white',
51
+ padding: '.5em',
52
+ opacity: props.disabled ? '.5' : undefined,
53
+ cursor: 'pointer'
54
+ })); // export const QueryKeys = styled('span', {
55
+ // display: 'inline-block',
56
+ // fontSize: '0.9em',
57
+ // })
58
+ // export const QueryKey = styled('span', {
59
+ // display: 'inline-flex',
60
+ // alignItems: 'center',
61
+ // padding: '.2em .4em',
62
+ // fontWeight: 'bold',
63
+ // textShadow: '0 0 10px black',
64
+ // borderRadius: '.2em',
65
+ // })
66
+
67
+ const Code = utils.styled('code', {
68
+ fontSize: '.9em'
69
+ });
70
+ utils.styled('input', (_props, theme) => ({
71
+ backgroundColor: theme.inputBackgroundColor,
72
+ border: 0,
73
+ borderRadius: '.2em',
74
+ color: theme.inputTextColor,
75
+ fontSize: '.9em',
76
+ lineHeight: "1.3",
77
+ padding: '.3em .4em'
78
+ }));
79
+ utils.styled('select', (_props, theme) => ({
80
+ display: "inline-block",
81
+ fontSize: ".9em",
82
+ fontFamily: "sans-serif",
83
+ fontWeight: 'normal',
84
+ lineHeight: "1.3",
85
+ padding: ".3em 1.5em .3em .5em",
86
+ height: 'auto',
87
+ border: 0,
88
+ borderRadius: ".2em",
89
+ appearance: "none",
90
+ WebkitAppearance: 'none',
91
+ backgroundColor: theme.inputBackgroundColor,
92
+ backgroundImage: "url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>\")",
93
+ backgroundRepeat: "no-repeat",
94
+ backgroundPosition: "right .55em center",
95
+ backgroundSize: ".65em auto, 100%",
96
+ color: theme.inputTextColor
97
+ }), {
98
+ '(max-width: 500px)': {
99
+ display: 'none'
100
+ }
101
+ });
102
+
103
+ exports.ActivePanel = ActivePanel;
104
+ exports.Button = Button;
105
+ exports.Code = Code;
106
+ exports.Panel = Panel;
107
+ //# sourceMappingURL=styledComponents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styledComponents.js","sources":["../../src/styledComponents.ts"],"sourcesContent":["import { styled } from './utils'\n\nexport const Panel = styled(\n 'div',\n (_props, theme) => ({\n fontSize: 'clamp(12px, 1.5vw, 14px)',\n fontFamily: `sans-serif`,\n display: 'flex',\n backgroundColor: theme.background,\n color: theme.foreground,\n }),\n {\n '(max-width: 700px)': {\n flexDirection: 'column',\n },\n '(max-width: 600px)': {\n fontSize: '.9em',\n // flexDirection: 'column',\n },\n },\n)\n\nexport const ActivePanel = styled(\n 'div',\n () => ({\n flex: '1 1 500px',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'auto',\n height: '100%',\n }),\n {\n '(max-width: 700px)': (_props, theme) => ({\n borderTop: `2px solid ${theme.gray}`,\n }),\n },\n)\n\nexport const Button = styled('button', (props, theme) => ({\n appearance: 'none',\n fontSize: '.9em',\n fontWeight: 'bold',\n background: theme.gray,\n border: '0',\n borderRadius: '.3em',\n color: 'white',\n padding: '.5em',\n opacity: props.disabled ? '.5' : undefined,\n cursor: 'pointer',\n}))\n\n// export const QueryKeys = styled('span', {\n// display: 'inline-block',\n// fontSize: '0.9em',\n// })\n\n// export const QueryKey = styled('span', {\n// display: 'inline-flex',\n// alignItems: 'center',\n// padding: '.2em .4em',\n// fontWeight: 'bold',\n// textShadow: '0 0 10px black',\n// borderRadius: '.2em',\n// })\n\nexport const Code = styled('code', {\n fontSize: '.9em',\n})\n\nexport const Input = styled('input', (_props, theme) => ({\n backgroundColor: theme.inputBackgroundColor,\n border: 0,\n borderRadius: '.2em',\n color: theme.inputTextColor,\n fontSize: '.9em',\n lineHeight: `1.3`,\n padding: '.3em .4em',\n}))\n\nexport const Select = styled(\n 'select',\n (_props, theme) => ({\n display: `inline-block`,\n fontSize: `.9em`,\n fontFamily: `sans-serif`,\n fontWeight: 'normal',\n lineHeight: `1.3`,\n padding: `.3em 1.5em .3em .5em`,\n height: 'auto',\n border: 0,\n borderRadius: `.2em`,\n appearance: `none`,\n WebkitAppearance: 'none',\n backgroundColor: theme.inputBackgroundColor,\n backgroundImage: `url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>\")`,\n backgroundRepeat: `no-repeat`,\n backgroundPosition: `right .55em center`,\n backgroundSize: `.65em auto, 100%`,\n color: theme.inputTextColor,\n }),\n {\n '(max-width: 500px)': {\n display: 'none',\n },\n },\n)\n"],"names":["Panel","styled","_props","theme","fontSize","fontFamily","display","backgroundColor","background","color","foreground","flexDirection","ActivePanel","flex","overflow","height","borderTop","gray","Button","props","appearance","fontWeight","border","borderRadius","padding","opacity","disabled","undefined","cursor","Code","inputBackgroundColor","inputTextColor","lineHeight","WebkitAppearance","backgroundImage","backgroundRepeat","backgroundPosition","backgroundSize"],"mappings":"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"}
@@ -0,0 +1,54 @@
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
+
18
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
+
20
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
21
+
22
+ const _excluded = ["theme"];
23
+ const defaultTheme = {
24
+ background: '#0b1521',
25
+ backgroundAlt: '#132337',
26
+ foreground: 'white',
27
+ gray: '#3f4e60',
28
+ grayAlt: '#222e3e',
29
+ inputBackgroundColor: '#fff',
30
+ inputTextColor: '#000',
31
+ success: '#00ab52',
32
+ danger: '#ff0085',
33
+ active: '#006bff',
34
+ warning: '#ffb200'
35
+ };
36
+ const ThemeContext = /*#__PURE__*/React__default["default"].createContext(defaultTheme);
37
+ function ThemeProvider(_ref) {
38
+ let {
39
+ theme
40
+ } = _ref,
41
+ rest = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(_ref, _excluded);
42
+
43
+ return /*#__PURE__*/React__default["default"].createElement(ThemeContext.Provider, _rollupPluginBabelHelpers["extends"]({
44
+ value: theme
45
+ }, rest));
46
+ }
47
+ function useTheme() {
48
+ return React__default["default"].useContext(ThemeContext);
49
+ }
50
+
51
+ exports.ThemeProvider = ThemeProvider;
52
+ exports.defaultTheme = defaultTheme;
53
+ exports.useTheme = useTheme;
54
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sources":["../../src/theme.tsx"],"sourcesContent":["import React from 'react'\n\nexport const defaultTheme = {\n background: '#0b1521',\n backgroundAlt: '#132337',\n foreground: 'white',\n gray: '#3f4e60',\n grayAlt: '#222e3e',\n inputBackgroundColor: '#fff',\n inputTextColor: '#000',\n success: '#00ab52',\n danger: '#ff0085',\n active: '#006bff',\n warning: '#ffb200',\n} as const\n\nexport type Theme = typeof defaultTheme\ninterface ProviderProps {\n theme: Theme\n children?: React.ReactNode\n}\n\nconst ThemeContext = React.createContext(defaultTheme)\n\nexport function ThemeProvider({ theme, ...rest }: ProviderProps) {\n return <ThemeContext.Provider value={theme} {...rest} />\n}\n\nexport function useTheme() {\n return React.useContext(ThemeContext)\n}\n"],"names":["defaultTheme","background","backgroundAlt","foreground","gray","grayAlt","inputBackgroundColor","inputTextColor","success","danger","active","warning","ThemeContext","React","createContext","ThemeProvider","theme","rest","_objectWithoutPropertiesLoose","_extends","useTheme","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAEO,MAAMA,YAAY,GAAG;AAC1BC,EAAAA,UAAU,EAAE,SADc;AAE1BC,EAAAA,aAAa,EAAE,SAFW;AAG1BC,EAAAA,UAAU,EAAE,OAHc;AAI1BC,EAAAA,IAAI,EAAE,SAJoB;AAK1BC,EAAAA,OAAO,EAAE,SALiB;AAM1BC,EAAAA,oBAAoB,EAAE,MANI;AAO1BC,EAAAA,cAAc,EAAE,MAPU;AAQ1BC,EAAAA,OAAO,EAAE,SARiB;AAS1BC,EAAAA,MAAM,EAAE,SATkB;AAU1BC,EAAAA,MAAM,EAAE,SAVkB;AAW1BC,EAAAA,OAAO,EAAE,SAAA;AAXiB,EAArB;AAoBP,MAAMC,YAAY,gBAAGC,yBAAK,CAACC,aAAN,CAAoBd,YAApB,CAArB,CAAA;AAEO,SAASe,aAAT,CAA0D,IAAA,EAAA;EAAA,IAAnC;AAAEC,IAAAA,KAAAA;GAAiC,GAAA,IAAA;AAAA,MAAvBC,IAAuB,GAAAC,sDAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;EAC/D,oBAAOL,yBAAA,CAAA,aAAA,CAAC,YAAD,CAAc,QAAd,EAAAM,oCAAA,CAAA;AAAuB,IAAA,KAAK,EAAEH,KAAAA;AAA9B,GAAA,EAAyCC,IAAzC,CAAP,CAAA,CAAA;AACD,CAAA;AAEM,SAASG,QAAT,GAAoB;AACzB,EAAA,OAAOP,yBAAK,CAACQ,UAAN,CAAiBT,YAAjB,CAAP,CAAA;AACD;;;;;;"}
@@ -0,0 +1,65 @@
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 React = require('react');
16
+
17
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+
19
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
+
21
+ const getItem = key => {
22
+ try {
23
+ const itemValue = localStorage.getItem(key);
24
+
25
+ if (typeof itemValue === 'string') {
26
+ return JSON.parse(itemValue);
27
+ }
28
+
29
+ return undefined;
30
+ } catch (_unused) {
31
+ return undefined;
32
+ }
33
+ };
34
+
35
+ function useLocalStorage(key, defaultValue) {
36
+ const [value, setValue] = React__default["default"].useState();
37
+ React__default["default"].useEffect(() => {
38
+ const initialValue = getItem(key);
39
+
40
+ if (typeof initialValue === 'undefined' || initialValue === null) {
41
+ setValue(typeof defaultValue === 'function' ? defaultValue() : defaultValue);
42
+ } else {
43
+ setValue(initialValue);
44
+ }
45
+ }, [defaultValue, key]);
46
+ const setter = React__default["default"].useCallback(updater => {
47
+ setValue(old => {
48
+ let newVal = updater;
49
+
50
+ if (typeof updater == 'function') {
51
+ newVal = updater(old);
52
+ }
53
+
54
+ try {
55
+ localStorage.setItem(key, JSON.stringify(newVal));
56
+ } catch (_unused2) {}
57
+
58
+ return newVal;
59
+ });
60
+ }, [key]);
61
+ return [value, setter];
62
+ }
63
+
64
+ exports["default"] = useLocalStorage;
65
+ //# sourceMappingURL=useLocalStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocalStorage.js","sources":["../../src/useLocalStorage.ts"],"sourcesContent":["import React from 'react'\n\nconst getItem = (key: string): unknown => {\n try {\n const itemValue = localStorage.getItem(key)\n if (typeof itemValue === 'string') {\n return JSON.parse(itemValue)\n }\n return undefined\n } catch {\n return undefined\n }\n}\n\nexport default function useLocalStorage<T>(\n key: string,\n defaultValue: T | undefined\n): [T | undefined, (newVal: T | ((prevVal: T) => T)) => void] {\n const [value, setValue] = React.useState<T>()\n\n React.useEffect(() => {\n const initialValue = getItem(key) as T | undefined\n\n if (typeof initialValue === 'undefined' || initialValue === null) {\n setValue(\n typeof defaultValue === 'function' ? defaultValue() : defaultValue\n )\n } else {\n setValue(initialValue)\n }\n }, [defaultValue, key])\n\n const setter = React.useCallback(\n updater => {\n setValue(old => {\n let newVal = updater\n\n if (typeof updater == 'function') {\n newVal = updater(old)\n }\n try {\n localStorage.setItem(key, JSON.stringify(newVal))\n } catch {}\n\n return newVal\n })\n },\n [key]\n )\n\n return [value, setter]\n}\n"],"names":["getItem","key","itemValue","localStorage","JSON","parse","undefined","useLocalStorage","defaultValue","value","setValue","React","useState","useEffect","initialValue","setter","useCallback","updater","old","newVal","setItem","stringify"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,MAAMA,OAAO,GAAIC,GAAD,IAA0B;EACxC,IAAI;AACF,IAAA,MAAMC,SAAS,GAAGC,YAAY,CAACH,OAAb,CAAqBC,GAArB,CAAlB,CAAA;;AACA,IAAA,IAAI,OAAOC,SAAP,KAAqB,QAAzB,EAAmC;AACjC,MAAA,OAAOE,IAAI,CAACC,KAAL,CAAWH,SAAX,CAAP,CAAA;AACD,KAAA;;AACD,IAAA,OAAOI,SAAP,CAAA;AACD,GAND,CAME,OAAM,OAAA,EAAA;AACN,IAAA,OAAOA,SAAP,CAAA;AACD,GAAA;AACF,CAVD,CAAA;;AAYe,SAASC,eAAT,CACbN,GADa,EAEbO,YAFa,EAG+C;EAC5D,MAAM,CAACC,KAAD,EAAQC,QAAR,IAAoBC,yBAAK,CAACC,QAAN,EAA1B,CAAA;EAEAD,yBAAK,CAACE,SAAN,CAAgB,MAAM;AACpB,IAAA,MAAMC,YAAY,GAAGd,OAAO,CAACC,GAAD,CAA5B,CAAA;;IAEA,IAAI,OAAOa,YAAP,KAAwB,WAAxB,IAAuCA,YAAY,KAAK,IAA5D,EAAkE;MAChEJ,QAAQ,CACN,OAAOF,YAAP,KAAwB,UAAxB,GAAqCA,YAAY,EAAjD,GAAsDA,YADhD,CAAR,CAAA;AAGD,KAJD,MAIO;MACLE,QAAQ,CAACI,YAAD,CAAR,CAAA;AACD,KAAA;AACF,GAVD,EAUG,CAACN,YAAD,EAAeP,GAAf,CAVH,CAAA,CAAA;AAYA,EAAA,MAAMc,MAAM,GAAGJ,yBAAK,CAACK,WAAN,CACbC,OAAO,IAAI;IACTP,QAAQ,CAACQ,GAAG,IAAI;MACd,IAAIC,MAAM,GAAGF,OAAb,CAAA;;AAEA,MAAA,IAAI,OAAOA,OAAP,IAAkB,UAAtB,EAAkC;AAChCE,QAAAA,MAAM,GAAGF,OAAO,CAACC,GAAD,CAAhB,CAAA;AACD,OAAA;;MACD,IAAI;QACFf,YAAY,CAACiB,OAAb,CAAqBnB,GAArB,EAA0BG,IAAI,CAACiB,SAAL,CAAeF,MAAf,CAA1B,CAAA,CAAA;OADF,CAEE,iBAAM,EAAE;;AAEV,MAAA,OAAOA,MAAP,CAAA;AACD,KAXO,CAAR,CAAA;AAYD,GAdY,EAeb,CAAClB,GAAD,CAfa,CAAf,CAAA;AAkBA,EAAA,OAAO,CAACQ,KAAD,EAAQM,MAAR,CAAP,CAAA;AACD;;;;"}
@@ -0,0 +1,57 @@
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 React = require('react');
16
+
17
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+
19
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
+
21
+ function useMediaQuery(query) {
22
+ // Keep track of the preference in state, start with the current match
23
+ const [isMatch, setIsMatch] = React__default["default"].useState(() => {
24
+ if (typeof window !== 'undefined') {
25
+ return window.matchMedia && window.matchMedia(query).matches;
26
+ }
27
+ }); // Watch for changes
28
+
29
+ React__default["default"].useEffect(() => {
30
+ if (typeof window !== 'undefined') {
31
+ if (!window.matchMedia) {
32
+ return;
33
+ } // Create a matcher
34
+
35
+
36
+ const matcher = window.matchMedia(query); // Create our handler
37
+
38
+ const onChange = _ref => {
39
+ let {
40
+ matches
41
+ } = _ref;
42
+ return setIsMatch(matches);
43
+ }; // Listen for changes
44
+
45
+
46
+ matcher.addListener(onChange);
47
+ return () => {
48
+ // Stop listening for changes
49
+ matcher.removeListener(onChange);
50
+ };
51
+ }
52
+ }, [isMatch, query, setIsMatch]);
53
+ return isMatch;
54
+ }
55
+
56
+ exports["default"] = useMediaQuery;
57
+ //# sourceMappingURL=useMediaQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaQuery.js","sources":["../../src/useMediaQuery.ts"],"sourcesContent":["import React from 'react'\n\nexport default function useMediaQuery(query: string): boolean | undefined {\n // Keep track of the preference in state, start with the current match\n const [isMatch, setIsMatch] = React.useState(() => {\n if (typeof window !== 'undefined') {\n return window.matchMedia && window.matchMedia(query).matches\n }\n })\n\n // Watch for changes\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n if (!window.matchMedia) {\n return\n }\n\n // Create a matcher\n const matcher = window.matchMedia(query)\n\n // Create our handler\n const onChange = ({ matches }: { matches: boolean }) =>\n setIsMatch(matches)\n\n // Listen for changes\n matcher.addListener(onChange)\n\n return () => {\n // Stop listening for changes\n matcher.removeListener(onChange)\n }\n }\n }, [isMatch, query, setIsMatch])\n\n return isMatch\n}\n"],"names":["useMediaQuery","query","isMatch","setIsMatch","React","useState","window","matchMedia","matches","useEffect","matcher","onChange","addListener","removeListener"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEe,SAASA,aAAT,CAAuBC,KAAvB,EAA2D;AACxE;EACA,MAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBC,yBAAK,CAACC,QAAN,CAAe,MAAM;AACjD,IAAA,IAAI,OAAOC,MAAP,KAAkB,WAAtB,EAAmC;MACjC,OAAOA,MAAM,CAACC,UAAP,IAAqBD,MAAM,CAACC,UAAP,CAAkBN,KAAlB,CAAA,CAAyBO,OAArD,CAAA;AACD,KAAA;GAH2B,CAA9B,CAFwE;;EASxEJ,yBAAK,CAACK,SAAN,CAAgB,MAAM;AACpB,IAAA,IAAI,OAAOH,MAAP,KAAkB,WAAtB,EAAmC;AACjC,MAAA,IAAI,CAACA,MAAM,CAACC,UAAZ,EAAwB;AACtB,QAAA,OAAA;AACD,OAHgC;;;MAMjC,MAAMG,OAAO,GAAGJ,MAAM,CAACC,UAAP,CAAkBN,KAAlB,CAAhB,CANiC;;AASjC,MAAA,MAAMU,QAAQ,GAAG,IAAA,IAAA;QAAA,IAAC;AAAEH,UAAAA,OAAAA;SAAH,GAAA,IAAA,CAAA;QAAA,OACfL,UAAU,CAACK,OAAD,CADK,CAAA;AAAA,OAAjB,CATiC;;;MAajCE,OAAO,CAACE,WAAR,CAAoBD,QAApB,CAAA,CAAA;AAEA,MAAA,OAAO,MAAM;AACX;QACAD,OAAO,CAACG,cAAR,CAAuBF,QAAvB,CAAA,CAAA;OAFF,CAAA;AAID,KAAA;AACF,GArBD,EAqBG,CAACT,OAAD,EAAUD,KAAV,EAAiBE,UAAjB,CArBH,CAAA,CAAA;AAuBA,EAAA,OAAOD,OAAP,CAAA;AACD;;;;"}
@@ -0,0 +1,117 @@
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 theme = require('./theme.js');
18
+ var useMediaQuery = require('./useMediaQuery.js');
19
+
20
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
+
22
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
+
24
+ const _excluded = ["style"];
25
+ const isServer = typeof window === 'undefined';
26
+ 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
+
49
+ const theme$1 = theme.useTheme();
50
+ const mediaStyles = Object.entries(queries).reduce((current, _ref2) => {
51
+ let [key, value] = _ref2;
52
+ // 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;
54
+ }, {});
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),
57
+ ref
58
+ }));
59
+ });
60
+ }
61
+ function useIsMounted() {
62
+ const mountedRef = React__default["default"].useRef(false);
63
+ const isMounted = React__default["default"].useCallback(() => mountedRef.current, []);
64
+ React__default["default"][isServer ? 'useEffect' : 'useLayoutEffect'](() => {
65
+ mountedRef.current = true;
66
+ return () => {
67
+ mountedRef.current = false;
68
+ };
69
+ }, []);
70
+ return isMounted;
71
+ }
72
+ /**
73
+ * Displays a string regardless the type of the data
74
+ * @param {unknown} value Value to be stringified
75
+ */
76
+
77
+ const displayValue = value => {
78
+ const name = Object.getOwnPropertyNames(Object(value));
79
+ const newValue = typeof value === 'bigint' ? value.toString() + "n" : value;
80
+ return JSON.stringify(newValue, name);
81
+ };
82
+ /**
83
+ * This hook is a safe useState version which schedules state updates in microtasks
84
+ * to prevent updating a component state while React is rendering different components
85
+ * or when the component is not mounted anymore.
86
+ */
87
+
88
+ function useSafeState(initialState) {
89
+ const isMounted = useIsMounted();
90
+ const [state, setState] = React__default["default"].useState(initialState);
91
+ const safeSetState = React__default["default"].useCallback(value => {
92
+ scheduleMicrotask(() => {
93
+ if (isMounted()) {
94
+ setState(value);
95
+ }
96
+ });
97
+ }, [isMounted]);
98
+ return [state, safeSetState];
99
+ }
100
+ /**
101
+ * Schedules a microtask.
102
+ * This can be useful to schedule state updates after rendering.
103
+ */
104
+
105
+ function scheduleMicrotask(callback) {
106
+ Promise.resolve().then(callback).catch(error => setTimeout(() => {
107
+ throw error;
108
+ }));
109
+ }
110
+
111
+ exports.displayValue = displayValue;
112
+ exports.getStatusColor = getStatusColor;
113
+ exports.isServer = isServer;
114
+ exports.styled = styled;
115
+ exports.useIsMounted = useIsMounted;
116
+ exports.useSafeState = useSafeState;
117
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +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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"}