@tanstack/pacer-devtools 1.2.1 → 1.3.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.
@@ -4,7 +4,7 @@ import { createStore, produce } from "solid-js/store";
4
4
  import { For, Show, createContext, createEffect, createMemo, createSignal, onCleanup, onMount, useContext } from "solid-js";
5
5
  import { getPacerDevtoolsInstance, pacerEventClient } from "@tanstack/pacer/event-client";
6
6
  import * as goober from "goober";
7
- import { useStore } from "@tanstack/solid-store";
7
+ import { shallow, useSelector } from "@tanstack/solid-store";
8
8
  import clsx from "clsx";
9
9
  import dayjs from "dayjs";
10
10
  import relativeTime from "dayjs/plugin/relativeTime.js";
@@ -416,6 +416,10 @@ const stylesFactory = (theme) => {
416
416
  const css = goober.css;
417
417
  const t = (light, dark) => theme === "light" ? light : dark;
418
418
  return {
419
+ /**
420
+ * Fills the devtools-utils portal div (height: 100%) and is a flex parent so MainPanel
421
+ * gets a real flex height budget (not just height: 100% without a flex chain).
422
+ */
419
423
  shellRoot: css`
420
424
  display: flex;
421
425
  flex-direction: column;
@@ -425,6 +429,7 @@ const stylesFactory = (theme) => {
425
429
  min-height: 0;
426
430
  overflow: hidden;
427
431
  `,
432
+ /** Overrides devtools-ui MainPanel overflow-y: auto so inner columns own scrolling */
428
433
  mainPanelShell: css`
429
434
  display: flex;
430
435
  flex-direction: column;
@@ -865,7 +870,7 @@ function UtilList(props) {
865
870
  children: (instance) => {
866
871
  const status = (() => {
867
872
  try {
868
- const statusAccessor = useStore(instance.store, (s) => s.status);
873
+ const statusAccessor = useSelector(instance.store, (s) => s.status);
869
874
  return () => statusAccessor() ?? "unknown";
870
875
  } catch {
871
876
  return () => "unknown";
@@ -933,7 +938,7 @@ function ActionButtons(props) {
933
938
  const styles = useStyles();
934
939
  const utilInstance = props.instance;
935
940
  const store = utilInstance?.store;
936
- const stateAccessor = isPacerUtilTanStackStore(store) ? useStore(store, (s) => s !== null && s !== void 0 && typeof s === "object" ? s : {}) : () => getPacerUtilStoreState(utilInstance);
941
+ const stateAccessor = isPacerUtilTanStackStore(store) ? useSelector(store, (s) => s !== null && s !== void 0 && typeof s === "object" ? s : {}, { compare: shallow }) : () => getPacerUtilStoreState(utilInstance);
937
942
  const getState = () => stateAccessor();
938
943
  const hasPending = () => {
939
944
  return "isPending" in getState();
@@ -1010,7 +1015,7 @@ function StateHeaderInner(props) {
1010
1015
  return dayjs(at).fromNow();
1011
1016
  };
1012
1017
  const store = props.entry.instance?.store;
1013
- const stateAccessor = isPacerUtilTanStackStore(store) ? useStore(store, (s) => s !== null && s !== void 0 && typeof s === "object" ? s : {}) : () => getPacerUtilStoreState(props.entry.instance);
1018
+ const stateAccessor = isPacerUtilTanStackStore(store) ? useSelector(store, (s) => s !== null && s !== void 0 && typeof s === "object" ? s : {}, { compare: shallow }) : () => getPacerUtilStoreState(props.entry.instance);
1014
1019
  const reductionPercentage = () => reductionFromState(props.entry, stateAccessor());
1015
1020
  return ssr(_tmpl$$2, ssrAttribute("class", escape(props.styles.stateHeader, true), false), ssrAttribute("class", escape(props.styles.stateTitle, true), false), escape(props.entry.type), ssrStyleProperty("display:", "flex") + ssrStyleProperty(";align-items:", "center") + ssrStyleProperty(";gap:", "16px"), ssrAttribute("class", escape(props.styles.infoGrid, true), false), ssrAttribute("class", escape(props.styles.infoLabel, true), false), ssrAttribute("class", escape(props.styles.infoValueMono, true), false), escape(key), ssrAttribute("class", escape(props.styles.infoLabel, true), false), ssrAttribute("class", escape(props.styles.infoValueMono, true), false), escape(new Date(updatedAt()).toLocaleTimeString()), escape(getRelativeTime()), ssrAttribute("class", escape(props.styles.infoValueMono, true), false), ssrStyleProperty("margin-left:", "auto") + ssrStyleProperty(";font-weight:", "bold"), escape(reductionPercentage()));
1016
1021
  }
@@ -1053,7 +1058,7 @@ function StateHeader(props) {
1053
1058
  function UtilStateJsonTree(props) {
1054
1059
  const store = props.instance?.store;
1055
1060
  if (isPacerUtilTanStackStore(store)) {
1056
- const snapshot = useStore(store, (s) => s);
1061
+ const snapshot = useSelector(store, (s) => s);
1057
1062
  return createComponent(JsonTree, { get value() {
1058
1063
  return snapshot();
1059
1064
  } });
@@ -4,7 +4,7 @@ import { createStore, produce } from "solid-js/store";
4
4
  import { For, Show, createContext, createEffect, createMemo, createSignal, onCleanup, onMount, useContext } from "solid-js";
5
5
  import { getPacerDevtoolsInstance, pacerEventClient } from "@tanstack/pacer/event-client";
6
6
  import * as goober from "goober";
7
- import { useStore } from "@tanstack/solid-store";
7
+ import { shallow, useSelector } from "@tanstack/solid-store";
8
8
  import clsx from "clsx";
9
9
  import { emitChange } from "@tanstack/pacer";
10
10
  import dayjs from "dayjs";
@@ -417,6 +417,10 @@ const stylesFactory = (theme) => {
417
417
  const css = goober.css;
418
418
  const t = (light, dark) => theme === "light" ? light : dark;
419
419
  return {
420
+ /**
421
+ * Fills the devtools-utils portal div (height: 100%) and is a flex parent so MainPanel
422
+ * gets a real flex height budget (not just height: 100% without a flex chain).
423
+ */
420
424
  shellRoot: css`
421
425
  display: flex;
422
426
  flex-direction: column;
@@ -426,6 +430,7 @@ const stylesFactory = (theme) => {
426
430
  min-height: 0;
427
431
  overflow: hidden;
428
432
  `,
433
+ /** Overrides devtools-ui MainPanel overflow-y: auto so inner columns own scrolling */
429
434
  mainPanelShell: css`
430
435
  display: flex;
431
436
  flex-direction: column;
@@ -854,7 +859,7 @@ function UtilList(props) {
854
859
  children: (instance) => {
855
860
  const status = (() => {
856
861
  try {
857
- const statusAccessor = useStore(instance.store, (s) => s.status);
862
+ const statusAccessor = useSelector(instance.store, (s) => s.status);
858
863
  return () => statusAccessor() ?? "unknown";
859
864
  } catch {
860
865
  return () => "unknown";
@@ -921,7 +926,7 @@ function ActionButtons(props) {
921
926
  const styles = useStyles();
922
927
  const utilInstance = props.instance;
923
928
  const store = utilInstance?.store;
924
- const stateAccessor = isPacerUtilTanStackStore(store) ? useStore(store, (s) => s !== null && s !== void 0 && typeof s === "object" ? s : {}) : () => getPacerUtilStoreState(utilInstance);
929
+ const stateAccessor = isPacerUtilTanStackStore(store) ? useSelector(store, (s) => s !== null && s !== void 0 && typeof s === "object" ? s : {}, { compare: shallow }) : () => getPacerUtilStoreState(utilInstance);
925
930
  const getState = () => stateAccessor();
926
931
  const hasPending = () => {
927
932
  return "isPending" in getState();
@@ -1108,7 +1113,7 @@ function StateHeaderInner(props) {
1108
1113
  return dayjs(at).fromNow();
1109
1114
  };
1110
1115
  const store = props.entry.instance?.store;
1111
- const stateAccessor = isPacerUtilTanStackStore(store) ? useStore(store, (s) => s !== null && s !== void 0 && typeof s === "object" ? s : {}) : () => getPacerUtilStoreState(props.entry.instance);
1116
+ const stateAccessor = isPacerUtilTanStackStore(store) ? useSelector(store, (s) => s !== null && s !== void 0 && typeof s === "object" ? s : {}, { compare: shallow }) : () => getPacerUtilStoreState(props.entry.instance);
1112
1117
  const reductionPercentage = () => reductionFromState(props.entry, stateAccessor());
1113
1118
  return (() => {
1114
1119
  var _el$ = _tmpl$$2(), _el$2 = _el$.firstChild, _el$4 = _el$2.nextSibling.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling, _el$9 = _el$8.firstChild, _el$1 = _el$9.nextSibling;
@@ -1182,7 +1187,7 @@ function StateHeader(props) {
1182
1187
  function UtilStateJsonTree(props) {
1183
1188
  const store = props.instance?.store;
1184
1189
  if (isPacerUtilTanStackStore(store)) {
1185
- const snapshot = useStore(store, (s) => s);
1190
+ const snapshot = useSelector(store, (s) => s);
1186
1191
  return createComponent(JsonTree, { get value() {
1187
1192
  return snapshot();
1188
1193
  } });
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { constructCoreClass } from "@tanstack/devtools-utils/solid";
3
3
  //#region src/core.tsx
4
- const coreClasses = constructCoreClass(() => import("./components-CGEHIK6F.js"));
4
+ const coreClasses = constructCoreClass(() => import("./components-hqYwCNDx.js"));
5
5
  const PacerDevtoolsCore$1 = coreClasses[0];
6
6
  const PacerDevtoolsCoreNoOp = coreClasses[1];
7
7
  //#endregion
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { constructCoreClass } from "@tanstack/devtools-utils/solid";
3
3
  //#region src/core.tsx
4
- const coreClasses = constructCoreClass(() => import("../components-CGEHIK6F.js"));
4
+ const coreClasses = constructCoreClass(() => import("../components-hqYwCNDx.js"));
5
5
  const PacerDevtoolsCore = coreClasses[0];
6
6
  coreClasses[1];
7
7
  //#endregion
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { constructCoreClass } from "@tanstack/devtools-utils/solid";
3
3
  //#region src/core.tsx
4
- const coreClasses = constructCoreClass(() => import("../components-vap4_VJT.js"));
4
+ const coreClasses = constructCoreClass(() => import("../components-DZv7GBzY.js"));
5
5
  const PacerDevtoolsCore = coreClasses[0];
6
6
  coreClasses[1];
7
7
  //#endregion
package/dist/server.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { constructCoreClass } from "@tanstack/devtools-utils/solid";
3
3
  //#region src/core.tsx
4
- const coreClasses = constructCoreClass(() => import("./components-vap4_VJT.js"));
4
+ const coreClasses = constructCoreClass(() => import("./components-DZv7GBzY.js"));
5
5
  const PacerDevtoolsCore$1 = coreClasses[0];
6
6
  const PacerDevtoolsCoreNoOp = coreClasses[1];
7
7
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/pacer-devtools",
3
- "version": "1.2.1",
3
+ "version": "1.3.1",
4
4
  "description": "Devtools for Pacer.",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
@@ -71,19 +71,19 @@
71
71
  "@tanstack/pacer": ">=0.16.4"
72
72
  },
73
73
  "dependencies": {
74
- "@tanstack/devtools-ui": "0.5.1",
75
- "@tanstack/devtools-utils": "^0.4.0",
76
- "@tanstack/solid-store": "^0.9.3",
74
+ "@tanstack/devtools-ui": "0.5.2",
75
+ "@tanstack/devtools-utils": "^0.5.0",
76
+ "@tanstack/solid-store": "^0.11.0",
77
77
  "clsx": "^2.1.1",
78
78
  "csstype": "^3.2.3",
79
79
  "dayjs": "^1.11.20",
80
- "goober": "^2.1.18",
80
+ "goober": "^2.1.19",
81
81
  "solid-js": "^1.9.12"
82
82
  },
83
83
  "devDependencies": {
84
84
  "rolldown-plugin-solid": "^0.2.1",
85
- "tsdown": "^0.21.7",
86
- "vite-plugin-solid": "^2.11.11"
85
+ "tsdown": "^0.22.0",
86
+ "vite-plugin-solid": "^2.11.12"
87
87
  },
88
88
  "scripts": {
89
89
  "clean": "premove ./build ./dist",
@@ -1,5 +1,5 @@
1
1
  import { emitChange } from '@tanstack/pacer'
2
- import { useStore } from '@tanstack/solid-store'
2
+ import { shallow, useSelector } from '@tanstack/solid-store'
3
3
  import { useStyles } from '../styles/use-styles'
4
4
  import {
5
5
  getPacerUtilStoreState,
@@ -18,10 +18,13 @@ export function ActionButtons(props: ActionButtonsProps) {
18
18
  const store = utilInstance?.store
19
19
 
20
20
  const stateAccessor = isPacerUtilTanStackStore(store)
21
- ? useStore(store as never, (s: unknown) =>
22
- s !== null && s !== undefined && typeof s === 'object'
23
- ? (s as Record<string, unknown>)
24
- : {},
21
+ ? useSelector(
22
+ store as never,
23
+ (s: unknown) =>
24
+ s !== null && s !== undefined && typeof s === 'object'
25
+ ? (s as Record<string, unknown>)
26
+ : {},
27
+ { compare: shallow },
25
28
  )
26
29
  : () => getPacerUtilStoreState(utilInstance) as Record<string, unknown>
27
30
 
@@ -1,7 +1,7 @@
1
1
  import dayjs from 'dayjs'
2
2
  import relativeTime from 'dayjs/plugin/relativeTime.js'
3
3
  import { Show, createSignal, onCleanup, onMount } from 'solid-js'
4
- import { useStore } from '@tanstack/solid-store'
4
+ import { shallow, useSelector } from '@tanstack/solid-store'
5
5
  import { useStyles } from '../styles/use-styles'
6
6
  import {
7
7
  getPacerUtilStoreState,
@@ -73,10 +73,13 @@ function StateHeaderInner(props: {
73
73
 
74
74
  const store = props.entry.instance?.store
75
75
  const stateAccessor = isPacerUtilTanStackStore(store)
76
- ? useStore(store as never, (s: unknown) =>
77
- s !== null && s !== undefined && typeof s === 'object'
78
- ? (s as Record<string, unknown>)
79
- : {},
76
+ ? useSelector(
77
+ store as never,
78
+ (s: unknown) =>
79
+ s !== null && s !== undefined && typeof s === 'object'
80
+ ? (s as Record<string, unknown>)
81
+ : {},
82
+ { compare: shallow },
80
83
  )
81
84
  : () =>
82
85
  getPacerUtilStoreState(props.entry.instance) as Record<string, unknown>
@@ -1,5 +1,5 @@
1
1
  import { For } from 'solid-js'
2
- import { useStore } from '@tanstack/solid-store'
2
+ import { useSelector } from '@tanstack/solid-store'
3
3
  import clsx from 'clsx'
4
4
  import { useStyles } from '../styles/use-styles'
5
5
  import { UTIL_GROUPS } from './util-groups'
@@ -26,7 +26,7 @@ export function UtilList(props: UtilListProps) {
26
26
  {(instance) => {
27
27
  const status = (() => {
28
28
  try {
29
- const statusAccessor = useStore(
29
+ const statusAccessor = useSelector(
30
30
  instance.store,
31
31
  (s: any) => s.status,
32
32
  )
@@ -1,5 +1,5 @@
1
1
  import { JsonTree } from '@tanstack/devtools-ui'
2
- import { useStore } from '@tanstack/solid-store'
2
+ import { useSelector } from '@tanstack/solid-store'
3
3
  import {
4
4
  getPacerUtilStoreState,
5
5
  isPacerUtilTanStackStore,
@@ -18,7 +18,7 @@ type UtilStateJsonTreeProps = {
18
18
  export function UtilStateJsonTree(props: UtilStateJsonTreeProps): JSX.Element {
19
19
  const store = props.instance?.store
20
20
  if (isPacerUtilTanStackStore(store)) {
21
- const snapshot = useStore(store as never, (s: unknown) => s)
21
+ const snapshot = useSelector(store as never, (s: unknown) => s)
22
22
  return <JsonTree value={snapshot()} />
23
23
  }
24
24
  return <JsonTree value={getPacerUtilStoreState(props.instance)} />