@xylabs/react-pixel-debugger 3.4.0 → 3.4.2

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 (108) hide show
  1. package/dist/browser/components/PixelDebugger.d.cts +1 -0
  2. package/dist/browser/components/PixelDebugger.d.cts.map +1 -1
  3. package/dist/browser/components/PixelDebugger.d.mts +1 -0
  4. package/dist/browser/components/PixelDebugger.d.mts.map +1 -1
  5. package/dist/browser/components/PixelDebugger.d.ts +1 -0
  6. package/dist/browser/components/PixelDebugger.d.ts.map +1 -1
  7. package/dist/browser/components/PixelDebuggerProvider.d.cts +1 -0
  8. package/dist/browser/components/PixelDebuggerProvider.d.cts.map +1 -1
  9. package/dist/browser/components/PixelDebuggerProvider.d.mts +1 -0
  10. package/dist/browser/components/PixelDebuggerProvider.d.mts.map +1 -1
  11. package/dist/browser/components/PixelDebuggerProvider.d.ts +1 -0
  12. package/dist/browser/components/PixelDebuggerProvider.d.ts.map +1 -1
  13. package/dist/browser/components/PixelDebuggerToggle.d.cts +1 -0
  14. package/dist/browser/components/PixelDebuggerToggle.d.cts.map +1 -1
  15. package/dist/browser/components/PixelDebuggerToggle.d.mts +1 -0
  16. package/dist/browser/components/PixelDebuggerToggle.d.mts.map +1 -1
  17. package/dist/browser/components/PixelDebuggerToggle.d.ts +1 -0
  18. package/dist/browser/components/PixelDebuggerToggle.d.ts.map +1 -1
  19. package/dist/browser/components/index.d.cts +3 -3
  20. package/dist/browser/components/index.d.mts +3 -3
  21. package/dist/browser/components/index.d.ts +3 -3
  22. package/dist/browser/hooks/index.d.cts +1 -1
  23. package/dist/browser/hooks/index.d.mts +1 -1
  24. package/dist/browser/hooks/index.d.ts +1 -1
  25. package/dist/browser/index.cjs +113 -54
  26. package/dist/browser/index.cjs.map +1 -1
  27. package/dist/browser/index.d.cts +3 -3
  28. package/dist/browser/index.d.mts +3 -3
  29. package/dist/browser/index.d.ts +3 -3
  30. package/dist/browser/index.mjs +161 -0
  31. package/dist/browser/index.mjs.map +1 -0
  32. package/dist/neutral/components/PixelDebugger.d.cts +1 -0
  33. package/dist/neutral/components/PixelDebugger.d.cts.map +1 -1
  34. package/dist/neutral/components/PixelDebugger.d.mts +1 -0
  35. package/dist/neutral/components/PixelDebugger.d.mts.map +1 -1
  36. package/dist/neutral/components/PixelDebugger.d.ts +1 -0
  37. package/dist/neutral/components/PixelDebugger.d.ts.map +1 -1
  38. package/dist/neutral/components/PixelDebuggerProvider.d.cts +1 -0
  39. package/dist/neutral/components/PixelDebuggerProvider.d.cts.map +1 -1
  40. package/dist/neutral/components/PixelDebuggerProvider.d.mts +1 -0
  41. package/dist/neutral/components/PixelDebuggerProvider.d.mts.map +1 -1
  42. package/dist/neutral/components/PixelDebuggerProvider.d.ts +1 -0
  43. package/dist/neutral/components/PixelDebuggerProvider.d.ts.map +1 -1
  44. package/dist/neutral/components/PixelDebuggerToggle.d.cts +1 -0
  45. package/dist/neutral/components/PixelDebuggerToggle.d.cts.map +1 -1
  46. package/dist/neutral/components/PixelDebuggerToggle.d.mts +1 -0
  47. package/dist/neutral/components/PixelDebuggerToggle.d.mts.map +1 -1
  48. package/dist/neutral/components/PixelDebuggerToggle.d.ts +1 -0
  49. package/dist/neutral/components/PixelDebuggerToggle.d.ts.map +1 -1
  50. package/dist/neutral/components/index.d.cts +3 -3
  51. package/dist/neutral/components/index.d.mts +3 -3
  52. package/dist/neutral/components/index.d.ts +3 -3
  53. package/dist/neutral/hooks/index.d.cts +1 -1
  54. package/dist/neutral/hooks/index.d.mts +1 -1
  55. package/dist/neutral/hooks/index.d.ts +1 -1
  56. package/dist/neutral/index.cjs +113 -54
  57. package/dist/neutral/index.cjs.map +1 -1
  58. package/dist/neutral/index.d.cts +3 -3
  59. package/dist/neutral/index.d.mts +3 -3
  60. package/dist/neutral/index.d.ts +3 -3
  61. package/dist/neutral/index.mjs +161 -0
  62. package/dist/neutral/index.mjs.map +1 -0
  63. package/dist/node/components/PixelDebugger.d.cts +1 -0
  64. package/dist/node/components/PixelDebugger.d.cts.map +1 -1
  65. package/dist/node/components/PixelDebugger.d.mts +1 -0
  66. package/dist/node/components/PixelDebugger.d.mts.map +1 -1
  67. package/dist/node/components/PixelDebugger.d.ts +1 -0
  68. package/dist/node/components/PixelDebugger.d.ts.map +1 -1
  69. package/dist/node/components/PixelDebuggerProvider.d.cts +1 -0
  70. package/dist/node/components/PixelDebuggerProvider.d.cts.map +1 -1
  71. package/dist/node/components/PixelDebuggerProvider.d.mts +1 -0
  72. package/dist/node/components/PixelDebuggerProvider.d.mts.map +1 -1
  73. package/dist/node/components/PixelDebuggerProvider.d.ts +1 -0
  74. package/dist/node/components/PixelDebuggerProvider.d.ts.map +1 -1
  75. package/dist/node/components/PixelDebuggerToggle.d.cts +1 -0
  76. package/dist/node/components/PixelDebuggerToggle.d.cts.map +1 -1
  77. package/dist/node/components/PixelDebuggerToggle.d.mts +1 -0
  78. package/dist/node/components/PixelDebuggerToggle.d.mts.map +1 -1
  79. package/dist/node/components/PixelDebuggerToggle.d.ts +1 -0
  80. package/dist/node/components/PixelDebuggerToggle.d.ts.map +1 -1
  81. package/dist/node/components/index.d.cts +3 -3
  82. package/dist/node/components/index.d.mts +3 -3
  83. package/dist/node/components/index.d.ts +3 -3
  84. package/dist/node/hooks/index.d.cts +1 -1
  85. package/dist/node/hooks/index.d.mts +1 -1
  86. package/dist/node/hooks/index.d.ts +1 -1
  87. package/dist/node/index.cjs +113 -54
  88. package/dist/node/index.cjs.map +1 -1
  89. package/dist/node/index.d.cts +3 -3
  90. package/dist/node/index.d.mts +3 -3
  91. package/dist/node/index.d.ts +3 -3
  92. package/dist/node/index.mjs +161 -0
  93. package/dist/node/index.mjs.map +1 -0
  94. package/package.json +15 -16
  95. package/src/components/PixelDebugger.stories.tsx +12 -8
  96. package/src/components/PixelDebugger.tsx +5 -5
  97. package/src/components/PixelDebuggerProvider.tsx +3 -1
  98. package/src/components/PixelDebuggerToggle.tsx +1 -1
  99. package/src/components/index.ts +3 -3
  100. package/src/hooks/index.ts +1 -1
  101. package/src/hooks/usePixelAltSendHandler.ts +1 -1
  102. package/src/index.ts +3 -3
  103. package/dist/browser/index.js +0 -110
  104. package/dist/browser/index.js.map +0 -1
  105. package/dist/neutral/index.js +0 -110
  106. package/dist/neutral/index.js.map +0 -1
  107. package/dist/node/index.js +0 -110
  108. package/dist/node/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/components/PixelDebugger.tsx","../../src/hooks/usePixelAltSendHandler.ts","../../src/components/PixelDebuggerProvider.tsx","../../src/components/PixelDebuggerToggle.tsx"],"sourcesContent":["export * from './components/index.js'\nexport * from './hooks/index.js'\nexport * from './PixelEvent.js'\n","import { Badge, Card, Divider, Typography, useTheme } 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 { useContext, useState } from 'react'\n\nimport { usePixelAltSendHandler } from '../hooks/index.js'\nimport { PixelEvent } from '../PixelEvent.js'\n\nexport const PixelDebugger: React.FC = () => {\n const { isDebugging } = useContext(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={{ bottom: 0, left: 0, position: 'fixed', width: 350 }}>\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.palette.primary.main}\n >\n <FlexCol alignItems=\"stretch\" sx={{ flexFlow: 'column', maxHeight: 400 }}>\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={{ cursor: 'pointer', flex: '1 1 auto', overflowY: 'auto', userSelect: 'none' }}\n >\n {events.map((e, index) => (\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 }> = ({ event, fields, index, events }) => {\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 { 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 setPixelSend(oldHandler)\n } else {\n XyPixel.instance.send = async (event: string, fields?: Record<string, unknown>, 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 { useLocalStorage, WithChildren } from '@xylabs/react-shared'\n\nexport const PixelDebuggerProvider: React.FC<WithChildren> = ({ children }) => {\n const [isDebugging, setIsDebugging] = useLocalStorage<boolean>('isDebuggingPixel', false)\n return <DebugUserEventsContext.Provider value={{ isDebugging, setIsDebugging }}>{children}</DebugUserEventsContext.Provider>\n}\n","import { FormControl, FormLabel, Switch } from '@mui/material'\nimport { BusyBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport { DebugUserEventsContext } from '@xylabs/react-pixel'\nimport { useContext } from 'react'\n\nexport const PixelDebuggerToggle: React.FC<BusyBoxProps> = ({ ...props }) => {\n const { setIsDebugging, isDebugging } = useContext(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":["import_react","events","import_react_pixel","import_jsx_runtime","import_material","import_react_flexbox","import_react_pixel","import_react","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/components/PixelDebugger.tsx","../../src/hooks/usePixelAltSendHandler.ts","../../src/components/PixelDebuggerProvider.tsx","../../src/components/PixelDebuggerToggle.tsx"],"sourcesContent":["export * from './components/index.ts'\nexport * from './hooks/index.ts'\nexport * from './PixelEvent.ts'\n","import { Badge, Card, Divider, Typography, useTheme } 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, { useContext, useState } from 'react'\n\nimport { usePixelAltSendHandler } from '../hooks/index.ts'\nimport { PixelEvent } from '../PixelEvent.ts'\n\nexport const PixelDebugger: React.FC = () => {\n const { isDebugging } = useContext(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={{ bottom: 0, left: 0, position: 'fixed', width: 350 }}>\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.palette.primary.main}\n >\n <FlexCol alignItems=\"stretch\" sx={{ flexFlow: 'column', maxHeight: 400 }}>\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={{ cursor: 'pointer', flex: '1 1 auto', overflowY: 'auto', userSelect: 'none' }}\n >\n {events.map((e, index) => (\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 }> = ({ event, fields, index, events }) => {\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 { 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 setPixelSend(oldHandler)\n } else {\n XyPixel.instance.send = async (event: string, fields?: Record<string, unknown>, 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 { useLocalStorage, WithChildren } 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.Provider value={value}>{children}</DebugUserEventsContext.Provider>\n}\n","import { FormControl, FormLabel, Switch } from '@mui/material'\nimport { BusyBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport { DebugUserEventsContext } from '@xylabs/react-pixel'\nimport React, { useContext } from 'react'\n\nexport const PixelDebuggerToggle: React.FC<BusyBoxProps> = ({ ...props }) => {\n const { setIsDebugging, isDebugging } = useContext(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":["import_react","usePixelAltSendHandler","altHandler","pixelSend","setPixelSend","useState","useEffect","XyPixel","instance","send","oldHandler","bind","event","fields","eventId","PixelDebugger","isDebugging","useContext","DebugUserEventsContext","theme","useTheme","displayEvents","setDisplayEvents","useState","events","setEvents","usePixelAltSendHandler","event","fields","React","Portal","div","style","bottom","left","position","width","Badge","badgeContent","length","color","sx","Card","variant","backdropFilter","backgroundColor","overflowY","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","import_react_pixel","import_react","PixelDebuggerProvider","children","isDebugging","setIsDebugging","useLocalStorage","value","useMemo","React","DebugUserEventsContext","Provider","import_material","import_react_flexbox","import_react_pixel","import_react","PixelDebuggerToggle","props","setIsDebugging","isDebugging","useContext","DebugUserEventsContext","React","FlexRow","FormControl","FormLabel","Switch","checked","onClick"]}
@@ -1,4 +1,4 @@
1
- export * from './components/index.js';
2
- export * from './hooks/index.js';
3
- export * from './PixelEvent.js';
1
+ export * from './components/index.ts';
2
+ export * from './hooks/index.ts';
3
+ export * from './PixelEvent.ts';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './components/index.js';
2
- export * from './hooks/index.js';
3
- export * from './PixelEvent.js';
1
+ export * from './components/index.ts';
2
+ export * from './hooks/index.ts';
3
+ export * from './PixelEvent.ts';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './components/index.js';
2
- export * from './hooks/index.js';
3
- export * from './PixelEvent.js';
1
+ export * from './components/index.ts';
2
+ export * from './hooks/index.ts';
3
+ export * from './PixelEvent.ts';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,161 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/components/PixelDebugger.tsx
5
+ import { Badge, Card, Divider, Typography, useTheme } from "@mui/material";
6
+ import { ButtonEx } from "@xylabs/react-button";
7
+ import { FlexCol } from "@xylabs/react-flexbox";
8
+ import { DebugUserEventsContext } from "@xylabs/react-pixel";
9
+ import { Portal } from "@xylabs/react-portal";
10
+ import React, { useContext, useState as useState2 } from "react";
11
+
12
+ // src/hooks/usePixelAltSendHandler.ts
13
+ import { XyPixel } from "@xylabs/pixel";
14
+ import { useEffect, useState } from "react";
15
+ var usePixelAltSendHandler = /* @__PURE__ */ __name((altHandler) => {
16
+ const [pixelSend, setPixelSend] = useState();
17
+ useEffect(() => {
18
+ if (!pixelSend && XyPixel.instance.send) {
19
+ const oldHandler = XyPixel.instance.send.bind(XyPixel.instance);
20
+ setPixelSend(oldHandler);
21
+ } else {
22
+ XyPixel.instance.send = async (event, fields, eventId) => {
23
+ altHandler(event, fields);
24
+ return await (pixelSend == null ? void 0 : pixelSend(event, fields, eventId));
25
+ };
26
+ }
27
+ return () => {
28
+ if (pixelSend) {
29
+ XyPixel.instance.send = pixelSend;
30
+ }
31
+ };
32
+ }, [
33
+ pixelSend,
34
+ altHandler
35
+ ]);
36
+ }, "usePixelAltSendHandler");
37
+
38
+ // src/components/PixelDebugger.tsx
39
+ var PixelDebugger = /* @__PURE__ */ __name(() => {
40
+ const { isDebugging } = useContext(DebugUserEventsContext);
41
+ const theme = useTheme();
42
+ const [displayEvents, setDisplayEvents] = useState2(false);
43
+ const [events, setEvents] = useState2([]);
44
+ usePixelAltSendHandler((event, fields) => {
45
+ setEvents((events2) => [
46
+ {
47
+ event,
48
+ fields
49
+ },
50
+ ...events2
51
+ ]);
52
+ });
53
+ if (!isDebugging) {
54
+ return null;
55
+ }
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
62
+ }
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.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 }) => {
112
+ const [isOpen, setIsOpen] = useState2(false);
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");
124
+
125
+ // src/components/PixelDebuggerProvider.tsx
126
+ import { DebugUserEventsContext as DebugUserEventsContext2 } from "@xylabs/react-pixel";
127
+ import { useLocalStorage } from "@xylabs/react-shared";
128
+ import React2, { useMemo } from "react";
129
+ var PixelDebuggerProvider = /* @__PURE__ */ __name(({ children }) => {
130
+ const [isDebugging, setIsDebugging] = useLocalStorage("isDebuggingPixel", false);
131
+ const value = useMemo(() => ({
132
+ isDebugging,
133
+ setIsDebugging
134
+ }), [
135
+ isDebugging,
136
+ setIsDebugging
137
+ ]);
138
+ return /* @__PURE__ */ React2.createElement(DebugUserEventsContext2.Provider, {
139
+ value
140
+ }, children);
141
+ }, "PixelDebuggerProvider");
142
+
143
+ // src/components/PixelDebuggerToggle.tsx
144
+ import { FormControl, FormLabel, Switch } from "@mui/material";
145
+ import { FlexRow } from "@xylabs/react-flexbox";
146
+ import { DebugUserEventsContext as DebugUserEventsContext3 } from "@xylabs/react-pixel";
147
+ import React3, { useContext as useContext2 } from "react";
148
+ var PixelDebuggerToggle = /* @__PURE__ */ __name(({ ...props }) => {
149
+ const { setIsDebugging, isDebugging } = useContext2(DebugUserEventsContext3);
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");
155
+ export {
156
+ PixelDebugger,
157
+ PixelDebuggerProvider,
158
+ PixelDebuggerToggle,
159
+ usePixelAltSendHandler
160
+ };
161
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/PixelDebugger.tsx","../../src/hooks/usePixelAltSendHandler.ts","../../src/components/PixelDebuggerProvider.tsx","../../src/components/PixelDebuggerToggle.tsx"],"sourcesContent":["import { Badge, Card, Divider, Typography, useTheme } 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, { useContext, useState } from 'react'\n\nimport { usePixelAltSendHandler } from '../hooks/index.ts'\nimport { PixelEvent } from '../PixelEvent.ts'\n\nexport const PixelDebugger: React.FC = () => {\n const { isDebugging } = useContext(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={{ bottom: 0, left: 0, position: 'fixed', width: 350 }}>\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.palette.primary.main}\n >\n <FlexCol alignItems=\"stretch\" sx={{ flexFlow: 'column', maxHeight: 400 }}>\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={{ cursor: 'pointer', flex: '1 1 auto', overflowY: 'auto', userSelect: 'none' }}\n >\n {events.map((e, index) => (\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 }> = ({ event, fields, index, events }) => {\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 { 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 setPixelSend(oldHandler)\n } else {\n XyPixel.instance.send = async (event: string, fields?: Record<string, unknown>, 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 { useLocalStorage, WithChildren } 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.Provider value={value}>{children}</DebugUserEventsContext.Provider>\n}\n","import { FormControl, FormLabel, Switch } from '@mui/material'\nimport { BusyBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport { DebugUserEventsContext } from '@xylabs/react-pixel'\nimport React, { useContext } from 'react'\n\nexport const PixelDebuggerToggle: React.FC<BusyBoxProps> = ({ ...props }) => {\n const { setIsDebugging, isDebugging } = useContext(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","useContext","useState","XyPixel","useEffect","useState","usePixelAltSendHandler","altHandler","pixelSend","setPixelSend","useState","useEffect","XyPixel","instance","send","oldHandler","bind","event","fields","eventId","PixelDebugger","isDebugging","useContext","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","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","Provider","FormControl","FormLabel","Switch","FlexRow","DebugUserEventsContext","React","useContext","PixelDebuggerToggle","props","setIsDebugging","isDebugging","useContext","DebugUserEventsContext","React","FlexRow","FormControl","FormLabel","Switch","checked","onClick"]}
package/package.json CHANGED
@@ -14,23 +14,22 @@
14
14
  ],
15
15
  "dependencies": {
16
16
  "@xylabs/pixel": "^1.6.0",
17
- "@xylabs/react-button": "^3.4.0",
18
- "@xylabs/react-flexbox": "^3.4.0",
19
- "@xylabs/react-pixel": "^3.4.0",
20
- "@xylabs/react-portal": "^3.4.0",
21
- "@xylabs/react-shared": "^3.4.0",
22
- "axios": "^1.7.2"
17
+ "@xylabs/react-button": "^3.4.2",
18
+ "@xylabs/react-flexbox": "^3.4.2",
19
+ "@xylabs/react-pixel": "^3.4.2",
20
+ "@xylabs/react-portal": "^3.4.2",
21
+ "@xylabs/react-shared": "^3.4.2",
22
+ "axios": "^1.7.3"
23
23
  },
24
24
  "description": "Common React library for all XY Labs projects that use React",
25
25
  "devDependencies": {
26
- "@storybook/react": "^8.2.1",
26
+ "@storybook/react": "^8.2.7",
27
27
  "@types/react": "^18.3.3",
28
- "@xylabs/pixel": "^1.6.0",
29
- "@xylabs/ts-scripts-yarn3": "^3.11.12",
30
- "@xylabs/tsconfig-react": "^3.11.12",
28
+ "@xylabs/ts-scripts-yarn3": "^3.15.16",
29
+ "@xylabs/tsconfig-react": "^3.15.16",
31
30
  "react": "^18.3.1",
32
31
  "react-dom": "^18.3.1",
33
- "typescript": "^5.5.3"
32
+ "typescript": "^5.5.4"
34
33
  },
35
34
  "peerDependencies": {
36
35
  "@mui/material": "^5",
@@ -42,7 +41,7 @@
42
41
  "node": {
43
42
  "import": {
44
43
  "types": "./dist/node/index.d.mts",
45
- "default": "./dist/node/index.js"
44
+ "default": "./dist/node/index.mjs"
46
45
  },
47
46
  "require": {
48
47
  "types": "./dist/node/index.d.cts",
@@ -52,20 +51,20 @@
52
51
  "browser": {
53
52
  "import": {
54
53
  "types": "./dist/browser/index.d.mts",
55
- "default": "./dist/browser/index.js"
54
+ "default": "./dist/browser/index.mjs"
56
55
  },
57
56
  "require": {
58
57
  "types": "./dist/browser/index.d.cts",
59
58
  "default": "./dist/browser/index.cjs"
60
59
  }
61
60
  },
62
- "default": "./dist/browser/index.js"
61
+ "default": "./dist/browser/index.mjs"
63
62
  },
64
63
  "./package.json": "./package.json"
65
64
  },
66
65
  "types": "dist/browser/index.d.ts",
67
66
  "main": "./dist/browser/index.cjs",
68
- "module": "./dist/browser/index.js",
67
+ "module": "./dist/browser/index.mjs",
69
68
  "homepage": "https://xylabs.com",
70
69
  "keywords": [
71
70
  "utility",
@@ -81,6 +80,6 @@
81
80
  "url": "https://github.com/xylabs/sdk-react.git"
82
81
  },
83
82
  "sideEffects": false,
84
- "version": "3.4.0",
83
+ "version": "3.4.2",
85
84
  "type": "module"
86
85
  }
@@ -1,8 +1,11 @@
1
1
  import { Meta, StoryFn } from '@storybook/react'
2
2
  import { PixelApi, XyPixel } from '@xylabs/pixel'
3
3
  import { BusyBoxProps } from '@xylabs/react-flexbox'
4
- import { PixelDebugger, PixelDebuggerProvider, PixelDebuggerToggle } from '@xylabs/react-pixel-debugger'
5
- import { useEffect, useState } from 'react'
4
+ import React, { useEffect, useState } from 'react'
5
+
6
+ import { PixelDebugger } from './PixelDebugger.tsx'
7
+ import { PixelDebuggerProvider } from './PixelDebuggerProvider.tsx'
8
+ import { PixelDebuggerToggle } from './PixelDebuggerToggle.tsx'
6
9
 
7
10
  const StorybookEntry = {
8
11
  argTypes: {},
@@ -21,11 +24,13 @@ const Template: StoryFn<typeof PixelDebuggerToggle> = (args: BusyBoxProps) => {
21
24
  XyPixel.selectApi(new PixelApi('local'))
22
25
  setPixel(XyPixel.init('storybookPixel'))
23
26
  }, [])
24
- return pixel ?
25
- <PixelDebuggerProvider>
26
- <PixelDebuggerToggle {...args} />
27
- <PixelDebugger />
28
- </PixelDebuggerProvider>
27
+ return pixel
28
+ ? (
29
+ <PixelDebuggerProvider>
30
+ <PixelDebuggerToggle {...args} />
31
+ <PixelDebugger />
32
+ </PixelDebuggerProvider>
33
+ )
29
34
  : <></>
30
35
  }
31
36
 
@@ -34,5 +39,4 @@ Default.args = {}
34
39
 
35
40
  export { Default }
36
41
 
37
- // eslint-disable-next-line import/no-default-export
38
42
  export default StorybookEntry
@@ -3,20 +3,20 @@ import { ButtonEx } from '@xylabs/react-button'
3
3
  import { FlexCol } from '@xylabs/react-flexbox'
4
4
  import { DebugUserEventsContext } from '@xylabs/react-pixel'
5
5
  import { Portal } from '@xylabs/react-portal'
6
- import { useContext, useState } from 'react'
6
+ import React, { useContext, useState } from 'react'
7
7
 
8
- import { usePixelAltSendHandler } from '../hooks/index.js'
9
- import { PixelEvent } from '../PixelEvent.js'
8
+ import { usePixelAltSendHandler } from '../hooks/index.ts'
9
+ import { PixelEvent } from '../PixelEvent.ts'
10
10
 
11
11
  export const PixelDebugger: React.FC = () => {
12
12
  const { isDebugging } = useContext(DebugUserEventsContext)
13
- //TODO - when adding in the location hook to detect location change, was dropping the setEvents in usePixelAltSendHand
13
+ // TODO - when adding in the location hook to detect location change, was dropping the setEvents in usePixelAltSendHand
14
14
  const theme = useTheme()
15
15
  const [displayEvents, setDisplayEvents] = useState(false)
16
16
  const [events, setEvents] = useState<PixelEvent[]>([])
17
17
 
18
18
  usePixelAltSendHandler((event: string, fields?: Record<string, unknown>) => {
19
- setEvents((events) => [{ event, fields }, ...events])
19
+ setEvents(events => [{ event, fields }, ...events])
20
20
  })
21
21
 
22
22
  if (!isDebugging) {
@@ -1,7 +1,9 @@
1
1
  import { DebugUserEventsContext } from '@xylabs/react-pixel'
2
2
  import { useLocalStorage, WithChildren } from '@xylabs/react-shared'
3
+ import React, { useMemo } from 'react'
3
4
 
4
5
  export const PixelDebuggerProvider: React.FC<WithChildren> = ({ children }) => {
5
6
  const [isDebugging, setIsDebugging] = useLocalStorage<boolean>('isDebuggingPixel', false)
6
- return <DebugUserEventsContext.Provider value={{ isDebugging, setIsDebugging }}>{children}</DebugUserEventsContext.Provider>
7
+ const value = useMemo(() => ({ isDebugging, setIsDebugging }), [isDebugging, setIsDebugging])
8
+ return <DebugUserEventsContext.Provider value={value}>{children}</DebugUserEventsContext.Provider>
7
9
  }
@@ -1,7 +1,7 @@
1
1
  import { FormControl, FormLabel, Switch } from '@mui/material'
2
2
  import { BusyBoxProps, FlexRow } from '@xylabs/react-flexbox'
3
3
  import { DebugUserEventsContext } from '@xylabs/react-pixel'
4
- import { useContext } from 'react'
4
+ import React, { useContext } from 'react'
5
5
 
6
6
  export const PixelDebuggerToggle: React.FC<BusyBoxProps> = ({ ...props }) => {
7
7
  const { setIsDebugging, isDebugging } = useContext(DebugUserEventsContext)
@@ -1,3 +1,3 @@
1
- export * from './PixelDebugger.jsx'
2
- export * from './PixelDebuggerProvider.jsx'
3
- export * from './PixelDebuggerToggle.jsx'
1
+ export * from './PixelDebugger.tsx'
2
+ export * from './PixelDebuggerProvider.tsx'
3
+ export * from './PixelDebuggerToggle.tsx'
@@ -1 +1 @@
1
- export * from './usePixelAltSendHandler.js'
1
+ export * from './usePixelAltSendHandler.ts'
@@ -14,7 +14,7 @@ export const usePixelAltSendHandler = (altHandler: (event: string, fields?: Reco
14
14
  }
15
15
  }
16
16
  return () => {
17
- //restore send on unmount
17
+ // restore send on unmount
18
18
  if (pixelSend) {
19
19
  XyPixel.instance.send = pixelSend
20
20
  }
package/src/index.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './components/index.js'
2
- export * from './hooks/index.js'
3
- export * from './PixelEvent.js'
1
+ export * from './components/index.ts'
2
+ export * from './hooks/index.ts'
3
+ export * from './PixelEvent.ts'
@@ -1,110 +0,0 @@
1
- // src/components/PixelDebugger.tsx
2
- import { Badge, Card, Divider, Typography, useTheme } from "@mui/material";
3
- import { ButtonEx } from "@xylabs/react-button";
4
- import { FlexCol } from "@xylabs/react-flexbox";
5
- import { DebugUserEventsContext } from "@xylabs/react-pixel";
6
- import { Portal } from "@xylabs/react-portal";
7
- import { useContext, useState as useState2 } from "react";
8
-
9
- // src/hooks/usePixelAltSendHandler.ts
10
- import { XyPixel } from "@xylabs/pixel";
11
- import { useEffect, useState } from "react";
12
- var usePixelAltSendHandler = (altHandler) => {
13
- const [pixelSend, setPixelSend] = useState();
14
- useEffect(() => {
15
- if (!pixelSend && XyPixel.instance.send) {
16
- const oldHandler = XyPixel.instance.send.bind(XyPixel.instance);
17
- setPixelSend(oldHandler);
18
- } else {
19
- XyPixel.instance.send = async (event, fields, eventId) => {
20
- altHandler(event, fields);
21
- return await pixelSend?.(event, fields, eventId);
22
- };
23
- }
24
- return () => {
25
- if (pixelSend) {
26
- XyPixel.instance.send = pixelSend;
27
- }
28
- };
29
- }, [pixelSend, altHandler]);
30
- };
31
-
32
- // src/components/PixelDebugger.tsx
33
- import { jsx, jsxs } from "react/jsx-runtime";
34
- var PixelDebugger = () => {
35
- const { isDebugging } = useContext(DebugUserEventsContext);
36
- const theme = useTheme();
37
- const [displayEvents, setDisplayEvents] = useState2(false);
38
- const [events, setEvents] = useState2([]);
39
- usePixelAltSendHandler((event, fields) => {
40
- setEvents((events2) => [{ event, fields }, ...events2]);
41
- });
42
- if (!isDebugging) {
43
- return null;
44
- }
45
- return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx("div", { style: { bottom: 0, left: 0, position: "fixed", width: 350 }, children: /* @__PURE__ */ jsx(Badge, { badgeContent: events.length, color: "primary", sx: { width: "100%" }, children: /* @__PURE__ */ jsx(
46
- Card,
47
- {
48
- variant: "outlined",
49
- sx: {
50
- backdropFilter: "blur(16px) saturate(180%)",
51
- backgroundColor: "rgba(18, 18, 18, .70)",
52
- overflowY: "auto",
53
- width: "100%"
54
- },
55
- color: theme.palette.primary.main,
56
- children: /* @__PURE__ */ jsxs(FlexCol, { alignItems: "stretch", sx: { flexFlow: "column", maxHeight: 400 }, children: [
57
- /* @__PURE__ */ jsx(FlexCol, { alignItems: "stretch", sx: { flex: "0 1 auto" }, children: /* @__PURE__ */ jsx(ButtonEx, { variant: "text", onClick: () => setDisplayEvents(!displayEvents), children: "XY Pixel Debugger" }) }),
58
- displayEvents && events.length > 0 && /* @__PURE__ */ jsx(
59
- FlexCol,
60
- {
61
- alignItems: "stretch",
62
- alignContent: "start",
63
- padding: 2,
64
- sx: { cursor: "pointer", flex: "1 1 auto", overflowY: "auto", userSelect: "none" },
65
- children: events.map((e, index) => /* @__PURE__ */ jsx(PixelEventDetails, { events, index, ...e }, `${e.event}-${index}`))
66
- }
67
- ),
68
- displayEvents && events.length === 0 && /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: "No Events" })
69
- ] })
70
- }
71
- ) }) }) });
72
- };
73
- var PixelEventDetails = ({ event, fields, index, events }) => {
74
- const [isOpen, setIsOpen] = useState2(false);
75
- return /* @__PURE__ */ jsxs(FlexCol, { alignItems: "stretch", marginBottom: 0.5, onClick: () => setIsOpen(!isOpen), children: [
76
- /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: event }),
77
- isOpen && /* @__PURE__ */ jsx(Typography, { marginBottom: 0.5, variant: "caption", children: JSON.stringify(fields, null, 2) }),
78
- events[index + 1] && /* @__PURE__ */ jsx(Divider, {})
79
- ] });
80
- };
81
-
82
- // src/components/PixelDebuggerProvider.tsx
83
- import { DebugUserEventsContext as DebugUserEventsContext2 } from "@xylabs/react-pixel";
84
- import { useLocalStorage } from "@xylabs/react-shared";
85
- import { jsx as jsx2 } from "react/jsx-runtime";
86
- var PixelDebuggerProvider = ({ children }) => {
87
- const [isDebugging, setIsDebugging] = useLocalStorage("isDebuggingPixel", false);
88
- return /* @__PURE__ */ jsx2(DebugUserEventsContext2.Provider, { value: { isDebugging, setIsDebugging }, children });
89
- };
90
-
91
- // src/components/PixelDebuggerToggle.tsx
92
- import { FormControl, FormLabel, Switch } from "@mui/material";
93
- import { FlexRow } from "@xylabs/react-flexbox";
94
- import { DebugUserEventsContext as DebugUserEventsContext3 } from "@xylabs/react-pixel";
95
- import { useContext as useContext2 } from "react";
96
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
97
- var PixelDebuggerToggle = ({ ...props }) => {
98
- const { setIsDebugging, isDebugging } = useContext2(DebugUserEventsContext3);
99
- return /* @__PURE__ */ jsx3(FlexRow, { ...props, children: /* @__PURE__ */ jsxs2(FormControl, { children: [
100
- /* @__PURE__ */ jsx3(FormLabel, { children: "Enable Debugger" }),
101
- /* @__PURE__ */ jsx3(Switch, { checked: isDebugging, onClick: () => setIsDebugging(!isDebugging) })
102
- ] }) });
103
- };
104
- export {
105
- PixelDebugger,
106
- PixelDebuggerProvider,
107
- PixelDebuggerToggle,
108
- usePixelAltSendHandler
109
- };
110
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/PixelDebugger.tsx","../../src/hooks/usePixelAltSendHandler.ts","../../src/components/PixelDebuggerProvider.tsx","../../src/components/PixelDebuggerToggle.tsx"],"sourcesContent":["import { Badge, Card, Divider, Typography, useTheme } 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 { useContext, useState } from 'react'\n\nimport { usePixelAltSendHandler } from '../hooks/index.js'\nimport { PixelEvent } from '../PixelEvent.js'\n\nexport const PixelDebugger: React.FC = () => {\n const { isDebugging } = useContext(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={{ bottom: 0, left: 0, position: 'fixed', width: 350 }}>\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.palette.primary.main}\n >\n <FlexCol alignItems=\"stretch\" sx={{ flexFlow: 'column', maxHeight: 400 }}>\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={{ cursor: 'pointer', flex: '1 1 auto', overflowY: 'auto', userSelect: 'none' }}\n >\n {events.map((e, index) => (\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 }> = ({ event, fields, index, events }) => {\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 { 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 setPixelSend(oldHandler)\n } else {\n XyPixel.instance.send = async (event: string, fields?: Record<string, unknown>, 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 { useLocalStorage, WithChildren } from '@xylabs/react-shared'\n\nexport const PixelDebuggerProvider: React.FC<WithChildren> = ({ children }) => {\n const [isDebugging, setIsDebugging] = useLocalStorage<boolean>('isDebuggingPixel', false)\n return <DebugUserEventsContext.Provider value={{ isDebugging, setIsDebugging }}>{children}</DebugUserEventsContext.Provider>\n}\n","import { FormControl, FormLabel, Switch } from '@mui/material'\nimport { BusyBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport { DebugUserEventsContext } from '@xylabs/react-pixel'\nimport { useContext } from 'react'\n\nexport const PixelDebuggerToggle: React.FC<BusyBoxProps> = ({ ...props }) => {\n const { setIsDebugging, isDebugging } = useContext(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","useContext","jsx","jsxs"]}