UNPKG

@gsc-basic/robot-sdk

Version:

GSC Team Ticket Robot SDK

129 lines 13.4 kB
(function(g,f){typeof exports==='object'&&typeof module!=='undefined'?f(exports):typeof define==='function'&&define.amd?define(['exports'],f):(g=typeof globalThis!=='undefined'?globalThis:g||self,f(g.ServerRobot={}));})(this,(function(exports){'use strict';var Te=Object.defineProperty;var X=Object.getOwnPropertySymbols;var ie=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable;var oe=(e,t,i)=>t in e?Te(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,g=(e,t)=>{for(var i in t||(t={}))ie.call(t,i)&&oe(e,i,t[i]);if(X)for(var i of X(t))ne.call(t,i)&&oe(e,i,t[i]);return e};var se=(e,t)=>{var i={};for(var a in e)ie.call(e,a)&&t.indexOf(a)<0&&(i[a]=e[a]);if(e!=null&&X)for(var a of X(e))t.indexOf(a)<0&&ne.call(e,a)&&(i[a]=e[a]);return i};var x;function re(e,t,i){let a=t;if(!x){x=document.createElement("robot-previewer");let f=document.createElement("style");f.setAttribute("robot-previewer",""),f.setAttribute("type","text/css"),f.innerHTML=` robot-previewer { display: none; box-sizing: border-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } robot-previewer .___previewer-close { position: fixed; width: 80px; height: 80px; border-radius: 50%; overflow: hidden; right: -40px; top: -40px; text-align: center; background-color: rgba(0, 0, 0, 0.9); cursor: pointer; z-index: 100000002; } robot-previewer .___previewer-close>span { position: fixed; top: 4px; right: 8px; font-size: 1.2em; } robot-previewer .___previewer-prev, robot-previewer .___previewer-next { position: fixed; width: 60px; height: 60px; background-color: rgba(0, 0, 0, 0.4); cursor: pointer; z-index: 100000002; top: 50vh; margin-top: -30px; text-align: center; line-height: 56px; overflow: hidden; font-size: 38px; } robot-previewer .___previewer-prev { left: 0 } robot-previewer .___previewer-next { right: 0 } robot-previewer .___previewer-close>span, robot-previewer .___previewer-prev>span, robot-previewer .___previewer-next>span { font-weight: bold; color: white; } robot-previewer .___previewer-img { margin: auto; position: fixed; top: 0; bottom: 0; left: 0; right: 0; max-height: 90%; max-width: 90%; z-index: 100000002; box-shadow: 0px 0px 10px 0px rgba(0,0,0,0.75); } robot-previewer .___previewer-fade { background-color: rgba(0,0,0,0.5); position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 100000000; } `,document.head.appendChild(f),x.innerHTML=` <div class="___previewer-fade"></div> <img src="" alt="" class="___previewer-img" /> <div class="___previewer-close"><span>\xD7</span></div> `,(i||document.body).appendChild(x),x.querySelector(".___previewer-close").addEventListener("click",u),x.querySelector(".___previewer-fade").addEventListener("click",u);}function u(){x.style.display="none",x.querySelector(".___previewer-img").src="";}x.querySelector(".___previewer-img").src=e[a],x.style.display="block";}var O={prod:"https://scc.lenovo.com/robot",test:"https://sccuat.lenovo.com/robot",local:"http://localhost:5174/robot/"},le={display:"inline-block",position:"fixed",bottom:"8vh",right:"2.5vh",zIndex:"100000",width:"5vh",height:"5vh",userSelect:"none",MozUserSelect:"none",msUserSelect:"none"},ae="https://scc.lenovo.com/download/static/public?filename=robot.gif",ce={width:"100%",height:"110%",cursor:"pointer",userSelect:"none",MozUserSelect:"none",msUserSelect:"none",position:"relative"},pe={display:"none",position:"absolute",backgroundColor:"#fff",color:"black",padding:"5px 7px",height:"75px",maxWidth:"210px",minWidth:"180px",top:"-10vh",left:"-13.5vh",borderRadius:"0.8vh",boxShadow:"0 2px 6px #00000014,0 1px 3px -2px #0000001f,0 4px 12px 4px #0000000d",zIndex:"999"},de={color:"#1d2129",fontWeight:"600",fontSize:"18px",marginBottom:"0.5vh",whiteSpace:"nowrap"},U={color:"#4e5969",fontSize:"14px",whiteSpace:"nowrap"},he={width:"0",height:"0",borderLeft:"1vh solid transparent",borderRight:"1vh solid transparent",borderBottom:"1vh solid white",position:"absolute",top:"100%",left:"175px",transform:"translateX(-50%) rotate(180deg)"},fe={position:"absolute",zIndex:"9999",width:"450px",height:"605px",boxShadow:"0 2px 6px #00000014,0 1px 3px -2px #0000001f,0 4px 12px 4px #0000000d",borderRadius:"10px",display:"block"},G=1,ue=["\u3010\u5907\u6CE8\u3011: ","\u3010Comment\u3011: ","\u3010\u5907\u6CE8\u3011:","\u3010Comment\u3011:"],me="robot__iframe";var Se={env:"prod",robot_auth:"basic"},Le={robot_lang:"en"},Re={chat_enable:"yes",ticket_enable:"yes"},ze={draggable:!0,resizable:!0},Me=g(g(g(g({},Se),Le),Re),ze);function ge(e){let r=e,{envConfig:t={},appConfig:i={},featureConfig:a={},uiConfig:u={}}=r,f=se(r,["envConfig","appConfig","featureConfig","uiConfig"]);return g(g(g(g(g(g({},Me),t),i),a),u),f)}function be(){let e=document.createElement("style");e.innerHTML=` .resizable-iframe-container { position: relative; display: inline-block; } .resizable-iframe { width: 100%; height: 100%; border: none; } .resize-handle { position: absolute; background-color: transparent; z-index: 99999; } .resize-handle.rb { display: none; width: 4px; height: 4px; right: -8px; bottom: -8px; cursor: se-resize; } .resize-handle.lt { width: 6px; height: 6px; left: 1px; top: 1px; cursor: nw-resize; z-index: 100000; } .resize-handle.l { width: 6px; height: 100%; left: 1px; top: 0; cursor: w-resize; } .resize-handle.t { width: 100%; height: 6px; top: 1px; left: 0; cursor: n-resize; } `,document.head.appendChild(e);}function xe(){let e=document.createElement("div");return e.classList.add("resizable-iframe-container"),e.innerHTML=` <div class="resize-handle rb"></div> <div class="resize-handle lt"></div> <div class="resize-handle l"></div> <div class="resize-handle t"></div> `,e}function ye(){let e=document.createElement("div");return Object.assign(e.style,{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",backgroundColor:"rgba(0, 0, 0, 0.1)",zIndex:"99999",display:"none"}),e}function _e(e,t,i){let a=!1,u,f,r,v,k,C,W;e.querySelectorAll(".resize-handle").forEach(T=>{T.addEventListener("mousedown",b=>{a=!0,W=T.classList[1],u=b.clientX,f=b.clientY,r=e.offsetWidth,v=e.offsetHeight,k=e.offsetLeft,C=e.offsetTop,i.style.display="block",document.addEventListener("mousemove",A),document.addEventListener("mouseup",H);});});function A(T){if(a){let b=T.clientX-u,S=T.clientY-f,L=400,R=600,z=1100,n=720,s,o,c,h;switch(W){case"rb":s=Math.min(Math.max(r+b,L),z),o=Math.min(Math.max(v+S,R),n),e.style.width=`${s}px`,e.style.height=`${o}px`;break;case"lt":s=Math.min(Math.max(r-b,L),z),o=Math.min(Math.max(v-S,R),n),s>L&&s<z&&(c=k+b,e.style.left=`${c}px`),o>R&&o<n&&(h=C+S,e.style.top=`${h}px`),e.style.width=`${s}px`,e.style.height=`${o}px`;break;case"l":s=Math.min(Math.max(r-b,L),z),s>L&&s<z&&(c=k+b,e.style.left=`${c}px`),e.style.width=`${s}px`;break;case"t":o=Math.min(Math.max(v-S,R),n),o>R&&o<n&&(h=C+S,e.style.top=`${h}px`),e.style.height=`${o}px`;break}t.style.width=e.style.width,t.style.height=e.style.height;}}function H(){a=!1,i.style.display="none",document.removeEventListener("mousemove",A),document.removeEventListener("mouseup",H);}}function ve(e,t){new ResizeObserver(t).observe(e);}var B;function we({env:e="prod"}={}){if(B)return B;let t=document.createElement("iframe"),i=xe(),a=!1,u=!0,f,r,v;function k(n,s){let o=ge(s);if(a){console.warn("Robot has been initialized, please do not initialize it again.");return}let c=O.prod;e==="prod"?o.env==="test"?c=O.test:o.env==="local"&&(c=O.local):e==="test"&&(c=O.test,o.env==="local"&&(c=O.local)),a=!0,typeof n=="string"?f=document.querySelector(n):n instanceof HTMLElement&&(f=n),r=document.createElement("robot-parent"),r.id=me,Object.assign(r.style,le),(f||document.body).appendChild(r);let h=document.createElement("img");h.src=o.icon||ae,h.setAttribute("alt","IT Support"),Object.assign(h.style,ce);let y=R(o);z(h,y),r.appendChild(h),r.appendChild(y);try{let d=Object.fromEntries(Object.entries({appKey:o.robot_appKey,secret:o.robot_secret,userKey:o.robot_userKey,initLang:o.robot_lang,authMethod:o.robot_auth,chatServiceId:o.chat_serviceId,chatEnable:o.chat_enable,ticketEnable:o.ticket_enable,expiresTime:o.expires_time,appTitle:typeof o.app_title=="string"?JSON.stringify({en:o.app_title,cn:o.app_title}):JSON.stringify(o.app_title),appName:o.app_name}).filter(([w,m])=>m!=null)),l=new URLSearchParams(d);t.src=`${c}?${l.toString()}`,t.frameBorder="0",t.id="robot__iframe",t.title="Ticket Assistant",t.scrolling="no",t.allowTransparency="true",t.allow="autoplay",t.display="none",Object.assign(t.style,fe);}catch(d){console.error(d);}function V(d,l,w,m){let E=typeof d=="number"?`${d}px`:d||m;return Math.max(l,Math.min(w,Number.parseInt(E)))}let J=V(o.iframe_width,400,1100,"450px"),Q=V(o.iframe_height,600,720,"605px");t.style.width=`${J}px`,t.style.height=`${Q}px`,i.style.width=t.style.width,i.style.height=t.style.height,i.style.display="none",i.appendChild(t);let j=(d=!1)=>{d||(r.style.top="",r.style.left="");let l=window.innerHeight,w=450,m=880,E=.51,N=1,p=l<=w?E:l>=m?N:E+(N-E)*((l-w)/(m-w)),D=t.offsetWidth||J,q=t.offsetHeight||Q;i.style.transform=`scale3d(${p}, ${p}, 1)`,i.style.top=`${-40*p-q+q*(1-p)/2}px`,i.style.left=`${10*p-D+D*(1-p)/2}px`,y.style.transform=`scale3d(${p}, ${p}, 1)`;let _=y.getBoundingClientRect(),M=_.width/p||200,I=_.height/p||75;y.style.top=`${-10*p-I+I*(1-p)/2}px`,y.style.left=`${40*p-M+M*(1-p)/2}px`;};j(!1),r.appendChild(i),be(),ve(t,()=>{j(!0);}),window.addEventListener("resize",()=>{j(!1);});function Ee(d){let l=d,w=l.querySelector("img"),m=!1,E,N;w.onmousedown=function(p){m=!0,E=p.clientX-l.offsetLeft,N=p.clientY-l.offsetTop,v=!1;let D=p.clientX,q=p.clientY;return document.onmousemove=function(_){if(m){let M=_.clientX-E,I=_.clientY-N;l.style.left=`${M}px`,l.style.top=`${I}px`;let F=Math.abs(_.clientX-D),P=Math.abs(_.clientY-q);(F>G||P>G)&&(v=!0);}},document.onmouseup=function(){m=!1,document.onmousemove=null,document.onmouseup=null;let _=document.body.clientWidth,M=document.body.clientHeight,I=l.offsetWidth,F=l.offsetHeight,P=0,Z=0,ee=_-I/2,te=M-F/2,$=Number.parseInt(l.style.left),Y=Number.parseInt(l.style.top);$<P?$=P:$>ee&&($=ee),Y<Z?Y=Z:Y>te&&(Y=te),l.style.left=`${$}px`,l.style.top=`${Y}px`;},!1};}if(o.draggable!==!1&&Ee(r),o.resizable!==!1){let d=ye();i.appendChild(d),t.classList.add("resizable-iframe"),_e(i,t,d);}else i.querySelectorAll(".resize-handle").forEach(l=>{l.style.cursor="default";});window.addEventListener("message",d=>{d.data&&d.data.type==="childClose"&&(i.style.display="none");});}function C(n){t.contentWindow.postMessage({type:"changeRouteKey",routeKey:n},"*");}function W(n,s="",o="",c=ue){t.contentWindow.postMessage({type:"quickSubmitTicket",issue:n,issueDescription:s,customData:o,cursorPositionStrArr:c},"*"),i.style.display="block",u=!1;}function K(n){t.contentWindow.postMessage({type:"changeLang",lang:n},"*");}let A=()=>{let n=s=>{var c;let{data:o}=s;o.type==="requestToken"?T():o.type==="viewImages"&&re(o.images||[],(c=o.index)!=null?c:0,r);};return window.addEventListener("message",n),()=>{window.removeEventListener("message",n);}},H=(n,s,o="*")=>{n?n.postMessage(s,o):console.error("postMessage Error: targetWindow is not exist!");},T=()=>{var n,s;t&&H(t.contentWindow,{type:"basicToken",token:(s=window.__BASIC_COMMON_TOKEN__)!=null?s:(n=window.localStorage)==null?void 0:n.getItem("__BASIC_COMMON_TOKEN__")},"*");};function b(){t&&H(t.contentWindow,{type:"removeBasicToken"},"*");}function S(n){r?r.style.display=n?"inline-block":"none":console.error("Robot isn't initialized yet!");}let L=A();function R(n){let s=document.createElement("div");Object.assign(s.style,pe);let o=document.createElement("div");o.textContent=n.tooltip_title||"\u6280\u672F\u652F\u6301(IT Support)",Object.assign(o.style,de),s.appendChild(o);let c=document.createElement("div");c.textContent=n.tooltip_desc_cn||"\u63D0\u4EA4\u5DE5\u5355\u4EE5\u83B7\u5F97\u66F4\u591A\u5E2E\u52A9\u3002",Object.assign(c.style,U),s.appendChild(c);let h=document.createElement("div");h.textContent=n.tooltip_desc_en||"Open a ticket for more help.",Object.assign(h.style,U),s.appendChild(h);let y=document.createElement("div");return Object.assign(y.style,he),s.appendChild(y),s}function z(n,s){n.addEventListener("mouseover",()=>{i.style.display!=="block"&&(s.style.display="block");}),n.addEventListener("mouseout",()=>{s.style.display="none";}),n.addEventListener("click",()=>{v||(i.style.display==="none"?(i.style.display="block",s.style.display="none",u&&(t.contentWindow.postMessage({type:"firstOpen"},"*"),u=!1)):(i.style.display="none",t.contentWindow.postMessage({type:"parentClose"},"*")));});}return B={changeRobotLang:K,destroyTokenListener:L,initRobot:k,quickSubmit:W,setRouteKey:C,toggleRobotVisibility:S,robotRemoveBasicToken:b},B}var {changeRobotLang:Pe,destroyTokenListener:Xe,initRobot:Be,quickSubmit:je,setRouteKey:Fe,toggleRobotVisibility:Ue,robotRemoveBasicToken:Ge}=we({env:"test"});exports.changeRobotLang=Pe;exports.destroyTokenListener=Xe;exports.initRobot=Be;exports.quickSubmit=je;exports.robotRemoveBasicToken=Ge;exports.setRouteKey=Fe;exports.toggleRobotVisibility=Ue;}));