@xylabs/react-pixel-debugger 4.0.2 → 4.0.4

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.
@@ -0,0 +1,5 @@
1
+ export interface PixelEvent {
2
+ event: string;
3
+ fields?: unknown;
4
+ }
5
+ //# sourceMappingURL=PixelEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixelEvent.d.ts","sourceRoot":"","sources":["../../src/PixelEvent.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const PixelDebugger: React.FC;
3
+ //# sourceMappingURL=PixelDebugger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixelDebugger.d.ts","sourceRoot":"","sources":["../../../src/components/PixelDebugger.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA+B,MAAM,OAAO,CAAA;AAKnD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EA+DjC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { WithChildren } from '@xylabs/react-shared';
2
+ import React from 'react';
3
+ export declare const PixelDebuggerProvider: React.FC<WithChildren>;
4
+ //# sourceMappingURL=PixelDebuggerProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixelDebuggerProvider.d.ts","sourceRoot":"","sources":["../../../src/components/PixelDebuggerProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAIxD,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { BusyBoxProps } from '@xylabs/react-flexbox';
2
+ import React from 'react';
3
+ export declare const PixelDebuggerToggle: React.FC<BusyBoxProps>;
4
+ //# sourceMappingURL=PixelDebuggerToggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixelDebuggerToggle.d.ts","sourceRoot":"","sources":["../../../src/components/PixelDebuggerToggle.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGzD,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAWtD,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './PixelDebugger.tsx';
2
+ export * from './PixelDebuggerProvider.tsx';
3
+ export * from './PixelDebuggerToggle.tsx';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './usePixelAltSendHandler.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const usePixelAltSendHandler: (altHandler: (event: string, fields?: Record<string, unknown>) => void) => void;
2
+ //# sourceMappingURL=usePixelAltSendHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePixelAltSendHandler.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePixelAltSendHandler.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,eAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,SAmB3G,CAAA"}
@@ -1,18 +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, type PixelEvent, usePixelAltSendHandler };
1
+ export * from './components/index.ts';
2
+ export * from './hooks/index.ts';
3
+ export * from './PixelEvent.ts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA"}
@@ -99,12 +99,15 @@ var PixelDebugger = /* @__PURE__ */ __name(() => {
99
99
  overflowY: "auto",
100
100
  userSelect: "none"
101
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, {
102
+ }, events.map((e, index) => (
103
+ // eslint-disable-next-line @eslint-react/no-duplicate-key
104
+ /* @__PURE__ */ React.createElement(PixelEventDetails, {
105
+ key: `${e.event}-${index}`,
106
+ events,
107
+ index,
108
+ ...e
109
+ })
110
+ ))), displayEvents && events.length === 0 && /* @__PURE__ */ React.createElement(Typography, {
108
111
  variant: "subtitle2"
109
112
  }, "No Events"))))));
110
113
  }, "PixelDebugger");
@@ -1 +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":";;;;AAAA,SAASA,OAAOC,MAAMC,SAASC,YAAYC,gBAAgB;AAC3D,SAASC,gBAAgB;AACzB,SAASC,eAAe;AACxB,SAASC,8BAA8B;AACvC,SAASC,cAAc;AACvB,OAAOC,SAASC,YAAYC,YAAAA,iBAAgB;;;ACL5C,SAASC,eAAe;AACxB,SAASC,WAAWC,gBAAgB;AAE7B,IAAMC,yBAAyB,wBAACC,eAAAA;AACrC,QAAM,CAACC,WAAWC,YAAAA,IAAgBC,SAAAA;AAClCC,YAAU,MAAA;AACR,QAAI,CAACH,aAAaI,QAAQC,SAASC,MAAM;AACvC,YAAMC,aAAaH,QAAQC,SAASC,KAAKE,KAAKJ,QAAQC,QAAQ;AAC9DJ,mBAAaM,UAAAA;IACf,OAAO;AACLH,cAAQC,SAASC,OAAO,OAAOG,OAAeC,QAAkCC,YAAAA;AAC9EZ,mBAAWU,OAAOC,MAAAA;AAClB,eAAO,MAAMV,YAAYS,OAAOC,QAAQC,OAAAA;MAC1C;IACF;AACA,WAAO,MAAA;AAEL,UAAIX,WAAW;AACbI,gBAAQC,SAASC,OAAON;MAC1B;IACF;EACF,GAAG;IAACA;IAAWD;GAAW;AAC5B,GAnBsC;;;ADO/B,IAAMa,gBAA0B,6BAAA;AACrC,QAAM,EAAEC,YAAW,IAAKC,WAAWC,sBAAAA;AAEnC,QAAMC,QAAQC,SAAAA;AACd,QAAM,CAACC,eAAeC,gBAAAA,IAAoBC,UAAS,KAAA;AACnD,QAAM,CAACC,QAAQC,SAAAA,IAAaF,UAAuB,CAAA,CAAE;AAErDG,yBAAuB,CAACC,OAAeC,WAAAA;AACrCH,cAAUD,CAAAA,YAAU;MAAC;QAAEG;QAAOC;MAAO;SAAMJ;KAAO;EACpD,CAAA;AAEA,MAAI,CAACR,aAAa;AAChB,WAAO;EACT;AAEA,SACE,sBAAA,cAACa,QAAAA,MACC,sBAAA,cAACC,OAAAA;IAAIC,OAAO;MAAEC,QAAQ;MAAGC,MAAM;MAAGC,UAAU;MAASC,OAAO;IAAI;KAC9D,sBAAA,cAACC,OAAAA;IAAMC,cAAcb,OAAOc;IAAQC,OAAM;IAAUC,IAAI;MAAEL,OAAO;IAAO;KACtE,sBAAA,cAACM,MAAAA;IACCC,SAAQ;IACRF,IAAI;MACFG,gBAAgB;MAChBC,iBAAiB;MACjBC,WAAW;MACXV,OAAO;IACT;IACAI,OAAOpB,MAAM2B,QAAQC,QAAQC;KAE7B,sBAAA,cAACC,SAAAA;IAAQC,YAAW;IAAUV,IAAI;MAAEW,UAAU;MAAUC,WAAW;IAAI;KACrE,sBAAA,cAACH,SAAAA;IAAQC,YAAW;IAAUV,IAAI;MAAEa,MAAM;IAAW;KACnD,sBAAA,cAACC,UAAAA;IAASZ,SAAQ;IAAOa,SAAS,6BAAMjC,iBAAiB,CAACD,aAAAA,GAAxB;KAAwC,mBAAA,CAAA,GAI3EA,iBAAiBG,OAAOc,SAAS,KAChC,sBAAA,cAACW,SAAAA;IACCC,YAAW;IACXM,cAAa;IACbC,SAAS;IACTjB,IAAI;MAAEkB,QAAQ;MAAWL,MAAM;MAAYR,WAAW;MAAQc,YAAY;IAAO;KAEhFnC,OAAOoC,IAAI,CAACC,GAAGC,UACd,sBAAA,cAACC,mBAAAA;IAAkBC,KAAK,GAAGH,EAAElC,KAAK,IAAImC,KAAAA;IAAStC;IAAgBsC;IAAe,GAAGD;QAItFxC,iBAAiBG,OAAOc,WAAW,KAAK,sBAAA,cAAC2B,YAAAA;IAAWvB,SAAQ;KAAY,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAOvF,GAtDuC;AAwDvC,IAAMqB,oBAAoF,wBAAC,EAAEpC,OAAOC,QAAQkC,OAAOtC,OAAM,MAAE;AACzH,QAAM,CAAC0C,QAAQC,SAAAA,IAAa5C,UAAS,KAAA;AACrC,SACE,sBAAA,cAAC0B,SAAAA;IAAQC,YAAW;IAAUkB,cAAc;IAAKb,SAAS,6BAAMY,UAAU,CAACD,MAAAA,GAAjB;KACxD,sBAAA,cAACD,YAAAA;IAAWvB,SAAQ;KAAaf,KAAAA,GAChCuC,UACC,sBAAA,cAACD,YAAAA;IAAWG,cAAc;IAAK1B,SAAQ;KACpC2B,KAAKC,UAAU1C,QAAQ,MAAM,CAAA,CAAA,GAGjCJ,OAAOsC,QAAQ,CAAA,KAAM,sBAAA,cAACS,SAAAA,IAAAA,CAAAA;AAG7B,GAb0F;;;AElE1F,SAASC,0BAAAA,+BAA8B;AACvC,SAASC,uBAAqC;AAC9C,OAAOC,UAASC,eAAe;AAExB,IAAMC,wBAAgD,wBAAC,EAAEC,SAAQ,MAAE;AACxE,QAAM,CAACC,aAAaC,cAAAA,IAAkBC,gBAAyB,oBAAoB,KAAA;AACnF,QAAMC,QAAQC,QAAQ,OAAO;IAAEJ;IAAaC;EAAe,IAAI;IAACD;IAAaC;GAAe;AAC5F,SAAO,gBAAAI,OAAA,cAACC,wBAAuBC,UAAQ;IAACJ;KAAeJ,QAAAA;AACzD,GAJ6D;;;ACJ7D,SAASS,aAAaC,WAAWC,cAAc;AAC/C,SAAuBC,eAAe;AACtC,SAASC,0BAAAA,+BAA8B;AACvC,OAAOC,UAASC,cAAAA,mBAAkB;AAE3B,IAAMC,sBAA8C,wBAAC,EAAE,GAAGC,MAAAA,MAAO;AACtE,QAAM,EAAEC,gBAAgBC,YAAW,IAAKC,YAAWC,uBAAAA;AAEnD,SACE,gBAAAC,OAAA,cAACC,SAAYN,OACX,gBAAAK,OAAA,cAACE,aAAAA,MACC,gBAAAF,OAAA,cAACG,WAAAA,MAAU,iBAAA,GACX,gBAAAH,OAAA,cAACI,QAAAA;IAAOC,SAASR;IAAaS,SAAS,6BAAMV,eAAe,CAACC,WAAAA,GAAtB;;AAI/C,GAX2D;","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"]}
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, { useContext, 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 } = 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={{\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.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 // eslint-disable-next-line @eslint-react/no-duplicate-key\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 { 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 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.Provider value={value}>{children}</DebugUserEventsContext.Provider>\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, { 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
@@ -1,34 +1,59 @@
1
1
  {
2
2
  "name": "@xylabs/react-pixel-debugger",
3
+ "version": "4.0.4",
4
+ "description": "Common React library for all XY Labs projects that use React",
5
+ "keywords": [
6
+ "utility",
7
+ "typescript",
8
+ "react"
9
+ ],
10
+ "homepage": "https://xylabs.com",
11
+ "bugs": {
12
+ "url": "git+https://github.com/xylabs/sdk-react/issues",
13
+ "email": "support@xylabs.com"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/xylabs/sdk-react.git"
18
+ },
19
+ "license": "LGPL-3.0-only",
3
20
  "author": {
4
- "email": "support@xylabs.com",
5
21
  "name": "XY Labs Development Team",
22
+ "email": "support@xylabs.com",
6
23
  "url": "https://xylabs.com"
7
24
  },
8
- "bugs": {
9
- "email": "support@xylabs.com",
10
- "url": "https://github.com/xylabs/sdk-react/issues"
25
+ "sideEffects": false,
26
+ "type": "module",
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/browser/index.d.ts",
30
+ "default": "./dist/browser/index.mjs"
31
+ },
32
+ "./package.json": "./package.json"
11
33
  },
34
+ "module": "./dist/browser/index.mjs",
35
+ "types": "dist/browser/index.d.ts",
12
36
  "workspaces": [
13
37
  "packages/*"
14
38
  ],
15
39
  "dependencies": {
16
40
  "@xylabs/pixel": "^2.0.1",
17
- "@xylabs/react-button": "^4.0.2",
18
- "@xylabs/react-flexbox": "^4.0.2",
19
- "@xylabs/react-pixel": "^4.0.2",
20
- "@xylabs/react-portal": "^4.0.2",
21
- "@xylabs/react-shared": "^4.0.2",
22
- "axios": "^1.7.4"
41
+ "@xylabs/react-button": "^4.0.4",
42
+ "@xylabs/react-flexbox": "^4.0.4",
43
+ "@xylabs/react-pixel": "^4.0.4",
44
+ "@xylabs/react-portal": "^4.0.4",
45
+ "@xylabs/react-shared": "^4.0.4",
46
+ "axios": "^1.7.5"
23
47
  },
24
- "description": "Common React library for all XY Labs projects that use React",
25
48
  "devDependencies": {
49
+ "@mui/material": "^5.16.7",
26
50
  "@storybook/react": "^8.2.9",
27
- "@types/react": "^18.3.3",
28
- "@xylabs/ts-scripts-yarn3": "^4.0.0-rc.15",
29
- "@xylabs/tsconfig-react": "^4.0.0-rc.15",
51
+ "@types/react": "^18.3.4",
52
+ "@xylabs/ts-scripts-yarn3": "^4.0.7",
53
+ "@xylabs/tsconfig-react": "^4.0.7",
30
54
  "react": "^18.3.1",
31
55
  "react-dom": "^18.3.1",
56
+ "storybook": "^8.2.9",
32
57
  "typescript": "^5.5.4"
33
58
  },
34
59
  "peerDependencies": {
@@ -36,30 +61,7 @@
36
61
  "react": "^18",
37
62
  "react-dom": "^18"
38
63
  },
39
- "exports": {
40
- ".": {
41
- "types": "./dist/browser/index.d.ts",
42
- "default": "./dist/browser/index.mjs"
43
- },
44
- "./package.json": "./package.json"
45
- },
46
- "types": "dist/browser/index.d.ts",
47
- "module": "./dist/browser/index.mjs",
48
- "homepage": "https://xylabs.com",
49
- "keywords": [
50
- "utility",
51
- "typescript",
52
- "react"
53
- ],
54
- "license": "LGPL-3.0-only",
55
64
  "publishConfig": {
56
65
  "access": "public"
57
- },
58
- "repository": {
59
- "type": "git",
60
- "url": "https://github.com/xylabs/sdk-react.git"
61
- },
62
- "sideEffects": false,
63
- "version": "4.0.2",
64
- "type": "module"
66
+ }
65
67
  }
@@ -1,6 +1,6 @@
1
- import { Meta, StoryFn } from '@storybook/react'
1
+ import type { Meta, StoryFn } from '@storybook/react'
2
2
  import { PixelApi, XyPixel } from '@xylabs/pixel'
3
- import { BusyBoxProps } from '@xylabs/react-flexbox'
3
+ import type { BusyBoxProps } from '@xylabs/react-flexbox'
4
4
  import React, { useEffect, useState } from 'react'
5
5
 
6
6
  import { PixelDebugger } from './PixelDebugger.tsx'
@@ -10,11 +10,7 @@ import { PixelDebuggerToggle } from './PixelDebuggerToggle.tsx'
10
10
  const StorybookEntry = {
11
11
  argTypes: {},
12
12
  component: PixelDebuggerToggle,
13
- parameters: {
14
- docs: {
15
- page: null,
16
- },
17
- },
13
+ parameters: { docs: { page: null } },
18
14
  title: 'pixel-debugger/PixelDebuggerToggle',
19
15
  } as Meta<typeof PixelDebuggerToggle>
20
16
 
@@ -1,4 +1,6 @@
1
- import { Badge, Card, Divider, Typography, useTheme } from '@mui/material'
1
+ import {
2
+ Badge, Card, Divider, Typography, useTheme,
3
+ } from '@mui/material'
2
4
  import { ButtonEx } from '@xylabs/react-button'
3
5
  import { FlexCol } from '@xylabs/react-flexbox'
4
6
  import { DebugUserEventsContext } from '@xylabs/react-pixel'
@@ -6,7 +8,7 @@ import { Portal } from '@xylabs/react-portal'
6
8
  import React, { useContext, useState } from 'react'
7
9
 
8
10
  import { usePixelAltSendHandler } from '../hooks/index.ts'
9
- import { PixelEvent } from '../PixelEvent.ts'
11
+ import type { PixelEvent } from '../PixelEvent.ts'
10
12
 
11
13
  export const PixelDebugger: React.FC = () => {
12
14
  const { isDebugging } = useContext(DebugUserEventsContext)
@@ -25,7 +27,10 @@ export const PixelDebugger: React.FC = () => {
25
27
 
26
28
  return (
27
29
  <Portal>
28
- <div style={{ bottom: 0, left: 0, position: 'fixed', width: 350 }}>
30
+ <div style={{
31
+ bottom: 0, left: 0, position: 'fixed', width: 350,
32
+ }}
33
+ >
29
34
  <Badge badgeContent={events.length} color="primary" sx={{ width: '100%' }}>
30
35
  <Card
31
36
  variant="outlined"
@@ -37,7 +42,10 @@ export const PixelDebugger: React.FC = () => {
37
42
  }}
38
43
  color={theme.palette.primary.main}
39
44
  >
40
- <FlexCol alignItems="stretch" sx={{ flexFlow: 'column', maxHeight: 400 }}>
45
+ <FlexCol
46
+ alignItems="stretch"
47
+ sx={{ flexFlow: 'column', maxHeight: 400 }}
48
+ >
41
49
  <FlexCol alignItems="stretch" sx={{ flex: '0 1 auto' }}>
42
50
  <ButtonEx variant="text" onClick={() => setDisplayEvents(!displayEvents)}>
43
51
  XY Pixel Debugger
@@ -48,9 +56,12 @@ export const PixelDebugger: React.FC = () => {
48
56
  alignItems="stretch"
49
57
  alignContent="start"
50
58
  padding={2}
51
- sx={{ cursor: 'pointer', flex: '1 1 auto', overflowY: 'auto', userSelect: 'none' }}
59
+ sx={{
60
+ cursor: 'pointer', flex: '1 1 auto', overflowY: 'auto', userSelect: 'none',
61
+ }}
52
62
  >
53
63
  {events.map((e, index) => (
64
+ // eslint-disable-next-line @eslint-react/no-duplicate-key
54
65
  <PixelEventDetails key={`${e.event}-${index}`} events={events} index={index} {...e} />
55
66
  ))}
56
67
  </FlexCol>
@@ -64,7 +75,9 @@ export const PixelDebugger: React.FC = () => {
64
75
  )
65
76
  }
66
77
 
67
- const PixelEventDetails: React.FC<PixelEvent & { events: PixelEvent[]; index: number }> = ({ event, fields, index, events }) => {
78
+ const PixelEventDetails: React.FC<PixelEvent & { events: PixelEvent[]; index: number }> = ({
79
+ event, fields, index, events,
80
+ }) => {
68
81
  const [isOpen, setIsOpen] = useState(false)
69
82
  return (
70
83
  <FlexCol alignItems="stretch" marginBottom={0.5} onClick={() => setIsOpen(!isOpen)}>
@@ -1,5 +1,6 @@
1
1
  import { DebugUserEventsContext } from '@xylabs/react-pixel'
2
- import { useLocalStorage, WithChildren } from '@xylabs/react-shared'
2
+ import type { WithChildren } from '@xylabs/react-shared'
3
+ import { useLocalStorage } from '@xylabs/react-shared'
3
4
  import React, { useMemo } from 'react'
4
5
 
5
6
  export const PixelDebuggerProvider: React.FC<WithChildren> = ({ children }) => {
@@ -1,5 +1,8 @@
1
- import { FormControl, FormLabel, Switch } from '@mui/material'
2
- import { BusyBoxProps, FlexRow } from '@xylabs/react-flexbox'
1
+ import {
2
+ FormControl, FormLabel, Switch,
3
+ } from '@mui/material'
4
+ import type { BusyBoxProps } from '@xylabs/react-flexbox'
5
+ import { FlexRow } from '@xylabs/react-flexbox'
3
6
  import { DebugUserEventsContext } from '@xylabs/react-pixel'
4
7
  import React, { useContext } from 'react'
5
8
 
package/xy.config.ts CHANGED
@@ -1,9 +1,7 @@
1
- import { XyTsupConfig } from '@xylabs/ts-scripts-yarn3'
1
+ import type { XyTsupConfig } from '@xylabs/ts-scripts-yarn3'
2
2
  const config: XyTsupConfig = {
3
3
  compile: {
4
- browser: {
5
- src: {},
6
- },
4
+ browser: { src: {} },
7
5
  node: {},
8
6
  neutral: {},
9
7
  },