import { PageViewCallback, pageviewListener, trackState } from './global'; import injectCreateElement from './inject/injectCreateElement'; import injectPressability from './inject/injectPressability'; import injectAppContainer from './inject/injectAppContainer'; import injectAppRegistry from './inject/injectAppRegistry'; import configGlobal from './config'; import type { AutoTrackConfig } from './config'; import injectDevtools from './inject/injectDevtools'; import initEvent from './event'; import initJSMini from './jsmini'; import injectTaro from './inject/injectTaro'; initEvent(); class AutoTrack { initPicker() { if (!trackState.init) { injectDevtools(); } } config(config: AutoTrackConfig) { configGlobal.updateConfig(config); } enable(enable: boolean = true) { if (!enable) { trackState.enable = false; return; } if (!trackState.init) { // console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') injectCreateElement(); injectPressability(); injectAppRegistry(); injectAppContainer(); injectTaro(); initJSMini(); trackState.enablePageView = true; trackState.enablePageLeave = false; trackState.enableClick = true; trackState.enableReactNavigation = true; trackState.init = true; } trackState.enable = true; } enablePageView(enable: boolean = true) { trackState.enablePageView = enable; } enablePageLeave(enable: boolean = true) { trackState.enablePageLeave = enable; } enableClick(enable: boolean = true) { trackState.enableClick = enable; } enableReactNavigation(enable: boolean = true) { trackState.enableReactNavigation = enable; } onPageview(callback: PageViewCallback) { pageviewListener.add(callback); } offPageview(callback: PageViewCallback) { pageviewListener.remove(callback); } } export default new AutoTrack();