@hopara/iframe 0.2.0 → 0.2.2

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/README.md CHANGED
@@ -21,11 +21,11 @@ Using Hopara CDN:
21
21
  ### React
22
22
  ```js
23
23
  import React from 'react'
24
- import * as hopara from 'hopara'
24
+ import Hopara from 'hopara'
25
25
 
26
26
  class MyComponent extends React.Component {
27
27
  componentDidMount(): void {
28
- hopara.init({
28
+ Hopara.init({
29
29
  app: 'my-hopara-app',
30
30
  accessToken: 'my-hopara-token',
31
31
  targetElementId: 'my-target-element',
@@ -46,7 +46,7 @@ class MyComponent extends React.Component {
46
46
  <script src="https://statics.hopara.app/embedded/latest/client.js"></script>
47
47
  <script>
48
48
  document.addEventListener("DOMContentLoaded", function(){
49
- hopara.init({
49
+ Hopara.init({
50
50
  app: 'my-hopara-app',
51
51
  accessToken: 'my-hopara-token',
52
52
  targetElementId: 'my-target-element',
@@ -64,18 +64,29 @@ class MyComponent extends React.Component {
64
64
 
65
65
  ### Init
66
66
  ```js
67
- hopara.init(config)
67
+ Hopara.init(config)
68
68
  ```
69
69
 
70
70
  ### Hopara Config
71
- ```js
71
+ ```typescript
72
72
  {
73
- app: 'my-hopara-app',
74
- accessToken: 'my-hopara-token',
75
- // `targetElementId` is the DOM element id where Hopara should load
76
- targetElementId: 'my-target-element',
77
- // `tenant` parameter is optional
78
- // sets which tenant hopara app should load, defaults to first of your user configured tenant
79
- tenant: 'my-hopara-tenant'
73
+ // The app id
74
+ app: string
75
+
76
+ // The accessToken fetched from the auth API
77
+ accessToken: string
78
+
79
+ // Overwrites the data at render time
80
+ dataLoaders: DataLoader[] | undefined
81
+
82
+ // Provides a custom ways to update data
83
+ dataUpdaters: DataUpdaters[] | undefined
84
+
85
+ // The initial position to load the visualization
86
+ initialPosition: InitialPosition | undefined
87
+
88
+ // The initial row (e.g. asset) to load the visualization
89
+ initialRow: InitialRow | undefined
80
90
  }
81
- ```
91
+ ```
92
+ for more information about the initialization props go to our [@hopara/react](https://www.npmjs.com/package/@hopara/react) module
package/build/client.js CHANGED
@@ -1 +1 @@
1
- (function webpackUniversalModuleDefinition(root,factory){if(typeof exports==="object"&&typeof module==="object")module.exports=factory();else if(typeof define==="function"&&define.amd)define([],factory);else if(typeof exports==="object")exports["hopara"]=factory();else root["hopara"]=factory()})(this,(function(){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{enumerable:true,get:getter})}};__webpack_require__.r=function(exports){if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(exports,"__esModule",{value:true})};__webpack_require__.t=function(value,mode){if(mode&1)value=__webpack_require__(value);if(mode&8)return value;if(mode&4&&typeof value==="object"&&value&&value.__esModule)return value;var ns=Object.create(null);__webpack_require__.r(ns);Object.defineProperty(ns,"default",{enumerable:true,value});if(mode&2&&typeof value!="string")for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key]}.bind(null,key));return ns};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module["default"]}:function getModuleExports(){return module};__webpack_require__.d(getter,"a",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=0)}([function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"init",(function(){return init}));const createIframe=function(document,version){let debug=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;const iframeSrc=`https://statics.hopara.app/embedded/${version?version:"latest"}/index.html${debug?"?debug=true":""}`;const iframeStyle="background-color: transparent; border: 0px none transparent; padding: 0px; overflow: hidden; width: 100%; height: 100%;";const iframe=document.createElement("iframe");iframe.src=iframeSrc;iframe.style=iframeStyle;return iframe};const makeInit=config=>{const targetElement=document.getElementById(config.targetElementId);if(!targetElement)return console&&console.warn("Hopara: targetElement not found");const iframe=createIframe(document,config.version,config.debug);window.addEventListener("message",(event=>{if(event.data.__hopara__eventType__==="ready"){var _iframe$contentWindow;(_iframe$contentWindow=iframe.contentWindow)===null||_iframe$contentWindow===void 0?void 0:_iframe$contentWindow.postMessage(Object.assign(config,{__hopara__eventType__:"init"}),"*")}}));targetElement.appendChild(iframe)};const init=config=>{if(!config&&console){console.warn("Hopara: init config not present");return}if((!window||!window.document)&&console){console.warn("Hopara: window is not available");return}return makeInit(config)}}])}));
1
+ (function webpackUniversalModuleDefinition(root,factory){if(typeof exports==="object"&&typeof module==="object")module.exports=factory();else if(typeof define==="function"&&define.amd)define([],factory);else{var a=factory();for(var i in a)(typeof exports==="object"?exports:root)[i]=a[i]}})(this,(function(){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{enumerable:true,get:getter})}};__webpack_require__.r=function(exports){if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(exports,"__esModule",{value:true})};__webpack_require__.t=function(value,mode){if(mode&1)value=__webpack_require__(value);if(mode&8)return value;if(mode&4&&typeof value==="object"&&value&&value.__esModule)return value;var ns=Object.create(null);__webpack_require__.r(ns);Object.defineProperty(ns,"default",{enumerable:true,value});if(mode&2&&typeof value!="string")for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key]}.bind(null,key));return ns};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module["default"]}:function getModuleExports(){return module};__webpack_require__.d(getter,"a",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=0)}([function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"Hopara",(function(){return client_Hopara}));let EventType;(function(EventType){EventType["INIT"]="init";EventType["READY"]="ready";EventType["LOAD_DATA"]="loadData";EventType["LOAD_DATA_RESPONSE"]="loadDataResponse";EventType["UPDATE_DATA"]="updateData";EventType["UPDATE_DATA_RESPONSE"]="updateDataResponse"})(EventType||(EventType={}));const HOPARA_EVENT_TYPE="__hopara__eventType__";const isReadyEvent=event=>event.data[HOPARA_EVENT_TYPE]===EventType.READY;const isLoadDataEvent=event=>event.data[HOPARA_EVENT_TYPE]===EventType.LOAD_DATA;const isUpdateDataEvent=event=>event.data[HOPARA_EVENT_TYPE]===EventType.UPDATE_DATA;class EventEmitter_EventEmitter{static sendMessage(data,targetWindow){const target=targetWindow||window.parent||window.top;if(!window||window===target)return;target.postMessage(data,"*")}static ready(){this.sendMessage({[HOPARA_EVENT_TYPE]:EventType.READY})}static init(config,targetWindow){this.sendMessage(Object.assign(config,{[HOPARA_EVENT_TYPE]:EventType.INIT}),targetWindow)}static loadDataRequest(dataLoader,filterSet){this.sendMessage({[HOPARA_EVENT_TYPE]:EventType.LOAD_DATA,data:{name:dataLoader.name,source:dataLoader.source},filterSet})}static loadDataResponse(config,dataLoader,rows,targetWindow){this.sendMessage(Object.assign(config,{[HOPARA_EVENT_TYPE]:EventType.LOAD_DATA_RESPONSE},{data:{name:dataLoader.name,source:dataLoader.source},rows}),targetWindow)}static updateDataRequest(dataUpdater,newRow,oldRow,diff){this.sendMessage({[HOPARA_EVENT_TYPE]:EventType.UPDATE_DATA,data:{name:dataUpdater.name,source:dataUpdater.source},newRow,oldRow,diff})}}class client_Hopara{constructor(config){this.config=void 0;this.doInit=()=>{const targetElement=document.getElementById(this.config.targetElementId);if(!targetElement)return console&&console.warn("Hopara: targetElement not found");const iframe=this.createIframe();this.createListeners(iframe);targetElement.appendChild(iframe)};this.config=config}getIframeSrc(){const url=this.config.embeddedUrl?this.config.embeddedUrl:`https://statics.hopara.app/embedded/${this.config.version?this.config.version:"latest"}/index.html`;return`${url}${this.config.debug?"?debug=true":""}`}getIframeStyle(){return"background-color: transparent; border: 0px none transparent; padding: 0px; overflow: hidden; width: 100%; height: 100%;"}createIframe(){const iframe=document.createElement("iframe");iframe.src=this.getIframeSrc();iframe.style=this.getIframeStyle();return iframe}getCleanConfig(){var _this$config$dataLoad,_this$config$dataUpda;return{accessToken:this.config.accessToken,app:this.config.app,tenant:this.config.tenant,initialPosition:this.config.initialPosition,initialDataBrowserId:this.config.initialDataBrowserId,initialRowId:this.config.initialRowId,dataLoaders:(_this$config$dataLoad=this.config.dataLoaders)===null||_this$config$dataLoad===void 0?void 0:_this$config$dataLoad.map((dataLoader=>({name:dataLoader.name,source:dataLoader.source}))),dataUpdaters:(_this$config$dataUpda=this.config.dataUpdaters)===null||_this$config$dataUpda===void 0?void 0:_this$config$dataUpda.map((dataUpdater=>({name:dataUpdater.name,source:dataUpdater.source})))}}createListeners(iframe){window.addEventListener("message",(event=>{const targetWindow=iframe.contentWindow;if(!targetWindow)throw new Error("Hopara: targetWindow is not available");if(isReadyEvent(event)){return EventEmitter_EventEmitter.init(this.getCleanConfig(),targetWindow)}if(isLoadDataEvent(event)){var _this$config$dataLoad2;const dataLoader=(_this$config$dataLoad2=this.config.dataLoaders)===null||_this$config$dataLoad2===void 0?void 0:_this$config$dataLoad2.find((dataLoader=>dataLoader.name===event.data.data.name&&dataLoader.source===event.data.data.source));if(dataLoader)return dataLoader.loader(event.data.filterSet).then((data=>EventEmitter_EventEmitter.loadDataResponse(this.getCleanConfig(),dataLoader,data,targetWindow)))}if(isUpdateDataEvent(event)){var _this$config$dataUpda2;const dataUpdater=(_this$config$dataUpda2=this.config.dataUpdaters)===null||_this$config$dataUpda2===void 0?void 0:_this$config$dataUpda2.find((dataUpdater=>dataUpdater.name===event.data.data.name&&dataUpdater.source===event.data.data.source));if(dataUpdater)return dataUpdater.updater(event.data.newRow,event.data.oldRow,event.data.diff)}}))}static init(config){if(!config&&console){console.warn("Hopara: init config not present");return}if((!window||!window.document)&&console){console.warn("Hopara: window is not available");return}const client=new client_Hopara(config);return client.doInit()}}var client=__webpack_exports__["default"]=client_Hopara}])}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hopara/iframe",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "main": "build/client.js",
5
5
  "scripts": {
6
6
  "start": "ESLINT_NO_DEV_ERRORS=true react-app-rewired start",
@@ -27,8 +27,8 @@
27
27
  ],
28
28
  "devDependencies": {
29
29
  "@babel/register": "^7.15.3",
30
- "@hopara/components": "^0.2.0",
31
- "@hopara/system-test": "^0.2.0",
30
+ "@hopara/react": "^0.2.2",
31
+ "@hopara/system-test": "^0.2.2",
32
32
  "babel-loader": "8.1.0",
33
33
  "customize-cra": "^1.0.0",
34
34
  "react": "^18.2.0",