@xylabs/react-pixel-debugger 6.3.13 → 6.4.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.
@@ -1,19 +1,4 @@
1
- import React from 'react';
2
- import { WithChildren } from '@xylabs/react-shared';
3
- import { BusyBoxProps } from '@xylabs/react-flexbox';
4
-
5
- declare const PixelDebugger: React.FC;
6
-
7
- declare const PixelDebuggerProvider: React.FC<WithChildren>;
8
-
9
- declare const PixelDebuggerToggle: React.FC<BusyBoxProps>;
10
-
11
- declare const usePixelAltSendHandler: (altHandler: (event: string, fields?: Record<string, unknown>) => void) => void;
12
-
13
- interface PixelEvent {
14
- event: string;
15
- fields?: unknown;
16
- }
17
-
18
- export { PixelDebugger, PixelDebuggerProvider, PixelDebuggerToggle, usePixelAltSendHandler };
19
- export type { PixelEvent };
1
+ export * from './components/index.ts';
2
+ export * from './hooks/index.ts';
3
+ export * from './PixelEvent.ts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -1,21 +1,18 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
1
4
  // src/components/PixelDebugger.tsx
2
- import {
3
- Badge,
4
- Card,
5
- Divider,
6
- Typography,
7
- useTheme
8
- } from "@mui/material";
5
+ import { Badge, Card, Divider, Typography, useTheme } from "@mui/material";
9
6
  import { ButtonEx } from "@xylabs/react-button";
10
7
  import { FlexCol } from "@xylabs/react-flexbox";
11
8
  import { DebugUserEventsContext } from "@xylabs/react-pixel";
12
9
  import { Portal } from "@xylabs/react-portal";
13
- import { use, useState as useState2 } from "react";
10
+ import React, { use, useState as useState2 } from "react";
14
11
 
15
12
  // src/hooks/usePixelAltSendHandler.ts
16
13
  import { XyPixel } from "@xylabs/pixel";
17
14
  import { useEffect, useState } from "react";
18
- var usePixelAltSendHandler = (altHandler) => {
15
+ var usePixelAltSendHandler = /* @__PURE__ */ __name((altHandler) => {
19
16
  const [pixelSend, setPixelSend] = useState();
20
17
  useEffect(() => {
21
18
  if (!pixelSend && XyPixel.instance.send) {
@@ -32,115 +29,129 @@ var usePixelAltSendHandler = (altHandler) => {
32
29
  XyPixel.instance.send = pixelSend;
33
30
  }
34
31
  };
35
- }, [pixelSend, altHandler]);
36
- };
32
+ }, [
33
+ pixelSend,
34
+ altHandler
35
+ ]);
36
+ }, "usePixelAltSendHandler");
37
37
 
38
38
  // src/components/PixelDebugger.tsx
39
- import { jsx, jsxs } from "react/jsx-runtime";
40
- var PixelDebugger = () => {
39
+ var PixelDebugger = /* @__PURE__ */ __name(() => {
41
40
  const { isDebugging } = use(DebugUserEventsContext);
42
41
  const theme = useTheme();
43
42
  const [displayEvents, setDisplayEvents] = useState2(false);
44
43
  const [events, setEvents] = useState2([]);
45
44
  usePixelAltSendHandler((event, fields) => {
46
- setEvents((events2) => [{ event, fields }, ...events2]);
45
+ setEvents((events2) => [
46
+ {
47
+ event,
48
+ fields
49
+ },
50
+ ...events2
51
+ ]);
47
52
  });
48
53
  if (!isDebugging) {
49
54
  return null;
50
55
  }
51
- return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(
52
- "div",
53
- {
54
- style: {
55
- bottom: 0,
56
- left: 0,
57
- position: "fixed",
58
- width: 350
59
- },
60
- children: /* @__PURE__ */ jsx(Badge, { badgeContent: events.length, color: "primary", sx: { width: "100%" }, children: /* @__PURE__ */ jsx(
61
- Card,
62
- {
63
- variant: "outlined",
64
- sx: {
65
- backdropFilter: "blur(16px) saturate(180%)",
66
- backgroundColor: "rgba(18, 18, 18, .70)",
67
- overflowY: "auto",
68
- width: "100%"
69
- },
70
- color: theme.vars.palette.primary.main,
71
- children: /* @__PURE__ */ jsxs(
72
- FlexCol,
73
- {
74
- alignItems: "stretch",
75
- sx: { flexFlow: "column", maxHeight: 400 },
76
- children: [
77
- /* @__PURE__ */ jsx(FlexCol, { alignItems: "stretch", sx: { flex: "0 1 auto" }, children: /* @__PURE__ */ jsx(ButtonEx, { variant: "text", onClick: () => setDisplayEvents(!displayEvents), children: "XY Pixel Debugger" }) }),
78
- displayEvents && events.length > 0 && /* @__PURE__ */ jsx(
79
- FlexCol,
80
- {
81
- alignItems: "stretch",
82
- alignContent: "start",
83
- padding: 2,
84
- sx: {
85
- cursor: "pointer",
86
- flex: "1 1 auto",
87
- overflowY: "auto",
88
- userSelect: "none"
89
- },
90
- children: events.map((e, index) => /* @__PURE__ */ jsx(PixelEventDetails, { events, index, ...e }, `${e.event}-${index}`))
91
- }
92
- ),
93
- displayEvents && events.length === 0 && /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: "No Events" })
94
- ]
95
- }
96
- )
97
- }
98
- ) })
56
+ return /* @__PURE__ */ React.createElement(Portal, null, /* @__PURE__ */ React.createElement("div", {
57
+ style: {
58
+ bottom: 0,
59
+ left: 0,
60
+ position: "fixed",
61
+ width: 350
99
62
  }
100
- ) });
101
- };
102
- var PixelEventDetails = ({
103
- event,
104
- fields,
105
- index,
106
- events
107
- }) => {
63
+ }, /* @__PURE__ */ React.createElement(Badge, {
64
+ badgeContent: events.length,
65
+ color: "primary",
66
+ sx: {
67
+ width: "100%"
68
+ }
69
+ }, /* @__PURE__ */ React.createElement(Card, {
70
+ variant: "outlined",
71
+ sx: {
72
+ backdropFilter: "blur(16px) saturate(180%)",
73
+ backgroundColor: "rgba(18, 18, 18, .70)",
74
+ overflowY: "auto",
75
+ width: "100%"
76
+ },
77
+ color: theme.vars.palette.primary.main
78
+ }, /* @__PURE__ */ React.createElement(FlexCol, {
79
+ alignItems: "stretch",
80
+ sx: {
81
+ flexFlow: "column",
82
+ maxHeight: 400
83
+ }
84
+ }, /* @__PURE__ */ React.createElement(FlexCol, {
85
+ alignItems: "stretch",
86
+ sx: {
87
+ flex: "0 1 auto"
88
+ }
89
+ }, /* @__PURE__ */ React.createElement(ButtonEx, {
90
+ variant: "text",
91
+ onClick: /* @__PURE__ */ __name(() => setDisplayEvents(!displayEvents), "onClick")
92
+ }, "XY Pixel Debugger")), displayEvents && events.length > 0 && /* @__PURE__ */ React.createElement(FlexCol, {
93
+ alignItems: "stretch",
94
+ alignContent: "start",
95
+ padding: 2,
96
+ sx: {
97
+ cursor: "pointer",
98
+ flex: "1 1 auto",
99
+ overflowY: "auto",
100
+ userSelect: "none"
101
+ }
102
+ }, events.map((e, index) => /* @__PURE__ */ React.createElement(PixelEventDetails, {
103
+ key: `${e.event}-${index}`,
104
+ events,
105
+ index,
106
+ ...e
107
+ }))), displayEvents && events.length === 0 && /* @__PURE__ */ React.createElement(Typography, {
108
+ variant: "subtitle2"
109
+ }, "No Events"))))));
110
+ }, "PixelDebugger");
111
+ var PixelEventDetails = /* @__PURE__ */ __name(({ event, fields, index, events }) => {
108
112
  const [isOpen, setIsOpen] = useState2(false);
109
- return /* @__PURE__ */ jsxs(FlexCol, { alignItems: "stretch", marginBottom: 0.5, onClick: () => setIsOpen(!isOpen), children: [
110
- /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: event }),
111
- isOpen && /* @__PURE__ */ jsx(Typography, { marginBottom: 0.5, variant: "caption", children: JSON.stringify(fields, null, 2) }),
112
- events[index + 1] && /* @__PURE__ */ jsx(Divider, {})
113
- ] });
114
- };
113
+ return /* @__PURE__ */ React.createElement(FlexCol, {
114
+ alignItems: "stretch",
115
+ marginBottom: 0.5,
116
+ onClick: /* @__PURE__ */ __name(() => setIsOpen(!isOpen), "onClick")
117
+ }, /* @__PURE__ */ React.createElement(Typography, {
118
+ variant: "subtitle2"
119
+ }, event), isOpen && /* @__PURE__ */ React.createElement(Typography, {
120
+ marginBottom: 0.5,
121
+ variant: "caption"
122
+ }, JSON.stringify(fields, null, 2)), events[index + 1] && /* @__PURE__ */ React.createElement(Divider, null));
123
+ }, "PixelEventDetails");
115
124
 
116
125
  // src/components/PixelDebuggerProvider.tsx
117
126
  import { DebugUserEventsContext as DebugUserEventsContext2 } from "@xylabs/react-pixel";
118
127
  import { useLocalStorage } from "@xylabs/react-shared";
119
- import { useMemo } from "react";
120
- import { jsx as jsx2 } from "react/jsx-runtime";
121
- var PixelDebuggerProvider = ({ children }) => {
128
+ import React2, { useMemo } from "react";
129
+ var PixelDebuggerProvider = /* @__PURE__ */ __name(({ children }) => {
122
130
  const [isDebugging, setIsDebugging] = useLocalStorage("isDebuggingPixel", false);
123
- const value = useMemo(() => ({ isDebugging, setIsDebugging }), [isDebugging, setIsDebugging]);
124
- return /* @__PURE__ */ jsx2(DebugUserEventsContext2, { value, children });
125
- };
131
+ const value = useMemo(() => ({
132
+ isDebugging,
133
+ setIsDebugging
134
+ }), [
135
+ isDebugging,
136
+ setIsDebugging
137
+ ]);
138
+ return /* @__PURE__ */ React2.createElement(DebugUserEventsContext2, {
139
+ value
140
+ }, children);
141
+ }, "PixelDebuggerProvider");
126
142
 
127
143
  // src/components/PixelDebuggerToggle.tsx
128
- import {
129
- FormControl,
130
- FormLabel,
131
- Switch
132
- } from "@mui/material";
144
+ import { FormControl, FormLabel, Switch } from "@mui/material";
133
145
  import { FlexRow } from "@xylabs/react-flexbox";
134
146
  import { DebugUserEventsContext as DebugUserEventsContext3 } from "@xylabs/react-pixel";
135
- import { use as use2 } from "react";
136
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
137
- var PixelDebuggerToggle = ({ ...props }) => {
147
+ import React3, { use as use2 } from "react";
148
+ var PixelDebuggerToggle = /* @__PURE__ */ __name(({ ...props }) => {
138
149
  const { setIsDebugging, isDebugging } = use2(DebugUserEventsContext3);
139
- return /* @__PURE__ */ jsx3(FlexRow, { ...props, children: /* @__PURE__ */ jsxs2(FormControl, { children: [
140
- /* @__PURE__ */ jsx3(FormLabel, { children: "Enable Debugger" }),
141
- /* @__PURE__ */ jsx3(Switch, { checked: isDebugging, onClick: () => setIsDebugging(!isDebugging) })
142
- ] }) });
143
- };
150
+ return /* @__PURE__ */ React3.createElement(FlexRow, props, /* @__PURE__ */ React3.createElement(FormControl, null, /* @__PURE__ */ React3.createElement(FormLabel, null, "Enable Debugger"), /* @__PURE__ */ React3.createElement(Switch, {
151
+ checked: isDebugging,
152
+ onClick: /* @__PURE__ */ __name(() => setIsDebugging(!isDebugging), "onClick")
153
+ })));
154
+ }, "PixelDebuggerToggle");
144
155
  export {
145
156
  PixelDebugger,
146
157
  PixelDebuggerProvider,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/PixelDebugger.tsx","../../src/hooks/usePixelAltSendHandler.ts","../../src/components/PixelDebuggerProvider.tsx","../../src/components/PixelDebuggerToggle.tsx"],"sourcesContent":["import {\n Badge, Card, Divider, Typography, useTheme,\n} from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { DebugUserEventsContext } from '@xylabs/react-pixel'\nimport { Portal } from '@xylabs/react-portal'\nimport React, { use, useState } from 'react'\n\nimport { usePixelAltSendHandler } from '../hooks/index.ts'\nimport type { PixelEvent } from '../PixelEvent.ts'\n\nexport const PixelDebugger: React.FC = () => {\n const { isDebugging } = use(DebugUserEventsContext)\n // TODO - when adding in the location hook to detect location change, was dropping the setEvents in usePixelAltSendHand\n const theme = useTheme()\n const [displayEvents, setDisplayEvents] = useState(false)\n const [events, setEvents] = useState<PixelEvent[]>([])\n\n usePixelAltSendHandler((event: string, fields?: Record<string, unknown>) => {\n setEvents(events => [{ event, fields }, ...events])\n })\n\n if (!isDebugging) {\n return null\n }\n\n return (\n <Portal>\n <div style={{\n bottom: 0, left: 0, position: 'fixed', width: 350,\n }}\n >\n <Badge badgeContent={events.length} color=\"primary\" sx={{ width: '100%' }}>\n <Card\n variant=\"outlined\"\n sx={{\n backdropFilter: 'blur(16px) saturate(180%)',\n backgroundColor: 'rgba(18, 18, 18, .70)',\n overflowY: 'auto',\n width: '100%',\n }}\n color={theme.vars.palette.primary.main}\n >\n <FlexCol\n alignItems=\"stretch\"\n sx={{ flexFlow: 'column', maxHeight: 400 }}\n >\n <FlexCol alignItems=\"stretch\" sx={{ flex: '0 1 auto' }}>\n <ButtonEx variant=\"text\" onClick={() => setDisplayEvents(!displayEvents)}>\n XY Pixel Debugger\n </ButtonEx>\n </FlexCol>\n {displayEvents && events.length > 0 && (\n <FlexCol\n alignItems=\"stretch\"\n alignContent=\"start\"\n padding={2}\n sx={{\n cursor: 'pointer', flex: '1 1 auto', overflowY: 'auto', userSelect: 'none',\n }}\n >\n {events.map((e, index) => (\n\n <PixelEventDetails key={`${e.event}-${index}`} events={events} index={index} {...e} />\n ))}\n </FlexCol>\n )}\n {displayEvents && events.length === 0 && <Typography variant=\"subtitle2\">No Events</Typography>}\n </FlexCol>\n </Card>\n </Badge>\n </div>\n </Portal>\n )\n}\n\nconst PixelEventDetails: React.FC<PixelEvent & { events: PixelEvent[]; index: number }> = ({\n event, fields, index, events,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n return (\n <FlexCol alignItems=\"stretch\" marginBottom={0.5} onClick={() => setIsOpen(!isOpen)}>\n <Typography variant=\"subtitle2\">{event}</Typography>\n {isOpen && (\n <Typography marginBottom={0.5} variant=\"caption\">\n {JSON.stringify(fields, null, 2)}\n </Typography>\n )}\n {events[index + 1] && <Divider />}\n </FlexCol>\n )\n}\n","import type { JsonObject } from '@xylabs/object'\nimport { XyPixel } from '@xylabs/pixel'\nimport { useEffect, useState } from 'react'\n\nexport const usePixelAltSendHandler = (altHandler: (event: string, fields?: Record<string, unknown>) => void) => {\n const [pixelSend, setPixelSend] = useState<typeof XyPixel.instance.send>()\n useEffect(() => {\n if (!pixelSend && XyPixel.instance.send) {\n const oldHandler = XyPixel.instance.send.bind(XyPixel.instance)\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect\n setPixelSend(oldHandler)\n } else {\n XyPixel.instance.send = async (event: string, fields?: JsonObject, eventId?: string) => {\n altHandler(event, fields)\n return await pixelSend?.(event, fields, eventId)\n }\n }\n return () => {\n // restore send on unmount\n if (pixelSend) {\n XyPixel.instance.send = pixelSend\n }\n }\n }, [pixelSend, altHandler])\n}\n","import { DebugUserEventsContext } from '@xylabs/react-pixel'\nimport type { WithChildren } from '@xylabs/react-shared'\nimport { useLocalStorage } from '@xylabs/react-shared'\nimport React, { useMemo } from 'react'\n\nexport const PixelDebuggerProvider: React.FC<WithChildren> = ({ children }) => {\n const [isDebugging, setIsDebugging] = useLocalStorage<boolean>('isDebuggingPixel', false)\n const value = useMemo(() => ({ isDebugging, setIsDebugging }), [isDebugging, setIsDebugging])\n return <DebugUserEventsContext value={value}>{children}</DebugUserEventsContext>\n}\n","import {\n FormControl, FormLabel, Switch,\n} from '@mui/material'\nimport type { BusyBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { DebugUserEventsContext } from '@xylabs/react-pixel'\nimport React, { use } from 'react'\n\nexport const PixelDebuggerToggle: React.FC<BusyBoxProps> = ({ ...props }) => {\n const { setIsDebugging, isDebugging } = use(DebugUserEventsContext)\n\n return (\n <FlexRow {...props}>\n <FormControl>\n <FormLabel>Enable Debugger</FormLabel>\n <Switch checked={isDebugging} onClick={() => setIsDebugging(!isDebugging)} />\n </FormControl>\n </FlexRow>\n )\n}\n"],"mappings":"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","names":["useState","useState","events","DebugUserEventsContext","jsx","DebugUserEventsContext","use","jsx","jsxs"]}
1
+ {"version":3,"sources":["../../src/components/PixelDebugger.tsx","../../src/hooks/usePixelAltSendHandler.ts","../../src/components/PixelDebuggerProvider.tsx","../../src/components/PixelDebuggerToggle.tsx"],"sourcesContent":["import {\n Badge, Card, Divider, Typography, useTheme,\n} from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { DebugUserEventsContext } from '@xylabs/react-pixel'\nimport { Portal } from '@xylabs/react-portal'\nimport React, { use, useState } from 'react'\n\nimport { usePixelAltSendHandler } from '../hooks/index.ts'\nimport type { PixelEvent } from '../PixelEvent.ts'\n\nexport const PixelDebugger: React.FC = () => {\n const { isDebugging } = use(DebugUserEventsContext)\n // TODO - when adding in the location hook to detect location change, was dropping the setEvents in usePixelAltSendHand\n const theme = useTheme()\n const [displayEvents, setDisplayEvents] = useState(false)\n const [events, setEvents] = useState<PixelEvent[]>([])\n\n usePixelAltSendHandler((event: string, fields?: Record<string, unknown>) => {\n setEvents(events => [{ event, fields }, ...events])\n })\n\n if (!isDebugging) {\n return null\n }\n\n return (\n <Portal>\n <div style={{\n bottom: 0, left: 0, position: 'fixed', width: 350,\n }}\n >\n <Badge badgeContent={events.length} color=\"primary\" sx={{ width: '100%' }}>\n <Card\n variant=\"outlined\"\n sx={{\n backdropFilter: 'blur(16px) saturate(180%)',\n backgroundColor: 'rgba(18, 18, 18, .70)',\n overflowY: 'auto',\n width: '100%',\n }}\n color={theme.vars.palette.primary.main}\n >\n <FlexCol\n alignItems=\"stretch\"\n sx={{ flexFlow: 'column', maxHeight: 400 }}\n >\n <FlexCol alignItems=\"stretch\" sx={{ flex: '0 1 auto' }}>\n <ButtonEx variant=\"text\" onClick={() => setDisplayEvents(!displayEvents)}>\n XY Pixel Debugger\n </ButtonEx>\n </FlexCol>\n {displayEvents && events.length > 0 && (\n <FlexCol\n alignItems=\"stretch\"\n alignContent=\"start\"\n padding={2}\n sx={{\n cursor: 'pointer', flex: '1 1 auto', overflowY: 'auto', userSelect: 'none',\n }}\n >\n {events.map((e, index) => (\n\n <PixelEventDetails key={`${e.event}-${index}`} events={events} index={index} {...e} />\n ))}\n </FlexCol>\n )}\n {displayEvents && events.length === 0 && <Typography variant=\"subtitle2\">No Events</Typography>}\n </FlexCol>\n </Card>\n </Badge>\n </div>\n </Portal>\n )\n}\n\nconst PixelEventDetails: React.FC<PixelEvent & { events: PixelEvent[]; index: number }> = ({\n event, fields, index, events,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n return (\n <FlexCol alignItems=\"stretch\" marginBottom={0.5} onClick={() => setIsOpen(!isOpen)}>\n <Typography variant=\"subtitle2\">{event}</Typography>\n {isOpen && (\n <Typography marginBottom={0.5} variant=\"caption\">\n {JSON.stringify(fields, null, 2)}\n </Typography>\n )}\n {events[index + 1] && <Divider />}\n </FlexCol>\n )\n}\n","import type { JsonObject } from '@xylabs/object'\nimport { XyPixel } from '@xylabs/pixel'\nimport { useEffect, useState } from 'react'\n\nexport const usePixelAltSendHandler = (altHandler: (event: string, fields?: Record<string, unknown>) => void) => {\n const [pixelSend, setPixelSend] = useState<typeof XyPixel.instance.send>()\n useEffect(() => {\n if (!pixelSend && XyPixel.instance.send) {\n const oldHandler = XyPixel.instance.send.bind(XyPixel.instance)\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect\n setPixelSend(oldHandler)\n } else {\n XyPixel.instance.send = async (event: string, fields?: JsonObject, eventId?: string) => {\n altHandler(event, fields)\n return await pixelSend?.(event, fields, eventId)\n }\n }\n return () => {\n // restore send on unmount\n if (pixelSend) {\n XyPixel.instance.send = pixelSend\n }\n }\n }, [pixelSend, altHandler])\n}\n","import { DebugUserEventsContext } from '@xylabs/react-pixel'\nimport type { WithChildren } from '@xylabs/react-shared'\nimport { useLocalStorage } from '@xylabs/react-shared'\nimport React, { useMemo } from 'react'\n\nexport const PixelDebuggerProvider: React.FC<WithChildren> = ({ children }) => {\n const [isDebugging, setIsDebugging] = useLocalStorage<boolean>('isDebuggingPixel', false)\n const value = useMemo(() => ({ isDebugging, setIsDebugging }), [isDebugging, setIsDebugging])\n return <DebugUserEventsContext value={value}>{children}</DebugUserEventsContext>\n}\n","import {\n FormControl, FormLabel, Switch,\n} from '@mui/material'\nimport type { BusyBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { DebugUserEventsContext } from '@xylabs/react-pixel'\nimport React, { use } from 'react'\n\nexport const PixelDebuggerToggle: React.FC<BusyBoxProps> = ({ ...props }) => {\n const { setIsDebugging, isDebugging } = use(DebugUserEventsContext)\n\n return (\n <FlexRow {...props}>\n <FormControl>\n <FormLabel>Enable Debugger</FormLabel>\n <Switch checked={isDebugging} onClick={() => setIsDebugging(!isDebugging)} />\n </FormControl>\n </FlexRow>\n )\n}\n"],"mappings":"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","names":["Badge","Card","Divider","Typography","useTheme","ButtonEx","FlexCol","DebugUserEventsContext","Portal","React","use","useState","XyPixel","useEffect","useState","usePixelAltSendHandler","altHandler","pixelSend","setPixelSend","useState","useEffect","XyPixel","instance","send","oldHandler","bind","event","fields","eventId","PixelDebugger","isDebugging","use","DebugUserEventsContext","theme","useTheme","displayEvents","setDisplayEvents","useState","events","setEvents","usePixelAltSendHandler","event","fields","Portal","div","style","bottom","left","position","width","Badge","badgeContent","length","color","sx","Card","variant","backdropFilter","backgroundColor","overflowY","vars","palette","primary","main","FlexCol","alignItems","flexFlow","maxHeight","flex","ButtonEx","onClick","alignContent","padding","cursor","userSelect","map","e","index","PixelEventDetails","key","Typography","isOpen","setIsOpen","marginBottom","JSON","stringify","Divider","DebugUserEventsContext","useLocalStorage","React","useMemo","PixelDebuggerProvider","children","isDebugging","setIsDebugging","useLocalStorage","value","useMemo","React","DebugUserEventsContext","FormControl","FormLabel","Switch","FlexRow","DebugUserEventsContext","React","use","PixelDebuggerToggle","props","setIsDebugging","isDebugging","use","DebugUserEventsContext","React","FlexRow","FormControl","FormLabel","Switch","checked","onClick"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/react-pixel-debugger",
3
- "version": "6.3.13",
3
+ "version": "6.4.0",
4
4
  "description": "Common React library for all XY Labs projects that use React",
5
5
  "keywords": [
6
6
  "utility",
@@ -37,24 +37,24 @@
37
37
  "packages/*"
38
38
  ],
39
39
  "dependencies": {
40
- "@xylabs/pixel": "^4.13.15",
41
- "@xylabs/react-button": "^6.3.13",
42
- "@xylabs/react-flexbox": "^6.3.13",
43
- "@xylabs/react-pixel": "^6.3.13",
44
- "@xylabs/react-portal": "^6.3.13",
45
- "@xylabs/react-shared": "^6.3.13"
40
+ "@xylabs/pixel": "^4.15.0",
41
+ "@xylabs/react-button": "^6.4.0",
42
+ "@xylabs/react-flexbox": "^6.4.0",
43
+ "@xylabs/react-pixel": "^6.4.0",
44
+ "@xylabs/react-portal": "^6.4.0",
45
+ "@xylabs/react-shared": "^6.4.0"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@mui/material": "^7.2.0",
49
- "@storybook/react-vite": "^9.0.16",
49
+ "@storybook/react-vite": "^9.0.18",
50
50
  "@types/react": "^19.1.8",
51
- "@xylabs/object": "^4.13.15",
52
- "@xylabs/ts-scripts-yarn3": "^7.0.0-rc.24",
53
- "@xylabs/tsconfig-react": "^7.0.0-rc.24",
54
- "knip": "^5.61.3",
55
- "react": "^19.1.0",
56
- "react-dom": "^19.1.0",
57
- "storybook": "^9.0.16",
51
+ "@xylabs/object": "^4.15.0",
52
+ "@xylabs/ts-scripts-yarn3": "^7.0.1",
53
+ "@xylabs/tsconfig-react": "^7.0.1",
54
+ "knip": "^5.62.0",
55
+ "react": "^19.1.1",
56
+ "react-dom": "^19.1.1",
57
+ "storybook": "^9.0.18",
58
58
  "typescript": "^5.8.3"
59
59
  },
60
60
  "peerDependencies": {
package/src/global.d.ts CHANGED
@@ -1 +1 @@
1
- import type {} from '@mui/material/themeCssVarsAugmentation'
1
+ import '@mui/material/themeCssVarsAugmentation'