@pendo/agent 2.285.1 → 2.286.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/debugger-plugin.min.js +1 -1
- package/dist/dom.esm.js +63 -17
- package/dist/pendo.module.js +221 -132
- package/dist/pendo.module.min.js +10 -10
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*
|
|
2
2
|
@license https://agent.pendo.io/licenses
|
|
3
3
|
*/
|
|
4
|
-
!function(){"use strict";class j{constructor(e,t){this.path=e,this.handler=t}}class k{routes={};addRoute(e,t){this.routes[e]||(this.routes[e]=[]),this.routes[e].unshift(new j(e,t))}removeRoute(e){this.routes[e].shift()}lookupRouteProvider(){return e=>this.routes[e]?this.routes[e][0].handler:undefined}}var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function M(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e["default"]:e}var t=Array.isArray,e="object"==typeof e&&e&&e.Object===Object&&e,n="object"==typeof self&&self&&self.Object===Object&&self,e=e||n||Function("return this")(),n=e.Symbol,i=Object.prototype,L=i.hasOwnProperty,G=i.toString,s=n?n.toStringTag:undefined;var W=Object.prototype.toString;var $=function(e){var t=L.call(e,s),n=e[s];try{e[s]=undefined;var i=!0}catch(o){}var r=G.call(e);return i&&(t?e[s]=n:delete e[s]),r},F=function(e){return W.call(e)},U=n?n.toStringTag:undefined;i=function(e){return null==e?e===undefined?"[object Undefined]":"[object Null]":(U&&U in Object(e)?$:F)(e)};var q=i,B=function(e){return null!=e&&"object"==typeof e};var r=function(e){return"symbol"==typeof e||B(e)&&"[object Symbol]"==q(e)},Q=t,K=r,J=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,X=/^\w*$/;var Y=function(e,t){var n;return!Q(e)&&(!("number"!=(n=typeof e)&&"symbol"!=n&&"boolean"!=n&&null!=e&&!K(e))||X.test(e)||!J.test(e)||null!=t&&e in Object(t))};var o=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},V=i,Z=o;var i=function(e){return!!Z(e)&&("[object Function]"==(e=V(e))||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e)},a=e["__core-js_shared__"],ee=(a=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";var te=Function.prototype.toString;var ne=i,ie=function(e){return!!ee&&ee in e},re=o,oe=function(e){if(null!=e){try{return te.call(e)}catch(t){}try{return e+""}catch(t){}}return""},se=/^\[object .+?Constructor\]$/,a=Function.prototype,i=Object.prototype,o=a.toString,a=i.hasOwnProperty,ae=RegExp("^"+o.call(a).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var de=function(e){return!(!re(e)||ie(e))&&(ne(e)?ae:se).test(oe(e))},ue=function(e,t){return null==e?undefined:e[t]};var i=function(e,t){return e=ue(e,t),de(e)?e:undefined},a=i(Object,"create"),ce=a;var le=a,pe=Object.prototype.hasOwnProperty;var he=a,ge=Object.prototype.hasOwnProperty;var fe=a;var o=function(e){return e=this.has(e)&&delete this.__data__[e],this.size-=e?1:0,e},a=function(e){var t,n=this.__data__;return le?"__lodash_hash_undefined__"===(t=n[e])?undefined:t:pe.call(n,e)?n[e]:undefined},d=function(e){var t=this.__data__;return he?t[e]!==undefined:ge.call(t,e)},u=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=fe&&t===undefined?"__lodash_hash_undefined__":t,this};function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}c.prototype.clear=function(){this.__data__=ce?ce(null):{},this.size=0},c.prototype["delete"]=o,c.prototype.get=a,c.prototype.has=d,c.prototype.set=u;o=c;var ve=function(e,t){return e===t||e!=e&&t!=t};var a=function(e,t){for(var n=e.length;n--;)if(ve(e[n][0],t))return n;return-1},be=a,me=Array.prototype.splice;var ye=a;var we=a;var _e=a;var d=function(e){var t=this.__data__;return!((e=be(t,e))<0||(e==t.length-1?t.pop():me.call(t,e,1),--this.size,0))},u=function(e){var t=this.__data__;return(e=ye(t,e))<0?undefined:t[e][1]},a=function(e){return-1<we(this.__data__,e)},l=function(e,t){var n=this.__data__,i=_e(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this};function p(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}p.prototype.clear=function(){this.__data__=[],this.size=0},p.prototype["delete"]=d,p.prototype.get=u,p.prototype.has=a,p.prototype.set=l;var d=p,u=i(e,"Map"),Te=o,Pe=d,Ce=u;var Ie=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};var a=function(e,t){return e=e.__data__,Ie(t)?e["string"==typeof t?"string":"hash"]:e.map},Ee=a;var Re=a;var Se=a;var ze=a;l=function(e){return e=Ee(this,e)["delete"](e),this.size-=e?1:0,e},e=function(e){return Re(this,e).get(e)},i=function(e){return Se(this,e).has(e)},o=function(e,t){var n=ze(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this};function h(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}h.prototype.clear=function(){this.size=0,this.__data__={hash:new Te,map:new(Ce||Pe),string:new Te}},h.prototype["delete"]=l,h.prototype.get=e,h.prototype.has=i,h.prototype.set=o;var Oe=h;function g(i,r){if("function"!=typeof i||null!=r&&"function"!=typeof r)throw new TypeError("Expected a function");var o=function(){var e=arguments,t=r?r.apply(this,e):e[0],n=o.cache;return n.has(t)?n.get(t):(e=i.apply(this,e),o.cache=n.set(t,e)||n,e)};return o.cache=new(g.Cache||Oe),o}g.Cache=Oe;var Ne=g;var Ae=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,He=/\\(\\)?/g,d=function(e){var t=(e=Ne(e,function(e){return 500===t.size&&t.clear(),e})).cache;return e}(function(e){var r=[];return 46===e.charCodeAt(0)&&r.push(""),e.replace(Ae,function(e,t,n,i){r.push(n?i.replace(He,"$1"):t||e)}),r});var De=function(e,t){for(var n=-1,i=null==e?0:e.length,r=Array(i);++n<i;)r[n]=t(e[n],n,e);return r},xe=t,je=r,u=n?n.prototype:undefined,ke=u?u.toString:undefined;var Me=function x(e){var t;return"string"==typeof e?e:xe(e)?De(e,x)+"":je(e)?ke?ke.call(e):"":"0"==(t=e+"")&&1/e==-1/0?"-0":t};var Le=t,Ge=Y,We=d,$e=function(e){return null==e?"":Me(e)};var Fe=r;var Ue=function(e,t){return Le(e)?e:Ge(e,t)?[e]:We($e(e))},qe=function(e){var t;return"string"==typeof e||Fe(e)?e:"0"==(t=e+"")&&1/e==-1/0?"-0":t};var Be=function(e,t){for(var n=0,i=(t=Ue(t,e)).length;null!=e&&n<i;)e=e[qe(t[n++])];return n&&n==i?e:undefined};var Qe=M(function(e,t,n){return(e=null==e?undefined:Be(e,t))===undefined?n:e});class Ke{app=null;router=null;destination=window.parent||window.top;origin="*";constructor(e,t={}){this.app=e,this.router=e.router,this.config=t,this.events=e.PluginAPI.getEventable()}getConfig(e,t){return Qe(this.config,e,t)}getDestinationProvider(){return()=>this.destination}getOriginProvider(){return()=>this.origin}triggerOpened(){this.events.trigger("opened",{containerType:this.type})}triggerClosed(){this.events.trigger("closed",{containerType:this.type})}}var f={padding:"0 !important",margin:"0 !important","box-sizing":"border-box !important",border:"none !important",display:"block !important",visibility:"visible !important"},v=2147483647,b={WINDOW_MARGIN:10,HEADER_HEIGHT:50,TOP:100,LEFT:100,HEIGHT:700,WIDTH:500,MIN_HEIGHT:500,MIN_WIDTH:500};const{MIN_HEIGHT:m,MIN_WIDTH:y,WINDOW_MARGIN:w}=b;function Je(t,n,i,r,o){let s=0,a=0,d=0,u=0;function c(e){e.preventDefault(),n.css({visibility:"hidden"}),t.releasePointerCapture(e.pointerId),t.removeEventListener("pointermove",l),o()}function l(e){-1!==e.button||0===e.buttons?c(e):(e.preventDefault(),d=s-e.clientX,u=a-e.clientY,s=e.clientX,a=e.clientY,r(d,u))}t.addEventListener("pointerdown",function(e){0===e.button&&(e.preventDefault(),n.css({visibility:"visible"}),s=e.clientX,a=e.clientY,t.setPointerCapture(e.pointerId),t.addEventListener("pointermove",l),i())}),t.addEventListener("pointerup",c),t.addEventListener("pointerout",c)}function Xe(e,t){const n=e.handle[0],i=e.container[0];Je(n,e.blockout,function(){n.style.cursor="grabbing"},function(e,t){i.style.left=_(i,e)+"px",i.style.top=T(i,t)+"px"},function(){n.style.cursor="grab",t()})}function _(e,t){t=e.offsetLeft-t,e=window.innerWidth-e.offsetWidth-w;return t<w||e<w?w:e<t?e:t}function T(e,t){t=e.offsetTop-t,e=window.innerHeight-e.offsetHeight-w;return t<w||e<w?w:e<t?e:t}function Ye(e,t){var n=e.resizeHandle[0];const i=e.container[0];Je(n,e.blockout,()=>{},function(e,t){i.style.width=Ve(i,e)+"px",i.style.height=Ze(i,t)+"px"},t)}function Ve(e,t){t=e.offsetWidth-t,e=window.innerWidth-e.offsetLeft-w;return e<t?e:t<y?y:t}function Ze(e,t){t=e.offsetHeight-t,e=window.innerHeight-e.offsetTop-w;return e<t?e:t<m?m:t}class et extends Ke{type="frame";destination=window.parent||window.top;origin=window.location.origin;constructor(i,e){super(i,e);const{pendo:r,PluginAPI:o}=i;e=this.getConfig("containerId","pendo-client-app");this.container=r.dom(`<div id="${e}" class="pendo-ignore">`).css({...f,height:i.state.height,width:i.state.width,"z-index":v-1,"background-color":"#FFFFFF",position:"fixed","box-shadow":"rgb(136, 136, 136) 0px 0px 20px 0px",overflow:"hidden"}),this.handle=r.dom('<div id="pendo-app-draggable-handle">').css({...f,"z-index":v,height:b.HEADER_HEIGHT,width:"calc(100% - 100px)",position:"absolute",cursor:"grab"}).on("dblclick",()=>{i.state.minimized||(this.container.css({height:b.HEIGHT,width:b.WIDTH,transition:"all 250ms linear"}),setTimeout(()=>{this.container&&(this.container.css({transition:"none"}),this.saveSize())},250))}).appendTo(this.container),this.resizeHandle=r.dom('<div id="pendo-app-resize-handle">').css({...f,"z-index":v,visibility:this.app.state.minimized?"hidden":"visible",height:0,width:0,"border-left":"10px solid transparent","border-bottom":"10px solid rgb(136, 136, 136)",cursor:"nwse-resize",position:"absolute",bottom:0,right:0}).appendTo(this.container),this.frame=r.dom('<iframe id="pendo-agent-application" src="about:blank">').css({...f,height:"100%",width:"100%"}).on("load",()=>{if(o.ConfigReader.get("inlineStyleNonce")){const n=this.frame[0].contentDocument.createElement.bind(this.frame[0].contentDocument);this.frame[0].contentDocument.createElement=(e,...t)=>{t=n(e,...t);return"style"===e&&(e=o.ConfigReader.get("inlineStyleNonce"))&&t.setAttribute("nonce",e),t}}var e,t=document.createElement("script");t.src=((e=r)&&e.trustedTypesPolicy?e.trustedTypesPolicy:{createScriptURL(e){return e}}).createScriptURL(o.getAssetUrl(i.assetName)),this.frame[0].contentDocument.body.appendChild(t),this.frame[0].contentWindow.ignoreIframeMonitor=!0,this.triggerOpened()}).appendTo(this.container),this.blockout=r.dom('<div id="pendo-app-dragging-blockout">').css({"z-index":v-2,position:"absolute",height:"100%",width:"100%",top:0,left:0,visibility:"hidden"}).appendTo(r.dom.getBody()),this.elements=[this.container,this.blockout],this.positionFrame=e=>{var{left:t,top:n,height:i}=e,{minimized:e,width:r}=e,t=t||b.LEFT,n=n||b.TOP,i=e?b.HEADER_HEIGHT:i;t=_({offsetLeft:t,offsetWidth:r},0),n=T({offsetTop:n,offsetHeight:i},0),this.container.css({left:t,top:n,height:i}),this.savePosition()},this.saveSize=()=>{var{offsetHeight:e,offsetWidth:t}=this.container[0];e&&t&&this.app.setProperties({height:e,width:t})},this.savePosition=()=>{var{offsetLeft:e,offsetTop:t}=this.container[0];e&&t&&this.app.setProperties({left:e,top:t})},this.toggleMinimize=()=>{this.app.setProperties({minimized:!this.app.state.minimized}),this.resizeHandle.css({visibility:this.app.state.minimized?"hidden":"visible"}),this.positionFrame(this.app.state)},this.positionFrame(this.app.state),Xe(this,this.savePosition),Ye(this,this.saveSize),window.addEventListener("resize",s),this.listeners=[["resize",s]];const t=r._.throttle(()=>{return e=this.container[0],0<(t=e.offsetLeft+e.offsetWidth+w-window.innerWidth)&&(e.style.left=_(e,t)+"px",e.offsetWidth>y)&&(e.style.width=Ve(e,t)+"px"),void(0<(t=e.offsetTop+e.offsetHeight+w-window.innerHeight)&&(e.style.top=T(e,t)+"px",e.offsetHeight>m)&&(e.style.height=Ze(e,t)+"px"));var e,t},10),n=r._.debounce(()=>{this.savePosition(),this.saveSize()},1e3);function s(){t(),n()}}open(){return this.router.addRoute("app::toggleMinimize",this.toggleMinimize),this.container.appendTo(this.app.pendo.dom.getBody()),Promise.resolve()}close(){this.router.removeRoute("app::toggleMinimize"),this.listeners.forEach(([e,t])=>window.removeEventListener(e,t)),this.elements.forEach(e=>e.remove()),this.triggerClosed()}}const P=(...e)=>r=>{return[].concat(e).reduce((e,t,n,i)=>{e=t(e,r);return e||i.splice(n,i.length-n),e},r)};let tt=0;const nt=(e,t,n)=>{if(!e||"string"!=typeof t)return n;let i=e;for(const r of t.split(".")){if(null==i)return n;i=i[r]}return i===undefined?n:i};const it=(t,n)=>{if(t&&n)if(Array.isArray(t))for(let e=0;e<t.length;e++)n(t[e],e,t);else if("object"==typeof t)for(const e in t)t.hasOwnProperty(e)&&n(t[e],e,t);return t},rt=e=>"function"==typeof e,ot=e=>!(null==e),st="promise";function C(e,t,n){this.name=e,this.type=t,this.data=n}C.prototype.toString=function(){return`Message.${this.type} - `+this.name};const at=(e,t,n)=>{e=new C(e,t,n);return t===st&&(e.requestId=""+(tt+=1)),e},dt=e=>{try{var{name:t,type:n,isResponse:i,data:r,requestId:o,sender:s}=e.data||{},a=new C(t,n,ot(r)?JSON.parse(r):undefined);return a.requestId=o,a.sender=s,a.destination=e.source,a.isResponse=i,a}catch(d){return!1}},ut=e=>{var t=((e,t)=>{if(!e||"object"!=typeof e)return{};var n=Array.isArray(t)?t:[t],i={};for(const r in e)e.hasOwnProperty(r)&&!n.includes(r)&&(i[r]=e[r]);return i})(e,["destination","toString","data"]);return t.data=JSON.stringify(e.data,(e,t)=>"function"==typeof t||t instanceof RegExp?t.toString?t.toString():undefined:t),t},ct=e=>(e.isResponse=!0,e),I="disconnected",E={lastMessageReceivedAt:0,currentConnectionQuality:I,changeCallbacks:{},evalCallbacks:{}},R=e=>{e!==E.currentConnectionQuality&&(E.currentConnectionQuality=e,it(E.changeCallbacks,e=>{e(E.currentConnectionQuality)}))},lt=()=>{var e;0===E.lastMessageReceivedAt?R(I):((e=Date.now()-E.lastMessageReceivedAt)<1e4?R("connected"):1e4<e&&(3e4<e?R("dead_connection"):R(I)),it(E.evalCallbacks,e=>{e(E.currentConnectionQuality)}))};let S;let pt=0;const ht=()=>{E.currentConnectionQuality=I,E.lastMessageReceivedAt=0},z={appName:undefined,connectionName:undefined,frameId:undefined,pendingRequests:{},topics:{},senderIds:{},originProvider:undefined,destinationProvider:undefined},gt=()=>""+z.appName+z.connectionName+`(${z.frameId})`,O=e=>{e.sender||(e.sender=gt());var t=e.destination||z.destinationProvider(),n=ut(e),i=vt(e.sender),r=bt(e.sender);i||r?i?i.postMessage(n):t.postMessage(n,z.originProvider()):(r=new MessageChannel,It(r.port1,e.sender),t.postMessage(n,z.originProvider(),[r.port2]))},ft=(r,o,s=1e3)=>new Promise((e,t)=>{const n=at(r,st,o),i=setTimeout(()=>{t(r+" timeout"),yt(n),Rt(n)},s);mt(n,()=>clearTimeout(i),e,t),O(n)}),N=e=>{var t;return z.senderIds[e]||(t=e,z.senderIds[t])||(z.senderIds[t]={port:undefined,hasTriedToUpgradeToMessageChannel:!1}),z.senderIds[e]},vt=e=>N(e).port,bt=e=>N(e).hasTriedToUpgradeToMessageChannel,mt=(e,t,n,i)=>{z.pendingRequests[e.requestId]={message:e,clearTimeoutfn:t,resolve:n,reject:i}};const yt=e=>{var t=e["requestId"];return z.pendingRequests[t].clearTimeoutfn(),delete z.pendingRequests[t],e};const wt="message::ping";var _t;const Tt=P(e=>{var t=z.pendingRequests[e.requestId];return t&&(t.resolve(e.data),yt(e)),e},t=>{var e=z.topics[t.name];return e&&e.forEach(e=>e(t.data)),t},t=>{var e;return t&&!t.isResponse&&(t.name===wt?O(ct(t)):(e=z.routeHandlerLookup(t.name))?e(t,e=>{t.data=e,O(ct(t))}):console.log(gt(),"No route handler for "+t.name,t)),t},(_t=()=>{var e;e=Date.now(),E.lastMessageReceivedAt=e},(e,...t)=>(_t(e,...t),e))),Pt=e=>("*"===z.originProvider()||e.origin===z.originProvider())&&e,Ct=e=>{var t=nt(e,"data.sender");return!(!t||"string"!=typeof t||!t.includes(z.appName))&&e},It=(e,t)=>{t=N(t);t.port=e,t.hasTriedToUpgradeToMessageChannel=!0,t.port.onmessage=P(dt,Tt)},Et=(e,t)=>{return!N(e.sender).hasTriedToUpgradeToMessageChannel&&t.ports&&t.ports[0]&&It(t.ports[0],e.sender),e},Rt=e=>{e=e.sender;(e=N(e)).port=undefined,e.hasTriedToUpgradeToMessageChannel=!1};let A=()=>{};const St=()=>{A(),A=()=>{},S&&S(),ht()},zt=((i,r)=>{let o,s=0,a;return function(...e){var t=Date.now(),n=r-(t-s);return n<=0||r<n?(o&&(clearTimeout(o),o=null),s=t,a=i.apply(this,e)):!o&&0<r&&(o=setTimeout(()=>{s=Date.now(),o=null,a=i.apply(this,e)},n)),a}})(e=>{"connected"!==e&&z.usePingAutoReconnect&&ft(wt)["catch"](()=>{console.log("message::ping timedout")})},1e3),Ot=(e,t,n,i,r,o=!1,s)=>{if(window.addEventListener){z.appName=e,z.frameId=t,z.routeHandlerLookup=n,z.usePingAutoReconnect=o,z.connectionName=s||"",z.originProvider=i||(()=>window.location.origin||"*"),z.destinationProvider=r||(()=>window.parent||window.top);{const d=setInterval(lt,100);S=()=>clearInterval(d)}e=zt;if(rt(e)){const u=pt++;E.evalCallbacks[u]=e}const a=P(Pt,Ct,dt,Et,Tt);window.addEventListener("message",a),A=()=>window.removeEventListener("message",a)}},Nt=e=>{if(rt(e)){const t=pt++;E.changeCallbacks[t]=e}};function At(){return(new Date).getTime()}class Ht extends Ke{type="window";testUrl="";realUrl=undefined;getTitle(){return this.getConfig("title",this.getName())}getName(){return this.getConfig("name","Agent_Application")}open(){return this.router.addRoute("app::windowClosed",()=>{this.app.setProperties({containerType:"frame"}),this.app.stop()}),this.testConnection().then(()=>{this.triggerOpened()})["catch"](()=>{return this.createWindow(),r=this.app,o=1e3,new Promise((e,t)=>{const n=At(),i=()=>{r.getConnectionStatus()?e():At()-n>o?t():setTimeout(i,50)};i()});var r,o})}testConnection(){return this.destination=window.open(this.testUrl,this.getName(),`width=${this.app.state.width},height=${this.app.state.height},resizable=yes,scrollbars=yes,status=yes,location=no`),ft("app::reconnect")}createWindow(){this.realUrl&&(this.destination=window.open(this.realUrl,this.getName(),`width=${this.app.state.width},height=${this.app.state.height},resizable=yes,scrollbars=yes,status=yes,location=no`));var e=document.createElement("script");e.src=this.app.PluginAPI.getAssetUrl(this.app.assetName),this.destination.document.body.appendChild(e),this.destination.document.title=this.getTitle()}close(){this.router.removeRoute("app::windowClosed"),this.destination.close(),this.triggerClosed()}}const Dt=()=>({});class xt{defaultState={containerType:"frame",minimized:!1,height:500,width:500,left:100,top:100};state={};containerClosedCallbacks=[];container=null;isConnected=!1;constructor(e,t,n,i,r,o=Dt,s=Dt){this.appName=e,this.assetName=t,this.assetStorageKey=n,this.connectionName=i,this.frameConfigProvider=o,this.windowConfigProvider=s,r&&Object.assign(this.defaultState,r),this.router=new k}init(e,t){this.pendo=e,this.PluginAPI=t,this.events=t.getEventable(),this.router.addRoute("app::ping",(e,t)=>{t()}),this.router.addRoute("app::setProperties",({data:e})=>{this.setProperties(e)}),this.router.addRoute("app::toggleContainer",()=>{this.setProperties({minimized:!1}),this.toggleContainerType()}),this.router.addRoute("app::windowClosed",()=>{}),this.loadState(),this.prepContainer()}prepContainer(){this.container="window"===this.state.containerType?new Ht(this,this.windowConfigProvider()):new et(this,this.frameConfigProvider())}setConnectionStatus(e){this.isConnected="connected"===e}getConnectionStatus(){return this.isConnected}setProperties(e){Object.assign(this.state,e),this.writeState()}getDefaultState(){return this.defaultState||{}}loadState(){try{var e=JSON.parse(this.PluginAPI.agentStorage.read(this.assetStorageKey,!0));this.state=Object.assign({},this.getDefaultState(),this.state,e)}catch(t){this.PluginAPI.log.error(t),this.state=Object.assign({},this.getDefaultState(),this.state)}}writeState(){this.PluginAPI.agentStorage.write(this.assetStorageKey,JSON.stringify(this.state),null,!0)}toggleContainerType(){var e="frame"===this.state.containerType?"window":"frame";this.setProperties({containerType:e}),this.stop(),this.start()}start(){this.container||this.prepContainer();var e=this.PluginAPI.EventTracer.addTracerIds({})["frameId"];Ot(this.appName,e,this.router.lookupRouteProvider(),this.container.getOriginProvider(),this.container.getDestinationProvider(),!0,this.connectionName),Nt(e=>{this.setConnectionStatus(e)}),this.container.open().then(()=>{this.events.trigger("mounted")})["catch"](()=>{"window"===this.state.containerType?(this.setProperties({containerType:"frame"}),this.prepContainer(),this.start()):(this.PluginAPI.log(`Failed to start ${this.appName} in either window or frame.`),this.stop())})}stop(){this.container.close(),this.container=null,this.events.trigger("unmounted"),St()}}const H=function(){var e={height:b.HEIGHT,width:b.WIDTH};let r,o;const s=new xt("Debugger","pendo.debugger.min.js","debug-enabled","AgentPlugin",e,()=>({containerId:"pendo-client-debugger"}),()=>({title:"Pendo Debugger"}));return{app:s,init(e,t){r=e,(o=t).restartDebugger=this.start,s.init(r,o),s.router.addRoute("debugger::connect",(e,t)=>{var n;t({config:o.ConfigReader.audit(),env:{apiKey:(n=r).apiKey,environment:n.debugging.isStagingServer()?"staging":"production",device:n.debugging.isMobileUserAgent()?"mobile":"desktop",browserCookies:window.navigator.cookieEnabled,guideStatus:n.areGuidesDisabled()?"disabled":n.debugging.areGuidesDelayed()?"delayed":"enabled"},container:s.state,events:o.store.state["debugger"].eventsCaptured})}),s.router.addRoute("debugger::stop",()=>{r.disableDebugging()}),s.router.addRoute("debugger::showGuideById",(e,t)=>{t(r.showGuideById(e.data))}),s.router.addRoute("debugger::toggleGuideLoop",e=>{e.data?r.startGuides():r.stopGuides()}),s.router.addRoute("debugger::tombstoneGuide",e=>{e=r.findGuideById(e.data);o.Tombstone.addGuide(e)}),s.router.addRoute("debugger::openGuidePage",e=>{e=e.data,i=r,t=o.hosts.SERVER;var t,n,i=(n=i.findGuideById(e))&&i._.get(n,"attributes.resourceCenter")?n.attributes.resourceCenter.isTopLevel?`${t}/resource-center/${n.id}/draft`:(i=i.BuildingBlocks.BuildingBlockResourceCenter.getResourceCenter())&&i.id?`${t}/resource-center/${i.id}/module/`+n.id:"":t+"/guides/"+e;i&&window.open(i,"_blank")}),s.router.addRoute("debugger::restore",({data:e})=>{if(e&&e.length){const t=document.createElement("iframe");t.sandbox="allow-same-origin",t.src="about:blank",t.hidden=!0,document.body.appendChild(t),t.contentWindow.ignoreIframeMonitor=!0,e.forEach(e=>{e.id.split(".").reduce((e,t,n,i)=>n===i.length-1?(e.destination[t]=e.source[t],e.destination[t]):(e.destination=e.destination[t],e.source=e.source[t],e),{destination:window,source:t.contentWindow})}),document.body.removeChild(t)}}),s.router.addRoute("debugger::findShadowRoot",(e,t)=>{t((()=>{let e=!1,t=0;var n,i=document.createNodeIterator(document.body,NodeFilter.SHOW_ELEMENT);if(!i||!i.nextNode)return!0;for(;t<1e4&&!e;)t++,(n=i.nextNode())&&n.shadowRoot&&(e=!0);return e})())}),s.router.addRoute("debugger::sync",(e,n)=>{const t=o.store.subscribe((e,t)=>{"debugger/eventsCaptured"===e.type&&n({action:"events/eventsCaptured",data:t["debugger"].eventsCaptured})}),i=setInterval(()=>{n({action:"agent/sync",data:o.store.state}),n({action:"environment/validateEnvironment",data:r.validateEnvironment(!0)})},500);s.events.on("unmounted",()=>{clearInterval(i),t()})}),s.router.addRoute("debugger::enableEventLogging",({data:e})=>{s.setProperties({enableEventLogging:e}),o.store.dispatch("debugger/enableEventLogging",e)}),s.router.addRoute("debugger::clearEventsCaptured",()=>{o.store.dispatch("debugger/clearEventsCaptured")}),s.router.addRoute("debugger::checkGuideEligibility",({data:e},t)=>{o.store.dispatch("debugger/checkGuideEligibility",{guideId:e,response:t})})},start(){s.start()},stop(){s.stop(),s.setProperties({enabled:!1,containerType:"frame"})}}}();a={initialize:function(e,t){H.init(e,t),H.start();const n=e.disableDebugging;e.disableDebugging=()=>{H.stop(),n()}},teardown:function(){H.stop()}},l=document.getElementById("pendo-debugger-plugin");let D="pendo";l&&(D=l.getAttribute("data-pendo-global-key")||"pendo"),window[D].addExtension&&window[D].addExtension({name:"Debugger",version:"1.0.0",type:"agent",use:"plugin",uri:a})}();
|
|
4
|
+
!function(){"use strict";class j{constructor(e,t){this.path=e,this.handler=t}}class k{routes={};addRoute(e,t){this.routes[e]||(this.routes[e]=[]),this.routes[e].unshift(new j(e,t))}removeRoute(e){this.routes[e].shift()}lookupRouteProvider(){return e=>this.routes[e]?this.routes[e][0].handler:undefined}}var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function M(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e["default"]:e}var t=Array.isArray,e="object"==typeof e&&e&&e.Object===Object&&e,n="object"==typeof self&&self&&self.Object===Object&&self,e=e||n||Function("return this")(),n=e.Symbol,i=Object.prototype,L=i.hasOwnProperty,G=i.toString,s=n?n.toStringTag:undefined;var W=Object.prototype.toString;var $=function(e){var t=L.call(e,s),n=e[s];try{e[s]=undefined;var i=!0}catch(o){}var r=G.call(e);return i&&(t?e[s]=n:delete e[s]),r},F=function(e){return W.call(e)},U=n?n.toStringTag:undefined;i=function(e){return null==e?e===undefined?"[object Undefined]":"[object Null]":(U&&U in Object(e)?$:F)(e)};var q=i,B=function(e){return null!=e&&"object"==typeof e};var r=function(e){return"symbol"==typeof e||B(e)&&"[object Symbol]"==q(e)},Q=t,K=r,X=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Y=/^\w*$/;var J=function(e,t){var n;return!Q(e)&&(!("number"!=(n=typeof e)&&"symbol"!=n&&"boolean"!=n&&null!=e&&!K(e))||Y.test(e)||!X.test(e)||null!=t&&e in Object(t))};var o=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},V=i,Z=o;var i=function(e){return!!Z(e)&&("[object Function]"==(e=V(e))||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e)},a=e["__core-js_shared__"],ee=(a=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";var te=Function.prototype.toString;var ne=i,ie=function(e){return!!ee&&ee in e},re=o,oe=function(e){if(null!=e){try{return te.call(e)}catch(t){}try{return e+""}catch(t){}}return""},se=/^\[object .+?Constructor\]$/,a=Function.prototype,i=Object.prototype,o=a.toString,a=i.hasOwnProperty,ae=RegExp("^"+o.call(a).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var de=function(e){return!(!re(e)||ie(e))&&(ne(e)?ae:se).test(oe(e))},ue=function(e,t){return null==e?undefined:e[t]};var i=function(e,t){return e=ue(e,t),de(e)?e:undefined},a=i(Object,"create"),ce=a;var le=a,pe=Object.prototype.hasOwnProperty;var he=a,ge=Object.prototype.hasOwnProperty;var fe=a;var o=function(e){return e=this.has(e)&&delete this.__data__[e],this.size-=e?1:0,e},a=function(e){var t,n=this.__data__;return le?"__lodash_hash_undefined__"===(t=n[e])?undefined:t:pe.call(n,e)?n[e]:undefined},d=function(e){var t=this.__data__;return he?t[e]!==undefined:ge.call(t,e)},u=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=fe&&t===undefined?"__lodash_hash_undefined__":t,this};function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}c.prototype.clear=function(){this.__data__=ce?ce(null):{},this.size=0},c.prototype["delete"]=o,c.prototype.get=a,c.prototype.has=d,c.prototype.set=u;o=c;var ve=function(e,t){return e===t||e!=e&&t!=t};var a=function(e,t){for(var n=e.length;n--;)if(ve(e[n][0],t))return n;return-1},be=a,me=Array.prototype.splice;var ye=a;var we=a;var _e=a;var d=function(e){var t=this.__data__;return!((e=be(t,e))<0||(e==t.length-1?t.pop():me.call(t,e,1),--this.size,0))},u=function(e){var t=this.__data__;return(e=ye(t,e))<0?undefined:t[e][1]},a=function(e){return-1<we(this.__data__,e)},l=function(e,t){var n=this.__data__,i=_e(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this};function p(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}p.prototype.clear=function(){this.__data__=[],this.size=0},p.prototype["delete"]=d,p.prototype.get=u,p.prototype.has=a,p.prototype.set=l;var d=p,u=i(e,"Map"),Te=o,Pe=d,Ce=u;var Ie=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};var a=function(e,t){return e=e.__data__,Ie(t)?e["string"==typeof t?"string":"hash"]:e.map},Ee=a;var Re=a;var Se=a;var ze=a;l=function(e){return e=Ee(this,e)["delete"](e),this.size-=e?1:0,e},e=function(e){return Re(this,e).get(e)},i=function(e){return Se(this,e).has(e)},o=function(e,t){var n=ze(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this};function h(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}h.prototype.clear=function(){this.size=0,this.__data__={hash:new Te,map:new(Ce||Pe),string:new Te}},h.prototype["delete"]=l,h.prototype.get=e,h.prototype.has=i,h.prototype.set=o;var Ae=h;function g(i,r){if("function"!=typeof i||null!=r&&"function"!=typeof r)throw new TypeError("Expected a function");var o=function(){var e=arguments,t=r?r.apply(this,e):e[0],n=o.cache;return n.has(t)?n.get(t):(e=i.apply(this,e),o.cache=n.set(t,e)||n,e)};return o.cache=new(g.Cache||Ae),o}g.Cache=Ae;var He=g;var Oe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ne=/\\(\\)?/g,d=function(e){var t=(e=He(e,function(e){return 500===t.size&&t.clear(),e})).cache;return e}(function(e){var r=[];return 46===e.charCodeAt(0)&&r.push(""),e.replace(Oe,function(e,t,n,i){r.push(n?i.replace(Ne,"$1"):t||e)}),r});var De=function(e,t){for(var n=-1,i=null==e?0:e.length,r=Array(i);++n<i;)r[n]=t(e[n],n,e);return r},xe=t,je=r,u=n?n.prototype:undefined,ke=u?u.toString:undefined;var Me=function x(e){var t;return"string"==typeof e?e:xe(e)?De(e,x)+"":je(e)?ke?ke.call(e):"":"0"==(t=e+"")&&1/e==-1/0?"-0":t};var Le=t,Ge=J,We=d,$e=function(e){return null==e?"":Me(e)};var Fe=r;var Ue=function(e,t){return Le(e)?e:Ge(e,t)?[e]:We($e(e))},qe=function(e){var t;return"string"==typeof e||Fe(e)?e:"0"==(t=e+"")&&1/e==-1/0?"-0":t};var Be=function(e,t){for(var n=0,i=(t=Ue(t,e)).length;null!=e&&n<i;)e=e[qe(t[n++])];return n&&n==i?e:undefined};var Qe=M(function(e,t,n){return(e=null==e?undefined:Be(e,t))===undefined?n:e});class Ke{app=null;router=null;destination=window.parent||window.top;origin="*";constructor(e,t={}){this.app=e,this.router=e.router,this.config=t,this.events=e.PluginAPI.getEventable()}getConfig(e,t){return Qe(this.config,e,t)}getDestinationProvider(){return()=>this.destination}getOriginProvider(){return()=>this.origin}triggerOpened(){this.events.trigger("opened",{containerType:this.type})}triggerClosed(){this.events.trigger("closed",{containerType:this.type})}}var f={padding:"0 !important",margin:"0 !important","box-sizing":"border-box !important",border:"none !important",display:"block !important",visibility:"visible !important"},v=2147483647,b={WINDOW_MARGIN:10,HEADER_HEIGHT:50,TOP:100,LEFT:100,HEIGHT:700,WIDTH:500,MIN_HEIGHT:500,MIN_WIDTH:500};const{MIN_HEIGHT:m,MIN_WIDTH:y,WINDOW_MARGIN:w}=b;function Xe(t,n,i,r,o){let s=0,a=0,d=0,u=0;function c(e){e.preventDefault(),n.css({visibility:"hidden"}),t.releasePointerCapture(e.pointerId),t.removeEventListener("pointermove",l),o()}function l(e){-1!==e.button||0===e.buttons?c(e):(e.preventDefault(),d=s-e.clientX,u=a-e.clientY,s=e.clientX,a=e.clientY,r(d,u))}t.addEventListener("pointerdown",function(e){0===e.button&&(e.preventDefault(),n.css({visibility:"visible"}),s=e.clientX,a=e.clientY,t.setPointerCapture(e.pointerId),t.addEventListener("pointermove",l),i())}),t.addEventListener("pointerup",c),t.addEventListener("pointerout",c)}function Ye(e,t){const n=e.handle[0],i=e.container[0];Xe(n,e.blockout,function(){n.style.cursor="grabbing"},function(e,t){i.style.left=_(i,e)+"px",i.style.top=T(i,t)+"px"},function(){n.style.cursor="grab",t()})}function _(e,t){t=e.offsetLeft-t,e=window.innerWidth-e.offsetWidth-w;return t<w||e<w?w:e<t?e:t}function T(e,t){t=e.offsetTop-t,e=window.innerHeight-e.offsetHeight-w;return t<w||e<w?w:e<t?e:t}function Je(e,t){var n=e.resizeHandle[0];const i=e.container[0];Xe(n,e.blockout,()=>{},function(e,t){i.style.width=Ve(i,e)+"px",i.style.height=Ze(i,t)+"px"},t)}function Ve(e,t){t=e.offsetWidth-t,e=window.innerWidth-e.offsetLeft-w;return e<t?e:t<y?y:t}function Ze(e,t){t=e.offsetHeight-t,e=window.innerHeight-e.offsetTop-w;return e<t?e:t<m?m:t}class et extends Ke{type="frame";destination=window.parent||window.top;origin=window.location.origin;constructor(i,e){super(i,e);const{pendo:r,PluginAPI:o}=i;e=this.getConfig("containerId","pendo-client-app");this.container=r.dom(`<div id="${e}" class="pendo-ignore">`).css({...f,height:i.state.height,width:i.state.width,"z-index":v-1,"background-color":"#FFFFFF",position:"fixed","box-shadow":"rgb(136, 136, 136) 0px 0px 20px 0px",overflow:"hidden"}),this.handle=r.dom('<div id="pendo-app-draggable-handle">').css({...f,"z-index":v,height:b.HEADER_HEIGHT,width:"calc(100% - 100px)",position:"absolute",cursor:"grab"}).on("dblclick",()=>{i.state.minimized||(this.container.css({height:b.HEIGHT,width:b.WIDTH,transition:"all 250ms linear"}),setTimeout(()=>{this.container&&(this.container.css({transition:"none"}),this.saveSize())},250))}).appendTo(this.container),this.resizeHandle=r.dom('<div id="pendo-app-resize-handle">').css({...f,"z-index":v,visibility:this.app.state.minimized?"hidden":"visible",height:0,width:0,"border-left":"10px solid transparent","border-bottom":"10px solid rgb(136, 136, 136)",cursor:"nwse-resize",position:"absolute",bottom:0,right:0}).appendTo(this.container),this.frame=r.dom('<iframe id="pendo-agent-application" src="about:blank">').css({...f,height:"100%",width:"100%"}).on("load",()=>{if(o.ConfigReader.get("inlineStyleNonce")){const n=this.frame[0].contentDocument.createElement.bind(this.frame[0].contentDocument);this.frame[0].contentDocument.createElement=(e,...t)=>{t=n(e,...t);return"style"===e&&(e=o.ConfigReader.get("inlineStyleNonce"))&&t.setAttribute("nonce",e),t}}var e,t=document.createElement("script");t.src=((e=r)&&e.trustedTypesPolicy?e.trustedTypesPolicy:{createScriptURL(e){return e}}).createScriptURL(o.getAssetUrl(i.assetName)),this.frame[0].contentDocument.body.appendChild(t),this.frame[0].contentWindow.ignoreIframeMonitor=!0,this.triggerOpened()}).appendTo(this.container),this.blockout=r.dom('<div id="pendo-app-dragging-blockout">').css({"z-index":v-2,position:"absolute",height:"100%",width:"100%",top:0,left:0,visibility:"hidden"}).appendTo(r.dom.getBody()),this.elements=[this.container,this.blockout],this.positionFrame=e=>{var{left:t,top:n,height:i}=e,{minimized:e,width:r}=e,t=t||b.LEFT,n=n||b.TOP,i=e?b.HEADER_HEIGHT:i;t=_({offsetLeft:t,offsetWidth:r},0),n=T({offsetTop:n,offsetHeight:i},0),this.container.css({left:t,top:n,height:i}),this.savePosition()},this.saveSize=()=>{var{offsetHeight:e,offsetWidth:t}=this.container[0];e&&t&&this.app.setProperties({height:e,width:t})},this.savePosition=()=>{var{offsetLeft:e,offsetTop:t}=this.container[0];e&&t&&this.app.setProperties({left:e,top:t})},this.toggleMinimize=()=>{this.app.setProperties({minimized:!this.app.state.minimized}),this.resizeHandle.css({visibility:this.app.state.minimized?"hidden":"visible"}),this.positionFrame(this.app.state)},this.positionFrame(this.app.state),Ye(this,this.savePosition),Je(this,this.saveSize),window.addEventListener("resize",s),this.listeners=[["resize",s]];const t=r._.throttle(()=>{return e=this.container[0],0<(t=e.offsetLeft+e.offsetWidth+w-window.innerWidth)&&(e.style.left=_(e,t)+"px",e.offsetWidth>y)&&(e.style.width=Ve(e,t)+"px"),void(0<(t=e.offsetTop+e.offsetHeight+w-window.innerHeight)&&(e.style.top=T(e,t)+"px",e.offsetHeight>m)&&(e.style.height=Ze(e,t)+"px"));var e,t},10),n=r._.debounce(()=>{this.savePosition(),this.saveSize()},1e3);function s(){t(),n()}}open(){return this.router.addRoute("app::toggleMinimize",this.toggleMinimize),this.container.appendTo(this.app.pendo.dom.getBody()),Promise.resolve()}close(){this.router.removeRoute("app::toggleMinimize"),this.listeners.forEach(([e,t])=>window.removeEventListener(e,t)),this.elements.forEach(e=>e.remove()),this.triggerClosed()}}const P=(...e)=>r=>{return[].concat(e).reduce((e,t,n,i)=>{e=t(e,r);return e||i.splice(n,i.length-n),e},r)};let tt=0;const nt=(e,t,n)=>{if(!e||"string"!=typeof t)return n;let i=e;for(const r of t.split(".")){if(null==i)return n;i=i[r]}return i===undefined?n:i};const it=(t,n)=>{if(t&&n)if(Array.isArray(t))for(let e=0;e<t.length;e++)n(t[e],e,t);else if("object"==typeof t)for(const e in t)t.hasOwnProperty(e)&&n(t[e],e,t);return t},rt=e=>"function"==typeof e,ot=e=>!(null==e),st="promise";function C(e,t,n){this.name=e,this.type=t,this.data=n}C.prototype.toString=function(){return`Message.${this.type} - `+this.name};const at=(e,t,n)=>{e=new C(e,t,n);return t===st&&(e.requestId=""+(tt+=1)),e},dt=e=>{try{var{name:t,type:n,isResponse:i,data:r,requestId:o,sender:s}=e.data||{},a=new C(t,n,ot(r)?JSON.parse(r):undefined);return a.requestId=o,a.sender=s,a.destination=e.source,a.isResponse=i,a}catch(d){return!1}},ut=e=>{var t=((e,t)=>{if(!e||"object"!=typeof e)return{};var n=Array.isArray(t)?t:[t],i={};for(const r in e)e.hasOwnProperty(r)&&!n.includes(r)&&(i[r]=e[r]);return i})(e,["destination","toString","data"]);return t.data=JSON.stringify(e.data,(e,t)=>"function"==typeof t||t instanceof RegExp?t.toString?t.toString():undefined:t),t},ct=e=>(e.isResponse=!0,e),I="disconnected",E={lastMessageReceivedAt:0,currentConnectionQuality:I,changeCallbacks:{},evalCallbacks:{}},R=e=>{e!==E.currentConnectionQuality&&(E.currentConnectionQuality=e,it(E.changeCallbacks,e=>{e(E.currentConnectionQuality)}))},lt=()=>{var e;0===E.lastMessageReceivedAt?R(I):((e=Date.now()-E.lastMessageReceivedAt)<1e4?R("connected"):1e4<e&&(3e4<e?R("dead_connection"):R(I)),it(E.evalCallbacks,e=>{e(E.currentConnectionQuality)}))};let S;let pt=0;const ht=()=>{E.currentConnectionQuality=I,E.lastMessageReceivedAt=0},z={appName:undefined,connectionName:undefined,frameId:undefined,pendingRequests:{},topics:{},senderIds:{},originProvider:undefined,destinationProvider:undefined},gt=()=>""+z.appName+z.connectionName+`(${z.frameId})`,A=e=>{e.sender||(e.sender=gt());var t=e.destination||z.destinationProvider(),n=ut(e),i=vt(e.sender),r=bt(e.sender);i||r?i?i.postMessage(n):t.postMessage(n,z.originProvider()):(r=new MessageChannel,It(r.port1,e.sender),t.postMessage(n,z.originProvider(),[r.port2]))},ft=(r,o,s=1e3)=>new Promise((e,t)=>{const n=at(r,st,o),i=setTimeout(()=>{t(r+" timeout"),yt(n),Rt(n)},s);mt(n,()=>clearTimeout(i),e,t),A(n)}),H=e=>{var t;return z.senderIds[e]||(t=e,z.senderIds[t])||(z.senderIds[t]={port:undefined,hasTriedToUpgradeToMessageChannel:!1}),z.senderIds[e]},vt=e=>H(e).port,bt=e=>H(e).hasTriedToUpgradeToMessageChannel,mt=(e,t,n,i)=>{z.pendingRequests[e.requestId]={message:e,clearTimeoutfn:t,resolve:n,reject:i}};const yt=e=>{var t=e["requestId"];return z.pendingRequests[t].clearTimeoutfn(),delete z.pendingRequests[t],e};const wt="message::ping";var _t;const Tt=P(e=>{var t=z.pendingRequests[e.requestId];return t&&(t.resolve(e.data),yt(e)),e},t=>{var e=z.topics[t.name];return e&&e.forEach(e=>e(t.data)),t},t=>{var e;return t&&!t.isResponse&&(t.name===wt?A(ct(t)):(e=z.routeHandlerLookup(t.name))?e(t,e=>{t.data=e,A(ct(t))}):console.log(gt(),"No route handler for "+t.name,t)),t},(_t=()=>{var e;e=Date.now(),E.lastMessageReceivedAt=e},(e,...t)=>(_t(e,...t),e))),Pt=e=>("*"===z.originProvider()||e.origin===z.originProvider())&&e,Ct=e=>{var t=nt(e,"data.sender");return!(!t||"string"!=typeof t||!t.includes(z.appName))&&e},It=(e,t)=>{t=H(t);t.port=e,t.hasTriedToUpgradeToMessageChannel=!0,t.port.onmessage=P(dt,Tt)},Et=(e,t)=>{return!H(e.sender).hasTriedToUpgradeToMessageChannel&&t.ports&&t.ports[0]&&It(t.ports[0],e.sender),e},Rt=e=>{e=e.sender;(e=H(e)).port=undefined,e.hasTriedToUpgradeToMessageChannel=!1};let O=()=>{};const St=()=>{O(),O=()=>{},S&&S(),ht()},zt=((i,r)=>{let o,s=0,a;return function(...e){var t=Date.now(),n=r-(t-s);return n<=0||r<n?(o&&(clearTimeout(o),o=null),s=t,a=i.apply(this,e)):!o&&0<r&&(o=setTimeout(()=>{s=Date.now(),o=null,a=i.apply(this,e)},n)),a}})(e=>{"connected"!==e&&z.usePingAutoReconnect&&ft(wt)["catch"](()=>{console.log("message::ping timedout")})},1e3),At=(e,t,n,i,r,o=!1,s)=>{if(window.addEventListener){z.appName=e,z.frameId=t,z.routeHandlerLookup=n,z.usePingAutoReconnect=o,z.connectionName=s||"",z.originProvider=i||(()=>window.location.origin||"*"),z.destinationProvider=r||(()=>window.parent||window.top);{const d=setInterval(lt,100);S=()=>clearInterval(d)}e=zt;if(rt(e)){const u=pt++;E.evalCallbacks[u]=e}const a=P(Pt,Ct,dt,Et,Tt);window.addEventListener("message",a),O=()=>window.removeEventListener("message",a)}},Ht=e=>{if(rt(e)){const t=pt++;E.changeCallbacks[t]=e}};function Ot(){return(new Date).getTime()}class Nt extends Ke{type="window";testUrl="";realUrl=undefined;getTitle(){return this.getConfig("title",this.getName())}getName(){return this.getConfig("name","Agent_Application")}open(){return this.router.addRoute("app::windowClosed",()=>{this.app.setProperties({containerType:"frame"}),this.app.stop()}),this.testConnection().then(()=>{this.triggerOpened()})["catch"](()=>{return this.createWindow(),r=this.app,o=1e3,new Promise((e,t)=>{const n=Ot(),i=()=>{r.getConnectionStatus()?e():Ot()-n>o?t():setTimeout(i,50)};i()});var r,o})}testConnection(){return this.destination=window.open(this.testUrl,this.getName(),`width=${this.app.state.width},height=${this.app.state.height},resizable=yes,scrollbars=yes,status=yes,location=no`),ft("app::reconnect")}createWindow(){this.realUrl&&(this.destination=window.open(this.realUrl,this.getName(),`width=${this.app.state.width},height=${this.app.state.height},resizable=yes,scrollbars=yes,status=yes,location=no`));var e=document.createElement("script");e.src=this.app.PluginAPI.getAssetUrl(this.app.assetName),this.destination.document.body.appendChild(e),this.destination.document.title=this.getTitle()}close(){this.router.removeRoute("app::windowClosed"),this.destination.close(),this.triggerClosed()}}const Dt=()=>({});class xt{defaultState={containerType:"frame",minimized:!1,height:500,width:500,left:100,top:100};state={};containerClosedCallbacks=[];container=null;isConnected=!1;constructor(e,t,n,i,r,o=Dt,s=Dt){this.appName=e,this.assetName=t,this.assetStorageKey=n,this.connectionName=i,this.frameConfigProvider=o,this.windowConfigProvider=s,r&&Object.assign(this.defaultState,r),this.router=new k}init(e,t){this.pendo=e,this.PluginAPI=t,this.events=t.getEventable(),this.router.addRoute("app::ping",(e,t)=>{t()}),this.router.addRoute("app::setProperties",({data:e})=>{this.setProperties(e)}),this.router.addRoute("app::toggleContainer",()=>{this.setProperties({minimized:!1}),this.toggleContainerType()}),this.router.addRoute("app::windowClosed",()=>{}),this.loadState(),this.prepContainer()}prepContainer(){this.container="window"===this.state.containerType?new Nt(this,this.windowConfigProvider()):new et(this,this.frameConfigProvider())}setConnectionStatus(e){this.isConnected="connected"===e}getConnectionStatus(){return this.isConnected}setProperties(e){Object.assign(this.state,e),this.writeState()}getDefaultState(){return this.defaultState||{}}loadState(){try{var e=this.PluginAPI.agentStorage.read(this.assetStorageKey);this.state=Object.assign({},this.getDefaultState(),this.state,e)}catch(t){this.PluginAPI.log.error(t),this.state=Object.assign({},this.getDefaultState(),this.state)}}writeState(){this.PluginAPI.agentStorage.write(this.assetStorageKey,this.state)}toggleContainerType(){var e="frame"===this.state.containerType?"window":"frame";this.setProperties({containerType:e}),this.stop(),this.start()}start(){this.container||this.prepContainer();var e=this.PluginAPI.EventTracer.addTracerIds({})["frameId"];At(this.appName,e,this.router.lookupRouteProvider(),this.container.getOriginProvider(),this.container.getDestinationProvider(),!0,this.connectionName),Ht(e=>{this.setConnectionStatus(e)}),this.container.open().then(()=>{this.events.trigger("mounted")})["catch"](()=>{"window"===this.state.containerType?(this.setProperties({containerType:"frame"}),this.prepContainer(),this.start()):(this.PluginAPI.log(`Failed to start ${this.appName} in either window or frame.`),this.stop())})}stop(){this.container.close(),this.container=null,this.events.trigger("unmounted"),St()}}const N=function(){var e={height:b.HEIGHT,width:b.WIDTH};let r,o;const s=new xt("Debugger","pendo.debugger.min.js","debug-enabled","AgentPlugin",e,()=>({containerId:"pendo-client-debugger"}),()=>({title:"Pendo Debugger"}));return{app:s,init(e,t){r=e,(o=t).restartDebugger=this.start,s.init(r,o),s.router.addRoute("debugger::connect",(e,t)=>{var n;t({config:o.ConfigReader.audit(),env:{apiKey:(n=r).apiKey,environment:n.debugging.isStagingServer()?"staging":"production",device:n.debugging.isMobileUserAgent()?"mobile":"desktop",browserCookies:window.navigator.cookieEnabled,guideStatus:n.areGuidesDisabled()?"disabled":n.debugging.areGuidesDelayed()?"delayed":"enabled"},container:s.state,events:o.store.state["debugger"].eventsCaptured})}),s.router.addRoute("debugger::stop",()=>{r.disableDebugging()}),s.router.addRoute("debugger::showGuideById",(e,t)=>{t(r.showGuideById(e.data))}),s.router.addRoute("debugger::toggleGuideLoop",e=>{e.data?r.startGuides():r.stopGuides()}),s.router.addRoute("debugger::tombstoneGuide",e=>{e=r.findGuideById(e.data);o.Tombstone.addGuide(e)}),s.router.addRoute("debugger::openGuidePage",e=>{e=e.data,i=r,t=o.hosts.SERVER;var t,n,i=(n=i.findGuideById(e))&&i._.get(n,"attributes.resourceCenter")?n.attributes.resourceCenter.isTopLevel?`${t}/resource-center/${n.id}/draft`:(i=i.BuildingBlocks.BuildingBlockResourceCenter.getResourceCenter())&&i.id?`${t}/resource-center/${i.id}/module/`+n.id:"":t+"/guides/"+e;i&&window.open(i,"_blank")}),s.router.addRoute("debugger::restore",({data:e})=>{if(e&&e.length){const t=document.createElement("iframe");t.sandbox="allow-same-origin",t.src="about:blank",t.hidden=!0,document.body.appendChild(t),t.contentWindow.ignoreIframeMonitor=!0,e.forEach(e=>{e.id.split(".").reduce((e,t,n,i)=>n===i.length-1?(e.destination[t]=e.source[t],e.destination[t]):(e.destination=e.destination[t],e.source=e.source[t],e),{destination:window,source:t.contentWindow})}),document.body.removeChild(t)}}),s.router.addRoute("debugger::findShadowRoot",(e,t)=>{t((()=>{let e=!1,t=0;var n,i=document.createNodeIterator(document.body,NodeFilter.SHOW_ELEMENT);if(!i||!i.nextNode)return!0;for(;t<1e4&&!e;)t++,(n=i.nextNode())&&n.shadowRoot&&(e=!0);return e})())}),s.router.addRoute("debugger::sync",(e,n)=>{const t=o.store.subscribe((e,t)=>{"debugger/eventsCaptured"===e.type&&n({action:"events/eventsCaptured",data:t["debugger"].eventsCaptured})}),i=setInterval(()=>{n({action:"agent/sync",data:o.store.state}),n({action:"environment/validateEnvironment",data:r.validateEnvironment(!0)})},500);s.events.on("unmounted",()=>{clearInterval(i),t()})}),s.router.addRoute("debugger::enableEventLogging",({data:e})=>{s.setProperties({enableEventLogging:e}),o.store.dispatch("debugger/enableEventLogging",e)}),s.router.addRoute("debugger::clearEventsCaptured",()=>{o.store.dispatch("debugger/clearEventsCaptured")}),s.router.addRoute("debugger::checkGuideEligibility",({data:e},t)=>{o.store.dispatch("debugger/checkGuideEligibility",{guideId:e,response:t})})},start(){s.start()},stop(){s.stop(),s.setProperties({enabled:!1,containerType:"frame"})}}}();a={initialize:function(e,t){N.init(e,t),N.start();const n=e.disableDebugging;e.disableDebugging=()=>{N.stop(),n()}},teardown:function(){N.stop()}},l=document.getElementById("pendo-debugger-plugin");let D="pendo";l&&(D=l.getAttribute("data-pendo-global-key")||"pendo"),window[D].addExtension&&window[D].addExtension({name:"Debugger",version:"1.0.0",type:"agent",use:"plugin",uri:a})}();
|
package/dist/dom.esm.js
CHANGED
|
@@ -6872,8 +6872,6 @@ var ConfigReader = (function () {
|
|
|
6872
6872
|
addOption('trainingPartner');
|
|
6873
6873
|
// Frustration
|
|
6874
6874
|
addOption('errorClickLogging', [PENDO_CONFIG_SRC], false);
|
|
6875
|
-
// Internal
|
|
6876
|
-
addOption('forceParentDesigner', [SNIPPET_SRC]); // Only works in non-prod environments for automated testing
|
|
6877
6875
|
// Embedded Guides
|
|
6878
6876
|
addOption('enableAllEmbeddedGuideEvents', [PENDO_CONFIG_SRC], false);
|
|
6879
6877
|
// Form Validation
|
|
@@ -7289,7 +7287,7 @@ function getScreenPosition(element) {
|
|
|
7289
7287
|
};
|
|
7290
7288
|
}
|
|
7291
7289
|
|
|
7292
|
-
var VERSION = '2.
|
|
7290
|
+
var VERSION = '2.286.0_';
|
|
7293
7291
|
|
|
7294
7292
|
var decodeURIComponent = _.isFunction(window.decodeURIComponent) ? window.decodeURIComponent : _.identity;
|
|
7295
7293
|
|
|
@@ -7429,11 +7427,11 @@ var StorageRegistry = /** @class */ (function () {
|
|
|
7429
7427
|
function StorageRegistry() {
|
|
7430
7428
|
this.keys = {};
|
|
7431
7429
|
}
|
|
7432
|
-
StorageRegistry.prototype.addLocal = function (key) {
|
|
7433
|
-
this._add(key, 'local');
|
|
7430
|
+
StorageRegistry.prototype.addLocal = function (key, config) {
|
|
7431
|
+
this._add(key, 'local', config);
|
|
7434
7432
|
};
|
|
7435
|
-
StorageRegistry.prototype.addSession = function (key) {
|
|
7436
|
-
this._add(key, 'session');
|
|
7433
|
+
StorageRegistry.prototype.addSession = function (key, config) {
|
|
7434
|
+
this._add(key, 'session', config);
|
|
7437
7435
|
};
|
|
7438
7436
|
StorageRegistry.prototype.hasLocal = function (key) {
|
|
7439
7437
|
return this._has(key, 'local');
|
|
@@ -7441,13 +7439,47 @@ var StorageRegistry = /** @class */ (function () {
|
|
|
7441
7439
|
StorageRegistry.prototype.hasSession = function (key) {
|
|
7442
7440
|
return this._has(key, 'session');
|
|
7443
7441
|
};
|
|
7444
|
-
StorageRegistry.prototype.
|
|
7442
|
+
StorageRegistry.prototype.getKeyConfig = function (key, option, override) {
|
|
7443
|
+
if (doesExist(override)) {
|
|
7444
|
+
return override;
|
|
7445
|
+
}
|
|
7446
|
+
if (!this.keys[key]) {
|
|
7447
|
+
return undefined;
|
|
7448
|
+
}
|
|
7449
|
+
return this.keys[key][option];
|
|
7450
|
+
};
|
|
7451
|
+
StorageRegistry.prototype.getKeySerializer = function (key) {
|
|
7452
|
+
if (!this.keys[key]) {
|
|
7453
|
+
return _.identity;
|
|
7454
|
+
}
|
|
7455
|
+
return this.keys[key].serializer;
|
|
7456
|
+
};
|
|
7457
|
+
StorageRegistry.prototype.getKeyDeserializer = function (key) {
|
|
7458
|
+
if (!this.keys[key]) {
|
|
7459
|
+
return _.identity;
|
|
7460
|
+
}
|
|
7461
|
+
return this.keys[key].deserializer;
|
|
7462
|
+
};
|
|
7463
|
+
StorageRegistry.prototype._add = function (key, type, config) {
|
|
7464
|
+
if (config === void 0) { config = {}; }
|
|
7465
|
+
config = _.extend({
|
|
7466
|
+
type: type,
|
|
7467
|
+
duration: null,
|
|
7468
|
+
isPlain: false,
|
|
7469
|
+
isSecure: false,
|
|
7470
|
+
cookieSuffix: undefined,
|
|
7471
|
+
serializer: _.identity,
|
|
7472
|
+
deserializer: _.identity
|
|
7473
|
+
}, config);
|
|
7445
7474
|
if (this.keys[key])
|
|
7446
7475
|
return;
|
|
7447
|
-
this.keys[key] =
|
|
7476
|
+
this.keys[key] = config;
|
|
7448
7477
|
};
|
|
7449
7478
|
StorageRegistry.prototype._has = function (key, type) {
|
|
7450
|
-
|
|
7479
|
+
if (this.keys[key]) {
|
|
7480
|
+
return this.keys[key].type === type;
|
|
7481
|
+
}
|
|
7482
|
+
return false;
|
|
7451
7483
|
};
|
|
7452
7484
|
return StorageRegistry;
|
|
7453
7485
|
}());
|
|
@@ -7512,21 +7544,28 @@ var agentStorage = (function () {
|
|
|
7512
7544
|
}
|
|
7513
7545
|
}
|
|
7514
7546
|
// Will always return a string or null
|
|
7547
|
+
// no longer true as a deserializer added for a key will allow for any return value.
|
|
7548
|
+
// maintaining null as a non success return value should be the norm
|
|
7515
7549
|
function read(name, isPlain, cookieSuffix) {
|
|
7550
|
+
isPlain = registry.getKeyConfig(name, 'isPlain', isPlain);
|
|
7551
|
+
cookieSuffix = registry.getKeyConfig(name, 'cookieSuffix', cookieSuffix);
|
|
7552
|
+
var rawValue;
|
|
7516
7553
|
if (canUseLocalStorage()) {
|
|
7517
7554
|
var key = !isPlain ? getPendoCookieKey(name, cookieSuffix) : name;
|
|
7518
|
-
|
|
7519
|
-
if (
|
|
7555
|
+
rawValue = ttlApply(localStorage.getItem(key));
|
|
7556
|
+
if (rawValue === null) {
|
|
7520
7557
|
clear(name, isPlain, cookieSuffix);
|
|
7521
7558
|
}
|
|
7522
|
-
return val;
|
|
7523
|
-
}
|
|
7524
|
-
if (!isPlain) {
|
|
7525
|
-
return get_pendo_cookie(name, cookieSuffix);
|
|
7526
7559
|
}
|
|
7527
7560
|
else {
|
|
7528
|
-
|
|
7561
|
+
if (!isPlain) {
|
|
7562
|
+
rawValue = get_pendo_cookie(name, cookieSuffix);
|
|
7563
|
+
}
|
|
7564
|
+
else {
|
|
7565
|
+
rawValue = getCookie(name);
|
|
7566
|
+
}
|
|
7529
7567
|
}
|
|
7568
|
+
return registry.getKeyDeserializer(name)(rawValue);
|
|
7530
7569
|
}
|
|
7531
7570
|
function ttlApply(value) {
|
|
7532
7571
|
if (value === null)
|
|
@@ -7549,6 +7588,11 @@ var agentStorage = (function () {
|
|
|
7549
7588
|
}
|
|
7550
7589
|
// consider assert type of val (what do we support? string, number, boolean? )
|
|
7551
7590
|
function write(name, val, duration, isPlain, isSecure, cookieSuffix) {
|
|
7591
|
+
duration = registry.getKeyConfig(name, 'duration', duration);
|
|
7592
|
+
isPlain = registry.getKeyConfig(name, 'isPlain', isPlain);
|
|
7593
|
+
isSecure = registry.getKeyConfig(name, 'isSecure', isSecure);
|
|
7594
|
+
cookieSuffix = registry.getKeyConfig(name, 'cookieSuffix', cookieSuffix);
|
|
7595
|
+
val = registry.getKeySerializer(name)(val);
|
|
7552
7596
|
resetCache(storageAvailable);
|
|
7553
7597
|
if (canUseLocalStorage()) {
|
|
7554
7598
|
// We'll try to write but if that fails, just fall down to cookies.
|
|
@@ -7578,6 +7622,8 @@ var agentStorage = (function () {
|
|
|
7578
7622
|
});
|
|
7579
7623
|
}
|
|
7580
7624
|
function clear(name, isPlain, cookieSuffix) {
|
|
7625
|
+
isPlain = registry.getKeyConfig(name, 'isPlain', isPlain);
|
|
7626
|
+
cookieSuffix = registry.getKeyConfig(name, 'cookieSuffix', cookieSuffix);
|
|
7581
7627
|
var key = !isPlain ? getPendoCookieKey(name, cookieSuffix) : name;
|
|
7582
7628
|
if (canUseLocalStorage()) {
|
|
7583
7629
|
return localStorage.removeItem(key);
|