UNPKG

trimble-connect-workspace-api

Version:

Trimble Connect Workspace API

2 lines (1 loc) 8.21 kB
define(["exports"],(function(e){"use strict";const t={postMessage:(e,t)=>{const n=JSON.stringify(e);connectWsApiIntegrator.postMessage(n)}},n={postMessage:(e,t)=>{window.chrome.webview.postMessage(e)}},i={postMessage:(e,t)=>{window.webkit.messageHandlers.webwindowinterop.postMessage(e)}},r={postMessage:(e,t)=>{const n=JSON.stringify(e);window.hybridWebViewHost.sendMessage(n)}},o=()=>crypto.randomUUID(),s=()=>{const e=window;return!!(e&&e.chrome&&e.chrome.webview)},a=()=>{const e=window;return!(!e||!("CefSharp"in e))},c=async()=>(window.connectWsApiIntegrator||await CefSharp.BindObjectAsync("connectWsApiIntegrator"),t),d=()=>n,u=async e=>{let t;return t=e===window?a()?await c():s()?d():e:e,t},f="Trimble.dispatcher.v1",p={},l={};let w=1;function g(e){const t=v();return l[t]=e,()=>delete l[t]}function y(e,t,n,i,r=3e5){return new Promise(((o,s)=>{const a=v(),c={scope:f,type:"request",id:a,api:n,args:i};let d;r>0&&(d=setTimeout((()=>{delete p[a],s(new Error("dispatcher.ts | sendRequest(): Operation timed out."))}),r)),p[a]=e=>{delete p[a],d&&clearTimeout(d),e.error?s(e.error):o(e.result)},e.postMessage(c,t)}))}function b(e,t,n,i){const r={scope:f,type:"event",event:n,data:i};u(e).then((e=>{e.postMessage(r,t)})).catch((e=>{console.error("sendEvent() call failed",e)}))}async function h(e){const t="null"===e.origin?"*":e.origin,n=e.data;if(function(e){return m(e)&&"event"===e.type}(n))for(const i in l){if(!l.hasOwnProperty(i))continue;const r=l[i].event;if(r){r(e.source,t,n.event,n.data)}}else if(function(e){return m(e)&&"request"===e.type}(n)){const i=await u(e.source);let r;for(const e in l){if(!l.hasOwnProperty(e))continue;const o=l[e].request;if(o&&!r){const e=o(i,t,n.api,n.args);if(void 0!==e)try{r={scope:f,type:"response",id:n.id,api:n.api,result:await e}}catch(e){r={scope:f,type:"response",id:n.id,api:n.api,error:String(e)}}}}r||(r={scope:f,type:"response",id:n.id,api:n.api,error:"Not supported"}),i.postMessage(r,t)}else if(function(e){return m(e)&&"response"===e.type}(n)){const e=p[n.id];e&&e(n)}}function m(e){return!!e&&e.scope===f}function v(){return w++}const S=".connect_api_client_v1",M=".api_function_v1",T={},P=[];let E;const O=new Promise((e=>{E=()=>{E=()=>{},e()}}));let k;function C(e,t,n=1e4){async function o(e,t){const i=await y(e,t,S,[],0);if(i&&"object"==typeof i){return H(i,((i,r,o)=>{if(r===M){const r=o?o+"."+String(i):String(i);return(...i)=>y(e,t,r,i,n)}return r}))}throw new Error("Failed to connect")}function u(e){if(!e)return"*";try{return new URL(e).origin}catch(e){return"*"}}if(t&&(k=g({event:(e,n,i,r)=>t(i,r)})),e===window){if(0!==Object.keys(T).length)return Promise.resolve(T);if(a())return new Promise((async e=>{const t=await c();e(await o(t,"*"))}));if(s()){return o(d(),"*")}if(function(){const e=window;return e&&e.webkit&&e.webkit.messageHandlers&&e.webkit.messageHandlers.webwindowinterop}()){return o(i,"*")}if(function(){const e=window;return e&&e.hybridWebViewHost}()){return o(r,"*")}return Promise.resolve(T)}if((f=e)&&"function"==typeof f.postMessage)return o(e,"*");if((e=>e&&"object"==typeof e.contentWindow)(e)){const t=[];return t.push(new Promise(((t,n)=>{const i=async()=>{e.removeEventListener("load",i),e.contentWindow?t(await o(e.contentWindow,u(e.src))):n(new Error("Cannot access the target content window"))};e.addEventListener("load",i)}))),e.contentWindow&&t.push(o(e.contentWindow,u(e.src))),Promise.race(t)}return Promise.reject(new Error("Target must be a window or an iframe"));var f}function V(e){if("object"!=typeof e)throw new Error("Api must be an object");A(T,e),E()}const j=(e,t,n,i)=>{if(n.origin){let r;r=n.identifier&&i&&n.identifier===i?Object.assign(Object.assign({},t),{origin:{isSelf:!0}}):t,b(n.dispatcher,n.origin,e,r)}};function _(e,t){return"function"==typeof e&&"function"==typeof t&&e.name===t.name||("string"==typeof e&&"string"==typeof t||"number"==typeof e&&"number"==typeof t)}function A(e,t){for(const n in t){const i=t[n];if(i)if(n in e){const t=e[n];if("object"==typeof i&&"object"==typeof t)A(t,i);else{if(!_(i,t))throw new Error(`Cannot merge ${n} (${t} and ${i})`);e[n]=i}}else switch(typeof i){case"object":{const t={};A(t,i),e[n]=t;break}default:e[n]=i}}}function H(e,t,n){const i={};for(const r in e){const o=e[r];if((void 0!==n||"onConnect"!==r&&"onRequest"!==r)&&o)if("object"==typeof o){const e=n&&n+"."+String(r)||String(r);i[r]=H(o,t,e)}else i[r]=t(r,e[r],n)}return i}var L,D,I,W;g({request:(e,t,n,i)=>{if(n===S)return O.then((()=>{let n=P.find((t=>t.dispatcher===e));if(n)n.origin=t;else{if(!e)return;n={dispatcher:e,origin:t,identifier:o()},P.push(n)}var i;(i=T)&&"function"==typeof i.onConnect&&T.onConnect(n);return H(T,((e,t)=>"function"==typeof t?M:t))}));{const o=P.find((n=>n.dispatcher===e&&n.origin===t));if(o){if((r=T)&&"function"==typeof r.onRequest){const e=T.onRequest(o,n,i);if(void 0!==e)return e}const e=function(e,t){const n=t.split(".");let i=e;for(const e of n)i="object"==typeof i&&i&&e in i?i[e]:void 0;return i}(T,n);if("function"==typeof e){const t=e.apply(void 0,i);return void 0===t?Promise.resolve(t):t}return Promise.resolve(e)}return}var r}}),e.PropertyType=void 0,(L=e.PropertyType||(e.PropertyType={}))[L.LengthMeasure=0]="LengthMeasure",L[L.AreaMeasure=1]="AreaMeasure",L[L.VolumeMeasure=2]="VolumeMeasure",L[L.MassMeasure=3]="MassMeasure",L[L.AngleMeasure=4]="AngleMeasure",L[L.StringValue=5]="StringValue",L[L.IntValue=6]="IntValue",L[L.DoubleValue=7]="DoubleValue",L[L.DateTime=8]="DateTime",L[L.Logical=9]="Logical",L[L.Boolean=10]="Boolean",e.ViewEntityStates=void 0,(D=e.ViewEntityStates||(e.ViewEntityStates={}))[D.Selected=1]="Selected",D[D.Hidden=4]="Hidden",D[D.SelectedHidden=5]="SelectedHidden",D[D.Visible=6]="Visible",D[D.SelectedVisible=7]="SelectedVisible",D[D.Highlighted=8]="Highlighted",e.ExtensionType=void 0,(I=e.ExtensionType||(e.ExtensionType={})).Project="project",I.Viewer="3dviewer",e.TabPanelId=void 0,(W=e.TabPanelId||(e.TabPanelId={})).Models="models",W.Layers="layers",W.Attachments="attachments",W.ToDos="todos",W.Views="views",W.ClashSets="clashes",W.Organizer="organizer",W.DataTable="contentbrowser",W.Topics="topics",W.LiveCollaboration="livecollaboration",W.StatusSharing="statussharing",W.Connect2Fab="connect2fab",W.QrMarkers="qrmarkers",W.RealityCapture="realitycapture";var R,N,q;function x(e){return h(e)}e.CameraMode=void 0,(R=e.CameraMode||(e.CameraMode={})).LookAround="look_around",R.Pan="pan",R.Panorama="panorama",R.Rotate="rotate",R.Walk="walk",e.IdentifierType=void 0,(N=e.IdentifierType||(e.IdentifierType={}))[N.Guid=0]="Guid",N[N.String=1]="String",N[N.SpatialHash=2]="SpatialHash",N[N.DwgHandle=3]="DwgHandle",N[N.None=4]="None",e.SortDirection=void 0,(q=e.SortDirection||(e.SortDirection={}))[q.SORT_NONE=0]="SORT_NONE",q[q.SORT_UP=1]="SORT_UP",q[q.SORT_DOWN=-1]="SORT_DOWN",e.TOOLS=["reset","selection","areaSelection","measurement","pointMarkup","cloudMarkup","arrowMarkup","lineMarkup","textMarkup","freelineMarkup","clipPlane","verticalClipPlane","picking"],e.TOOL_SNAP_TYPES=["edge","point","surface"],e.connect=function(e,t,n){return window.removeEventListener("message",x),window.addEventListener("message",x),k&&k(),C(e,t,n)},e.dispatcherEventListener=x,e.expose=function(e){return V(e)},e.getConnectEmbedUrl=function(e="prod"){return`https://${{int:"web.int",qa:"web.qa",stage:"web.stage",prod:"web"}[e]}.connect.trimble.com?isEmbedded=true`},e.isApplicationEmbedded=function(){try{return window.self!==window.top||a()||s()}catch(e){return!0}},e.preregister=function(e){const t=P.find((t=>t.dispatcher===e.dispatcher));if(t)return t.identifier=e.identifier||t.identifier,t.origin=e.origin||t.origin,t;if(e.dispatcher){if(e.identifier){if(P.find((t=>t.identifier===e.identifier)))throw new Error(`[Workspace API] Client with identifier '${e.identifier}' already registered!`)}else e.identifier=o();return P.push(e),e}},e.removeClient=function(e){const t=P.findIndex((t=>t.dispatcher===e.dispatcher));-1!==t&&P.splice(t,1)},e.sendEvent=function(e,t,n,i){b(e,t,n,i)},e.sendEventToAllClients=function(e,t,n,i){if(n&&n.identifier){const r=P.find((e=>e.identifier===n.identifier));r&&j(e,t,r,i)}else for(const n of P)j(e,t,n,i)},Object.defineProperty(e,"__esModule",{value:!0})}));