@tanstack/devtools 0.0.0 → 0.1.1

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 (127) hide show
  1. package/README.md +41 -0
  2. package/dist/cjs/components/checkbox.cjs +55 -0
  3. package/dist/cjs/components/checkbox.cjs.map +1 -0
  4. package/dist/cjs/components/checkbox.d.cts +8 -0
  5. package/dist/cjs/components/content-panel.cjs +5 -1
  6. package/dist/cjs/components/content-panel.cjs.map +1 -1
  7. package/dist/cjs/components/input.cjs +57 -0
  8. package/dist/cjs/components/input.cjs.map +1 -0
  9. package/dist/cjs/components/input.d.cts +10 -0
  10. package/dist/cjs/components/logo.cjs.map +1 -1
  11. package/dist/cjs/components/main-panel.cjs +4 -1
  12. package/dist/cjs/components/main-panel.cjs.map +1 -1
  13. package/dist/cjs/components/main-panel.d.cts +1 -2
  14. package/dist/cjs/components/select.cjs +59 -0
  15. package/dist/cjs/components/select.cjs.map +1 -0
  16. package/dist/cjs/components/select.d.cts +13 -0
  17. package/dist/cjs/components/tab-content.cjs +2 -4
  18. package/dist/cjs/components/tab-content.cjs.map +1 -1
  19. package/dist/cjs/components/tabs.cjs.map +1 -1
  20. package/dist/cjs/components/trigger.cjs +1 -1
  21. package/dist/cjs/components/trigger.cjs.map +1 -1
  22. package/dist/cjs/constants.cjs +7 -0
  23. package/dist/cjs/constants.cjs.map +1 -0
  24. package/dist/cjs/constants.d.cts +2 -0
  25. package/dist/cjs/context/devtools-context.cjs +16 -1
  26. package/dist/cjs/context/devtools-context.cjs.map +1 -1
  27. package/dist/cjs/context/devtools-context.d.cts +49 -7
  28. package/dist/cjs/context/devtools-store.cjs.map +1 -1
  29. package/dist/cjs/context/devtools-store.d.cts +3 -3
  30. package/dist/cjs/context/use-devtools-context.cjs +2 -2
  31. package/dist/cjs/context/use-devtools-context.cjs.map +1 -1
  32. package/dist/cjs/context/use-devtools-context.d.cts +4 -5
  33. package/dist/cjs/core.cjs +29 -43
  34. package/dist/cjs/core.cjs.map +1 -1
  35. package/dist/cjs/core.d.cts +31 -8
  36. package/dist/cjs/devtools.cjs +40 -29
  37. package/dist/cjs/devtools.cjs.map +1 -1
  38. package/dist/cjs/hooks/use-disable-tabbing.cjs.map +1 -1
  39. package/dist/cjs/index.cjs +4 -1
  40. package/dist/cjs/index.cjs.map +1 -1
  41. package/dist/cjs/index.d.cts +4 -3
  42. package/dist/cjs/styles/tokens.cjs +7 -2
  43. package/dist/cjs/styles/tokens.cjs.map +1 -1
  44. package/dist/cjs/styles/use-styles.cjs +251 -11
  45. package/dist/cjs/styles/use-styles.cjs.map +1 -1
  46. package/dist/cjs/styles/use-styles.d.cts +29 -5
  47. package/dist/cjs/tabs/index.cjs.map +1 -1
  48. package/dist/cjs/tabs/plugins-tab.cjs +8 -12
  49. package/dist/cjs/tabs/plugins-tab.cjs.map +1 -1
  50. package/dist/cjs/tabs/settings-tab.cjs +172 -2
  51. package/dist/cjs/tabs/settings-tab.cjs.map +1 -1
  52. package/dist/cjs/utils/sanitize.cjs +2 -0
  53. package/dist/cjs/utils/sanitize.cjs.map +1 -1
  54. package/dist/cjs/utils/sanitize.d.cts +1 -0
  55. package/dist/cjs/utils/storage.cjs.map +1 -1
  56. package/dist/esm/components/checkbox.d.ts +8 -0
  57. package/dist/esm/components/checkbox.js +55 -0
  58. package/dist/esm/components/checkbox.js.map +1 -0
  59. package/dist/esm/components/content-panel.js +5 -1
  60. package/dist/esm/components/content-panel.js.map +1 -1
  61. package/dist/esm/components/input.d.ts +10 -0
  62. package/dist/esm/components/input.js +57 -0
  63. package/dist/esm/components/input.js.map +1 -0
  64. package/dist/esm/components/logo.js.map +1 -1
  65. package/dist/esm/components/main-panel.d.ts +1 -2
  66. package/dist/esm/components/main-panel.js +5 -2
  67. package/dist/esm/components/main-panel.js.map +1 -1
  68. package/dist/esm/components/select.d.ts +13 -0
  69. package/dist/esm/components/select.js +59 -0
  70. package/dist/esm/components/select.js.map +1 -0
  71. package/dist/esm/components/tab-content.js +2 -4
  72. package/dist/esm/components/tab-content.js.map +1 -1
  73. package/dist/esm/components/tabs.js.map +1 -1
  74. package/dist/esm/components/trigger.js +1 -1
  75. package/dist/esm/components/trigger.js.map +1 -1
  76. package/dist/esm/constants.d.ts +2 -0
  77. package/dist/esm/constants.js +7 -0
  78. package/dist/esm/constants.js.map +1 -0
  79. package/dist/esm/context/devtools-context.d.ts +49 -7
  80. package/dist/esm/context/devtools-context.js +16 -1
  81. package/dist/esm/context/devtools-context.js.map +1 -1
  82. package/dist/esm/context/devtools-store.d.ts +3 -3
  83. package/dist/esm/context/devtools-store.js.map +1 -1
  84. package/dist/esm/context/use-devtools-context.d.ts +4 -5
  85. package/dist/esm/context/use-devtools-context.js +2 -2
  86. package/dist/esm/context/use-devtools-context.js.map +1 -1
  87. package/dist/esm/core.d.ts +31 -8
  88. package/dist/esm/core.js +29 -43
  89. package/dist/esm/core.js.map +1 -1
  90. package/dist/esm/devtools.js +42 -31
  91. package/dist/esm/devtools.js.map +1 -1
  92. package/dist/esm/hooks/use-disable-tabbing.js.map +1 -1
  93. package/dist/esm/index.d.ts +4 -3
  94. package/dist/esm/index.js +5 -2
  95. package/dist/esm/index.js.map +1 -1
  96. package/dist/esm/styles/tokens.js +7 -2
  97. package/dist/esm/styles/tokens.js.map +1 -1
  98. package/dist/esm/styles/use-styles.d.ts +29 -5
  99. package/dist/esm/styles/use-styles.js +251 -11
  100. package/dist/esm/styles/use-styles.js.map +1 -1
  101. package/dist/esm/tabs/index.js.map +1 -1
  102. package/dist/esm/tabs/plugins-tab.js +9 -13
  103. package/dist/esm/tabs/plugins-tab.js.map +1 -1
  104. package/dist/esm/tabs/settings-tab.js +173 -3
  105. package/dist/esm/tabs/settings-tab.js.map +1 -1
  106. package/dist/esm/utils/sanitize.d.ts +1 -0
  107. package/dist/esm/utils/sanitize.js +3 -1
  108. package/dist/esm/utils/sanitize.js.map +1 -1
  109. package/dist/esm/utils/storage.js.map +1 -1
  110. package/package.json +7 -9
  111. package/src/components/checkbox.tsx +43 -0
  112. package/src/components/content-panel.tsx +3 -1
  113. package/src/components/input.tsx +42 -0
  114. package/src/components/main-panel.tsx +4 -4
  115. package/src/components/select.tsx +50 -0
  116. package/src/components/trigger.tsx +1 -1
  117. package/src/constants.ts +2 -0
  118. package/src/context/devtools-context.tsx +72 -11
  119. package/src/context/devtools-store.ts +3 -3
  120. package/src/context/use-devtools-context.ts +2 -3
  121. package/src/core.tsx +42 -20
  122. package/src/devtools.tsx +34 -18
  123. package/src/index.ts +7 -3
  124. package/src/styles/use-styles.ts +257 -13
  125. package/src/tabs/plugins-tab.tsx +11 -5
  126. package/src/tabs/settings-tab.tsx +217 -1
  127. package/src/utils/sanitize.ts +3 -0
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.cjs","sources":["../../../src/components/tabs.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { For } from 'solid-js'\nimport { useStyles } from '../styles/use-styles'\nimport { useDevtoolsState } from '../context/use-devtools-context'\nimport { tabs } from '../tabs'\n\ninterface TabsProps {\n toggleOpen: () => void\n}\n\nexport const Tabs = (props: TabsProps) => {\n const styles = useStyles()\n const { state, setState } = useDevtoolsState()\n\n return (\n <div class={styles().tabContainer}>\n <For each={tabs}>\n {(tab) => (\n <button\n type=\"button\"\n onClick={() => setState({ activeTab: tab.id })}\n class={clsx(styles().tab, { active: state().activeTab === tab.id })}\n >\n {tab.icon}\n </button>\n )}\n </For>\n <button\n type=\"button\"\n class={clsx(styles().tab, 'close')}\n onClick={() => props.toggleOpen()}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n </div>\n )\n}\n"],"names":["Tabs","props","styles","useStyles","state","setState","useDevtoolsState","_el$","_tmpl$","_el$2","firstChild","_$createComponent","For","each","tabs","children","tab","_el$3","_tmpl$2","$$click","activeTab","id","icon","_$effect","_$className","clsx","active","toggleOpen","_p$","_v$","tabContainer","_v$2","e","t","undefined","_$delegateEvents"],"mappings":";;;;;;;;;AAUaA,MAAAA,OAAOA,CAACC,UAAqB;AACxC,QAAMC,SAASC,UAAAA,UAAU;AACnB,QAAA;AAAA,IAAEC;AAAAA,IAAOC;AAAAA,MAAaC,oCAAiB;AAE7C,UAAA,MAAA;AAAA,QAAAC,OAAAC,OAAAA,GAAAC,QAAAF,KAAAG;AAAAH,eAAAA,MAAAI,oBAEKC,aAAG;AAAA,MAACC,MAAMC,MAAAA;AAAAA,MAAIC,UACXC,UAAG,MAAA;AAAA,YAAAC,QAAAC,QAAA;AAAAC,cAAAA,UAGQ,MAAMd,SAAS;AAAA,UAAEe,WAAWJ,IAAIK;AAAAA,QAAAA,CAAI;AAACJ,YAAAA,OAAAA,OAG7CD,MAAAA,IAAIM,IAAI;AAAAC,YAAAA,OAAAC,MAAAA,IAAAA,UAAAP,OAFFQ,KAAKvB,SAASc,KAAK;AAAA,UAAEU,QAAQtB,MAAAA,EAAQgB,cAAcJ,IAAIK;AAAAA,QAAI,CAAA,CAAC,CAAA;AAAAJ,eAAAA;AAAAA,MAAA,GAAA;AAAA,IAItE,CAAA,GAAAR,KAAA;AAAAU,UAAAA,UAKQ,MAAMlB,MAAM0B,WAAW;AAACJ,QAAAA,OAAAK,CAAA,QAAA;AAAAC,UAAAA,MAfzB3B,OAAS4B,EAAAA,cAAYC,OActBN,KAAKvB,OAAAA,EAASc,KAAK,OAAO;AAACa,cAAAD,IAAAI,KAAAR,IAAAA,UAAAjB,MAAAqB,IAAAI,IAAAH,GAAA;AAAAE,eAAAH,IAAAK,KAAAT,IAAAA,UAAAf,OAAAmB,IAAAK,IAAAF,IAAA;AAAAH,aAAAA;AAAAA,IAAAA,GAAA;AAAA,MAAAI,GAAAE;AAAAA,MAAAD,GAAAC;AAAAA,IAAAA,CAAA;AAAA3B,WAAAA;AAAAA,EAAAA,GAAA;AAoB1C;AAAC4B,IAAAA,eAAA,CAAA,OAAA,CAAA;;"}
1
+ {"version":3,"file":"tabs.cjs","sources":["../../../src/components/tabs.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { For } from 'solid-js'\nimport { useStyles } from '../styles/use-styles'\nimport { useDevtoolsState } from '../context/use-devtools-context'\nimport { tabs } from '../tabs'\n\ninterface TabsProps {\n toggleOpen: () => void\n}\n\nexport const Tabs = (props: TabsProps) => {\n const styles = useStyles()\n const { state, setState } = useDevtoolsState()\n\n return (\n <div class={styles().tabContainer}>\n <For each={tabs}>\n {(tab) => (\n <button\n type=\"button\"\n onClick={() => setState({ activeTab: tab.id })}\n class={clsx(styles().tab, { active: state().activeTab === tab.id })}\n >\n {tab.icon}\n </button>\n )}\n </For>\n <button\n type=\"button\"\n class={clsx(styles().tab, 'close')}\n onClick={() => props.toggleOpen()}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n </div>\n )\n}\n"],"names":["Tabs","props","styles","useStyles","state","setState","useDevtoolsState","_el$","_tmpl$","_el$2","firstChild","_$insert","_$createComponent","For","each","tabs","children","tab","_el$3","_tmpl$2","$$click","activeTab","id","icon","_$effect","_$className","clsx","active","toggleOpen","_p$","_v$","tabContainer","_v$2","e","t","undefined","_$delegateEvents"],"mappings":";;;;;;;;;AAUO,MAAMA,OAAOA,CAACC,UAAqB;AACxC,QAAMC,SAASC,UAAAA,UAAAA;AACf,QAAM;AAAA,IAAEC;AAAAA,IAAOC;AAAAA,EAAAA,IAAaC,oCAAAA;AAE5B,UAAA,MAAA;AAAA,QAAAC,OAAAC,OAAAA,GAAAC,QAAAF,KAAAG;AAAAC,eAAAJ,MAAAK,IAAAA,gBAEKC,aAAG;AAAA,MAACC,MAAMC,MAAAA;AAAAA,MAAIC,UACXC,UAAG,MAAA;AAAA,YAAAC,QAAAC,QAAAA;AAAAD,cAAAE,UAGQ,MAAMf,SAAS;AAAA,UAAEgB,WAAWJ,IAAIK;AAAAA,QAAAA,CAAI;AAACX,YAAAA,OAAAO,OAAA,MAG7CD,IAAIM,IAAI;AAAAC,YAAAA,OAAA,MAAAC,IAAAA,UAAAP,OAFFQ,KAAKxB,OAAAA,EAASe,KAAK;AAAA,UAAEU,QAAQvB,MAAAA,EAAQiB,cAAcJ,IAAIK;AAAAA,QAAAA,CAAI,CAAC,CAAA;AAAA,eAAAJ;AAAAA,MAAA,GAAA;AAAA,IAAA,CAItE,GAAAT,KAAA;AAAAA,UAAAW,UAKQ,MAAMnB,MAAM2B,WAAAA;AAAYJ,QAAAA,OAAAK,CAAAA,QAAA;AAAA,UAAAC,MAfzB5B,SAAS6B,cAAYC,OActBN,KAAKxB,OAAAA,EAASe,KAAK,OAAO;AAACa,cAAAD,IAAAI,KAAAR,IAAAA,UAAAlB,MAAAsB,IAAAI,IAAAH,GAAA;AAAAE,eAAAH,IAAAK,KAAAT,IAAAA,UAAAhB,OAAAoB,IAAAK,IAAAF,IAAA;AAAA,aAAAH;AAAAA,IAAA,GAAA;AAAA,MAAAI,GAAAE;AAAAA,MAAAD,GAAAC;AAAAA,IAAAA,CAAA;AAAA,WAAA5B;AAAAA,EAAA,GAAA;AAoB1C;AAAC6B,IAAAA,eAAA,CAAA,OAAA,CAAA;;"}
@@ -16,7 +16,7 @@ const Trigger = ({
16
16
  } = useDevtoolsContext.useDevtoolsSettings();
17
17
  const styles = useStyles.useStyles();
18
18
  const buttonStyle = solidJs.createMemo(() => {
19
- return clsx(styles().mainCloseBtn, styles().mainCloseBtnPosition(settings().position), styles().mainCloseBtnAnimation(isOpen()));
19
+ return clsx(styles().mainCloseBtn, styles().mainCloseBtnPosition(settings().position), styles().mainCloseBtnAnimation(isOpen(), settings().hideUntilHover));
20
20
  });
21
21
  return (() => {
22
22
  var _el$ = _tmpl$();
@@ -1 +1 @@
1
- {"version":3,"file":"trigger.cjs","sources":["../../../src/components/trigger.tsx"],"sourcesContent":["import { createMemo } from 'solid-js'\nimport clsx from 'clsx'\nimport { useDevtoolsSettings } from '../context/use-devtools-context'\nimport { useStyles } from '../styles/use-styles'\nimport { TanStackLogo } from './logo'\nimport type { Accessor } from 'solid-js'\n\nexport const Trigger = ({\n isOpen,\n setIsOpen,\n}: {\n isOpen: Accessor<boolean>\n setIsOpen: (isOpen: boolean) => void\n}) => {\n const { settings } = useDevtoolsSettings()\n const styles = useStyles()\n const buttonStyle = createMemo(() => {\n return clsx(\n styles().mainCloseBtn,\n styles().mainCloseBtnPosition(settings().position),\n styles().mainCloseBtnAnimation(isOpen()),\n )\n })\n return (\n <button\n type=\"button\"\n aria-label=\"Open TanStack Devtools\"\n class={buttonStyle()}\n onClick={() => setIsOpen(!isOpen())}\n >\n <TanStackLogo />\n </button>\n )\n}\n"],"names":["Trigger","isOpen","setIsOpen","settings","useDevtoolsSettings","styles","useStyles","buttonStyle","createMemo","clsx","mainCloseBtn","mainCloseBtnPosition","position","mainCloseBtnAnimation","_el$","_tmpl$","$$click","_$insert","_$createComponent","TanStackLogo","_$effect","_$className","_$delegateEvents"],"mappings":";;;;;;;;;AAOO,MAAMA,UAAUA,CAAC;AAAA,EACtBC;AAAAA,EACAC;AAIF,MAAM;AACE,QAAA;AAAA,IAAEC;AAAAA,MAAaC,uCAAoB;AACzC,QAAMC,SAASC,UAAAA,UAAU;AACnBC,QAAAA,cAAcC,QAAAA,WAAW,MAAM;AACnC,WAAOC,KACLJ,OAAO,EAAEK,cACTL,SAASM,qBAAqBR,SAAAA,EAAWS,QAAQ,GACjDP,OAAO,EAAEQ,sBAAsBZ,OAAQ,CAAA,CACzC;AAAA,EAAA,CACD;AACD,UAAA,MAAA;AAAA,QAAAa,OAAAC,OAAA;AAAAD,SAAAE,UAKa,MAAMd,UAAU,CAACD,QAAQ;AAACgB,QAAAA,OAAAH,MAAAI,IAAAA,gBAElCC,KAAY,cAAA,CAAA,CAAA,CAAA;AAAAC,QAAAA,aAAAC,IAAAA,UAAAP,MAHNP,YAAa,CAAA,CAAA;AAAAO,WAAAA;AAAAA,EAAAA,GAAA;AAM1B;AAACQ,IAAAA,eAAA,CAAA,OAAA,CAAA;;"}
1
+ {"version":3,"file":"trigger.cjs","sources":["../../../src/components/trigger.tsx"],"sourcesContent":["import { createMemo } from 'solid-js'\nimport clsx from 'clsx'\nimport { useDevtoolsSettings } from '../context/use-devtools-context'\nimport { useStyles } from '../styles/use-styles'\nimport { TanStackLogo } from './logo'\nimport type { Accessor } from 'solid-js'\n\nexport const Trigger = ({\n isOpen,\n setIsOpen,\n}: {\n isOpen: Accessor<boolean>\n setIsOpen: (isOpen: boolean) => void\n}) => {\n const { settings } = useDevtoolsSettings()\n const styles = useStyles()\n const buttonStyle = createMemo(() => {\n return clsx(\n styles().mainCloseBtn,\n styles().mainCloseBtnPosition(settings().position),\n styles().mainCloseBtnAnimation(isOpen(), settings().hideUntilHover),\n )\n })\n return (\n <button\n type=\"button\"\n aria-label=\"Open TanStack Devtools\"\n class={buttonStyle()}\n onClick={() => setIsOpen(!isOpen())}\n >\n <TanStackLogo />\n </button>\n )\n}\n"],"names":["Trigger","isOpen","setIsOpen","settings","useDevtoolsSettings","styles","useStyles","buttonStyle","createMemo","clsx","mainCloseBtn","mainCloseBtnPosition","position","mainCloseBtnAnimation","hideUntilHover","_el$","_tmpl$","$$click","_$insert","_$createComponent","TanStackLogo","_$effect","_$className","_$delegateEvents"],"mappings":";;;;;;;;;AAOO,MAAMA,UAAUA,CAAC;AAAA,EACtBC;AAAAA,EACAC;AAIF,MAAM;AACJ,QAAM;AAAA,IAAEC;AAAAA,EAAAA,IAAaC,uCAAAA;AACrB,QAAMC,SAASC,UAAAA,UAAAA;AACf,QAAMC,cAAcC,QAAAA,WAAW,MAAM;AACnC,WAAOC,KACLJ,SAASK,cACTL,OAAAA,EAASM,qBAAqBR,SAAAA,EAAWS,QAAQ,GACjDP,OAAAA,EAASQ,sBAAsBZ,OAAAA,GAAUE,SAAAA,EAAWW,cAAc,CACpE;AAAA,EACF,CAAC;AACD,UAAA,MAAA;AAAA,QAAAC,OAAAC,OAAAA;AAAAD,SAAAE,UAKa,MAAMf,UAAU,CAACD,QAAQ;AAACiB,QAAAA,OAAAH,MAAAI,IAAAA,gBAElCC,KAAAA,cAAY,CAAA,CAAA,CAAA;AAAAC,QAAAA,aAAAC,IAAAA,UAAAP,MAHNR,YAAAA,CAAa,CAAA;AAAA,WAAAQ;AAAAA,EAAA,GAAA;AAM1B;AAACQ,IAAAA,eAAA,CAAA,OAAA,CAAA;;"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const PLUGIN_CONTAINER_ID = "plugin-container";
4
+ const PLUGIN_TITLE_CONTAINER_ID = "plugin-title-container";
5
+ exports.PLUGIN_CONTAINER_ID = PLUGIN_CONTAINER_ID;
6
+ exports.PLUGIN_TITLE_CONTAINER_ID = PLUGIN_TITLE_CONTAINER_ID;
7
+ //# sourceMappingURL=constants.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.cjs","sources":["../../src/constants.ts"],"sourcesContent":["export const PLUGIN_CONTAINER_ID = 'plugin-container'\nexport const PLUGIN_TITLE_CONTAINER_ID = 'plugin-title-container'\n"],"names":[],"mappings":";;AAAO,MAAM,sBAAsB;AAC5B,MAAM,4BAA4B;;;"}
@@ -0,0 +1,2 @@
1
+ export declare const PLUGIN_CONTAINER_ID = "plugin-container";
2
+ export declare const PLUGIN_TITLE_CONTAINER_ID = "plugin-title-container";
@@ -14,12 +14,27 @@ const getSettings = () => {
14
14
  ...settings
15
15
  };
16
16
  };
17
+ const generatePluginId = (plugin, index) => {
18
+ if (plugin.id) {
19
+ return plugin.id;
20
+ }
21
+ if (typeof plugin.name === "string") {
22
+ return plugin.name.toLowerCase().replace(" ", "-");
23
+ }
24
+ return index.toString();
25
+ };
17
26
  const getExistingStateFromStorage = (config, plugins) => {
18
27
  const existingState = storage.getStorageItem(storage.TANSTACK_DEVTOOLS_STATE);
19
28
  const settings = getSettings();
20
29
  const state = {
21
30
  ...devtoolsStore.initialState,
22
- plugins: plugins || [],
31
+ plugins: plugins?.map((plugin, i) => {
32
+ const id = generatePluginId(plugin, i);
33
+ return {
34
+ ...plugin,
35
+ id
36
+ };
37
+ }) || [],
23
38
  state: {
24
39
  ...devtoolsStore.initialState.state,
25
40
  ...existingState ? JSON.parse(existingState) : {}
@@ -1 +1 @@
1
- {"version":3,"file":"devtools-context.cjs","sources":["../../../src/context/devtools-context.tsx"],"sourcesContent":["import { createContext } from 'solid-js'\nimport { createStore } from 'solid-js/store'\nimport { tryParseJson } from '../utils/sanitize'\nimport {\n TANSTACK_DEVTOOLS_SETTINGS,\n TANSTACK_DEVTOOLS_STATE,\n getStorageItem,\n setStorageItem,\n} from '../utils/storage'\nimport { initialState } from './devtools-store'\nimport type { DevtoolsStore } from './devtools-store'\nimport type { Setter } from 'solid-js'\nimport type { JSX } from 'solid-js/jsx-runtime'\n\nexport interface DevtoolsPlugin {\n name: string | ((el: HTMLHeadingElement) => void)\n id: string\n render: (el: HTMLDivElement) => void\n}\n\nexport const DevtoolsContext = createContext<{\n store: DevtoolsStore\n setStore: Setter<DevtoolsStore>\n}>()\n\ninterface ContextProps {\n children: JSX.Element\n plugins?: Array<DevtoolsPlugin>\n config?: DevtoolsSettings\n}\n\nconst getSettings = () => {\n const settingsString = getStorageItem(TANSTACK_DEVTOOLS_SETTINGS)\n const settings = tryParseJson<DevtoolsStore['settings']>(settingsString)\n return {\n ...settings,\n }\n}\n\nconst getExistingStateFromStorage = (\n config?: DevtoolsSettings,\n plugins?: Array<DevtoolsPlugin>,\n) => {\n const existingState = getStorageItem(TANSTACK_DEVTOOLS_STATE)\n const settings = getSettings()\n\n const state: DevtoolsStore = {\n ...initialState,\n plugins: plugins || [],\n state: {\n ...initialState.state,\n ...(existingState ? JSON.parse(existingState) : {}),\n },\n settings: {\n ...initialState.settings,\n ...config,\n ...settings,\n },\n }\n return state\n}\n\nexport type DevtoolsSettings = DevtoolsStore['settings']\n\nexport const DevtoolsProvider = (props: ContextProps) => {\n const [store, setStore] = createStore(\n getExistingStateFromStorage(props.config, props.plugins),\n )\n\n const value = {\n store,\n setStore: (\n updater: (prev: DevtoolsStore) => DevtoolsStore | Partial<DevtoolsStore>,\n ) => {\n const newState = updater(store)\n const { settings, state: internalState } = newState\n // Store user settings for dev tools into local storage\n setStorageItem(TANSTACK_DEVTOOLS_SETTINGS, JSON.stringify(settings))\n // Store general state into local storage\n setStorageItem(TANSTACK_DEVTOOLS_STATE, JSON.stringify(internalState))\n setStore((prev) => ({\n ...prev,\n ...newState,\n }))\n },\n }\n\n return (\n <DevtoolsContext.Provider value={value}>\n {props.children}\n </DevtoolsContext.Provider>\n )\n}\n"],"names":["DevtoolsContext","createContext","getSettings","settingsString","getStorageItem","TANSTACK_DEVTOOLS_SETTINGS","settings","tryParseJson","getExistingStateFromStorage","config","plugins","existingState","TANSTACK_DEVTOOLS_STATE","state","initialState","JSON","parse","DevtoolsProvider","props","store","setStore","createStore","value","updater","newState","internalState","setStorageItem","stringify","prev","_$createComponent","Provider","children"],"mappings":";;;;;;;;AAoBO,MAAMA,kBAAkBC,QAG5B,cAAA;AAQH,MAAMC,cAAcA,MAAM;AAClBC,QAAAA,iBAAiBC,uBAAeC,kCAA0B;AAC1DC,QAAAA,WAAWC,sBAAwCJ,cAAc;AAChE,SAAA;AAAA,IACL,GAAGG;AAAAA,EACL;AACF;AAEA,MAAME,8BAA8BA,CAClCC,QACAC,YACG;AACGC,QAAAA,gBAAgBP,uBAAeQ,+BAAuB;AAC5D,QAAMN,WAAWJ,YAAY;AAE7B,QAAMW,QAAuB;AAAA,IAC3B,GAAGC,cAAAA;AAAAA,IACHJ,SAASA,WAAW,CAAE;AAAA,IACtBG,OAAO;AAAA,MACL,GAAGC,cAAaD,aAAAA;AAAAA,MAChB,GAAIF,gBAAgBI,KAAKC,MAAML,aAAa,IAAI,CAAA;AAAA,IAClD;AAAA,IACAL,UAAU;AAAA,MACR,GAAGQ,cAAaR,aAAAA;AAAAA,MAChB,GAAGG;AAAAA,MACH,GAAGH;AAAAA,IAAAA;AAAAA,EAEP;AACOO,SAAAA;AACT;AAIaI,MAAAA,mBAAmBA,CAACC,UAAwB;AACjD,QAAA,CAACC,SAAOC,QAAQ,IAAIC,MAAAA,YACxBb,4BAA4BU,MAAMT,QAAQS,MAAMR,OAAO,CACzD;AAEA,QAAMY,QAAQ;AAAA,IAAA,OACZH;AAAAA,IACAC,UAAUA,CACRG,YACG;AACGC,YAAAA,WAAWD,QAAQJ,OAAK;AACxB,YAAA;AAAA,QAAEb;AAAAA,QAAUO,OAAOY;AAAAA,MAAAA,IAAkBD;AAE3CE,cAAAA,eAAerB,QAAAA,4BAA4BU,KAAKY,UAAUrB,QAAQ,CAAC;AAEnEoB,cAAAA,eAAed,QAAAA,yBAAyBG,KAAKY,UAAUF,aAAa,CAAC;AACrEL,eAAUQ,CAAU,UAAA;AAAA,QAClB,GAAGA;AAAAA,QACH,GAAGJ;AAAAA,MAAAA,EACH;AAAA,IAAA;AAAA,EAEN;AAEAK,SAAAA,IAAAA,gBACG7B,gBAAgB8B,UAAQ;AAAA,IAACR;AAAAA,IAAY,IAAAS,WAAA;AAAA,aACnCb,MAAMa;AAAAA,IAAAA;AAAAA,EAAQ,CAAA;AAGrB;;;"}
1
+ {"version":3,"file":"devtools-context.cjs","sources":["../../../src/context/devtools-context.tsx"],"sourcesContent":["import { createContext } from 'solid-js'\nimport { createStore } from 'solid-js/store'\nimport { tryParseJson } from '../utils/sanitize'\nimport {\n TANSTACK_DEVTOOLS_SETTINGS,\n TANSTACK_DEVTOOLS_STATE,\n getStorageItem,\n setStorageItem,\n} from '../utils/storage'\nimport { initialState } from './devtools-store'\nimport type { DevtoolsStore } from './devtools-store'\nimport type { JSX, Setter } from 'solid-js'\n\nexport interface TanStackDevtoolsPlugin {\n /**\n * Name to be displayed in the devtools UI.\n * If a string, it will be used as the plugin name.\n * If a function, it will be called with the mount element.\n *\n * Example:\n * ```ts\n * {\n * // If a string, it will be used as the plugin name\n * name: \"Your Plugin\",\n * render: () => {}\n * }\n * ```\n * or\n *\n * ```ts\n * {\n * // If a function, it will be called with the mount element\n * name: (el) => {\n * el.innerText = \"Your Plugin Name\"\n * // Your name logic here\n * },\n * render: () => {}\n * }\n * ```\n */\n name: string | ((el: HTMLHeadingElement) => void)\n /**\n * Unique identifier for the plugin.\n * If not provided, it will be generated based on the name.\n */\n id?: string\n /**\n * Render the plugin UI by using the provided element. This function will be called\n * when the plugin tab is clicked and expected to be mounted.\n * @param el The mount element for the plugin.\n * @returns void\n *\n * Example:\n * ```ts\n * render: (el) => {\n * el.innerHTML = \"<h1>Your Plugin</h1>\"\n * }\n * ```\n */\n render: (el: HTMLDivElement) => void\n}\nexport const DevtoolsContext = createContext<{\n store: DevtoolsStore\n setStore: Setter<DevtoolsStore>\n}>()\n\ninterface ContextProps {\n children: JSX.Element\n plugins?: Array<TanStackDevtoolsPlugin>\n config?: TanStackDevtoolsConfig\n}\n\nconst getSettings = () => {\n const settingsString = getStorageItem(TANSTACK_DEVTOOLS_SETTINGS)\n const settings = tryParseJson<DevtoolsStore['settings']>(settingsString)\n return {\n ...settings,\n }\n}\n\nconst generatePluginId = (plugin: TanStackDevtoolsPlugin, index: number) => {\n // if set by user, return the plugin id\n if (plugin.id) {\n return plugin.id\n }\n if (typeof plugin.name === 'string') {\n // if name is a string, use it to generate an id\n return plugin.name.toLowerCase().replace(' ', '-')\n }\n // Name is JSX? return the index as a string\n return index.toString()\n}\n\nconst getExistingStateFromStorage = (\n config?: TanStackDevtoolsConfig,\n plugins?: Array<TanStackDevtoolsPlugin>,\n) => {\n const existingState = getStorageItem(TANSTACK_DEVTOOLS_STATE)\n const settings = getSettings()\n\n const state: DevtoolsStore = {\n ...initialState,\n plugins:\n plugins?.map((plugin, i) => {\n const id = generatePluginId(plugin, i)\n return {\n ...plugin,\n id,\n }\n }) || [],\n state: {\n ...initialState.state,\n ...(existingState ? JSON.parse(existingState) : {}),\n },\n settings: {\n ...initialState.settings,\n ...config,\n ...settings,\n },\n }\n return state\n}\n\nexport type TanStackDevtoolsConfig = DevtoolsStore['settings']\n\nexport const DevtoolsProvider = (props: ContextProps) => {\n const [store, setStore] = createStore(\n getExistingStateFromStorage(props.config, props.plugins),\n )\n\n const value = {\n store,\n setStore: (\n updater: (prev: DevtoolsStore) => DevtoolsStore | Partial<DevtoolsStore>,\n ) => {\n const newState = updater(store)\n const { settings, state: internalState } = newState\n // Store user settings for dev tools into local storage\n setStorageItem(TANSTACK_DEVTOOLS_SETTINGS, JSON.stringify(settings))\n // Store general state into local storage\n setStorageItem(TANSTACK_DEVTOOLS_STATE, JSON.stringify(internalState))\n setStore((prev) => ({\n ...prev,\n ...newState,\n }))\n },\n }\n\n return (\n <DevtoolsContext.Provider value={value}>\n {props.children}\n </DevtoolsContext.Provider>\n )\n}\n"],"names":["DevtoolsContext","createContext","getSettings","settingsString","getStorageItem","TANSTACK_DEVTOOLS_SETTINGS","settings","tryParseJson","generatePluginId","plugin","index","id","name","toLowerCase","replace","toString","getExistingStateFromStorage","config","plugins","existingState","TANSTACK_DEVTOOLS_STATE","state","initialState","map","i","JSON","parse","DevtoolsProvider","props","store","setStore","createStore","value","updater","newState","internalState","setStorageItem","stringify","prev","_$createComponent","Provider","children"],"mappings":";;;;;;;;AA6DO,MAAMA,kBAAkBC,QAAAA,cAAAA;AAW/B,MAAMC,cAAcA,MAAM;AACxB,QAAMC,iBAAiBC,QAAAA,eAAeC,kCAA0B;AAChE,QAAMC,WAAWC,SAAAA,aAAwCJ,cAAc;AACvE,SAAO;AAAA,IACL,GAAGG;AAAAA,EAAAA;AAEP;AAEA,MAAME,mBAAmBA,CAACC,QAAgCC,UAAkB;AAE1E,MAAID,OAAOE,IAAI;AACb,WAAOF,OAAOE;AAAAA,EAChB;AACA,MAAI,OAAOF,OAAOG,SAAS,UAAU;AAEnC,WAAOH,OAAOG,KAAKC,YAAAA,EAAcC,QAAQ,KAAK,GAAG;AAAA,EACnD;AAEA,SAAOJ,MAAMK,SAAAA;AACf;AAEA,MAAMC,8BAA8BA,CAClCC,QACAC,YACG;AACH,QAAMC,gBAAgBf,QAAAA,eAAegB,+BAAuB;AAC5D,QAAMd,WAAWJ,YAAAA;AAEjB,QAAMmB,QAAuB;AAAA,IAC3B,GAAGC,cAAAA;AAAAA,IACHJ,SACEA,SAASK,IAAI,CAACd,QAAQe,MAAM;AAC1B,YAAMb,KAAKH,iBAAiBC,QAAQe,CAAC;AACrC,aAAO;AAAA,QACL,GAAGf;AAAAA,QACHE;AAAAA,MAAAA;AAAAA,IAEJ,CAAC,KAAK,CAAA;AAAA,IACRU,OAAO;AAAA,MACL,GAAGC,cAAAA,aAAaD;AAAAA,MAChB,GAAIF,gBAAgBM,KAAKC,MAAMP,aAAa,IAAI,CAAA;AAAA,IAAC;AAAA,IAEnDb,UAAU;AAAA,MACR,GAAGgB,cAAAA,aAAahB;AAAAA,MAChB,GAAGW;AAAAA,MACH,GAAGX;AAAAA,IAAAA;AAAAA,EACL;AAEF,SAAOe;AACT;AAIO,MAAMM,mBAAmBA,CAACC,UAAwB;AACvD,QAAM,CAACC,SAAOC,QAAQ,IAAIC,MAAAA,YACxBf,4BAA4BY,MAAMX,QAAQW,MAAMV,OAAO,CACzD;AAEA,QAAMc,QAAQ;AAAA,IAAA,OACZH;AAAAA,IACAC,UAAUA,CACRG,YACG;AACH,YAAMC,WAAWD,QAAQJ,OAAK;AAC9B,YAAM;AAAA,QAAEvB;AAAAA,QAAUe,OAAOc;AAAAA,MAAAA,IAAkBD;AAE3CE,cAAAA,eAAe/B,QAAAA,4BAA4BoB,KAAKY,UAAU/B,QAAQ,CAAC;AAEnE8B,cAAAA,eAAehB,QAAAA,yBAAyBK,KAAKY,UAAUF,aAAa,CAAC;AACrEL,eAAUQ,CAAAA,UAAU;AAAA,QAClB,GAAGA;AAAAA,QACH,GAAGJ;AAAAA,MAAAA,EACH;AAAA,IACJ;AAAA,EAAA;AAGF,SAAAK,IAAAA,gBACGvC,gBAAgBwC,UAAQ;AAAA,IAACR;AAAAA,IAAY,IAAAS,WAAA;AAAA,aACnCb,MAAMa;AAAAA,IAAQ;AAAA,EAAA,CAAA;AAGrB;;;"}
@@ -1,9 +1,51 @@
1
1
  import { DevtoolsStore } from './devtools-store.cjs';
2
- import { Setter } from 'solid-js';
3
- import { JSX } from 'solid-js/jsx-runtime';
4
- export interface DevtoolsPlugin {
2
+ import { JSX, Setter } from 'solid-js';
3
+ export interface TanStackDevtoolsPlugin {
4
+ /**
5
+ * Name to be displayed in the devtools UI.
6
+ * If a string, it will be used as the plugin name.
7
+ * If a function, it will be called with the mount element.
8
+ *
9
+ * Example:
10
+ * ```ts
11
+ * {
12
+ * // If a string, it will be used as the plugin name
13
+ * name: "Your Plugin",
14
+ * render: () => {}
15
+ * }
16
+ * ```
17
+ * or
18
+ *
19
+ * ```ts
20
+ * {
21
+ * // If a function, it will be called with the mount element
22
+ * name: (el) => {
23
+ * el.innerText = "Your Plugin Name"
24
+ * // Your name logic here
25
+ * },
26
+ * render: () => {}
27
+ * }
28
+ * ```
29
+ */
5
30
  name: string | ((el: HTMLHeadingElement) => void);
6
- id: string;
31
+ /**
32
+ * Unique identifier for the plugin.
33
+ * If not provided, it will be generated based on the name.
34
+ */
35
+ id?: string;
36
+ /**
37
+ * Render the plugin UI by using the provided element. This function will be called
38
+ * when the plugin tab is clicked and expected to be mounted.
39
+ * @param el The mount element for the plugin.
40
+ * @returns void
41
+ *
42
+ * Example:
43
+ * ```ts
44
+ * render: (el) => {
45
+ * el.innerHTML = "<h1>Your Plugin</h1>"
46
+ * }
47
+ * ```
48
+ */
7
49
  render: (el: HTMLDivElement) => void;
8
50
  }
9
51
  export declare const DevtoolsContext: import('solid-js').Context<{
@@ -12,9 +54,9 @@ export declare const DevtoolsContext: import('solid-js').Context<{
12
54
  } | undefined>;
13
55
  interface ContextProps {
14
56
  children: JSX.Element;
15
- plugins?: Array<DevtoolsPlugin>;
16
- config?: DevtoolsSettings;
57
+ plugins?: Array<TanStackDevtoolsPlugin>;
58
+ config?: TanStackDevtoolsConfig;
17
59
  }
18
- export type DevtoolsSettings = DevtoolsStore['settings'];
60
+ export type TanStackDevtoolsConfig = DevtoolsStore['settings'];
19
61
  export declare const DevtoolsProvider: (props: ContextProps) => JSX.Element;
20
62
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"devtools-store.cjs","sources":["../../../src/context/devtools-store.ts"],"sourcesContent":["import type { TabName } from '../tabs'\nimport type { DevtoolsPlugin } from './devtools-context'\n\ntype ModifierKey = 'Alt' | 'Control' | 'Meta' | 'Shift'\ntype KeyboardKey = ModifierKey | (string & {})\n\ntype TriggerPosition =\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right'\n | 'middle-left'\n | 'middle-right'\n\nexport type DevtoolsStore = {\n settings: {\n /**\n * Whether the dev tools should be open by default\n * @default false\n */\n defaultOpen: boolean\n /**\n * Whether the dev tools trigger should be hidden until the user hovers over it\n * @default false\n */\n hideUntilHover: boolean\n /**\n * The position of the trigger button\n * @default \"bottom-right\"\n */\n position: TriggerPosition\n\n /**\n * The location of the panel once it is open\n * @default \"bottom\"\n */\n panelLocation: 'top' | 'bottom'\n /**\n * The hotkey to open the dev tools\n * @default \"shift+a\"\n */\n openHotkey: Array<KeyboardKey>\n /**\n * Whether to require the URL flag to open the dev tools\n * @default false\n */\n requireUrlFlag: boolean\n /**\n * The URL flag to open the dev tools, used in conjunction with requireUrlFlag (if set to true)\n * @default \"tanstack-devtools\"\n */\n urlFlag: string\n }\n state: {\n activeTab: TabName\n height: number\n activePlugin?: DevtoolsPlugin | undefined\n persistOpen: boolean\n }\n plugins?: Array<DevtoolsPlugin>\n}\n\nexport const initialState: DevtoolsStore = {\n settings: {\n defaultOpen: false,\n hideUntilHover: false,\n position: 'bottom-right',\n panelLocation: 'bottom',\n openHotkey: ['Shift', 'A'],\n requireUrlFlag: false,\n urlFlag: 'tanstack-devtools',\n },\n state: {\n activeTab: 'plugins',\n height: 400,\n activePlugin: undefined,\n persistOpen: false,\n },\n}\n"],"names":[],"mappings":";;AA8DO,MAAM,eAA8B;AAAA,EACzC,UAAU;AAAA,IACR,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,eAAe;AAAA,IACf,YAAY,CAAC,SAAS,GAAG;AAAA,IACzB,gBAAgB;AAAA,IAChB,SAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,aAAa;AAAA,EAAA;AAEjB;;"}
1
+ {"version":3,"file":"devtools-store.cjs","sources":["../../../src/context/devtools-store.ts"],"sourcesContent":["import type { TabName } from '../tabs'\nimport type { TanStackDevtoolsPlugin } from './devtools-context'\n\ntype ModifierKey = 'Alt' | 'Control' | 'Meta' | 'Shift'\ntype KeyboardKey = ModifierKey | (string & {})\n\ntype TriggerPosition =\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right'\n | 'middle-left'\n | 'middle-right'\n\nexport type DevtoolsStore = {\n settings: {\n /**\n * Whether the dev tools should be open by default\n * @default false\n */\n defaultOpen: boolean\n /**\n * Whether the dev tools trigger should be hidden until the user hovers over it\n * @default false\n */\n hideUntilHover: boolean\n /**\n * The position of the trigger button\n * @default \"bottom-right\"\n */\n position: TriggerPosition\n\n /**\n * The location of the panel once it is open\n * @default \"bottom\"\n */\n panelLocation: 'top' | 'bottom'\n /**\n * The hotkey to open the dev tools\n * @default \"shift+a\"\n */\n openHotkey: Array<KeyboardKey>\n /**\n * Whether to require the URL flag to open the dev tools\n * @default false\n */\n requireUrlFlag: boolean\n /**\n * The URL flag to open the dev tools, used in conjunction with requireUrlFlag (if set to true)\n * @default \"tanstack-devtools\"\n */\n urlFlag: string\n }\n state: {\n activeTab: TabName\n height: number\n activePlugin?: string | undefined\n persistOpen: boolean\n }\n plugins?: Array<TanStackDevtoolsPlugin>\n}\n\nexport const initialState: DevtoolsStore = {\n settings: {\n defaultOpen: false,\n hideUntilHover: false,\n position: 'bottom-right',\n panelLocation: 'bottom',\n openHotkey: ['Shift', 'A'],\n requireUrlFlag: false,\n urlFlag: 'tanstack-devtools',\n },\n state: {\n activeTab: 'plugins',\n height: 400,\n activePlugin: undefined,\n persistOpen: false,\n },\n}\n"],"names":[],"mappings":";;AA8DO,MAAM,eAA8B;AAAA,EACzC,UAAU;AAAA,IACR,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,eAAe;AAAA,IACf,YAAY,CAAC,SAAS,GAAG;AAAA,IACzB,gBAAgB;AAAA,IAChB,SAAS;AAAA,EAAA;AAAA,EAEX,OAAO;AAAA,IACL,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,aAAa;AAAA,EAAA;AAEjB;;"}
@@ -1,5 +1,5 @@
1
1
  import { TabName } from '../tabs.cjs';
2
- import { DevtoolsPlugin } from './devtools-context.cjs';
2
+ import { TanStackDevtoolsPlugin } from './devtools-context.cjs';
3
3
  type ModifierKey = 'Alt' | 'Control' | 'Meta' | 'Shift';
4
4
  type KeyboardKey = ModifierKey | (string & {});
5
5
  type TriggerPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'middle-left' | 'middle-right';
@@ -44,10 +44,10 @@ export type DevtoolsStore = {
44
44
  state: {
45
45
  activeTab: TabName;
46
46
  height: number;
47
- activePlugin?: DevtoolsPlugin | undefined;
47
+ activePlugin?: string | undefined;
48
48
  persistOpen: boolean;
49
49
  };
50
- plugins?: Array<DevtoolsPlugin>;
50
+ plugins?: Array<TanStackDevtoolsPlugin>;
51
51
  };
52
52
  export declare const initialState: DevtoolsStore;
53
53
  export {};
@@ -15,12 +15,12 @@ const usePlugins = () => {
15
15
  const { store, setStore } = useDevtoolsContext();
16
16
  const plugins = solidJs.createMemo(() => store.plugins);
17
17
  const activePlugin = solidJs.createMemo(() => store.state.activePlugin);
18
- const setActivePlugin = (plugin) => {
18
+ const setActivePlugin = (pluginId) => {
19
19
  setStore((prev) => ({
20
20
  ...prev,
21
21
  state: {
22
22
  ...prev.state,
23
- activePlugin: plugin
23
+ activePlugin: pluginId
24
24
  }
25
25
  }));
26
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-devtools-context.cjs","sources":["../../../src/context/use-devtools-context.ts"],"sourcesContent":["import { createMemo, useContext } from 'solid-js'\nimport { DevtoolsContext } from './devtools-context.jsx'\nimport type { DevtoolsPlugin } from './devtools-context.jsx'\n/* import type { DevtoolsPlugin } from './devtools-context' */\nimport type { DevtoolsStore } from './devtools-store.js'\n\n/**\n * Returns an object containing the current state and setState function of the ShellContext.\n * Throws an error if used outside of a ShellContextProvider.\n */\nconst useDevtoolsContext = () => {\n const context = useContext(DevtoolsContext)\n if (context === undefined) {\n throw new Error(\n 'useDevtoolsShellContext must be used within a ShellContextProvider',\n )\n }\n return context\n}\n\nexport const usePlugins = () => {\n const { store, setStore } = useDevtoolsContext()\n\n const plugins = createMemo(() => store.plugins)\n const activePlugin = createMemo(() => store.state.activePlugin)\n\n const setActivePlugin = (plugin: DevtoolsPlugin) => {\n setStore((prev) => ({\n ...prev,\n state: {\n ...prev.state,\n activePlugin: plugin,\n },\n }))\n }\n\n return { plugins, setActivePlugin, activePlugin }\n}\n\nexport const useDevtoolsState = () => {\n const { store, setStore } = useDevtoolsContext()\n const state = createMemo(() => store.state)\n const setState = (newState: Partial<DevtoolsStore['state']>) => {\n setStore((prev) => ({\n ...prev,\n state: {\n ...prev.state,\n ...newState,\n },\n }))\n }\n return { state, setState }\n}\n\nexport const useDevtoolsSettings = () => {\n const { store, setStore } = useDevtoolsContext()\n\n const settings = createMemo(() => store.settings)\n\n const setSettings = (newSettings: Partial<DevtoolsStore['settings']>) => {\n setStore((prev) => ({\n ...prev,\n settings: {\n ...prev.settings,\n ...newSettings,\n },\n }))\n }\n\n return { setSettings, settings }\n}\n\nexport const usePersistOpen = () => {\n const { state, setState } = useDevtoolsState()\n\n const persistOpen = createMemo(() => state().persistOpen)\n\n const setPersistOpen = (value: boolean) => {\n setState({ persistOpen: value })\n }\n\n return { persistOpen, setPersistOpen }\n}\n\nexport const useHeight = () => {\n const { state, setState } = useDevtoolsState()\n\n const height = createMemo(() => state().height)\n\n const setHeight = (newHeight: number) => {\n setState({ height: newHeight })\n }\n\n return { height, setHeight }\n}\n"],"names":["useContext","DevtoolsContext","createMemo"],"mappings":";;;;AAUA,MAAM,qBAAqB,MAAM;AACzB,QAAA,UAAUA,mBAAWC,+BAAe;AAC1C,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EAAA;AAEK,SAAA;AACT;AAEO,MAAM,aAAa,MAAM;AAC9B,QAAM,EAAE,OAAO,SAAS,IAAI,mBAAmB;AAE/C,QAAM,UAAUC,QAAAA,WAAW,MAAM,MAAM,OAAO;AAC9C,QAAM,eAAeA,QAAA,WAAW,MAAM,MAAM,MAAM,YAAY;AAExD,QAAA,kBAAkB,CAAC,WAA2B;AAClD,aAAS,CAAC,UAAU;AAAA,MAClB,GAAG;AAAA,MACH,OAAO;AAAA,QACL,GAAG,KAAK;AAAA,QACR,cAAc;AAAA,MAAA;AAAA,IAChB,EACA;AAAA,EACJ;AAEO,SAAA,EAAE,SAAS,iBAAiB,aAAa;AAClD;AAEO,MAAM,mBAAmB,MAAM;AACpC,QAAM,EAAE,OAAO,SAAS,IAAI,mBAAmB;AAC/C,QAAM,QAAQA,QAAAA,WAAW,MAAM,MAAM,KAAK;AACpC,QAAA,WAAW,CAAC,aAA8C;AAC9D,aAAS,CAAC,UAAU;AAAA,MAClB,GAAG;AAAA,MACH,OAAO;AAAA,QACL,GAAG,KAAK;AAAA,QACR,GAAG;AAAA,MAAA;AAAA,IACL,EACA;AAAA,EACJ;AACO,SAAA,EAAE,OAAO,SAAS;AAC3B;AAEO,MAAM,sBAAsB,MAAM;AACvC,QAAM,EAAE,OAAO,SAAS,IAAI,mBAAmB;AAE/C,QAAM,WAAWA,QAAAA,WAAW,MAAM,MAAM,QAAQ;AAE1C,QAAA,cAAc,CAAC,gBAAoD;AACvE,aAAS,CAAC,UAAU;AAAA,MAClB,GAAG;AAAA,MACH,UAAU;AAAA,QACR,GAAG,KAAK;AAAA,QACR,GAAG;AAAA,MAAA;AAAA,IACL,EACA;AAAA,EACJ;AAEO,SAAA,EAAE,aAAa,SAAS;AACjC;AAEO,MAAM,iBAAiB,MAAM;AAClC,QAAM,EAAE,OAAO,SAAS,IAAI,iBAAiB;AAE7C,QAAM,cAAcA,QAAA,WAAW,MAAM,MAAA,EAAQ,WAAW;AAElD,QAAA,iBAAiB,CAAC,UAAmB;AAChC,aAAA,EAAE,aAAa,OAAO;AAAA,EACjC;AAEO,SAAA,EAAE,aAAa,eAAe;AACvC;AAEO,MAAM,YAAY,MAAM;AAC7B,QAAM,EAAE,OAAO,SAAS,IAAI,iBAAiB;AAE7C,QAAM,SAASA,QAAA,WAAW,MAAM,MAAA,EAAQ,MAAM;AAExC,QAAA,YAAY,CAAC,cAAsB;AAC9B,aAAA,EAAE,QAAQ,WAAW;AAAA,EAChC;AAEO,SAAA,EAAE,QAAQ,UAAU;AAC7B;;;;;;"}
1
+ {"version":3,"file":"use-devtools-context.cjs","sources":["../../../src/context/use-devtools-context.ts"],"sourcesContent":["import { createMemo, useContext } from 'solid-js'\nimport { DevtoolsContext } from './devtools-context.jsx'\n/* import type { DevtoolsPlugin } from './devtools-context' */\nimport type { DevtoolsStore } from './devtools-store.js'\n\n/**\n * Returns an object containing the current state and setState function of the ShellContext.\n * Throws an error if used outside of a ShellContextProvider.\n */\nconst useDevtoolsContext = () => {\n const context = useContext(DevtoolsContext)\n if (context === undefined) {\n throw new Error(\n 'useDevtoolsShellContext must be used within a ShellContextProvider',\n )\n }\n return context\n}\n\nexport const usePlugins = () => {\n const { store, setStore } = useDevtoolsContext()\n\n const plugins = createMemo(() => store.plugins)\n const activePlugin = createMemo(() => store.state.activePlugin)\n\n const setActivePlugin = (pluginId: string) => {\n setStore((prev) => ({\n ...prev,\n state: {\n ...prev.state,\n activePlugin: pluginId,\n },\n }))\n }\n\n return { plugins, setActivePlugin, activePlugin }\n}\n\nexport const useDevtoolsState = () => {\n const { store, setStore } = useDevtoolsContext()\n const state = createMemo(() => store.state)\n const setState = (newState: Partial<DevtoolsStore['state']>) => {\n setStore((prev) => ({\n ...prev,\n state: {\n ...prev.state,\n ...newState,\n },\n }))\n }\n return { state, setState }\n}\n\nexport const useDevtoolsSettings = () => {\n const { store, setStore } = useDevtoolsContext()\n\n const settings = createMemo(() => store.settings)\n\n const setSettings = (newSettings: Partial<DevtoolsStore['settings']>) => {\n setStore((prev) => ({\n ...prev,\n settings: {\n ...prev.settings,\n ...newSettings,\n },\n }))\n }\n\n return { setSettings, settings }\n}\n\nexport const usePersistOpen = () => {\n const { state, setState } = useDevtoolsState()\n\n const persistOpen = createMemo(() => state().persistOpen)\n\n const setPersistOpen = (value: boolean) => {\n setState({ persistOpen: value })\n }\n\n return { persistOpen, setPersistOpen }\n}\n\nexport const useHeight = () => {\n const { state, setState } = useDevtoolsState()\n\n const height = createMemo(() => state().height)\n\n const setHeight = (newHeight: number) => {\n setState({ height: newHeight })\n }\n\n return { height, setHeight }\n}\n"],"names":["useContext","DevtoolsContext","createMemo"],"mappings":";;;;AASA,MAAM,qBAAqB,MAAM;AAC/B,QAAM,UAAUA,QAAAA,WAAWC,+BAAe;AAC1C,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AACA,SAAO;AACT;AAEO,MAAM,aAAa,MAAM;AAC9B,QAAM,EAAE,OAAO,SAAA,IAAa,mBAAA;AAE5B,QAAM,UAAUC,QAAAA,WAAW,MAAM,MAAM,OAAO;AAC9C,QAAM,eAAeA,QAAAA,WAAW,MAAM,MAAM,MAAM,YAAY;AAE9D,QAAM,kBAAkB,CAAC,aAAqB;AAC5C,aAAS,CAAC,UAAU;AAAA,MAClB,GAAG;AAAA,MACH,OAAO;AAAA,QACL,GAAG,KAAK;AAAA,QACR,cAAc;AAAA,MAAA;AAAA,IAChB,EACA;AAAA,EACJ;AAEA,SAAO,EAAE,SAAS,iBAAiB,aAAA;AACrC;AAEO,MAAM,mBAAmB,MAAM;AACpC,QAAM,EAAE,OAAO,SAAA,IAAa,mBAAA;AAC5B,QAAM,QAAQA,QAAAA,WAAW,MAAM,MAAM,KAAK;AAC1C,QAAM,WAAW,CAAC,aAA8C;AAC9D,aAAS,CAAC,UAAU;AAAA,MAClB,GAAG;AAAA,MACH,OAAO;AAAA,QACL,GAAG,KAAK;AAAA,QACR,GAAG;AAAA,MAAA;AAAA,IACL,EACA;AAAA,EACJ;AACA,SAAO,EAAE,OAAO,SAAA;AAClB;AAEO,MAAM,sBAAsB,MAAM;AACvC,QAAM,EAAE,OAAO,SAAA,IAAa,mBAAA;AAE5B,QAAM,WAAWA,QAAAA,WAAW,MAAM,MAAM,QAAQ;AAEhD,QAAM,cAAc,CAAC,gBAAoD;AACvE,aAAS,CAAC,UAAU;AAAA,MAClB,GAAG;AAAA,MACH,UAAU;AAAA,QACR,GAAG,KAAK;AAAA,QACR,GAAG;AAAA,MAAA;AAAA,IACL,EACA;AAAA,EACJ;AAEA,SAAO,EAAE,aAAa,SAAA;AACxB;AAEO,MAAM,iBAAiB,MAAM;AAClC,QAAM,EAAE,OAAO,SAAA,IAAa,iBAAA;AAE5B,QAAM,cAAcA,QAAAA,WAAW,MAAM,MAAA,EAAQ,WAAW;AAExD,QAAM,iBAAiB,CAAC,UAAmB;AACzC,aAAS,EAAE,aAAa,OAAO;AAAA,EACjC;AAEA,SAAO,EAAE,aAAa,eAAA;AACxB;AAEO,MAAM,YAAY,MAAM;AAC7B,QAAM,EAAE,OAAO,SAAA,IAAa,iBAAA;AAE5B,QAAM,SAASA,QAAAA,WAAW,MAAM,MAAA,EAAQ,MAAM;AAE9C,QAAM,YAAY,CAAC,cAAsB;AACvC,aAAS,EAAE,QAAQ,WAAW;AAAA,EAChC;AAEA,SAAO,EAAE,QAAQ,UAAA;AACnB;;;;;;"}
@@ -1,15 +1,14 @@
1
- import { DevtoolsPlugin } from './devtools-context.jsx';
2
1
  import { DevtoolsStore } from './devtools-store.js';
3
2
  export declare const usePlugins: () => {
4
- plugins: import('solid-js').Accessor<DevtoolsPlugin[] | undefined>;
5
- setActivePlugin: (plugin: DevtoolsPlugin) => void;
6
- activePlugin: import('solid-js').Accessor<DevtoolsPlugin | undefined>;
3
+ plugins: import('solid-js').Accessor<import('./devtools-context.jsx').TanStackDevtoolsPlugin[] | undefined>;
4
+ setActivePlugin: (pluginId: string) => void;
5
+ activePlugin: import('solid-js').Accessor<string | undefined>;
7
6
  };
8
7
  export declare const useDevtoolsState: () => {
9
8
  state: import('solid-js').Accessor<{
10
9
  activeTab: import('../tabs/index.jsx').TabName;
11
10
  height: number;
12
- activePlugin?: DevtoolsPlugin | undefined;
11
+ activePlugin?: string | undefined;
13
12
  persistOpen: boolean;
14
13
  }>;
15
14
  setState: (newState: Partial<DevtoolsStore["state"]>) => void;
package/dist/cjs/core.cjs CHANGED
@@ -1,12 +1,4 @@
1
1
  "use strict";
2
- var __typeError = (msg) => {
3
- throw TypeError(msg);
4
- };
5
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
6
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
7
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
8
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
9
- var _options, _plugins, _isMounted, _dispose, _Component;
10
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
11
3
  const web = require("solid-js/web");
12
4
  const solidJs = require("solid-js");
@@ -14,35 +6,35 @@ const devtoolsContext = require("./context/devtools-context.cjs");
14
6
  const devtoolsStore = require("./context/devtools-store.cjs");
15
7
  const _interopNamespaceDefaultOnly = (e) => Object.freeze(Object.defineProperty({ __proto__: null, default: e }, Symbol.toStringTag, { value: "Module" }));
16
8
  class TanStackDevtoolsCore {
17
- constructor(config) {
18
- __privateAdd(this, _options, {
19
- ...devtoolsStore.initialState.settings
20
- });
21
- __privateAdd(this, _plugins, []);
22
- __privateAdd(this, _isMounted, false);
23
- __privateAdd(this, _dispose);
24
- __privateAdd(this, _Component);
25
- __privateSet(this, _plugins, config.plugins || []);
26
- __privateSet(this, _options, {
27
- ...__privateGet(this, _options),
28
- ...config.options
29
- });
9
+ #config = {
10
+ ...devtoolsStore.initialState.settings
11
+ };
12
+ #plugins = [];
13
+ #isMounted = false;
14
+ #dispose;
15
+ #Component;
16
+ constructor(init) {
17
+ this.#plugins = init.plugins || [];
18
+ this.#config = {
19
+ ...this.#config,
20
+ ...init.config
21
+ };
30
22
  }
31
23
  mount(el) {
32
- if (__privateGet(this, _isMounted)) {
24
+ if (this.#isMounted) {
33
25
  throw new Error("Devtools is already mounted");
34
26
  }
35
27
  const mountTo = el;
36
28
  const dispose = web.render(() => {
37
29
  const _self$ = this;
38
- __privateSet(this, _Component, solidJs.lazy(() => Promise.resolve().then(() => /* @__PURE__ */ _interopNamespaceDefaultOnly(require("./devtools.cjs")))));
39
- const Devtools = __privateGet(this, _Component);
30
+ this.#Component = solidJs.lazy(() => Promise.resolve().then(() => /* @__PURE__ */ _interopNamespaceDefaultOnly(require("./devtools.cjs"))));
31
+ const Devtools = this.#Component;
40
32
  return web.createComponent(devtoolsContext.DevtoolsProvider, {
41
33
  get plugins() {
42
- return __privateGet(_self$, _plugins);
34
+ return _self$.#plugins;
43
35
  },
44
36
  get config() {
45
- return __privateGet(_self$, _options);
37
+ return _self$.#config;
46
38
  },
47
39
  get children() {
48
40
  return web.createComponent(web.Portal, {
@@ -54,28 +46,22 @@ class TanStackDevtoolsCore {
54
46
  }
55
47
  });
56
48
  }, mountTo);
57
- __privateSet(this, _isMounted, true);
58
- __privateSet(this, _dispose, dispose);
49
+ this.#isMounted = true;
50
+ this.#dispose = dispose;
59
51
  }
60
52
  unmount() {
61
- var _a;
62
- if (!__privateGet(this, _isMounted)) {
53
+ if (!this.#isMounted) {
63
54
  throw new Error("Devtools is not mounted");
64
55
  }
65
- (_a = __privateGet(this, _dispose)) == null ? void 0 : _a.call(this);
66
- __privateSet(this, _isMounted, false);
56
+ this.#dispose?.();
57
+ this.#isMounted = false;
67
58
  }
68
- setOptions(options) {
69
- __privateSet(this, _options, {
70
- ...__privateGet(this, _options),
71
- ...options
72
- });
59
+ setConfig(config) {
60
+ this.#config = {
61
+ ...this.#config,
62
+ ...config
63
+ };
73
64
  }
74
65
  }
75
- _options = new WeakMap();
76
- _plugins = new WeakMap();
77
- _isMounted = new WeakMap();
78
- _dispose = new WeakMap();
79
- _Component = new WeakMap();
80
- exports.TanStackRouterDevtoolsCore = TanStackDevtoolsCore;
66
+ exports.TanStackDevtoolsCore = TanStackDevtoolsCore;
81
67
  //# sourceMappingURL=core.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.cjs","sources":["../../src/core.tsx"],"sourcesContent":["import { lazy } from 'solid-js'\nimport { Portal, render } from 'solid-js/web'\nimport { DevtoolsProvider } from './context/devtools-context'\nimport { initialState } from './context/devtools-store'\nimport type {\n DevtoolsPlugin,\n DevtoolsSettings,\n} from './context/devtools-context'\n\nexport interface DevtoolsOptions {\n options?: Partial<DevtoolsSettings>\n plugins?: Array<DevtoolsPlugin>\n}\n\nclass TanStackDevtoolsCore {\n #options: DevtoolsSettings = {\n ...initialState.settings,\n }\n #plugins: Array<DevtoolsPlugin> = []\n #isMounted = false\n #dispose?: () => void\n #Component: any\n\n constructor(config: DevtoolsOptions) {\n this.#plugins = config.plugins || []\n this.#options = {\n ...this.#options,\n ...config.options,\n }\n }\n\n mount<T extends HTMLElement>(el: T) {\n if (this.#isMounted) {\n throw new Error('Devtools is already mounted')\n }\n const mountTo = el\n const dispose = render(() => {\n this.#Component = lazy(() => import('./devtools'))\n\n const Devtools = this.#Component\n\n return (\n <DevtoolsProvider plugins={this.#plugins} config={this.#options}>\n <Portal mount={mountTo}>\n <Devtools />\n </Portal>\n </DevtoolsProvider>\n )\n }, mountTo)\n\n this.#isMounted = true\n this.#dispose = dispose\n }\n\n unmount() {\n if (!this.#isMounted) {\n throw new Error('Devtools is not mounted')\n }\n this.#dispose?.()\n this.#isMounted = false\n }\n\n setOptions(options: Partial<DevtoolsOptions>) {\n this.#options = {\n ...this.#options,\n ...options,\n }\n }\n}\n\nexport { TanStackDevtoolsCore as TanStackRouterDevtoolsCore }\n"],"names":["TanStackDevtoolsCore","constructor","config","initialState","settings","plugins","options","mount","el","Error","mountTo","dispose","render","_self$","lazy","Devtools","_$createComponent","DevtoolsProvider","children","Portal","unmount","setOptions"],"mappings":";;;;;;;;;;;;;;;AAcA,MAAMA,qBAAqB;AAAA,EASzBC,YAAYC,QAAyB;AARrC,iCAA6B;AAAA,MAC3B,GAAGC,2BAAaC;AAAAA,IAClB;AACA,iCAAkC,CAAE;AACpC,mCAAa;AACb;AACA;AAGO,uBAAA,UAAWF,OAAOG,WAAW,CAAE;AACpC,uBAAK,UAAW;AAAA,MACd,GAAG,mBAAK;AAAA,MACR,GAAGH,OAAOI;AAAAA,IACZ;AAAA,EAAA;AAAA,EAGFC,MAA6BC,IAAO;AAClC,QAAI,mBAAK,aAAY;AACb,YAAA,IAAIC,MAAM,6BAA6B;AAAA,IAAA;AAE/C,UAAMC,UAAUF;AACVG,UAAAA,UAAUC,IAAAA,OAAO,MAAM;AAAA,YAAAC,SAAA;AAC3B,yBAAK,YAAaC,QAAAA,KAAK,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,6CAAA,QAAO,gBAAY,CAAA,CAAA,CAAC;AAEjD,YAAMC,WAAW,mBAAK;AAEtB,aAAAC,IAAAA,gBACGC,gBAAAA,kBAAgB;AAAA,QAAA,IAACZ,UAAO;AAAA,iBAAEQ,qBAAK;AAAA,QAAQ;AAAA,QAAA,IAAEX,SAAM;AAAA,iBAAEW,qBAAK;AAAA,QAAQ;AAAA,QAAA,IAAAK,WAAA;AAAA,iBAAAF,IAAAA,gBAC5DG,IAAAA,QAAM;AAAA,YAACZ,OAAOG;AAAAA,YAAO,IAAAQ,WAAA;AAAAF,qBAAAA,IAAAA,gBACnBD,UAAQ,EAAA;AAAA,YAAA;AAAA,UAAA,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,OAIdL,OAAO;AAEV,uBAAK,YAAa;AAClB,uBAAK,UAAWC;AAAAA,EAAAA;AAAAA,EAGlBS,UAAU;;AACJ,QAAA,CAAC,mBAAK,aAAY;AACd,YAAA,IAAIX,MAAM,yBAAyB;AAAA,IAAA;AAE3C,6BAAK,cAAL;AACA,uBAAK,YAAa;AAAA,EAAA;AAAA,EAGpBY,WAAWf,SAAmC;AAC5C,uBAAK,UAAW;AAAA,MACd,GAAG,mBAAK;AAAA,MACR,GAAGA;AAAAA,IACL;AAAA,EAAA;AAEJ;AArDE;AAGA;AACA;AACA;AACA;;"}
1
+ {"version":3,"file":"core.cjs","sources":["../../src/core.tsx"],"sourcesContent":["import { lazy } from 'solid-js'\nimport { Portal, render } from 'solid-js/web'\nimport { DevtoolsProvider } from './context/devtools-context'\nimport { initialState } from './context/devtools-store'\nimport type {\n TanStackDevtoolsConfig,\n TanStackDevtoolsPlugin,\n} from './context/devtools-context'\n\nexport interface TanStackDevtoolsInit {\n /**\n * Configuration for the devtools shell. These configuration options are used to set the\n * initial state of the devtools when it is started for the first time. Afterwards,\n * the settings are persisted in local storage and changed through the settings panel.\n */\n config?: Partial<TanStackDevtoolsConfig>\n /**\n * Array of plugins to be used in the devtools.\n * Each plugin has a `render` function that gives you the dom node to mount into\n *\n * Example:\n * ```ts\n * const devtools = new TanStackDevtoolsCore({\n * plugins: [\n * {\n * id: \"your-plugin-id\",\n * name: \"Your Plugin\",\n * render: (el) => {\n * // Your render logic here\n * },\n * },\n * ],\n * })\n * ```\n */\n plugins?: Array<TanStackDevtoolsPlugin>\n}\n\nexport class TanStackDevtoolsCore {\n #config: TanStackDevtoolsConfig = {\n ...initialState.settings,\n }\n #plugins: Array<TanStackDevtoolsPlugin> = []\n #isMounted = false\n #dispose?: () => void\n #Component: any\n\n constructor(init: TanStackDevtoolsInit) {\n this.#plugins = init.plugins || []\n this.#config = {\n ...this.#config,\n ...init.config,\n }\n }\n\n mount<T extends HTMLElement>(el: T) {\n if (this.#isMounted) {\n throw new Error('Devtools is already mounted')\n }\n const mountTo = el\n const dispose = render(() => {\n this.#Component = lazy(() => import('./devtools'))\n\n const Devtools = this.#Component\n\n return (\n <DevtoolsProvider plugins={this.#plugins} config={this.#config}>\n <Portal mount={mountTo}>\n <Devtools />\n </Portal>\n </DevtoolsProvider>\n )\n }, mountTo)\n\n this.#isMounted = true\n this.#dispose = dispose\n }\n\n unmount() {\n if (!this.#isMounted) {\n throw new Error('Devtools is not mounted')\n }\n this.#dispose?.()\n this.#isMounted = false\n }\n\n setConfig(config: Partial<TanStackDevtoolsInit>) {\n this.#config = {\n ...this.#config,\n ...config,\n }\n }\n}\n"],"names":["TanStackDevtoolsCore","initialState","settings","constructor","init","plugins","config","mount","el","Error","mountTo","dispose","render","_self$","lazy","Devtools","_$createComponent","DevtoolsProvider","children","Portal","unmount","setConfig"],"mappings":";;;;;;;AAsCO,MAAMA,qBAAqB;AAAA,EAChC,UAAkC;AAAA,IAChC,GAAGC,2BAAaC;AAAAA,EAAAA;AAAAA,EAElB,WAA0C,CAAA;AAAA,EAC1C,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EAEAC,YAAYC,MAA4B;AACtC,SAAK,WAAWA,KAAKC,WAAW,CAAA;AAChC,SAAK,UAAU;AAAA,MACb,GAAG,KAAK;AAAA,MACR,GAAGD,KAAKE;AAAAA,IAAAA;AAAAA,EAEZ;AAAA,EAEAC,MAA6BC,IAAO;AAClC,QAAI,KAAK,YAAY;AACnB,YAAM,IAAIC,MAAM,6BAA6B;AAAA,IAC/C;AACA,UAAMC,UAAUF;AAChB,UAAMG,UAAUC,IAAAA,OAAO,MAAM;AAAA,YAAAC,SAAA;AAC3B,WAAK,aAAaC,QAAAA,KAAK,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,6CAAA,QAAO,gBAAY,CAAA,CAAA,CAAC;AAEjD,YAAMC,WAAW,KAAK;AAEtB,aAAAC,IAAAA,gBACGC,gBAAAA,kBAAgB;AAAA,QAAA,IAACZ,UAAO;AAAA,iBAAEQ,OAAK;AAAA,QAAQ;AAAA,QAAA,IAAEP,SAAM;AAAA,iBAAEO,OAAK;AAAA,QAAO;AAAA,QAAA,IAAAK,WAAA;AAAA,iBAAAF,IAAAA,gBAC3DG,IAAAA,QAAM;AAAA,YAACZ,OAAOG;AAAAA,YAAO,IAAAQ,WAAA;AAAA,qBAAAF,IAAAA,gBACnBD,UAAQ,EAAA;AAAA,YAAA;AAAA,UAAA,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAIjB,GAAGL,OAAO;AAEV,SAAK,aAAa;AAClB,SAAK,WAAWC;AAAAA,EAClB;AAAA,EAEAS,UAAU;AACR,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAIX,MAAM,yBAAyB;AAAA,IAC3C;AACA,SAAK,WAAA;AACL,SAAK,aAAa;AAAA,EACpB;AAAA,EAEAY,UAAUf,QAAuC;AAC/C,SAAK,UAAU;AAAA,MACb,GAAG,KAAK;AAAA,MACR,GAAGA;AAAAA,IAAAA;AAAAA,EAEP;AACF;;"}
@@ -1,13 +1,36 @@
1
- import { DevtoolsPlugin, DevtoolsSettings } from './context/devtools-context.cjs';
2
- export interface DevtoolsOptions {
3
- options?: Partial<DevtoolsSettings>;
4
- plugins?: Array<DevtoolsPlugin>;
1
+ import { TanStackDevtoolsConfig, TanStackDevtoolsPlugin } from './context/devtools-context.cjs';
2
+ export interface TanStackDevtoolsInit {
3
+ /**
4
+ * Configuration for the devtools shell. These configuration options are used to set the
5
+ * initial state of the devtools when it is started for the first time. Afterwards,
6
+ * the settings are persisted in local storage and changed through the settings panel.
7
+ */
8
+ config?: Partial<TanStackDevtoolsConfig>;
9
+ /**
10
+ * Array of plugins to be used in the devtools.
11
+ * Each plugin has a `render` function that gives you the dom node to mount into
12
+ *
13
+ * Example:
14
+ * ```ts
15
+ * const devtools = new TanStackDevtoolsCore({
16
+ * plugins: [
17
+ * {
18
+ * id: "your-plugin-id",
19
+ * name: "Your Plugin",
20
+ * render: (el) => {
21
+ * // Your render logic here
22
+ * },
23
+ * },
24
+ * ],
25
+ * })
26
+ * ```
27
+ */
28
+ plugins?: Array<TanStackDevtoolsPlugin>;
5
29
  }
6
- declare class TanStackDevtoolsCore {
30
+ export declare class TanStackDevtoolsCore {
7
31
  #private;
8
- constructor(config: DevtoolsOptions);
32
+ constructor(init: TanStackDevtoolsInit);
9
33
  mount<T extends HTMLElement>(el: T): void;
10
34
  unmount(): void;
11
- setOptions(options: Partial<DevtoolsOptions>): void;
35
+ setConfig(config: Partial<TanStackDevtoolsInit>): void;
12
36
  }
13
- export { TanStackDevtoolsCore as TanStackRouterDevtoolsCore };
@@ -31,16 +31,19 @@ function DevTools() {
31
31
  setIsOpen(!open);
32
32
  setPersistOpen(!open);
33
33
  };
34
+ solidJs.createEffect(() => {
35
+ });
34
36
  const handleDragStart = (panelElement, startEvent) => {
35
37
  if (startEvent.button !== 0) return;
38
+ if (!panelElement) return;
36
39
  setIsResizing(true);
37
40
  const dragInfo = {
38
- originalHeight: (panelElement == null ? void 0 : panelElement.getBoundingClientRect().height) ?? 0,
41
+ originalHeight: panelElement.getBoundingClientRect().height,
39
42
  pageY: startEvent.pageY
40
43
  };
41
44
  const run = (moveEvent) => {
42
45
  const delta = dragInfo.pageY - moveEvent.pageY;
43
- const newHeight = dragInfo.originalHeight + delta;
46
+ const newHeight = settings().panelLocation === "bottom" ? dragInfo.originalHeight + delta : dragInfo.originalHeight - delta;
44
47
  setHeight(newHeight);
45
48
  if (newHeight < 70) {
46
49
  setIsOpen(false);
@@ -57,15 +60,14 @@ function DevTools() {
57
60
  document.addEventListener("mouseup", unsub);
58
61
  };
59
62
  solidJs.createEffect(() => {
60
- var _a, _b, _c;
61
63
  if (isOpen()) {
62
- const previousValue = (_b = (_a = rootEl()) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.style.paddingBottom;
64
+ const previousValue = rootEl()?.parentElement?.style.paddingBottom;
63
65
  const run = () => {
64
- var _a2;
66
+ if (!panelRef) return;
65
67
  const containerHeight = panelRef.getBoundingClientRect().height;
66
- if ((_a2 = rootEl()) == null ? void 0 : _a2.parentElement) {
68
+ if (rootEl()?.parentElement) {
67
69
  setRootEl((prev) => {
68
- if (prev == null ? void 0 : prev.parentElement) {
70
+ if (prev?.parentElement) {
69
71
  prev.parentElement.style.paddingBottom = `${containerHeight}px`;
70
72
  }
71
73
  return prev;
@@ -76,9 +78,8 @@ function DevTools() {
76
78
  if (typeof window !== "undefined") {
77
79
  window.addEventListener("resize", run);
78
80
  return () => {
79
- var _a2;
80
81
  window.removeEventListener("resize", run);
81
- if (((_a2 = rootEl()) == null ? void 0 : _a2.parentElement) && typeof previousValue === "string") {
82
+ if (rootEl()?.parentElement && typeof previousValue === "string") {
82
83
  setRootEl((prev) => {
83
84
  prev.parentElement.style.paddingBottom = previousValue;
84
85
  return prev;
@@ -87,9 +88,9 @@ function DevTools() {
87
88
  };
88
89
  }
89
90
  } else {
90
- if ((_c = rootEl()) == null ? void 0 : _c.parentElement) {
91
+ if (rootEl()?.parentElement) {
91
92
  setRootEl((prev) => {
92
- if (prev == null ? void 0 : prev.parentElement) {
93
+ if (prev?.parentElement) {
93
94
  prev.parentElement.removeAttribute("style");
94
95
  }
95
96
  return prev;
@@ -110,35 +111,45 @@ function DevTools() {
110
111
  if (rootEl()) {
111
112
  const el = rootEl();
112
113
  const fontSize = getComputedStyle(el).fontSize;
113
- el == null ? void 0 : el.style.setProperty("--tsrd-font-size", fontSize);
114
+ el?.style.setProperty("--tsrd-font-size", fontSize);
114
115
  }
115
116
  });
116
- keyboard.createShortcut(settings().openHotkey, () => {
117
- toggleOpen();
117
+ solidJs.createEffect(() => {
118
+ keyboard.createShortcut(settings().openHotkey, () => {
119
+ toggleOpen();
120
+ });
121
+ });
122
+ solidJs.createEffect(() => {
118
123
  });
119
124
  return (() => {
120
125
  var _el$ = _tmpl$();
121
126
  web.use(setRootEl, _el$);
122
127
  web.setAttribute(_el$, "data-testid", storage.TANSTACK_DEVTOOLS);
123
- web.insert(_el$, web.createComponent(trigger.Trigger, {
124
- isOpen,
125
- setIsOpen: toggleOpen
126
- }), null);
127
- web.insert(_el$, web.createComponent(mainPanel.MainPanel, {
128
- isResizing,
129
- isOpen,
128
+ web.insert(_el$, web.createComponent(solidJs.Show, {
129
+ get when() {
130
+ return web.memo(() => !!settings().requireUrlFlag)() ? window.location.search.includes(settings().urlFlag) : true;
131
+ },
130
132
  get children() {
131
- return web.createComponent(contentPanel.ContentPanel, {
132
- ref: (ref) => panelRef = ref,
133
- handleDragStart: (e) => handleDragStart(panelRef, e),
133
+ return [web.createComponent(trigger.Trigger, {
134
+ isOpen,
135
+ setIsOpen: toggleOpen
136
+ }), web.createComponent(mainPanel.MainPanel, {
137
+ isResizing,
138
+ isOpen,
134
139
  get children() {
135
- return [web.createComponent(tabs.Tabs, {
136
- toggleOpen
137
- }), web.createComponent(tabContent.TabContent, {})];
140
+ return web.createComponent(contentPanel.ContentPanel, {
141
+ ref: (ref) => panelRef = ref,
142
+ handleDragStart: (e) => handleDragStart(panelRef, e),
143
+ get children() {
144
+ return [web.createComponent(tabs.Tabs, {
145
+ toggleOpen
146
+ }), web.createComponent(tabContent.TabContent, {})];
147
+ }
148
+ });
138
149
  }
139
- });
150
+ })];
140
151
  }
141
- }), null);
152
+ }));
142
153
  return _el$;
143
154
  })();
144
155
  }