bimplus-webclient 0.1.67 → 0.1.68
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.
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
applyTo: "src/**/*.js, doc_config.yml, documentation/**"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Generating API Documentation
|
|
6
|
+
|
|
7
|
+
This project uses the [`documentation`](https://github.com/documentationjs/documentation) npm package (JSDoc-based) to generate API docs from the JSDoc comments in `src/*.js`. Output is written to `./documentation`.
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
- Node dependencies installed (`npm install`) — `documentation` is a devDependency.
|
|
11
|
+
- Python 3 available on PATH (only required for the Confluence conversion step, which runs `documentation/convert_to_confluence_md.py`).
|
|
12
|
+
- All exported functions/classes in `src/*.js` should have valid JSDoc comments; `lint-doc` will fail the build on invalid JSDoc.
|
|
13
|
+
|
|
14
|
+
## Available Scripts
|
|
15
|
+
|
|
16
|
+
| Script | Purpose |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| `npm run lint-doc` | Runs `documentation lint ./src/*.js` to validate JSDoc comments before generating docs. |
|
|
19
|
+
| `npm run build-doc` | Lints, then builds **HTML** docs into `./documentation` using `doc_config.yml` (defines the table of contents). |
|
|
20
|
+
| `npm run build-docMd` | Lints, then builds a single **Markdown** file at `./documentation/Bimplus_WebClient_doc.md`. |
|
|
21
|
+
| `npm run build-docConf` | Runs `build-docMd`, then runs `documentation/convert_to_confluence_md.py` to produce `Bimplus_WebClient_doc_confluence.md`, a Confluence-friendly variant with fixed anchor links and an injected version header. |
|
|
22
|
+
| `npm run build-docAll` | Runs `build-doc`, `build-docConf`, `build-docMd`, `build-doc` in sequence — regenerates HTML, Markdown, and Confluence docs together. |
|
|
23
|
+
|
|
24
|
+
## Typical Workflow
|
|
25
|
+
|
|
26
|
+
1. Add/update JSDoc comments on any public API in `src/*.js` (classes, methods, params, returns, examples).
|
|
27
|
+
2. Run `npm run lint-doc` and fix any reported JSDoc issues.
|
|
28
|
+
3. Run `npm run build-docAll` to regenerate all doc formats at once (recommended before a release/publish).
|
|
29
|
+
- Or run an individual script (`build-doc`, `build-docMd`, `build-docConf`) if you only need one output format.
|
|
30
|
+
4. Review generated output:
|
|
31
|
+
- `./documentation/index.html` (and per-file `.html` pages) for the HTML site.
|
|
32
|
+
- `./documentation/Bimplus_WebClient_doc.md` for the raw Markdown API doc.
|
|
33
|
+
- `./documentation/Bimplus_WebClient_doc_confluence.md` for the Confluence-paste-ready version.
|
|
34
|
+
5. Commit the regenerated files under `./documentation` along with your source changes.
|
|
35
|
+
|
|
36
|
+
## Notes on `doc_config.yml`
|
|
37
|
+
- Controls the HTML build's table of contents (`toc:` entries map to sections/pages).
|
|
38
|
+
- Add a new `toc` entry here when introducing a new top-level `src/*.js` module you want listed separately in the HTML docs.
|
|
39
|
+
|
|
40
|
+
## Notes on the Confluence conversion (`convert_to_confluence_md.py`)
|
|
41
|
+
- Reads `./Bimplus_WebClient_doc.md` (must be generated first via `build-docMd`) and writes `./Bimplus_WebClient_doc_confluence.md`.
|
|
42
|
+
- Rewrites Markdown anchor links (`[name](#name)`) to Confluence's anchor format (prefixed with `WebClientApidescription-`) since Confluence generates anchors differently than GitHub-flavored Markdown.
|
|
43
|
+
- Reads the version from `../package.json` and injects a `#Bimplus WebClient version : x.y.z` heading.
|
|
44
|
+
- Must be run from inside the `./documentation` directory (the `build-docConf` script already `cd`s there).
|
|
45
|
+
|
|
46
|
+
## Troubleshooting
|
|
47
|
+
- **`lint-doc` fails**: fix the JSDoc syntax/tag errors it reports; the `build-*` scripts depend on it succeeding first.
|
|
48
|
+
- **Confluence conversion fails with "file not found"**: run `npm run build-docMd` first, or use `npm run build-docConf` which does it automatically.
|
|
49
|
+
- **Python not found**: only `build-docConf`/`build-docAll` need Python; ensure `python` resolves on PATH (or update the script invocation to `python3` if needed on your OS).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.add=t():e.add=t()}(self,(()=>(()=>{"use strict";const e={d:(t,s)=>{if(Array.isArray(s))for(var i=0;i<s.length;){var n=s[i++],l=s[i++];e.o(t,n)?0===l&&i++:0===l?Object.defineProperty(t,n,{enumerable:!0,value:s[i++]}):Object.defineProperty(t,n,{enumerable:!0,get:l})}else for(var n in s)e.o(s,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:s[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}};let t={};e.r(t),e.d(t,{BimExplorer:()=>d,BimFilesIFCSelect:()=>_,BimFilesIsoSelect:()=>m,BimFilesOverlaySelect:()=>u,BimFilesSelect:()=>h,BimModelsIsoSelect:()=>S,BimModelsSelect:()=>g,BimObjectProperties:()=>c,BimPortal:()=>l,BimTaskList:()=>a,BimTaskProperties:()=>o,ExportManager:()=>r,ExternalClient:()=>s,ModelViewer:()=>M,getUrlParameter:()=>p});class s{constructor(e){this._messageHandlers={},this._errorHandler=null,this._clientName=e}initialize(){let e=this;console.log("ExternalClient initialized"),window.addEventListener("message",(function(t){let s=t.data;if(""===s)e.errorReceived({error:"External client got an empty message !"});else{let t;try{t=JSON.parse(s)}catch(t){return void e.errorReceived({error:"External client got an invalid message json payload !"})}e.messageReceived(t)}}))}addMessageHandler(e,t){this._messageHandlers[e]=t}removeMessageHandler(e){delete this._messageHandlers[e]}messageReceived(e){let t=this._messageHandlers[e.message];t&&t(e.data)}addErrorHandler(e){this._errorHandler=e}removeErrorHandler(){this._errorHandler=null}errorReceived(e){let t=this._errorHandler;t&&t(e)}sendMessage(e,t,s){let i=document.getElementById(e);return!!i?.contentWindow&&(i.contentWindow.postMessage(JSON.stringify({messageType:"bimplusMessageIn",message:t,data:s}),"*"),!0)}getClientName(){return this._clientName}}class i{static embedded="?embedded=1";static url=function(e,t){let s;return"string"==typeof t?.baseUrl?(s=t.baseUrl,s.endsWith("/")||(s+="/")):(s="https://portal",e&&("dev"===e?s+="-dev":"stage"===e?s+="-stage":"fea"===e&&(s+="-fea")),s+=".bimplus.net/"),s};static token=function(e){return"&token="+e};static client=function(e){return e?"&external_client=PostMessage:"+e.getClientName():""};static source=function(e){return e&&"string"==typeof e?"&source="+e:""};static teamId=function(e){return e?"&team_id="+e:""};static projectId=function(e){return e?"&project_id="+e:""};static addParameter=function(e,t,s){return t&&s?e?e+`&${t}=${s}`:`?${t}=${s}`:e};static addParameters=function(e,t){let s=e;for(const e in t)s=i.addParameter(s,e,t[e]);return s}}class n{constructor(e,t,s,i,n){this._client=t,this._domId=e,this._env=s,this._token=i,this._options=n}sendMessage(e,t){if(!this._client){const e="Error for SendMessage. Client not defined.";throw console.error(e),ReferenceError(e)}this._client.sendMessage(this._domId,e,t)}getDOMElementId(){return this._domId}initMessageHandlers(){}loadIFrame(e){let t=document.getElementById(this._domId);if(!t){const e="DOM element not found: "+this._domId;throw console.error(e),ReferenceError(e)}t.src=e}loadIFrameShadowRoot(e,t){let s=e.getElementById(this._domId);if(!s){const e="DOM element not found: "+this._domId;throw console.error(e),ReferenceError(e)}s.src=t}}class l extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onTeamChanged=null,this.onProjectSelected=null,this.onAttachmentSelected=null,this.onAttachmentSelectedDetails=null}getUrl(){return i.url(this._env,this._options)+i.embedded+i.token(this._token)+i.client(this._client)}load(){let e=this.getUrl();this.loadIFrame(e),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("TeamChanged",(e=>{this.onTeamChanged&&this.onTeamChanged(e.id)})),this._client.addMessageHandler("ProjectSelected",(e=>{this.onProjectSelected&&this.onProjectSelected(e.id)})),this._client.addMessageHandler("AttachmentSelected",(e=>{this.onAttachmentSelected&&this.onAttachmentSelected(e?.id?e.id:e)})),this._client.addMessageHandler("AttachmentSelectedDetails",(e=>{this.onAttachmentSelectedDetails&&this.onAttachmentSelectedDetails(e?.id?e.id:e)}))}}class d extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onObjectSelected=null,this.onObjectsSelected=null,this.onIssueSelected=null,this.onPinSelected=null,this.onCheckAlive=null,this.onDataLoaded=null,this.onClickedHyperlink=null}getUrl(e,t){return(this._env&&"localhost"===this._env?"http://127.0.0.1:4200/":i.url(this._env,this._options))+"#/viewer"+i.embedded+i.token(this._token)+i.client(this._client)+"&project_id="+t+"&team_id="+e}load(e,t){let s=this.getUrl(e,t);this.loadIFrame(s),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("PinSelected",(e=>{this.onPinSelected&&this.onPinSelected(e.id)})),this._client.addMessageHandler("ObjectSelected",(e=>{this.onObjectSelected&&this.onObjectSelected(e.Id,e.multiSelect,e.selected)})),this._client.addMessageHandler("ObjectsSelected",(e=>{this.onObjectsSelected&&this.onObjectsSelected(e.ids,e.multiSelect,e.selected)})),this._client.addMessageHandler("IssueSelected",(e=>{this.onIssueSelected&&this.onIssueSelected(e.id)})),this._client.addMessageHandler("CheckAlive",(e=>{this.onCheckAlive&&this.onCheckAlive(e.client)})),this._client.addMessageHandler("DataLoaded",(()=>{this.onDataLoaded&&this.onDataLoaded()})),this._client.addMessageHandler("ClickedHyperlink",(e=>{this.onClickedHyperlink&&this.onClickedHyperlink(e.url)}))}resetView(){this.sendMessage("ResetView")}centerObject(e,t){this.sendMessage("CenterObject",{id:e,flyTo:t})}selectPin(e){this.sendMessage("PinSelected",{id:e})}selectObjects(e,t,s,i){this.sendMessage("ObjectsSelected",{ids:e,multiSelect:t,isolate:s,blockProperties:i})}isolateObjects(e){this.sendMessage("ObjectsIsolated",{ids:e})}checkAlive(){this.sendMessage("CheckAlive",{})}selectStructure(e,t,s,i,n,l){this.sendMessage("StructureSelected",{id:e,visibleNodes:t,showAll:s,expandAll:i,hideUnreferencedTopology:n,isolate:l})}selectIssue(e){this.sendMessage("IssueSelected",{id:e})}colorizeObjects(e,t){this.sendMessage("ColorizeObjects",{ids:e,color:t})}}class a extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onObjectSelected=null,this.onObjectsSelected=null,this.onIssueSelected=null,this.onCheckAlive=null,this.onDataLoaded=null}getUrl(e,t,s){return i.url(this._env,this._options)+"viewer/"+i.embedded+"&destination=EMBEDDED_ISSUE_LIST"+i.source(s)+i.token(this._token)+i.client(this._client)+"/#/embeddedissuelist?project_id="+t+"&team_id="+e}load(e,t,s){const i=this.getUrl(e,t,s);this.loadIFrame(i),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("ObjectSelected",(e=>{this.onObjectSelected&&this.onObjectSelected(e.Id,e.multiSelect,e.selected)})),this._client.addMessageHandler("ObjectsSelected",(e=>{this.onObjectsSelected&&this.onObjectsSelected(e.ids,e.multiSelect,e.selected)})),this._client.addMessageHandler("IssueSelected",(e=>{this.onIssueSelected&&this.onIssueSelected(e.id)})),this._client.addMessageHandler("CheckAlive",(e=>{this.onCheckAlive&&this.onCheckAlive(e.client)})),this._client.addMessageHandler("DataLoaded",(()=>{this.onDataLoaded&&this.onDataLoaded()}))}selectObjects(e,t,s,i){this.sendMessage("ObjectsSelected",{ids:e,multiSelect:t,isolate:s,blockProperties:i})}checkAlive(){this.sendMessage("CheckAlive",{})}selectIssue(e){this.sendMessage("IssueSelected",{id:e})}}class o extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onObjectSelected=null,this.onObjectsSelected=null,this.onIssueSelected=null,this.onPinSelected=null,this.onCheckAlive=null,this.onDataLoaded=null,this.onClickedHyperlink=null}getUrl(e,t,s,n){return i.url(this._env,this._options)+"viewer/"+i.embedded+"&destination=EMBEDDED_ISSUE"+i.source(n)+i.token(this._token)+i.client(this._client)+"/#/embeddedissue?project_id="+t+"&issue_id="+s+"&team_id="+e}load(e,t,s,i){const n=this.getUrl(e,t,s,i);this.loadIFrame(n),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("PinSelected",(e=>{this.onPinSelected&&this.onPinSelected(e.id)})),this._client.addMessageHandler("ObjectSelected",(e=>{this.onObjectSelected&&this.onObjectSelected(e.Id,e.multiSelect,e.selected)})),this._client.addMessageHandler("ObjectsSelected",(e=>{this.onObjectsSelected&&this.onObjectsSelected(e.ids,e.multiSelect,e.selected)})),this._client.addMessageHandler("IssueSelected",(e=>{this.onIssueSelected&&this.onIssueSelected(e.id)})),this._client.addMessageHandler("CheckAlive",(e=>{this.onCheckAlive&&this.onCheckAlive(e.client)})),this._client.addMessageHandler("DataLoaded",(()=>{this.onDataLoaded&&this.onDataLoaded()})),this._client.addMessageHandler("ClickedHyperlink",(e=>{this.onClickedHyperlink&&this.onClickedHyperlink(e.url)}))}selectPin(e){this.sendMessage("PinSelected",{id:e})}selectObjects(e,t,s,i){this.sendMessage("ObjectsSelected",{ids:e,multiSelect:t,isolate:s,blockProperties:i})}checkAlive(){this.sendMessage("CheckAlive",{})}selectIssue(e){this.sendMessage("IssueSelected",{id:e})}}class c extends n{constructor(e,t,s,i,n){super(e,s,i,t,n)}getUrl=function(e,t,s){let n=i.url(this._env,this._options);return n+="viewer/#/objproperties"+i.embedded+i.token(this._token)+i.client(this._client)+"&project_id="+t+"&team_id="+e+"&object_id="+s,n};load(e,t,s){const i=this.getUrl(e,t,s);this.loadIFrame(i),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers()}}class r extends d{constructor(e,t,s,i,n){super(e,t,s,i,n),this.onExportStarted=null}getUrl(e,t){let s=this._env&&"localhost"===this._env?"http://127.0.0.1:4200/":i.url(this._env,this._options)+"export-manager/";return s+="#/viewer"+i.embedded+i.token(this._token)+i.client(this._client)+"&project_id="+t+"&team_id="+e,s}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("ExportStarted",(e=>{this.onExportStarted&&this.onExportStarted(e.id)}))}}class h extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onAttachmentSelected=null,this.onAttachmentSelectedDetails=null}getUrl(e,t){let s=i.url(this._env,this._options);return s+=i.embedded+i.token(this._token)+i.client(this._client)+"/#/project/"+e+"/"+t+"/files/select",s}load(e,t){const s=this.getUrl(e,t);this.loadIFrame(s),this.initMessageHandlers()}loadShadowRoot(e,t,s){const i=this.getUrl(t,s);this.loadIFrameShadowRoot(e,i),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("AttachmentSelected",(e=>{this.onAttachmentSelected&&this.onAttachmentSelected(e?.id?e.id:e)})),this._client.addMessageHandler("AttachmentSelectedDetails",(e=>{this.onAttachmentSelectedDetails&&this.onAttachmentSelectedDetails(e?.id?e.id:e)}))}}class u extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onAttachmentSelected=null,this.onAttachmentSelectedDetails=null}getUrl(e,t){let s=i.url(this._env,this._options);return s+=i.embedded+i.token(this._token)+i.client(this._client)+"/#/project/"+e+"/"+t+"/files/overlayselect",s}load(e,t){const s=this.getUrl(e,t);this.loadIFrame(s),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("AttachmentSelected",(e=>{this.onAttachmentSelected&&this.onAttachmentSelected(e?.id?e.id:e)})),this._client.addMessageHandler("AttachmentSelectedDetails",(e=>{this.onAttachmentSelectedDetails&&this.onAttachmentSelectedDetails(e?.id?e.id:e)}))}}class g extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onModelSelected=null,this.onModelSelectedDetails=null}getUrl(e,t){let s=i.url(this._env,this._options);return s+=i.embedded+i.token(this._token)+i.client(this._client)+"/#/project/"+e+"/"+t+"/models/select",s}load(e,t){const s=this.getUrl(e,t);this.loadIFrame(s),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("ModelSelected",(e=>{this.onModelSelected&&this.onModelSelected(e?.id?e.id:e)})),this._client.addMessageHandler("ModelSelectedDetails",(e=>{this.onModelSelectedDetails&&this.onModelSelectedDetails(e?.id?e.id:e)}))}}class m extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onAttachmentSelected=null,this.onAttachmentSelectedDetails=null}getUrl(e,t,s){let n=s||i.url(this._env,this._options);return n+=i.embedded+i.token(this._token)+i.client(this._client)+"/#/project/"+e+"/"+t+"/files/isoselect",n}load(e,t,s){const i=this.getUrl(e,t,s);this.loadIFrame(i),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("AttachmentSelected",(e=>{this.onAttachmentSelected&&this.onAttachmentSelected(e?.id?e.id:e)})),this._client.addMessageHandler("AttachmentSelectedDetails",(e=>{this.onAttachmentSelectedDetails&&this.onAttachmentSelectedDetails(e?.id?e.id:e)}))}}class S extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onModelSelected=null,this.onModelSelectedDetails=null}getUrl(e,t,s){let n=s||i.url(this._env,this._options);return n+=i.embedded+i.token(this._token)+i.client(this._client)+"/#/project/"+e+"/"+t+"/models/isoselect",n}load(e,t,s){const i=this.getUrl(e,t,s);this.loadIFrame(i),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("ModelSelected",(e=>{this.onModelSelected&&this.onModelSelected(e?.id?e.id:e)})),this._client.addMessageHandler("ModelSelectedDetails",(e=>{this.onModelSelectedDetails&&this.onModelSelectedDetails(e?.id?e.id:e)}))}}class _ extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onAttachmentSelected=null,this.onAttachmentSelectedDetails=null}getUrl(e,t){let s=i.url(this._env,this._options);return s+=i.embedded+i.token(this._token)+i.client(this._client)+"/#/project/"+e+"/"+t+"/files/ifcselect",s}load(e,t){const s=this.getUrl(e,t);this.loadIFrame(s),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("AttachmentSelected",(e=>{this.onAttachmentSelected&&this.onAttachmentSelected(e?.id?e.id:e)})),this._client.addMessageHandler("AttachmentSelectedDetails",(e=>{this.onAttachmentSelectedDetails&&this.onAttachmentSelectedDetails(e?.id?e.id:e)}))}}class M{constructor(e,t){this.viewerUri=e&&"dev"!==e&&"stage"!==e&&"prod"!==e&&"fea"!==e?e:i.url(e,t)+"/viewer/#/modelviewer"}openFileUriWindow(e,t,s,n,l){let d="";d=i.addParameters(d,{fileUri:encodeURIComponent(e),team_id:s,project_id:n}),l&&(d=i.addParameters(d,{fileExt:encodeURIComponent(l)}));const a=this.viewerUri+d;return window.open(a,t)}openBufferDataWindow(e,t,s,n){let l="";l=i.addParameters(l,{awaitDataMessage:"true",team_id:s,project_id:n});const d=this.viewerUri+l,a=window.open(d,t);if(!a)return void alert("Could not open preview window. Please enable popups in your browser to use this feature");const o=function(t){"WatingForData"===t.data&&a&&window&&(a.postMessage(e,"*",[e]),window.removeEventListener("message",o))};return window.addEventListener("message",o,!1),a}}const p=function(e){let t,s,i=decodeURIComponent(window.location.search.substring(1)).split("&");for(s=0;s<i.length;s++)if(t=i[s].split("="),t[0]===e)return void 0===t[1]||t[1]};return t})()));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.add=t():e.add=t()}(self,()=>(()=>{"use strict";const e={d:(t,s)=>{for(var i in s)e.o(s,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:s[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}};let t={};e.r(t),e.d(t,{BimExplorer:()=>d,BimFilesIFCSelect:()=>_,BimFilesIsoSelect:()=>m,BimFilesOverlaySelect:()=>u,BimFilesSelect:()=>h,BimModelsIsoSelect:()=>S,BimModelsSelect:()=>g,BimObjectProperties:()=>c,BimPortal:()=>l,BimTaskList:()=>a,BimTaskProperties:()=>o,ExportManager:()=>r,ExternalClient:()=>s,ModelViewer:()=>M,getUrlParameter:()=>p});class s{constructor(e){this._messageHandlers={},this._errorHandler=null,this._clientName=e}initialize(){let e=this;console.log("ExternalClient initialized"),window.addEventListener("message",function(t){let s=t.data;if(""===s)e.errorReceived({error:"External client got an empty message !"});else{let t;try{t=JSON.parse(s)}catch(t){return void e.errorReceived({error:"External client got an invalid message json payload !"})}e.messageReceived(t)}})}addMessageHandler(e,t){this._messageHandlers[e]=t}removeMessageHandler(e){delete this._messageHandlers[e]}messageReceived(e){let t=this._messageHandlers[e.message];t&&t(e.data)}addErrorHandler(e){this._errorHandler=e}removeErrorHandler(){this._errorHandler=null}errorReceived(e){let t=this._errorHandler;t&&t(e)}sendMessage(e,t,s){let i=document.getElementById(e);return!!i?.contentWindow&&(i.contentWindow.postMessage(JSON.stringify({messageType:"bimplusMessageIn",message:t,data:s}),"*"),!0)}getClientName(){return this._clientName}}class i{static embedded="?embedded=1";static url=function(e,t){let s;return"string"==typeof t?.baseUrl?(s=t.baseUrl,s.endsWith("/")||(s+="/")):(s="https://portal",e&&("dev"===e?s+="-dev":"stage"===e?s+="-stage":"fea"===e&&(s+="-fea")),s+=".bimplus.net/"),s};static token=function(e){return"&token="+e};static client=function(e){return e?"&external_client=PostMessage:"+e.getClientName():""};static source=function(e){return e&&"string"==typeof e?"&source="+e:""};static teamId=function(e){return e?"&team_id="+e:""};static projectId=function(e){return e?"&project_id="+e:""};static addParameter=function(e,t,s){return t&&s?e?e+`&${t}=${s}`:`?${t}=${s}`:e};static addParameters=function(e,t){let s=e;for(const e in t)s=i.addParameter(s,e,t[e]);return s}}class n{constructor(e,t,s,i,n){this._client=t,this._domId=e,this._env=s,this._token=i,this._options=n}sendMessage(e,t){if(!this._client){const e="Error for SendMessage. Client not defined.";throw console.error(e),ReferenceError(e)}this._client.sendMessage(this._domId,e,t)}getDOMElementId(){return this._domId}initMessageHandlers(){}loadIFrame(e){let t=document.getElementById(this._domId);if(!t){const e="DOM element not found: "+this._domId;throw console.error(e),ReferenceError(e)}t.src=e}loadIFrameShadowRoot(e,t){let s=e.getElementById(this._domId);if(!s){const e="DOM element not found: "+this._domId;throw console.error(e),ReferenceError(e)}s.src=t}}class l extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onTeamChanged=null,this.onProjectSelected=null,this.onAttachmentSelected=null,this.onAttachmentSelectedDetails=null}getUrl(){return i.url(this._env,this._options)+i.embedded+i.token(this._token)+i.client(this._client)}load(){let e=this.getUrl();this.loadIFrame(e),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("TeamChanged",e=>{this.onTeamChanged&&this.onTeamChanged(e.id)}),this._client.addMessageHandler("ProjectSelected",e=>{this.onProjectSelected&&this.onProjectSelected(e.id)}),this._client.addMessageHandler("AttachmentSelected",e=>{this.onAttachmentSelected&&this.onAttachmentSelected(e?.id?e.id:e)}),this._client.addMessageHandler("AttachmentSelectedDetails",e=>{this.onAttachmentSelectedDetails&&this.onAttachmentSelectedDetails(e?.id?e.id:e)})}}class d extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onObjectSelected=null,this.onObjectsSelected=null,this.onIssueSelected=null,this.onPinSelected=null,this.onCheckAlive=null,this.onDataLoaded=null,this.onClickedHyperlink=null}getUrl(e,t){return(this._env&&"localhost"===this._env?"http://127.0.0.1:4200/":i.url(this._env,this._options))+"#/viewer"+i.embedded+i.token(this._token)+i.client(this._client)+"&project_id="+t+"&team_id="+e}load(e,t){let s=this.getUrl(e,t);this.loadIFrame(s),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("PinSelected",e=>{this.onPinSelected&&this.onPinSelected(e.id)}),this._client.addMessageHandler("ObjectSelected",e=>{this.onObjectSelected&&this.onObjectSelected(e.Id,e.multiSelect,e.selected)}),this._client.addMessageHandler("ObjectsSelected",e=>{this.onObjectsSelected&&this.onObjectsSelected(e.ids,e.multiSelect,e.selected)}),this._client.addMessageHandler("IssueSelected",e=>{this.onIssueSelected&&this.onIssueSelected(e.id)}),this._client.addMessageHandler("CheckAlive",e=>{this.onCheckAlive&&this.onCheckAlive(e.client)}),this._client.addMessageHandler("DataLoaded",()=>{this.onDataLoaded&&this.onDataLoaded()}),this._client.addMessageHandler("ClickedHyperlink",e=>{this.onClickedHyperlink&&this.onClickedHyperlink(e.url)})}resetView(){this.sendMessage("ResetView")}centerObject(e,t){this.sendMessage("CenterObject",{id:e,flyTo:t})}selectPin(e){this.sendMessage("PinSelected",{id:e})}selectObjects(e,t,s,i){this.sendMessage("ObjectsSelected",{ids:e,multiSelect:t,isolate:s,blockProperties:i})}isolateObjects(e){this.sendMessage("ObjectsIsolated",{ids:e})}checkAlive(){this.sendMessage("CheckAlive",{})}selectStructure(e,t,s,i,n,l){this.sendMessage("StructureSelected",{id:e,visibleNodes:t,showAll:s,expandAll:i,hideUnreferencedTopology:n,isolate:l})}selectIssue(e){this.sendMessage("IssueSelected",{id:e})}colorizeObjects(e,t){this.sendMessage("ColorizeObjects",{ids:e,color:t})}}class a extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onObjectSelected=null,this.onObjectsSelected=null,this.onIssueSelected=null,this.onCheckAlive=null,this.onDataLoaded=null}getUrl(e,t,s){return i.url(this._env,this._options)+"viewer/"+i.embedded+"&destination=EMBEDDED_ISSUE_LIST"+i.source(s)+i.token(this._token)+i.client(this._client)+"/#/embeddedissuelist?project_id="+t+"&team_id="+e}load(e,t,s){const i=this.getUrl(e,t,s);this.loadIFrame(i),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("ObjectSelected",e=>{this.onObjectSelected&&this.onObjectSelected(e.Id,e.multiSelect,e.selected)}),this._client.addMessageHandler("ObjectsSelected",e=>{this.onObjectsSelected&&this.onObjectsSelected(e.ids,e.multiSelect,e.selected)}),this._client.addMessageHandler("IssueSelected",e=>{this.onIssueSelected&&this.onIssueSelected(e.id)}),this._client.addMessageHandler("CheckAlive",e=>{this.onCheckAlive&&this.onCheckAlive(e.client)}),this._client.addMessageHandler("DataLoaded",()=>{this.onDataLoaded&&this.onDataLoaded()})}selectObjects(e,t,s,i){this.sendMessage("ObjectsSelected",{ids:e,multiSelect:t,isolate:s,blockProperties:i})}checkAlive(){this.sendMessage("CheckAlive",{})}selectIssue(e){this.sendMessage("IssueSelected",{id:e})}}class o extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onObjectSelected=null,this.onObjectsSelected=null,this.onIssueSelected=null,this.onPinSelected=null,this.onCheckAlive=null,this.onDataLoaded=null,this.onClickedHyperlink=null}getUrl(e,t,s,n){return i.url(this._env,this._options)+"viewer/"+i.embedded+"&destination=EMBEDDED_ISSUE"+i.source(n)+i.token(this._token)+i.client(this._client)+"/#/embeddedissue?project_id="+t+"&issue_id="+s+"&team_id="+e}load(e,t,s,i){const n=this.getUrl(e,t,s,i);this.loadIFrame(n),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("PinSelected",e=>{this.onPinSelected&&this.onPinSelected(e.id)}),this._client.addMessageHandler("ObjectSelected",e=>{this.onObjectSelected&&this.onObjectSelected(e.Id,e.multiSelect,e.selected)}),this._client.addMessageHandler("ObjectsSelected",e=>{this.onObjectsSelected&&this.onObjectsSelected(e.ids,e.multiSelect,e.selected)}),this._client.addMessageHandler("IssueSelected",e=>{this.onIssueSelected&&this.onIssueSelected(e.id)}),this._client.addMessageHandler("CheckAlive",e=>{this.onCheckAlive&&this.onCheckAlive(e.client)}),this._client.addMessageHandler("DataLoaded",()=>{this.onDataLoaded&&this.onDataLoaded()}),this._client.addMessageHandler("ClickedHyperlink",e=>{this.onClickedHyperlink&&this.onClickedHyperlink(e.url)})}selectPin(e){this.sendMessage("PinSelected",{id:e})}selectObjects(e,t,s,i){this.sendMessage("ObjectsSelected",{ids:e,multiSelect:t,isolate:s,blockProperties:i})}checkAlive(){this.sendMessage("CheckAlive",{})}selectIssue(e){this.sendMessage("IssueSelected",{id:e})}}class c extends n{constructor(e,t,s,i,n){super(e,s,i,t,n)}getUrl=function(e,t,s){let n=i.url(this._env,this._options);return n+="viewer/#/objproperties"+i.embedded+i.token(this._token)+i.client(this._client)+"&project_id="+t+"&team_id="+e+"&object_id="+s,n};load(e,t,s){const i=this.getUrl(e,t,s);this.loadIFrame(i),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers()}}class r extends d{constructor(e,t,s,i,n){super(e,t,s,i,n),this.onExportStarted=null}getUrl(e,t){let s=this._env&&"localhost"===this._env?"http://127.0.0.1:4200/":i.url(this._env,this._options)+"export-manager/";return s+="#/viewer"+i.embedded+i.token(this._token)+i.client(this._client)+"&project_id="+t+"&team_id="+e,s}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("ExportStarted",e=>{this.onExportStarted&&this.onExportStarted(e.id)})}}class h extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onAttachmentSelected=null,this.onAttachmentSelectedDetails=null}getUrl(e,t){let s=i.url(this._env,this._options);return s+=i.embedded+i.token(this._token)+i.client(this._client)+"/#/project/"+e+"/"+t+"/files/select",s}load(e,t){const s=this.getUrl(e,t);this.loadIFrame(s),this.initMessageHandlers()}loadShadowRoot(e,t,s){const i=this.getUrl(t,s);this.loadIFrameShadowRoot(e,i),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("AttachmentSelected",e=>{this.onAttachmentSelected&&this.onAttachmentSelected(e?.id?e.id:e)}),this._client.addMessageHandler("AttachmentSelectedDetails",e=>{this.onAttachmentSelectedDetails&&this.onAttachmentSelectedDetails(e?.id?e.id:e)})}}class u extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onAttachmentSelected=null,this.onAttachmentSelectedDetails=null}getUrl(e,t){let s=i.url(this._env,this._options);return s+=i.embedded+i.token(this._token)+i.client(this._client)+"/#/project/"+e+"/"+t+"/files/overlayselect",s}load(e,t){const s=this.getUrl(e,t);this.loadIFrame(s),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("AttachmentSelected",e=>{this.onAttachmentSelected&&this.onAttachmentSelected(e?.id?e.id:e)}),this._client.addMessageHandler("AttachmentSelectedDetails",e=>{this.onAttachmentSelectedDetails&&this.onAttachmentSelectedDetails(e?.id?e.id:e)})}}class g extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onModelSelected=null,this.onModelSelectedDetails=null}getUrl(e,t){let s=i.url(this._env,this._options);return s+=i.embedded+i.token(this._token)+i.client(this._client)+"/#/project/"+e+"/"+t+"/models/select",s}load(e,t){const s=this.getUrl(e,t);this.loadIFrame(s),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("ModelSelected",e=>{this.onModelSelected&&this.onModelSelected(e?.id?e.id:e)}),this._client.addMessageHandler("ModelSelectedDetails",e=>{this.onModelSelectedDetails&&this.onModelSelectedDetails(e?.id?e.id:e)})}}class m extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onAttachmentSelected=null,this.onAttachmentSelectedDetails=null}getUrl(e,t,s){let n=s||i.url(this._env,this._options);return n+=i.embedded+i.token(this._token)+i.client(this._client)+"/#/project/"+e+"/"+t+"/files/isoselect",n}load(e,t,s){const i=this.getUrl(e,t,s);this.loadIFrame(i),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("AttachmentSelected",e=>{this.onAttachmentSelected&&this.onAttachmentSelected(e?.id?e.id:e)}),this._client.addMessageHandler("AttachmentSelectedDetails",e=>{this.onAttachmentSelectedDetails&&this.onAttachmentSelectedDetails(e?.id?e.id:e)})}}class S extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onModelSelected=null,this.onModelSelectedDetails=null}getUrl(e,t,s){let n=s||i.url(this._env,this._options);return n+=i.embedded+i.token(this._token)+i.client(this._client)+"/#/project/"+e+"/"+t+"/models/isoselect",n}load(e,t,s){const i=this.getUrl(e,t,s);this.loadIFrame(i),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("ModelSelected",e=>{this.onModelSelected&&this.onModelSelected(e?.id?e.id:e)}),this._client.addMessageHandler("ModelSelectedDetails",e=>{this.onModelSelectedDetails&&this.onModelSelectedDetails(e?.id?e.id:e)})}}class _ extends n{constructor(e,t,s,i,n){super(e,s,i,t,n),this.onAttachmentSelected=null,this.onAttachmentSelectedDetails=null}getUrl(e,t){let s=i.url(this._env,this._options);return s+=i.embedded+i.token(this._token)+i.client(this._client)+"/#/project/"+e+"/"+t+"/files/ifcselect",s}load(e,t){const s=this.getUrl(e,t);this.loadIFrame(s),this.initMessageHandlers()}initMessageHandlers(){super.initMessageHandlers(),this._client.addMessageHandler("AttachmentSelected",e=>{this.onAttachmentSelected&&this.onAttachmentSelected(e?.id?e.id:e)}),this._client.addMessageHandler("AttachmentSelectedDetails",e=>{this.onAttachmentSelectedDetails&&this.onAttachmentSelectedDetails(e?.id?e.id:e)})}}class M{constructor(e,t){this.viewerUri=e&&"dev"!==e&&"stage"!==e&&"prod"!==e&&"fea"!==e?e:i.url(e,t)+"/viewer/#/modelviewer"}openFileUriWindow(e,t,s,n,l){let d="";d=i.addParameters(d,{fileUri:encodeURIComponent(e),team_id:s,project_id:n}),l&&(d=i.addParameters(d,{fileExt:encodeURIComponent(l)}));const a=this.viewerUri+d;return window.open(a,t)}openBufferDataWindow(e,t,s,n){let l="";l=i.addParameters(l,{awaitDataMessage:"true",team_id:s,project_id:n});const d=this.viewerUri+l,a=window.open(d,t);if(!a)return void alert("Could not open preview window. Please enable popups in your browser to use this feature");const o=function(t){"WatingForData"===t.data&&a&&window&&(a.postMessage(e,"*",[e]),window.removeEventListener("message",o))};return window.addEventListener("message",o,!1),a}}const p=function(e){let t,s,i=decodeURIComponent(window.location.search.substring(1)).split("&");for(s=0;s<i.length;s++)if(t=i[s].split("="),t[0]===e)return void 0===t[1]||t[1]};return t})());
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bimplus-webclient",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.68",
|
|
4
4
|
"description": "bim+ web client",
|
|
5
5
|
"types": "types/bimplus-webclient.d.ts",
|
|
6
6
|
"keywords": [
|
|
@@ -37,15 +37,15 @@
|
|
|
37
37
|
"test-watch": "npm run test -- --browsers=ChromeExt --single-run=false --auto-watch"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@babel/core": "^8.0.
|
|
41
|
-
"@babel/preset-env": "^8.0.
|
|
40
|
+
"@babel/core": "^8.0.6",
|
|
41
|
+
"@babel/preset-env": "^8.0.6",
|
|
42
42
|
"@eslint/js": "^10.0.1",
|
|
43
43
|
"babel-loader": "^10.1.1",
|
|
44
44
|
"clean-webpack-plugin": "^4.0.0",
|
|
45
45
|
"coverage-istanbul-loader": "^3.0.5",
|
|
46
46
|
"documentation": "^14.0.3",
|
|
47
|
-
"eslint": "^10.
|
|
48
|
-
"globals": "17.
|
|
47
|
+
"eslint": "^10.11.0",
|
|
48
|
+
"globals": "17.12.0",
|
|
49
49
|
"karma": "^6.4.4",
|
|
50
50
|
"karma-chrome-launcher": "^3.2.0",
|
|
51
51
|
"karma-coverage-istanbul-reporter": "^3.0.2",
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
"karma-webpack": "5.0.1",
|
|
55
55
|
"qunit": "^2.26.0",
|
|
56
56
|
"terser-webpack-plugin": "^5.6.1",
|
|
57
|
-
"webpack": "^5.
|
|
58
|
-
"webpack-cli": "^7.2.
|
|
57
|
+
"webpack": "^5.111.1",
|
|
58
|
+
"webpack-cli": "^7.2.3",
|
|
59
59
|
"webpack-merge": "^6.0.1"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|