diff --git a/README.md b/README.md index 27b7037..676aedb 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ import trackEvents from "./track-events" Vue.use(VTrack, { trackEvents, // 埋点事件对象 trackEnable: { - UVPV: true, // 是否开启UVPV统计,默认为false + UVPV: true, // 是否开启UVPV统计,v0.8.3新增routeUpdate,即在当前路由参数发生改变时埋点,默认为false TONP: true // 是否开启页面停留时长统计,默认为false } }) diff --git a/docs/dist/js/app.1f68f820.js b/docs/dist/js/app.1f68f820.js new file mode 100644 index 0000000..cc02637 --- /dev/null +++ b/docs/dist/js/app.1f68f820.js @@ -0,0 +1,2 @@ +(function(t){function e(e){for(var a,i,c=e[0],o=e[1],l=e[2],v=0,p=[];vclick me\n',z='\n\n',Y='\n
click me
\n',J="\nexport default {\n data: () => ({\n item: {\n id: Date.now().toString(36)\n },\n })\n}\n",Q='\n
click me
\n',X="\nexport default {\n data() {\n return {\n index: 0\n };\n },\n methods: {\n handleClickDelay() {\n this.index++;\n },\n }\n}\n",Z='\n
click me
\n',tt='\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',et={name:"Home",components:{Button:G,CodeSnippet:B},data:function(){return{trackClickSnippet:q,trackNativeClickSnippet:z,trackClickWithParamSnippet:Y,jsTrackClickWithParamSnippet:J,trackClickDelaySnippet:Q,trackClickAsyncSnippet:Z,jsTrackClickDelaySnippet:X,jsTrackClickAsyncSnippet:tt,item:{id:P()().toString(36)},index:0,rest:null}},methods:{handleClick:function(){this.$message.success("事件执行成功")},handleNativeEvent:function(){this.$message.success("组件原生事件执行成功")},handleClickWithParam:function(t,e){var n=e.target;this.$message.success("事件执行成功,参数为".concat(x()(t),"--").concat(n))},handleClickDelay:function(){this.index++},handleClickAsync:function(){var t=Object(j["a"])(regeneratorRuntime.mark(function t(){var e;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,new T.a(function(t){setTimeout(function(){t({data:"success"})},300)});case 2:e=t.sent,this.rest===e.data?this.$message.success("异步事件返回成功,但返回结果和上一次相等,埋点不会上报"):(this.rest=e.data,this.$message.success("异步事件返回成功"));case 4:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}()}},nt=et,at=Object(_["a"])(nt,S,E,!1,null,null,null),st=at.exports,rt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-started page"},[n("section",{staticClass:"nav"},[n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 返回\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 事件行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"CUSTOM_EVENTS"}}},[t._v("\n 自定义事件埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"TRACK_VIEW"}}},[t._v("\n 页面行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"BLOCK_SHOW"}}},[t._v("\n 区域展现埋点\n ")]),t._v(" "),n("a",{attrs:{href:"https://github.com/l-hammer/v-track/issues"}},[t._v("打开一个 issue")])],1),t._v(" "),t._m(0),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{code:t.installSnippet,lang:"shell"}}),t._v(" "),n("div",{staticClass:"plus"},[t._v("+")]),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{code:t.mainSnippet,lang:"js"}}),t._v(" "),n("div",{staticClass:"plus"},[t._v("+")]),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{code:t.eventsSnippet,lang:"js"}}),t._v(" "),n("div",{staticClass:"plus"},[t._v("+")]),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{code:t.componentSnippet,lang:"html"}})],1)])},it=[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"snippets"},[n("div",{staticClass:"section-content small"},[t._v("\n v-track通过\n "),n("a",{attrs:{href:"https://cn.vuejs.org/v2/guide/custom-directive.html"}},[t._v("Vue 自定义指令")]),t._v("的方式将埋点代码与业务代码完全解耦,完整示例可参考\n "),n("a",{attrs:{href:"https://github.com/l-hammer/v-track/tree/master"}},[t._v("GitHub")])])])}],ct="\n# YARN\n$ yarn add v-track\n\n# NPM\n$ npm install v-track --save\n",ot='\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',lt='\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',ut='\n\x3c!-- 页面行为埋点(track-view为v-track全局注册的组件) --\x3e\n\n\n\n\n\n\x3c!-- 事件行为埋点(DOM) --\x3e\n
\n
\n
\n
\n\n\x3c!-- 事件行为埋点(组件) --\x3e\n\n\n\n\n\n\x3c!-- 区域展现埋点(block 可以是 DOM 或者组件) --\x3e\n\n\n\n\n',vt={name:"Started",components:{CodeSnippet:B},data:function(){return{installSnippet:ct,mainSnippet:ot,eventsSnippet:lt,componentSnippet:ut}}},pt=vt,dt=Object(_["a"])(pt,rt,it,!1,null,null,null),mt=dt.exports,ht=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-home page"},[n("section",{staticClass:"nav"},[n("router-link",{attrs:{to:{name:"STARTED"}}},[t._v("\n 快速开始\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 事件行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 返回\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"TRACK_VIEW"}}},[t._v("\n 页面行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"BLOCK_SHOW"}}},[t._v("\n 区域展现埋点\n ")]),t._v(" "),n("a",{attrs:{href:"https://github.com/l-hammer/v-track/issues"}},[t._v("打开一个 issue")])],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个自定义事件行为埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content"},[n("Button",{directives:[{name:"track",rawName:"v-track:18015.custom-event",value:t.handleCustomEvent,expression:"handleCustomEvent",arg:"18015",modifiers:{"custom-event":!0}}]})],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.ButtonComponentSnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackCustomEventSnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个有带参数的自定义事件埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content"},[n("Button",{directives:[{name:"track",rawName:"v-track:18019.custom-event",value:t.handleCustomEventWithParam,expression:"handleCustomEventWithParam",arg:"18019",modifiers:{"custom-event":!0}}]})],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.ButtonComponentWithParamSnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackCustomEventWithParamSnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个发生在自定义事件之后的埋点,默认先执行埋点再执行自定义事件。如示例所示:activeName初始值为Feedback,自定义事件会更新该值,所以埋点获取到activeName的值应为当前激活面板的name",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content collapse-wrapper"},[n("el-collapse",{directives:[{name:"track",rawName:"v-track:18020.change.delay",value:t.handleChange,expression:"handleChange",arg:"18020",modifiers:{change:!0,delay:!0}}],attrs:{accordion:""},model:{value:t.activeName,callback:function(e){t.activeName=e},expression:"activeName"}},[n("el-collapse-item",{attrs:{title:"反馈 Feedback",name:"Feedback"}},[n("div",[t._v("\n 控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;\n ")]),t._v(" "),n("div",[t._v("页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。")])]),t._v(" "),n("el-collapse-item",{attrs:{title:"效率 Efficiency",name:"Efficiency"}},[n("div",[t._v("简化流程:设计简洁直观的操作流程;")]),t._v(" "),n("div",[t._v("\n 清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;\n ")]),t._v(" "),n("div",[t._v("\n 帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。\n ")])]),t._v(" "),n("el-collapse-item",{attrs:{title:"可控 Controllability",name:"Controllability"}},[n("div",[t._v("\n 用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;\n ")]),t._v(" "),n("div",[t._v("\n 结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。\n ")])])],1)],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackCustomEventDelaySnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"js",code:t.jsTrackCustomEventDelaySnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个有异步行为的自定义事件埋点。如示例所示:rest初始值为null,自定义事件会fetch为success,所以埋点获取到的rest值应该为success",closable:!1}}),n("el-alert",{attrs:{center:"",type:"warning",title:"备注:同普通DOM事件埋点一样,只有在 rest 发生变化时才会触发埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content"},[n("Button",{directives:[{name:"track",rawName:"v-track:18021.custom-event.async",value:{fetchRest:t.fetchRest,rest:t.rest},expression:"{ fetchRest, rest }",arg:"18021",modifiers:{"custom-event":!0,async:!0}}]})],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackCustomEventAsyncSnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"js",code:t.jsTrackCustomEventAsyncSnippet}})],1)])},ft=[],kt='\n\x3c!-- button 组件 --\x3e\n
\n click me\n
\n',yt='\n\x3c!-- button 组件 --\x3e\n
\n click me\n
\n',gt='\n\n',Ct='\n\n',_t='\n\n ...\n ...\n ...\n\n',wt='\nexport default {\n data() {\n return {\n activeName: "Feedback",\n };\n },\n methods: {\n handleChange(val) {\n this.activeName = val;\n }\n }\n}\n',bt='\n\n',St='\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',Et={name:"CustomEvents",components:{Button:G,CodeSnippet:B},data:function(){return{ButtonComponentSnippet:kt,ButtonComponentWithParamSnippet:yt,trackCustomEventSnippet:gt,trackCustomEventWithParamSnippet:Ct,trackCustomEventDelaySnippet:_t,trackCustomEventAsyncSnippet:bt,jsTrackCustomEventDelaySnippet:wt,jsTrackCustomEventAsyncSnippet:St,item:{id:Math.random().toString(36).substr(2)},activeName:"Feedback",rest:null}},methods:{handleCustomEvent:function(){this.$message.success("自定义事件执行成功")},handleCustomEventWithParam:function(t,e){var n=e.target;this.$message.success("自定义事件执行成功,参数为".concat(x()(t),"--").concat(n))},handleChange:function(t){this.activeName=t},fetchRest:function(){var t=Object(j["a"])(regeneratorRuntime.mark(function t(){var e;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,new T.a(function(t){setTimeout(function(){t({data:"success"})},300)});case 2:e=t.sent,this.rest===e.data?this.$message.success("异步事件返回成功,但返回结果和上一次相等,埋点不会上报"):(this.rest=e.data,this.$message.success("异步事件返回成功"));case 4:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}()}},Ot=Et,Tt=Object(_["a"])(Ot,ht,ft,!1,null,null,null),jt=Tt.exports,$t=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-home page"},[n("section",{staticClass:"nav"},[n("router-link",{attrs:{to:{name:"STARTED"}}},[t._v("\n 快速开始\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 事件行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"CUSTOM_EVENTS"}}},[t._v("\n 自定义事件埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 返回\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"BLOCK_SHOW"}}},[t._v("\n 区域展现埋点\n ")]),t._v(" "),n("a",{attrs:{href:"https://github.com/l-hammer/v-track/issues"}},[t._v("打开一个 issue")])],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个页面初始化埋点",closable:!1}}),t._v(" "),n("el-alert",{attrs:{center:"",type:"warning",title:"备注:v-track指令可用于任何元素,此行为埋点建议绑定到页面的根元素或者v-track提供的track-view组件上",closable:!1}}),t._v(" "),n("div",{directives:[{name:"track",rawName:"v-track:18022",arg:"18022"}],staticClass:"section-content"})],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackViewComponentSnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"配合 v-if 指令控制埋点上报次数,即 show 为真时,会再次触发埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content"},[t.show?n("track-view",{directives:[{name:"track",rawName:"v-track:18023",arg:"18023"}]}):t._e(),t._v(" "),n("div",{staticClass:"track-button",on:{click:function(){return t.show=!t.show}}},[t._v("\n click me -> "+t._s(t.show)+"\n ")])],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackViewComponentVIfSnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"js",code:t.jsTrackViewComponentVIfSnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个监听页面行为的埋点,同事件行为埋点一样,只有当返回结果发生变化时才会上报埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content"},[n("track-view",{directives:[{name:"track",rawName:"v-track:18025.watch",value:{rest1:t.rest1},expression:"{ rest1 }",arg:"18025",modifiers:{watch:!0}}]}),t._v(" "),n("div",{staticClass:"track-button",on:{click:function(e){return t.fetchRest(!1)}}},[t._v("\n click me\n ")])],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackViewComponentWatchSnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"js",code:t.jsTrackViewComponentWatchSnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个监听页面行为并延时的埋点,不同于事件延时埋点,这里可通过delay设置具体的延长时间",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content"},[n("track-view",{directives:[{name:"track",rawName:"v-track:18026.watch.delay",value:{rest2:t.rest2,delay:2e3},expression:"{ rest2, delay: 2000 }",arg:"18026",modifiers:{watch:!0,delay:!0}}]}),t._v(" "),n("div",{staticClass:"track-button",on:{click:function(e){return t.fetchRest(!0)}}},[t._v("\n click me\n ")])],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackViewComponentWatchDelaySnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"js",code:t.jsTrackViewComponentWatchDelaySnippet}})],1)])},xt=[],Vt="\n\n",Pt='\n\n
click me -> {{ show }}
\n',Mt="\nexport default {\n data: () => ({ show: false })\n}\n",Nt='\n\n
click me
\n',At='\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',Rt='\n\n
click me
\n',Wt='\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',Dt={name:"TrackViews",components:{CodeSnippet:B},data:function(){return{trackViewComponentSnippet:Vt,trackViewComponentVIfSnippet:Pt,jsTrackViewComponentVIfSnippet:Mt,trackViewComponentWatchSnippet:Nt,jsTrackViewComponentWatchSnippet:At,trackViewComponentWatchDelaySnippet:Rt,jsTrackViewComponentWatchDelaySnippet:Wt,show:!1,rest1:null,rest2:null}},methods:{fetchRest:function(){var t=Object(j["a"])(regeneratorRuntime.mark(function t(e){var n;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,new T.a(function(t){setTimeout(function(){t({data:"success"})},300)});case 2:n=t.sent,!e&&this.rest1===n.data||e&&this.rest2===n.data?this.$message.success("异步事件返回成功,但返回结果和上一次相等,埋点不会上报"):(this.$message.success("异步事件返回成功"),e?this.rest2=n.data:this.rest1=n.data);case 4:case"end":return t.stop()}},t,this)}));function e(e){return t.apply(this,arguments)}return e}()}},Ht=Dt,Bt=Object(_["a"])(Ht,$t,xt,!1,null,null,null),Ut=Bt.exports,It=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-home page"},[n("section",{staticClass:"nav"},[n("router-link",{attrs:{to:{name:"STARTED"}}},[t._v("\n 快速开始\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 事件行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"CUSTOM_EVENTS"}}},[t._v("\n 自定义事件埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"TRACK_VIEW"}}},[t._v("\n 页面行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 返回\n ")]),t._v(" "),n("a",{attrs:{href:"https://github.com/l-hammer/v-track/issues"}},[t._v("打开一个 issue")])],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个只会上报一次的区域展现埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content large"},[n("el-card",{directives:[{name:"track",rawName:"v-track:18028.show.once",arg:"18028",modifiers:{show:!0,once:!0}}],attrs:{shadow:"always"}},[t._v("\n 我只想被曝光一次\n ")])],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackViewComponentOnceSnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个会连续上报的区域展现埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content large"},[n("el-card",{directives:[{name:"track",rawName:"v-track:18027.show",arg:"18027",modifiers:{show:!0}}],attrs:{shadow:"always"}},[t._v("\n 我想被曝光无数次\n ")])],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackViewComponentSnippet}})],1)])},Lt=[],Ft='\n我想被曝光无数次\n',Kt='\n我只想被曝光一次\n',Gt={name:"BlockShow",components:{CodeSnippet:B},data:function(){return{trackViewComponentSnippet:Ft,trackViewComponentOnceSnippet:Kt,show:!1,rest1:null,rest2:null}},methods:{fetchRest:function(){var t=Object(j["a"])(regeneratorRuntime.mark(function t(e){var n;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,new T.a(function(t){setTimeout(function(){t({data:"success"})},300)});case 2:n=t.sent,!e&&this.rest1===n.data||e&&this.rest2===n.data?this.$message.success("异步事件返回成功,但返回结果和上一次相等,埋点不会上报"):(this.$message.success("异步事件返回成功"),e?this.rest2=n.data:this.rest1=n.data);case 4:case"end":return t.stop()}},t,this)}));function e(e){return t.apply(this,arguments)}return e}()}},qt=Gt,zt=Object(_["a"])(qt,It,Lt,!1,null,null,null),Yt=zt.exports;function Jt(t){return Jt="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Jt(t)}function Qt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Xt(t,e){for(var n=0;n=0||(s[n]=t[n]);return s}function ae(t,e){if(null==t)return{};var n,a,s=ne(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(s[n]=t[n])}return s}function se(t,e){return ce(t)||le(t,e)||ve()}function re(t){return ie(t)||oe(t)||ue()}function ie(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e1&&void 0!==arguments[1]?arguments[1]:200;return function(){for(var a=this,s=arguments.length,r=new Array(s),i=0;i0&&t.right>0&&t.top2&&void 0!==arguments[2]?arguments[2]:window;if(Qt(this,t),!we(e))throw new Error("not an element node");this.ele=e,this.ref=n,this.refWin=a,this.started=!1,this.listeners={},this.removeScrollLisener=null,this.init()}return Zt(t,[{key:"init",value:function(){var t=this;if(!this.started){var e=fe(this.visibilitychange.bind(this));e(),this.removeScrollLisener=function(e){return t.ref?t.ref.$on("scroll",e):(t.refWin.addEventListener("scroll",e,!1),function(){return t.refWin.removeEventListener("scroll",e,!1)})}(e),this.started=!0}}},{key:"viewport",value:function(){var t=this.refWin;return{height:t.innerHeight,width:t.innerWidth}}},{key:"$on",value:function(t,e){var n=this.listeners[t]||(this.listeners[t]=[]);return n.push(e),this}},{key:"$off",value:function(t,e){if(e){var n,a=this.listeners[t],s=a.length;while(s--)if(n=a[s],n===e||n.cbk===e){a.splice(s,1);break}return this}}},{key:"$once",value:function(t,e){var n=this,a=function a(){n.$off(t,a);for(var s=arguments.length,r=new Array(s),i=0;i1?n-1:0),s=1;s=0?n=Math.min(t.height,e.height-t.top):t.bottom>0&&(n=Math.min(e.height,t.bottom)),t.left>=0?a=Math.min(t.width,e.width-t.left):t.right>0&&(a=Math.min(e.width,t.right)),s=n*a/(t.height*t.width),1===s&&this.$emit("fullyvisible")}},{key:"destroy",value:function(){pe(this.removeScrollLisener)&&this.removeScrollLisener()}}]),t}(),Te=["async","delay","watch","show","once","custom"];function je(t,e,n,a){var s=this,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};t.$unwatch=a.$watch(function(){return a[e]},function(e,a){e!==a&&(r.immediate||t.contains(s.target))&&n(),s.target=null})}function $e(t,e,n,a,s,r){var i=this,c=e.value,o=e.arg,l=e.modifiers,u=e.rawName,v=n.context,p=n.componentInstance;if(!r[o])throw new Error("tracking event does not exist");var d=[],m=r[o].bind(null,v),h=function(e,n,a){return je.call(i,t,e,n,v,a)},f=function(){for(var t=arguments.length,e=new Array(t),n=0;n1?e-1:0),a=1;a68?a-1:a).concat(e)}],M:[Ae,function(t,e){t.month=e-1}],d:[Ae,function(t,e){t.day=e}],h:[Ae,function(t,e){t.hour=e}],m:[Ae,function(t,e){t.minute=e}],s:[Ae,function(t,e){t.second=e}]};Ie.MM=Ie.M,Ie.dd=Ie.d,Ie.hh=Ie.h,Ie.H=Ie.h,Ie.HH=Ie.h,Ie.mm=Ie.m,Ie.ss=Ie.s;var Le=n("a4bb"),Fe=n.n(Le),Ke=function(t){var e=Fe()(t).reduce(function(e,n){return e.push({key:n,val:t[n]}),e},[]),n=e.map(function(t){var e=t.key,n=t.val;return'\n
\n '.concat(e,"\n ").concat(n,"\n
\n ")}).join("");return'\n
\n
\n key\n value\n
\n '.concat(n,"\n
\n ")};function Ge(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Object(Ne["a"])({evt:t},e,{action_time:Ue(P()())});"1"===t&&i()("统计UVPV埋点"),"2"===t&&i()({message:"统计页面停留时间埋点",customClass:"message-offset"}),s.a.success({title:"上报数据如下:",dangerouslyUseHTMLString:!0,message:Ke(n),customClass:"notification__large",position:"1"===t||"2"===t?"top-left":"top-right"})}var qe={UVPV:function(){Ge("1")},TONP:function(t,e){var n=e.et,a=e.dt;Ge("2",{stt:"".concat((a-n)/1e3,"s")})},18015:function(t){var e=t.$route.name;Ge("18015",{source_page:e})},18016:function(t,e,n){var a=t.$route.name,s=e.id,r=n.target;Ge("18016",{id:s,source_page:a,target:r})},18017:function(t){var e=t.index,n=t.$route.name;Ge("18017",{source_page:n,index:e})},18018:function(t){var e=t.rest,n=t.$route.name;Ge("18018",{source_page:n,rest:e})},18019:function(t,e,n){var a=t.$route.name,s=e.id,r=n.target;Ge("18019",{id:s,source_page:a,target:r})},18020:function(t){var e=t.activeName,n=t.$route.name;Ge("18020",{source_page:n,active_name:e})},18021:function(t){var e=t.rest,n=t.$route.name;Ge("18021",{source_page:n,rest:e})},18022:function(t){var e=t.$route.name;Ge("18022",{source_page:e,description:"这是一个页面初始化埋点"})},18023:function(t){var e=t.$route.name;Ge("18023",{source_page:e})},18025:function(t){var e=t.rest1,n=t.$route.name;Ge("18025",{source_page:n,rest:e})},18026:function(t){var e=t.rest2,n=t.$route.name;Ge("18026",{source_page:n,rest:e})},18027:function(t){var e=t.$route.name;Ge("18027",{source_page:e,description:"我想被曝光无数次"})},18028:function(t){var e=t.$route.name;Ge("18028",{source_page:e,description:"我只想被曝光一次"})}},ze=Object(Ne["a"])({},qe);h["default"].use(f["a"]),h["default"].use(m.a),h["default"].use(p.a),h["default"].use(u.a),h["default"].use(o.a),h["default"].use(Me,{trackEvents:ze,trackEnable:{UVPV:"routeUpdate",TONP:!0}}),h["default"].prototype.$message=i.a,h["default"].prototype.$notify=s.a;var Ye=new f["a"]({routes:[{path:"/",name:"HOME",component:st},{path:"/started",name:"STARTED",component:mt},{path:"/custom-events",name:"CUSTOM_EVENTS",component:jt},{path:"/track-view",name:"TRACK_VIEW",component:Ut},{path:"/block-show",name:"BLOCK_SHOW",component:Yt},{path:"*",redirect:"/"}]});new h["default"]({el:"#app",router:Ye,render:function(t){return t(b)}})}}); +//# sourceMappingURL=app.1f68f820.js.map \ No newline at end of file diff --git a/docs/dist/js/app.1f68f820.js.map b/docs/dist/js/app.1f68f820.js.map new file mode 100644 index 0000000..9fe30d3 --- /dev/null +++ b/docs/dist/js/app.1f68f820.js.map @@ -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?a01d","webpack:///docs/App.vue","webpack:///./docs/App.vue?56fd","webpack:///./docs/App.vue","webpack:///./docs/pages/home.vue?8db1","webpack:///./docs/components/code-snippet.vue?5c29","webpack:///docs/components/code-snippet.vue","webpack:///./docs/components/code-snippet.vue?f86d","webpack:///./docs/components/code-snippet.vue","webpack:///./docs/components/button.vue?1c4f","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?0df5","webpack:///docs/pages/started.vue","webpack:///./docs/pages/started.vue?30ab","webpack:///./docs/pages/started.vue","webpack:///./docs/pages/custom-events.vue?7f6f","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?21d5","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?278d","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_6e3a03c8_render","_vm","this","_h","$createElement","_c","_self","attrs","id","_m","_v","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","_e","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_3934af0c_render","once","shadow","trackViewComponentOnceSnippet","block_showvue_type_template_id_3934af0c_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","viewport","width","height","bottom","right","top","left","isVisible","document","parentNode","parent","visibility","display","VisMonitor","ref","refwin","refWin","listeners","removeScrollLisener","init","listener","visibilitychange","$on","addEventListener","removeEventListener","win","innerHeight","innerWidth","evt","cbk","queue","_this2","$off","_this3","_len2","_key2","sub","getBoundingClientRect","view","vh","vw","perc","min","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","custom","$visMonitor","vm","$refs","$once","_events$id","_zipArray","_zipArray2","_args","_fn","_exp2","reverse","$listener","_args2","_keys","_fn2","_exp3","eventName","_zipArray3","_zipArray4","_events$id2","_ref3","_len3","_key3","updated","_len4","_key4","unbind","destroy","VTrack","installed","curPage","Vue","trackEvents","_ref$trackEnable","trackEnable","self","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","fullPath","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","$route","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","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.1f68f820.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('router-view'),_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\":\"http://hits.dwyl.io/l-hammer/v-track\",\"alt\":\"hit count\"}},[_c('img',{attrs:{\"src\":\"http://hits.dwyl.io/l-hammer/v-track.svg\"}})]),_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 }","\n\n\n\n\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=6e3a03c8&\"\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 }","\n\n\n\n\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 }","\n\n\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","\n\n\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 }","\n\n\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 }","\n\n\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 }","\n\n\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)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\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=3934af0c&\"\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-04-20 18:06:43\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(value) {\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: 2019-04-08 11:59:30\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 < viewport.height && rect.left < viewport.width;\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\n _classCallCheck(this, VisMonitor);\n\n if (!isElement(ele)) {\n throw new Error(\"not an element node\");\n }\n\n this.ele = ele;\n this.ref = ref;\n this.refWin = refwin;\n this.started = false;\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, false);\n\n return function () {\n return _this.refWin.removeEventListener(\"scroll\", listener, false);\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 return {\n height: win.innerHeight,\n width: win.innerWidth\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 return 0;\n }\n\n var vh = 0;\n var vw = 0;\n var perc = 0;\n\n if (rect.top >= 0) {\n vh = Math.min(rect.height, view.height - rect.top);\n } else if (rect.bottom > 0) {\n vh = Math.min(view.height, rect.bottom);\n }\n\n if (rect.left >= 0) {\n vw = Math.min(rect.width, view.width - rect.left);\n } else if (rect.right > 0) {\n vw = Math.min(view.width, rect.right);\n }\n\n perc = vh * vw / (rect.height * rect.width);\n if (perc === 1) this.$emit(\"fullyvisible\");\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 fn = function fn() {\n return events[id](context);\n };\n\n var once = partialMatch(\"once\");\n var custom = partialMatch(\"custom\");\n\n if (!el.$visMonitor) {\n var vm = new VisMonitor(el, custom && context.$refs[value.ref]);\n (once ? vm.$once : vm.$on).call(vm, \"fullyvisible\", fn);\n el.$visMonitor = vm;\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$id;\n\n var _zipArray = zipArray(value),\n _zipArray2 = _slicedToArray(_zipArray, 2),\n _args = _zipArray2[0],\n keys = _zipArray2[1];\n\n var _fn = _args.shift();\n\n var _exp2 = _toConsumableArray(keys).pop();\n\n checkFun(_fn);\n tck = (_events$id = events[id]).bind.apply(_events$id, [null, context].concat(_toConsumableArray(_args)));\n queue = [tck, _fn.bind.apply(_fn, [null].concat(_toConsumableArray(_args)))];\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 _args2, _keys, _fn2, _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 _zipArray3 = zipArray(value);\n\n var _zipArray4 = _slicedToArray(_zipArray3, 2);\n\n _args2 = _zipArray4[0];\n _keys = _zipArray4[1];\n _fn2 = _args2.shift();\n _exp3 = _toConsumableArray(_keys).pop();\n checkFun(_fn2);\n }\n\n if (el[\"$on_\".concat(eventName)]) return;\n componentInstance.$on(eventName, function () {\n var _events$id2, _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$id2 = events[id]).bind.apply(_events$id2, [null, context].concat(data));\n queue = [tck, (_ref3 = _fn2 || 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 this.curPage = null; // 保存当前页name\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 var self = this;\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 }); // 注册全局组件\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(to, _, next) {\n // 防止有些情况该守卫执行多次导致重复埋点的问题\n if (to.fullPath === self.curPage) {\n next();\n } else {\n self.curPage = to.fullPath;\n next(function (vm) {\n trackEnable.UVPV && trackEvents.UVPV(vm);\n });\n }\n },\n beforeRouteUpdate: function beforeRouteUpdate(_, __, next) {\n if (trackEnable.UVPV && trackEnable.UVPV === \"routeUpdate\") {\n trackEvents.UVPV(this);\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
\n ${key}\n ${val}\n
\n `;\n })\n .join(\"\");\n\n return `\n
\n
\n key\n value\n
\n ${trs}\n
\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: 2019-07-26 11:32:10\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};\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 },\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":""} \ No newline at end of file diff --git a/docs/dist/js/app.96608e54.js b/docs/dist/js/app.96608e54.js deleted file mode 100644 index 736ce50..0000000 --- a/docs/dist/js/app.96608e54.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(t){function e(e){for(var a,i,c=e[0],o=e[1],l=e[2],v=0,p=[];vclick me\n',z='\n\n',Y='\n
click me
\n',J="\nexport default {\n data: () => ({\n item: {\n id: Date.now().toString(36)\n },\n })\n}\n",Q='\n
click me
\n',X="\nexport default {\n data() {\n return {\n index: 0\n };\n },\n methods: {\n handleClickDelay() {\n this.index++;\n },\n }\n}\n",Z='\n
click me
\n',tt='\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',et={name:"Home",components:{Button:G,CodeSnippet:B},data:function(){return{trackClickSnippet:q,trackNativeClickSnippet:z,trackClickWithParamSnippet:Y,jsTrackClickWithParamSnippet:J,trackClickDelaySnippet:Q,trackClickAsyncSnippet:Z,jsTrackClickDelaySnippet:X,jsTrackClickAsyncSnippet:tt,item:{id:V()().toString(36)},index:0,rest:null}},methods:{handleClick:function(){this.$message.success("事件执行成功")},handleNativeEvent:function(){this.$message.success("组件原生事件执行成功")},handleClickWithParam:function(t,e){var n=e.target;this.$message.success("事件执行成功,参数为".concat(x()(t),"--").concat(n))},handleClickDelay:function(){this.index++},handleClickAsync:function(){var t=Object(j["a"])(regeneratorRuntime.mark(function t(){var e;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,new T.a(function(t){setTimeout(function(){t({data:"success"})},300)});case 2:e=t.sent,this.rest===e.data?this.$message.success("异步事件返回成功,但返回结果和上一次相等,埋点不会上报"):(this.rest=e.data,this.$message.success("异步事件返回成功"));case 4:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}()}},nt=et,at=Object(_["a"])(nt,S,E,!1,null,null,null),st=at.exports,rt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-started page"},[n("section",{staticClass:"nav"},[n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 返回\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 事件行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"CUSTOM_EVENTS"}}},[t._v("\n 自定义事件埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"TRACK_VIEW"}}},[t._v("\n 页面行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"BLOCK_SHOW"}}},[t._v("\n 区域展现埋点\n ")]),t._v(" "),n("a",{attrs:{href:"https://github.com/l-hammer/v-track/issues"}},[t._v("打开一个 issue")])],1),t._v(" "),t._m(0),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{code:t.installSnippet,lang:"shell"}}),t._v(" "),n("div",{staticClass:"plus"},[t._v("+")]),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{code:t.mainSnippet,lang:"js"}}),t._v(" "),n("div",{staticClass:"plus"},[t._v("+")]),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{code:t.eventsSnippet,lang:"js"}}),t._v(" "),n("div",{staticClass:"plus"},[t._v("+")]),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{code:t.componentSnippet,lang:"html"}})],1)])},it=[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"snippets"},[n("div",{staticClass:"section-content small"},[t._v("\n v-track通过\n "),n("a",{attrs:{href:"https://cn.vuejs.org/v2/guide/custom-directive.html"}},[t._v("Vue 自定义指令")]),t._v("的方式将埋点代码与业务代码完全解耦,完整示例可参考\n "),n("a",{attrs:{href:"https://github.com/l-hammer/v-track/tree/master"}},[t._v("GitHub")])])])}],ct="\n# YARN\n$ yarn add v-track\n\n# NPM\n$ npm install v-track --save\n",ot='\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统计,默认为false\n TONP: true // 是否开启页面停留时长统计,默认为false\n }\n})\n',lt='\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',ut='\n\x3c!-- 页面行为埋点(track-view为v-track全局注册的组件) --\x3e\n\n\n\n\n\n\x3c!-- 事件行为埋点(DOM) --\x3e\n
\n
\n
\n
\n\n\x3c!-- 事件行为埋点(组件) --\x3e\n\n\n\n\n\n\x3c!-- 区域展现埋点(block 可以是 DOM 或者组件) --\x3e\n\n\n\n\n',vt={name:"Started",components:{CodeSnippet:B},data:function(){return{installSnippet:ct,mainSnippet:ot,eventsSnippet:lt,componentSnippet:ut}}},pt=vt,dt=Object(_["a"])(pt,rt,it,!1,null,null,null),mt=dt.exports,ht=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-home page"},[n("section",{staticClass:"nav"},[n("router-link",{attrs:{to:{name:"STARTED"}}},[t._v("\n 快速开始\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 事件行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 返回\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"TRACK_VIEW"}}},[t._v("\n 页面行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"BLOCK_SHOW"}}},[t._v("\n 区域展现埋点\n ")]),t._v(" "),n("a",{attrs:{href:"https://github.com/l-hammer/v-track/issues"}},[t._v("打开一个 issue")])],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个自定义事件行为埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content"},[n("Button",{directives:[{name:"track",rawName:"v-track:18015.custom-event",value:t.handleCustomEvent,expression:"handleCustomEvent",arg:"18015",modifiers:{"custom-event":!0}}]})],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.ButtonComponentSnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackCustomEventSnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个有带参数的自定义事件埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content"},[n("Button",{directives:[{name:"track",rawName:"v-track:18019.custom-event",value:t.handleCustomEventWithParam,expression:"handleCustomEventWithParam",arg:"18019",modifiers:{"custom-event":!0}}]})],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.ButtonComponentWithParamSnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackCustomEventWithParamSnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个发生在自定义事件之后的埋点,默认先执行埋点再执行自定义事件。如示例所示:activeName初始值为Feedback,自定义事件会更新该值,所以埋点获取到activeName的值应为当前激活面板的name",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content collapse-wrapper"},[n("el-collapse",{directives:[{name:"track",rawName:"v-track:18020.change.delay",value:t.handleChange,expression:"handleChange",arg:"18020",modifiers:{change:!0,delay:!0}}],attrs:{accordion:""},model:{value:t.activeName,callback:function(e){t.activeName=e},expression:"activeName"}},[n("el-collapse-item",{attrs:{title:"反馈 Feedback",name:"Feedback"}},[n("div",[t._v("\n 控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;\n ")]),t._v(" "),n("div",[t._v("页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。")])]),t._v(" "),n("el-collapse-item",{attrs:{title:"效率 Efficiency",name:"Efficiency"}},[n("div",[t._v("简化流程:设计简洁直观的操作流程;")]),t._v(" "),n("div",[t._v("\n 清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;\n ")]),t._v(" "),n("div",[t._v("\n 帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。\n ")])]),t._v(" "),n("el-collapse-item",{attrs:{title:"可控 Controllability",name:"Controllability"}},[n("div",[t._v("\n 用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;\n ")]),t._v(" "),n("div",[t._v("\n 结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。\n ")])])],1)],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackCustomEventDelaySnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"js",code:t.jsTrackCustomEventDelaySnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个有异步行为的自定义事件埋点。如示例所示:rest初始值为null,自定义事件会fetch为success,所以埋点获取到的rest值应该为success",closable:!1}}),n("el-alert",{attrs:{center:"",type:"warning",title:"备注:同普通DOM事件埋点一样,只有在 rest 发生变化时才会触发埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content"},[n("Button",{directives:[{name:"track",rawName:"v-track:18021.custom-event.async",value:{fetchRest:t.fetchRest,rest:t.rest},expression:"{ fetchRest, rest }",arg:"18021",modifiers:{"custom-event":!0,async:!0}}]})],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackCustomEventAsyncSnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"js",code:t.jsTrackCustomEventAsyncSnippet}})],1)])},ft=[],kt='\n\x3c!-- button 组件 --\x3e\n
\n click me\n
\n',yt='\n\x3c!-- button 组件 --\x3e\n
\n click me\n
\n',gt='\n\n',Ct='\n\n',_t='\n\n ...\n ...\n ...\n\n',wt='\nexport default {\n data() {\n return {\n activeName: "Feedback",\n };\n },\n methods: {\n handleChange(val) {\n this.activeName = val;\n }\n }\n}\n',bt='\n\n',St='\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',Et={name:"CustomEvents",components:{Button:G,CodeSnippet:B},data:function(){return{ButtonComponentSnippet:kt,ButtonComponentWithParamSnippet:yt,trackCustomEventSnippet:gt,trackCustomEventWithParamSnippet:Ct,trackCustomEventDelaySnippet:_t,trackCustomEventAsyncSnippet:bt,jsTrackCustomEventDelaySnippet:wt,jsTrackCustomEventAsyncSnippet:St,item:{id:Math.random().toString(36).substr(2)},activeName:"Feedback",rest:null}},methods:{handleCustomEvent:function(){this.$message.success("自定义事件执行成功")},handleCustomEventWithParam:function(t,e){var n=e.target;this.$message.success("自定义事件执行成功,参数为".concat(x()(t),"--").concat(n))},handleChange:function(t){this.activeName=t},fetchRest:function(){var t=Object(j["a"])(regeneratorRuntime.mark(function t(){var e;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,new T.a(function(t){setTimeout(function(){t({data:"success"})},300)});case 2:e=t.sent,this.rest===e.data?this.$message.success("异步事件返回成功,但返回结果和上一次相等,埋点不会上报"):(this.rest=e.data,this.$message.success("异步事件返回成功"));case 4:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}()}},Ot=Et,Tt=Object(_["a"])(Ot,ht,ft,!1,null,null,null),jt=Tt.exports,$t=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-home page"},[n("section",{staticClass:"nav"},[n("router-link",{attrs:{to:{name:"STARTED"}}},[t._v("\n 快速开始\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 事件行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"CUSTOM_EVENTS"}}},[t._v("\n 自定义事件埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 返回\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"BLOCK_SHOW"}}},[t._v("\n 区域展现埋点\n ")]),t._v(" "),n("a",{attrs:{href:"https://github.com/l-hammer/v-track/issues"}},[t._v("打开一个 issue")])],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个页面初始化埋点",closable:!1}}),t._v(" "),n("el-alert",{attrs:{center:"",type:"warning",title:"备注:v-track指令可用于任何元素,此行为埋点建议绑定到页面的根元素或者v-track提供的track-view组件上",closable:!1}}),t._v(" "),n("div",{directives:[{name:"track",rawName:"v-track:18022",arg:"18022"}],staticClass:"section-content"})],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackViewComponentSnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"配合 v-if 指令控制埋点上报次数,即 show 为真时,会再次触发埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content"},[t.show?n("track-view",{directives:[{name:"track",rawName:"v-track:18023",arg:"18023"}]}):t._e(),t._v(" "),n("div",{staticClass:"track-button",on:{click:function(){return t.show=!t.show}}},[t._v("\n click me -> "+t._s(t.show)+"\n ")])],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackViewComponentVIfSnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"js",code:t.jsTrackViewComponentVIfSnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个监听页面行为的埋点,同事件行为埋点一样,只有当返回结果发生变化时才会上报埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content"},[n("track-view",{directives:[{name:"track",rawName:"v-track:18025.watch",value:{rest1:t.rest1},expression:"{ rest1 }",arg:"18025",modifiers:{watch:!0}}]}),t._v(" "),n("div",{staticClass:"track-button",on:{click:function(e){return t.fetchRest(!1)}}},[t._v("\n click me\n ")])],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackViewComponentWatchSnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"js",code:t.jsTrackViewComponentWatchSnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个监听页面行为并延时的埋点,不同于事件延时埋点,这里可通过delay设置具体的延长时间",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content"},[n("track-view",{directives:[{name:"track",rawName:"v-track:18026.watch.delay",value:{rest2:t.rest2,delay:2e3},expression:"{ rest2, delay: 2000 }",arg:"18026",modifiers:{watch:!0,delay:!0}}]}),t._v(" "),n("div",{staticClass:"track-button",on:{click:function(e){return t.fetchRest(!0)}}},[t._v("\n click me\n ")])],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackViewComponentWatchDelaySnippet}}),t._v(" "),n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"js",code:t.jsTrackViewComponentWatchDelaySnippet}})],1)])},xt=[],Pt="\n\n",Vt='\n\n
click me -> {{ show }}
\n',Mt="\nexport default {\n data: () => ({ show: false })\n}\n",Nt='\n\n
click me
\n',At='\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',Wt='\n\n
click me
\n',Dt='\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',Rt={name:"TrackViews",components:{CodeSnippet:B},data:function(){return{trackViewComponentSnippet:Pt,trackViewComponentVIfSnippet:Vt,jsTrackViewComponentVIfSnippet:Mt,trackViewComponentWatchSnippet:Nt,jsTrackViewComponentWatchSnippet:At,trackViewComponentWatchDelaySnippet:Wt,jsTrackViewComponentWatchDelaySnippet:Dt,show:!1,rest1:null,rest2:null}},methods:{fetchRest:function(){var t=Object(j["a"])(regeneratorRuntime.mark(function t(e){var n;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,new T.a(function(t){setTimeout(function(){t({data:"success"})},300)});case 2:n=t.sent,!e&&this.rest1===n.data||e&&this.rest2===n.data?this.$message.success("异步事件返回成功,但返回结果和上一次相等,埋点不会上报"):(this.$message.success("异步事件返回成功"),e?this.rest2=n.data:this.rest1=n.data);case 4:case"end":return t.stop()}},t,this)}));function e(e){return t.apply(this,arguments)}return e}()}},Ht=Rt,Bt=Object(_["a"])(Ht,$t,xt,!1,null,null,null),Ut=Bt.exports,It=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-home page"},[n("section",{staticClass:"nav"},[n("router-link",{attrs:{to:{name:"STARTED"}}},[t._v("\n 快速开始\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 事件行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"CUSTOM_EVENTS"}}},[t._v("\n 自定义事件埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"TRACK_VIEW"}}},[t._v("\n 页面行为埋点\n ")]),t._v(" "),n("router-link",{attrs:{to:{name:"HOME"}}},[t._v("\n 返回\n ")]),t._v(" "),n("a",{attrs:{href:"https://github.com/l-hammer/v-track/issues"}},[t._v("打开一个 issue")])],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个只会上报一次的区域展现埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content large"},[n("el-card",{directives:[{name:"track",rawName:"v-track:18028.show.once",arg:"18028",modifiers:{show:!0,once:!0}}],attrs:{shadow:"always"}},[t._v("\n 我只想被曝光一次\n ")])],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackViewComponentOnceSnippet}})],1),t._v(" "),n("section",{staticClass:"demo"},[n("el-alert",{attrs:{center:"",type:"info",title:"这是一个会连续上报的区域展现埋点",closable:!1}}),t._v(" "),n("div",{staticClass:"section-content large"},[n("el-card",{directives:[{name:"track",rawName:"v-track:18027.show",arg:"18027",modifiers:{show:!0}}],attrs:{shadow:"always"}},[t._v("\n 我想被曝光无数次\n ")])],1)],1),t._v(" "),n("section",{staticClass:"snippets"},[n("CodeSnippet",{staticClass:"snippet",attrs:{lang:"html",code:t.trackViewComponentSnippet}})],1)])},Lt=[],Ft='\n我想被曝光无数次\n',Kt='\n我只想被曝光一次\n',Gt={name:"BlockShow",components:{CodeSnippet:B},data:function(){return{trackViewComponentSnippet:Ft,trackViewComponentOnceSnippet:Kt,show:!1,rest1:null,rest2:null}},methods:{fetchRest:function(){var t=Object(j["a"])(regeneratorRuntime.mark(function t(e){var n;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,new T.a(function(t){setTimeout(function(){t({data:"success"})},300)});case 2:n=t.sent,!e&&this.rest1===n.data||e&&this.rest2===n.data?this.$message.success("异步事件返回成功,但返回结果和上一次相等,埋点不会上报"):(this.$message.success("异步事件返回成功"),e?this.rest2=n.data:this.rest1=n.data);case 4:case"end":return t.stop()}},t,this)}));function e(e){return t.apply(this,arguments)}return e}()}},qt=Gt,zt=Object(_["a"])(qt,It,Lt,!1,null,null,null),Yt=zt.exports;function Jt(t){return Jt="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Jt(t)}function Qt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Xt(t,e){for(var n=0;n=0||(s[n]=t[n]);return s}function ae(t,e){if(null==t)return{};var n,a,s=ne(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(s[n]=t[n])}return s}function se(t,e){return ce(t)||le(t,e)||ve()}function re(t){return ie(t)||oe(t)||ue()}function ie(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e1&&void 0!==arguments[1]?arguments[1]:200;return function(){for(var a=this,s=arguments.length,r=new Array(s),i=0;i0&&t.right>0&&t.top2&&void 0!==arguments[2]?arguments[2]:window;if(Qt(this,t),!we(e))throw new Error("not an element node");this.ele=e,this.ref=n,this.refWin=a,this.started=!1,this.listeners={},this.removeScrollLisener=null,this.init()}return Zt(t,[{key:"init",value:function(){var t=this;if(!this.started){var e=fe(this.visibilitychange.bind(this));e(),this.removeScrollLisener=function(e){return t.ref?t.ref.$on("scroll",e):(t.refWin.addEventListener("scroll",e,!1),function(){return t.refWin.removeEventListener("scroll",e,!1)})}(e),this.started=!0}}},{key:"viewport",value:function(){var t=this.refWin;return{height:t.innerHeight,width:t.innerWidth}}},{key:"$on",value:function(t,e){var n=this.listeners[t]||(this.listeners[t]=[]);return n.push(e),this}},{key:"$off",value:function(t,e){if(e){var n,a=this.listeners[t],s=a.length;while(s--)if(n=a[s],n===e||n.cbk===e){a.splice(s,1);break}return this}}},{key:"$once",value:function(t,e){var n=this,a=function a(){n.$off(t,a);for(var s=arguments.length,r=new Array(s),i=0;i1?n-1:0),s=1;s=0?n=Math.min(t.height,e.height-t.top):t.bottom>0&&(n=Math.min(e.height,t.bottom)),t.left>=0?a=Math.min(t.width,e.width-t.left):t.right>0&&(a=Math.min(e.width,t.right)),s=n*a/(t.height*t.width),1===s&&this.$emit("fullyvisible")}},{key:"destroy",value:function(){pe(this.removeScrollLisener)&&this.removeScrollLisener()}}]),t}(),Te=["async","delay","watch","show","once","custom"];function je(t,e,n,a){var s=this,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};t.$unwatch=a.$watch(function(){return a[e]},function(e,a){e!==a&&(r.immediate||t.contains(s.target))&&n(),s.target=null})}function $e(t,e,n,a,s,r){var i=this,c=e.value,o=e.arg,l=e.modifiers,u=e.rawName,v=n.context,p=n.componentInstance;if(!r[o])throw new Error("tracking event does not exist");var d=[],m=r[o].bind(null,v),h=function(e,n,a){return je.call(i,t,e,n,v,a)},f=function(){for(var t=arguments.length,e=new Array(t),n=0;n1?e-1:0),a=1;a68?a-1:a).concat(e)}],M:[Ae,function(t,e){t.month=e-1}],d:[Ae,function(t,e){t.day=e}],h:[Ae,function(t,e){t.hour=e}],m:[Ae,function(t,e){t.minute=e}],s:[Ae,function(t,e){t.second=e}]};Ie.MM=Ie.M,Ie.dd=Ie.d,Ie.hh=Ie.h,Ie.H=Ie.h,Ie.HH=Ie.h,Ie.mm=Ie.m,Ie.ss=Ie.s;var Le=n("a4bb"),Fe=n.n(Le),Ke=function(t){var e=Fe()(t).reduce(function(e,n){return e.push({key:n,val:t[n]}),e},[]),n=e.map(function(t){var e=t.key,n=t.val;return'\n
\n '.concat(e,"\n ").concat(n,"\n
\n ")}).join("");return'\n
\n
\n key\n value\n
\n '.concat(n,"\n
\n ")};function Ge(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Object(Ne["a"])({evt:t},e,{action_time:Ue(V()())});"1"===t&&i()("统计UVPV埋点"),"2"===t&&i()({message:"统计页面停留时间埋点",customClass:"message-offset"}),s.a.success({title:"上报数据如下:",dangerouslyUseHTMLString:!0,message:Ke(n),customClass:"notification__large",position:"1"===t||"2"===t?"top-left":"top-right"})}var qe={UVPV:function(){Ge("1")},TONP:function(t,e){var n=e.et,a=e.dt;Ge("2",{stt:"".concat((a-n)/1e3,"s")})},18015:function(t){var e=t.$route.name;Ge("18015",{source_page:e})},18016:function(t,e,n){var a=t.$route.name,s=e.id,r=n.target;Ge("18016",{id:s,source_page:a,target:r})},18017:function(t){var e=t.index,n=t.$route.name;Ge("18017",{source_page:n,index:e})},18018:function(t){var e=t.rest,n=t.$route.name;Ge("18018",{source_page:n,rest:e})},18019:function(t,e,n){var a=t.$route.name,s=e.id,r=n.target;Ge("18019",{id:s,source_page:a,target:r})},18020:function(t){var e=t.activeName,n=t.$route.name;Ge("18020",{source_page:n,active_name:e})},18021:function(t){var e=t.rest,n=t.$route.name;Ge("18021",{source_page:n,rest:e})},18022:function(t){var e=t.$route.name;Ge("18022",{source_page:e,description:"这是一个页面初始化埋点"})},18023:function(t){var e=t.$route.name;Ge("18023",{source_page:e})},18025:function(t){var e=t.rest1,n=t.$route.name;Ge("18025",{source_page:n,rest:e})},18026:function(t){var e=t.rest2,n=t.$route.name;Ge("18026",{source_page:n,rest:e})},18027:function(t){var e=t.$route.name;Ge("18027",{source_page:e,description:"我想被曝光无数次"})},18028:function(t){var e=t.$route.name;Ge("18028",{source_page:e,description:"我只想被曝光一次"})}},ze=Object(Ne["a"])({},qe);h["default"].use(f["a"]),h["default"].use(m.a),h["default"].use(p.a),h["default"].use(u.a),h["default"].use(o.a),h["default"].use(Me,{trackEvents:ze,trackEnable:{UVPV:!0,TONP:!0}}),h["default"].prototype.$message=i.a,h["default"].prototype.$notify=s.a;var Ye=new f["a"]({routes:[{path:"/",name:"HOME",component:st},{path:"/started",name:"STARTED",component:mt},{path:"/custom-events",name:"CUSTOM_EVENTS",component:jt},{path:"/track-view",name:"TRACK_VIEW",component:Ut},{path:"/block-show",name:"BLOCK_SHOW",component:Yt},{path:"*",redirect:"/"}]});new h["default"]({el:"#app",router:Ye,render:function(t){return t(b)}})}}); -//# sourceMappingURL=app.96608e54.js.map \ No newline at end of file diff --git a/docs/dist/js/app.96608e54.js.map b/docs/dist/js/app.96608e54.js.map deleted file mode 100644 index b82d478..0000000 --- a/docs/dist/js/app.96608e54.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./docs/App.vue?5ff7","webpack:///./docs/components/code-snippet.vue?2fbf","webpack:///./docs/App.vue?a01d","webpack:///docs/App.vue","webpack:///./docs/App.vue?56fd","webpack:///./docs/App.vue","webpack:///./docs/pages/home.vue?8db1","webpack:///./docs/components/code-snippet.vue?5c29","webpack:///docs/components/code-snippet.vue","webpack:///./docs/components/code-snippet.vue?f86d","webpack:///./docs/components/code-snippet.vue","webpack:///./docs/components/button.vue?1c4f","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?5751","webpack:///docs/pages/started.vue","webpack:///./docs/pages/started.vue?30ab","webpack:///./docs/pages/started.vue","webpack:///./docs/pages/custom-events.vue?7f6f","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?21d5","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?278d","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_6e3a03c8_render","_vm","this","_h","$createElement","_c","_self","attrs","id","_m","_v","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_6af52601_render","installSnippet","mainSnippet","eventsSnippet","componentSnippet","startedvue_type_template_id_6af52601_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","_e","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_3934af0c_render","once","shadow","trackViewComponentOnceSnippet","block_showvue_type_template_id_3934af0c_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","viewport","width","height","bottom","right","top","left","isVisible","document","parentNode","parent","visibility","display","VisMonitor","ref","refwin","refWin","listeners","removeScrollLisener","init","listener","visibilitychange","$on","addEventListener","removeEventListener","win","innerHeight","innerWidth","evt","cbk","queue","_this2","$off","_this3","_len2","_key2","sub","getBoundingClientRect","view","vh","vw","perc","min","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","custom","$visMonitor","vm","$refs","$once","_events$id","_zipArray","_zipArray2","_args","_fn","_exp2","reverse","$listener","_args2","_keys","_fn2","_exp3","eventName","_zipArray3","_zipArray4","_events$id2","_ref3","_len3","_key3","updated","_len4","_key4","unbind","destroy","VTrack","installed","curPage","Vue","trackEvents","_ref$trackEnable","trackEnable","self","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","fullPath","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","$route","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","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.96608e54.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('router-view'),_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\":\"http://hits.dwyl.io/l-hammer/v-track\",\"alt\":\"hit count\"}},[_c('img',{attrs:{\"src\":\"http://hits.dwyl.io/l-hammer/v-track.svg\"}})]),_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 }","\n\n\n\n\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=6e3a03c8&\"\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 }","\n\n\n\n\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 }","\n\n\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","\n\n\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 }","\n\n\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=6af52601&\"\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 }","\n\n\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 }","\n\n\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)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\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=3934af0c&\"\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-04-20 18:06:43\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(value) {\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: 2019-04-08 11:59:30\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 < viewport.height && rect.left < viewport.width;\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\n _classCallCheck(this, VisMonitor);\n\n if (!isElement(ele)) {\n throw new Error(\"not an element node\");\n }\n\n this.ele = ele;\n this.ref = ref;\n this.refWin = refwin;\n this.started = false;\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, false);\n\n return function () {\n return _this.refWin.removeEventListener(\"scroll\", listener, false);\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 return {\n height: win.innerHeight,\n width: win.innerWidth\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 return 0;\n }\n\n var vh = 0;\n var vw = 0;\n var perc = 0;\n\n if (rect.top >= 0) {\n vh = Math.min(rect.height, view.height - rect.top);\n } else if (rect.bottom > 0) {\n vh = Math.min(view.height, rect.bottom);\n }\n\n if (rect.left >= 0) {\n vw = Math.min(rect.width, view.width - rect.left);\n } else if (rect.right > 0) {\n vw = Math.min(view.width, rect.right);\n }\n\n perc = vh * vw / (rect.height * rect.width);\n if (perc === 1) this.$emit(\"fullyvisible\");\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 fn = function fn() {\n return events[id](context);\n };\n\n var once = partialMatch(\"once\");\n var custom = partialMatch(\"custom\");\n\n if (!el.$visMonitor) {\n var vm = new VisMonitor(el, custom && context.$refs[value.ref]);\n (once ? vm.$once : vm.$on).call(vm, \"fullyvisible\", fn);\n el.$visMonitor = vm;\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$id;\n\n var _zipArray = zipArray(value),\n _zipArray2 = _slicedToArray(_zipArray, 2),\n _args = _zipArray2[0],\n keys = _zipArray2[1];\n\n var _fn = _args.shift();\n\n var _exp2 = _toConsumableArray(keys).pop();\n\n checkFun(_fn);\n tck = (_events$id = events[id]).bind.apply(_events$id, [null, context].concat(_toConsumableArray(_args)));\n queue = [tck, _fn.bind.apply(_fn, [null].concat(_toConsumableArray(_args)))];\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 _args2, _keys, _fn2, _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 _zipArray3 = zipArray(value);\n\n var _zipArray4 = _slicedToArray(_zipArray3, 2);\n\n _args2 = _zipArray4[0];\n _keys = _zipArray4[1];\n _fn2 = _args2.shift();\n _exp3 = _toConsumableArray(_keys).pop();\n checkFun(_fn2);\n }\n\n if (el[\"$on_\".concat(eventName)]) return;\n componentInstance.$on(eventName, function () {\n var _events$id2, _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$id2 = events[id]).bind.apply(_events$id2, [null, context].concat(data));\n queue = [tck, (_ref3 = _fn2 || 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 this.curPage = null; // 保存当前页name\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 var self = this;\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 }); // 注册全局组件\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(to, _, next) {\n // 防止有些情况该守卫执行多次导致重复埋点的问题\n if (to.fullPath === self.curPage) {\n next();\n } else {\n self.curPage = to.fullPath;\n next(function (vm) {\n trackEnable.UVPV && trackEvents.UVPV(vm);\n });\n }\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
\n ${key}\n ${val}\n
\n `;\n })\n .join(\"\");\n\n return `\n
\n
\n key\n value\n
\n ${trs}\n
\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: 2019-07-26 11:32:10\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};\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: true,\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 },\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":""} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 2b01438..6a969e2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -v-track
\ No newline at end of file +v-track
\ No newline at end of file diff --git a/docs/main.js b/docs/main.js index 2b89a9f..4c7497c 100644 --- a/docs/main.js +++ b/docs/main.js @@ -25,7 +25,7 @@ Vue.use(CollapseItem); Vue.use(VueTrack, { trackEvents, trackEnable: { - UVPV: true, + UVPV: "routeUpdate", TONP: true } }); diff --git a/docs/pages/started.vue b/docs/pages/started.vue index 2a1573f..994f797 100644 --- a/docs/pages/started.vue +++ b/docs/pages/started.vue @@ -59,7 +59,7 @@ import trackEvents from "./track-events"; Vue.use(VTrack, { trackEvents, // 埋点事件对象 trackEnable: { - UVPV: true, // 是否开启UVPV统计,默认为false + UVPV: true, // 是否开启UVPV统计,v0.8.3新增routeUpdate,即在当前路由参数发生改变时埋点,默认为false TONP: true // 是否开启页面停留时长统计,默认为false } }) diff --git a/package.json b/package.json index 3f7f06e..a5f81cc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "v-track", - "version": "0.8.2", + "version": "0.8.3", "description": "一个基于Vue指令的埋点插件", "author": "LHammer ", "scripts": { diff --git a/src/index.js b/src/index.js index 8d0c7b0..ab96172 100644 --- a/src/index.js +++ b/src/index.js @@ -2,7 +2,7 @@ * @Author: 宋慧武 * @Date: 2019-03-06 17:49:29 * @Last Modified by: 宋慧武 - * @Last Modified time: 2019-07-30 20:15:53 + * @Last Modified time: 2019-07-30 21:46:22 */ import * as hooks from "./hooks"; @@ -68,6 +68,12 @@ export default class VTrack { }); } }, + beforeRouteUpdate(_, __, next) { + if (trackEnable.UVPV && trackEnable.UVPV === "routeUpdate") { + trackEvents.UVPV(this); + } + next(); + }, // 页面停留时间 beforeRouteLeave(_, __, next) { TRACK_TONP(this, this.PAGE_ENTER_TIME);