feat(core): improve mixpanel (#7652)

move @affine/core/utils/mixpanel -> @affine/core/mixpanel

now you can debug mixpanel on browser devtool

![CleanShot 2024-07-30 at 17.32.48@2x.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/g3jz87HxbjOJpXV3FPT7/083c1286-39fd-4569-b4d2-e6e84cf2e797.png)
This commit is contained in:
EYHN
2024-07-30 13:22:16 +00:00
parent ea7066d02c
commit ab92efcfc0
58 changed files with 221 additions and 149 deletions

View File

@@ -1,6 +1,5 @@
export * from './create-emotion-cache';
export * from './fractional-indexing';
export * from './mixpanel';
export * from './popup';
export * from './string2color';
export * from './toast';

View File

@@ -1,42 +0,0 @@
import { DebugLogger } from '@affine/debug';
import type { OverridedMixpanel } from 'mixpanel-browser';
import mixpanelBrowser from 'mixpanel-browser';
import type { MixpanelEvents } from '../mixpanel';
const logger = new DebugLogger('affine:mixpanel');
export const mixpanel = process.env.MIXPANEL_TOKEN
? mixpanelBrowser
: new Proxy(
function () {} as unknown as OverridedMixpanel,
createProxyHandler()
);
function createProxyHandler(property?: string | symbol) {
const handler = {
get: (_target, childProperty) => {
const path = property
? String(property) + '.' + String(childProperty)
: String(childProperty);
return new Proxy(
function () {} as unknown as OverridedMixpanel,
createProxyHandler(path)
);
},
apply: (_target, _thisArg, args) => {
logger.debug(
`mixpanel.${property ? String(property) : 'mixpanel'}`,
...args
);
},
} as ProxyHandler<OverridedMixpanel>;
return handler;
}
export function mixpanelTrack<T extends keyof MixpanelEvents>(
event: T,
properties?: MixpanelEvents[T]
) {
return mixpanel.track(event, properties);
}