cbvirtua 1.0.116 → 2.0.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.
- package/package.json +3 -5
- package/valid.txt +468 -0
- package/vue3-hash-calendar-main.zip +0 -0
- package/vv.txt +10442 -0
- package/1.zip +0 -0
- package/7.zip +0 -0
- package/888.zip +0 -0
- package/Checkbox Checked-1.png +0 -0
- package/_/345/217/267 (1).svg" +0 -1
- package/_/345/217/267.svg +0 -1
- package/a.png +0 -0
- package/babel-plugin-async-lock-master.zip +0 -0
- package/build-own-react-main.zip +0 -0
- package/check_box.svg +0 -1
- package/check_box_outline_blank.svg +0 -1
- package/checkbox_unchecked.svg +0 -1
- package/floating-vue-main.zip +0 -0
- package/font_2009600_gpzp7pxtnw.zip +0 -0
- package/font_2553510_ciljc7axaw7.woff +0 -0
- package/font_2553510_ciljc7axaw7.woff2 +0 -0
- package/leetcode-javascript-master.zip +0 -0
- package/loginDemo-master.zip +0 -0
- package/mi.txt +0 -374
- package/mitt-main.zip +0 -0
- package/mp-weixin-back-main.zip +0 -0
- package/pdfsss.txt +0 -900
- package/sms-check-code-master.zip +0 -0
- package/sss.txt +0 -2
- package/study-summarize-master.zip +0 -0
- package/tool.txt +0 -19
- package/v-dropdown-menu-master.zip +0 -0
- package/v-track-master/v-track-master/.browserslistrc +0 -3
- package/v-track-master/v-track-master/.eslintignore +0 -3
- package/v-track-master/v-track-master/.eslintrc.js +0 -15
- package/v-track-master/v-track-master/.gitattributes +0 -1
- package/v-track-master/v-track-master/.github/FUNDING.yml +0 -12
- package/v-track-master/v-track-master/.github/workflows/node.js.yml +0 -29
- package/v-track-master/v-track-master/.travis.yml +0 -22
- package/v-track-master/v-track-master/.yarnrc +0 -1
- package/v-track-master/v-track-master/LICENSE +0 -21
- package/v-track-master/v-track-master/README.md +0 -131
- package/v-track-master/v-track-master/babel.config.js +0 -25
- package/v-track-master/v-track-master/build/rollup.config.base.js +0 -14
- package/v-track-master/v-track-master/build/rollup.config.browser.js +0 -21
- package/v-track-master/v-track-master/build/rollup.config.es.js +0 -11
- package/v-track-master/v-track-master/docs/.babelrc +0 -5
- package/v-track-master/v-track-master/docs/App.vue +0 -61
- package/v-track-master/v-track-master/docs/assets/app.scss +0 -197
- package/v-track-master/v-track-master/docs/assets/index.scss +0 -10
- package/v-track-master/v-track-master/docs/assets/mixins.scss +0 -64
- package/v-track-master/v-track-master/docs/assets/normalize.scss +0 -349
- package/v-track-master/v-track-master/docs/components/button.vue +0 -15
- package/v-track-master/v-track-master/docs/components/code-snippet.vue +0 -72
- package/v-track-master/v-track-master/docs/dist/css/app.2e14d2d6.css +0 -4
- package/v-track-master/v-track-master/docs/dist/css/chunk-vendors.c687a9b2.css +0 -1
- package/v-track-master/v-track-master/docs/dist/favicon.ico +0 -0
- package/v-track-master/v-track-master/docs/dist/fonts/element-icons.535877f5.woff +0 -0
- package/v-track-master/v-track-master/docs/dist/fonts/element-icons.732389de.ttf +0 -0
- package/v-track-master/v-track-master/docs/dist/js/app.efe84ade.js +0 -2
- package/v-track-master/v-track-master/docs/dist/js/app.efe84ade.js.map +0 -1
- package/v-track-master/v-track-master/docs/dist/js/chunk-vendors.c94e27ba.js +0 -13
- package/v-track-master/v-track-master/docs/dist/js/chunk-vendors.c94e27ba.js.map +0 -1
- package/v-track-master/v-track-master/docs/index.html +0 -1
- package/v-track-master/v-track-master/docs/main.js +0 -78
- package/v-track-master/v-track-master/docs/pages/block-show.vue +0 -177
- package/v-track-master/v-track-master/docs/pages/custom-events.vue +0 -291
- package/v-track-master/v-track-master/docs/pages/home.vue +0 -269
- package/v-track-master/v-track-master/docs/pages/started.vue +0 -151
- package/v-track-master/v-track-master/docs/pages/track-view.vue +0 -234
- package/v-track-master/v-track-master/docs/tracks/action.js +0 -37
- package/v-track-master/v-track-master/docs/tracks/events.js +0 -140
- package/v-track-master/v-track-master/docs/tracks/index.js +0 -13
- package/v-track-master/v-track-master/docs/utils/date.js +0 -219
- package/v-track-master/v-track-master/docs/utils/dom.js +0 -26
- package/v-track-master/v-track-master/jest.config.js +0 -18
- package/v-track-master/v-track-master/package.json +0 -67
- package/v-track-master/v-track-master/postcss.config.js +0 -5
- package/v-track-master/v-track-master/public/favicon.ico +0 -0
- package/v-track-master/v-track-master/public/index.html +0 -18
- package/v-track-master/v-track-master/src/hooks/index.js +0 -217
- package/v-track-master/v-track-master/src/index.js +0 -79
- package/v-track-master/v-track-master/src/utils/debug.js +0 -13
- package/v-track-master/v-track-master/src/utils/dom.js +0 -73
- package/v-track-master/v-track-master/src/utils/helper.js +0 -122
- package/v-track-master/v-track-master/src/utils/vis-monitor.js +0 -183
- package/v-track-master/v-track-master/tests/helper.js +0 -37
- package/v-track-master/v-track-master/tests/unit/.eslintrc.js +0 -5
- package/v-track-master/v-track-master/tests/unit/track-click-async.spec.js +0 -52
- package/v-track-master/v-track-master/tests/unit/track-click-delay.spec.js +0 -46
- package/v-track-master/v-track-master/tests/unit/track-click-native.spec.js +0 -84
- package/v-track-master/v-track-master/tests/unit/track-click-param.spec.js +0 -55
- package/v-track-master/v-track-master/tests/unit/track-click.spec.js +0 -47
- package/v-track-master/v-track-master/tests/unit/track-custom-event-async.spec.js +0 -61
- package/v-track-master/v-track-master/tests/unit/track-custom-event-delay.spec.js +0 -59
- package/v-track-master/v-track-master/tests/unit/track-custom-event-param.spec.js +0 -68
- package/v-track-master/v-track-master/tests/unit/track-custom-event.spec.js +0 -55
- package/v-track-master/v-track-master/tests/unit/track-show-custom-scroll-once.spec.js +0 -62
- package/v-track-master/v-track-master/tests/unit/track-show-custom-scroll.spec.js +0 -62
- package/v-track-master/v-track-master/tests/unit/track-show-once.spec.js +0 -55
- package/v-track-master/v-track-master/tests/unit/track-show-param.spec.js +0 -51
- package/v-track-master/v-track-master/tests/unit/track-show.spec.js +0 -55
- package/v-track-master/v-track-master/tests/unit/track-view-vif.spec.js +0 -54
- package/v-track-master/v-track-master/tests/unit/track-view-watch-delay.spec.js +0 -63
- package/v-track-master/v-track-master/tests/unit/track-view-watch.spec.js +0 -61
- package/v-track-master/v-track-master/tests/unit/track-view.spec.js +0 -32
- package/v-track-master/v-track-master/vue.config.js +0 -45
- package/v-track-master/v-track-master/yarn.lock +0 -10186
- package/v-track-master.zip +0 -0
- package/vant-weapp-dev.zip +0 -0
- package/vue-autosize-input-master.zip +0 -0
- package/vue-awesome-dropdown-master.zip +0 -0
- package/vue-codemod-main.zip +0 -0
- package/vue-collapsed-main.zip +0 -0
- package/vue-input-code-master.zip +0 -0
- package/vue-jscodeshift-adapter-master.zip +0 -0
- package/vue-verify-master.zip +0 -0
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/.hbuilderx/launch.json +0 -11
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/App.vue +0 -17
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/README.md +0 -13
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/components/xiaolu-tree/code.js +0 -408
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/components/xiaolu-tree/css/icon.css +0 -342
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/components/xiaolu-tree/css/style.scss +0 -119
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/components/xiaolu-tree/search/index.vue +0 -66
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/components/xiaolu-tree/tree.vue +0 -70
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/main.js +0 -11
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/manifest.json +0 -78
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/pages/chooseUser/chooseUser.vue +0 -69
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/pages/chooseUser/data.js +0 -96
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/pages/index/index.vue +0 -122
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/pages.json +0 -25
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/changelog.md +0 -80
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/components/uni-popup/i18n/en.json +0 -7
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/components/uni-popup/i18n/index.js +0 -8
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json +0 -7
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json +0 -7
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/components/uni-popup/keypress.js +0 -45
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/components/uni-popup/popup.js +0 -26
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue +0 -90
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/components/uni-popup/uni-popup.vue +0 -496
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js +0 -45
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue +0 -313
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue +0 -143
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue +0 -187
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/package.json +0 -87
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-popup/readme.md +0 -17
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/changelog.md +0 -8
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/index.scss +0 -1
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/package.json +0 -82
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/readme.md +0 -4
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/styles/index.scss +0 -7
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/styles/setting/_border.scss +0 -3
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/styles/setting/_color.scss +0 -66
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/styles/setting/_radius.scss +0 -55
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/styles/setting/_space.scss +0 -56
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/styles/setting/_styles.scss +0 -167
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/styles/setting/_text.scss +0 -24
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/styles/setting/_variables.scss +0 -146
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/styles/tools/functions.scss +0 -19
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/theme.scss +0 -31
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-scss/variables.scss +0 -62
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-transition/changelog.md +0 -22
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-transition/components/uni-transition/createAnimation.js +0 -131
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-transition/components/uni-transition/uni-transition.vue +0 -286
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-transition/package.json +0 -84
- package/xiaolu-tree-plugin-main/xiaolu-tree-plugin-main/uni_modules/uni-transition/readme.md +0 -11
- package//346/224/266/347/274/251/344/270/212/347/256/255/345/244/264 (1).svg" +0 -1
- package//346/224/266/347/274/251/344/270/212/347/256/255/345/244/264.svg +0 -1
- package//346/224/266/347/274/251/344/270/213/347/256/255/345/244/264.svg +0 -1
- package//346/224/266/347/274/251/347/256/255/345/244/264.svg +0 -1
- package//346/226/260/345/273/272 /346/226/207/346/234/254/346/226/207/346/241/243 (2).txt" +0 -90
- package//346/226/260/345/273/272 /346/226/207/346/234/254/346/226/207/346/241/243 (3).txt" +0 -142
- package//346/226/260/345/273/272 /346/226/207/346/234/254/346/226/207/346/241/243 (3).zip +0 -0
- package//346/226/260/345/273/272 /346/226/207/346/234/254/346/226/207/346/241/243.txt" +0 -59
- package//351/227/256/345/217/267.svg +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./docs/App.vue?5ff7","webpack:///./docs/components/code-snippet.vue?2fbf","webpack:///./docs/App.vue?c519","webpack:///docs/App.vue","webpack:///./docs/App.vue?56fd","webpack:///./docs/App.vue","webpack:///./docs/pages/home.vue?1b60","webpack:///./docs/components/code-snippet.vue?beb6","webpack:///docs/components/code-snippet.vue","webpack:///./docs/components/code-snippet.vue?f86d","webpack:///./docs/components/code-snippet.vue","webpack:///./docs/components/button.vue?04f7","webpack:///docs/components/button.vue","webpack:///./docs/components/button.vue?e1d6","webpack:///./docs/components/button.vue","webpack:///docs/pages/home.vue","webpack:///./docs/pages/home.vue?abc2","webpack:///./docs/pages/home.vue","webpack:///./docs/pages/started.vue?2713","webpack:///docs/pages/started.vue","webpack:///./docs/pages/started.vue?30ab","webpack:///./docs/pages/started.vue","webpack:///./docs/pages/custom-events.vue?3e0c","webpack:///docs/pages/custom-events.vue","webpack:///./docs/pages/custom-events.vue?d644","webpack:///./docs/pages/custom-events.vue","webpack:///./docs/pages/track-view.vue?7ca7","webpack:///docs/pages/track-view.vue","webpack:///./docs/pages/track-view.vue?a27d","webpack:///./docs/pages/track-view.vue","webpack:///./docs/pages/block-show.vue?f0cb","webpack:///docs/pages/block-show.vue","webpack:///./docs/pages/block-show.vue?91b9","webpack:///./docs/pages/block-show.vue","webpack:///./dist/v-track.esm.js","webpack:///./docs/utils/date.js","webpack:///./docs/utils/dom.js","webpack:///./docs/tracks/action.js","webpack:///./docs/tracks/events.js","webpack:///./docs/tracks/index.js","webpack:///./docs/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","app","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_code_snippet_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_code_snippet_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default","Appvue_type_template_id_0791aaec_render","_vm","this","_h","$createElement","_c","_self","attrs","id","_m","_v","$route","meta","_e","keepAlive","staticRenderFns","staticClass","href","alt","src","Appvue_type_script_lang_js_","docs_Appvue_type_script_lang_js_","component","componentNormalizer","App","homevue_type_template_id_ab4b4114_render","to","center","type","title","closable","directives","rawName","expression","arg","modifiers","click","lang","code","trackClickSnippet","native","trackNativeClickSnippet","handleClickWithParam","item","trackClickWithParamSnippet","jsTrackClickWithParamSnippet","delay","trackClickDelaySnippet","jsTrackClickDelaySnippet","handleClickAsync","rest","async","trackClickAsyncSnippet","jsTrackClickAsyncSnippet","homevue_type_template_id_ab4b4114_staticRenderFns","code_snippetvue_type_template_id_4db4304e_render","_s","_l","domProps","innerHTML","code_snippetvue_type_template_id_4db4304e_staticRenderFns","code_snippetvue_type_script_lang_js_","props","String","computed","highlighted","lib_default","a","highlight","trim","lineCount","str","components_code_snippetvue_type_script_lang_js_","code_snippet_component","code_snippet","buttonvue_type_template_id_60c8796f_render","on","e","$emit","buttonvue_type_template_id_60c8796f_staticRenderFns","buttonvue_type_script_lang_js_","now_default","toString","components_buttonvue_type_script_lang_js_","button_component","components_button","homevue_type_script_lang_js_","components","Button","CodeSnippet","index","methods","handleClick","$message","success","handleNativeEvent","_ref","target","concat","stringify_default","handleClickDelay","_handleClickAsync","asyncToGenerator","regeneratorRuntime","mark","_callee","response","wrap","_context","prev","next","promise_default","resolve","setTimeout","sent","stop","arguments","pages_homevue_type_script_lang_js_","home_component","home","startedvue_type_template_id_3c1ba4f4_render","installSnippet","mainSnippet","eventsSnippet","componentSnippet","startedvue_type_template_id_3c1ba4f4_staticRenderFns","startedvue_type_script_lang_js_","pages_startedvue_type_script_lang_js_","started_component","started","custom_eventsvue_type_template_id_3314ed1c_render","custom-event","ButtonComponentSnippet","trackCustomEventSnippet","ButtonComponentWithParamSnippet","trackCustomEventWithParamSnippet","change","accordion","model","callback","$$v","activeName","trackCustomEventDelaySnippet","jsTrackCustomEventDelaySnippet","fetchRest","trackCustomEventAsyncSnippet","jsTrackCustomEventAsyncSnippet","custom_eventsvue_type_template_id_3314ed1c_staticRenderFns","custom_eventsvue_type_script_lang_js_","Math","random","substr","handleCustomEvent","handleCustomEventWithParam","handleChange","val","_fetchRest","pages_custom_eventsvue_type_script_lang_js_","custom_events_component","custom_events","track_viewvue_type_template_id_0b4ba76a_render","trackViewComponentSnippet","show","trackViewComponentVIfSnippet","jsTrackViewComponentVIfSnippet","rest1","watch","$event","trackViewComponentWatchSnippet","jsTrackViewComponentWatchSnippet","rest2","trackViewComponentWatchDelaySnippet","jsTrackViewComponentWatchDelaySnippet","track_viewvue_type_template_id_0b4ba76a_staticRenderFns","track_viewvue_type_script_lang_js_","_x","pages_track_viewvue_type_script_lang_js_","track_view_component","track_view","block_showvue_type_template_id_55f6236e_render","once","shadow","trackViewComponentOnceSnippet","ref","viewport","viewportTrackViewComponentSnippet1","percent","viewportTrackViewComponentSnippet2","block_showvue_type_template_id_55f6236e_staticRenderFns","block_showvue_type_script_lang_js_trackViewComponentSnippet","block_showvue_type_script_lang_js_","pages_block_showvue_type_script_lang_js_","block_show_component","block_show","_typeof","obj","iterator","constructor","_classCallCheck","instance","Constructor","TypeError","_defineProperties","descriptor","configurable","writable","_createClass","protoProps","staticProps","_defineProperty","_objectSpread","source","ownKeys","keys","getOwnPropertySymbols","filter","sym","getOwnPropertyDescriptor","forEach","_objectWithoutPropertiesLoose","excluded","sourceKeys","indexOf","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","Array","isArray","arr2","iter","from","_arr","_n","_d","undefined","_i","done","err","isFun","v","isUndef","isDef","zipArray","values","debounce","fn","timeoutId","ms","_this","_len","args","_key","clearTimeout","_exactMatch","mdfs","vals","every","includes","_partialMatch","some","sameVnode","b","tag","isComment","exactlySameVnode","vnode","oldVnode","oldCh","children","ch","text","checkFun","Error","isElement","ele","nodeType","getStylePropValue","prop","getComputedStyle","getPropertyValue","isInViewport","rect","width","height","bottom","right","top","innerHeight","left","innerWidth","isVisible","document","parentNode","parent","visibility","display","VisMonitor","refwin","refWin","prevPerc","listeners","removeScrollLisener","init","listener","visibilitychange","$on","addEventListener","removeEventListener","win","getBoundingClientRect","offsetHeight","offsetWidth","evt","cbk","queue","_this2","$off","_this3","_len2","_key2","sub","view","vh","vw","perc","MODIFIERS","_watcher","el","exp","ctt","ops","$unwatch","$watch","nv","ov","immediate","contains","_ref2","_","__","events","context","componentInstance","tck","watcher","exactMatch","partialMatch","$timer","_exp","pop","visible","$el","_events$id","_zipArray","_zipArray2","_args","_tck","custom","$visMonitor","vm","$refs","$once","_events$id2","_zipArray3","_zipArray4","_args2","_exp2","reverse","$listener","_args3","_keys","_fn","_exp3","eventName","_zipArray5","_zipArray6","_events$id3","_ref3","_len3","_key3","updated","_len4","_key4","unbind","destroy","VTrack","installed","Vue","trackEvents","_ref$trackEnable","trackEnable","UVPV","TONP","TRACK_TONP","ctx","et","dt","Date","now","directive","_hooks$bind","componentUpdated","_hooks$updated","_hooks$unbind","render","h","style","mixin","PAGE_ENTER_TIME","created","onbeforeunload","beforeRouteEnter","beforeRouteUpdate","beforeRouteLeave","v_track_esm","twoDigits","fourDigits","token","masks","default","date","datetime","time","year","enDate","cnDate","pad","len","formatFlags","yyyy","dateObj","getFullYear","yy","M","getMonth","MM","getDate","dd","getHours","hh","H","HH","getMinutes","mm","getSeconds","ss","format","mask","isNaN","getTime","replace","$0","parseFlags","da","cent","month","day","hour","minute","second","createFragment","tableData","keys_default","reduce","list","k","trs","map","join","trackAction","addtional","objectSpread","action_time","lib_message_default","message","customClass","lib_notification_default","dangerouslyUseHTMLString","position","stt","18015","source_page","18016","_ref4","_ref5","18017","_ref6","18018","_ref7","18019","_ref8","_ref9","_ref10","18020","_ref11","active_name","18021","_ref12","18022","_ref13","description","18023","_ref14","18025","_ref15","18026","_ref16","18027","_ref17","18028","_ref18","18029","_ref19","18030","_ref20","tracks","use","VueRouter","lib_alert_default","lib_card_default","lib_collapse_default","lib_collapse_item_default","VueTrack","$notify","router","routes","path","Home","Started","CustomEvents","TrackView","BlockShow","redirect"],"mappings":"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","file":"js/app.efe84ade.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"dist/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"fc11\",\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code-snippet.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code-snippet.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_vm._m(0),_vm._v(\" \"),_c('keep-alive',[(_vm.$route.meta.keepAlive)?_c('router-view'):_vm._e()],1),_vm._v(\" \"),(!_vm.$route.meta.keepAlive)?_c('router-view'):_vm._e(),_vm._v(\" \"),_vm._m(1)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',[_c('h1',[_vm._v(\"v-track\")]),_vm._v(\" \"),_c('div',{staticClass:\"command\"},[_vm._v(\"yarn add v-track or npm add v-track --save\")]),_vm._v(\" \"),_c('nav',[_c('a',{attrs:{\"href\":\"https://travis-ci.org/l-hammer/v-track\"}},[_c('img',{attrs:{\"alt\":\"Travis (.org) branch\",\"src\":\"https://img.shields.io/travis/l-hammer/v-track/master.svg?logoColor=%23666666&style=flat-square\"}})]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://unpkg.com/v-track/dist/v-track.min.js\"}},[_c('img',{attrs:{\"src\":\"http://img.badgesize.io/https://unpkg.com/v-track/dist/v-track.min.js?compression=gzip&style=flat-square\",\"alt\":\"Gzip Size\"}})]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://www.npmjs.com/package/v-track\"}},[_c('img',{attrs:{\"src\":\"https://img.shields.io/npm/v/v-track.svg?colorB=brightgreen&style=flat-square\"}})]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://github.com/l-hammer/v-track/tree/master/tests/unit\"}},[_c('img',{attrs:{\"src\":\"https://img.shields.io/badge/tested_with-jest-99424f.svg?style=flat-square\"}})]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"alt\":\"hit count\"}},[_c('img',{attrs:{\"src\":\"http://hits.dwyl.io/l-hammer/v-track.svg\"}})]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"alt\":\"downloads\"}},[_c('img',{attrs:{\"src\":\"https://img.shields.io/npm/dt/v-track.svg?style=flat-square\"}})]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://github.com/l-hammer/v-track\"}},[_c('img',{attrs:{\"src\":\"https://img.shields.io/github/stars/l-hammer/v-track.svg?style=social&label=Star\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"description\"},[_vm._v(\"\\n 🕹一个基于Vue指令实现的埋点插件~\\n \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"footer\"},[_c('div',{staticClass:\"section-content mini\"},[_vm._v(\"\\n Copyright © 2019-present LHammer\\n \")])])}]\n\nexport { render, staticRenderFns }","<template>\n <div id=\"app\">\n <header>\n <h1>v-track</h1>\n <div class=\"command\">yarn add v-track or npm add v-track --save</div>\n <nav>\n <a href=\"https://travis-ci.org/l-hammer/v-track\"\n ><img\n alt=\"Travis (.org) branch\"\n src=\"https://img.shields.io/travis/l-hammer/v-track/master.svg?logoColor=%23666666&style=flat-square\"\n /></a>\n <a href=\"https://unpkg.com/v-track/dist/v-track.min.js\"\n ><img\n src=\"http://img.badgesize.io/https://unpkg.com/v-track/dist/v-track.min.js?compression=gzip&style=flat-square\"\n alt=\"Gzip Size\"\n /></a>\n <a href=\"https://www.npmjs.com/package/v-track\"\n ><img\n src=\"https://img.shields.io/npm/v/v-track.svg?colorB=brightgreen&style=flat-square\"\n /></a>\n <a href=\"https://github.com/l-hammer/v-track/tree/master/tests/unit\"\n ><img\n src=\"https://img.shields.io/badge/tested_with-jest-99424f.svg?style=flat-square\"\n /></a>\n <a href=\"javascript:void(0);\" alt=\"hit count\"\n ><img src=\"http://hits.dwyl.io/l-hammer/v-track.svg\"\n /></a>\n <a href=\"javascript:void(0);\" alt=\"downloads\"\n ><img\n src=\"https://img.shields.io/npm/dt/v-track.svg?style=flat-square\"\n /></a>\n <a href=\"https://github.com/l-hammer/v-track\"\n ><img\n src=\"https://img.shields.io/github/stars/l-hammer/v-track.svg?style=social&label=Star\"\n /></a>\n </nav>\n <div class=\"description\">\n 🕹一个基于Vue指令实现的埋点插件~\n </div>\n </header>\n\n <keep-alive>\n <router-view v-if=\"$route.meta.keepAlive\"></router-view>\n </keep-alive>\n <router-view v-if=\"!$route.meta.keepAlive\"></router-view>\n\n <section class=\"footer\">\n <div class=\"section-content mini\">\n Copyright © 2019-present LHammer\n </div>\n </section>\n </div>\n</template>\n\n<script>\nexport default {};\n</script>\n\n<style lang=\"scss\">\n@import \"./assets/index.scss\";\n</style>\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=0791aaec&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page-home page\"},[_c('section',{staticClass:\"nav\"},[_c('router-link',{attrs:{\"to\":{ name: 'STARTED' }}},[_vm._v(\"\\n 快速开始\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'HOME' }}},[_vm._v(\"\\n 事件行为埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'CUSTOM_EVENTS' }}},[_vm._v(\"\\n 自定义事件埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'TRACK_VIEW' }}},[_vm._v(\"\\n 页面行为埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'BLOCK_SHOW' }}},[_vm._v(\"\\n 区域展现埋点\\n \")]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://github.com/l-hammer/v-track/issues\"}},[_vm._v(\"打开一个 issue\")])],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这是一个点击事件行为的埋点\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content\"},[_c('div',{directives:[{name:\"track\",rawName:\"v-track:18015.click\",value:(_vm.handleClick),expression:\"handleClick\",arg:\"18015\",modifiers:{\"click\":true}}],staticClass:\"track-button\"},[_vm._v(\"\\n click me\\n \")])])],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackClickSnippet}})],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"通过增加 .native 修饰符,我们可以监听组件原生click事件行为的埋点\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content\"},[_c('Button',{directives:[{name:\"track\",rawName:\"v-track:18015.click.native\",value:(_vm.handleNativeEvent),expression:\"handleNativeEvent\",arg:\"18015\",modifiers:{\"click\":true,\"native\":true}}]})],1)],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackNativeClickSnippet}})],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这个一个带参数点击事件行为的埋点,默认最后一个参数为 event 事件对象\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content\"},[_c('div',{directives:[{name:\"track\",rawName:\"v-track:18016.click\",value:({ handleClickWithParam: _vm.handleClickWithParam, item: _vm.item }),expression:\"{ handleClickWithParam, item }\",arg:\"18016\",modifiers:{\"click\":true}}],staticClass:\"track-button\"},[_vm._v(\"\\n click me\\n \")])])],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackClickWithParamSnippet}}),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"js\",\"code\":_vm.jsTrackClickWithParamSnippet}})],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这是一个发生在事件之后的埋点,默认先执行埋点再执行事件,如示例所示:index初始值为0,点击事件会将index加1,所以埋点获取到的index值应该为1,依次点击则累加\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content\"},[_c('div',{directives:[{name:\"track\",rawName:\"v-track:18017.click.delay\",value:(_vm.handleClickDelay),expression:\"handleClickDelay\",arg:\"18017\",modifiers:{\"click\":true,\"delay\":true}}],staticClass:\"track-button\"},[_vm._v(\"\\n click me\\n \")])])],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackClickDelaySnippet}}),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"js\",\"code\":_vm.jsTrackClickDelaySnippet}})],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这是一个有异步行为的事件埋点,如示例所示:rest 初始值为 null,点击事件会 fetch 为 success,所以埋点获取到的 rest 值应该为 success\",\"closable\":false}}),_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"warning\",\"title\":\"备注:①修饰符 async 是基于 Vue 实例提供的 vm.$watch 方法,所以只有在返回结果 rest 发生变化时才会触发埋点;②当有多个参数时,.async 会把最后一个参数当做监听对象\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content\"},[_c('div',{directives:[{name:\"track\",rawName:\"v-track:18018.click.async\",value:({ handleClickAsync: _vm.handleClickAsync, rest: _vm.rest }),expression:\"{ handleClickAsync, rest }\",arg:\"18018\",modifiers:{\"click\":true,\"async\":true}}],staticClass:\"track-button\"},[_vm._v(\"\\n click me\\n \")])])],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackClickAsyncSnippet}}),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"js\",\"code\":_vm.jsTrackClickAsyncSnippet}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"code-snippet\"},[_c('div',{staticClass:\"language\"},[_vm._v(_vm._s(_vm.lang))]),_vm._v(\" \"),_c('div',{staticClass:\"line-numbers\"},_vm._l((_vm.lineCount),function(n){return _c('div',{key:n,staticClass:\"line-number\"},[_vm._v(_vm._s(n))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"render\",domProps:{\"innerHTML\":_vm._s(_vm.result)}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"code-snippet\">\n <div class=\"language\">{{ lang }}</div>\n <div class=\"line-numbers\">\n <div class=\"line-number\" v-for=\"n in lineCount\" :key=\"n\">{{ n }}</div>\n </div>\n <div class=\"render\" v-html=\"result\"></div>\n </div>\n</template>\n\n<script>\nimport hljs from \"highlight.js\";\nexport default {\n name: \"code-snippet\",\n props: {\n code: String,\n lang: String\n },\n computed: {\n result() {\n const highlighted = hljs.highlight(this.lang, this.code.trim());\n return highlighted.value;\n },\n lineCount() {\n const str = this.result;\n let length = 0;\n for (var i = 0; i < str.length; ++i) {\n if (str[i] === \"\\n\") {\n length++;\n }\n }\n return length + 1;\n }\n }\n};\n</script>\n\n<style lang=\"scss\">\n.code-snippet {\n @include h-box;\n background: #2e3440;\n border-radius: 3px;\n font-family: \"Roboto Mono\", monospace;\n font-size: 10pt;\n overflow: auto;\n position: relative;\n .line-numbers,\n .render {\n color: #d8dee9;\n padding: 20px;\n padding-right: 0;\n }\n .line-numbers {\n background: #2e3440;\n color: $md-grey-400;\n border-radius: 2px 0 0 2px;\n line-height: 18px;\n }\n .render {\n white-space: pre;\n line-height: 18px;\n }\n .language {\n position: absolute;\n top: 0;\n right: 0;\n color: $md-grey-400;\n padding: 4px 4px 6px 6px;\n border-radius: 0 0 0 2px;\n }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code-snippet.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code-snippet.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./code-snippet.vue?vue&type=template&id=4db4304e&\"\nimport script from \"./code-snippet.vue?vue&type=script&lang=js&\"\nexport * from \"./code-snippet.vue?vue&type=script&lang=js&\"\nimport style0 from \"./code-snippet.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"track-button\",on:{\"click\":function (e) { return _vm.$emit('custom-event', _vm.item, e); }}},[_vm._v(\"\\n click me\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"track-button\" @click=\"e => $emit('custom-event', item, e)\">\n click me\n </div>\n</template>\n\n<script>\nexport default {\n computed: {\n item: () => ({\n id: Date.now().toString(36)\n })\n }\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./button.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./button.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./button.vue?vue&type=template&id=60c8796f&\"\nimport script from \"./button.vue?vue&type=script&lang=js&\"\nexport * from \"./button.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"page-home page\">\n <section class=\"nav\">\n <router-link :to=\"{ name: 'STARTED' }\">\n 快速开始\n </router-link>\n <router-link :to=\"{ name: 'HOME' }\">\n 事件行为埋点\n </router-link>\n <router-link :to=\"{ name: 'CUSTOM_EVENTS' }\">\n 自定义事件埋点\n </router-link>\n <router-link :to=\"{ name: 'TRACK_VIEW' }\">\n 页面行为埋点\n </router-link>\n <router-link :to=\"{ name: 'BLOCK_SHOW' }\">\n 区域展现埋点\n </router-link>\n <a href=\"https://github.com/l-hammer/v-track/issues\">打开一个 issue</a>\n </section>\n\n <!----------------------- DEMO 1 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这是一个点击事件行为的埋点\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content\">\n <div class=\"track-button\" v-track:18015.click=\"handleClick\">\n click me\n </div>\n </div>\n </section>\n\n <section class=\"snippets\">\n <CodeSnippet class=\"snippet\" lang=\"html\" :code=\"trackClickSnippet\" />\n </section>\n\n <!----------------------- DEMO 2 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"通过增加 .native 修饰符,我们可以监听组件原生click事件行为的埋点\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content\">\n <Button v-track:18015.click.native=\"handleNativeEvent\"></Button>\n </div>\n </section>\n\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"trackNativeClickSnippet\"\n />\n </section>\n\n <!----------------------- DEMO 3 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这个一个带参数点击事件行为的埋点,默认最后一个参数为 event 事件对象\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content\">\n <div\n class=\"track-button\"\n v-track:18016.click=\"{ handleClickWithParam, item }\"\n >\n click me\n </div>\n </div>\n </section>\n\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"trackClickWithParamSnippet\"\n />\n <CodeSnippet\n class=\"snippet\"\n lang=\"js\"\n :code=\"jsTrackClickWithParamSnippet\"\n />\n </section>\n\n <!----------------------- DEMO 4 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这是一个发生在事件之后的埋点,默认先执行埋点再执行事件,如示例所示:index初始值为0,点击事件会将index加1,所以埋点获取到的index值应该为1,依次点击则累加\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content\">\n <div class=\"track-button\" v-track:18017.click.delay=\"handleClickDelay\">\n click me\n </div>\n </div>\n </section>\n\n <section class=\"snippets\">\n <CodeSnippet class=\"snippet\" lang=\"html\" :code=\"trackClickDelaySnippet\" />\n <CodeSnippet class=\"snippet\" lang=\"js\" :code=\"jsTrackClickDelaySnippet\" />\n </section>\n\n <!----------------------- DEMO 5 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这是一个有异步行为的事件埋点,如示例所示:rest 初始值为 null,点击事件会 fetch 为 success,所以埋点获取到的 rest 值应该为 success\"\n :closable=\"false\"\n >\n </el-alert\n ><el-alert\n center\n type=\"warning\"\n title=\"备注:①修饰符 async 是基于 Vue 实例提供的 vm.$watch 方法,所以只有在返回结果 rest 发生变化时才会触发埋点;②当有多个参数时,.async 会把最后一个参数当做监听对象\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content\">\n <div\n class=\"track-button\"\n v-track:18018.click.async=\"{ handleClickAsync, rest }\"\n >\n click me\n </div>\n </div>\n </section>\n\n <section class=\"snippets\">\n <CodeSnippet class=\"snippet\" lang=\"html\" :code=\"trackClickAsyncSnippet\" />\n <CodeSnippet class=\"snippet\" lang=\"js\" :code=\"jsTrackClickAsyncSnippet\" />\n </section>\n </div>\n</template>\n\n<script>\nimport CodeSnippet from \"../components/code-snippet\";\nimport Button from \"../components/button\";\n\nconst trackClickSnippet = `\n<div class=\"track-button\" v-track:18015.click=\"handleClick\">click me</div>\n`;\nconst trackNativeClickSnippet = `\n<Button v-track:18015.click.native=\"handleNativeEvent\"></Button>\n`;\nconst trackClickWithParamSnippet = `\n<div class=\"track-button\" v-track:18016.click=\"{ handleClickWithParam, item }\">click me</div>\n`;\nconst jsTrackClickWithParamSnippet = `\nexport default {\n data: () => ({\n item: {\n id: Date.now().toString(36)\n },\n })\n}\n`;\nconst trackClickDelaySnippet = `\n<div class=\"track-button\" v-track:18017.click.delay=\"handleClickDelay\">click me</div>\n`;\nconst jsTrackClickDelaySnippet = `\nexport default {\n data() {\n return {\n index: 0\n };\n },\n methods: {\n handleClickDelay() {\n this.index++;\n },\n }\n}\n`;\nconst trackClickAsyncSnippet = `\n<div class=\"track-button\" v-track:18018.click.async=\"handleClickAsync\">click me</div>\n`;\nconst jsTrackClickAsyncSnippet = `\nexport default {\n data() {\n return {\n rest: null\n };\n },\n methods: {\n async handleClickAsync() {\n const response = await new Promise(resolve => {\n setTimeout(() => {\n resolve({ data: \"success\" });\n }, 300);\n });\n\n this.rest = response.data;\n }\n }\n}\n`;\n\nexport default {\n name: \"Home\",\n components: {\n Button,\n CodeSnippet\n },\n data() {\n return {\n trackClickSnippet,\n trackNativeClickSnippet,\n trackClickWithParamSnippet,\n jsTrackClickWithParamSnippet,\n trackClickDelaySnippet,\n trackClickAsyncSnippet,\n jsTrackClickDelaySnippet,\n jsTrackClickAsyncSnippet,\n item: {\n id: Date.now().toString(36)\n },\n index: 0,\n rest: null\n };\n },\n methods: {\n handleClick() {\n this.$message.success(\"事件执行成功\");\n },\n handleNativeEvent() {\n this.$message.success(\"组件原生事件执行成功\");\n },\n handleClickWithParam(item, { target }) {\n this.$message.success(\n `事件执行成功,参数为${JSON.stringify(item)}--${target}`\n );\n },\n handleClickDelay() {\n this.index++;\n },\n async handleClickAsync() {\n const response = await new Promise(resolve => {\n setTimeout(() => {\n resolve({ data: \"success\" });\n }, 300);\n });\n\n if (this.rest === response.data) {\n this.$message.success(\n \"异步事件返回成功,但返回结果和上一次相等,埋点不会上报\"\n );\n } else {\n this.rest = response.data;\n this.$message.success(\"异步事件返回成功\");\n }\n }\n }\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./home.vue?vue&type=template&id=ab4b4114&\"\nimport script from \"./home.vue?vue&type=script&lang=js&\"\nexport * from \"./home.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page-started page\"},[_c('section',{staticClass:\"nav\"},[_c('router-link',{attrs:{\"to\":{ name: 'HOME' }}},[_vm._v(\"\\n 返回\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'HOME' }}},[_vm._v(\"\\n 事件行为埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'CUSTOM_EVENTS' }}},[_vm._v(\"\\n 自定义事件埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'TRACK_VIEW' }}},[_vm._v(\"\\n 页面行为埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'BLOCK_SHOW' }}},[_vm._v(\"\\n 区域展现埋点\\n \")]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://github.com/l-hammer/v-track/issues\"}},[_vm._v(\"打开一个 issue\")])],1),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"code\":_vm.installSnippet,\"lang\":\"shell\"}}),_vm._v(\" \"),_c('div',{staticClass:\"plus\"},[_vm._v(\"+\")]),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"code\":_vm.mainSnippet,\"lang\":\"js\"}}),_vm._v(\" \"),_c('div',{staticClass:\"plus\"},[_vm._v(\"+\")]),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"code\":_vm.eventsSnippet,\"lang\":\"js\"}}),_vm._v(\" \"),_c('div',{staticClass:\"plus\"},[_vm._v(\"+\")]),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"code\":_vm.componentSnippet,\"lang\":\"html\"}})],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"snippets\"},[_c('div',{staticClass:\"section-content small\"},[_vm._v(\"\\n v-track通过\\n \"),_c('a',{attrs:{\"href\":\"https://cn.vuejs.org/v2/guide/custom-directive.html\"}},[_vm._v(\"Vue 自定义指令\")]),_vm._v(\"的方式将埋点代码与业务代码完全解耦,完整示例可参考\\n \"),_c('a',{attrs:{\"href\":\"https://github.com/l-hammer/v-track/tree/master\"}},[_vm._v(\"GitHub\")])])])}]\n\nexport { render, staticRenderFns }","<template>\n <div class=\"page-started page\">\n <section class=\"nav\">\n <router-link :to=\"{ name: 'HOME' }\">\n 返回\n </router-link>\n <router-link :to=\"{ name: 'HOME' }\">\n 事件行为埋点\n </router-link>\n <router-link :to=\"{ name: 'CUSTOM_EVENTS' }\">\n 自定义事件埋点\n </router-link>\n <router-link :to=\"{ name: 'TRACK_VIEW' }\">\n 页面行为埋点\n </router-link>\n <router-link :to=\"{ name: 'BLOCK_SHOW' }\">\n 区域展现埋点\n </router-link>\n <a href=\"https://github.com/l-hammer/v-track/issues\">打开一个 issue</a>\n </section>\n\n <section class=\"snippets\">\n <div class=\"section-content small\">\n v-track通过\n <a href=\"https://cn.vuejs.org/v2/guide/custom-directive.html\"\n >Vue 自定义指令</a\n >的方式将埋点代码与业务代码完全解耦,完整示例可参考\n <a href=\"https://github.com/l-hammer/v-track/tree/master\">GitHub</a>\n </div>\n </section>\n\n <section class=\"snippets\">\n <CodeSnippet class=\"snippet\" :code=\"installSnippet\" lang=\"shell\" />\n <div class=\"plus\">+</div>\n <CodeSnippet class=\"snippet\" :code=\"mainSnippet\" lang=\"js\" />\n <div class=\"plus\">+</div>\n <CodeSnippet class=\"snippet\" :code=\"eventsSnippet\" lang=\"js\" />\n <div class=\"plus\">+</div>\n <CodeSnippet class=\"snippet\" :code=\"componentSnippet\" lang=\"html\" />\n </section>\n </div>\n</template>\n\n<script>\nimport CodeSnippet from \"../components/code-snippet\";\n\nconst installSnippet = `\n# YARN\n$ yarn add v-track\n\n# NPM\n$ npm install v-track --save\n`;\nconst mainSnippet = `\nimport Vue from \"vue\";\nimport VTrack from \"v-track\";\nimport trackEvents from \"./track-events\";\n\nVue.use(VTrack, {\n trackEvents, // 埋点事件对象\n trackEnable: {\n UVPV: true, // 是否开启UVPV统计,v0.8.3新增routeUpdate,即在当前路由参数发生改变时埋点,默认为false\n TONP: true // 是否开启页面停留时长统计,默认为false\n }\n})\n`;\nconst eventsSnippet = `\nimport trackAction from \"./action\"; // 自定义埋点上报的方法\n\nexport default {\n /**\n * @name UVPV 固定名称不支持修改\n * @desc UV、PV埋点\n * @param {Object} context 当前上下文\n */\n UVPV(_) {\n trackAction(\"1\");\n },\n /**\n * @name TONP 固定名称不支持修改\n * @desc 页面停留时间埋点(Time on Page)\n * @param {Object} context 当前上下文\n * @param {Timestamp} et 进入页面时间\n * @param {Timestamp} dt 离开页面时间\n */\n TONP(_, { et, dt }) {\n trackAction(\"2\", {\n stt: dt - et\n });\n },\n /**\n * @param {Object} context 当前上下文\n * @param {Object} item 事件参数\n * @param {Object} event 事件对象\n */\n 18015(\n {\n $route: { name }\n },\n { id },\n { target }\n ) {\n trackAction(\"18015\", {\n id,\n source_page: name,\n target\n });\n },\n};\n`;\nconst componentSnippet = `\n<!-- 页面行为埋点(track-view为v-track全局注册的组件) -->\n<track-view v-track:18015></track-view>\n<track-view v-track:18015.watch=\"{ result }\"></track-view>\n<track-view v-track:18015.watch.delay=\"{ result }\"></track-view>\n<track-view v-if=\"result\" v-track:18015></track-view>\n\n<!-- 事件行为埋点(DOM) -->\n<div v-track:18015.click=\"handleClick\"></div>\n<div v-track:18015.click=\"{ handleClick, item, index }\"></div>\n<div v-track:18015.click.async=\"{ handleSearch, rest }\"></div>\n<div v-track:18015.click.delay=\"handleClick\"></div>\n\n<!-- 事件行为埋点(组件) -->\n<cmp v-track:18015.click=\"handleClick\"></cmp>\n<cmp v-track:18015.[自定义事件名]=\"handleSearch\"></cmp>\n<cmp v-track:18015.[自定义事件名].delay=\"handleSearch\"></cmp>\n<cmp v-track:18015.[自定义事件名].async=\"{ handleSearch, rest }\"></cmp>\n\n<!-- 区域展现埋点(block 可以是 DOM 或者组件) -->\n<block v-track:18015.show></block>\n<block v-track:18015.show.once></block>\n<block v-track:18015.show.custom=\"{ ref: 'scroll' }\"></block>\n<block v-track:18015.show.custom.once=\"{ ref: 'scroll' }\"></block>\n`;\n\nexport default {\n name: \"Started\",\n components: {\n CodeSnippet\n },\n data() {\n return {\n installSnippet,\n mainSnippet,\n eventsSnippet,\n componentSnippet\n };\n }\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./started.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./started.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./started.vue?vue&type=template&id=3c1ba4f4&\"\nimport script from \"./started.vue?vue&type=script&lang=js&\"\nexport * from \"./started.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page-home page\"},[_c('section',{staticClass:\"nav\"},[_c('router-link',{attrs:{\"to\":{ name: 'STARTED' }}},[_vm._v(\"\\n 快速开始\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'HOME' }}},[_vm._v(\"\\n 事件行为埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'HOME' }}},[_vm._v(\"\\n 返回\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'TRACK_VIEW' }}},[_vm._v(\"\\n 页面行为埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'BLOCK_SHOW' }}},[_vm._v(\"\\n 区域展现埋点\\n \")]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://github.com/l-hammer/v-track/issues\"}},[_vm._v(\"打开一个 issue\")])],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这是一个自定义事件行为埋点\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content\"},[_c('Button',{directives:[{name:\"track\",rawName:\"v-track:18015.custom-event\",value:(_vm.handleCustomEvent),expression:\"handleCustomEvent\",arg:\"18015\",modifiers:{\"custom-event\":true}}]})],1)],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.ButtonComponentSnippet}}),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackCustomEventSnippet}})],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这是一个有带参数的自定义事件埋点\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content\"},[_c('Button',{directives:[{name:\"track\",rawName:\"v-track:18019.custom-event\",value:(_vm.handleCustomEventWithParam),expression:\"handleCustomEventWithParam\",arg:\"18019\",modifiers:{\"custom-event\":true}}]})],1)],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.ButtonComponentWithParamSnippet}}),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackCustomEventWithParamSnippet}})],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这是一个发生在自定义事件之后的埋点,默认先执行埋点再执行自定义事件。如示例所示:activeName初始值为Feedback,自定义事件会更新该值,所以埋点获取到activeName的值应为当前激活面板的name\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content collapse-wrapper\"},[_c('el-collapse',{directives:[{name:\"track\",rawName:\"v-track:18020.change.delay\",value:(_vm.handleChange),expression:\"handleChange\",arg:\"18020\",modifiers:{\"change\":true,\"delay\":true}}],attrs:{\"accordion\":\"\"},model:{value:(_vm.activeName),callback:function ($$v) {_vm.activeName=$$v},expression:\"activeName\"}},[_c('el-collapse-item',{attrs:{\"title\":\"反馈 Feedback\",\"name\":\"Feedback\"}},[_c('div',[_vm._v(\"\\n 控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;\\n \")]),_vm._v(\" \"),_c('div',[_vm._v(\"页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。\")])]),_vm._v(\" \"),_c('el-collapse-item',{attrs:{\"title\":\"效率 Efficiency\",\"name\":\"Efficiency\"}},[_c('div',[_vm._v(\"简化流程:设计简洁直观的操作流程;\")]),_vm._v(\" \"),_c('div',[_vm._v(\"\\n 清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;\\n \")]),_vm._v(\" \"),_c('div',[_vm._v(\"\\n 帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。\\n \")])]),_vm._v(\" \"),_c('el-collapse-item',{attrs:{\"title\":\"可控 Controllability\",\"name\":\"Controllability\"}},[_c('div',[_vm._v(\"\\n 用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;\\n \")]),_vm._v(\" \"),_c('div',[_vm._v(\"\\n 结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。\\n \")])])],1)],1)],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackCustomEventDelaySnippet}}),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"js\",\"code\":_vm.jsTrackCustomEventDelaySnippet}})],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这是一个有异步行为的自定义事件埋点。如示例所示:rest初始值为null,自定义事件会fetch为success,所以埋点获取到的rest值应该为success\",\"closable\":false}}),_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"warning\",\"title\":\"备注:同普通DOM事件埋点一样,只有在 rest 发生变化时才会触发埋点\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content\"},[_c('Button',{directives:[{name:\"track\",rawName:\"v-track:18021.custom-event.async\",value:({ fetchRest: _vm.fetchRest, rest: _vm.rest }),expression:\"{ fetchRest, rest }\",arg:\"18021\",modifiers:{\"custom-event\":true,\"async\":true}}]})],1)],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackCustomEventAsyncSnippet}}),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"js\",\"code\":_vm.jsTrackCustomEventAsyncSnippet}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"page-home page\">\n <section class=\"nav\">\n <router-link :to=\"{ name: 'STARTED' }\">\n 快速开始\n </router-link>\n <router-link :to=\"{ name: 'HOME' }\">\n 事件行为埋点\n </router-link>\n <router-link :to=\"{ name: 'HOME' }\">\n 返回\n </router-link>\n <router-link :to=\"{ name: 'TRACK_VIEW' }\">\n 页面行为埋点\n </router-link>\n <router-link :to=\"{ name: 'BLOCK_SHOW' }\">\n 区域展现埋点\n </router-link>\n <a href=\"https://github.com/l-hammer/v-track/issues\">打开一个 issue</a>\n </section>\n\n <!----------------------- DEMO 1 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这是一个自定义事件行为埋点\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content\">\n <Button v-track:18015.custom-event=\"handleCustomEvent\"></Button>\n </div>\n </section>\n\n <section class=\"snippets\">\n <CodeSnippet class=\"snippet\" lang=\"html\" :code=\"ButtonComponentSnippet\" />\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"trackCustomEventSnippet\"\n />\n </section>\n\n <!----------------------- DEMO 2 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这是一个有带参数的自定义事件埋点\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content\">\n <Button\n v-track:18019.custom-event=\"handleCustomEventWithParam\"\n ></Button>\n </div>\n </section>\n\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"ButtonComponentWithParamSnippet\"\n />\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"trackCustomEventWithParamSnippet\"\n />\n </section>\n\n <!----------------------- DEMO 3 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这是一个发生在自定义事件之后的埋点,默认先执行埋点再执行自定义事件。如示例所示:activeName初始值为Feedback,自定义事件会更新该值,所以埋点获取到activeName的值应为当前激活面板的name\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content collapse-wrapper\">\n <el-collapse\n accordion\n v-model=\"activeName\"\n v-track:18020.change.delay=\"handleChange\"\n >\n <el-collapse-item title=\"反馈 Feedback\" name=\"Feedback\">\n <div>\n 控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;\n </div>\n <div>页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</div>\n </el-collapse-item>\n <el-collapse-item title=\"效率 Efficiency\" name=\"Efficiency\">\n <div>简化流程:设计简洁直观的操作流程;</div>\n <div>\n 清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;\n </div>\n <div>\n 帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。\n </div>\n </el-collapse-item>\n <el-collapse-item title=\"可控 Controllability\" name=\"Controllability\">\n <div>\n 用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;\n </div>\n <div>\n 结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。\n </div>\n </el-collapse-item>\n </el-collapse>\n </div>\n </section>\n\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"trackCustomEventDelaySnippet\"\n />\n <CodeSnippet\n class=\"snippet\"\n lang=\"js\"\n :code=\"jsTrackCustomEventDelaySnippet\"\n />\n </section>\n\n <!----------------------- DEMO 4 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这是一个有异步行为的自定义事件埋点。如示例所示:rest初始值为null,自定义事件会fetch为success,所以埋点获取到的rest值应该为success\"\n :closable=\"false\"\n >\n </el-alert\n ><el-alert\n center\n type=\"warning\"\n title=\"备注:同普通DOM事件埋点一样,只有在 rest 发生变化时才会触发埋点\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content\">\n <Button v-track:18021.custom-event.async=\"{ fetchRest, rest }\"></Button>\n </div>\n </section>\n\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"trackCustomEventAsyncSnippet\"\n />\n <CodeSnippet\n class=\"snippet\"\n lang=\"js\"\n :code=\"jsTrackCustomEventAsyncSnippet\"\n />\n </section>\n </div>\n</template>\n\n<script>\nimport CodeSnippet from \"../components/code-snippet\";\nimport Button from \"../components/button\";\n\nconst ButtonComponentSnippet = `\n<!-- button 组件 -->\n<div class=\"track-button\" @click=\"$emit('custom-event')\">\n click me\n</div>\n`;\nconst ButtonComponentWithParamSnippet = `\n<!-- button 组件 -->\n<div class=\"track-button\" @click=\"e => $emit('custom-event', { id: Date.now().toString(36) }, e)\">\n click me\n</div>\n`;\nconst trackCustomEventSnippet = `\n<Button v-track:18015.custom-event=\"handleCustomEvent\"></Button>\n`;\nconst trackCustomEventWithParamSnippet = `\n<Button v-track:18019.custom-event=\"handleCustomEventWithParam\"></Button>\n`;\nconst trackCustomEventDelaySnippet = `\n<el-collapse\n accordion\n v-model=\"activeName\"\n v-track:18020.change.delay=\"handleChange\"\n>\n <el-collapse-item title=\"反馈\" name=\"Feedback\">...</el-collapse-item>\n <el-collapse-item title=\"效率\" name=\"Efficiency\">...</el-collapse-item>\n <el-collapse-item title=\"可控\" name=\"Controllability\">...</el-collapse-item>\n</el-collapse>\n`;\nconst jsTrackCustomEventDelaySnippet = `\nexport default {\n data() {\n return {\n activeName: \"Feedback\",\n };\n },\n methods: {\n handleChange(val) {\n this.activeName = val;\n }\n }\n}\n`;\nconst trackCustomEventAsyncSnippet = `\n<Button v-track:18021.custom-event.async=\"{ fetchRest, rest }\"></Button>\n`;\nconst jsTrackCustomEventAsyncSnippet = `\nexport default {\n data() {\n return {\n rest: null\n };\n },\n methods: {\n async fetchRest() {\n const response = await new Promise(resolve => {\n setTimeout(() => {\n resolve({ data: \"success\" });\n }, 300);\n });\n\n this.rest = response.data;\n }\n }\n}\n`;\n\nexport default {\n name: \"CustomEvents\",\n components: {\n Button,\n CodeSnippet\n },\n data() {\n return {\n ButtonComponentSnippet,\n ButtonComponentWithParamSnippet,\n trackCustomEventSnippet,\n trackCustomEventWithParamSnippet,\n trackCustomEventDelaySnippet,\n trackCustomEventAsyncSnippet,\n jsTrackCustomEventDelaySnippet,\n jsTrackCustomEventAsyncSnippet,\n item: {\n id: Math.random()\n .toString(36)\n .substr(2)\n },\n activeName: \"Feedback\",\n rest: null\n };\n },\n methods: {\n handleCustomEvent() {\n this.$message.success(\"自定义事件执行成功\");\n },\n handleCustomEventWithParam(item, { target }) {\n this.$message.success(\n `自定义事件执行成功,参数为${JSON.stringify(item)}--${target}`\n );\n },\n handleChange(val) {\n this.activeName = val;\n },\n async fetchRest() {\n const response = await new Promise(resolve => {\n setTimeout(() => {\n resolve({ data: \"success\" });\n }, 300);\n });\n\n if (this.rest === response.data) {\n this.$message.success(\n \"异步事件返回成功,但返回结果和上一次相等,埋点不会上报\"\n );\n } else {\n this.rest = response.data;\n this.$message.success(\"异步事件返回成功\");\n }\n }\n }\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./custom-events.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./custom-events.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./custom-events.vue?vue&type=template&id=3314ed1c&\"\nimport script from \"./custom-events.vue?vue&type=script&lang=js&\"\nexport * from \"./custom-events.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page-home page\"},[_c('section',{staticClass:\"nav\"},[_c('router-link',{attrs:{\"to\":{ name: 'STARTED' }}},[_vm._v(\"\\n 快速开始\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'HOME' }}},[_vm._v(\"\\n 事件行为埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'CUSTOM_EVENTS' }}},[_vm._v(\"\\n 自定义事件埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'HOME' }}},[_vm._v(\"\\n 返回\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'BLOCK_SHOW' }}},[_vm._v(\"\\n 区域展现埋点\\n \")]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://github.com/l-hammer/v-track/issues\"}},[_vm._v(\"打开一个 issue\")])],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这是一个页面初始化埋点\",\"closable\":false}}),_vm._v(\" \"),_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"warning\",\"title\":\"备注:v-track指令可用于任何元素,此行为埋点建议绑定到页面的根元素或者v-track提供的track-view组件上\",\"closable\":false}}),_vm._v(\" \"),_c('div',{directives:[{name:\"track\",rawName:\"v-track:18022\",arg:\"18022\"}],staticClass:\"section-content\"})],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackViewComponentSnippet}})],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"配合 v-if 指令控制埋点上报次数,即 show 为真时,会再次触发埋点\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content\"},[(_vm.show)?_c('track-view',{directives:[{name:\"track\",rawName:\"v-track:18023\",arg:\"18023\"}]}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"track-button\",on:{\"click\":function () { return (_vm.show = !_vm.show); }}},[_vm._v(\"\\n click me -> \"+_vm._s(_vm.show)+\"\\n \")])],1)],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackViewComponentVIfSnippet}}),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"js\",\"code\":_vm.jsTrackViewComponentVIfSnippet}})],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这是一个监听页面行为的埋点,同事件行为埋点一样,只有当返回结果发生变化时才会上报埋点\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content\"},[_c('track-view',{directives:[{name:\"track\",rawName:\"v-track:18025.watch\",value:({ rest1: _vm.rest1 }),expression:\"{ rest1 }\",arg:\"18025\",modifiers:{\"watch\":true}}]}),_vm._v(\" \"),_c('div',{staticClass:\"track-button\",on:{\"click\":function($event){return _vm.fetchRest(false)}}},[_vm._v(\"\\n click me\\n \")])],1)],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackViewComponentWatchSnippet}}),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"js\",\"code\":_vm.jsTrackViewComponentWatchSnippet}})],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这是一个监听页面行为并延时的埋点,不同于事件延时埋点,这里可通过delay设置具体的延长时间\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content\"},[_c('track-view',{directives:[{name:\"track\",rawName:\"v-track:18026.watch.delay\",value:({ rest2: _vm.rest2, delay: 2000 }),expression:\"{ rest2, delay: 2000 }\",arg:\"18026\",modifiers:{\"watch\":true,\"delay\":true}}]}),_vm._v(\" \"),_c('div',{staticClass:\"track-button\",on:{\"click\":function($event){return _vm.fetchRest(true)}}},[_vm._v(\"\\n click me\\n \")])],1)],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackViewComponentWatchDelaySnippet}}),_vm._v(\" \"),_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"js\",\"code\":_vm.jsTrackViewComponentWatchDelaySnippet}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"page-home page\">\n <section class=\"nav\">\n <router-link :to=\"{ name: 'STARTED' }\">\n 快速开始\n </router-link>\n <router-link :to=\"{ name: 'HOME' }\">\n 事件行为埋点\n </router-link>\n <router-link :to=\"{ name: 'CUSTOM_EVENTS' }\">\n 自定义事件埋点\n </router-link>\n <router-link :to=\"{ name: 'HOME' }\">\n 返回\n </router-link>\n <router-link :to=\"{ name: 'BLOCK_SHOW' }\">\n 区域展现埋点\n </router-link>\n <a href=\"https://github.com/l-hammer/v-track/issues\">打开一个 issue</a>\n </section>\n\n <!----------------------- DEMO 1 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这是一个页面初始化埋点\"\n :closable=\"false\"\n >\n </el-alert>\n <el-alert\n center\n type=\"warning\"\n title=\"备注:v-track指令可用于任何元素,此行为埋点建议绑定到页面的根元素或者v-track提供的track-view组件上\"\n :closable=\"false\"\n >\n </el-alert>\n <div v-track:18022 class=\"section-content\"></div>\n </section>\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"trackViewComponentSnippet\"\n />\n </section>\n\n <!----------------------- DEMO 2 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"配合 v-if 指令控制埋点上报次数,即 show 为真时,会再次触发埋点\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content\">\n <track-view v-track:18023 v-if=\"show\"></track-view>\n <div class=\"track-button\" @click=\"() => (show = !show)\">\n click me -> {{ show }}\n </div>\n </div>\n </section>\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"trackViewComponentVIfSnippet\"\n />\n <CodeSnippet\n class=\"snippet\"\n lang=\"js\"\n :code=\"jsTrackViewComponentVIfSnippet\"\n />\n </section>\n\n <!----------------------- DEMO 3 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这是一个监听页面行为的埋点,同事件行为埋点一样,只有当返回结果发生变化时才会上报埋点\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content\">\n <track-view v-track:18025.watch=\"{ rest1 }\" />\n <div class=\"track-button\" @click=\"fetchRest(false)\">\n click me\n </div>\n </div>\n </section>\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"trackViewComponentWatchSnippet\"\n />\n <CodeSnippet\n class=\"snippet\"\n lang=\"js\"\n :code=\"jsTrackViewComponentWatchSnippet\"\n />\n </section>\n\n <!----------------------- DEMO 4 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这是一个监听页面行为并延时的埋点,不同于事件延时埋点,这里可通过delay设置具体的延长时间\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content\">\n <track-view v-track:18026.watch.delay=\"{ rest2, delay: 2000 }\" />\n <div class=\"track-button\" @click=\"fetchRest(true)\">\n click me\n </div>\n </div>\n </section>\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"trackViewComponentWatchDelaySnippet\"\n />\n <CodeSnippet\n class=\"snippet\"\n lang=\"js\"\n :code=\"jsTrackViewComponentWatchDelaySnippet\"\n />\n </section>\n </div>\n</template>\n\n<script>\nimport CodeSnippet from \"../components/code-snippet\";\n\nconst trackViewComponentSnippet = `\n<track-view v-track:18022></track-view>\n`;\nconst trackViewComponentVIfSnippet = `\n<track-view v-track:18023 v-if=\"show\"></track-view>\n<div class=\"track-button\" @click=\"show = !show\">click me -> {{ show }}</div>\n`;\nconst jsTrackViewComponentVIfSnippet = `\nexport default {\n data: () => ({ show: false })\n}\n`;\nconst trackViewComponentWatchSnippet = `\n<track-view v-track:18015.watch=\"{ rest }\" />\n<div class=\"track-button\" @click=\"fetchRest\">click me</div>\n`;\nconst jsTrackViewComponentWatchSnippet = `\nexport default {\n data: () => ({ rest: null }),\n methods: {\n async fetchRest() {\n const response = await new Promise(resolve => {\n setTimeout(() => {\n resolve({ data: \"success\" });\n }, 300);\n });\n \n this.rest = response.data;\n }\n },\n}\n`;\nconst trackViewComponentWatchDelaySnippet = `\n<track-view v-track:18025.watch.delay=\"{ rest, delay: 2000 }\" />\n<div class=\"track-button\" @click=\"fetchRest()\">click me</div>\n`;\nconst jsTrackViewComponentWatchDelaySnippet = `\nexport default {\n data: () => ({ rest: null }),\n methods: {\n async fetchRest() {\n const response = await new Promise(resolve => {\n setTimeout(() => {\n resolve({ data: \"success\" });\n }, 300);\n });\n \n this.rest = response.data;\n }\n },\n}\n`;\n\nexport default {\n name: \"TrackViews\",\n components: {\n CodeSnippet\n },\n data() {\n return {\n trackViewComponentSnippet,\n trackViewComponentVIfSnippet,\n jsTrackViewComponentVIfSnippet,\n trackViewComponentWatchSnippet,\n jsTrackViewComponentWatchSnippet,\n trackViewComponentWatchDelaySnippet,\n jsTrackViewComponentWatchDelaySnippet,\n show: false,\n rest1: null,\n rest2: null\n };\n },\n methods: {\n async fetchRest(delay) {\n const response = await new Promise(resolve => {\n setTimeout(() => {\n resolve({ data: \"success\" });\n }, 300);\n });\n\n if (\n (!delay && this.rest1 === response.data) ||\n (delay && this.rest2 === response.data)\n ) {\n this.$message.success(\n \"异步事件返回成功,但返回结果和上一次相等,埋点不会上报\"\n );\n } else {\n this.$message.success(\"异步事件返回成功\");\n !delay ? (this.rest1 = response.data) : (this.rest2 = response.data);\n }\n }\n }\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./track-view.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./track-view.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./track-view.vue?vue&type=template&id=0b4ba76a&\"\nimport script from \"./track-view.vue?vue&type=script&lang=js&\"\nexport * from \"./track-view.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page-home page\"},[_c('section',{staticClass:\"nav\"},[_c('router-link',{attrs:{\"to\":{ name: 'STARTED' }}},[_vm._v(\"\\n 快速开始\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'HOME' }}},[_vm._v(\"\\n 事件行为埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'CUSTOM_EVENTS' }}},[_vm._v(\"\\n 自定义事件埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'TRACK_VIEW' }}},[_vm._v(\"\\n 页面行为埋点\\n \")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":{ name: 'HOME' }}},[_vm._v(\"\\n 返回\\n \")]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://github.com/l-hammer/v-track/issues\"}},[_vm._v(\"打开一个 issue\")])],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这是一个只会上报一次的区域展现埋点\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content large\"},[_c('el-card',{directives:[{name:\"track\",rawName:\"v-track:18028.show.once\",arg:\"18028\",modifiers:{\"show\":true,\"once\":true}}],attrs:{\"shadow\":\"always\"}},[_vm._v(\"\\n 我只想被曝光一次\\n \")])],1)],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackViewComponentOnceSnippet}})],1),_vm._v(\" \"),_c('section',{staticClass:\"demo\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"这是一个会连续上报的区域展现埋点\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content large\"},[_c('el-card',{directives:[{name:\"track\",rawName:\"v-track:18027.show\",arg:\"18027\",modifiers:{\"show\":true}}],attrs:{\"shadow\":\"always\"}},[_vm._v(\"\\n 我想被曝光无数次\\n \")])],1)],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.trackViewComponentSnippet}})],1),_vm._v(\" \"),_c('section',{ref:\"viewport1\",staticClass:\"demo viewport\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"某个区域内元素曝光埋点\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content large\"},[_c('el-card',{directives:[{name:\"track\",rawName:\"v-track:18029.show\",value:({ viewport: 'viewport1' }),expression:\"{ viewport: 'viewport1' }\",arg:\"18029\",modifiers:{\"show\":true}}],attrs:{\"shadow\":\"always\"}},[_vm._v(\"\\n 我也想被曝光无数次\\n \")])],1)],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.viewportTrackViewComponentSnippet1}})],1),_vm._v(\" \"),_c('section',{ref:\"viewport2\",staticClass:\"demo viewport\"},[_c('el-alert',{attrs:{\"center\":\"\",\"type\":\"info\",\"title\":\"某个区域内元素曝光超过一半则上报埋点\",\"closable\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"section-content large\"},[_c('el-card',{directives:[{name:\"track\",rawName:\"v-track:18030.show\",value:({ viewport: 'viewport2', percent: 0.5 }),expression:\"{ viewport: 'viewport2', percent: 0.5 }\",arg:\"18030\",modifiers:{\"show\":true}}],attrs:{\"shadow\":\"always\"}},[_vm._v(\"\\n 我也想被曝光无数次\\n \")])],1)],1),_vm._v(\" \"),_c('section',{staticClass:\"snippets\"},[_c('CodeSnippet',{staticClass:\"snippet\",attrs:{\"lang\":\"html\",\"code\":_vm.viewportTrackViewComponentSnippet2}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"page-home page\">\n <section class=\"nav\">\n <router-link :to=\"{ name: 'STARTED' }\">\n 快速开始\n </router-link>\n <router-link :to=\"{ name: 'HOME' }\">\n 事件行为埋点\n </router-link>\n <router-link :to=\"{ name: 'CUSTOM_EVENTS' }\">\n 自定义事件埋点\n </router-link>\n <router-link :to=\"{ name: 'TRACK_VIEW' }\">\n 页面行为埋点\n </router-link>\n <router-link :to=\"{ name: 'HOME' }\">\n 返回\n </router-link>\n <a href=\"https://github.com/l-hammer/v-track/issues\">打开一个 issue</a>\n </section>\n\n <!----------------------- DEMO 1 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这是一个只会上报一次的区域展现埋点\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content large\">\n <el-card shadow=\"always\" v-track:18028.show.once>\n 我只想被曝光一次\n </el-card>\n </div>\n </section>\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"trackViewComponentOnceSnippet\"\n />\n </section>\n\n <!----------------------- DEMO 2 ------------------------>\n <section class=\"demo\">\n <el-alert\n center\n type=\"info\"\n title=\"这是一个会连续上报的区域展现埋点\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content large\">\n <el-card shadow=\"always\" v-track:18027.show>\n 我想被曝光无数次\n </el-card>\n </div>\n </section>\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"trackViewComponentSnippet\"\n />\n </section>\n\n <!----------------------- DEMO 3 ------------------------>\n <section ref=\"viewport1\" class=\"demo viewport\">\n <el-alert\n center\n type=\"info\"\n title=\"某个区域内元素曝光埋点\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content large\">\n <el-card shadow=\"always\" v-track:18029.show=\"{ viewport: 'viewport1' }\">\n 我也想被曝光无数次\n </el-card>\n </div>\n </section>\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"viewportTrackViewComponentSnippet1\"\n />\n </section>\n\n <!----------------------- DEMO 4 ------------------------>\n <section ref=\"viewport2\" class=\"demo viewport\">\n <el-alert\n center\n type=\"info\"\n title=\"某个区域内元素曝光超过一半则上报埋点\"\n :closable=\"false\"\n >\n </el-alert>\n <div class=\"section-content large\">\n <el-card\n shadow=\"always\"\n v-track:18030.show=\"{ viewport: 'viewport2', percent: 0.5 }\"\n >\n 我也想被曝光无数次\n </el-card>\n </div>\n </section>\n <section class=\"snippets\">\n <CodeSnippet\n class=\"snippet\"\n lang=\"html\"\n :code=\"viewportTrackViewComponentSnippet2\"\n />\n </section>\n </div>\n</template>\n\n<script>\nimport CodeSnippet from \"../components/code-snippet\";\n\nconst trackViewComponentSnippet = `\n<el-card shadow=\"always\" v-track:18027.show>我想被曝光无数次</el-card>\n`;\nconst trackViewComponentOnceSnippet = `\n<el-card shadow=\"always\" v-track:18027.show.once>我只想被曝光一次</el-card>\n`;\nconst viewportTrackViewComponentSnippet1 = `\n<section ref=\"viewport\">\n <el-card shadow=\"always\" v-track:18029.show=\"{ viewport: 'viewport1' }\">我也想被曝光无数次</el-card>\n</section>\n`;\nconst viewportTrackViewComponentSnippet2 = `\n<section ref=\"viewport\">\n <el-card shadow=\"always\" v-track:18029.show=\"{ viewport: 'viewport2', percent: 0.5 }\">我也想被曝光无数次</el-card>\n</section>\n`;\n\nexport default {\n name: \"BlockShow\",\n components: {\n CodeSnippet\n },\n data() {\n return {\n trackViewComponentSnippet,\n trackViewComponentOnceSnippet,\n viewportTrackViewComponentSnippet1,\n viewportTrackViewComponentSnippet2,\n show: false,\n rest1: null,\n rest2: null\n };\n },\n methods: {\n async fetchRest(delay) {\n const response = await new Promise(resolve => {\n setTimeout(() => {\n resolve({ data: \"success\" });\n }, 300);\n });\n\n if (\n (!delay && this.rest1 === response.data) ||\n (delay && this.rest2 === response.data)\n ) {\n this.$message.success(\n \"异步事件返回成功,但返回结果和上一次相等,埋点不会上报\"\n );\n } else {\n this.$message.success(\"异步事件返回成功\");\n !delay ? (this.rest1 = response.data) : (this.rest2 = response.data);\n }\n }\n }\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./block-show.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./block-show.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./block-show.vue?vue&type=template&id=55f6236e&\"\nimport script from \"./block-show.vue?vue&type=script&lang=js&\"\nexport * from \"./block-show.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\n/*\n * @Author: 宋慧武\n * @Date: 2019-04-08 11:13:34\n * @Last Modified by: 宋慧武\n * @Last Modified time: 2019-08-05 15:31:00\n */\n\n/**\n * @desc 判断给定变量是否为一个函数\n *\n * @param {*} v\n * @return {Boolean}\n */\nvar isFun = function isFun(v) {\n return typeof v === \"function\" || false;\n};\n/**\n * @desc 判断给定变量是否是未定义\n *\n * @param {*} v\n */\n\nvar isUndef = function isUndef(v) {\n return v === undefined || v === null;\n};\n/**\n * @desc 判断给定变量是否是定义\n *\n * @param {*} v\n */\n\nvar isDef = function isDef(v) {\n return v !== undefined && v !== null;\n};\n/**\n * @desc 获取对象的键值\n *\n * @param {Object} value\n * @returns {Array} [keys, values]\n */\n\nfunction zipArray() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return [Object.values(value), Object.keys(value)];\n}\n/**\n * @desc 防抖函数,至少间隔200毫秒执行一次\n *\n * @param {Function} fn callback\n * @param {Number} [ms=200] 默认200毫秒\n * @returns {Function}\n */\n\nfunction debounce(fn) {\n var ms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200;\n var timeoutId;\n return function () {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n clearTimeout(timeoutId);\n timeoutId = setTimeout(function () {\n return fn.apply(_this, args);\n }, ms);\n };\n}\n/**\n * @desc 判断给定变量是否完全匹配目标数组\n *\n * @param {String[]} mdfs 目标数组\n * @param {String} vals\n * @returns {Boolean}\n */\n\nfunction _exactMatch(mdfs, vals) {\n var keys = Object.keys(mdfs);\n return keys.length === vals.length && vals.every(function (v) {\n return keys.includes(v);\n });\n}\n/**\n * @desc 判断给定变量是否匹配目标数组的一部分\n *\n * @param {String[]} mdfs 目标字符串数组\n * @param {String} vals\n * @returns {Boolean}\n */\n\nfunction _partialMatch(mdfs, vals) {\n var keys = Object.keys(mdfs);\n return vals.some(function (v) {\n return keys.includes(v);\n });\n}\n/**\n * @desc 判断两个节点是否为同一个vnode节点\n *\n * @param {VNode} a 虚拟节点\n * @param {VNode} b 虚拟节点\n */\n\nfunction sameVnode(a, b) {\n return a.key === b.key && a.tag === b.tag && a.isComment === b.isComment && isDef(a.data) === isDef(b.data);\n}\n/**\n * @desc 判断两个vnode节点是否全等\n *\n * @param {VNode} a 虚拟节点\n * @param {VNode} b 虚拟节点\n */\n\nfunction exactlySameVnode(vnode, oldVnode) {\n if (!sameVnode(vnode, oldVnode)) return false;\n var oldCh = oldVnode.children;\n var ch = vnode.children; // vnode为非文本节点,且新旧节点的子节点都存在但不相同\n\n if (isUndef(vnode.text) && isDef(oldCh) && isDef(ch)) {\n if (oldCh.length !== ch.length) return false;\n\n for (var i = 0; i < ch.length; i++) {\n var c = ch[i];\n\n if (isDef(c) && isDef(oldCh[i])) {\n return exactlySameVnode(c, oldCh[i]);\n }\n }\n } // vnode为文本节点,新旧节点内容不相同\n else if (vnode.text !== oldVnode.text) return false;\n\n return true;\n}\n\n/*\n * @Author: 宋慧武\n * @Date: 2019-04-14 15:55:15\n * @Last Modified by: 宋慧武\n * @Last Modified time: 2019-04-20 18:06:31\n */\nvar checkFun = function checkFun(fn) {\n if (!isFun(fn)) {\n throw new Error(\"The first parameter should be Function.\");\n }\n};\n\n/*\n * @Author: 宋慧武\n * @Date: 2019-04-08 11:13:34\n * @Last Modified by: 宋慧武\n * @Last Modified time: 2020-06-04 17:08:44\n */\n\n/**\n * @desc 是否为元素几点\n *\n * @param {DOMElement} ele 一个 DOM 元素\n * @return {Boolean}\n */\nvar isElement = function isElement(ele) {\n return ele && ele.nodeType === 1;\n};\n/**\n * @desc 获取 DOM CSS 属性的值\n *\n * @param {DOMElement} ele A DOM 元素\n * @returns {String}\n */\n\nfunction getStylePropValue(ele, prop) {\n return window.getComputedStyle(ele).getPropertyValue(prop);\n}\n/**\n * @desc 元素是否在可视区域可见\n *\n * @param {Object} rect 元素大小及相对可视区域的位置信息\n * @returns {Boolean} true => 可见 false => 不可见\n */\n\nfunction isInViewport(rect, viewport) {\n if (!rect || rect.width <= 0 || rect.height <= 0) {\n return false;\n }\n\n return rect.bottom > 0 && rect.right > 0 && rect.top < window.innerHeight && rect.left < window.innerWidth && !(rect.left > viewport.right || rect.top > viewport.bottom || rect.right < viewport.left || rect.bottom < viewport.top);\n}\n/**\n * @desc 元素是否隐藏\n *\n * @param {DOMElement} ele A DOM 元素\n * @returns {Boolean} true => 未隐藏可见 false => 隐藏不可见\n */\n\nfunction isVisible(ele) {\n if (ele === window.document) {\n return true;\n }\n\n if (!ele || !ele.parentNode) {\n return false;\n }\n\n var parent = ele.parentNode;\n var visibility = getStylePropValue(ele, \"visibility\");\n var display = getStylePropValue(ele, \"display\");\n\n if (visibility === \"hidden\" || display === \"none\") {\n return false;\n }\n\n return parent ? isVisible(parent) : true;\n}\n\n/**\n * @class\n * @name VisMonitor\n *\n * @desc 目标元素控制器\n */\n\nvar VisMonitor =\n/*#__PURE__*/\nfunction () {\n function VisMonitor(ele, ref) {\n var refwin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : window;\n var percent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n\n _classCallCheck(this, VisMonitor);\n\n if (!isElement(ele)) {\n throw new Error(\"not an element node\");\n }\n\n if (percent > 1 && percent <= 0) {\n throw new Error(\"'percent' must be a number between 0 and 1\");\n }\n\n this.ele = ele;\n this.ref = ref;\n this.refWin = refwin;\n this.started = false;\n this.percent = percent;\n this.prevPerc = null; // 保存前一次曝光百分比\n\n this.listeners = {};\n this.removeScrollLisener = null;\n this.init();\n }\n\n _createClass(VisMonitor, [{\n key: \"init\",\n value: function init() {\n var _this = this;\n\n if (!this.started) {\n var listener = debounce(this.visibilitychange.bind(this));\n listener();\n\n this.removeScrollLisener = function (listener) {\n if (_this.ref) {\n return _this.ref.$on(\"scroll\", listener);\n } else {\n _this.refWin.addEventListener(\"scroll\", listener, true);\n\n return function () {\n return _this.refWin.removeEventListener(\"scroll\", listener, true);\n };\n }\n }(listener);\n\n this.started = true;\n }\n }\n }, {\n key: \"viewport\",\n value: function viewport() {\n var win = this.refWin;\n var rect = isElement(win) ? win.getBoundingClientRect() : win;\n return {\n top: isElement(win) ? rect.top : 0,\n right: rect.right || rect.innerWidth,\n bottom: rect.bottom || rect.innerHeight,\n left: rect.left || 0,\n height: win.innerHeight || win.offsetHeight,\n width: win.innerWidth || win.offsetWidth\n };\n }\n /**\n * 监听自定义事件\n */\n\n }, {\n key: \"$on\",\n value: function $on(evt, cbk) {\n var queue = this.listeners[evt] || (this.listeners[evt] = []);\n queue.push(cbk);\n return this;\n }\n /**\n * 移除监听自定义事件\n */\n\n }, {\n key: \"$off\",\n value: function $off(evt, cbk) {\n if (!cbk) return;\n var queue = this.listeners[evt];\n var v;\n var i = queue.length;\n\n while (i--) {\n v = queue[i];\n\n if (v === cbk || v.cbk === cbk) {\n queue.splice(i, 1);\n break;\n }\n }\n\n return this;\n }\n /**\n * 监听自定义事件,但只触发一次\n */\n\n }, {\n key: \"$once\",\n value: function $once(evt, cbk) {\n var _this2 = this;\n\n var on = function on() {\n _this2.$off(evt, on);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n cbk.apply(_this2, args);\n };\n\n on.cbk = cbk;\n this.$on(evt, on);\n return this;\n }\n /**\n * 触发当前实例的监听回调\n */\n\n }, {\n key: \"$emit\",\n value: function $emit(evt) {\n var _this3 = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var queue = this.listeners[evt] || [];\n queue.forEach(function (sub) {\n return sub.apply(_this3, args);\n });\n return this;\n }\n /**\n * 计算元素可见比例,如果比例为100%,则触发 fullyvisible 事件\n */\n\n }, {\n key: \"visibilitychange\",\n value: function visibilitychange() {\n var rect = this.ele.getBoundingClientRect();\n var view = this.viewport();\n\n if (!isInViewport(rect, view) || !isVisible(this.ele)) {\n this.prevPerc = 0;\n return 0;\n }\n\n var vh = 0;\n var vw = 0;\n var perc = 0;\n\n if (view.top < 0) {\n view.top = 0;\n }\n\n if (view.bottom > window.innerHeight) {\n view.bottom = window.innerHeight;\n }\n\n if (view.left < 0) {\n view.left = 0;\n }\n\n if (view.right > window.innerWidth) {\n view.right = window.innerWidth;\n }\n\n if (rect.top >= view.top && rect.bottom > view.bottom) {\n vh = view.bottom - rect.top;\n } else if (rect.top < view.top && rect.bottom <= view.bottom) {\n vh = rect.bottom - view.top;\n } else {\n vh = rect.height;\n }\n\n if (rect.left >= view.left && rect.right > view.right) {\n vw = view.right - rect.left;\n } else if (rect.left < view.left && rect.right <= view.right) {\n vw = rect.right - view.left;\n } else {\n vw = rect.width;\n }\n\n perc = vh * vw / (rect.height * rect.width);\n\n if (this.prevPerc < this.percent && perc >= this.percent) {\n this.$emit(\"fullyvisible\");\n this.prevPerc = perc;\n }\n }\n /**\n * 销毁当前实例的事件\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n isFun(this.removeScrollLisener) && this.removeScrollLisener();\n }\n }]);\n\n return VisMonitor;\n}();\n\nvar MODIFIERS = [\"async\", \"delay\", \"watch\", \"show\", \"once\", \"custom\"]; // 修饰符\n\n/*******************************************************************************\n * @desc 监听数据发生改变时触发埋点,需处理两种情况:\n * ① 初始化时开始监听 v-track:xxxxx.watch=\"{ common_exp }\"\n * ops.immediate 表示初始化时立即开始监听\n *\n * ② 点击事件之后开始监听 v-track:18016.click.async=\"{ refreshHotSpot, exposureId }\"\n * el.contains(this.target) 避免多个“地方”同时监听同一个值出现多次上报的问题\n *******************************************************************************/\n\nfunction _watcher(el, exp, cbk, ctt) {\n var _this = this;\n\n var ops = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n el.$unwatch = ctt.$watch(function () {\n return ctt[exp];\n }, function (nv, ov) {\n nv !== ov && (ops.immediate || el.contains(_this.target)) && cbk();\n _this.target = null; // 释放当前操作的watcher\n });\n}\n/*************************************************************************\n * @desc 自定义指令 v-track\n *\n * @param {*} el 指令所绑定的元素\n * @param {String} arg 埋点对应event ID\n * @param {Boolean} modifiers.click true: 事件行为埋点; false: 页面级埋点\n * @param {Boolean} modifiers.watch 异步埋点\n * @param {Boolean} modifiers.async 点击事件异步埋点\n * @param {Boolean} modifiers.delay 埋点是否延迟执行,默认先执行埋点再执行cbk\n *\n * @property {Function} tck 对应埋点方法\n *\n * @example v-track:18015\n * @example v-track:18015.watch\n * @example v-track:18015.watch.delay\n * @example v-track:18015.click\n * @example v-track:18015.click.async\n * @example v-track:18015.click.delay\n * @example v-track:18015.[自定义事件名].delay\n * @example v-track:18015.[自定义事件名].async\n *************************************************************************/\n\n\nfunction bind(el, _ref, _ref2, _, __, events) {\n var _this2 = this;\n\n var value = _ref.value,\n id = _ref.arg,\n modifiers = _ref.modifiers,\n rawName = _ref.rawName;\n var context = _ref2.context,\n componentInstance = _ref2.componentInstance;\n if (!events[id]) throw new Error(\"tracking event does not exist\");\n var queue = [];\n var tck = events[id].bind(null, context);\n\n var watcher = function watcher(exp, cbk, ops) {\n return _watcher.call(_this2, el, exp, cbk, context, ops);\n };\n\n var exactMatch = function exactMatch() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _exactMatch.call(null, modifiers, args);\n };\n\n var partialMatch = function partialMatch() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _partialMatch.call(null, modifiers, args);\n };\n\n if (!Object.keys(modifiers).length) {\n events[id](context, value);\n } // 异步埋点\n else if (exactMatch(\"watch\")) {\n var exp = Object.keys(value).shift();\n watcher(exp, tck, {\n immediate: true\n });\n } // 指定延长时间埋点\n else if (exactMatch(\"delay\")) {\n el.$timer && clearTimeout(el.$timer);\n el.$timer = setTimeout(function () {\n events[id](context);\n }, value);\n } else if (exactMatch(\"watch\", \"delay\")) {\n var delay = value.delay,\n args = _objectWithoutProperties(value, [\"delay\"]);\n\n var _exp = _toConsumableArray(Object.keys(args)).pop();\n\n tck = function tck() {\n el.$timer && clearTimeout(el.$timer);\n el.$timer = setTimeout(function () {\n var visible = isVisible(context.$el);\n visible && events[id](context);\n }, delay);\n };\n\n watcher(_exp, tck, {\n immediate: true\n });\n } // 区域曝光埋点\n else if (partialMatch(\"show\")) {\n var _events$id;\n\n var _zipArray = zipArray(value),\n _zipArray2 = _slicedToArray(_zipArray, 1),\n _args = _zipArray2[0];\n\n var _tck = (_events$id = events[id]).bind.apply(_events$id, [null, context].concat(_toConsumableArray(_args)));\n\n var once = partialMatch(\"once\");\n var custom = partialMatch(\"custom\");\n\n if (!el.$visMonitor) {\n setTimeout(function () {\n var vm = new VisMonitor(el, custom && context.$refs[value.ref], value && context.$refs[value.viewport], value && value.percent);\n (once ? vm.$once : vm.$on).call(vm, \"fullyvisible\", _tck);\n el.$visMonitor = vm;\n }, 0);\n }\n } else if (!componentInstance && modifiers.click || componentInstance && partialMatch(\"native\")) {\n /**\n * @desc DOM元素事件行为埋点(需区分是否带参数)\n * @var {Function} fn 获取第一个参数作为回调函数\n * @var {String} exp 获取最后一个参数并作为监听对象\n */\n switch (_typeof(value)) {\n case \"object\":\n {\n var _events$id2;\n\n var _zipArray3 = zipArray(value),\n _zipArray4 = _slicedToArray(_zipArray3, 2),\n _args2 = _zipArray4[0],\n keys = _zipArray4[1];\n\n var fn = _args2.shift();\n\n var _exp2 = _toConsumableArray(keys).pop();\n\n checkFun(fn);\n tck = (_events$id2 = events[id]).bind.apply(_events$id2, [null, context].concat(_toConsumableArray(_args2)));\n queue = [tck, fn.bind.apply(fn, [null].concat(_toConsumableArray(_args2)))];\n modifiers.delay && queue.reverse();\n modifiers.async && watcher(_exp2, queue.shift());\n break;\n }\n\n case \"function\":\n queue = [tck, value];\n modifiers.delay && queue.reverse();\n break;\n }\n\n el.$listener = function (e) {\n _this2.target = e.target;\n queue.forEach(function (sub) {\n return sub(e);\n });\n };\n\n el.addEventListener(\"click\", el.$listener);\n } else if (\n /**\n * @desc 组件自定义事件行为埋点(需区分是否带参数)\n * @var {Function} fn 获取第一个参数作为回调函数\n * @var {String} exp 获取最后一个参数并作为监听对象\n */\n componentInstance && componentInstance.$el === el) {\n var _args3, _keys, _fn, _exp3;\n\n var eventName = Object.keys(modifiers).filter(function (key) {\n return !MODIFIERS.includes(key);\n }).pop();\n\n if (_typeof(value) === \"object\") {\n var _zipArray5 = zipArray(value);\n\n var _zipArray6 = _slicedToArray(_zipArray5, 2);\n\n _args3 = _zipArray6[0];\n _keys = _zipArray6[1];\n _fn = _args3.shift();\n _exp3 = _toConsumableArray(_keys).pop();\n checkFun(_fn);\n }\n\n if (el[\"$on_\".concat(eventName)]) return;\n componentInstance.$on(eventName, function () {\n var _events$id3, _ref3;\n\n _this2.target = el;\n\n for (var _len3 = arguments.length, data = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n data[_key3] = arguments[_key3];\n }\n\n tck = (_events$id3 = events[id]).bind.apply(_events$id3, [null, context].concat(data));\n queue = [tck, (_ref3 = _fn || value).bind.apply(_ref3, [null].concat(data))];\n modifiers.delay && queue.reverse();\n modifiers.async && watcher(_exp3, queue.shift());\n queue.forEach(function (sub) {\n return sub();\n });\n el[\"$on_\".concat(eventName)] = true; // 避免重复监听\n });\n } else {\n throw new Error(\"\".concat(rawName, \" directive is not supported\"));\n }\n}\n/**\n * @desc 由于 DOM 更新采用 diff 算法更新,如果新旧节点相同,则 el 会全等,导致 bind 绑定无法更\n * 新,出现事件绑定诡异的问题,但由于 DOM update 执行频率很高,会导致性能问题,所以这里加\n * 了一层exactlySameVnode过滤,即只有在新旧节点发生变化时才会重新绑定,否则相反\n *\n * @param {*} el 同bind\n * @param {...any} args 同bind\n */\n\nfunction updated(el) {\n if (!el.$listener) return;\n\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n if (!exactlySameVnode(args[1], args[2])) {\n unbind.call(this, el);\n bind.call.apply(bind, [this, el].concat(args));\n }\n}\nfunction unbind(el) {\n el.$listener && el.removeEventListener(\"click\", el.$listener);\n el.$timer && clearTimeout(el.$timer);\n el.$unwatch && el.$unwatch();\n el.$visMonitor && el.$visMonitor.destroy();\n}\n\nvar VTrack =\n/*#__PURE__*/\nfunction () {\n function VTrack() {\n _classCallCheck(this, VTrack);\n\n this.installed = false;\n } // 保存当前点击的元素\n\n\n _createClass(VTrack, null, [{\n key: \"install\",\n // Vue.use 将执行此方法\n value: function install(Vue, _ref) {\n var _this = this;\n\n var trackEvents = _ref.trackEvents,\n _ref$trackEnable = _ref.trackEnable,\n trackEnable = _ref$trackEnable === void 0 ? {} : _ref$trackEnable;\n trackEnable = _objectSpread({\n UVPV: false,\n TONP: false\n }, trackEnable);\n\n var TRACK_TONP = function TRACK_TONP(ctx, et) {\n if (trackEnable.TONP) {\n trackEvents.TONP(ctx, {\n et: et,\n dt: Date.now()\n });\n }\n };\n\n if (this.installed) return;\n this.installed = true; // 注册v-track全局指令\n\n Vue.directive(\"track\", {\n bind: function bind$1() {\n var _hooks$bind;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return (_hooks$bind = bind).call.apply(_hooks$bind, [_this].concat(args, [trackEvents]));\n },\n componentUpdated: function componentUpdated() {\n var _hooks$updated;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return (_hooks$updated = updated).call.apply(_hooks$updated, [_this].concat(args, [trackEvents]));\n },\n unbind: function unbind$1() {\n var _hooks$unbind;\n\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return (_hooks$unbind = unbind).call.apply(_hooks$unbind, [_this].concat(args));\n }\n }); // 注册<track-view>全局组件\n\n Vue.component(\"TrackView\", {\n render: function render(h) {\n return h(\"span\", {\n style: \"display: none\"\n });\n }\n });\n Vue.mixin({\n data: function data() {\n return {\n PAGE_ENTER_TIME: Date.now()\n };\n },\n created: function created() {\n var _this2 = this;\n\n window.onbeforeunload = function () {\n return TRACK_TONP(_this2, _this2.PAGE_ENTER_TIME);\n };\n },\n // 统计UV、PV\n beforeRouteEnter: function beforeRouteEnter(_, __, next) {\n next(function (vm) {\n trackEnable.UVPV && trackEvents.UVPV(vm);\n });\n },\n beforeRouteUpdate: function beforeRouteUpdate(_, __, next) {\n var _this3 = this;\n\n // 确保导航升级完成\n this.$watch(\"$route\", function () {\n if (trackEnable.UVPV && trackEnable.UVPV === \"routeUpdate\") {\n trackEvents.UVPV(_this3);\n }\n });\n next();\n },\n // 页面停留时间\n beforeRouteLeave: function beforeRouteLeave(_, __, next) {\n TRACK_TONP(this, this.PAGE_ENTER_TIME);\n next();\n }\n });\n }\n }]);\n\n return VTrack;\n}();\n\n_defineProperty(VTrack, \"target\", null);\n\nexport default VTrack;\n","/**\n * @author LHammer\n * @desc date parse or format date\n * @see https://github.com/l-hammer/YDTemplate/blob/master/src/utils/es6/date.js\n */\nconst twoDigits = /\\d\\d?/;\nconst fourDigits = /\\d{4}/;\nconst token = /d{1,2}|M{1,2}|yy(?:yy)?|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\nconst masks = {\n default: \"yyyy-MM-dd HH:mm:ss\",\n date: \"yyyy-MM-dd\",\n datetime: \"yyyy-MM-dd HH:mm:ss\",\n time: \"HH:mm:ss\",\n year: \"yyyy\",\n enDate: \"M/d/yy\",\n cnDate: \"yyyy 年 MM 月 dd 日\"\n};\n\nconst pad = (val, len) => {\n val = String(val);\n len = len || 2;\n while (val.length < len) {\n val = `0${val}`;\n }\n return val;\n};\n\nconst formatFlags = {\n yyyy(dateObj) {\n return pad(dateObj.getFullYear(), 4);\n },\n yy(dateObj) {\n return String(dateObj.getFullYear()).substr(2);\n },\n M(dateObj) {\n return dateObj.getMonth() + 1;\n },\n MM(dateObj) {\n return pad(dateObj.getMonth() + 1);\n },\n d(dateObj) {\n return dateObj.getDate();\n },\n dd(dateObj) {\n return pad(dateObj.getDate());\n },\n h(dateObj) {\n return dateObj.getHours() % 12 || 12;\n },\n hh(dateObj) {\n return pad(dateObj.getHours() % 12 || 12);\n },\n H(dateObj) {\n return dateObj.getHours();\n },\n HH(dateObj) {\n return pad(dateObj.getHours());\n },\n m(dateObj) {\n return dateObj.getMinutes();\n },\n mm(dateObj) {\n return pad(dateObj.getMinutes());\n },\n s(dateObj) {\n return dateObj.getSeconds();\n },\n ss(dateObj) {\n return pad(dateObj.getSeconds());\n }\n};\n\n/**\n * Format a date\n * @method format\n * @param {Date|number} dateObj new Date(2018, 2, 9)\n * @param {String} mask Format of the date e.g. 'yyyy-MM-dd HH:mm:ss' or 'cnDate'\n */\nexport const format = (dateObj, mask) => {\n if (typeof dateObj === \"number\") {\n dateObj = new Date(dateObj);\n }\n\n if (\n Object.prototype.toString.call(dateObj) !== \"[object Date]\" ||\n isNaN(dateObj.getTime())\n ) {\n throw new Error(\"Invalid Date in date.format\");\n }\n mask = masks[mask] || mask || masks.default;\n\n // return 不可省略\n mask = mask.replace(token, $0 => {\n return $0 in formatFlags\n ? formatFlags[$0](dateObj)\n : $0.slice(1, $0.length - 1);\n });\n\n return mask;\n};\n\nconst parseFlags = {\n yyyy: [\n fourDigits,\n (d, v) => {\n d.year = v;\n }\n ],\n yy: [\n twoDigits,\n (d, v) => {\n const da = new Date();\n const cent = +`${da.getFullYear()}`.substr(0, 2);\n d.year = `${v > 68 ? cent - 1 : cent}${v}`;\n }\n ],\n M: [\n twoDigits,\n (d, v) => {\n d.month = v - 1;\n }\n ],\n d: [\n twoDigits,\n (d, v) => {\n d.day = v;\n }\n ],\n h: [\n twoDigits,\n (d, v) => {\n d.hour = v;\n }\n ],\n m: [\n twoDigits,\n (d, v) => {\n d.minute = v;\n }\n ],\n s: [\n twoDigits,\n (d, v) => {\n d.second = v;\n }\n ]\n};\nparseFlags.MM = parseFlags.M;\nparseFlags.dd = parseFlags.d;\nparseFlags.hh = parseFlags.h;\nparseFlags.H = parseFlags.h;\nparseFlags.HH = parseFlags.h;\nparseFlags.mm = parseFlags.m;\nparseFlags.ss = parseFlags.s;\n\n/**\n * Format a date\n * @method parse\n * @param {String} dateStr Date String e.g. '2018-02-09 09:29:29' or '2018 年 02 月 09 日'\n * @param {String} mask Parse of the format date e.g. 'yyyy-MM-dd HH:mm:ss' or 'cnDate'\n * @param {Date}\n */\nexport const parse = (dateStr, mask) => {\n let isVaild = true;\n const dateInfo = {};\n const today = new Date();\n\n if (typeof dateStr !== \"string\") {\n throw new Error(\"Invalid format in fecha.parse\");\n }\n\n mask = masks[mask] || mask || masks.default;\n /**\n * @function replace @see https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace;\n * @param {String} $0 匹配的子串\n */\n mask.replace(token, function($0) {\n if (parseFlags[$0]) {\n const flag = parseFlags[$0];\n /**\n * 搜索匹配到子串(e.g. yyyy)对应flag(fourDigits)的位置\n * @function search 未匹配到时返回-1,即按位取反为0时表示没有对应的flag\n */\n const index = dateStr.search(flag[0]);\n if (!~index) {\n isVaild = false;\n } else {\n /**\n * 为避免重复返回,将已经返回的值result从dateStr中删除\n */\n dateStr.replace(flag[0], function(result) {\n flag[1](dateInfo, result);\n dateStr = dateStr.substr(index + result.length);\n return result;\n });\n }\n }\n return parseFlags[$0] ? \"\" : $0.slice(1, $0.length - 1);\n });\n\n if (!isVaild) {\n return false;\n }\n\n const date = new Date(\n dateInfo.year || today.getFullYear(),\n dateInfo.month || 0,\n dateInfo.day || 1,\n dateInfo.hour || 0,\n dateInfo.minute || 0,\n dateInfo.second || 0\n );\n return date;\n};\n\nexport default {\n format,\n parse\n};\n","export const createFragment = data => {\n const tableData = Object.keys(data).reduce(\n (list, k) => (list.push({ key: k, val: data[k] }), list),\n []\n );\n const trs = tableData\n .map(({ key, val }) => {\n return `\n <div class=\"row\">\n <span>${key}</span>\n <span>${val}</span>\n </div>\n `;\n })\n .join(\"\");\n\n return `\n <section class=\"v-track-table\">\n <div class=\"header\">\n <strong>key</strong>\n <strong>value</strong>\n </div>\n ${trs}\n </section>\n `;\n};\n","/*\n * @Author: 宋慧武\n * @Date: 2019-04-14 16:44:42\n * @Last Modified by: 宋慧武\n * @Last Modified time: 2019-07-30 20:17:13\n */\nimport { Notification, Message } from \"element-ui\";\nimport { format } from \"../utils/date\";\nimport { createFragment } from \"../utils/dom\";\n\n/**\n * @desc 模拟埋点Action\n */\nexport default function trackAction(evt, addtional = {}) {\n const data = {\n evt,\n ...addtional,\n action_time: format(Date.now())\n };\n\n if (evt === \"1\") {\n Message(\"统计UVPV埋点\");\n }\n if (evt === \"2\") {\n Message({\n message: \"统计页面停留时间埋点\",\n customClass: \"message-offset\"\n });\n }\n Notification.success({\n title: \"上报数据如下:\",\n dangerouslyUseHTMLString: true,\n message: createFragment(data),\n customClass: \"notification__large\",\n position: evt === \"1\" || evt === \"2\" ? \"top-left\" : \"top-right\"\n });\n}\n","/*\n * @Author: 宋慧武\n * @Date: 2019-04-14 17:10:31\n * @Last Modified by: 宋慧武\n * @Last Modified time: 2020-06-05 20:42:48\n */\nimport trackAction from \"./action\";\n\nexport default {\n /**\n * @name UVPV 固定名称不支持修改\n * @desc UV、PV埋点\n * @param {Object} context 当前上下文\n */\n UVPV() {\n trackAction(\"1\");\n },\n /**\n * @name TONP 固定名称不支持修改\n * @desc 页面停留时间埋点(Time on Page)\n * @param {Object} context 当前上下文\n * @param {Timestamp} et 进入页面时间\n * @param {Timestamp} dt 离开页面时间\n */\n TONP(_, { et, dt }) {\n trackAction(\"2\", {\n stt: `${(dt - et) / 1e3}s`\n });\n },\n /**\n * @desc 测试埋点\n */\n 18015({ $route: { name } }) {\n trackAction(\"18015\", {\n source_page: name // 页面来源\n });\n },\n /**\n * @param {Object} context 当前上下文\n * @param {Object} item 事件参数\n * @param {Object} event 事件对象\n */\n 18016(\n {\n $route: { name }\n },\n { id },\n { target }\n ) {\n trackAction(\"18016\", {\n id,\n source_page: name,\n target\n });\n },\n 18017({ index, $route: { name } }) {\n trackAction(\"18017\", {\n source_page: name,\n index\n });\n },\n 18018({ rest, $route: { name } }) {\n trackAction(\"18018\", {\n source_page: name,\n rest\n });\n },\n 18019(\n {\n $route: { name }\n },\n { id },\n { target }\n ) {\n trackAction(\"18019\", {\n id,\n source_page: name,\n target\n });\n },\n 18020({ activeName, $route: { name } }) {\n trackAction(\"18020\", {\n source_page: name,\n active_name: activeName\n });\n },\n 18021({ rest, $route: { name } }) {\n trackAction(\"18021\", {\n source_page: name,\n rest\n });\n },\n 18022({ $route: { name } }) {\n trackAction(\"18022\", {\n source_page: name,\n description: \"这是一个页面初始化埋点\"\n });\n },\n 18023({ $route: { name } }) {\n trackAction(\"18023\", {\n source_page: name\n });\n },\n 18025({ rest1, $route: { name } }) {\n trackAction(\"18025\", {\n source_page: name,\n rest: rest1\n });\n },\n 18026({ rest2, $route: { name } }) {\n trackAction(\"18026\", {\n source_page: name,\n rest: rest2\n });\n },\n 18027({ $route: { name } }) {\n trackAction(\"18027\", {\n source_page: name,\n description: \"我想被曝光无数次\"\n });\n },\n 18028({ $route: { name } }) {\n trackAction(\"18028\", {\n source_page: name,\n description: \"我只想被曝光一次\"\n });\n },\n 18029({ $route: { name } }) {\n trackAction(\"18029\", {\n source_page: name,\n description: \"我也想被曝光无数次\"\n });\n },\n 18030({ $route: { name } }) {\n trackAction(\"18030\", {\n source_page: name,\n description: \"我也想被曝光无数次\"\n });\n }\n};\n","/*\n * @Author: 宋慧武\n * @Date: 2019-04-14 17:01:49\n * @Last Modified by: 宋慧武\n * @Last Modified time: 2019-04-14 17:12:29\n */\nimport trackEvents from \"./events\";\n\nexport { default as trackAction } from \"./action\";\n\nexport default {\n ...trackEvents\n};\n","import Vue from \"vue\";\nimport VueRouter from \"vue-router\";\nimport {\n Alert,\n Card,\n Collapse,\n CollapseItem,\n Message,\n Notification\n} from \"element-ui\";\nimport App from \"./App.vue\";\nimport Home from \"./pages/home.vue\";\nimport Started from \"./pages/started.vue\";\nimport CustomEvents from \"./pages/custom-events.vue\";\nimport TrackView from \"./pages/track-view.vue\";\nimport BlockShow from \"./pages/block-show.vue\";\nimport VueTrack from \"../\";\nimport trackEvents from \"./tracks\";\n\nVue.use(VueRouter);\nVue.use(Alert);\nVue.use(Card);\nVue.use(Collapse);\nVue.use(CollapseItem);\nVue.use(VueTrack, {\n trackEvents,\n trackEnable: {\n UVPV: \"routeUpdate\",\n TONP: true\n }\n});\n\nVue.prototype.$message = Message;\nVue.prototype.$notify = Notification;\n\nconst router = new VueRouter({\n routes: [\n {\n path: \"/\",\n name: \"HOME\",\n component: Home\n },\n {\n path: \"/started\",\n name: \"STARTED\",\n component: Started\n },\n {\n path: \"/custom-events\",\n name: \"CUSTOM_EVENTS\",\n component: CustomEvents\n },\n {\n path: \"/track-view\",\n name: \"TRACK_VIEW\",\n component: TrackView,\n meta: {\n keepAlive: true\n }\n },\n {\n path: \"/block-show\",\n name: \"BLOCK_SHOW\",\n component: BlockShow\n },\n {\n path: \"*\",\n redirect: \"/\"\n }\n ]\n});\n\n/* eslint-disable no-new */\nnew Vue({\n el: \"#app\",\n router,\n render: h => h(App)\n});\n"],"sourceRoot":""}
|