@sumboard/sdk 2.0.1 → 2.0.3

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.
@@ -1,18 +1,24 @@
1
1
  export class Sumboard {
2
2
  constructor() {
3
+ this._destroyed = false;
3
4
  this._listener = this._receiveMessage.bind(this);
4
5
  this.init = (config) => {
6
+ this._destroyed = false;
5
7
  this._config = config;
6
8
  window.addEventListener('message', this._listener, false);
7
9
  return this._mountIframe();
8
10
  };
9
11
  this.changeFilters = (filters) => {
10
- this._iframe.contentWindow?.postMessage({ type: "CHANGE_FILTERS", filters }, '*');
12
+ this._iframe?.contentWindow?.postMessage({ type: "CHANGE_FILTERS", filters }, '*');
11
13
  };
12
14
  this._mountIframe = () => {
13
- return new Promise((resolve) => {
15
+ return new Promise((resolve, reject) => {
14
16
  const iframe = document.createElement('iframe');
15
- iframe.onload = () => resolve();
17
+ iframe.onload = () => {
18
+ if (this._destroyed)
19
+ return reject(new Error('Sumboard destroyed before iframe finished loading'));
20
+ return resolve();
21
+ };
16
22
  iframe.src = this._generateIframeSrc();
17
23
  iframe.width = '100%';
18
24
  iframe.height = '100%';
@@ -22,6 +28,8 @@ export class Sumboard {
22
28
  const wrapper = document.getElementById('sumboard');
23
29
  if (!wrapper)
24
30
  throw new Error('not found HTMLElement with id "sumboard"');
31
+ if (this._destroyed)
32
+ return reject(new Error('Sumboard destroyed before iframe mount'));
25
33
  wrapper.appendChild(iframe);
26
34
  });
27
35
  };
@@ -33,16 +41,25 @@ export class Sumboard {
33
41
  };
34
42
  }
35
43
  destroy() {
44
+ this._destroyed = true;
36
45
  window.removeEventListener('message', this._listener, false);
46
+ if (this._iframe?.parentNode)
47
+ this._iframe.parentNode.removeChild(this._iframe);
48
+ if (this._iframe?.onload)
49
+ this._iframe.onload = null;
37
50
  }
38
51
  _receiveMessage({ data }) {
52
+ if (this._destroyed)
53
+ return;
39
54
  switch (data.type) {
40
55
  case "BOOTSTRAP_DONE":
41
56
  return this._initDashboard();
42
57
  }
43
58
  }
44
59
  _initDashboard() {
45
- this._iframe.contentWindow?.postMessage({ type: "INIT_IFRAME", config: this._config }, '*');
60
+ if (this._destroyed)
61
+ return;
62
+ this._iframe?.contentWindow?.postMessage({ type: "INIT_IFRAME", config: this._config }, '*');
46
63
  }
47
64
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL3Nkay5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLFFBQVE7SUFBckI7UUFJVSxjQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQW1DLElBQUksQ0FBQyxDQUFDO1FBRXRGLFNBQUksR0FBRyxDQUFDLE1BQWMsRUFBaUIsRUFBRTtZQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUl0QixNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFM0QsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDO1FBSUYsa0JBQWEsR0FBRyxDQUFDLE9BQW1CLEVBQVEsRUFBRTtZQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRSxJQUFJLGtCQUFxQixFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQztRQU1NLGlCQUFZLEdBQUcsR0FBa0IsRUFBRTtZQUN6QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzdCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRWhELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBRWhDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBRXZDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO2dCQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7Z0JBRTlCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO2dCQUV0QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUVwRCxJQUFJLENBQUMsT0FBTztvQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7Z0JBRTFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFtQk0sdUJBQWtCLEdBQUcsR0FBVyxFQUFFO1lBQ3hDLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQzVCLE9BQU8sc0NBQXNDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDcEU7WUFFRCxPQUFPLGlDQUFpQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JFLENBQUMsQ0FBQztJQUNKLENBQUM7SUFuREMsT0FBTztRQUNMLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBMkJPLGVBQWUsQ0FBQyxFQUFFLElBQUksRUFBcUI7UUFDakQsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pCO2dCQUNFLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUlPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEVBQUUsSUFBSSxlQUFrQixFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakcsQ0FBQztDQVdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsdGVyc01hcCB9IGZyb20gJ0BzdW1ib2FyZC90eXBlcyc7XG5cbmltcG9ydCB7IENvbmZpZywgRXZlbnQsIE1lc3NhZ2UgfSBmcm9tICcuL3NrZC50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBTdW1ib2FyZCB7XG4gIHByaXZhdGUgX2lmcmFtZSE6IEhUTUxJRnJhbWVFbGVtZW50O1xuICBwcml2YXRlIF9jb25maWchOiBDb25maWc7XG5cbiAgcHJpdmF0ZSBfbGlzdGVuZXIgPSB0aGlzLl9yZWNlaXZlTWVzc2FnZS5iaW5kPFdpbmRvd0V2ZW50SGFuZGxlcnNbJ29ubWVzc2FnZSddPih0aGlzKTtcblxuICBpbml0ID0gKGNvbmZpZzogQ29uZmlnKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgIC8qKlxuICAgICAqIGxpc3RlbmVyIG1lc3NhZ2VzIGZyb20gaWZyYW1lXG4gICAgICovXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLl9saXN0ZW5lciEsIGZhbHNlKTtcblxuICAgIHJldHVybiB0aGlzLl9tb3VudElmcmFtZSgpO1xuICB9O1xuICAvKipcbiAgICogdW5kZWZpbmVkIGlzIGZvciBmaWx0ZXIgdGhhdCB5b3Ugd2FudCB0byByZW1vdmVcbiAgICovXG4gIGNoYW5nZUZpbHRlcnMgPSAoZmlsdGVyczogRmlsdGVyc01hcCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2lmcmFtZS5jb250ZW50V2luZG93Py5wb3N0TWVzc2FnZSh7IHR5cGU6IEV2ZW50LkNoYW5nZUZpbHRlcnMsIGZpbHRlcnMgfSwgJyonKTtcbiAgfTtcblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5fbGlzdGVuZXIhLCBmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIF9tb3VudElmcmFtZSA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuXG4gICAgICBpZnJhbWUub25sb2FkID0gKCkgPT4gcmVzb2x2ZSgpO1xuXG4gICAgICBpZnJhbWUuc3JjID0gdGhpcy5fZ2VuZXJhdGVJZnJhbWVTcmMoKTtcblxuICAgICAgaWZyYW1lLndpZHRoID0gJzEwMCUnO1xuICAgICAgaWZyYW1lLmhlaWdodCA9ICcxMDAlJztcbiAgICAgIGlmcmFtZS5zdHlsZS5ib3JkZXIgPSAnbm9uZSc7XG4gICAgICBpZnJhbWUuc3R5bGUub3V0bGluZSA9ICdub25lJztcblxuICAgICAgdGhpcy5faWZyYW1lID0gaWZyYW1lO1xuXG4gICAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1bWJvYXJkJyk7XG5cbiAgICAgIGlmICghd3JhcHBlcikgdGhyb3cgbmV3IEVycm9yKCdub3QgZm91bmQgSFRNTEVsZW1lbnQgd2l0aCBpZCBcInN1bWJvYXJkXCInKTtcblxuICAgICAgd3JhcHBlci5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICogcmVjZWl2ZSBtZXNzYWdlIGZyb20gaWZyYW1lXG4gICAqL1xuICBwcml2YXRlIF9yZWNlaXZlTWVzc2FnZSh7IGRhdGEgfTogeyBkYXRhOiBNZXNzYWdlIH0pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xuICAgICAgY2FzZSBFdmVudC5Cb290c3RyYXBEb25lOlxuICAgICAgICByZXR1cm4gdGhpcy5faW5pdERhc2hib2FyZCgpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogaW5pdCBkYXNoYm9hcmQgd2hlbiBzdW1ib2FyZCBpcyByZWFkeVxuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdERhc2hib2FyZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pZnJhbWUuY29udGVudFdpbmRvdz8ucG9zdE1lc3NhZ2UoeyB0eXBlOiBFdmVudC5Jbml0SUZyYW1lLCBjb25maWc6IHRoaXMuX2NvbmZpZyB9LCAnKicpO1xuICB9XG4gIC8qKlxuICAgKiBnZW5lcmF0ZSBpZnJhbWUgc3JjIGZyb20gY29uZmlnXG4gICAqL1xuICBwcml2YXRlIF9nZW5lcmF0ZUlmcmFtZVNyYyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgIGlmICgncGFnZUlkJyBpbiB0aGlzLl9jb25maWcpIHtcbiAgICAgIHJldHVybiBgaHR0cHM6Ly9hcHAuc3VtYm9hcmQuaW8vZW1iZWQtcGFnZS8ke3RoaXMuX2NvbmZpZy5wYWdlSWR9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYGh0dHBzOi8vYXBwLnN1bWJvYXJkLmlvL2VtYmVkLyR7dGhpcy5fY29uZmlnLmRhc2hib2FyZElkfWA7XG4gIH07XG59XG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL3Nkay5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLFFBQVE7SUFBckI7UUFHVSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBbUMsSUFBSSxDQUFDLENBQUM7UUFFdEYsU0FBSSxHQUFHLENBQUMsTUFBYyxFQUFpQixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBSXRCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUUzRCxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUM7UUFJRixrQkFBYSxHQUFHLENBQUMsT0FBbUIsRUFBUSxFQUFFO1lBQzVDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksa0JBQXFCLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEYsQ0FBQyxDQUFDO1FBVU0saUJBQVksR0FBRyxHQUFrQixFQUFFO1lBQ3pDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3JDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRWhELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO29CQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVO3dCQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUMsQ0FBQztvQkFFbkcsT0FBTyxPQUFPLEVBQUUsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDO2dCQUVGLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBRXZDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO2dCQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7Z0JBRTlCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO2dCQUV0QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUVwRCxJQUFJLENBQUMsT0FBTztvQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7Z0JBRTFFLElBQUksSUFBSSxDQUFDLFVBQVU7b0JBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxDQUFDO2dCQUV4RixPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBdUJNLHVCQUFrQixHQUFHLEdBQVcsRUFBRTtZQUN4QyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUM1QixPQUFPLHNDQUFzQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3BFO1lBRUQsT0FBTyxpQ0FBaUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRSxDQUFDLENBQUM7SUFDSixDQUFDO0lBakVDLE9BQU87UUFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixNQUFNLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFOUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVU7WUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hGLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNO1lBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZELENBQUM7SUFpQ08sZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFxQjtRQUNqRCxJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUU1QixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakI7Z0JBQ0UsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBSU8sY0FBYztRQUNwQixJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUU1QixJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRSxJQUFJLGVBQWtCLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsRyxDQUFDO0NBV0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXJzTWFwIH0gZnJvbSAnQHN1bWJvYXJkL3R5cGVzJztcblxuaW1wb3J0IHsgQ29uZmlnLCBFdmVudCwgTWVzc2FnZSB9IGZyb20gJy4vc2tkLnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIFN1bWJvYXJkIHtcbiAgcHJpdmF0ZSBfaWZyYW1lPzogSFRNTElGcmFtZUVsZW1lbnQ7XG4gIHByaXZhdGUgX2NvbmZpZyE6IENvbmZpZztcbiAgcHJpdmF0ZSBfZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbGlzdGVuZXIgPSB0aGlzLl9yZWNlaXZlTWVzc2FnZS5iaW5kPFdpbmRvd0V2ZW50SGFuZGxlcnNbJ29ubWVzc2FnZSddPih0aGlzKTtcblxuICBpbml0ID0gKGNvbmZpZzogQ29uZmlnKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgdGhpcy5fZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgIC8qKlxuICAgICAqIGxpc3RlbmVyIG1lc3NhZ2VzIGZyb20gaWZyYW1lXG4gICAgICovXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLl9saXN0ZW5lciEsIGZhbHNlKTtcblxuICAgIHJldHVybiB0aGlzLl9tb3VudElmcmFtZSgpO1xuICB9O1xuICAvKipcbiAgICogdW5kZWZpbmVkIGlzIGZvciBmaWx0ZXIgdGhhdCB5b3Ugd2FudCB0byByZW1vdmVcbiAgICovXG4gIGNoYW5nZUZpbHRlcnMgPSAoZmlsdGVyczogRmlsdGVyc01hcCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2lmcmFtZT8uY29udGVudFdpbmRvdz8ucG9zdE1lc3NhZ2UoeyB0eXBlOiBFdmVudC5DaGFuZ2VGaWx0ZXJzLCBmaWx0ZXJzIH0sICcqJyk7XG4gIH07XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5fbGlzdGVuZXIhLCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5faWZyYW1lPy5wYXJlbnROb2RlKSB0aGlzLl9pZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9pZnJhbWUpO1xuICAgIGlmICh0aGlzLl9pZnJhbWU/Lm9ubG9hZCkgdGhpcy5faWZyYW1lLm9ubG9hZCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9tb3VudElmcmFtZSA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG5cbiAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9kZXN0cm95ZWQpIHJldHVybiByZWplY3QobmV3IEVycm9yKCdTdW1ib2FyZCBkZXN0cm95ZWQgYmVmb3JlIGlmcmFtZSBmaW5pc2hlZCBsb2FkaW5nJykpO1xuXG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICBpZnJhbWUuc3JjID0gdGhpcy5fZ2VuZXJhdGVJZnJhbWVTcmMoKTtcblxuICAgICAgaWZyYW1lLndpZHRoID0gJzEwMCUnO1xuICAgICAgaWZyYW1lLmhlaWdodCA9ICcxMDAlJztcbiAgICAgIGlmcmFtZS5zdHlsZS5ib3JkZXIgPSAnbm9uZSc7XG4gICAgICBpZnJhbWUuc3R5bGUub3V0bGluZSA9ICdub25lJztcblxuICAgICAgdGhpcy5faWZyYW1lID0gaWZyYW1lO1xuXG4gICAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1bWJvYXJkJyk7XG5cbiAgICAgIGlmICghd3JhcHBlcikgdGhyb3cgbmV3IEVycm9yKCdub3QgZm91bmQgSFRNTEVsZW1lbnQgd2l0aCBpZCBcInN1bWJvYXJkXCInKTtcblxuICAgICAgaWYgKHRoaXMuX2Rlc3Ryb3llZCkgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoJ1N1bWJvYXJkIGRlc3Ryb3llZCBiZWZvcmUgaWZyYW1lIG1vdW50JykpO1xuXG4gICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiByZWNlaXZlIG1lc3NhZ2UgZnJvbSBpZnJhbWVcbiAgICovXG4gIHByaXZhdGUgX3JlY2VpdmVNZXNzYWdlKHsgZGF0YSB9OiB7IGRhdGE6IE1lc3NhZ2UgfSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kZXN0cm95ZWQpIHJldHVybjtcblxuICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgICBjYXNlIEV2ZW50LkJvb3RzdHJhcERvbmU6XG4gICAgICAgIHJldHVybiB0aGlzLl9pbml0RGFzaGJvYXJkKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBpbml0IGRhc2hib2FyZCB3aGVuIHN1bWJvYXJkIGlzIHJlYWR5XG4gICAqL1xuICBwcml2YXRlIF9pbml0RGFzaGJvYXJkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kZXN0cm95ZWQpIHJldHVybjtcblxuICAgIHRoaXMuX2lmcmFtZT8uY29udGVudFdpbmRvdz8ucG9zdE1lc3NhZ2UoeyB0eXBlOiBFdmVudC5Jbml0SUZyYW1lLCBjb25maWc6IHRoaXMuX2NvbmZpZyB9LCAnKicpO1xuICB9XG4gIC8qKlxuICAgKiBnZW5lcmF0ZSBpZnJhbWUgc3JjIGZyb20gY29uZmlnXG4gICAqL1xuICBwcml2YXRlIF9nZW5lcmF0ZUlmcmFtZVNyYyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgIGlmICgncGFnZUlkJyBpbiB0aGlzLl9jb25maWcpIHtcbiAgICAgIHJldHVybiBgaHR0cHM6Ly9hcHAuc3VtYm9hcmQuaW8vZW1iZWQtcGFnZS8ke3RoaXMuX2NvbmZpZy5wYWdlSWR9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYGh0dHBzOi8vYXBwLnN1bWJvYXJkLmlvL2VtYmVkLyR7dGhpcy5fY29uZmlnLmRhc2hib2FyZElkfWA7XG4gIH07XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tkLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvc2tkLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXJzTWFwIH0gZnJvbSAnQHN1bWJvYXJkL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGVudW0gRXZlbnQge1xuICBJbml0SUZyYW1lID0gJ0lOSVRfSUZSQU1FJyxcbiAgQ2hhbmdlRmlsdGVycyA9ICdDSEFOR0VfRklMVEVSUycsXG4gIEJvb3RzdHJhcERvbmUgPSAnQk9PVFNUUkFQX0RPTkUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VDb25maWcge1xuICB0b2tlbjogc3RyaW5nO1xuICAvKipcbiAgICogdW5kZWZpbmVkIGlzIGZvciBmaWx0ZXIgdGhhdCB5b3Ugd2FudCB0byByZW1vdmVcbiAgICovXG4gIGZpbHRlcnM/OiBGaWx0ZXJzTWFwO1xuICAvKipcbiAgICogbWF4aW11bSB3aWR0aCBvZiB0aGUgZGFzaGJvYXJkIGNvbnRlbnRcbiAgICovXG4gIG1heFdpZHRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZENvbmZpZyBleHRlbmRzIEJhc2VDb25maWcge1xuICBkYXNoYm9hcmRJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZFBhZ2VDb25maWcgZXh0ZW5kcyBCYXNlQ29uZmlnIHtcbiAgcGFnZUlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENvbmZpZyA9IERhc2hib2FyZENvbmZpZyB8IERhc2hib2FyZFBhZ2VDb25maWc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUZpbHRlcnMgZXh0ZW5kcyBQaWNrPENvbmZpZywgJ2ZpbHRlcnMnPiB7XG4gIHR5cGU6IEV2ZW50LkNoYW5nZUZpbHRlcnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUluaXQge1xuICB0eXBlOiBFdmVudC5Jbml0SUZyYW1lO1xuICBjb25maWc6IENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQm9vdHN0cmFwIHtcbiAgdHlwZTogRXZlbnQuQm9vdHN0cmFwRG9uZTtcbn1cblxuZXhwb3J0IHR5cGUgTWVzc2FnZSA9IE1lc3NhZ2VCb290c3RyYXAgfCBNZXNzYWdlRmlsdGVycyB8IE1lc3NhZ2VJbml0O1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tkLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvc2tkLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXJzTWFwIH0gZnJvbSAnQHN1bWJvYXJkL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGVudW0gRXZlbnQge1xuICBJbml0SUZyYW1lID0gJ0lOSVRfSUZSQU1FJyxcbiAgQ2hhbmdlRmlsdGVycyA9ICdDSEFOR0VfRklMVEVSUycsXG4gIEJvb3RzdHJhcERvbmUgPSAnQk9PVFNUUkFQX0RPTkUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VDb25maWcge1xuICB0b2tlbjogc3RyaW5nO1xuICAvKipcbiAgICogdW5kZWZpbmVkIGlzIGZvciBmaWx0ZXIgdGhhdCB5b3Ugd2FudCB0byByZW1vdmVcbiAgICovXG4gIGZpbHRlcnM/OiBGaWx0ZXJzTWFwO1xuICAvKipcbiAgICogbWF4aW11bSB3aWR0aCBvZiB0aGUgZGFzaGJvYXJkIGNvbnRlbnRcbiAgICovXG4gIG1heFdpZHRoPzogc3RyaW5nO1xuICAvKipcbiAgICogYWxsb3cgdG8gYWRkIHBhZGRpbmcgdG8gdGhlIGRhc2hib2FyZCBjb250ZW50XG4gICAqL1xuICBwYWRkaW5nPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZENvbmZpZyBleHRlbmRzIEJhc2VDb25maWcge1xuICBkYXNoYm9hcmRJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZFBhZ2VDb25maWcgZXh0ZW5kcyBCYXNlQ29uZmlnIHtcbiAgcGFnZUlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENvbmZpZyA9IERhc2hib2FyZENvbmZpZyB8IERhc2hib2FyZFBhZ2VDb25maWc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUZpbHRlcnMgZXh0ZW5kcyBQaWNrPENvbmZpZywgJ2ZpbHRlcnMnPiB7XG4gIHR5cGU6IEV2ZW50LkNoYW5nZUZpbHRlcnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUluaXQge1xuICB0eXBlOiBFdmVudC5Jbml0SUZyYW1lO1xuICBjb25maWc6IENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQm9vdHN0cmFwIHtcbiAgdHlwZTogRXZlbnQuQm9vdHN0cmFwRG9uZTtcbn1cblxuZXhwb3J0IHR5cGUgTWVzc2FnZSA9IE1lc3NhZ2VCb290c3RyYXAgfCBNZXNzYWdlRmlsdGVycyB8IE1lc3NhZ2VJbml0O1xuIl19
@@ -1,18 +1,24 @@
1
1
  class Sumboard {
2
2
  constructor() {
3
+ this._destroyed = false;
3
4
  this._listener = this._receiveMessage.bind(this);
4
5
  this.init = (config) => {
6
+ this._destroyed = false;
5
7
  this._config = config;
6
8
  window.addEventListener('message', this._listener, false);
7
9
  return this._mountIframe();
8
10
  };
9
11
  this.changeFilters = (filters) => {
10
- this._iframe.contentWindow?.postMessage({ type: "CHANGE_FILTERS", filters }, '*');
12
+ this._iframe?.contentWindow?.postMessage({ type: "CHANGE_FILTERS", filters }, '*');
11
13
  };
12
14
  this._mountIframe = () => {
13
- return new Promise((resolve) => {
15
+ return new Promise((resolve, reject) => {
14
16
  const iframe = document.createElement('iframe');
15
- iframe.onload = () => resolve();
17
+ iframe.onload = () => {
18
+ if (this._destroyed)
19
+ return reject(new Error('Sumboard destroyed before iframe finished loading'));
20
+ return resolve();
21
+ };
16
22
  iframe.src = this._generateIframeSrc();
17
23
  iframe.width = '100%';
18
24
  iframe.height = '100%';
@@ -22,6 +28,8 @@ class Sumboard {
22
28
  const wrapper = document.getElementById('sumboard');
23
29
  if (!wrapper)
24
30
  throw new Error('not found HTMLElement with id "sumboard"');
31
+ if (this._destroyed)
32
+ return reject(new Error('Sumboard destroyed before iframe mount'));
25
33
  wrapper.appendChild(iframe);
26
34
  });
27
35
  };
@@ -33,16 +41,25 @@ class Sumboard {
33
41
  };
34
42
  }
35
43
  destroy() {
44
+ this._destroyed = true;
36
45
  window.removeEventListener('message', this._listener, false);
46
+ if (this._iframe?.parentNode)
47
+ this._iframe.parentNode.removeChild(this._iframe);
48
+ if (this._iframe?.onload)
49
+ this._iframe.onload = null;
37
50
  }
38
51
  _receiveMessage({ data }) {
52
+ if (this._destroyed)
53
+ return;
39
54
  switch (data.type) {
40
55
  case "BOOTSTRAP_DONE":
41
56
  return this._initDashboard();
42
57
  }
43
58
  }
44
59
  _initDashboard() {
45
- this._iframe.contentWindow?.postMessage({ type: "INIT_IFRAME", config: this._config }, '*');
60
+ if (this._destroyed)
61
+ return;
62
+ this._iframe?.contentWindow?.postMessage({ type: "INIT_IFRAME", config: this._config }, '*');
46
63
  }
47
64
  }
48
65
 
@@ -1 +1 @@
1
- {"version":3,"file":"sumboard-sdk.mjs","sources":["../../../projects/sdk/src/lib/sdk.module.ts"],"sourcesContent":["import { FiltersMap } from '@sumboard/types';\n\nimport { Config, Event, Message } from './skd.types';\n\nexport class Sumboard {\n private _iframe!: HTMLIFrameElement;\n private _config!: Config;\n\n private _listener = this._receiveMessage.bind<WindowEventHandlers['onmessage']>(this);\n\n init = (config: Config): Promise<void> => {\n this._config = config;\n /**\n * listener messages from iframe\n */\n window.addEventListener('message', this._listener!, false);\n\n return this._mountIframe();\n };\n /**\n * undefined is for filter that you want to remove\n */\n changeFilters = (filters: FiltersMap): void => {\n this._iframe.contentWindow?.postMessage({ type: Event.ChangeFilters, filters }, '*');\n };\n\n destroy(): void {\n window.removeEventListener('message', this._listener!, false);\n }\n\n private _mountIframe = (): Promise<void> => {\n return new Promise((resolve) => {\n const iframe = document.createElement('iframe');\n\n iframe.onload = () => resolve();\n\n iframe.src = this._generateIframeSrc();\n\n iframe.width = '100%';\n iframe.height = '100%';\n iframe.style.border = 'none';\n iframe.style.outline = 'none';\n\n this._iframe = iframe;\n\n const wrapper = document.getElementById('sumboard');\n\n if (!wrapper) throw new Error('not found HTMLElement with id \"sumboard\"');\n\n wrapper.appendChild(iframe);\n });\n };\n /**\n * receive message from iframe\n */\n private _receiveMessage({ data }: { data: Message }): void {\n switch (data.type) {\n case Event.BootstrapDone:\n return this._initDashboard();\n }\n }\n /**\n * init dashboard when sumboard is ready\n */\n private _initDashboard(): void {\n this._iframe.contentWindow?.postMessage({ type: Event.InitIFrame, config: this._config }, '*');\n }\n /**\n * generate iframe src from config\n */\n private _generateIframeSrc = (): string => {\n if ('pageId' in this._config) {\n return `https://app.sumboard.io/embed-page/${this._config.pageId}`;\n }\n\n return `https://app.sumboard.io/embed/${this._config.dashboardId}`;\n };\n}\n"],"names":[],"mappings":"MAIa,QAAQ,CAAA;AAArB,IAAA,WAAA,GAAA;QAIU,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAmC,IAAI,CAAC,CAAC;AAEtF,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,MAAc,KAAmB;AACvC,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YAItB,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAU,EAAE,KAAK,CAAC,CAAC;AAE3D,YAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAC,CAAC;AAIF,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,OAAmB,KAAU;AAC5C,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,IAAI,EAAA,gBAAqB,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;AACvF,SAAC,CAAC;QAMM,IAAY,CAAA,YAAA,GAAG,MAAoB;AACzC,YAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAEhD,MAAM,CAAC,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;AAEhC,gBAAA,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAEvC,gBAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;AACtB,gBAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,gBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,gBAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAE9B,gBAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;gBAEtB,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAEpD,gBAAA,IAAI,CAAC,OAAO;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAE1E,gBAAA,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;QAmBM,IAAkB,CAAA,kBAAA,GAAG,MAAa;AACxC,YAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC5B,gBAAA,OAAO,sCAAsC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AACpE,aAAA;AAED,YAAA,OAAO,iCAAiC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AACrE,SAAC,CAAC;KACH;IAnDC,OAAO,GAAA;QACL,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAU,EAAE,KAAK,CAAC,CAAC;KAC/D;IA2BO,eAAe,CAAC,EAAE,IAAI,EAAqB,EAAA;QACjD,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAA,gBAAA;AACE,gBAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;AAChC,SAAA;KACF;IAIO,cAAc,GAAA;QACpB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,IAAI,EAAA,aAAkB,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;KAChG;AAWF;;;;"}
1
+ {"version":3,"file":"sumboard-sdk.mjs","sources":["../../../projects/sdk/src/lib/sdk.module.ts"],"sourcesContent":["import { FiltersMap } from '@sumboard/types';\n\nimport { Config, Event, Message } from './skd.types';\n\nexport class Sumboard {\n private _iframe?: HTMLIFrameElement;\n private _config!: Config;\n private _destroyed = false;\n\n private _listener = this._receiveMessage.bind<WindowEventHandlers['onmessage']>(this);\n\n init = (config: Config): Promise<void> => {\n this._destroyed = false;\n this._config = config;\n /**\n * listener messages from iframe\n */\n window.addEventListener('message', this._listener!, false);\n\n return this._mountIframe();\n };\n /**\n * undefined is for filter that you want to remove\n */\n changeFilters = (filters: FiltersMap): void => {\n this._iframe?.contentWindow?.postMessage({ type: Event.ChangeFilters, filters }, '*');\n };\n\n destroy(): void {\n this._destroyed = true;\n window.removeEventListener('message', this._listener!, false);\n\n if (this._iframe?.parentNode) this._iframe.parentNode.removeChild(this._iframe);\n if (this._iframe?.onload) this._iframe.onload = null;\n }\n\n private _mountIframe = (): Promise<void> => {\n return new Promise((resolve, reject) => {\n const iframe = document.createElement('iframe');\n\n iframe.onload = () => {\n if (this._destroyed) return reject(new Error('Sumboard destroyed before iframe finished loading'));\n\n return resolve();\n };\n\n iframe.src = this._generateIframeSrc();\n\n iframe.width = '100%';\n iframe.height = '100%';\n iframe.style.border = 'none';\n iframe.style.outline = 'none';\n\n this._iframe = iframe;\n\n const wrapper = document.getElementById('sumboard');\n\n if (!wrapper) throw new Error('not found HTMLElement with id \"sumboard\"');\n\n if (this._destroyed) return reject(new Error('Sumboard destroyed before iframe mount'));\n\n wrapper.appendChild(iframe);\n });\n };\n /**\n * receive message from iframe\n */\n private _receiveMessage({ data }: { data: Message }): void {\n if (this._destroyed) return;\n\n switch (data.type) {\n case Event.BootstrapDone:\n return this._initDashboard();\n }\n }\n /**\n * init dashboard when sumboard is ready\n */\n private _initDashboard(): void {\n if (this._destroyed) return;\n\n this._iframe?.contentWindow?.postMessage({ type: Event.InitIFrame, config: this._config }, '*');\n }\n /**\n * generate iframe src from config\n */\n private _generateIframeSrc = (): string => {\n if ('pageId' in this._config) {\n return `https://app.sumboard.io/embed-page/${this._config.pageId}`;\n }\n\n return `https://app.sumboard.io/embed/${this._config.dashboardId}`;\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { FiltersMap } from '@sumboard/types';
2
2
  import { Config } from './skd.types';
3
3
  export declare class Sumboard {
4
- private _iframe;
4
+ private _iframe?;
5
5
  private _config;
6
+ private _destroyed;
6
7
  private _listener;
7
8
  init: (config: Config) => Promise<void>;
8
9
  changeFilters: (filters: FiltersMap) => void;
@@ -8,6 +8,7 @@ export interface BaseConfig {
8
8
  token: string;
9
9
  filters?: FiltersMap;
10
10
  maxWidth?: string;
11
+ padding?: string;
11
12
  }
12
13
  export interface DashboardConfig extends BaseConfig {
13
14
  dashboardId: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumboard/sdk",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.1",
6
6
  "@sumboard/types": "^1.0.0"