@operato/scene-indoor-map 0.0.17 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ### [0.0.18](https://github.com/things-scene/operato-scene/compare/v0.0.17...v0.0.18) (2021-12-11)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * indoor-map and table editor interaction pattern ([5447b9b](https://github.com/things-scene/operato-scene/commit/5447b9b36bab108db6845ccd6c82a5c6ece7ffbf))
12
+ * upgrade things-factory version ([e7fc142](https://github.com/things-scene/operato-scene/commit/e7fc142a70d3d54b61fdd076522dede8a5908dcd))
13
+
14
+
15
+
6
16
  ### [0.0.17](https://github.com/things-scene/operato-scene/compare/v0.0.16...v0.0.17) (2021-12-11)
7
17
 
8
18
 
@@ -1,3 +1,4 @@
1
+ import './things-editor-action';
1
2
  declare const _default: {
2
3
  type: string;
3
4
  element: string;
@@ -1,11 +1,11 @@
1
1
  /*
2
2
  * Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
- import ActionEditor from './things-editor-action';
4
+ import './things-editor-action';
5
5
  export default [
6
6
  {
7
7
  type: 'action',
8
- element: ActionEditor.is
8
+ element: 'things-editor-action'
9
9
  }
10
10
  ];
11
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,YAAY,MAAM,wBAAwB,CAAA;AAEjD,eAAe;IACb;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,YAAY,CAAC,EAAE;KACzB;CACF,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport ActionEditor from './things-editor-action'\n\nexport default [\n {\n type: 'action',\n element: ActionEditor.is\n }\n]\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,wBAAwB,CAAA;AAE/B,eAAe;IACb;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,sBAAsB;KAChC;CACF,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport './things-editor-action'\n\nexport default [\n {\n type: 'action',\n element: 'things-editor-action'\n }\n]\n"]}
@@ -1,7 +1,6 @@
1
1
  import { Properties } from '@hatiolab/things-scene';
2
2
  import { OxPropertyEditor } from '@operato/property-editor';
3
3
  export default class ThingsEditorAction extends OxPropertyEditor {
4
- static get is(): string;
5
- static get styles(): import("lit").CSSResult[];
4
+ static styles: import("lit").CSSResult[];
6
5
  editorTemplate(props: Properties): import("lit-html").TemplateResult<1>;
7
6
  }
@@ -1,40 +1,46 @@
1
1
  /*
2
2
  * Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
+ import { __decorate } from "tslib";
4
5
  import { css, html } from 'lit';
5
6
  import { OxPropertyEditor } from '@operato/property-editor';
6
- export default class ThingsEditorAction extends OxPropertyEditor {
7
- static get is() {
8
- return 'things-editor-action';
9
- }
10
- static get styles() {
11
- return [
12
- ...OxPropertyEditor.styles,
13
- css `
14
- :host > label {
15
- display: flex;
16
- grid-column: span 3;
17
- order: 1;
18
- align-items: center;
19
- justify-self: right;
20
- }
21
- `
22
- ];
23
- }
7
+ import { customElement } from 'lit/decorators.js';
8
+ let ThingsEditorAction = class ThingsEditorAction extends OxPropertyEditor {
24
9
  editorTemplate(props) {
25
10
  var property = props.property || {};
26
11
  var { icon, action } = property;
27
12
  return html `
28
13
  <paper-icon-button
29
14
  .icon=${icon}
30
- @click=${(e) => this.dispatchEvent(new CustomEvent('action-editor-clicked', {
31
- bubbles: true,
32
- composed: true,
33
- detail: action
34
- }))}
15
+ @click=${(e) => {
16
+ this.dispatchEvent(new CustomEvent('i-need-selected', {
17
+ bubbles: true,
18
+ composed: true,
19
+ detail: {
20
+ callback: (selected) => {
21
+ typeof action === 'function' && action(selected[0]);
22
+ }
23
+ }
24
+ }));
25
+ }}
35
26
  ></paper-icon-button>
36
27
  `;
37
28
  }
38
- }
39
- customElements.define(ThingsEditorAction.is, ThingsEditorAction);
29
+ };
30
+ ThingsEditorAction.styles = [
31
+ ...OxPropertyEditor.styles,
32
+ css `
33
+ :host > label {
34
+ display: flex;
35
+ grid-column: span 3;
36
+ order: 1;
37
+ align-items: center;
38
+ justify-self: right;
39
+ }
40
+ `
41
+ ];
42
+ ThingsEditorAction = __decorate([
43
+ customElement('things-editor-action')
44
+ ], ThingsEditorAction);
45
+ export default ThingsEditorAction;
40
46
  //# sourceMappingURL=things-editor-action.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"things-editor-action.js","sourceRoot":"","sources":["../../src/editors/things-editor-action.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,gBAAgB;IAC9D,MAAM,KAAK,EAAE;QACX,OAAO,sBAAsB,CAAA;IAC/B,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO;YACL,GAAG,gBAAgB,CAAC,MAAM;YAC1B,GAAG,CAAA;;;;;;;;OAQF;SACF,CAAA;IACH,CAAC;IAED,cAAc,CAAC,KAAiB;QAC9B,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;QACnC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAA;QAC/B,OAAO,IAAI,CAAA;;gBAEC,IAAI;iBACH,CAAC,CAAa,EAAE,EAAE,CACzB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,uBAAuB,EAAE;YACvC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,MAAM;SACf,CAAC,CACH;;KAEN,CAAA;IACH,CAAC;CACF;AAED,cAAc,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { css, html } from 'lit'\n\nimport { Properties } from '@hatiolab/things-scene'\nimport { OxPropertyEditor } from '@operato/property-editor'\n\nexport default class ThingsEditorAction extends OxPropertyEditor {\n static get is() {\n return 'things-editor-action'\n }\n\n static get styles() {\n return [\n ...OxPropertyEditor.styles,\n css`\n :host > label {\n display: flex;\n grid-column: span 3;\n order: 1;\n align-items: center;\n justify-self: right;\n }\n `\n ]\n }\n\n editorTemplate(props: Properties) {\n var property = props.property || {}\n var { icon, action } = property\n return html`\n <paper-icon-button\n .icon=${icon}\n @click=${(e: MouseEvent) =>\n this.dispatchEvent(\n new CustomEvent('action-editor-clicked', {\n bubbles: true,\n composed: true,\n detail: action\n })\n )}\n ></paper-icon-button>\n `\n }\n}\n\ncustomElements.define(ThingsEditorAction.is, ThingsEditorAction)\n"]}
1
+ {"version":3,"file":"things-editor-action.js","sourceRoot":"","sources":["../../src/editors/things-editor-action.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAGH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAE/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD,IAAqB,kBAAkB,GAAvC,MAAqB,kBAAmB,SAAQ,gBAAgB;IAc9D,cAAc,CAAC,KAAiB;QAC9B,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;QACnC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAA;QAE/B,OAAO,IAAI,CAAA;;gBAEC,IAAI;iBACH,CAAC,CAAa,EAAE,EAAE;YACzB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,iBAAiB,EAAE;gBACjC,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE;oBACN,QAAQ,EAAE,CAAC,QAAqB,EAAE,EAAE;wBAClC,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;oBACrD,CAAC;iBACF;aACF,CAAC,CACH,CAAA;QACH,CAAC;;KAEJ,CAAA;IACH,CAAC;CACF,CAAA;AApCQ,yBAAM,GAAG;IACd,GAAG,gBAAgB,CAAC,MAAM;IAC1B,GAAG,CAAA;;;;;;;;KAQF;CACF,CAAA;AAZkB,kBAAkB;IADtC,aAAa,CAAC,sBAAsB,CAAC;GACjB,kBAAkB,CAqCtC;eArCoB,kBAAkB","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, Properties } from '@hatiolab/things-scene'\nimport { css, html } from 'lit'\n\nimport { OxPropertyEditor } from '@operato/property-editor'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('things-editor-action')\nexport default class ThingsEditorAction extends OxPropertyEditor {\n static styles = [\n ...OxPropertyEditor.styles,\n css`\n :host > label {\n display: flex;\n grid-column: span 3;\n order: 1;\n align-items: center;\n justify-self: right;\n }\n `\n ]\n\n editorTemplate(props: Properties) {\n var property = props.property || {}\n var { icon, action } = property\n\n return html`\n <paper-icon-button\n .icon=${icon}\n @click=${(e: MouseEvent) => {\n this.dispatchEvent(\n new CustomEvent('i-need-selected', {\n bubbles: true,\n composed: true,\n detail: {\n callback: (selected: Component[]) => {\n typeof action === 'function' && action(selected[0])\n }\n }\n })\n )\n }}\n ></paper-icon-button>\n `\n }\n}\n"]}
package/dist/floor.js CHANGED
@@ -16,8 +16,7 @@ const NATURE = {
16
16
  action: function (floor) {
17
17
  let indoor = floor.parent;
18
18
  indoor.removeComponent(floor);
19
- indoor.activeIndex = 0;
20
- indoor.invalidate();
19
+ indoor.set('activeIndex', 0);
21
20
  }
22
21
  }
23
22
  }
package/dist/floor.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"floor.js","sourceRoot":"","sources":["../src/floor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAI9D,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,UAAS,KAAY;oBAC3B,IAAI,MAAM,GAAG,KAAK,CAAC,MAAmB,CAAA;oBACtC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;oBAC7B,MAAM,CAAC,WAAW,GAAG,CAAC,CAAA;oBACtB,MAAM,CAAC,UAAU,EAAE,CAAA;gBACrB,CAAC;aACF;SACF;KACF;CACF,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,SAAS;IAG1C,IAAI,eAAe;QACjB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,OAAO;QACT,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;;OAKG;IACH,IAAI,SAAS;QACX,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;OAIG;IACH,IAAI,SAAS;QACX,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CAsTF;AAED,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, Container } from '@hatiolab/things-scene';\n\nimport IndoorMap from './indoor-map';\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'action',\n label: 'remove',\n name: 'remove',\n property: {\n icon: 'remove-circle',\n action: function(floor: Floor) {\n let indoor = floor.parent as IndoorMap\n indoor.removeComponent(floor)\n indoor.activeIndex = 0\n indoor.invalidate()\n }\n }\n }\n ]\n}\n\nexport default class Floor extends Container {\n private _clickPoint?: Component\n\n get hasTextProperty() {\n return false\n }\n\n get showMoveHandle() {\n return false\n }\n\n /*\n * PATH 리스트를 직접 수정할 수 있는 지를 결정한다.\n *\n * 일반적으로 PATH는 바운드 생성을 위해서 논리적으로 생성되므로, 직접 수정하지 않는다.(return false)\n * 그러나, 각 꼭지점들이 개별로 움직이는 다각형류는 path 라는 모델데이타를 가지므로, 직접수정이 가능할 수 있다.(return true)\n *\n * Immutable 컴포넌트의 형상을 바꾸는 방법은 바운드를 이용한 리사이즈나, 특별한 컨트롤을 통해서 가능하다.\n */\n get mutable() {\n return false\n }\n\n /*\n * BOUND를 통해서 리사이즈를 할 수 있는 지를 결정한다.\n *\n * 일반적으로 면적을 갖는 컴포넌트는 대체로 가능하다.(return true)\n * 그러나, LINE 등 면적을 가지지않는 컴포넌트는 가능하지 않도록 정의한다.(return false)\n */\n get resizable() {\n return false\n }\n\n /*\n * 회전을 할 수 있는 지를 결정한다.\n *\n * 일반적으로 모든 컴포넌트는 가능하다.(return true)\n */\n get rotatable() {\n return false\n }\n\n get nature() {\n return NATURE\n }\n\n // drawLocationMarkers(locations) {\n // for (let uuid in locations) {\n // let locInfo = locations[uuid]\n // let props = locInfo.props || {}\n\n // props.width = props.width || 10\n // props.height = props.height || 10\n\n // let currentTime = new Date().getTime()\n // // let diffTime = 500\n // let diffTime = currentTime - locInfo.lastUpdateTime\n\n // if (diffTime < locInfo.updateInterval) {\n // let movingObject = this.findById(uuid)\n // if (movingObject) {\n // // props.yaw = 0;\n // // props.roll = 0;\n\n // movingObject.set(props)\n // for (let key in props) {\n // movingObject[key] = props[key]\n // }\n // } else {\n // // TODO: marker의 초기값 관련 로직 정리 필요.\n\n // let config = Object.assign(\n // {\n // type: locInfo.type || 'rect',\n // // type: locInfo.type || \"camera\",\n // id: uuid,\n // fillStyle: 'red',\n // left: props.center.x - props.width * 0.5,\n // top: props.center.y - props.height * 0.5,\n // cx: props.center.x,\n // cy: props.center.y\n // },\n // props\n // )\n\n // let marker = Model.compile(config)\n\n // this.addComponent(marker)\n\n // // movingObject = this.findById(uuid)\n // // if(movingObject) {\n // // movingObject.set(props);\n // // }\n // }\n // } else {\n // let movingObject = this.findById(uuid)\n // this.removeComponent(movingObject)\n // }\n\n // this.invalidate()\n // }\n // }\n\n // simulate(point) {\n // // for(let i in this.components) {\n // // if(this.components[i].model.type != 'beacon')\n // // continue;\n // //\n // // let beacon = this.components[i]\n // // let distance = Math.sqrt(Math.pow(beacon.center.x - point.x, 2) + Math.pow(beacon.center.y - point.y, 2)) * 0.01\n // // let rssi = -10 * Math.log10(distance) + (beacon.txPower || -71)\n // //\n // // let randRssi = gaussian(rssi, Math.pow(4.894686948810031, 2))\n // //\n // // rssi = randRssi.ppf(Math.random())\n // //\n // // console.log(rssi);\n // // }\n\n // let beacons: {\n // distance: number;\n // gaussian: number;\n // txPower: number;\n // }[] = []\n\n // for (let i in this.components) {\n // if (this.components[i].model.type != 'beacon') continue\n\n // let beacon = this.components[i]\n\n // beacon.distance = Math.sqrt(\n // Math.pow(beacon.center.x - point.x, 2) +\n // Math.pow(beacon.center.y - point.y, 2)\n // )\n // beacon.gaussian = gaussian(\n // beacon.model.txPower || -71,\n // Math.pow(3.209, 2)\n // )\n // beacon.txPower = beacon.gaussian.ppf(Math.random())\n\n // beacons.push(beacon)\n // }\n\n // beacons = beacons.slice(0)\n\n // this.calculatePosition(beacons, point)\n // }\n\n // calculatePosition(nodeArr, position) {\n // let beacons = nodeArr\n\n // beacons.sort(function(a, b) {\n // let rssiA = -10 * Math.log10(a.distance) + a.txPower\n // let rssiB = -10 * Math.log10(b.distance) + b.txPower\n\n // return Math.abs(rssiA) - Math.abs(rssiB)\n // })\n\n // let beaconCombs = this.k_combinations(beacons.slice(0, 4), 3)\n // let positions = []\n\n // for (let i in beaconCombs) {\n // let beaconComb = beaconCombs[i]\n // let beaconA = beaconComb[0]\n // let beaconB = beaconComb[1]\n // let beaconC = beaconComb[2]\n\n // let xa = beaconA.center.x\n // let ya = beaconA.center.y\n // let xb = beaconB.center.x\n // let yb = beaconB.center.y\n // let xc = beaconC.center.x\n // let yc = beaconC.center.y\n // let ra = beaconA.distance\n // let rb = beaconB.distance\n // let rc = beaconC.distance\n\n // // let ra = Math.sqrt(Math.pow(beaconA.center.x - position.x, 2) + Math.pow(beaconA.center.y - position.y, 2)) * 0.01\n // // let rb = Math.sqrt(Math.pow(beaconB.center.x - position.x, 2) + Math.pow(beaconB.center.y - position.y, 2)) * 0.01\n // // let rc = Math.sqrt(Math.pow(beaconC.center.x - position.x, 2) + Math.pow(beaconC.center.y - position.y, 2)) * 0.01\n\n // let rssiA = -10 * Math.log10(beaconA.distance * 0.01) + beaconA.txPower\n // let rssiB = -10 * Math.log10(beaconB.distance * 0.01) + beaconB.txPower\n // let rssiC = -10 * Math.log10(beaconC.distance * 0.01) + beaconC.txPower\n\n // ra = this.calculateDistance(beaconA.txPower, rssiA) * 100\n // rb = this.calculateDistance(beaconB.txPower, rssiB) * 100\n // rc = this.calculateDistance(beaconC.txPower, rssiC) * 100\n\n // let xaSq = xa * xa,\n // xbSq = xb * xb,\n // xcSq = xc * xc,\n // yaSq = ya * ya,\n // ybSq = yb * yb,\n // ycSq = yc * yc,\n // raSq = ra * ra,\n // rbSq = rb * rb,\n // rcSq = rc * rc\n // let numerator1 =\n // (xb - xa) * (xcSq + ycSq - rcSq) +\n // (xa - xc) * (xbSq + ybSq - rbSq) +\n // (xc - xb) * (xaSq + yaSq - raSq)\n // let denominator1 = 2 * (yc * (xb - xa) + yb * (xa - xc) + ya * (xc - xb))\n // let y = numerator1 / denominator1\n // let numerator2 =\n // rbSq - raSq + xaSq - xbSq + yaSq - ybSq - 2 * (ya - yb) * y\n // let denominator2 = 2 * (xa - xb)\n // let x = numerator2 / denominator2\n\n // if (Number.isFinite(x) && Number.isFinite(y)) {\n // positions.push({\n // x: x,\n // y: y\n // })\n // }\n // }\n\n // let avgPosition = this.averageOfPositions(positions)\n\n // if (this._simPosition) this.removeComponent(this._simPosition)\n\n // this._simPosition = Model.compile({\n // type: 'ellipse',\n // cx: avgPosition.x,\n // cy: avgPosition.y,\n // rx: 10,\n // ry: 10,\n // fillStyle: 'navy'\n // })\n\n // this.addComponent(this._simPosition)\n // }\n\n // calculateDistance(txPower, rssi) {\n // if (rssi == 0) {\n // return -1.0 // if we cannot determine distance, return -1.\n // }\n\n // let ratio = (rssi * 1.0) / txPower\n // if (ratio < 1.0) {\n // return Math.pow(ratio, 10)\n // } else {\n // let accuracy = 0.89976 * Math.pow(ratio, 7.7095) + 0.111\n // return accuracy\n // }\n // }\n\n // calculateAngle(p1, p2, p3) {\n // let l1 = Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2),\n // l2 = Math.pow(p2.x - p3.x, 2) + Math.pow(p2.y - p3.y, 2),\n // l3 = Math.pow(p3.x - p1.x, 2) + Math.pow(p3.y - p1.y, 2)\n\n // return Math.acos((l1 + l2 - l3) / Math.sqrt(4 * l1 * l2))\n // }\n\n // averageOfPositions(p) {\n // let sumOfX = 0\n // let sumOfY = 0\n\n // for (let i in p) {\n // let point = p[i]\n // sumOfX += point.x\n // sumOfY += point.y\n // }\n\n // return {\n // x: sumOfX / p.length,\n // y: sumOfY / p.length\n // }\n // }\n\n // k_combinations(set, k) {\n // var i, j, combs, head, tailcombs\n\n // // There is no way to take e.g. sets of 5 elements from\n // // a set of 4.\n // if (k > set.length || k <= 0) {\n // return []\n // }\n\n // // K-sized set has only one K-sized subset.\n // if (k == set.length) {\n // return [set]\n // }\n\n // // There is N 1-sized subsets in a N-sized set.\n // if (k == 1) {\n // combs = []\n // for (i = 0; i < set.length; i++) {\n // combs.push([set[i]])\n // }\n // return combs\n // }\n\n // // Assert {1 < k < set.length}\n\n // // Algorithm description:\n // // To get k-combinations of a set, we want to join each element\n // // with all (k-1)-combinations of the other elements. The set of\n // // these k-sized sets would be the desired result. However, as we\n // // represent sets with lists, we need to take duplicates into\n // // account. To avoid producing duplicates and also unnecessary\n // // computing, we use the following approach: each element i\n // // divides the list into three: the preceding elements, the\n // // current element i, and the subsequent elements. For the first\n // // element, the list of preceding elements is empty. For element i,\n // // we compute the (k-1)-computations of the subsequent elements,\n // // join each with the element i, and store the joined to the set of\n // // computed k-combinations. We do not need to take the preceding\n // // elements into account, because they have already been the i:th\n // // element so they are already computed and stored. When the length\n // // of the subsequent list drops below (k-1), we cannot find any\n // // (k-1)-combs, hence the upper limit for the iteration:\n // combs = []\n // for (i = 0; i < set.length - k + 1; i++) {\n // // head is a list that includes only our current element.\n // head = set.slice(i, i + 1)\n // // We take smaller combinations from the subsequent elements\n // tailcombs = this.k_combinations(set.slice(i + 1), k - 1)\n // // For each (k-1)-combination we join it with the current\n // // and store it to the set of k-combinations.\n // for (j = 0; j < tailcombs.length; j++) {\n // combs.push(head.concat(tailcombs[j]))\n // }\n // }\n // return combs\n // }\n\n // onclick(e) {\n // return\n\n // let point = this.transcoordC2S(e.offsetX, e.offsetY)\n\n // if (this._clickPoint) {\n // this.removeComponent(this._clickPoint)\n // }\n\n // this._clickPoint = Model.compile({\n // type: 'ellipse',\n // cx: point.x,\n // cy: point.y,\n // rx: 10,\n // ry: 10,\n // fillStyle: 'red'\n // })\n\n // this.addComponent(this._clickPoint)\n // this.simulate(point)\n // // let self = this\n // // setTimeout(function() {\n // // self.simulate(point)\n // // }, 500)\n // this.invalidate()\n // }\n}\n\nComponent.register('floor', Floor)\n"]}
1
+ {"version":3,"file":"floor.js","sourceRoot":"","sources":["../src/floor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAI7D,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,UAAU,KAAY;oBAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,MAAmB,CAAA;oBACtC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;oBAC7B,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;gBAC9B,CAAC;aACF;SACF;KACF;CACF,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,SAAS;IAG1C,IAAI,eAAe;QACjB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,OAAO;QACT,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;;OAKG;IACH,IAAI,SAAS;QACX,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;OAIG;IACH,IAAI,SAAS;QACX,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CAsTF;AAED,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, Container } from '@hatiolab/things-scene'\n\nimport IndoorMap from './indoor-map'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'action',\n label: 'remove',\n name: 'remove',\n property: {\n icon: 'remove-circle',\n action: function (floor: Floor) {\n let indoor = floor.parent as IndoorMap\n indoor.removeComponent(floor)\n indoor.set('activeIndex', 0)\n }\n }\n }\n ]\n}\n\nexport default class Floor extends Container {\n private _clickPoint?: Component\n\n get hasTextProperty() {\n return false\n }\n\n get showMoveHandle() {\n return false\n }\n\n /*\n * PATH 리스트를 직접 수정할 수 있는 지를 결정한다.\n *\n * 일반적으로 PATH는 바운드 생성을 위해서 논리적으로 생성되므로, 직접 수정하지 않는다.(return false)\n * 그러나, 각 꼭지점들이 개별로 움직이는 다각형류는 path 라는 모델데이타를 가지므로, 직접수정이 가능할 수 있다.(return true)\n *\n * Immutable 컴포넌트의 형상을 바꾸는 방법은 바운드를 이용한 리사이즈나, 특별한 컨트롤을 통해서 가능하다.\n */\n get mutable() {\n return false\n }\n\n /*\n * BOUND를 통해서 리사이즈를 할 수 있는 지를 결정한다.\n *\n * 일반적으로 면적을 갖는 컴포넌트는 대체로 가능하다.(return true)\n * 그러나, LINE 등 면적을 가지지않는 컴포넌트는 가능하지 않도록 정의한다.(return false)\n */\n get resizable() {\n return false\n }\n\n /*\n * 회전을 할 수 있는 지를 결정한다.\n *\n * 일반적으로 모든 컴포넌트는 가능하다.(return true)\n */\n get rotatable() {\n return false\n }\n\n get nature() {\n return NATURE\n }\n\n // drawLocationMarkers(locations) {\n // for (let uuid in locations) {\n // let locInfo = locations[uuid]\n // let props = locInfo.props || {}\n\n // props.width = props.width || 10\n // props.height = props.height || 10\n\n // let currentTime = new Date().getTime()\n // // let diffTime = 500\n // let diffTime = currentTime - locInfo.lastUpdateTime\n\n // if (diffTime < locInfo.updateInterval) {\n // let movingObject = this.findById(uuid)\n // if (movingObject) {\n // // props.yaw = 0;\n // // props.roll = 0;\n\n // movingObject.set(props)\n // for (let key in props) {\n // movingObject[key] = props[key]\n // }\n // } else {\n // // TODO: marker의 초기값 관련 로직 정리 필요.\n\n // let config = Object.assign(\n // {\n // type: locInfo.type || 'rect',\n // // type: locInfo.type || \"camera\",\n // id: uuid,\n // fillStyle: 'red',\n // left: props.center.x - props.width * 0.5,\n // top: props.center.y - props.height * 0.5,\n // cx: props.center.x,\n // cy: props.center.y\n // },\n // props\n // )\n\n // let marker = Model.compile(config)\n\n // this.addComponent(marker)\n\n // // movingObject = this.findById(uuid)\n // // if(movingObject) {\n // // movingObject.set(props);\n // // }\n // }\n // } else {\n // let movingObject = this.findById(uuid)\n // this.removeComponent(movingObject)\n // }\n\n // this.invalidate()\n // }\n // }\n\n // simulate(point) {\n // // for(let i in this.components) {\n // // if(this.components[i].model.type != 'beacon')\n // // continue;\n // //\n // // let beacon = this.components[i]\n // // let distance = Math.sqrt(Math.pow(beacon.center.x - point.x, 2) + Math.pow(beacon.center.y - point.y, 2)) * 0.01\n // // let rssi = -10 * Math.log10(distance) + (beacon.txPower || -71)\n // //\n // // let randRssi = gaussian(rssi, Math.pow(4.894686948810031, 2))\n // //\n // // rssi = randRssi.ppf(Math.random())\n // //\n // // console.log(rssi);\n // // }\n\n // let beacons: {\n // distance: number;\n // gaussian: number;\n // txPower: number;\n // }[] = []\n\n // for (let i in this.components) {\n // if (this.components[i].model.type != 'beacon') continue\n\n // let beacon = this.components[i]\n\n // beacon.distance = Math.sqrt(\n // Math.pow(beacon.center.x - point.x, 2) +\n // Math.pow(beacon.center.y - point.y, 2)\n // )\n // beacon.gaussian = gaussian(\n // beacon.model.txPower || -71,\n // Math.pow(3.209, 2)\n // )\n // beacon.txPower = beacon.gaussian.ppf(Math.random())\n\n // beacons.push(beacon)\n // }\n\n // beacons = beacons.slice(0)\n\n // this.calculatePosition(beacons, point)\n // }\n\n // calculatePosition(nodeArr, position) {\n // let beacons = nodeArr\n\n // beacons.sort(function(a, b) {\n // let rssiA = -10 * Math.log10(a.distance) + a.txPower\n // let rssiB = -10 * Math.log10(b.distance) + b.txPower\n\n // return Math.abs(rssiA) - Math.abs(rssiB)\n // })\n\n // let beaconCombs = this.k_combinations(beacons.slice(0, 4), 3)\n // let positions = []\n\n // for (let i in beaconCombs) {\n // let beaconComb = beaconCombs[i]\n // let beaconA = beaconComb[0]\n // let beaconB = beaconComb[1]\n // let beaconC = beaconComb[2]\n\n // let xa = beaconA.center.x\n // let ya = beaconA.center.y\n // let xb = beaconB.center.x\n // let yb = beaconB.center.y\n // let xc = beaconC.center.x\n // let yc = beaconC.center.y\n // let ra = beaconA.distance\n // let rb = beaconB.distance\n // let rc = beaconC.distance\n\n // // let ra = Math.sqrt(Math.pow(beaconA.center.x - position.x, 2) + Math.pow(beaconA.center.y - position.y, 2)) * 0.01\n // // let rb = Math.sqrt(Math.pow(beaconB.center.x - position.x, 2) + Math.pow(beaconB.center.y - position.y, 2)) * 0.01\n // // let rc = Math.sqrt(Math.pow(beaconC.center.x - position.x, 2) + Math.pow(beaconC.center.y - position.y, 2)) * 0.01\n\n // let rssiA = -10 * Math.log10(beaconA.distance * 0.01) + beaconA.txPower\n // let rssiB = -10 * Math.log10(beaconB.distance * 0.01) + beaconB.txPower\n // let rssiC = -10 * Math.log10(beaconC.distance * 0.01) + beaconC.txPower\n\n // ra = this.calculateDistance(beaconA.txPower, rssiA) * 100\n // rb = this.calculateDistance(beaconB.txPower, rssiB) * 100\n // rc = this.calculateDistance(beaconC.txPower, rssiC) * 100\n\n // let xaSq = xa * xa,\n // xbSq = xb * xb,\n // xcSq = xc * xc,\n // yaSq = ya * ya,\n // ybSq = yb * yb,\n // ycSq = yc * yc,\n // raSq = ra * ra,\n // rbSq = rb * rb,\n // rcSq = rc * rc\n // let numerator1 =\n // (xb - xa) * (xcSq + ycSq - rcSq) +\n // (xa - xc) * (xbSq + ybSq - rbSq) +\n // (xc - xb) * (xaSq + yaSq - raSq)\n // let denominator1 = 2 * (yc * (xb - xa) + yb * (xa - xc) + ya * (xc - xb))\n // let y = numerator1 / denominator1\n // let numerator2 =\n // rbSq - raSq + xaSq - xbSq + yaSq - ybSq - 2 * (ya - yb) * y\n // let denominator2 = 2 * (xa - xb)\n // let x = numerator2 / denominator2\n\n // if (Number.isFinite(x) && Number.isFinite(y)) {\n // positions.push({\n // x: x,\n // y: y\n // })\n // }\n // }\n\n // let avgPosition = this.averageOfPositions(positions)\n\n // if (this._simPosition) this.removeComponent(this._simPosition)\n\n // this._simPosition = Model.compile({\n // type: 'ellipse',\n // cx: avgPosition.x,\n // cy: avgPosition.y,\n // rx: 10,\n // ry: 10,\n // fillStyle: 'navy'\n // })\n\n // this.addComponent(this._simPosition)\n // }\n\n // calculateDistance(txPower, rssi) {\n // if (rssi == 0) {\n // return -1.0 // if we cannot determine distance, return -1.\n // }\n\n // let ratio = (rssi * 1.0) / txPower\n // if (ratio < 1.0) {\n // return Math.pow(ratio, 10)\n // } else {\n // let accuracy = 0.89976 * Math.pow(ratio, 7.7095) + 0.111\n // return accuracy\n // }\n // }\n\n // calculateAngle(p1, p2, p3) {\n // let l1 = Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2),\n // l2 = Math.pow(p2.x - p3.x, 2) + Math.pow(p2.y - p3.y, 2),\n // l3 = Math.pow(p3.x - p1.x, 2) + Math.pow(p3.y - p1.y, 2)\n\n // return Math.acos((l1 + l2 - l3) / Math.sqrt(4 * l1 * l2))\n // }\n\n // averageOfPositions(p) {\n // let sumOfX = 0\n // let sumOfY = 0\n\n // for (let i in p) {\n // let point = p[i]\n // sumOfX += point.x\n // sumOfY += point.y\n // }\n\n // return {\n // x: sumOfX / p.length,\n // y: sumOfY / p.length\n // }\n // }\n\n // k_combinations(set, k) {\n // var i, j, combs, head, tailcombs\n\n // // There is no way to take e.g. sets of 5 elements from\n // // a set of 4.\n // if (k > set.length || k <= 0) {\n // return []\n // }\n\n // // K-sized set has only one K-sized subset.\n // if (k == set.length) {\n // return [set]\n // }\n\n // // There is N 1-sized subsets in a N-sized set.\n // if (k == 1) {\n // combs = []\n // for (i = 0; i < set.length; i++) {\n // combs.push([set[i]])\n // }\n // return combs\n // }\n\n // // Assert {1 < k < set.length}\n\n // // Algorithm description:\n // // To get k-combinations of a set, we want to join each element\n // // with all (k-1)-combinations of the other elements. The set of\n // // these k-sized sets would be the desired result. However, as we\n // // represent sets with lists, we need to take duplicates into\n // // account. To avoid producing duplicates and also unnecessary\n // // computing, we use the following approach: each element i\n // // divides the list into three: the preceding elements, the\n // // current element i, and the subsequent elements. For the first\n // // element, the list of preceding elements is empty. For element i,\n // // we compute the (k-1)-computations of the subsequent elements,\n // // join each with the element i, and store the joined to the set of\n // // computed k-combinations. We do not need to take the preceding\n // // elements into account, because they have already been the i:th\n // // element so they are already computed and stored. When the length\n // // of the subsequent list drops below (k-1), we cannot find any\n // // (k-1)-combs, hence the upper limit for the iteration:\n // combs = []\n // for (i = 0; i < set.length - k + 1; i++) {\n // // head is a list that includes only our current element.\n // head = set.slice(i, i + 1)\n // // We take smaller combinations from the subsequent elements\n // tailcombs = this.k_combinations(set.slice(i + 1), k - 1)\n // // For each (k-1)-combination we join it with the current\n // // and store it to the set of k-combinations.\n // for (j = 0; j < tailcombs.length; j++) {\n // combs.push(head.concat(tailcombs[j]))\n // }\n // }\n // return combs\n // }\n\n // onclick(e) {\n // return\n\n // let point = this.transcoordC2S(e.offsetX, e.offsetY)\n\n // if (this._clickPoint) {\n // this.removeComponent(this._clickPoint)\n // }\n\n // this._clickPoint = Model.compile({\n // type: 'ellipse',\n // cx: point.x,\n // cy: point.y,\n // rx: 10,\n // ry: 10,\n // fillStyle: 'red'\n // })\n\n // this.addComponent(this._clickPoint)\n // this.simulate(point)\n // // let self = this\n // // setTimeout(function() {\n // // self.simulate(point)\n // // }, 500)\n // this.invalidate()\n // }\n}\n\nComponent.register('floor', Floor)\n"]}
@@ -1,4 +1,4 @@
1
- import { Container } from '@hatiolab/things-scene';
1
+ import { Container, State } from '@hatiolab/things-scene';
2
2
  import Floor from './floor';
3
3
  export default class IndoorMap extends Container {
4
4
  private _focused;
@@ -7,7 +7,7 @@ export default class IndoorMap extends Container {
7
7
  mutable: boolean;
8
8
  resizable: boolean;
9
9
  rotatable: boolean;
10
- properties: {
10
+ properties: ({
11
11
  type: string;
12
12
  label: string;
13
13
  name: string;
@@ -15,19 +15,23 @@ export default class IndoorMap extends Container {
15
15
  icon: string;
16
16
  action: (indoorMap: IndoorMap) => void;
17
17
  };
18
- }[];
18
+ } | {
19
+ type: string;
20
+ label: string;
21
+ name: string;
22
+ property?: undefined;
23
+ })[];
19
24
  'value-property': string;
20
25
  help: string;
21
26
  };
22
27
  get layout(): import("@hatiolab/things-scene").LAYOUT;
23
- get activeIndex(): any;
24
- set activeIndex(index: any);
25
28
  get layoutConfig(): any;
26
29
  set layoutConfig(config: any);
27
30
  get activeFloor(): Floor;
28
31
  ready(): void;
29
32
  postrender(context: CanvasRenderingContext2D): void;
30
33
  contains(x: number, y: number): boolean;
34
+ onchange(after: State): void;
31
35
  onmouseup(e: MouseEvent): void;
32
36
  onmousedown(e: MouseEvent): void;
33
37
  addFloor(): void;
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
- import { CardLayout, Component, Container, Model, } from '@hatiolab/things-scene';
4
+ import { CardLayout, Component, Container, Model } from '@hatiolab/things-scene';
5
5
  const LABEL_WIDTH = 25;
6
6
  const LABEL_HEIGHT = 25;
7
7
  function rgba(r, g, b, a) {
@@ -22,6 +22,11 @@ const NATURE = {
22
22
  indoorMap.addFloor();
23
23
  }
24
24
  }
25
+ },
26
+ {
27
+ type: 'number',
28
+ label: 'active index',
29
+ name: 'activeIndex'
25
30
  }
26
31
  ],
27
32
  'value-property': 'activeIndex',
@@ -31,10 +36,6 @@ export default class IndoorMap extends Container {
31
36
  constructor() {
32
37
  super(...arguments);
33
38
  this._focused = false;
34
- // drawLocationMarkers(locations) {
35
- // let floor = this.activeFloor
36
- // floor.drawLocationMarkers(locations)
37
- // }
38
39
  }
39
40
  get nature() {
40
41
  return NATURE;
@@ -42,15 +43,6 @@ export default class IndoorMap extends Container {
42
43
  get layout() {
43
44
  return CardLayout;
44
45
  }
45
- get activeIndex() {
46
- var config = Object.assign({}, this.layoutConfig);
47
- return config.activeIndex;
48
- }
49
- set activeIndex(index) {
50
- var config = Object.assign({}, this.layoutConfig);
51
- config.activeIndex = index;
52
- this.layoutConfig = config;
53
- }
54
46
  get layoutConfig() {
55
47
  return this.get('layoutConfig');
56
48
  }
@@ -66,29 +58,27 @@ export default class IndoorMap extends Container {
66
58
  this.addFloor();
67
59
  }
68
60
  postrender(context) {
69
- super.postrender(context);
70
- if (this.app.isViewMode)
71
- return;
72
- if (!this._focused)
73
- return;
74
- var { left, top, width, fillStyle } = this.model;
75
- // floor 선택 그리기
76
- for (let i = 0; i < this.components.length; i++) {
61
+ if (!this.app.isViewMode && this._focused) {
62
+ var { left, top, width, fillStyle } = this.model;
63
+ // floor 선택 탭 그리기
64
+ for (let i = 0; i < this.components.length; i++) {
65
+ context.beginPath();
66
+ context.rect(left - LABEL_WIDTH, top + i * LABEL_HEIGHT, LABEL_WIDTH, LABEL_HEIGHT);
67
+ let color = 255 - ((20 * (i + 1)) % 255);
68
+ context.fillStyle = rgba(color, color, color, 1);
69
+ context.fill();
70
+ context.closePath();
71
+ }
77
72
  context.beginPath();
78
- context.rect(left - LABEL_WIDTH, top + i * LABEL_HEIGHT, LABEL_WIDTH, LABEL_HEIGHT);
79
- let color = 255 - ((20 * (i + 1)) % 255);
80
- context.fillStyle = rgba(color, color, color, 1);
81
- context.fill();
73
+ context.moveTo(left, top);
74
+ context.lineTo(left - LABEL_WIDTH, top);
75
+ context.lineTo(left - LABEL_WIDTH, top + this.components.length * LABEL_HEIGHT);
76
+ context.lineTo(left, top + this.components.length * LABEL_HEIGHT);
77
+ context.strokeStyle = '#ccc';
78
+ context.stroke();
82
79
  context.closePath();
83
80
  }
84
- context.beginPath();
85
- context.moveTo(left, top);
86
- context.lineTo(left - LABEL_WIDTH, top);
87
- context.lineTo(left - LABEL_WIDTH, top + this.components.length * LABEL_HEIGHT);
88
- context.lineTo(left, top + this.components.length * LABEL_HEIGHT);
89
- context.strokeStyle = '#ccc';
90
- context.stroke();
91
- context.closePath();
81
+ super.postrender(context);
92
82
  }
93
83
  contains(x, y) {
94
84
  var contains = super.contains(x, y);
@@ -110,6 +100,14 @@ export default class IndoorMap extends Container {
110
100
  this.invalidate();
111
101
  return contains;
112
102
  }
103
+ onchange(after) {
104
+ if ('activeIndex' in after) {
105
+ this.layoutConfig = {
106
+ ...this.layoutConfig,
107
+ activeIndex: after.activeIndex
108
+ };
109
+ }
110
+ }
113
111
  onmouseup(e) {
114
112
  var down_point = this.__down_point;
115
113
  delete this.__down_point;
@@ -136,7 +134,7 @@ export default class IndoorMap extends Container {
136
134
  // height: 100
137
135
  // }))
138
136
  // }
139
- this.activeIndex = y;
137
+ this.set('activeIndex', y);
140
138
  }
141
139
  onmousedown(e) {
142
140
  this.__down_point = {
@@ -154,7 +152,7 @@ export default class IndoorMap extends Container {
154
152
  height: 100
155
153
  });
156
154
  this.addComponent(floor);
157
- this.activeIndex = this.components.length - 1;
155
+ this.set('activeIndex', this.components.length - 1);
158
156
  }
159
157
  }
160
158
  Component.register('indoor-map', IndoorMap);
@@ -1 +1 @@
1
- {"version":3,"file":"indoor-map.js","sourceRoot":"","sources":["../src/indoor-map.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport {\n CardLayout,\n Component,\n Container,\n Model,\n POINT,\n} from '@hatiolab/things-scene';\n\nimport Floor from './floor';\n\nconst LABEL_WIDTH = 25\nconst LABEL_HEIGHT = 25\n\nfunction rgba(r: number, g: number, b: number, a: number) {\n return `rgba(${r}, ${g}, ${b}, ${a})`\n}\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'action',\n label: 'floor',\n name: 'floor',\n property: {\n icon: 'add-circle',\n action: (indoorMap: IndoorMap) => {\n indoorMap.addFloor()\n }\n }\n }\n ],\n 'value-property': 'activeIndex',\n help: 'scene/component/indoor-map'\n}\n\nexport default class IndoorMap extends Container {\n private _focused: boolean = false\n private __down_point?: POINT\n\n get nature() {\n return NATURE\n }\n\n get layout() {\n return CardLayout\n }\n\n get activeIndex() {\n var config = Object.assign({}, this.layoutConfig)\n return config.activeIndex\n }\n\n set activeIndex(index) {\n var config = Object.assign({}, this.layoutConfig)\n config.activeIndex = index\n this.layoutConfig = config\n }\n\n get layoutConfig() {\n return this.get('layoutConfig')\n }\n\n set layoutConfig(config) {\n this.set('layoutConfig', config)\n }\n\n get activeFloor(): Floor {\n return this.components[this.get('layoutConfig').activeIndex] as Floor\n }\n\n ready() {\n super.ready()\n\n if (this.components.length == 0) this.addFloor()\n }\n\n postrender(context: CanvasRenderingContext2D) {\n super.postrender(context)\n\n if (this.app.isViewMode) return\n\n if (!this._focused) return\n\n var { left, top, width, fillStyle } = this.model\n\n // floor 선택 탭 그리기\n for (let i = 0; i < this.components.length; i++) {\n context.beginPath()\n\n context.rect(\n left - LABEL_WIDTH,\n top + i * LABEL_HEIGHT,\n LABEL_WIDTH,\n LABEL_HEIGHT\n )\n\n let color = 255 - ((20 * (i + 1)) % 255)\n context.fillStyle = rgba(color, color, color, 1)\n context.fill()\n\n context.closePath()\n }\n\n context.beginPath()\n\n context.moveTo(left, top)\n context.lineTo(left - LABEL_WIDTH, top)\n context.lineTo(\n left - LABEL_WIDTH,\n top + this.components.length * LABEL_HEIGHT\n )\n context.lineTo(left, top + this.components.length * LABEL_HEIGHT)\n\n context.strokeStyle = '#ccc'\n context.stroke()\n\n context.closePath()\n }\n\n contains(x: number, y: number) {\n var contains = super.contains(x, y)\n\n if (this.app.isViewMode) return contains\n\n var { left, top, width } = this.bounds\n var h = LABEL_HEIGHT\n\n contains =\n contains ||\n // card selector 영역에 포함되는지\n (x < Math.max(left - LABEL_WIDTH, left) &&\n x > Math.min(left - LABEL_WIDTH, left) &&\n y < Math.max(top + h * this.size(), top) &&\n y > Math.min(top + h * this.size(), top))\n\n if (contains) this._focused = true\n else this._focused = false\n\n this.invalidate()\n return contains\n }\n\n onmouseup(e: MouseEvent) {\n var down_point = this.__down_point\n delete this.__down_point\n\n if (!down_point || down_point.x != e.offsetX || down_point.y != e.offsetY) {\n return\n }\n\n var point = this.transcoordC2S(e.offsetX, e.offsetY)\n\n var { left, top } = this.model\n\n var x = point.x - left\n var y = point.y - top\n\n if (x > 0) return\n\n y /= LABEL_HEIGHT\n y = Math.floor(y)\n\n if (!this.layoutConfig) this.layoutConfig = {}\n\n if (y >= this.components.length) return\n\n // /* 생성 버튼이 클릭되면, 새로운 floor를 추가한다. */\n // if(y == this.components.length) {\n // this.add(Model.compile({\n // type: 'floor',\n // width: 100,\n // height: 100\n // }))\n // }\n this.activeIndex = y\n }\n\n onmousedown(e: MouseEvent) {\n this.__down_point = {\n x: e.offsetX,\n y: e.offsetY\n }\n }\n\n addFloor() {\n let floor = Model.compile({\n type: 'floor',\n fillStyle: 'gray',\n top: 0,\n left: 0,\n width: 100,\n height: 100\n })\n\n this.addComponent(floor)\n this.activeIndex = this.components.length - 1\n }\n\n // drawLocationMarkers(locations) {\n // let floor = this.activeFloor\n // floor.drawLocationMarkers(locations)\n // }\n}\n\nComponent.register('indoor-map', IndoorMap)\n"]}
1
+ {"version":3,"file":"indoor-map.js","sourceRoot":"","sources":["../src/indoor-map.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { CardLayout, Component, Container, Model, POINT, State } from '@hatiolab/things-scene'\n\nimport Floor from './floor'\n\nconst LABEL_WIDTH = 25\nconst LABEL_HEIGHT = 25\n\nfunction rgba(r: number, g: number, b: number, a: number) {\n return `rgba(${r}, ${g}, ${b}, ${a})`\n}\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'action',\n label: 'floor',\n name: 'floor',\n property: {\n icon: 'add-circle',\n action: (indoorMap: IndoorMap) => {\n indoorMap.addFloor()\n }\n }\n },\n {\n type: 'number',\n label: 'active index',\n name: 'activeIndex'\n }\n ],\n 'value-property': 'activeIndex',\n help: 'scene/component/indoor-map'\n}\n\nexport default class IndoorMap extends Container {\n private _focused: boolean = false\n private __down_point?: POINT\n\n get nature() {\n return NATURE\n }\n\n get layout() {\n return CardLayout\n }\n\n get layoutConfig() {\n return this.get('layoutConfig')\n }\n\n set layoutConfig(config) {\n this.set('layoutConfig', config)\n }\n\n get activeFloor(): Floor {\n return this.components[this.get('layoutConfig').activeIndex] as Floor\n }\n\n ready() {\n super.ready()\n\n if (this.components.length == 0) this.addFloor()\n }\n\n postrender(context: CanvasRenderingContext2D) {\n if (!this.app.isViewMode && this._focused) {\n var { left, top, width, fillStyle } = this.model\n\n // floor 선택 탭 그리기\n for (let i = 0; i < this.components.length; i++) {\n context.beginPath()\n\n context.rect(left - LABEL_WIDTH, top + i * LABEL_HEIGHT, LABEL_WIDTH, LABEL_HEIGHT)\n\n let color = 255 - ((20 * (i + 1)) % 255)\n context.fillStyle = rgba(color, color, color, 1)\n context.fill()\n\n context.closePath()\n }\n\n context.beginPath()\n\n context.moveTo(left, top)\n context.lineTo(left - LABEL_WIDTH, top)\n context.lineTo(left - LABEL_WIDTH, top + this.components.length * LABEL_HEIGHT)\n context.lineTo(left, top + this.components.length * LABEL_HEIGHT)\n\n context.strokeStyle = '#ccc'\n context.stroke()\n\n context.closePath()\n }\n\n super.postrender(context)\n }\n\n contains(x: number, y: number) {\n var contains = super.contains(x, y)\n\n if (this.app.isViewMode) return contains\n\n var { left, top, width } = this.bounds\n var h = LABEL_HEIGHT\n\n contains =\n contains ||\n // card selector 영역에 포함되는지\n (x < Math.max(left - LABEL_WIDTH, left) &&\n x > Math.min(left - LABEL_WIDTH, left) &&\n y < Math.max(top + h * this.size(), top) &&\n y > Math.min(top + h * this.size(), top))\n\n if (contains) this._focused = true\n else this._focused = false\n\n this.invalidate()\n return contains\n }\n\n onchange(after: State) {\n if ('activeIndex' in after) {\n this.layoutConfig = {\n ...this.layoutConfig,\n activeIndex: after.activeIndex\n }\n }\n }\n\n onmouseup(e: MouseEvent) {\n var down_point = this.__down_point\n delete this.__down_point\n\n if (!down_point || down_point.x != e.offsetX || down_point.y != e.offsetY) {\n return\n }\n\n var point = this.transcoordC2S(e.offsetX, e.offsetY)\n\n var { left, top } = this.model\n\n var x = point.x - left\n var y = point.y - top\n\n if (x > 0) return\n\n y /= LABEL_HEIGHT\n y = Math.floor(y)\n\n if (!this.layoutConfig) this.layoutConfig = {}\n\n if (y >= this.components.length) return\n\n // /* 생성 버튼이 클릭되면, 새로운 floor를 추가한다. */\n // if(y == this.components.length) {\n // this.add(Model.compile({\n // type: 'floor',\n // width: 100,\n // height: 100\n // }))\n // }\n this.set('activeIndex', y)\n }\n\n onmousedown(e: MouseEvent) {\n this.__down_point = {\n x: e.offsetX,\n y: e.offsetY\n }\n }\n\n addFloor() {\n let floor = Model.compile({\n type: 'floor',\n fillStyle: 'gray',\n top: 0,\n left: 0,\n width: 100,\n height: 100\n })\n\n this.addComponent(floor)\n this.set('activeIndex', this.components.length - 1)\n }\n}\n\nComponent.register('indoor-map', IndoorMap)\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@operato/scene-indoor-map",
3
- "version": "0.0.17",
3
+ "version": "0.0.18",
4
4
  "description": "Indoor Map component for things-scene.",
5
5
  "license": "MIT",
6
6
  "author": "heartyoh",
@@ -31,8 +31,8 @@
31
31
  "devDependencies": {
32
32
  "@hatiolab/prettier-config": "^1.0.0",
33
33
  "@operato/board": "^0.2.45",
34
- "@things-factory/builder": "^4.0.12",
35
- "@things-factory/operato-board": "^4.0.12",
34
+ "@things-factory/builder": "^4.0.13",
35
+ "@things-factory/operato-board": "^4.0.13",
36
36
  "@typescript-eslint/eslint-plugin": "^4.33.0",
37
37
  "@typescript-eslint/parser": "^4.33.0",
38
38
  "@web/dev-server": "^0.1.28",
@@ -57,5 +57,5 @@
57
57
  "prettier --write"
58
58
  ]
59
59
  },
60
- "gitHead": "73c1f297d63e6a7c92516c206bcce3f5310c77ee"
60
+ "gitHead": "df5990dadb9e9933e69b56810c179dc079eabd0e"
61
61
  }
@@ -1,11 +1,12 @@
1
1
  /*
2
2
  * Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
- import ActionEditor from './things-editor-action'
4
+
5
+ import './things-editor-action'
5
6
 
6
7
  export default [
7
8
  {
8
9
  type: 'action',
9
- element: ActionEditor.is
10
+ element: 'things-editor-action'
10
11
  }
11
12
  ]
@@ -1,48 +1,49 @@
1
1
  /*
2
2
  * Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
+
5
+ import { Component, Properties } from '@hatiolab/things-scene'
4
6
  import { css, html } from 'lit'
5
7
 
6
- import { Properties } from '@hatiolab/things-scene'
7
8
  import { OxPropertyEditor } from '@operato/property-editor'
9
+ import { customElement } from 'lit/decorators.js'
8
10
 
11
+ @customElement('things-editor-action')
9
12
  export default class ThingsEditorAction extends OxPropertyEditor {
10
- static get is() {
11
- return 'things-editor-action'
12
- }
13
-
14
- static get styles() {
15
- return [
16
- ...OxPropertyEditor.styles,
17
- css`
18
- :host > label {
19
- display: flex;
20
- grid-column: span 3;
21
- order: 1;
22
- align-items: center;
23
- justify-self: right;
24
- }
25
- `
26
- ]
27
- }
13
+ static styles = [
14
+ ...OxPropertyEditor.styles,
15
+ css`
16
+ :host > label {
17
+ display: flex;
18
+ grid-column: span 3;
19
+ order: 1;
20
+ align-items: center;
21
+ justify-self: right;
22
+ }
23
+ `
24
+ ]
28
25
 
29
26
  editorTemplate(props: Properties) {
30
27
  var property = props.property || {}
31
28
  var { icon, action } = property
29
+
32
30
  return html`
33
31
  <paper-icon-button
34
32
  .icon=${icon}
35
- @click=${(e: MouseEvent) =>
33
+ @click=${(e: MouseEvent) => {
36
34
  this.dispatchEvent(
37
- new CustomEvent('action-editor-clicked', {
35
+ new CustomEvent('i-need-selected', {
38
36
  bubbles: true,
39
37
  composed: true,
40
- detail: action
38
+ detail: {
39
+ callback: (selected: Component[]) => {
40
+ typeof action === 'function' && action(selected[0])
41
+ }
42
+ }
41
43
  })
42
- )}
44
+ )
45
+ }}
43
46
  ></paper-icon-button>
44
47
  `
45
48
  }
46
49
  }
47
-
48
- customElements.define(ThingsEditorAction.is, ThingsEditorAction)
package/src/floor.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
- import { Component, Container } from '@hatiolab/things-scene';
4
+ import { Component, Container } from '@hatiolab/things-scene'
5
5
 
6
- import IndoorMap from './indoor-map';
6
+ import IndoorMap from './indoor-map'
7
7
 
8
8
  const NATURE = {
9
9
  mutable: false,
@@ -16,11 +16,10 @@ const NATURE = {
16
16
  name: 'remove',
17
17
  property: {
18
18
  icon: 'remove-circle',
19
- action: function(floor: Floor) {
19
+ action: function (floor: Floor) {
20
20
  let indoor = floor.parent as IndoorMap
21
21
  indoor.removeComponent(floor)
22
- indoor.activeIndex = 0
23
- indoor.invalidate()
22
+ indoor.set('activeIndex', 0)
24
23
  }
25
24
  }
26
25
  }
package/src/indoor-map.ts CHANGED
@@ -1,15 +1,9 @@
1
1
  /*
2
2
  * Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
- import {
5
- CardLayout,
6
- Component,
7
- Container,
8
- Model,
9
- POINT,
10
- } from '@hatiolab/things-scene';
4
+ import { CardLayout, Component, Container, Model, POINT, State } from '@hatiolab/things-scene'
11
5
 
12
- import Floor from './floor';
6
+ import Floor from './floor'
13
7
 
14
8
  const LABEL_WIDTH = 25
15
9
  const LABEL_HEIGHT = 25
@@ -33,6 +27,11 @@ const NATURE = {
33
27
  indoorMap.addFloor()
34
28
  }
35
29
  }
30
+ },
31
+ {
32
+ type: 'number',
33
+ label: 'active index',
34
+ name: 'activeIndex'
36
35
  }
37
36
  ],
38
37
  'value-property': 'activeIndex',
@@ -51,17 +50,6 @@ export default class IndoorMap extends Container {
51
50
  return CardLayout
52
51
  }
53
52
 
54
- get activeIndex() {
55
- var config = Object.assign({}, this.layoutConfig)
56
- return config.activeIndex
57
- }
58
-
59
- set activeIndex(index) {
60
- var config = Object.assign({}, this.layoutConfig)
61
- config.activeIndex = index
62
- this.layoutConfig = config
63
- }
64
-
65
53
  get layoutConfig() {
66
54
  return this.get('layoutConfig')
67
55
  }
@@ -81,46 +69,36 @@ export default class IndoorMap extends Container {
81
69
  }
82
70
 
83
71
  postrender(context: CanvasRenderingContext2D) {
84
- super.postrender(context)
72
+ if (!this.app.isViewMode && this._focused) {
73
+ var { left, top, width, fillStyle } = this.model
74
+
75
+ // floor 선택 탭 그리기
76
+ for (let i = 0; i < this.components.length; i++) {
77
+ context.beginPath()
85
78
 
86
- if (this.app.isViewMode) return
79
+ context.rect(left - LABEL_WIDTH, top + i * LABEL_HEIGHT, LABEL_WIDTH, LABEL_HEIGHT)
87
80
 
88
- if (!this._focused) return
81
+ let color = 255 - ((20 * (i + 1)) % 255)
82
+ context.fillStyle = rgba(color, color, color, 1)
83
+ context.fill()
89
84
 
90
- var { left, top, width, fillStyle } = this.model
85
+ context.closePath()
86
+ }
91
87
 
92
- // floor 선택 탭 그리기
93
- for (let i = 0; i < this.components.length; i++) {
94
88
  context.beginPath()
95
89
 
96
- context.rect(
97
- left - LABEL_WIDTH,
98
- top + i * LABEL_HEIGHT,
99
- LABEL_WIDTH,
100
- LABEL_HEIGHT
101
- )
90
+ context.moveTo(left, top)
91
+ context.lineTo(left - LABEL_WIDTH, top)
92
+ context.lineTo(left - LABEL_WIDTH, top + this.components.length * LABEL_HEIGHT)
93
+ context.lineTo(left, top + this.components.length * LABEL_HEIGHT)
102
94
 
103
- let color = 255 - ((20 * (i + 1)) % 255)
104
- context.fillStyle = rgba(color, color, color, 1)
105
- context.fill()
95
+ context.strokeStyle = '#ccc'
96
+ context.stroke()
106
97
 
107
98
  context.closePath()
108
99
  }
109
100
 
110
- context.beginPath()
111
-
112
- context.moveTo(left, top)
113
- context.lineTo(left - LABEL_WIDTH, top)
114
- context.lineTo(
115
- left - LABEL_WIDTH,
116
- top + this.components.length * LABEL_HEIGHT
117
- )
118
- context.lineTo(left, top + this.components.length * LABEL_HEIGHT)
119
-
120
- context.strokeStyle = '#ccc'
121
- context.stroke()
122
-
123
- context.closePath()
101
+ super.postrender(context)
124
102
  }
125
103
 
126
104
  contains(x: number, y: number) {
@@ -146,6 +124,15 @@ export default class IndoorMap extends Container {
146
124
  return contains
147
125
  }
148
126
 
127
+ onchange(after: State) {
128
+ if ('activeIndex' in after) {
129
+ this.layoutConfig = {
130
+ ...this.layoutConfig,
131
+ activeIndex: after.activeIndex
132
+ }
133
+ }
134
+ }
135
+
149
136
  onmouseup(e: MouseEvent) {
150
137
  var down_point = this.__down_point
151
138
  delete this.__down_point
@@ -178,7 +165,7 @@ export default class IndoorMap extends Container {
178
165
  // height: 100
179
166
  // }))
180
167
  // }
181
- this.activeIndex = y
168
+ this.set('activeIndex', y)
182
169
  }
183
170
 
184
171
  onmousedown(e: MouseEvent) {
@@ -199,13 +186,8 @@ export default class IndoorMap extends Container {
199
186
  })
200
187
 
201
188
  this.addComponent(floor)
202
- this.activeIndex = this.components.length - 1
189
+ this.set('activeIndex', this.components.length - 1)
203
190
  }
204
-
205
- // drawLocationMarkers(locations) {
206
- // let floor = this.activeFloor
207
- // floor.drawLocationMarkers(locations)
208
- // }
209
191
  }
210
192
 
211
193
  Component.register('indoor-map', IndoorMap)
@@ -0,0 +1,3 @@
1
+ {
2
+ "label.active index": "active index"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "label.active index": "활성 페이지"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "label.active index": "[ms] active index"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "label.active index": "[zh] active index"
3
+ }
@@ -1 +1 @@
1
- {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","./@types/global/index.d.ts","../../node_modules/tslib/tslib.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/@hatiolab/things-scene/things-scene.d.ts","./src/beacon.ts","./src/quaternion.ts","./src/camera.ts","./src/indoor-map.ts","./src/floor.ts","./src/rack.ts","./src/index.ts","../../node_modules/@lit/reactive-element/css-tag.d.ts","../../node_modules/@lit/reactive-element/reactive-controller.d.ts","../../node_modules/@lit/reactive-element/reactive-element.d.ts","../../node_modules/@types/trusted-types/lib/index.d.ts","../../node_modules/@types/trusted-types/index.d.ts","../../node_modules/lit-html/directive.d.ts","../../node_modules/lit-html/lit-html.d.ts","../../node_modules/lit-element/lit-element.d.ts","../../node_modules/lit/index.d.ts","../../node_modules/@operato/property-editor/dist/src/ox-property-editor.d.ts","../../node_modules/@operato/property-editor/dist/src/index.d.ts","./src/editors/things-editor-action.ts","./src/editors/index.ts","./src/templates/beacon.ts","./src/templates/camera.ts","./src/templates/indoor-map.ts","./src/templates/rack.ts","./src/templates/index.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"6adbf5efd0e374ff5f427a4f26a5a413e9734eee5067a0e86da69aea41910b52","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"abba1071bfd89e55e88a054b0c851ea3e8a494c340d0f3fab19eb18f6afb0c9e","affectsGlobalScope":true},{"version":"d8996609230d17e90484a2dd58f22668f9a05a3bfe00bfb1d6271171e54a31fb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"4378fc8122ec9d1a685b01eb66c46f62aba6b239ca7228bb6483bcf8259ee493","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"d071129cba6a5f2700be09c86c07ad2791ab67d4e5ed1eb301d6746c62745ea4","affectsGlobalScope":true},{"version":"10bbdc1981b8d9310ee75bfac28ee0477bb2353e8529da8cff7cb26c409cb5e8","affectsGlobalScope":true},"c4f5f288a2b8dcfb6183e29612ec26b7a049314a6a10b7e6e700a8307077455a","12f4cfe2fe60b810c3174537bc2ddb20c1067b7768643d12cb1266fd183afb75","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","378df8bbbb9e3f6fca05d58f644aab538e1062eab5e778fb0b83d41125df246d","d88a479cccf787b4aa82362150fbeba5211a32dbfafa7b92ba6995ecaf9a1a89","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","6ac6f24aff52e62c3950461aa17eab26e3a156927858e6b654baef0058b4cd1e",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"164d1757bd87742690d8c75b9ceeee0ab5aef37054b9c1c7f4cfce240c9c6f11","76395d012a9988aec73b86e6bcabb9ddf7e0b3edc7621615aac620aeebcfb558","8846e9ec615004e255a9aac0056071d9f2e8dedf4e391c4dd308d793db2f5744","005f56f0650768db0a1326a3bf7f3e5be1346152d12825162804cc6b1c0e673c","199065a9ea9449bf8177a7b4a19337eb5a8da409e214ad8efa9e7cd7d3ced190","b6ed5ce407d26b7d0d364b2eea58a68837557da3af4e14212145a3e8496b7a57","6da970129f66ae6cec3bc4910447772f96de476b50d8d31fcc9b4461d1d06934","73801edd15e5b7d77e0c3159a9a5f5ae506a0631893faaa0e4deb89f83630386","0c8a56610b08f55e29ffb466cd27626ad6dbe822312a398026e82270c63088e3","1e5743b25a63fd34ffbae89adcbf248ee17db6ed08d90079ffa93803c3e80d2a","7b33ee85f2e96a51c0e3bcee47b247a24515aff37a7d8b5dfe4e18b735d37440","2fcd2d22b1f30555e785105597cd8f57ed50300e213c4f1bbca6ae149f782c38",{"version":"bb4248c7f953233ac52332088fac897d62b82be07244e551d87c5049600b6cf7","affectsGlobalScope":true},"70f04c91d3186b1b10157157887fab664968fc9b88377785a5ee42750c202c6d","06e20da1bc94df355f22ac7a9533c2488816ec4cb9134d9b160a263629a07072","c311ef8d8b159d0c268b415f78c1949498dc2d14455a9891c5b8ef84625b1e41","f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d","48997560f6ca5fd8b4233b69d1f9cbac88d26719e925fff493fdebb5198b675f","a1045a03e654de1219e85600f7589af7a91e4ac37e2aff114f2ceba34111d34d","48d697d00cbdd0df5728773969a65c1f486daafcf2077871f8cc5fed66ea4014","fbe3e5003a3945114b1175a5547d4bfa7c09bf73be03c283107f31a25d53df26","2d36e6d5a7c99088290a15d860da0337d38833f90065c1def71921f0a64c48fb","fc9a059f93763e55a69b998866523b9070ee4f7f94448158402c9923e8417ef2","22328737737440b1243c57219bad62697ab9e0d71d043cbddb582fc07d5ccfa3","9cc266f7c0e6f95ffccef901a73a3317648b03beda79db2de55f3648880a479d","2459a79823f59c1d0b6a77660f636e6aae91e4270e25296aa534bc524c7b96d0","0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"92d63add669d18ebc349efbacd88966d6f2ccdddfb1b880b2db98ae3aa7bf7c4","affectsGlobalScope":true},"ccc94049a9841fe47abe5baef6be9a38fc6228807974ae675fb15dc22531b4be",{"version":"9acfe4d1ff027015151ce81d60797b04b52bffe97ad8310bb0ec2e8fd61e1303","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","2f520601649a893e6a49a8851ebfcf4be8ce090dc1281c2a08a871cb04e8251f","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","2b8c764f856a1dd0a9a2bf23e5efddbff157de8138b0754010be561ae5fcaa90","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","6972fca26f6e9bd56197568d4379f99071a90766e06b4fcb5920a0130a9202be",{"version":"4a2628e95962c8ab756121faa3ac2ed348112ff7a87b5c286dd2cc3326546b4c","affectsGlobalScope":true},"80793b2277f31baa199234daed806fff0fb11491d1ebd3357e520c3558063f00","a049a59a02009fc023684fcfaf0ac526fe36c35dcc5d2b7d620c1750ba11b083","5533392c50c51b1a5c32b89f13145db929c574ef1c5949cf67a074a05ea107d9","b287b810b5035d5685f1df6e1e418f1ca452a3ed4f59fd5cc081dbf2045f0d9b","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","a458dc78104cc80048ac24fdc02fe6dce254838094c2f25641b3f954d9721241",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"902cd98bf46e95caf4118a0733fb801e9e90eec3edaed6abdad77124afec9ca2","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","cd4854d38f4eb5592afd98ab95ca17389a7dfe38013d9079e802d739bdbcc939","94eed4cc2f5f658d5e229ff1ccd38860bddf4233e347bf78edd2154dee1f2b99",{"version":"bd1a08e30569b0fb2f0b21035eb9b039871f68faa9b98accf847e9c878c5e0a9","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","d7838022c7dab596357a9604b9c6adffe37dc34085ce0779c958ce9545bd7139","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"a7971f9fb2a32ec7788ec6cda9d7a33c02023dfe9a62db2030ad1359649d8050","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"b42b47e17b8ece2424ae8039feb944c2e3ba4b262986aebd582e51efbdca93dc","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","2408611d9b4146e35d1dbd1f443ccd8e187c74614a54b80300728277529dbf11","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4","d88ecca73348e7c337541c4b8b60a50aca5e87384f6b8a422fc6603c637e4c21","badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1cdb8f094b969dcc183745dc88404e2d8fcf2a858c6e7cc2441011476573238e"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":false,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./dist","rootDir":"./src","sourceMap":true,"strict":true,"target":5},"fileIdsList":[[54,124],[124],[63,64,124],[72,124],[69,71,124],[42,44,45,46,47,48,49,50,51,52,53,54,124],[42,43,45,46,47,48,49,50,51,52,53,54,124],[43,44,45,46,47,48,49,50,51,52,53,54,124],[42,43,44,46,47,48,49,50,51,52,53,54,124],[42,43,44,45,47,48,49,50,51,52,53,54,124],[42,43,44,45,46,48,49,50,51,52,53,54,124],[42,43,44,45,46,47,49,50,51,52,53,54,124],[42,43,44,45,46,47,48,50,51,52,53,54,124],[42,43,44,45,46,47,48,49,51,52,53,54,124],[42,43,44,45,46,47,48,49,50,52,53,54,124],[42,43,44,45,46,47,48,49,50,51,53,54,124],[42,43,44,45,46,47,48,49,50,51,52,54,124],[42,43,44,45,46,47,48,49,50,51,52,53,124],[81,124],[84,124],[85,90,124],[86,96,97,104,113,123,124],[86,87,96,104,124],[88,124],[89,90,97,105,124],[90,113,120,124],[91,93,96,104,124],[92,124],[93,94,124],[95,96,124],[96,124],[96,97,98,113,123,124],[96,97,98,113,124],[99,104,113,123,124],[96,97,99,100,104,113,120,123,124],[99,101,113,120,123,124],[81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130],[96,102,124],[103,123,124],[93,96,104,113,124],[105,124],[106,124],[84,107,124],[108,122,124,128],[109,124],[110,124],[96,111,124],[111,112,124,126],[96,113,114,115,124],[113,115,124],[113,114,124],[116,124],[117,124],[96,118,119,124],[118,119,124],[90,104,120,124],[121,124],[104,122,124],[85,99,110,123,124],[90,124],[113,124,125],[124,126],[124,127],[85,90,96,98,107,113,123,124,126,128],[113,124,129],[66,124],[65,69,124],[69,124],[67,68,124],[65,69,70,124],[41,55,124],[41,55,57,124],[41,74,124],[41,55,71,73,124],[41,55,59,124],[41,59,60,61,124],[41,55,60,124],[41,124],[40,41,124],[41,78,79,124]],"referencedMap":[[55,1],[63,2],[64,2],[65,3],[73,4],[72,5],[43,6],[44,7],[42,8],[45,9],[46,10],[47,11],[48,12],[49,13],[50,14],[51,15],[52,16],[53,17],[54,18],[81,19],[82,19],[84,20],[85,21],[86,22],[87,23],[88,24],[89,25],[90,26],[91,27],[92,28],[93,29],[94,29],[95,30],[96,31],[97,32],[98,33],[83,2],[130,2],[99,34],[100,35],[101,36],[131,37],[102,38],[103,39],[104,40],[105,41],[106,42],[107,43],[108,44],[109,45],[110,46],[111,47],[112,48],[113,49],[115,50],[114,51],[116,52],[117,53],[118,54],[119,55],[120,56],[121,57],[122,58],[123,59],[124,60],[125,61],[126,62],[127,63],[128,64],[129,65],[67,66],[66,2],[70,67],[68,68],[69,69],[71,70],[41,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[30,2],[31,2],[32,2],[33,2],[7,2],[38,2],[34,2],[35,2],[36,2],[37,2],[1,2],[39,2],[40,2],[56,71],[58,72],[75,73],[74,74],[60,75],[62,76],[59,77],[57,78],[61,71],[76,79],[77,79],[80,80],[78,79],[79,79]],"exportedModulesMap":[[55,1],[63,2],[64,2],[65,3],[73,4],[72,5],[43,6],[44,7],[42,8],[45,9],[46,10],[47,11],[48,12],[49,13],[50,14],[51,15],[52,16],[53,17],[54,18],[81,19],[82,19],[84,20],[85,21],[86,22],[87,23],[88,24],[89,25],[90,26],[91,27],[92,28],[93,29],[94,29],[95,30],[96,31],[97,32],[98,33],[83,2],[130,2],[99,34],[100,35],[101,36],[131,37],[102,38],[103,39],[104,40],[105,41],[106,42],[107,43],[108,44],[109,45],[110,46],[111,47],[112,48],[113,49],[115,50],[114,51],[116,52],[117,53],[118,54],[119,55],[120,56],[121,57],[122,58],[123,59],[124,60],[125,61],[126,62],[127,63],[128,64],[129,65],[67,66],[66,2],[70,67],[68,68],[69,69],[71,70],[41,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[30,2],[31,2],[32,2],[33,2],[7,2],[38,2],[34,2],[35,2],[36,2],[37,2],[1,2],[39,2],[40,2],[56,71],[58,72],[75,73],[74,74],[60,75],[62,76],[59,77],[57,78],[61,71],[76,79],[77,79],[80,80],[78,79],[79,79]],"semanticDiagnosticsPerFile":[55,63,64,65,73,72,43,44,42,45,46,47,48,49,50,51,52,53,54,81,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,83,130,99,100,101,131,102,103,104,105,106,107,108,109,110,111,112,113,115,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,67,66,70,68,69,71,41,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,38,34,35,36,37,1,39,40,56,58,75,74,60,62,59,57,61,76,77,80,78,79]},"version":"4.5.2"}
1
+ {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","./@types/global/index.d.ts","../../node_modules/tslib/tslib.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/@hatiolab/things-scene/things-scene.d.ts","./src/beacon.ts","./src/quaternion.ts","./src/camera.ts","./src/indoor-map.ts","./src/floor.ts","./src/rack.ts","./src/index.ts","../../node_modules/@lit/reactive-element/css-tag.d.ts","../../node_modules/@lit/reactive-element/reactive-controller.d.ts","../../node_modules/@lit/reactive-element/reactive-element.d.ts","../../node_modules/@types/trusted-types/lib/index.d.ts","../../node_modules/@types/trusted-types/index.d.ts","../../node_modules/lit-html/directive.d.ts","../../node_modules/lit-html/lit-html.d.ts","../../node_modules/lit-element/lit-element.d.ts","../../node_modules/lit/index.d.ts","../../node_modules/@operato/property-editor/dist/src/ox-property-editor.d.ts","../../node_modules/@operato/property-editor/dist/src/index.d.ts","../../node_modules/@lit/reactive-element/decorators/base.d.ts","../../node_modules/@lit/reactive-element/decorators/custom-element.d.ts","../../node_modules/@lit/reactive-element/decorators/property.d.ts","../../node_modules/@lit/reactive-element/decorators/state.d.ts","../../node_modules/@lit/reactive-element/decorators/event-options.d.ts","../../node_modules/@lit/reactive-element/decorators/query.d.ts","../../node_modules/@lit/reactive-element/decorators/query-all.d.ts","../../node_modules/@lit/reactive-element/decorators/query-async.d.ts","../../node_modules/@lit/reactive-element/decorators/query-assigned-nodes.d.ts","../../node_modules/lit/decorators.d.ts","./src/editors/things-editor-action.ts","./src/editors/index.ts","./src/templates/beacon.ts","./src/templates/camera.ts","./src/templates/indoor-map.ts","./src/templates/rack.ts","./src/templates/index.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"6adbf5efd0e374ff5f427a4f26a5a413e9734eee5067a0e86da69aea41910b52","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"abba1071bfd89e55e88a054b0c851ea3e8a494c340d0f3fab19eb18f6afb0c9e","affectsGlobalScope":true},{"version":"d8996609230d17e90484a2dd58f22668f9a05a3bfe00bfb1d6271171e54a31fb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"4378fc8122ec9d1a685b01eb66c46f62aba6b239ca7228bb6483bcf8259ee493","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"d071129cba6a5f2700be09c86c07ad2791ab67d4e5ed1eb301d6746c62745ea4","affectsGlobalScope":true},{"version":"10bbdc1981b8d9310ee75bfac28ee0477bb2353e8529da8cff7cb26c409cb5e8","affectsGlobalScope":true},"c4f5f288a2b8dcfb6183e29612ec26b7a049314a6a10b7e6e700a8307077455a","12f4cfe2fe60b810c3174537bc2ddb20c1067b7768643d12cb1266fd183afb75","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","378df8bbbb9e3f6fca05d58f644aab538e1062eab5e778fb0b83d41125df246d","d88a479cccf787b4aa82362150fbeba5211a32dbfafa7b92ba6995ecaf9a1a89","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","6ac6f24aff52e62c3950461aa17eab26e3a156927858e6b654baef0058b4cd1e",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"164d1757bd87742690d8c75b9ceeee0ab5aef37054b9c1c7f4cfce240c9c6f11","76395d012a9988aec73b86e6bcabb9ddf7e0b3edc7621615aac620aeebcfb558","8846e9ec615004e255a9aac0056071d9f2e8dedf4e391c4dd308d793db2f5744","005f56f0650768db0a1326a3bf7f3e5be1346152d12825162804cc6b1c0e673c",{"version":"8bc438cdb3cd3d9490cf27bcee0d8ffb9a8437cd8f3df7565daad1c278d1945a","signature":"bc552d2664c47f66e15b8cfbcb06c2dbea87d5bba2ce27084d9a02ebc5c80145"},{"version":"fd67ab54bc5a437effb1c5c2a1094cd8eb1507e9475f2ce47303ae5cde1487da","signature":"c7efd4aac62f3d6372dca124a0b6f1c6f8a5b6320d37aa65fe1268cf8cd9ff4d"},"6da970129f66ae6cec3bc4910447772f96de476b50d8d31fcc9b4461d1d06934",{"version":"73801edd15e5b7d77e0c3159a9a5f5ae506a0631893faaa0e4deb89f83630386","signature":"4567a005d4dd065e4ca14e60b5453c7f41818bea7731344e7cafe9bb7c7370fd"},"0c8a56610b08f55e29ffb466cd27626ad6dbe822312a398026e82270c63088e3","1e5743b25a63fd34ffbae89adcbf248ee17db6ed08d90079ffa93803c3e80d2a","7b33ee85f2e96a51c0e3bcee47b247a24515aff37a7d8b5dfe4e18b735d37440","2fcd2d22b1f30555e785105597cd8f57ed50300e213c4f1bbca6ae149f782c38",{"version":"bb4248c7f953233ac52332088fac897d62b82be07244e551d87c5049600b6cf7","affectsGlobalScope":true},"70f04c91d3186b1b10157157887fab664968fc9b88377785a5ee42750c202c6d","06e20da1bc94df355f22ac7a9533c2488816ec4cb9134d9b160a263629a07072","c311ef8d8b159d0c268b415f78c1949498dc2d14455a9891c5b8ef84625b1e41","f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d","48997560f6ca5fd8b4233b69d1f9cbac88d26719e925fff493fdebb5198b675f","a1045a03e654de1219e85600f7589af7a91e4ac37e2aff114f2ceba34111d34d","97c58f6db61d45712d91d2260994817ae2b568bbb37cc280013079b6b5d2232d","ac388c7c7a262213a3700451bc921e382a93fb27c0252c34ccf03540b4ce044b","9bdb35d0b28dcd5d8f0879bd29f0cf07b7eb48aa63be4dd44057e32fcfeb1c83","fb0107c83e2e0e75b77dacd0c3c6c3ab6844e98dce2a8f858c6f0a57c12136a6","84610cf09dee3cefc910555318f1ad7b45f1cba36905a86849324ca4fead2385","a25d1e52291791819032826af5c52987e16ffdb96e8bb69f7f1790f5ab080be6","d660961abada6b5030461f3322ef3a2e1d9fec74167574f8b590a7796cf90a72","707b4eae3d469b2f347d2083037151922f94c370a9456ebd5ac0a4fb7441c7e7","ef509d57201aa4e2e3e2b3d1fafd066a8ce68cd2caea737d539c3544f5a99a67","84c66a77a1302611ea5001dc88d10de1b5d87c6b2f30a48585495217421ce1ac",{"version":"5916e95868407beccbd336fe96abfc3a184a84436ff534a1759a2bbf206690dd","signature":"c6f6dd9198a61a12cf02bad5d3c6c043318884bfd3bf4f11fd82c8fbe681e882"},{"version":"2574a544ce1f6c988dbeb0f6ae9435f89345ec95c03a60b2991caeae1b45c31d","signature":"1043bbc5a3ee64f9551f061d4f920c2680affad6c82f108788a8353209ea69c6"},"2d36e6d5a7c99088290a15d860da0337d38833f90065c1def71921f0a64c48fb","fc9a059f93763e55a69b998866523b9070ee4f7f94448158402c9923e8417ef2","22328737737440b1243c57219bad62697ab9e0d71d043cbddb582fc07d5ccfa3","9cc266f7c0e6f95ffccef901a73a3317648b03beda79db2de55f3648880a479d","2459a79823f59c1d0b6a77660f636e6aae91e4270e25296aa534bc524c7b96d0","0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"92d63add669d18ebc349efbacd88966d6f2ccdddfb1b880b2db98ae3aa7bf7c4","affectsGlobalScope":true},"ccc94049a9841fe47abe5baef6be9a38fc6228807974ae675fb15dc22531b4be",{"version":"9acfe4d1ff027015151ce81d60797b04b52bffe97ad8310bb0ec2e8fd61e1303","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","2f520601649a893e6a49a8851ebfcf4be8ce090dc1281c2a08a871cb04e8251f","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","2b8c764f856a1dd0a9a2bf23e5efddbff157de8138b0754010be561ae5fcaa90","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","6972fca26f6e9bd56197568d4379f99071a90766e06b4fcb5920a0130a9202be",{"version":"4a2628e95962c8ab756121faa3ac2ed348112ff7a87b5c286dd2cc3326546b4c","affectsGlobalScope":true},"80793b2277f31baa199234daed806fff0fb11491d1ebd3357e520c3558063f00","a049a59a02009fc023684fcfaf0ac526fe36c35dcc5d2b7d620c1750ba11b083","5533392c50c51b1a5c32b89f13145db929c574ef1c5949cf67a074a05ea107d9","b287b810b5035d5685f1df6e1e418f1ca452a3ed4f59fd5cc081dbf2045f0d9b","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","a458dc78104cc80048ac24fdc02fe6dce254838094c2f25641b3f954d9721241",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"902cd98bf46e95caf4118a0733fb801e9e90eec3edaed6abdad77124afec9ca2","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","cd4854d38f4eb5592afd98ab95ca17389a7dfe38013d9079e802d739bdbcc939","94eed4cc2f5f658d5e229ff1ccd38860bddf4233e347bf78edd2154dee1f2b99",{"version":"bd1a08e30569b0fb2f0b21035eb9b039871f68faa9b98accf847e9c878c5e0a9","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","d7838022c7dab596357a9604b9c6adffe37dc34085ce0779c958ce9545bd7139","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"a7971f9fb2a32ec7788ec6cda9d7a33c02023dfe9a62db2030ad1359649d8050","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"b42b47e17b8ece2424ae8039feb944c2e3ba4b262986aebd582e51efbdca93dc","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","2408611d9b4146e35d1dbd1f443ccd8e187c74614a54b80300728277529dbf11","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4","d88ecca73348e7c337541c4b8b60a50aca5e87384f6b8a422fc6603c637e4c21","badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1cdb8f094b969dcc183745dc88404e2d8fcf2a858c6e7cc2441011476573238e"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":false,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./dist","rootDir":"./src","sourceMap":true,"strict":true,"target":5},"fileIdsList":[[54,134],[134],[65,134],[74,134],[65,74,134],[63,64,134],[72,134],[69,71,134],[42,44,45,46,47,48,49,50,51,52,53,54,134],[42,43,45,46,47,48,49,50,51,52,53,54,134],[43,44,45,46,47,48,49,50,51,52,53,54,134],[42,43,44,46,47,48,49,50,51,52,53,54,134],[42,43,44,45,47,48,49,50,51,52,53,54,134],[42,43,44,45,46,48,49,50,51,52,53,54,134],[42,43,44,45,46,47,49,50,51,52,53,54,134],[42,43,44,45,46,47,48,50,51,52,53,54,134],[42,43,44,45,46,47,48,49,51,52,53,54,134],[42,43,44,45,46,47,48,49,50,52,53,54,134],[42,43,44,45,46,47,48,49,50,51,53,54,134],[42,43,44,45,46,47,48,49,50,51,52,54,134],[42,43,44,45,46,47,48,49,50,51,52,53,134],[91,134],[94,134],[95,100,134],[96,106,107,114,123,133,134],[96,97,106,114,134],[98,134],[99,100,107,115,134],[100,123,130,134],[101,103,106,114,134],[102,134],[103,104,134],[105,106,134],[106,134],[106,107,108,123,133,134],[106,107,108,123,134],[109,114,123,133,134],[106,107,109,110,114,123,130,133,134],[109,111,123,130,133,134],[91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140],[106,112,134],[113,133,134],[103,106,114,123,134],[115,134],[116,134],[94,117,134],[118,132,134,138],[119,134],[120,134],[106,121,134],[121,122,134,136],[106,123,124,125,134],[123,125,134],[123,124,134],[126,134],[127,134],[106,128,129,134],[128,129,134],[100,114,130,134],[131,134],[114,132,134],[95,109,120,133,134],[100,134],[123,134,135],[134,136],[134,137],[95,100,106,108,117,123,133,134,136,138],[123,134,139],[66,134],[65,69,134],[69,134],[67,68,134],[75,76,77,78,79,80,81,82,134],[65,69,70,134],[41,55,134],[41,55,57,134],[41,84,134],[41,55,71,73,83,134],[41,55,59,134],[41,59,60,61,134],[41,55,60,134],[41,134],[40,41,134],[41,88,89,134],[84],[55,69,71,73],[55],[59,60,61],[55,60]],"referencedMap":[[55,1],[63,2],[74,3],[75,4],[78,5],[76,5],[80,5],[82,5],[81,5],[79,5],[77,4],[64,2],[65,6],[73,7],[72,8],[43,9],[44,10],[42,11],[45,12],[46,13],[47,14],[48,15],[49,16],[50,17],[51,18],[52,19],[53,20],[54,21],[91,22],[92,22],[94,23],[95,24],[96,25],[97,26],[98,27],[99,28],[100,29],[101,30],[102,31],[103,32],[104,32],[105,33],[106,34],[107,35],[108,36],[93,2],[140,2],[109,37],[110,38],[111,39],[141,40],[112,41],[113,42],[114,43],[115,44],[116,45],[117,46],[118,47],[119,48],[120,49],[121,50],[122,51],[123,52],[125,53],[124,54],[126,55],[127,56],[128,57],[129,58],[130,59],[131,60],[132,61],[133,62],[134,63],[135,64],[136,65],[137,66],[138,67],[139,68],[67,69],[66,2],[70,70],[68,71],[69,72],[83,73],[71,74],[41,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[30,2],[31,2],[32,2],[33,2],[7,2],[38,2],[34,2],[35,2],[36,2],[37,2],[1,2],[39,2],[40,2],[56,75],[58,76],[85,77],[84,78],[60,79],[62,80],[59,81],[57,82],[61,75],[86,83],[87,83],[90,84],[88,83],[89,83]],"exportedModulesMap":[[55,1],[63,2],[74,3],[75,4],[78,5],[76,5],[80,5],[82,5],[81,5],[79,5],[77,4],[64,2],[65,6],[73,7],[72,8],[43,9],[44,10],[42,11],[45,12],[46,13],[47,14],[48,15],[49,16],[50,17],[51,18],[52,19],[53,20],[54,21],[91,22],[92,22],[94,23],[95,24],[96,25],[97,26],[98,27],[99,28],[100,29],[101,30],[102,31],[103,32],[104,32],[105,33],[106,34],[107,35],[108,36],[93,2],[140,2],[109,37],[110,38],[111,39],[141,40],[112,41],[113,42],[114,43],[115,44],[116,45],[117,46],[118,47],[119,48],[120,49],[121,50],[122,51],[123,52],[125,53],[124,54],[126,55],[127,56],[128,57],[129,58],[130,59],[131,60],[132,61],[133,62],[134,63],[135,64],[136,65],[137,66],[138,67],[139,68],[67,69],[66,2],[70,70],[68,71],[69,72],[83,73],[71,74],[41,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[30,2],[31,2],[32,2],[33,2],[7,2],[38,2],[34,2],[35,2],[36,2],[37,2],[1,2],[39,2],[40,2],[56,75],[58,76],[85,85],[84,86],[60,87],[62,88],[59,89],[57,82],[61,75],[86,83],[87,83],[90,84],[88,83],[89,83]],"semanticDiagnosticsPerFile":[55,63,74,75,78,76,80,82,81,79,77,64,65,73,72,43,44,42,45,46,47,48,49,50,51,52,53,54,91,92,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,93,140,109,110,111,141,112,113,114,115,116,117,118,119,120,121,122,123,125,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,67,66,70,68,69,83,71,41,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,38,34,35,36,37,1,39,40,56,58,85,84,60,62,59,57,61,86,87,90,88,89]},"version":"4.5.2"}