1 |
- var Medici=function(t){"use strict";var e=function(){return e=Object.assign||function(t){for(var e,r=1,s=arguments.length;r<s;r++)for(var i in e=arguments[r])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},e.apply(this,arguments)};const r=(t,e,r)=>{const s=t[e];return(...e)=>(r.apply(null,e),s.apply(t,e))},s={};function i(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:s}const n=t=>{if(null===t)return t;if(t instanceof Date)return new Date(t.getTime());if(t instanceof Array){const e=[];return t.forEach((t=>{e.push(t)})),e.map((t=>n(t)))}if("object"==typeof t&&t!=={}){const e=Object.assign({},t);return Object.keys(e).forEach((t=>{e[t]=n(e[t])})),e}return t},a=(t,e,r)=>{return s={url:t,data:{type:e,payload:r}},new Promise(((t,e)=>{const r=new XMLHttpRequest;r.open("POST",s.url,!0),r.setRequestHeader("Content-Type","application/json"),r.onerror=e,r.onreadystatechange=()=>{4===r.readyState&&t(r.response)},r.send(JSON.stringify(s.data))}));var s};class o{constructor(t){this._config=Object.assign({user:"",version:""},t.config),this._platform=t.platform,this._appId=t.appId,this._endPoint=t.endPoint}get _stopTrack(){return o._stopTrack}get trackUrl(){return this._endPoint+"/tracking/log/save"}get trackPageViewUrl(){return this._endPoint+"/tracking/log/save"}toTrackEntity(t){const e={appId:this._appId,module:t.module,type:t.type,url:t.url||this._history.playload.url,eventType:t.eventType,referrer:t.referrer||this._history.currentRef,requestData:t.requestData};return t.language&&(e.language=t.language),t.networkType&&(e.networkType=t.networkType),t.userId&&(e.userId=t.userId),e}trackView(t,e,r){if(!this._stopTrack){this._history.playload.url=t;const e={module:"pageview",url:t,type:"pageview",eventType:"pageview",language:n(this._history.playload).language,userId:this._config.user};return a(this.trackPageViewUrl,"pageview",this.toTrackEntity(e))}}trackEvent(t,e,r,s){if(!this._stopTrack){this._history.playload.url=r;const s={module:t,url:r,type:"event",eventType:e,language:n(this._history.playload).language,userId:this._config.user};return a(this.trackPageViewUrl,"event",this.toTrackEntity(s))}}track(t,e){if(!this._stopTrack){const r=n(this._history.playload),s=n(e);delete s.eventType,delete s.maxWaitTime;const i={module:t,type:"track",eventType:e.eventType,requestData:Object.assign({screen:r.screen},s,this._config),language:r.language,networkType:e.networkType,userId:this._config.user};return a(this.trackUrl,"track",this.toTrackEntity(i))}}startTrack(t,e){if(!this._stopTrack){const r=n(this._history.playload),s=n(e);delete s.eventType,delete s.maxWaitTime;const i={module:t,type:"start_track",eventType:e.eventType,requestData:Object.assign({},s,this._config),language:r.language,networkType:e.networkType,userId:this._config.user};return e.maxWaitTime&&(this._timeOut=setTimeout((()=>{this.endTrack(t,e)}),e.maxWaitTime)),a(this.trackUrl,"period_track",this.toTrackEntity(i))}}endTrack(t,e){if(this._timeOut&&clearTimeout(this._timeOut),!this._stopTrack){const r=n(this._history.playload),s=n(e);delete s.eventType,delete s.maxWaitTime;const i={module:t,type:"end_track",eventType:e.eventType,requestData:Object.assign({},s,this._config),language:r.language,networkType:e.networkType,userId:this._config.user};return a(this.trackUrl,"period_track",this.toTrackEntity(i))}}}o._stopTrack=!1;const c=i();class h{constructor(t,e){this._sdk=t,this._appId=e,this.init(),this._playload.website=e}get playload(){return this._playload}get currentUrl(){return this._currentUrl}get currentRef(){return this._currentRef}init(){window.mediciRegisterIds||(window.mediciRegisterIds=[]);const t=window.mediciRegisterIds;!Array.from(t).includes(this._appId)&&this._appId&&(c.document.addEventListener("readystatechange",this.handleReadystatechange.bind(this),!0),c.history.pushState=r(c.history,"pushState",this.handlePushState.bind(this)),c.history.replaceState=r(c.history,"replaceState",this.handlePushState.bind(this)),window.mediciRegisterIds.push(this._appId)),this.initPlayload()}initPlayload(){const{screen:{width:t,height:e},navigator:{language:r},location:{hostname:s,pathname:i,search:n}}=c,a=`${t}x${e}`;this._currentUrl=`${i}${n}`,this._currentRef=c.document.referrer,this._playload={website:"",hostname:s,screen:a,language:r,url:this._currentUrl,referrer:this._currentRef}}handleReadystatechange(){"complete"===c.document.readyState&&(this.observeDocument(),this._sdk.eventer.initElementCssEvents(c.document.body),this._sdk.trackView(this._currentUrl,this._currentRef,this._playload.website))}handlePushState(t,e,r){try{if(!r)return;const{hash:t}=c.location;this._currentRef=this._currentUrl;const e=r.toString();"http"===e.substring(0,4)?this._currentUrl="/"+e.split("/").splice(3).join("/"):this._currentUrl=e,t&&(this._currentUrl="/"+e.replace(t,"")),this._currentUrl!==this._currentRef&&this._sdk.trackView(this._currentUrl,this._currentRef,this._playload.website)}catch(t){}}handleBackState(t,e,r){}observeDocument(){new MutationObserver((t=>{const e=[];t.forEach((t=>{e.push(Array.from(t.addedNodes))})),Array.from(e.flat()).forEach((t=>{if("getAttribute"in t&&(this._sdk.eventer.addCssEvent(t),t.hasChildNodes)){t.querySelectorAll(this._sdk.eventer.eventSelect).forEach((t=>{"getAttribute"in t&&this._sdk.eventer.addCssEvent(t)}))}}))})).observe(c.document,{childList:!0,subtree:!0})}}class l{constructor(t){this.listeners={},this._sdk=t,this._identifier="mdc",this._eventSelect=`[class*='${this._identifier}--']`,this.eventClassValidate=/^mdc--([a-z]+)--([\w]+[\w-]*)$/}updateIdentifier(t){this._identifier=t,this.eventClassValidate=new RegExp("^"+t+"--([a-z]+)--([w]+[w-]*)$")}get eventSelect(){return this._eventSelect}initElementCssEvents(t){const e=t.querySelectorAll(this.eventSelect);Array.prototype.forEach.call(e,this.addCssEvent.bind(this))}addCssEvent(t){(t.getAttribute("class")||"").split(" ").forEach((e=>{if(!this.eventClassValidate.test(e))return;const[,r,s]=e.split("--"),i=this.listeners[e]?this.listeners[e]:this.listeners[e]=()=>{t.tagName,this._sdk.trackEvent(s,r)};t.addEventListener(r,i,!0)}))}}class u extends o{constructor(t){super(t),this.eventer=new l(this),this._history=new h(this,t.appId),super._history=this._history,"stopTrack"in t&&(o._stopTrack=t.stopTrack),this.setConfig(t.config)}setConfig(t){this._config=Object.assign({user:"",version:""},t),super._config=this._config}stop(){o._stopTrack=!0}resume(){o._stopTrack=!1}}var d=function(t){var r=e(e({},t),{platform:"web"});return new u(r)},p=i().document.currentScript;if(p){var y=p.getAttribute.bind(p),g=y("data-app-id"),_=y("data-url");g&&_&&(window.medici=d({platform:"web",appId:g,endPoint:_}))}return t.init=d,Object.defineProperty(t,"__esModule",{value:!0}),t}({});
|