@operato/board 0.2.16 → 0.2.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,15 @@
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.2.17](https://github.com/hatiolab/operato/compare/v0.2.16...v0.2.17) (2021-11-21)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * ox-board-viewer reference count error ([8119893](https://github.com/hatiolab/operato/commit/81198935598fbae699dbda8f000f758c8ad8e014))
12
+
13
+
14
+
6
15
  ### [0.2.16](https://github.com/hatiolab/operato/compare/v0.2.15...v0.2.16) (2021-11-21)
7
16
 
8
17
 
@@ -351,9 +351,8 @@
351
351
  "kind": "field",
352
352
  "name": "data",
353
353
  "type": {
354
- "text": "object"
354
+ "text": "any"
355
355
  },
356
- "default": "{}",
357
356
  "attribute": "data"
358
357
  },
359
358
  {
@@ -378,7 +377,7 @@
378
377
  },
379
378
  {
380
379
  "kind": "field",
381
- "name": "scene",
380
+ "name": "_scene",
382
381
  "type": {
383
382
  "text": "any"
384
383
  },
@@ -386,7 +385,7 @@
386
385
  },
387
386
  {
388
387
  "kind": "field",
389
- "name": "forward",
388
+ "name": "_forward",
390
389
  "type": {
391
390
  "text": "Array<any>"
392
391
  },
@@ -394,7 +393,7 @@
394
393
  },
395
394
  {
396
395
  "kind": "field",
397
- "name": "backward",
396
+ "name": "_backward",
398
397
  "type": {
399
398
  "text": "Array<any>"
400
399
  },
@@ -416,28 +415,28 @@
416
415
  },
417
416
  {
418
417
  "kind": "field",
419
- "name": "target",
418
+ "name": "_target",
420
419
  "type": {
421
420
  "text": "HTMLElement"
422
421
  }
423
422
  },
424
423
  {
425
424
  "kind": "field",
426
- "name": "prev",
425
+ "name": "_prev",
427
426
  "type": {
428
427
  "text": "HTMLElement"
429
428
  }
430
429
  },
431
430
  {
432
431
  "kind": "field",
433
- "name": "next",
432
+ "name": "_next",
434
433
  "type": {
435
434
  "text": "HTMLElement"
436
435
  }
437
436
  },
438
437
  {
439
438
  "kind": "field",
440
- "name": "fullscreen",
439
+ "name": "_fullscreen",
441
440
  "type": {
442
441
  "text": "HTMLElement"
443
442
  }
@@ -661,9 +660,8 @@
661
660
  {
662
661
  "name": "data",
663
662
  "type": {
664
- "text": "object"
663
+ "text": "any"
665
664
  },
666
- "default": "{}",
667
665
  "fieldName": "data"
668
666
  },
669
667
  {
@@ -27,7 +27,7 @@
27
27
  <div id="demo"></div>
28
28
  <script type="module">
29
29
  import { html, render } from 'lit'
30
- import '../dist/src/index.js'
30
+ import '../dist/src/ox-board-viewer.js'
31
31
  import { ReferenceMap, create, error } from '@hatiolab/things-scene'
32
32
 
33
33
  const colors = ['red', 'blue', 'orange', 'yellow', 'magenta', 'violet', 'navy', 'green', 'cyan', 'lime']
package/demo/index.html CHANGED
@@ -15,7 +15,7 @@
15
15
  -webkit-font-smoothing: antialiased;
16
16
  }
17
17
 
18
- ox-board-player {
18
+ ox-board-viewer {
19
19
  width: 100vw;
20
20
  height: 100vh;
21
21
  }
@@ -27,7 +27,7 @@
27
27
  <div id="demo"></div>
28
28
  <script type="module">
29
29
  import { html, render } from 'lit'
30
- import '../dist/src/index.js'
30
+ import '../dist/src/ox-board-viewer.js'
31
31
  import { ReferenceMap, create, error } from '@hatiolab/things-scene'
32
32
 
33
33
  const colors = ['red', 'blue', 'orange', 'yellow', 'magenta', 'violet', 'navy', 'green', 'cyan', 'lime']
@@ -93,7 +93,7 @@
93
93
  )
94
94
 
95
95
  render(
96
- html` <ox-board-player .boards=${boards} .provider=${provider}></ox-board-player> `,
96
+ html` <ox-board-viewer .board=${boards[0]} .provider=${provider}></ox-board-viewer> `,
97
97
  document.querySelector('#demo')
98
98
  )
99
99
  </script>
@@ -6,20 +6,21 @@ export declare class BoardViewer extends LitElement {
6
6
  baseUrl: string;
7
7
  board: any;
8
8
  provider: any;
9
- data: {};
9
+ data: any;
10
10
  hideFullscreen: boolean;
11
11
  hideNavigation: boolean;
12
- scene: any;
13
- forward: Array<any>;
14
- backward: Array<any>;
12
+ _scene: any;
13
+ _forward: Array<any>;
14
+ _backward: Array<any>;
15
15
  _oldtarget?: HTMLElement;
16
16
  _fade_animations?: Array<Animation>;
17
- target: HTMLElement;
18
- prev: HTMLElement;
19
- next: HTMLElement;
20
- fullscreen: HTMLElement;
17
+ _target: HTMLElement;
18
+ _prev: HTMLElement;
19
+ _next: HTMLElement;
20
+ _fullscreen: HTMLElement;
21
21
  render(): import("lit-html").TemplateResult<1>;
22
- firstUpdated(): void;
22
+ connectedCallback(): void;
23
+ disconnectedCallback(): void;
23
24
  updated(changes: PropertyValues<this>): void;
24
25
  initScene(): void;
25
26
  closeScene(): void;
@@ -12,12 +12,11 @@ let BoardViewer = class BoardViewer extends LitElement {
12
12
  this.baseUrl = '';
13
13
  this.board = {};
14
14
  this.provider = null;
15
- this.data = {};
16
15
  this.hideFullscreen = false;
17
16
  this.hideNavigation = false;
18
- this.scene = null;
19
- this.forward = [];
20
- this.backward = [];
17
+ this._scene = null;
18
+ this._forward = [];
19
+ this._backward = [];
21
20
  }
22
21
  render() {
23
22
  var fullscreen = !isIOS() && !this.hideFullscreen
@@ -68,26 +67,29 @@ let BoardViewer = class BoardViewer extends LitElement {
68
67
  ${next} ${fullscreen}
69
68
  `;
70
69
  }
71
- firstUpdated() {
70
+ connectedCallback() {
71
+ super.connectedCallback();
72
72
  window.addEventListener('resize', () => {
73
- this.scene && this.scene.fit();
73
+ this._scene && this._scene.fit();
74
74
  });
75
75
  this.renderRoot.addEventListener('close-scene', e => {
76
76
  e.preventDefault();
77
77
  this.onTapPrev();
78
78
  }, false);
79
79
  }
80
+ disconnectedCallback() {
81
+ super.disconnectedCallback();
82
+ this.closeScene();
83
+ }
80
84
  updated(changes) {
81
85
  if (changes.has('board')) {
86
+ this.closeScene();
82
87
  if (this.board && this.board.id) {
83
88
  this.initScene();
84
89
  }
85
- else {
86
- this.closeScene();
87
- }
88
90
  }
89
- if (changes.has('data') && this.scene && this.data) {
90
- this.scene.data = this.data;
91
+ if (changes.has('data') && this._scene && this.data) {
92
+ this._scene.data = this.data;
91
93
  }
92
94
  }
93
95
  initScene() {
@@ -105,48 +107,32 @@ let BoardViewer = class BoardViewer extends LitElement {
105
107
  }
106
108
  this.provider.add(this.board.id, scene);
107
109
  this.showScene(this.board.id);
108
- /* provider.add 시에 추가된 레퍼런스 카운트를 다운시켜주어야 함 */
109
- scene.release();
110
110
  }
111
111
  closeScene() {
112
- if (this.scene) {
113
- this.unbindSceneEvents(this.scene);
114
- this.scene.target = null;
115
- this.scene.release();
116
- delete this.scene;
112
+ if (this._scene) {
113
+ this.unbindSceneEvents(this._scene);
114
+ this._scene.target = null;
115
+ this._scene.release();
116
+ delete this._scene;
117
117
  }
118
118
  // delete queued scenes
119
- this.forward.forEach(scene => scene.release());
120
- this.forward = [];
121
- this.backward.forEach(scene => scene.release());
122
- this.backward = [];
119
+ this._forward.forEach(scene => scene.release());
120
+ this._forward = [];
121
+ this._backward.forEach(scene => scene.release());
122
+ this._backward = [];
123
123
  }
124
124
  releaseScene() {
125
- if (this.scene) {
126
- this.unbindSceneEvents(this.scene);
127
- this.scene.target = null;
128
- this.scene.release();
129
- delete this.scene;
130
- // delete queued scenes
131
- this.forward.forEach(scene => {
132
- scene.release();
133
- });
134
- this.forward = [];
135
- this.backward.forEach(scene => {
136
- scene.release();
137
- });
138
- this.backward = [];
139
- this.transientShowButtons();
140
- }
125
+ this.closeScene();
126
+ this.transientShowButtons();
141
127
  }
142
128
  setupScene(scene) {
143
- this.scene = scene;
129
+ this._scene = scene;
144
130
  /* scene의 기존 target을 보관한다. */
145
- this._oldtarget = this.scene.target;
146
- this.scene.fit(this.board.model.fitMode);
147
- this.scene.target = this.target;
131
+ this._oldtarget = this._scene.target;
132
+ this._scene.fit(this.board.model.fitMode);
133
+ this._scene.target = this._target;
148
134
  if (this.data) {
149
- this.scene.data = this.data;
135
+ this._scene.data = this.data;
150
136
  }
151
137
  this.bindSceneEvents();
152
138
  this.transientShowButtons();
@@ -156,24 +142,22 @@ let BoardViewer = class BoardViewer extends LitElement {
156
142
  return;
157
143
  try {
158
144
  var scene = await this.provider.get(boardId, true);
159
- var old_scene = this.scene;
160
- this.scene = scene;
161
- if (scene.target === this.target) {
145
+ var old_scene = this._scene;
146
+ this._scene = scene;
147
+ if (scene.target === this._target) {
162
148
  scene.release();
163
149
  return;
164
150
  }
165
151
  if (old_scene) {
166
- /* old scene을 backward에 보관한다. */
152
+ /* old scene을 _backward에 보관한다. */
167
153
  this.unbindSceneEvents(old_scene);
168
154
  /* 원래의 target에 되돌린다. */
169
155
  old_scene.target = this._oldtarget;
170
- this.backward.push(old_scene);
156
+ this._backward.push(old_scene);
171
157
  }
172
- this.forward.forEach(scene => {
173
- scene.release();
174
- });
158
+ this._forward.forEach(scene => scene.release());
175
159
  /* forward를 비운다. */
176
- this.forward = [];
160
+ this._forward = [];
177
161
  this.setupScene(scene);
178
162
  if (bindingData) {
179
163
  scene.data = bindingData;
@@ -184,10 +168,10 @@ let BoardViewer = class BoardViewer extends LitElement {
184
168
  }
185
169
  }
186
170
  bindSceneEvents() {
187
- this.scene.on('goto', this.onLinkGoto, this);
188
- this.scene.on('link-open', this.onLinkOpen, this);
189
- this.scene.on('link-move', this.onLinkMove, this);
190
- this.scene.on('route-page', this.onRoutePage, this);
171
+ this._scene.on('goto', this.onLinkGoto, this);
172
+ this._scene.on('link-open', this.onLinkOpen, this);
173
+ this._scene.on('link-move', this.onLinkMove, this);
174
+ this._scene.on('route-page', this.onRoutePage, this);
191
175
  }
192
176
  unbindSceneEvents(scene) {
193
177
  scene.off('goto', this.onLinkGoto, this);
@@ -197,8 +181,8 @@ let BoardViewer = class BoardViewer extends LitElement {
197
181
  }
198
182
  transientShowButtons(stop) {
199
183
  var buttons = [];
200
- !this.hideNavigation && buttons.push(this.next, this.prev);
201
- !this.hideFullscreen && buttons.push(this.fullscreen);
184
+ !this.hideNavigation && buttons.push(this._next, this._prev);
185
+ !this.hideFullscreen && buttons.push(this._fullscreen);
202
186
  if (buttons.length == 0) {
203
187
  return;
204
188
  }
@@ -219,9 +203,9 @@ let BoardViewer = class BoardViewer extends LitElement {
219
203
  return animation;
220
204
  });
221
205
  }
222
- this.forward.length <= 0 ? this.next.setAttribute('hidden', '') : this.next.removeAttribute('hidden');
223
- this.backward.length <= 0 ? this.prev.setAttribute('hidden', '') : this.prev.removeAttribute('hidden');
224
- this.fullscreen && this.fullscreen.removeAttribute('hidden');
206
+ this._forward.length <= 0 ? this._next.setAttribute('hidden', '') : this._next.removeAttribute('hidden');
207
+ this._backward.length <= 0 ? this._prev.setAttribute('hidden', '') : this._prev.removeAttribute('hidden');
208
+ this._fullscreen && this._fullscreen.removeAttribute('hidden');
225
209
  this._fade_animations.forEach(animation => {
226
210
  animation.cancel();
227
211
  if (stop)
@@ -231,37 +215,33 @@ let BoardViewer = class BoardViewer extends LitElement {
231
215
  }
232
216
  /* event handlers */
233
217
  onTapNext() {
234
- var scene = this.forward.pop();
218
+ var scene = this._forward.pop();
235
219
  if (!scene)
236
220
  return;
237
- if (this.scene) {
238
- this.scene.target = null;
221
+ if (this._scene) {
222
+ this._scene.target = null;
239
223
  /* 원래의 target에 되돌린다. */
240
- this.scene.target = this._oldtarget;
241
- this.unbindSceneEvents(this.scene);
242
- this.backward.push(this.scene);
224
+ this._scene.target = this._oldtarget;
225
+ this.unbindSceneEvents(this._scene);
226
+ this._backward.push(this._scene);
243
227
  }
244
228
  this.setupScene(scene);
245
229
  }
246
230
  onTapPrev() {
247
- var scene = this.backward.pop();
231
+ var scene = this._backward.pop();
248
232
  if (!scene)
249
233
  return;
250
- if (this.scene) {
251
- this.scene.target = null;
234
+ if (this._scene) {
235
+ this._scene.target = null;
252
236
  /* 원래의 target에 되돌린다. */
253
- this.scene.target = this._oldtarget;
254
- this.unbindSceneEvents(this.scene);
255
- this.forward.push(this.scene);
237
+ this._scene.target = this._oldtarget;
238
+ this.unbindSceneEvents(this._scene);
239
+ this._forward.push(this._scene);
256
240
  }
257
241
  this.setupScene(scene);
258
242
  }
259
243
  onTapFullscreen() {
260
- togglefullscreen(this, () => {
261
- this.requestUpdate();
262
- }, () => {
263
- this.requestUpdate();
264
- });
244
+ togglefullscreen(this, () => this.requestUpdate(), () => this.requestUpdate());
265
245
  }
266
246
  onLinkGoto(targetBoardId, value, fromComponent) {
267
247
  this.showScene(targetBoardId, fromComponent.data);
@@ -295,16 +275,16 @@ let BoardViewer = class BoardViewer extends LitElement {
295
275
  window.dispatchEvent(new Event('popstate'));
296
276
  }
297
277
  async getSceneImageData(base64 = false) {
298
- if (!this.scene) {
278
+ if (!this._scene) {
299
279
  return;
300
280
  }
301
- var { width, height } = this.scene.model;
281
+ var { width, height } = this._scene.model;
302
282
  var pixelRatio = window.devicePixelRatio;
303
283
  // 1. Scene의 바운드에 근거하여, 오프스크린 캔바스를 만든다.
304
284
  var canvas = document.createElement('canvas');
305
285
  canvas.width = Number(width);
306
286
  canvas.height = Number(height);
307
- var root = this.scene.root;
287
+ var root = this._scene.root;
308
288
  // 2. 모델레이어의 원래 위치와 스케일을 저장한다.
309
289
  var translate = root.get('translate');
310
290
  var scale = root.get('scale');
@@ -459,13 +439,13 @@ __decorate([
459
439
  ], BoardViewer.prototype, "hideNavigation", void 0);
460
440
  __decorate([
461
441
  state()
462
- ], BoardViewer.prototype, "scene", void 0);
442
+ ], BoardViewer.prototype, "_scene", void 0);
463
443
  __decorate([
464
444
  state()
465
- ], BoardViewer.prototype, "forward", void 0);
445
+ ], BoardViewer.prototype, "_forward", void 0);
466
446
  __decorate([
467
447
  state()
468
- ], BoardViewer.prototype, "backward", void 0);
448
+ ], BoardViewer.prototype, "_backward", void 0);
469
449
  __decorate([
470
450
  state()
471
451
  ], BoardViewer.prototype, "_oldtarget", void 0);
@@ -474,16 +454,16 @@ __decorate([
474
454
  ], BoardViewer.prototype, "_fade_animations", void 0);
475
455
  __decorate([
476
456
  query('#target')
477
- ], BoardViewer.prototype, "target", void 0);
457
+ ], BoardViewer.prototype, "_target", void 0);
478
458
  __decorate([
479
459
  query('#prev')
480
- ], BoardViewer.prototype, "prev", void 0);
460
+ ], BoardViewer.prototype, "_prev", void 0);
481
461
  __decorate([
482
462
  query('#next')
483
- ], BoardViewer.prototype, "next", void 0);
463
+ ], BoardViewer.prototype, "_next", void 0);
484
464
  __decorate([
485
465
  query('#fullscreen')
486
- ], BoardViewer.prototype, "fullscreen", void 0);
466
+ ], BoardViewer.prototype, "_fullscreen", void 0);
487
467
  BoardViewer = __decorate([
488
468
  customElement('ox-board-viewer')
489
469
  ], BoardViewer);
@@ -1 +1 @@
1
- {"version":3,"file":"ox-board-viewer.js","sourceRoot":"","sources":["../../src/ox-board-viewer.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/mwc-fab'\nimport '@material/mwc-icon'\n\nimport { LitElement, PropertyValues, css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport { create } from '@hatiolab/things-scene'\nimport { isIOS } from './utils/os'\nimport { togglefullscreen } from './utils/fullscreen'\n\n@customElement('ox-board-viewer')\nexport class BoardViewer extends LitElement {\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n\n position: relative;\n\n width: 100%; /* 전체화면보기를 위해서 필요함. */\n overflow: hidden;\n }\n\n #target {\n flex: 1;\n\n width: 100%; /* 전체화면보기를 위해서 필요함. */\n height: 100%;\n\n outline: 0;\n }\n\n /* navigation buttons */\n mwc-icon {\n z-index: 10;\n position: absolute;\n top: 45%;\n min-width: 50px;\n width: 50px;\n height: 50px;\n margin: 0;\n padding: 0;\n color: #fff;\n user-select: none;\n\n --mdc-icon-size: 3em;\n }\n\n mwc-icon[hidden] {\n display: none;\n }\n\n mwc-icon:hover {\n background-color: rgba(0, 0, 0, 0.2);\n border-radius: 50%;\n }\n\n #prev {\n left: 5px;\n }\n\n #next {\n right: 5px;\n }\n\n #fullscreen {\n position: absolute;\n bottom: 15px;\n right: 16px;\n }\n\n /* for scroller */\n ::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n }\n ::-webkit-scrollbar-track {\n background-color: transparent;\n }\n ::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.2);\n }\n ::-webkit-scrollbar-thumb:hover {\n background-color: #aa866a;\n }\n\n [hidden] {\n display: none;\n }\n\n @media print {\n mwc-fab,\n mwc-icon {\n display: none;\n }\n }\n `\n\n @property({ type: String }) baseUrl = ''\n @property({ type: Object }) board: any = {}\n @property({ type: Object }) provider: any = null\n @property({ type: Object }) data = {}\n\n @property({ type: Boolean, reflect: true, attribute: 'hide-fullscreen' }) hideFullscreen = false\n @property({ type: Boolean, reflect: true, attribute: 'hide-navigation' }) hideNavigation = false\n\n @state() scene: any = null\n @state() forward: Array<any> = []\n @state() backward: Array<any> = []\n\n @state() _oldtarget?: HTMLElement\n @state() _fade_animations?: Array<Animation>\n\n @query('#target') target!: HTMLElement\n @query('#prev') prev!: HTMLElement\n @query('#next') next!: HTMLElement\n @query('#fullscreen') fullscreen!: HTMLElement\n\n render() {\n var fullscreen =\n !isIOS() && !this.hideFullscreen\n ? html`\n <mwc-fab\n id=\"fullscreen\"\n .icon=${document.fullscreenElement ? 'fullscreen_exit' : 'fullscreen'}\n @click=${(e: Event) => this.onTapFullscreen()}\n @mouseover=${(e: Event) => this.transientShowButtons(true)}\n @mouseout=${(e: Event) => this.transientShowButtons()}\n title=\"fullscreen\"\n ></mwc-fab>\n `\n : html``\n\n var prev = !this.hideNavigation\n ? html`\n <mwc-icon\n id=\"prev\"\n @click=${(e: Event) => this.onTapPrev()}\n @mouseover=${(e: Event) => this.transientShowButtons(true)}\n @mouseout=${(e: Event) => this.transientShowButtons()}\n hidden\n >keyboard_arrow_left</mwc-icon\n >\n `\n : html``\n\n var next = !this.hideNavigation\n ? html`\n <mwc-icon\n id=\"next\"\n @click=${(e: Event) => this.onTapNext()}\n @mouseover=${(e: Event) => this.transientShowButtons(true)}\n @mouseout=${(e: Event) => this.transientShowButtons()}\n hidden\n >keyboard_arrow_right</mwc-icon\n >\n `\n : html``\n\n return html`\n ${prev}\n\n <div\n id=\"target\"\n @touchstart=${(e: Event) => this.transientShowButtons()}\n @mousemove=${(e: Event) => this.transientShowButtons()}\n ></div>\n\n ${next} ${fullscreen}\n `\n }\n\n firstUpdated() {\n window.addEventListener('resize', () => {\n this.scene && this.scene.fit()\n })\n\n this.renderRoot.addEventListener(\n 'close-scene',\n e => {\n e.preventDefault()\n this.onTapPrev()\n },\n false\n )\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('board')) {\n if (this.board && this.board.id) {\n this.initScene()\n } else {\n this.closeScene()\n }\n }\n\n if (changes.has('data') && this.scene && this.data) {\n this.scene.data = this.data\n }\n }\n\n initScene() {\n if (!this.board || !this.board.id) return\n\n var scene = create({\n model: {\n ...this.board.model\n },\n mode: 0,\n refProvider: this.provider\n })\n\n if (this.baseUrl) {\n scene.baseUrl = this.baseUrl\n }\n\n this.provider.add(this.board.id, scene)\n\n this.showScene(this.board.id)\n\n /* provider.add 시에 추가된 레퍼런스 카운트를 다운시켜주어야 함 */\n scene.release()\n }\n\n closeScene() {\n if (this.scene) {\n this.unbindSceneEvents(this.scene)\n\n this.scene.target = null\n this.scene.release()\n\n delete this.scene\n }\n\n // delete queued scenes\n this.forward.forEach(scene => scene.release())\n this.forward = []\n\n this.backward.forEach(scene => scene.release())\n this.backward = []\n }\n\n releaseScene() {\n if (this.scene) {\n this.unbindSceneEvents(this.scene)\n\n this.scene.target = null\n this.scene.release()\n\n delete this.scene\n\n // delete queued scenes\n this.forward.forEach(scene => {\n scene.release()\n })\n this.forward = []\n\n this.backward.forEach(scene => {\n scene.release()\n })\n this.backward = []\n\n this.transientShowButtons()\n }\n }\n\n setupScene(scene: any) {\n this.scene = scene\n\n /* scene의 기존 target을 보관한다. */\n this._oldtarget = this.scene.target\n\n this.scene.fit(this.board.model.fitMode)\n this.scene.target = this.target\n\n if (this.data) {\n this.scene.data = this.data\n }\n\n this.bindSceneEvents()\n\n this.transientShowButtons()\n }\n\n async showScene(boardId: string, bindingData?: any) {\n if (!boardId) return\n\n try {\n var scene = await this.provider.get(boardId, true)\n\n var old_scene = this.scene\n this.scene = scene\n\n if (scene.target === this.target) {\n scene.release()\n return\n }\n\n if (old_scene) {\n /* old scene을 backward에 보관한다. */\n this.unbindSceneEvents(old_scene)\n /* 원래의 target에 되돌린다. */\n old_scene.target = this._oldtarget\n this.backward.push(old_scene)\n }\n\n this.forward.forEach(scene => {\n scene.release()\n })\n\n /* forward를 비운다. */\n this.forward = []\n\n this.setupScene(scene)\n\n if (bindingData) {\n scene.data = bindingData\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n bindSceneEvents() {\n this.scene.on('goto', this.onLinkGoto, this)\n this.scene.on('link-open', this.onLinkOpen, this)\n this.scene.on('link-move', this.onLinkMove, this)\n this.scene.on('route-page', this.onRoutePage, this)\n }\n\n unbindSceneEvents(scene: any) {\n scene.off('goto', this.onLinkGoto, this)\n scene.off('link-open', this.onLinkOpen, this)\n scene.off('link-move', this.onLinkMove, this)\n scene.off('route-page', this.onRoutePage, this)\n }\n\n transientShowButtons(stop?: boolean) {\n var buttons = []\n !this.hideNavigation && buttons.push(this.next, this.prev)\n !this.hideFullscreen && buttons.push(this.fullscreen)\n\n if (buttons.length == 0) {\n return\n }\n\n if (!this._fade_animations) {\n this._fade_animations = buttons\n .filter(button => button)\n .map(button => {\n let animation = button.animate(\n [\n {\n opacity: 1,\n easing: 'ease-in'\n },\n { opacity: 0 }\n ],\n { delay: 1000, duration: 2000 }\n )\n\n animation.onfinish = () => {\n button.setAttribute('hidden', '')\n }\n\n return animation\n })\n }\n\n this.forward.length <= 0 ? this.next.setAttribute('hidden', '') : this.next.removeAttribute('hidden')\n this.backward.length <= 0 ? this.prev.setAttribute('hidden', '') : this.prev.removeAttribute('hidden')\n this.fullscreen && this.fullscreen.removeAttribute('hidden')\n\n this._fade_animations.forEach(animation => {\n animation.cancel()\n if (stop) return\n\n animation.play()\n })\n }\n\n /* event handlers */\n\n onTapNext() {\n var scene = this.forward.pop()\n if (!scene) return\n\n if (this.scene) {\n this.scene.target = null\n /* 원래의 target에 되돌린다. */\n this.scene.target = this._oldtarget\n this.unbindSceneEvents(this.scene)\n this.backward.push(this.scene)\n }\n\n this.setupScene(scene)\n }\n\n onTapPrev() {\n var scene = this.backward.pop()\n if (!scene) return\n\n if (this.scene) {\n this.scene.target = null\n /* 원래의 target에 되돌린다. */\n this.scene.target = this._oldtarget\n this.unbindSceneEvents(this.scene)\n this.forward.push(this.scene)\n }\n\n this.setupScene(scene)\n }\n\n onTapFullscreen() {\n togglefullscreen(\n this,\n () => {\n this.requestUpdate()\n },\n () => {\n this.requestUpdate()\n }\n )\n }\n\n onLinkGoto(targetBoardId: string, value: any, fromComponent: any) {\n this.showScene(targetBoardId, fromComponent.data)\n }\n\n onLinkOpen(url: string, value: any, fromComponent: any) {\n if (!url) return\n\n try {\n window.open(url)\n } catch (ex) {\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'error',\n message: ex,\n ex\n }\n })\n )\n }\n }\n\n onLinkMove(url: string, value: any, fromComponent: any) {\n if (!url) return\n\n location.href = url\n }\n\n onRoutePage(page: string) {\n if (!page) {\n return\n }\n\n history.pushState({}, '', page)\n window.dispatchEvent(new Event('popstate'))\n }\n\n async getSceneImageData(base64 = false) {\n if (!this.scene) {\n return\n }\n\n var { width, height } = this.scene.model\n var pixelRatio = window.devicePixelRatio\n\n // 1. Scene의 바운드에 근거하여, 오프스크린 캔바스를 만든다.\n var canvas = document.createElement('canvas')\n canvas.width = Number(width)\n canvas.height = Number(height)\n\n var root = this.scene.root\n // 2. 모델레이어의 원래 위치와 스케일을 저장한다.\n var translate = root.get('translate')\n var scale = root.get('scale')\n\n // 3. 위치와 스케일 기본 설정.\n root.set('translate', { x: 0, y: 0 })\n root.set('scale', { x: 1 / pixelRatio, y: 1 / pixelRatio })\n\n // 4. 오프스크린 캔바스의 Context2D를 구한뒤, 모델레이어를 그 위에 그린다.\n var context = canvas.getContext('2d')\n\n root.draw(context)\n\n root.set('translate', translate)\n root.set('scale', scale)\n\n var data = base64 ? canvas.toDataURL() : context!.getImageData(0, 0, width, height).data\n\n return {\n width,\n height,\n data\n }\n }\n\n async printTrick(image: string) {\n var viewTarget: HTMLElement | null = null\n var printTarget: HTMLImageElement | null = null\n\n if (!image) {\n image = (await this.getSceneImageData(true))?.data as string\n }\n\n printTarget = document.createElement('img')\n printTarget.id = 'target'\n printTarget.src = image\n printTarget.style.width = '100%'\n printTarget.style.height = '100%'\n\n const x = (mql: MediaQueryListEvent) => {\n if (mql.matches) {\n if (!viewTarget) {\n viewTarget = this.shadowRoot!.getElementById('target')\n this.renderRoot.replaceChild(printTarget!, viewTarget!)\n }\n } else {\n this.renderRoot.replaceChild(viewTarget!, printTarget!)\n printTarget!.remove()\n mediaQueryList.removeEventListener('change', x)\n }\n }\n\n if (window.matchMedia) {\n var mediaQueryList = window.matchMedia('print')\n mediaQueryList.addEventListener('change', x)\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ox-board-viewer.js","sourceRoot":"","sources":["../../src/ox-board-viewer.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/mwc-fab'\nimport '@material/mwc-icon'\n\nimport { LitElement, PropertyValues, css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport { create } from '@hatiolab/things-scene'\nimport { isIOS } from './utils/os'\nimport { togglefullscreen } from './utils/fullscreen'\n\n@customElement('ox-board-viewer')\nexport class BoardViewer extends LitElement {\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n\n position: relative;\n\n width: 100%; /* 전체화면보기를 위해서 필요함. */\n overflow: hidden;\n }\n\n #target {\n flex: 1;\n\n width: 100%; /* 전체화면보기를 위해서 필요함. */\n height: 100%;\n\n outline: 0;\n }\n\n /* navigation buttons */\n mwc-icon {\n z-index: 10;\n position: absolute;\n top: 45%;\n min-width: 50px;\n width: 50px;\n height: 50px;\n margin: 0;\n padding: 0;\n color: #fff;\n user-select: none;\n\n --mdc-icon-size: 3em;\n }\n\n mwc-icon[hidden] {\n display: none;\n }\n\n mwc-icon:hover {\n background-color: rgba(0, 0, 0, 0.2);\n border-radius: 50%;\n }\n\n #prev {\n left: 5px;\n }\n\n #next {\n right: 5px;\n }\n\n #fullscreen {\n position: absolute;\n bottom: 15px;\n right: 16px;\n }\n\n /* for scroller */\n ::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n }\n ::-webkit-scrollbar-track {\n background-color: transparent;\n }\n ::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.2);\n }\n ::-webkit-scrollbar-thumb:hover {\n background-color: #aa866a;\n }\n\n [hidden] {\n display: none;\n }\n\n @media print {\n mwc-fab,\n mwc-icon {\n display: none;\n }\n }\n `\n\n @property({ type: String }) baseUrl: string = ''\n @property({ type: Object }) board: any = {}\n @property({ type: Object }) provider: any = null\n @property({ type: Object }) data: any\n\n @property({ type: Boolean, reflect: true, attribute: 'hide-fullscreen' }) hideFullscreen = false\n @property({ type: Boolean, reflect: true, attribute: 'hide-navigation' }) hideNavigation = false\n\n @state() _scene: any = null\n @state() _forward: Array<any> = []\n @state() _backward: Array<any> = []\n\n @state() _oldtarget?: HTMLElement\n @state() _fade_animations?: Array<Animation>\n\n @query('#target') _target!: HTMLElement\n @query('#prev') _prev!: HTMLElement\n @query('#next') _next!: HTMLElement\n @query('#fullscreen') _fullscreen!: HTMLElement\n\n render() {\n var fullscreen =\n !isIOS() && !this.hideFullscreen\n ? html`\n <mwc-fab\n id=\"fullscreen\"\n .icon=${document.fullscreenElement ? 'fullscreen_exit' : 'fullscreen'}\n @click=${(e: Event) => this.onTapFullscreen()}\n @mouseover=${(e: Event) => this.transientShowButtons(true)}\n @mouseout=${(e: Event) => this.transientShowButtons()}\n title=\"fullscreen\"\n ></mwc-fab>\n `\n : html``\n\n var prev = !this.hideNavigation\n ? html`\n <mwc-icon\n id=\"prev\"\n @click=${(e: Event) => this.onTapPrev()}\n @mouseover=${(e: Event) => this.transientShowButtons(true)}\n @mouseout=${(e: Event) => this.transientShowButtons()}\n hidden\n >keyboard_arrow_left</mwc-icon\n >\n `\n : html``\n\n var next = !this.hideNavigation\n ? html`\n <mwc-icon\n id=\"next\"\n @click=${(e: Event) => this.onTapNext()}\n @mouseover=${(e: Event) => this.transientShowButtons(true)}\n @mouseout=${(e: Event) => this.transientShowButtons()}\n hidden\n >keyboard_arrow_right</mwc-icon\n >\n `\n : html``\n\n return html`\n ${prev}\n\n <div\n id=\"target\"\n @touchstart=${(e: Event) => this.transientShowButtons()}\n @mousemove=${(e: Event) => this.transientShowButtons()}\n ></div>\n\n ${next} ${fullscreen}\n `\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n window.addEventListener('resize', () => {\n this._scene && this._scene.fit()\n })\n\n this.renderRoot.addEventListener(\n 'close-scene',\n e => {\n e.preventDefault()\n this.onTapPrev()\n },\n false\n )\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n this.closeScene()\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('board')) {\n this.closeScene()\n\n if (this.board && this.board.id) {\n this.initScene()\n }\n }\n\n if (changes.has('data') && this._scene && this.data) {\n this._scene.data = this.data\n }\n }\n\n initScene() {\n if (!this.board || !this.board.id) return\n\n var scene = create({\n model: {\n ...this.board.model\n },\n mode: 0,\n refProvider: this.provider\n })\n\n if (this.baseUrl) {\n scene.baseUrl = this.baseUrl\n }\n\n this.provider.add(this.board.id, scene)\n\n this.showScene(this.board.id)\n }\n\n closeScene() {\n if (this._scene) {\n this.unbindSceneEvents(this._scene)\n\n this._scene.target = null\n this._scene.release()\n\n delete this._scene\n }\n\n // delete queued scenes\n this._forward.forEach(scene => scene.release())\n this._forward = []\n\n this._backward.forEach(scene => scene.release())\n this._backward = []\n }\n\n releaseScene() {\n this.closeScene()\n this.transientShowButtons()\n }\n\n setupScene(scene: any) {\n this._scene = scene\n\n /* scene의 기존 target을 보관한다. */\n this._oldtarget = this._scene.target\n\n this._scene.fit(this.board.model.fitMode)\n this._scene.target = this._target\n\n if (this.data) {\n this._scene.data = this.data\n }\n\n this.bindSceneEvents()\n\n this.transientShowButtons()\n }\n\n async showScene(boardId: string, bindingData?: any) {\n if (!boardId) return\n\n try {\n var scene = await this.provider.get(boardId, true)\n\n var old_scene = this._scene\n this._scene = scene\n\n if (scene.target === this._target) {\n scene.release()\n return\n }\n\n if (old_scene) {\n /* old scene을 _backward에 보관한다. */\n this.unbindSceneEvents(old_scene)\n /* 원래의 target에 되돌린다. */\n old_scene.target = this._oldtarget\n this._backward.push(old_scene)\n }\n\n this._forward.forEach(scene => scene.release())\n\n /* forward를 비운다. */\n this._forward = []\n\n this.setupScene(scene)\n\n if (bindingData) {\n scene.data = bindingData\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n bindSceneEvents() {\n this._scene.on('goto', this.onLinkGoto, this)\n this._scene.on('link-open', this.onLinkOpen, this)\n this._scene.on('link-move', this.onLinkMove, this)\n this._scene.on('route-page', this.onRoutePage, this)\n }\n\n unbindSceneEvents(scene: any) {\n scene.off('goto', this.onLinkGoto, this)\n scene.off('link-open', this.onLinkOpen, this)\n scene.off('link-move', this.onLinkMove, this)\n scene.off('route-page', this.onRoutePage, this)\n }\n\n transientShowButtons(stop?: boolean) {\n var buttons = []\n !this.hideNavigation && buttons.push(this._next, this._prev)\n !this.hideFullscreen && buttons.push(this._fullscreen)\n\n if (buttons.length == 0) {\n return\n }\n\n if (!this._fade_animations) {\n this._fade_animations = buttons\n .filter(button => button)\n .map(button => {\n let animation = button.animate(\n [\n {\n opacity: 1,\n easing: 'ease-in'\n },\n { opacity: 0 }\n ],\n { delay: 1000, duration: 2000 }\n )\n\n animation.onfinish = () => {\n button.setAttribute('hidden', '')\n }\n\n return animation\n })\n }\n\n this._forward.length <= 0 ? this._next.setAttribute('hidden', '') : this._next.removeAttribute('hidden')\n this._backward.length <= 0 ? this._prev.setAttribute('hidden', '') : this._prev.removeAttribute('hidden')\n this._fullscreen && this._fullscreen.removeAttribute('hidden')\n\n this._fade_animations.forEach(animation => {\n animation.cancel()\n if (stop) return\n\n animation.play()\n })\n }\n\n /* event handlers */\n\n onTapNext() {\n var scene = this._forward.pop()\n if (!scene) return\n\n if (this._scene) {\n this._scene.target = null\n /* 원래의 target에 되돌린다. */\n this._scene.target = this._oldtarget\n this.unbindSceneEvents(this._scene)\n this._backward.push(this._scene)\n }\n\n this.setupScene(scene)\n }\n\n onTapPrev() {\n var scene = this._backward.pop()\n if (!scene) return\n\n if (this._scene) {\n this._scene.target = null\n /* 원래의 target에 되돌린다. */\n this._scene.target = this._oldtarget\n this.unbindSceneEvents(this._scene)\n this._forward.push(this._scene)\n }\n\n this.setupScene(scene)\n }\n\n onTapFullscreen() {\n togglefullscreen(\n this,\n () => this.requestUpdate(),\n () => this.requestUpdate()\n )\n }\n\n onLinkGoto(targetBoardId: string, value: any, fromComponent: any) {\n this.showScene(targetBoardId, fromComponent.data)\n }\n\n onLinkOpen(url: string, value: any, fromComponent: any) {\n if (!url) return\n\n try {\n window.open(url)\n } catch (ex) {\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'error',\n message: ex,\n ex\n }\n })\n )\n }\n }\n\n onLinkMove(url: string, value: any, fromComponent: any) {\n if (!url) return\n\n location.href = url\n }\n\n onRoutePage(page: string) {\n if (!page) {\n return\n }\n\n history.pushState({}, '', page)\n window.dispatchEvent(new Event('popstate'))\n }\n\n async getSceneImageData(base64 = false) {\n if (!this._scene) {\n return\n }\n\n var { width, height } = this._scene.model\n var pixelRatio = window.devicePixelRatio\n\n // 1. Scene의 바운드에 근거하여, 오프스크린 캔바스를 만든다.\n var canvas = document.createElement('canvas')\n canvas.width = Number(width)\n canvas.height = Number(height)\n\n var root = this._scene.root\n // 2. 모델레이어의 원래 위치와 스케일을 저장한다.\n var translate = root.get('translate')\n var scale = root.get('scale')\n\n // 3. 위치와 스케일 기본 설정.\n root.set('translate', { x: 0, y: 0 })\n root.set('scale', { x: 1 / pixelRatio, y: 1 / pixelRatio })\n\n // 4. 오프스크린 캔바스의 Context2D를 구한뒤, 모델레이어를 그 위에 그린다.\n var context = canvas.getContext('2d')\n\n root.draw(context)\n\n root.set('translate', translate)\n root.set('scale', scale)\n\n var data = base64 ? canvas.toDataURL() : context!.getImageData(0, 0, width, height).data\n\n return {\n width,\n height,\n data\n }\n }\n\n async printTrick(image: string) {\n var viewTarget: HTMLElement | null = null\n var printTarget: HTMLImageElement | null = null\n\n if (!image) {\n image = (await this.getSceneImageData(true))?.data as string\n }\n\n printTarget = document.createElement('img')\n printTarget.id = 'target'\n printTarget.src = image\n printTarget.style.width = '100%'\n printTarget.style.height = '100%'\n\n const x = (mql: MediaQueryListEvent) => {\n if (mql.matches) {\n if (!viewTarget) {\n viewTarget = this.shadowRoot!.getElementById('target')\n this.renderRoot.replaceChild(printTarget!, viewTarget!)\n }\n } else {\n this.renderRoot.replaceChild(viewTarget!, printTarget!)\n printTarget!.remove()\n mediaQueryList.removeEventListener('change', x)\n }\n }\n\n if (window.matchMedia) {\n var mediaQueryList = window.matchMedia('print')\n mediaQueryList.addEventListener('change', x)\n }\n }\n}\n"]}
@@ -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","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@material/base/foundation.d.ts","../../../node_modules/@material/base/types.d.ts","../../../node_modules/@material/base/component.d.ts","../../../node_modules/@material/base/index.d.ts","../../../node_modules/@material/mwc-base/node_modules/lit/node_modules/@lit/reactive-element/css-tag.d.ts","../../../node_modules/@material/mwc-base/node_modules/lit/node_modules/@lit/reactive-element/reactive-controller.d.ts","../../../node_modules/@material/mwc-base/node_modules/lit/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/reactive-element/reactive-element.d.ts","../../../node_modules/lit-element/lit-element.d.ts","../../../node_modules/@material/mwc-base/node_modules/lit/index.d.ts","../../../node_modules/@material/mwc-base/utils.d.ts","../../../node_modules/@material/mwc-base/base-element.d.ts","../../../node_modules/@material/ripple/types.d.ts","../../../node_modules/@material/ripple/adapter.d.ts","../../../node_modules/@material/ripple/foundation.d.ts","../../../node_modules/@material/mwc-ripple/node_modules/lit/index.d.ts","../../../node_modules/@material/mwc-ripple/mwc-ripple-base.d.ts","../../../node_modules/@material/mwc-ripple/mwc-ripple.d.ts","../../../node_modules/@material/mwc-ripple/ripple-handlers.d.ts","../../../node_modules/@material/mwc-fab/node_modules/lit/index.d.ts","../../../node_modules/@material/mwc-fab/mwc-fab-base.d.ts","../../../node_modules/@material/mwc-fab/mwc-fab.d.ts","../../../node_modules/@material/mwc-icon/node_modules/lit/index.d.ts","../../../node_modules/@material/mwc-icon/mwc-icon.d.ts","../../../node_modules/lit/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/utils/os.ts","../src/utils/fullscreen.ts","../src/ox-board-viewer.ts","../src/player/ox-board-wrapper.ts","../src/player/ox-board-player-grid.ts","../src/player/ox-board-player-carousel.ts","../src/utils/swipe-listener.ts","../../../node_modules/lit-element/decorators.d.ts","../../../node_modules/lit-element/index.d.ts","../src/ox-board-player-style.ts","../src/ox-board-player.ts","../src/index.ts","../src/utils/things-scene.d.ts","../stories/index.stories.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/get-diffable-html.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff-plugin.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/index.d.ts","../../../node_modules/chai-a11y-axe/chai-a11y-axe-plugin.d.ts","../../../node_modules/chai-a11y-axe/src/accessible.d.ts","../../../node_modules/chai-a11y-axe/index.d.ts","../../../node_modules/@types/chai-dom/index.d.ts","../../../node_modules/@sinonjs/fake-timers/types/fake-timers-src.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/sinon-chai/index.d.ts","../../../node_modules/@open-wc/testing/register-chai-plugins.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/elementupdated.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@lit/reactive-element/css-tag.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@lit/reactive-element/reactive-controller.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@lit/reactive-element/reactive-element.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/lit-html/directive.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/lit-html/lit-html.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/lit-element/lit-element.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/lit/index.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/litfixture.d.ts","../../../node_modules/@open-wc/dedupe-mixin/index.d.ts","../../../node_modules/@open-wc/scoped-elements/node_modules/@lit/reactive-element/reactive-element.d.ts","../../../node_modules/@open-wc/scoped-elements/types/src/types.d.ts","../../../node_modules/@open-wc/scoped-elements/types/src/scopedelementsmixin.d.ts","../../../node_modules/@open-wc/scoped-elements/types/index.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture-no-side-effect.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixturewrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/helpers.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/stringfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/index.d.ts","../../../node_modules/@open-wc/testing/index.d.ts","../test/board-viewer.test.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","../../../node_modules/@types/mocha/index.d.ts"],"fileInfos":[{"version":"aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8","affectsGlobalScope":true},{"version":"51b8b27c21c066bf877646e320bf6a722b80d1ade65e686923cd9d4494aef1ca","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","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":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"4632665b87204bb1caa8b44d165bce0c50dfab177df5b561b345a567cabacf9a","affectsGlobalScope":true},"12f4cfe2fe60b810c3174537bc2ddb20c1067b7768643d12cb1266fd183afb75","a0667520a6521c12128fc28cbd5b2af58eef11c5b2a7441e0f0d47f50bf6c8e3","820c26194ad4089bc503b02bbedbd86a865e9c8a05c58ef88c8d19d9c019712a","eda22dbab152e3579ee541522ba2ddc8e24e32fd7535b913709848f16c517caa","6778cdeced9eb23210b26b801cd757b03c052b7738628475acad7c7a3e94c20f","0c8a56610b08f55e29ffb466cd27626ad6dbe822312a398026e82270c63088e3","1e5743b25a63fd34ffbae89adcbf248ee17db6ed08d90079ffa93803c3e80d2a","3bdd9bf64c082a3977eda98dcd9c7dc3253532d45e957a7f869539129a04005c","2fcd2d22b1f30555e785105597cd8f57ed50300e213c4f1bbca6ae149f782c38",{"version":"bb4248c7f953233ac52332088fac897d62b82be07244e551d87c5049600b6cf7","affectsGlobalScope":true},"70f04c91d3186b1b10157157887fab664968fc9b88377785a5ee42750c202c6d","06e20da1bc94df355f22ac7a9533c2488816ec4cb9134d9b160a263629a07072","3bdd9bf64c082a3977eda98dcd9c7dc3253532d45e957a7f869539129a04005c","c311ef8d8b159d0c268b415f78c1949498dc2d14455a9891c5b8ef84625b1e41","f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d","0dcf4c2bf1bb547e2ae5b8dce4656a56fbd15e3401ff5236ea0b93b6c60f9249","9917d466f5b05c616c35c35a778464ae4ec15e00bfce90098743f448fc063d54","d375de88ab19f6c105a65fc89eca1ae782362c5c395283b0c85ef39c7b835dfe","025eb503355f4bbe3e3fecc0bd1a72ecaa9cda73db6e0ecc657779d4172695f2","7b3c1d688dcb8645b5a6c37bce5b047da92b4c298ed8709e03e987e0efb035b1","f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d","00096d29ccab72a72092cca31fb92d78b92880bddc53e5904149d21e76648c48",{"version":"87e9ab1e4466fb88c90b179130baaab80d91dd1644de2eb6512c79b24ec11216","affectsGlobalScope":true},"95ff8a2ebfc0b8b9613faf8d9c948dcc6bf8d5c0052a2d4ae21cacf6cdd28cb9","f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d","a3b56559920d52e72ecd33e987ced79156926782cd7ad40a64fcdf47ee1d526c",{"version":"decc8ea56258e70dd9faacdd89566644059201a64e89d3a98c200520339b6b84","affectsGlobalScope":true},"f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d",{"version":"27b285e901600242883d62a5fff9f5d262c6fa128b6e6c6963f981f2630a957e","affectsGlobalScope":true},"f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d","97c58f6db61d45712d91d2260994817ae2b568bbb37cc280013079b6b5d2232d","ac388c7c7a262213a3700451bc921e382a93fb27c0252c34ccf03540b4ce044b","9bdb35d0b28dcd5d8f0879bd29f0cf07b7eb48aa63be4dd44057e32fcfeb1c83","fb0107c83e2e0e75b77dacd0c3c6c3ab6844e98dce2a8f858c6f0a57c12136a6","84610cf09dee3cefc910555318f1ad7b45f1cba36905a86849324ca4fead2385","a25d1e52291791819032826af5c52987e16ffdb96e8bb69f7f1790f5ab080be6","d660961abada6b5030461f3322ef3a2e1d9fec74167574f8b590a7796cf90a72","707b4eae3d469b2f347d2083037151922f94c370a9456ebd5ac0a4fb7441c7e7","ef509d57201aa4e2e3e2b3d1fafd066a8ce68cd2caea737d539c3544f5a99a67","84c66a77a1302611ea5001dc88d10de1b5d87c6b2f30a48585495217421ce1ac","7e5708fa640b725f9071833a04d4effb427b18ad41a3725d58a525ed02aee1d6","b18b9acb5cff76a70fec4f1effd260b9f956bba6edb28c1e160979f0b9a51dd6","6ad379be95171b3bc78bdf0cc14bcbf8dfe0fcd7f6fcecb49ec83b53837efcd0","ae76529cca012d6cf66d19e4d73e13ab3d68b49d25ca1c873757decf0af3a255","49a45f01fb7d7d2f605c92c3b51dfb0b5223a97407500fbd54139466569f05c1","ee610b168de2decdae263568e64acd1c90c6d0e68a551c8a3bb9d5b58c339dbb","d1d0e3e5bd9e070e932c938bd580da6fce3b6a9e230b7156584f7b38ce3a9c4e","73b7d7df7c0dbc9a4c07c8c0f9bf6b436a0c728884e3425b120a65dd7459584e","3e96c96efad5d403b16c4b3d9cf99b3e86267a046abef94fe37cfa97ec013f23","cdc5042694d123e281a57d35bb390d7d1809e1680a47f6be797eb6029519af55","9c54f286cae1cad07e33c4c160a63eced42d8c38ae178268b993ae03bc56d447","eff140c41fcce25c311d50548f956131a0888213739d6a4f06067a9ccbc3126d","f9e70515f2d50c4f62ce32d707178918d79614366baf0311afc94039f062cd60","16ba22355926ccc8c476161d4169465973627db6f126d0979b82d254ab2faed8",{"version":"f7834c76f2d4db5fb156f2f18fdf855431843cf0d32620fcf24b836cd4a85096","affectsGlobalScope":true},"8a659f7d82d932649a78f89643c5b436953424a219d705d49b8b3d9ccd6e35ff",{"version":"75cd6dce1c5f87511772c891de86d0c9e6829e6273dea9f92a5bec9d0479d1e7","affectsGlobalScope":true},{"version":"cd711db43a952f15464b571ac11b7a440332cd52342bc92c4bf908c70688f57f","affectsGlobalScope":true},"9d8709c916778cb34830708ed47b78e9a46d1fb2eb73a682b14eee990bed4aa6",{"version":"5d90911f942229eb9049feab241739a5ced76f137948f8f42a615e5f01d4e7ea","affectsGlobalScope":true},"999a90d30a3183dcee987d0a5a7c586aba5bacbf6ce087ba8635124082ccfeea","8a5878edd52f4a720560b4c6e6247e9ddc3df6118ad9cf2f9927903b03d5f440",{"version":"d95d76d79a0351572ec5b1a6cc1e5c4bce1be82eedeed7278d6f31ea1059fa69","affectsGlobalScope":true},"6b40029289530423f407a22755c85b81740f9acfd88d2b53564f8c1657c26660","15b043358a9bac56ee6a567d61adf545b3a09e2f2ead9c3ef3cc617ed3522e71",{"version":"b98f6185455945922c7cfdad772ec1c46e5c169a2d71aca6530e041f77665f03","affectsGlobalScope":true},"65b91a3725399231d3469529b5e27b85bf2aa98013e607f308e5fe260b47eeff","a11181f6d68200e83ccb1fb48b262a7132a3257e0a230f41c9dc4c351964297a","0c8a56610b08f55e29ffb466cd27626ad6dbe822312a398026e82270c63088e3","1e5743b25a63fd34ffbae89adcbf248ee17db6ed08d90079ffa93803c3e80d2a",{"version":"a25a80c5c07b61db0d40c5baba89c6584048536596e7e3ee7c632c46f641d932","affectsGlobalScope":true},"70f04c91d3186b1b10157157887fab664968fc9b88377785a5ee42750c202c6d","a0c7f94ed02009f741ef243b7adbfced3d1d2e2d79ea4d16af73946fac25dbf4",{"version":"f1bfa18deca3c5a0e2763c2757debee18626820315f50ab551d9cb283eb9a49f","affectsGlobalScope":true},"f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d","245731ddcde842fa1024619d54409f90128bb64070c6729088697944dbc58bd5","88cda4269c54f0803834fd62b2fac61af8bff7a085693f7ca9df85c1f19dee8a",{"version":"a25a80c5c07b61db0d40c5baba89c6584048536596e7e3ee7c632c46f641d932","affectsGlobalScope":true},{"version":"494f93d7c6e2178b8e0f53cc10977d2913753a6d7442907022b970d5c0a13d05","affectsGlobalScope":true},"8acb762a884708f254d0bfa25565c14c2a5b79d3767a13d03563ebf6520d0385","fdf0aa1a72ff0188a9013926201a391116ef6701cd439b89850786abdf755fb8","f0b43f422b01042dd784bee89f9c67330001a575258bb49d28fd56e1a581e92e","abf9ea97b78a7b239186cf5b7ed59c4a593abac3c408c8c95fc5e604cfdfdb43","ae91c9161caf0af81c89e780a045fc5ea8382407e516342e409c5db9161d3b32","2c387828a523cc77a4300f5deb063651c9346c5a36ccfbfc127c38df8ab45b0c","d598157512ae6e0d3aa6bb0dd261ae34845831dccf7bc7739695ee2589eb76f5","88740fc0276ac55a747251bc46c2ed96bf8d7455b0a800eff33b1a16df2b36e8","d2173e08898108c0aaa6dbfed27725b4a71f5817153800c86f03fa06456a2fc7","31f9c5299e126171ac07b890cb389079c42db2eb01e15858316e5a4b686a4cfa","31c268bcfbbb3a89dd4019ff8001069024921c2c0fb73bccc6f8e6f2da7bff09","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"34f1d0e1f63dd8c0bdc1fd15ec2b7216fd709953781c4d1b1213d88e2d94db9e","affectsGlobalScope":true},"4be51d991034b331db6a518e5a9607cb136b6d3ab2a691191a7d481354836a5f",{"version":"fa56e5f529c26a31207fecafbfd88136936868a4c17f8a347f0e8e6ea18309ad","affectsGlobalScope":true},"2f3a95a0e681afcde084379ed3b404ee09971425cf4600c3dd8b6f4adf058896","3fe5750809a130a0c9ee5dbca9e262913a10d1deda3ddb1280a77b099197e937",{"version":"d7e32c36d30042b47cd8620b197d3e3381954cf8baa413dc4273796e4cf718a1","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","41a3a8f7ba70f6e10fad838a363157217163bd897416480d0ed516b5d63e727e","53cf527b7d4a7ee1c16eeadff678d6df9f2a98cd5ece18f0f9211d8080204734","0038ccd1c90bc523ee4f7eeabc3f4082a48a5775415855e46f142447b9ad1114","aacb7a1f78d635e42d1112144c83508f340722e5293f7f14091581193618dca3","87c064559d14068edb2861fc7d48c1a8196a63523e00cc29aadd57c0eefb24a5","226afbe8d2d18dc02d1aebb449af0a11a278acb98b42c763aeec6d5a8e654441",{"version":"c3a43212afe9781a304d8f5dd3895fd38a143ac46fb64b4d343122e38c83a9ab","affectsGlobalScope":true},"15bd9405b2d4353f043fa12442758a51aba5146d407aea031118605af9799032","01862fc59b8c037ea9fe03c6f3dc1ffc95bfc16fb37d58d6e7603706b9041d97","2163cfbd3438e495c08fb59b29740b1f96c7aec8ebb4faf9c9156f4fe94cb501","644a9cb29158878e67199d04c06699575d03812c90ea40c69d5a075fb8ec6b79","1f66294c9e9c24e84552cfaa70a27422811649de5a2efc69d3cf2ef38e833308","a82a261dac2131e55347889de6846a3e84741283d93d6525550ab3976be85cf6",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"1207275e727d14356922953c0597c77acad13e9812a0109a756c0c59ff0e87f3","dce04e108fbcbe674bceeea757269b7775a8a07693d6a58f55b36e649541675a","c90911387c5e9e024c309e63a14946a9bc3c71293e8f9d09eece16e11f167974","066f0de5d2acf0be06eb29a5ada8107f93891d7a983e6ba095260406650d742d",{"version":"6ae884f4861da8949f2c466b2d44fb087b2f1de82fe3449c3c52bd1d8cf998e6","affectsGlobalScope":true},"cbe717c2735bf2a6ceb29c2131232e74f4f95878072873dfb263566035024f99","5fd00b0ad7ef4e7eb69341da6ec17400922860afbdbc2cc46a37eba833d8a0bd","bc0c9dbd2b273d9466a31143a5f0118e8902232d906b3987d19d1bd67b96ee5d","757fec48e36f86c8b791b770c31f510d0e53817a95f61130df26df57cb382113","c5274b1cfbfb2610697727d460147756b686139af95cc487d894bc1c41133254","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"caa0d6f003d642fab06c4a90ac3c86ad0889b7693294e04360e935ed5376796b","affectsGlobalScope":true},"a279435e7813d1f061c0cab6ab77b1b9377e8d96851e5ed4a76a1ce6eb6e628f","28e6ac6505a2b6755ce0752cd4d2dbd880e0e4e9bbfeaa3c777821825db2711a",{"version":"8a4f510bad5e5f5312fd966d20675381a3467c0c8d1b528b7f8e5ebb732ba1c9","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","8ee0dfa79a0b3e43bd5c0554157051abd87ef47df49884eba3e6a10bba1ecdc1","dcbcf0056d7bcd4e716bd0cc9223913e58373095c4750250f525694d88f49962","715b8aedc97884235eac2346481e7f1cca0379f870a58a60d22f444f8b7c59a8","3dfbe800bece5d51c4a4abf726598bf4aa80b19ae4e8288ada7cf75efdc40930","2ac6c37c23dbb6a87d0657fbaa509bd077dd4ea066fecff1e94a01e19410d8c6","5d50d7b266824bd435c9696f71d64041db90667b6f95d5285adfa6946a73dde5","58250ab8b2768e6d713bb8271d4d1ed1029069bb94631764538a474fe1cb1eca","b9d6227d9cf5e2aac16c149377136b01e8692c0f82f185f6192c78285236e71d","555122eabf41efe584457b407892ed4420c5dc5404004eafed8bc365459f1eef","56f3ed639ae070160aaa79a626e0f956374c7dcd2093216f48cc952981ea2e93",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b77af427289204692955d5095b9c3c8505881678879fa3c8c89b6cce7babb9ee",{"version":"c4c03cf65951d980ba618ae9601d10438730803fc9c8a1f7b34af8739981e205","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":false,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./","rootDir":"..","sourceMap":true,"strict":true,"target":5},"fileIdsList":[[47,172],[70,172],[47,70,172],[45,46,172],[41,42,172],[172],[41,42,43,172],[42,44,54,55,172],[47,51,53,172],[54,62,63,172],[54,65,172],[54,172],[54,55,56,58,59,172],[54,61,172],[55,172],[42,57,172],[41,58,172],[108,109,172],[119,172],[110,116,118,172],[110,116,172],[94,95,172],[96,172],[95,97,172],[110,112,172],[112,172],[49,111,172],[110,112,113,172],[107,114,115,122,123,124,125,172],[115,120,172],[121,172],[116,172],[114,121,172],[94,106,126,172],[98,101,102,105,172],[94,172],[129,172],[132,172],[133,138,172],[134,144,145,152,161,171,172],[134,135,144,152,172],[136,172],[137,138,145,153,172],[138,161,168,172],[139,141,144,152,172],[140,172],[141,142,172],[143,144,172],[144,172],[144,145,146,161,171,172],[144,145,146,161,172],[147,152,161,171,172],[144,145,147,148,152,161,168,171,172],[147,149,161,168,171,172],[129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178],[144,150,172],[151,171,172],[141,144,152,161,172],[153,172],[154,172],[132,155,172],[156,170,172,176],[157,172],[158,172],[144,159,172],[159,160,172,174],[144,161,162,163,172],[161,163,172],[161,162,172],[164,172],[165,172],[144,166,167,172],[166,167,172],[138,152,168,172],[169,172],[152,170,172],[133,147,158,171,172],[138,172],[161,172,173],[172,174],[172,175],[133,138,144,146,155,161,171,172,174,176],[161,172,177],[94,104,172],[103,172],[48,172],[100,172],[99,172],[70,71,72,73,74,75,76,77,78,172],[47,51,53,87,172],[47,51,172],[51,172],[49,50,172],[71,72,73,74,75,76,77,78,172],[40,82,90,172],[40,88,172],[40,66,68,69,79,81,83,85,86,89,172],[40,66,68,69,79,80,81,92,172],[40,69,79,84,172],[40,69,79,172],[40,172],[40,69,172],[40,69,82,127,172]],"referencedMap":[[70,1],[71,2],[74,3],[72,3],[76,3],[78,3],[77,3],[75,3],[73,2],[52,4],[43,5],[41,6],[44,7],[42,6],[56,8],[54,9],[45,6],[46,6],[47,4],[55,6],[65,10],[66,11],[64,9],[68,12],[67,9],[61,13],[62,14],[60,9],[63,15],[58,16],[59,17],[57,6],[116,6],[117,18],[120,19],[119,20],[118,21],[96,22],[97,23],[95,6],[98,24],[108,6],[109,6],[110,18],[113,25],[111,26],[112,27],[114,28],[126,29],[107,6],[121,30],[122,31],[123,6],[124,32],[115,33],[125,31],[127,34],[106,35],[103,6],[102,36],[94,6],[180,6],[129,37],[130,37],[132,38],[133,39],[134,40],[135,41],[136,42],[137,43],[138,44],[139,45],[140,46],[141,47],[142,47],[143,48],[144,49],[145,50],[146,51],[131,6],[178,6],[147,52],[148,53],[149,54],[179,55],[150,56],[151,57],[152,58],[153,59],[154,60],[155,61],[156,62],[157,63],[158,64],[159,65],[160,66],[161,67],[163,68],[162,69],[164,70],[165,71],[166,72],[167,73],[168,74],[169,75],[170,76],[171,77],[172,78],[173,79],[174,80],[175,81],[176,82],[177,83],[105,84],[104,85],[49,86],[48,6],[99,36],[101,87],[100,88],[87,89],[88,90],[53,91],[50,92],[51,93],[79,94],[69,9],[40,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[38,6],[34,6],[35,6],[36,6],[37,6],[1,6],[39,6],[91,95],[89,96],[90,97],[82,98],[85,99],[84,100],[83,100],[81,101],[80,101],[86,101],[92,6],[93,102],[128,103]],"exportedModulesMap":[[70,1],[71,2],[74,3],[72,3],[76,3],[78,3],[77,3],[75,3],[73,2],[52,4],[43,5],[41,6],[44,7],[42,6],[56,8],[54,9],[45,6],[46,6],[47,4],[55,6],[65,10],[66,11],[64,9],[68,12],[67,9],[61,13],[62,14],[60,9],[63,15],[58,16],[59,17],[57,6],[116,6],[117,18],[120,19],[119,20],[118,21],[96,22],[97,23],[95,6],[98,24],[108,6],[109,6],[110,18],[113,25],[111,26],[112,27],[114,28],[126,29],[107,6],[121,30],[122,31],[123,6],[124,32],[115,33],[125,31],[127,34],[106,35],[103,6],[102,36],[94,6],[180,6],[129,37],[130,37],[132,38],[133,39],[134,40],[135,41],[136,42],[137,43],[138,44],[139,45],[140,46],[141,47],[142,47],[143,48],[144,49],[145,50],[146,51],[131,6],[178,6],[147,52],[148,53],[149,54],[179,55],[150,56],[151,57],[152,58],[153,59],[154,60],[155,61],[156,62],[157,63],[158,64],[159,65],[160,66],[161,67],[163,68],[162,69],[164,70],[165,71],[166,72],[167,73],[168,74],[169,75],[170,76],[171,77],[172,78],[173,79],[174,80],[175,81],[176,82],[177,83],[105,84],[104,85],[49,86],[48,6],[99,36],[101,87],[100,88],[87,89],[88,90],[53,91],[50,92],[51,93],[79,94],[69,9],[40,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[38,6],[34,6],[35,6],[36,6],[37,6],[1,6],[39,6],[91,95],[89,96],[90,97],[82,98],[85,99],[84,100],[83,100],[81,101],[80,101],[86,101],[92,6],[93,102],[128,103]],"semanticDiagnosticsPerFile":[70,71,74,72,76,78,77,75,73,52,43,41,44,42,56,54,45,46,47,55,65,66,64,68,67,61,62,60,63,58,59,57,116,117,120,119,118,96,97,95,98,108,109,110,113,111,112,114,126,107,121,122,123,124,115,125,127,106,103,102,94,180,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,131,178,147,148,149,179,150,151,152,153,154,155,156,157,158,159,160,161,163,162,164,165,166,167,168,169,170,171,172,173,174,175,176,177,105,104,49,48,99,101,100,87,88,53,50,51,79,69,40,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,91,89,90,82,85,84,83,81,80,86,92,93,128]},"version":"4.4.4"}
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","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@material/base/foundation.d.ts","../../../node_modules/@material/base/types.d.ts","../../../node_modules/@material/base/component.d.ts","../../../node_modules/@material/base/index.d.ts","../../../node_modules/@material/mwc-base/node_modules/lit/node_modules/@lit/reactive-element/css-tag.d.ts","../../../node_modules/@material/mwc-base/node_modules/lit/node_modules/@lit/reactive-element/reactive-controller.d.ts","../../../node_modules/@material/mwc-base/node_modules/lit/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/reactive-element/reactive-element.d.ts","../../../node_modules/lit-element/lit-element.d.ts","../../../node_modules/@material/mwc-base/node_modules/lit/index.d.ts","../../../node_modules/@material/mwc-base/utils.d.ts","../../../node_modules/@material/mwc-base/base-element.d.ts","../../../node_modules/@material/ripple/types.d.ts","../../../node_modules/@material/ripple/adapter.d.ts","../../../node_modules/@material/ripple/foundation.d.ts","../../../node_modules/@material/mwc-ripple/node_modules/lit/index.d.ts","../../../node_modules/@material/mwc-ripple/mwc-ripple-base.d.ts","../../../node_modules/@material/mwc-ripple/mwc-ripple.d.ts","../../../node_modules/@material/mwc-ripple/ripple-handlers.d.ts","../../../node_modules/@material/mwc-fab/node_modules/lit/index.d.ts","../../../node_modules/@material/mwc-fab/mwc-fab-base.d.ts","../../../node_modules/@material/mwc-fab/mwc-fab.d.ts","../../../node_modules/@material/mwc-icon/node_modules/lit/index.d.ts","../../../node_modules/@material/mwc-icon/mwc-icon.d.ts","../../../node_modules/lit/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/utils/os.ts","../src/utils/fullscreen.ts","../src/ox-board-viewer.ts","../src/player/ox-board-wrapper.ts","../src/player/ox-board-player-grid.ts","../src/player/ox-board-player-carousel.ts","../src/utils/swipe-listener.ts","../../../node_modules/lit-element/decorators.d.ts","../../../node_modules/lit-element/index.d.ts","../src/ox-board-player-style.ts","../src/ox-board-player.ts","../src/index.ts","../src/utils/things-scene.d.ts","../stories/index.stories.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/get-diffable-html.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff-plugin.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/index.d.ts","../../../node_modules/chai-a11y-axe/chai-a11y-axe-plugin.d.ts","../../../node_modules/chai-a11y-axe/src/accessible.d.ts","../../../node_modules/chai-a11y-axe/index.d.ts","../../../node_modules/@types/chai-dom/index.d.ts","../../../node_modules/@sinonjs/fake-timers/types/fake-timers-src.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/sinon-chai/index.d.ts","../../../node_modules/@open-wc/testing/register-chai-plugins.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/elementupdated.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@lit/reactive-element/css-tag.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@lit/reactive-element/reactive-controller.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@lit/reactive-element/reactive-element.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/lit-html/directive.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/lit-html/lit-html.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/lit-element/lit-element.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/lit/index.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/litfixture.d.ts","../../../node_modules/@open-wc/dedupe-mixin/index.d.ts","../../../node_modules/@open-wc/scoped-elements/node_modules/@lit/reactive-element/reactive-element.d.ts","../../../node_modules/@open-wc/scoped-elements/types/src/types.d.ts","../../../node_modules/@open-wc/scoped-elements/types/src/scopedelementsmixin.d.ts","../../../node_modules/@open-wc/scoped-elements/types/index.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture-no-side-effect.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixturewrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/helpers.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/stringfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/index.d.ts","../../../node_modules/@open-wc/testing/index.d.ts","../test/board-viewer.test.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","../../../node_modules/@types/mocha/index.d.ts"],"fileInfos":[{"version":"aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8","affectsGlobalScope":true},{"version":"51b8b27c21c066bf877646e320bf6a722b80d1ade65e686923cd9d4494aef1ca","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","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":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"4632665b87204bb1caa8b44d165bce0c50dfab177df5b561b345a567cabacf9a","affectsGlobalScope":true},"12f4cfe2fe60b810c3174537bc2ddb20c1067b7768643d12cb1266fd183afb75","a0667520a6521c12128fc28cbd5b2af58eef11c5b2a7441e0f0d47f50bf6c8e3","820c26194ad4089bc503b02bbedbd86a865e9c8a05c58ef88c8d19d9c019712a","eda22dbab152e3579ee541522ba2ddc8e24e32fd7535b913709848f16c517caa","6778cdeced9eb23210b26b801cd757b03c052b7738628475acad7c7a3e94c20f","0c8a56610b08f55e29ffb466cd27626ad6dbe822312a398026e82270c63088e3","1e5743b25a63fd34ffbae89adcbf248ee17db6ed08d90079ffa93803c3e80d2a","3bdd9bf64c082a3977eda98dcd9c7dc3253532d45e957a7f869539129a04005c","2fcd2d22b1f30555e785105597cd8f57ed50300e213c4f1bbca6ae149f782c38",{"version":"bb4248c7f953233ac52332088fac897d62b82be07244e551d87c5049600b6cf7","affectsGlobalScope":true},"70f04c91d3186b1b10157157887fab664968fc9b88377785a5ee42750c202c6d","06e20da1bc94df355f22ac7a9533c2488816ec4cb9134d9b160a263629a07072","3bdd9bf64c082a3977eda98dcd9c7dc3253532d45e957a7f869539129a04005c","c311ef8d8b159d0c268b415f78c1949498dc2d14455a9891c5b8ef84625b1e41","f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d","0dcf4c2bf1bb547e2ae5b8dce4656a56fbd15e3401ff5236ea0b93b6c60f9249","9917d466f5b05c616c35c35a778464ae4ec15e00bfce90098743f448fc063d54","d375de88ab19f6c105a65fc89eca1ae782362c5c395283b0c85ef39c7b835dfe","025eb503355f4bbe3e3fecc0bd1a72ecaa9cda73db6e0ecc657779d4172695f2","7b3c1d688dcb8645b5a6c37bce5b047da92b4c298ed8709e03e987e0efb035b1","f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d","00096d29ccab72a72092cca31fb92d78b92880bddc53e5904149d21e76648c48",{"version":"87e9ab1e4466fb88c90b179130baaab80d91dd1644de2eb6512c79b24ec11216","affectsGlobalScope":true},"95ff8a2ebfc0b8b9613faf8d9c948dcc6bf8d5c0052a2d4ae21cacf6cdd28cb9","f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d","a3b56559920d52e72ecd33e987ced79156926782cd7ad40a64fcdf47ee1d526c",{"version":"decc8ea56258e70dd9faacdd89566644059201a64e89d3a98c200520339b6b84","affectsGlobalScope":true},"f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d",{"version":"27b285e901600242883d62a5fff9f5d262c6fa128b6e6c6963f981f2630a957e","affectsGlobalScope":true},"f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d","97c58f6db61d45712d91d2260994817ae2b568bbb37cc280013079b6b5d2232d","ac388c7c7a262213a3700451bc921e382a93fb27c0252c34ccf03540b4ce044b","9bdb35d0b28dcd5d8f0879bd29f0cf07b7eb48aa63be4dd44057e32fcfeb1c83","fb0107c83e2e0e75b77dacd0c3c6c3ab6844e98dce2a8f858c6f0a57c12136a6","84610cf09dee3cefc910555318f1ad7b45f1cba36905a86849324ca4fead2385","a25d1e52291791819032826af5c52987e16ffdb96e8bb69f7f1790f5ab080be6","d660961abada6b5030461f3322ef3a2e1d9fec74167574f8b590a7796cf90a72","707b4eae3d469b2f347d2083037151922f94c370a9456ebd5ac0a4fb7441c7e7","ef509d57201aa4e2e3e2b3d1fafd066a8ce68cd2caea737d539c3544f5a99a67","84c66a77a1302611ea5001dc88d10de1b5d87c6b2f30a48585495217421ce1ac","7e5708fa640b725f9071833a04d4effb427b18ad41a3725d58a525ed02aee1d6","b18b9acb5cff76a70fec4f1effd260b9f956bba6edb28c1e160979f0b9a51dd6",{"version":"ed0b2cb706160bd2300432fdb455951dd1c9b4793a925ad41c811f903c0d8d31","signature":"b8e63b614f6a1a5fe08b04c27d5b5ffd86533684b4b7e482f3d6e5de34f31fd3"},"ae76529cca012d6cf66d19e4d73e13ab3d68b49d25ca1c873757decf0af3a255","49a45f01fb7d7d2f605c92c3b51dfb0b5223a97407500fbd54139466569f05c1","ee610b168de2decdae263568e64acd1c90c6d0e68a551c8a3bb9d5b58c339dbb","d1d0e3e5bd9e070e932c938bd580da6fce3b6a9e230b7156584f7b38ce3a9c4e","73b7d7df7c0dbc9a4c07c8c0f9bf6b436a0c728884e3425b120a65dd7459584e","3e96c96efad5d403b16c4b3d9cf99b3e86267a046abef94fe37cfa97ec013f23","cdc5042694d123e281a57d35bb390d7d1809e1680a47f6be797eb6029519af55","9c54f286cae1cad07e33c4c160a63eced42d8c38ae178268b993ae03bc56d447",{"version":"eff140c41fcce25c311d50548f956131a0888213739d6a4f06067a9ccbc3126d","signature":"47613d3a5d16f083e93999838ab6985c4d703fb0eb341fbcd80d61c4367bd788"},"f9e70515f2d50c4f62ce32d707178918d79614366baf0311afc94039f062cd60","16ba22355926ccc8c476161d4169465973627db6f126d0979b82d254ab2faed8",{"version":"f7834c76f2d4db5fb156f2f18fdf855431843cf0d32620fcf24b836cd4a85096","affectsGlobalScope":true},"8a659f7d82d932649a78f89643c5b436953424a219d705d49b8b3d9ccd6e35ff",{"version":"75cd6dce1c5f87511772c891de86d0c9e6829e6273dea9f92a5bec9d0479d1e7","affectsGlobalScope":true},{"version":"cd711db43a952f15464b571ac11b7a440332cd52342bc92c4bf908c70688f57f","affectsGlobalScope":true},"9d8709c916778cb34830708ed47b78e9a46d1fb2eb73a682b14eee990bed4aa6",{"version":"5d90911f942229eb9049feab241739a5ced76f137948f8f42a615e5f01d4e7ea","affectsGlobalScope":true},"999a90d30a3183dcee987d0a5a7c586aba5bacbf6ce087ba8635124082ccfeea","8a5878edd52f4a720560b4c6e6247e9ddc3df6118ad9cf2f9927903b03d5f440",{"version":"d95d76d79a0351572ec5b1a6cc1e5c4bce1be82eedeed7278d6f31ea1059fa69","affectsGlobalScope":true},"6b40029289530423f407a22755c85b81740f9acfd88d2b53564f8c1657c26660","15b043358a9bac56ee6a567d61adf545b3a09e2f2ead9c3ef3cc617ed3522e71",{"version":"b98f6185455945922c7cfdad772ec1c46e5c169a2d71aca6530e041f77665f03","affectsGlobalScope":true},"65b91a3725399231d3469529b5e27b85bf2aa98013e607f308e5fe260b47eeff","a11181f6d68200e83ccb1fb48b262a7132a3257e0a230f41c9dc4c351964297a","0c8a56610b08f55e29ffb466cd27626ad6dbe822312a398026e82270c63088e3","1e5743b25a63fd34ffbae89adcbf248ee17db6ed08d90079ffa93803c3e80d2a",{"version":"a25a80c5c07b61db0d40c5baba89c6584048536596e7e3ee7c632c46f641d932","affectsGlobalScope":true},"70f04c91d3186b1b10157157887fab664968fc9b88377785a5ee42750c202c6d","a0c7f94ed02009f741ef243b7adbfced3d1d2e2d79ea4d16af73946fac25dbf4",{"version":"f1bfa18deca3c5a0e2763c2757debee18626820315f50ab551d9cb283eb9a49f","affectsGlobalScope":true},"f07a77a7fb1d49aa2b61cb68bf712a083487acd7130d20223a83de03af0c257d","245731ddcde842fa1024619d54409f90128bb64070c6729088697944dbc58bd5","88cda4269c54f0803834fd62b2fac61af8bff7a085693f7ca9df85c1f19dee8a",{"version":"a25a80c5c07b61db0d40c5baba89c6584048536596e7e3ee7c632c46f641d932","affectsGlobalScope":true},{"version":"494f93d7c6e2178b8e0f53cc10977d2913753a6d7442907022b970d5c0a13d05","affectsGlobalScope":true},"8acb762a884708f254d0bfa25565c14c2a5b79d3767a13d03563ebf6520d0385","fdf0aa1a72ff0188a9013926201a391116ef6701cd439b89850786abdf755fb8","f0b43f422b01042dd784bee89f9c67330001a575258bb49d28fd56e1a581e92e","abf9ea97b78a7b239186cf5b7ed59c4a593abac3c408c8c95fc5e604cfdfdb43","ae91c9161caf0af81c89e780a045fc5ea8382407e516342e409c5db9161d3b32","2c387828a523cc77a4300f5deb063651c9346c5a36ccfbfc127c38df8ab45b0c","d598157512ae6e0d3aa6bb0dd261ae34845831dccf7bc7739695ee2589eb76f5","88740fc0276ac55a747251bc46c2ed96bf8d7455b0a800eff33b1a16df2b36e8","d2173e08898108c0aaa6dbfed27725b4a71f5817153800c86f03fa06456a2fc7",{"version":"31f9c5299e126171ac07b890cb389079c42db2eb01e15858316e5a4b686a4cfa","signature":"eb37b310d4a36ceef3935d066cf308641c433af023c3a27f00f69197ae8c8ea6"},"31c268bcfbbb3a89dd4019ff8001069024921c2c0fb73bccc6f8e6f2da7bff09","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"34f1d0e1f63dd8c0bdc1fd15ec2b7216fd709953781c4d1b1213d88e2d94db9e","affectsGlobalScope":true},"4be51d991034b331db6a518e5a9607cb136b6d3ab2a691191a7d481354836a5f",{"version":"fa56e5f529c26a31207fecafbfd88136936868a4c17f8a347f0e8e6ea18309ad","affectsGlobalScope":true},"2f3a95a0e681afcde084379ed3b404ee09971425cf4600c3dd8b6f4adf058896","3fe5750809a130a0c9ee5dbca9e262913a10d1deda3ddb1280a77b099197e937",{"version":"d7e32c36d30042b47cd8620b197d3e3381954cf8baa413dc4273796e4cf718a1","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","41a3a8f7ba70f6e10fad838a363157217163bd897416480d0ed516b5d63e727e","53cf527b7d4a7ee1c16eeadff678d6df9f2a98cd5ece18f0f9211d8080204734","0038ccd1c90bc523ee4f7eeabc3f4082a48a5775415855e46f142447b9ad1114","aacb7a1f78d635e42d1112144c83508f340722e5293f7f14091581193618dca3","87c064559d14068edb2861fc7d48c1a8196a63523e00cc29aadd57c0eefb24a5","226afbe8d2d18dc02d1aebb449af0a11a278acb98b42c763aeec6d5a8e654441",{"version":"c3a43212afe9781a304d8f5dd3895fd38a143ac46fb64b4d343122e38c83a9ab","affectsGlobalScope":true},"15bd9405b2d4353f043fa12442758a51aba5146d407aea031118605af9799032","01862fc59b8c037ea9fe03c6f3dc1ffc95bfc16fb37d58d6e7603706b9041d97","2163cfbd3438e495c08fb59b29740b1f96c7aec8ebb4faf9c9156f4fe94cb501","644a9cb29158878e67199d04c06699575d03812c90ea40c69d5a075fb8ec6b79","1f66294c9e9c24e84552cfaa70a27422811649de5a2efc69d3cf2ef38e833308","a82a261dac2131e55347889de6846a3e84741283d93d6525550ab3976be85cf6",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"1207275e727d14356922953c0597c77acad13e9812a0109a756c0c59ff0e87f3","dce04e108fbcbe674bceeea757269b7775a8a07693d6a58f55b36e649541675a","c90911387c5e9e024c309e63a14946a9bc3c71293e8f9d09eece16e11f167974","066f0de5d2acf0be06eb29a5ada8107f93891d7a983e6ba095260406650d742d",{"version":"6ae884f4861da8949f2c466b2d44fb087b2f1de82fe3449c3c52bd1d8cf998e6","affectsGlobalScope":true},"cbe717c2735bf2a6ceb29c2131232e74f4f95878072873dfb263566035024f99","5fd00b0ad7ef4e7eb69341da6ec17400922860afbdbc2cc46a37eba833d8a0bd","bc0c9dbd2b273d9466a31143a5f0118e8902232d906b3987d19d1bd67b96ee5d","757fec48e36f86c8b791b770c31f510d0e53817a95f61130df26df57cb382113","c5274b1cfbfb2610697727d460147756b686139af95cc487d894bc1c41133254","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"caa0d6f003d642fab06c4a90ac3c86ad0889b7693294e04360e935ed5376796b","affectsGlobalScope":true},"a279435e7813d1f061c0cab6ab77b1b9377e8d96851e5ed4a76a1ce6eb6e628f","28e6ac6505a2b6755ce0752cd4d2dbd880e0e4e9bbfeaa3c777821825db2711a",{"version":"8a4f510bad5e5f5312fd966d20675381a3467c0c8d1b528b7f8e5ebb732ba1c9","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","8ee0dfa79a0b3e43bd5c0554157051abd87ef47df49884eba3e6a10bba1ecdc1","dcbcf0056d7bcd4e716bd0cc9223913e58373095c4750250f525694d88f49962","715b8aedc97884235eac2346481e7f1cca0379f870a58a60d22f444f8b7c59a8","3dfbe800bece5d51c4a4abf726598bf4aa80b19ae4e8288ada7cf75efdc40930","2ac6c37c23dbb6a87d0657fbaa509bd077dd4ea066fecff1e94a01e19410d8c6","5d50d7b266824bd435c9696f71d64041db90667b6f95d5285adfa6946a73dde5","58250ab8b2768e6d713bb8271d4d1ed1029069bb94631764538a474fe1cb1eca","b9d6227d9cf5e2aac16c149377136b01e8692c0f82f185f6192c78285236e71d","555122eabf41efe584457b407892ed4420c5dc5404004eafed8bc365459f1eef","56f3ed639ae070160aaa79a626e0f956374c7dcd2093216f48cc952981ea2e93",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b77af427289204692955d5095b9c3c8505881678879fa3c8c89b6cce7babb9ee",{"version":"c4c03cf65951d980ba618ae9601d10438730803fc9c8a1f7b34af8739981e205","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":false,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./","rootDir":"..","sourceMap":true,"strict":true,"target":5},"fileIdsList":[[47,172],[70,172],[47,70,172],[45,46,172],[41,42,172],[172],[41,42,43,172],[42,44,54,55,172],[47,51,53,172],[54,62,63,172],[54,65,172],[54,172],[54,55,56,58,59,172],[54,61,172],[55,172],[42,57,172],[41,58,172],[108,109,172],[119,172],[110,116,118,172],[110,116,172],[94,95,172],[96,172],[95,97,172],[110,112,172],[112,172],[49,111,172],[110,112,113,172],[107,114,115,122,123,124,125,172],[115,120,172],[121,172],[116,172],[114,121,172],[94,106,126,172],[98,101,102,105,172],[94,172],[129,172],[132,172],[133,138,172],[134,144,145,152,161,171,172],[134,135,144,152,172],[136,172],[137,138,145,153,172],[138,161,168,172],[139,141,144,152,172],[140,172],[141,142,172],[143,144,172],[144,172],[144,145,146,161,171,172],[144,145,146,161,172],[147,152,161,171,172],[144,145,147,148,152,161,168,171,172],[147,149,161,168,171,172],[129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178],[144,150,172],[151,171,172],[141,144,152,161,172],[153,172],[154,172],[132,155,172],[156,170,172,176],[157,172],[158,172],[144,159,172],[159,160,172,174],[144,161,162,163,172],[161,163,172],[161,162,172],[164,172],[165,172],[144,166,167,172],[166,167,172],[138,152,168,172],[169,172],[152,170,172],[133,147,158,171,172],[138,172],[161,172,173],[172,174],[172,175],[133,138,144,146,155,161,171,172,174,176],[161,172,177],[94,104,172],[103,172],[48,172],[100,172],[99,172],[70,71,72,73,74,75,76,77,78,172],[47,51,53,87,172],[47,51,172],[51,172],[49,50,172],[71,72,73,74,75,76,77,78,172],[40,82,90,172],[40,88,172],[40,66,68,69,79,81,83,85,86,89,172],[40,66,68,69,79,80,81,92,172],[40,69,79,84,172],[40,69,79,172],[40,172],[40,69,172],[40,69,82,127,172],[82,90],[51,66,68,69]],"referencedMap":[[70,1],[71,2],[74,3],[72,3],[76,3],[78,3],[77,3],[75,3],[73,2],[52,4],[43,5],[41,6],[44,7],[42,6],[56,8],[54,9],[45,6],[46,6],[47,4],[55,6],[65,10],[66,11],[64,9],[68,12],[67,9],[61,13],[62,14],[60,9],[63,15],[58,16],[59,17],[57,6],[116,6],[117,18],[120,19],[119,20],[118,21],[96,22],[97,23],[95,6],[98,24],[108,6],[109,6],[110,18],[113,25],[111,26],[112,27],[114,28],[126,29],[107,6],[121,30],[122,31],[123,6],[124,32],[115,33],[125,31],[127,34],[106,35],[103,6],[102,36],[94,6],[180,6],[129,37],[130,37],[132,38],[133,39],[134,40],[135,41],[136,42],[137,43],[138,44],[139,45],[140,46],[141,47],[142,47],[143,48],[144,49],[145,50],[146,51],[131,6],[178,6],[147,52],[148,53],[149,54],[179,55],[150,56],[151,57],[152,58],[153,59],[154,60],[155,61],[156,62],[157,63],[158,64],[159,65],[160,66],[161,67],[163,68],[162,69],[164,70],[165,71],[166,72],[167,73],[168,74],[169,75],[170,76],[171,77],[172,78],[173,79],[174,80],[175,81],[176,82],[177,83],[105,84],[104,85],[49,86],[48,6],[99,36],[101,87],[100,88],[87,89],[88,90],[53,91],[50,92],[51,93],[79,94],[69,9],[40,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[38,6],[34,6],[35,6],[36,6],[37,6],[1,6],[39,6],[91,95],[89,96],[90,97],[82,98],[85,99],[84,100],[83,100],[81,101],[80,101],[86,101],[92,6],[93,102],[128,103]],"exportedModulesMap":[[70,1],[71,2],[74,3],[72,3],[76,3],[78,3],[77,3],[75,3],[73,2],[52,4],[43,5],[41,6],[44,7],[42,6],[56,8],[54,9],[45,6],[46,6],[47,4],[55,6],[65,10],[66,11],[64,9],[68,12],[67,9],[61,13],[62,14],[60,9],[63,15],[58,16],[59,17],[57,6],[116,6],[117,18],[120,19],[119,20],[118,21],[96,22],[97,23],[95,6],[98,24],[108,6],[109,6],[110,18],[113,25],[111,26],[112,27],[114,28],[126,29],[107,6],[121,30],[122,31],[123,6],[124,32],[115,33],[125,31],[127,34],[106,35],[103,6],[102,36],[94,6],[180,6],[129,37],[130,37],[132,38],[133,39],[134,40],[135,41],[136,42],[137,43],[138,44],[139,45],[140,46],[141,47],[142,47],[143,48],[144,49],[145,50],[146,51],[131,6],[178,6],[147,52],[148,53],[149,54],[179,55],[150,56],[151,57],[152,58],[153,59],[154,60],[155,61],[156,62],[157,63],[158,64],[159,65],[160,66],[161,67],[163,68],[162,69],[164,70],[165,71],[166,72],[167,73],[168,74],[169,75],[170,76],[171,77],[172,78],[173,79],[174,80],[175,81],[176,82],[177,83],[105,84],[104,85],[49,86],[48,6],[99,36],[101,87],[100,88],[87,89],[88,90],[53,91],[50,92],[51,93],[79,94],[69,9],[40,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[38,6],[34,6],[35,6],[36,6],[37,6],[1,6],[39,6],[91,104],[89,96],[90,97],[82,105],[85,99],[84,100],[83,100],[81,101],[80,101],[86,101],[92,6],[93,102]],"semanticDiagnosticsPerFile":[70,71,74,72,76,78,77,75,73,52,43,41,44,42,56,54,45,46,47,55,65,66,64,68,67,61,62,60,63,58,59,57,116,117,120,119,118,96,97,95,98,108,109,110,113,111,112,114,126,107,121,122,123,124,115,125,127,106,103,102,94,180,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,131,178,147,148,149,179,150,151,152,153,154,155,156,157,158,159,160,161,163,162,164,165,166,167,168,169,170,171,172,173,174,175,176,177,105,104,49,48,99,101,100,87,88,53,50,51,79,69,40,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,91,89,90,82,85,84,83,81,80,86,92,93,128]},"version":"4.4.4"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@operato/board",
3
- "version": "0.2.16",
3
+ "version": "0.2.17",
4
4
  "description": "Webcomponent for board following open-wc recommendations",
5
5
  "author": "heartyoh",
6
6
  "license": "MIT",
@@ -16,7 +16,8 @@
16
16
  "directory": "webcomponents/board"
17
17
  },
18
18
  "exports": {
19
- ".": "./dist/src/index.js"
19
+ "ox-board-viewer": "./dist/src/ox-board-viewer",
20
+ "ox-board-player": "./dist/src/ox-board-player"
20
21
  },
21
22
  "scripts": {
22
23
  "analyze": "cem analyze --litelement",
@@ -71,5 +72,5 @@
71
72
  "prettier --write"
72
73
  ]
73
74
  },
74
- "gitHead": "361a5def4bc0fce29ca91a64c70df2fa77960495"
75
+ "gitHead": "4cf0cccc50c7428f131ea10d018d25d813b629a7"
75
76
  }
@@ -96,25 +96,25 @@ export class BoardViewer extends LitElement {
96
96
  }
97
97
  `
98
98
 
99
- @property({ type: String }) baseUrl = ''
99
+ @property({ type: String }) baseUrl: string = ''
100
100
  @property({ type: Object }) board: any = {}
101
101
  @property({ type: Object }) provider: any = null
102
- @property({ type: Object }) data = {}
102
+ @property({ type: Object }) data: any
103
103
 
104
104
  @property({ type: Boolean, reflect: true, attribute: 'hide-fullscreen' }) hideFullscreen = false
105
105
  @property({ type: Boolean, reflect: true, attribute: 'hide-navigation' }) hideNavigation = false
106
106
 
107
- @state() scene: any = null
108
- @state() forward: Array<any> = []
109
- @state() backward: Array<any> = []
107
+ @state() _scene: any = null
108
+ @state() _forward: Array<any> = []
109
+ @state() _backward: Array<any> = []
110
110
 
111
111
  @state() _oldtarget?: HTMLElement
112
112
  @state() _fade_animations?: Array<Animation>
113
113
 
114
- @query('#target') target!: HTMLElement
115
- @query('#prev') prev!: HTMLElement
116
- @query('#next') next!: HTMLElement
117
- @query('#fullscreen') fullscreen!: HTMLElement
114
+ @query('#target') _target!: HTMLElement
115
+ @query('#prev') _prev!: HTMLElement
116
+ @query('#next') _next!: HTMLElement
117
+ @query('#fullscreen') _fullscreen!: HTMLElement
118
118
 
119
119
  render() {
120
120
  var fullscreen =
@@ -170,9 +170,11 @@ export class BoardViewer extends LitElement {
170
170
  `
171
171
  }
172
172
 
173
- firstUpdated() {
173
+ connectedCallback() {
174
+ super.connectedCallback()
175
+
174
176
  window.addEventListener('resize', () => {
175
- this.scene && this.scene.fit()
177
+ this._scene && this._scene.fit()
176
178
  })
177
179
 
178
180
  this.renderRoot.addEventListener(
@@ -185,17 +187,23 @@ export class BoardViewer extends LitElement {
185
187
  )
186
188
  }
187
189
 
190
+ disconnectedCallback() {
191
+ super.disconnectedCallback()
192
+
193
+ this.closeScene()
194
+ }
195
+
188
196
  updated(changes: PropertyValues<this>) {
189
197
  if (changes.has('board')) {
198
+ this.closeScene()
199
+
190
200
  if (this.board && this.board.id) {
191
201
  this.initScene()
192
- } else {
193
- this.closeScene()
194
202
  }
195
203
  }
196
204
 
197
- if (changes.has('data') && this.scene && this.data) {
198
- this.scene.data = this.data
205
+ if (changes.has('data') && this._scene && this.data) {
206
+ this._scene.data = this.data
199
207
  }
200
208
  }
201
209
 
@@ -217,64 +225,42 @@ export class BoardViewer extends LitElement {
217
225
  this.provider.add(this.board.id, scene)
218
226
 
219
227
  this.showScene(this.board.id)
220
-
221
- /* provider.add 시에 추가된 레퍼런스 카운트를 다운시켜주어야 함 */
222
- scene.release()
223
228
  }
224
229
 
225
230
  closeScene() {
226
- if (this.scene) {
227
- this.unbindSceneEvents(this.scene)
231
+ if (this._scene) {
232
+ this.unbindSceneEvents(this._scene)
228
233
 
229
- this.scene.target = null
230
- this.scene.release()
234
+ this._scene.target = null
235
+ this._scene.release()
231
236
 
232
- delete this.scene
237
+ delete this._scene
233
238
  }
234
239
 
235
240
  // delete queued scenes
236
- this.forward.forEach(scene => scene.release())
237
- this.forward = []
241
+ this._forward.forEach(scene => scene.release())
242
+ this._forward = []
238
243
 
239
- this.backward.forEach(scene => scene.release())
240
- this.backward = []
244
+ this._backward.forEach(scene => scene.release())
245
+ this._backward = []
241
246
  }
242
247
 
243
248
  releaseScene() {
244
- if (this.scene) {
245
- this.unbindSceneEvents(this.scene)
246
-
247
- this.scene.target = null
248
- this.scene.release()
249
-
250
- delete this.scene
251
-
252
- // delete queued scenes
253
- this.forward.forEach(scene => {
254
- scene.release()
255
- })
256
- this.forward = []
257
-
258
- this.backward.forEach(scene => {
259
- scene.release()
260
- })
261
- this.backward = []
262
-
263
- this.transientShowButtons()
264
- }
249
+ this.closeScene()
250
+ this.transientShowButtons()
265
251
  }
266
252
 
267
253
  setupScene(scene: any) {
268
- this.scene = scene
254
+ this._scene = scene
269
255
 
270
256
  /* scene의 기존 target을 보관한다. */
271
- this._oldtarget = this.scene.target
257
+ this._oldtarget = this._scene.target
272
258
 
273
- this.scene.fit(this.board.model.fitMode)
274
- this.scene.target = this.target
259
+ this._scene.fit(this.board.model.fitMode)
260
+ this._scene.target = this._target
275
261
 
276
262
  if (this.data) {
277
- this.scene.data = this.data
263
+ this._scene.data = this.data
278
264
  }
279
265
 
280
266
  this.bindSceneEvents()
@@ -288,28 +274,26 @@ export class BoardViewer extends LitElement {
288
274
  try {
289
275
  var scene = await this.provider.get(boardId, true)
290
276
 
291
- var old_scene = this.scene
292
- this.scene = scene
277
+ var old_scene = this._scene
278
+ this._scene = scene
293
279
 
294
- if (scene.target === this.target) {
280
+ if (scene.target === this._target) {
295
281
  scene.release()
296
282
  return
297
283
  }
298
284
 
299
285
  if (old_scene) {
300
- /* old scene을 backward에 보관한다. */
286
+ /* old scene을 _backward에 보관한다. */
301
287
  this.unbindSceneEvents(old_scene)
302
288
  /* 원래의 target에 되돌린다. */
303
289
  old_scene.target = this._oldtarget
304
- this.backward.push(old_scene)
290
+ this._backward.push(old_scene)
305
291
  }
306
292
 
307
- this.forward.forEach(scene => {
308
- scene.release()
309
- })
293
+ this._forward.forEach(scene => scene.release())
310
294
 
311
295
  /* forward를 비운다. */
312
- this.forward = []
296
+ this._forward = []
313
297
 
314
298
  this.setupScene(scene)
315
299
 
@@ -322,10 +306,10 @@ export class BoardViewer extends LitElement {
322
306
  }
323
307
 
324
308
  bindSceneEvents() {
325
- this.scene.on('goto', this.onLinkGoto, this)
326
- this.scene.on('link-open', this.onLinkOpen, this)
327
- this.scene.on('link-move', this.onLinkMove, this)
328
- this.scene.on('route-page', this.onRoutePage, this)
309
+ this._scene.on('goto', this.onLinkGoto, this)
310
+ this._scene.on('link-open', this.onLinkOpen, this)
311
+ this._scene.on('link-move', this.onLinkMove, this)
312
+ this._scene.on('route-page', this.onRoutePage, this)
329
313
  }
330
314
 
331
315
  unbindSceneEvents(scene: any) {
@@ -337,8 +321,8 @@ export class BoardViewer extends LitElement {
337
321
 
338
322
  transientShowButtons(stop?: boolean) {
339
323
  var buttons = []
340
- !this.hideNavigation && buttons.push(this.next, this.prev)
341
- !this.hideFullscreen && buttons.push(this.fullscreen)
324
+ !this.hideNavigation && buttons.push(this._next, this._prev)
325
+ !this.hideFullscreen && buttons.push(this._fullscreen)
342
326
 
343
327
  if (buttons.length == 0) {
344
328
  return
@@ -367,9 +351,9 @@ export class BoardViewer extends LitElement {
367
351
  })
368
352
  }
369
353
 
370
- this.forward.length <= 0 ? this.next.setAttribute('hidden', '') : this.next.removeAttribute('hidden')
371
- this.backward.length <= 0 ? this.prev.setAttribute('hidden', '') : this.prev.removeAttribute('hidden')
372
- this.fullscreen && this.fullscreen.removeAttribute('hidden')
354
+ this._forward.length <= 0 ? this._next.setAttribute('hidden', '') : this._next.removeAttribute('hidden')
355
+ this._backward.length <= 0 ? this._prev.setAttribute('hidden', '') : this._prev.removeAttribute('hidden')
356
+ this._fullscreen && this._fullscreen.removeAttribute('hidden')
373
357
 
374
358
  this._fade_animations.forEach(animation => {
375
359
  animation.cancel()
@@ -382,30 +366,30 @@ export class BoardViewer extends LitElement {
382
366
  /* event handlers */
383
367
 
384
368
  onTapNext() {
385
- var scene = this.forward.pop()
369
+ var scene = this._forward.pop()
386
370
  if (!scene) return
387
371
 
388
- if (this.scene) {
389
- this.scene.target = null
372
+ if (this._scene) {
373
+ this._scene.target = null
390
374
  /* 원래의 target에 되돌린다. */
391
- this.scene.target = this._oldtarget
392
- this.unbindSceneEvents(this.scene)
393
- this.backward.push(this.scene)
375
+ this._scene.target = this._oldtarget
376
+ this.unbindSceneEvents(this._scene)
377
+ this._backward.push(this._scene)
394
378
  }
395
379
 
396
380
  this.setupScene(scene)
397
381
  }
398
382
 
399
383
  onTapPrev() {
400
- var scene = this.backward.pop()
384
+ var scene = this._backward.pop()
401
385
  if (!scene) return
402
386
 
403
- if (this.scene) {
404
- this.scene.target = null
387
+ if (this._scene) {
388
+ this._scene.target = null
405
389
  /* 원래의 target에 되돌린다. */
406
- this.scene.target = this._oldtarget
407
- this.unbindSceneEvents(this.scene)
408
- this.forward.push(this.scene)
390
+ this._scene.target = this._oldtarget
391
+ this.unbindSceneEvents(this._scene)
392
+ this._forward.push(this._scene)
409
393
  }
410
394
 
411
395
  this.setupScene(scene)
@@ -414,12 +398,8 @@ export class BoardViewer extends LitElement {
414
398
  onTapFullscreen() {
415
399
  togglefullscreen(
416
400
  this,
417
- () => {
418
- this.requestUpdate()
419
- },
420
- () => {
421
- this.requestUpdate()
422
- }
401
+ () => this.requestUpdate(),
402
+ () => this.requestUpdate()
423
403
  )
424
404
  }
425
405
 
@@ -461,11 +441,11 @@ export class BoardViewer extends LitElement {
461
441
  }
462
442
 
463
443
  async getSceneImageData(base64 = false) {
464
- if (!this.scene) {
444
+ if (!this._scene) {
465
445
  return
466
446
  }
467
447
 
468
- var { width, height } = this.scene.model
448
+ var { width, height } = this._scene.model
469
449
  var pixelRatio = window.devicePixelRatio
470
450
 
471
451
  // 1. Scene의 바운드에 근거하여, 오프스크린 캔바스를 만든다.
@@ -473,7 +453,7 @@ export class BoardViewer extends LitElement {
473
453
  canvas.width = Number(width)
474
454
  canvas.height = Number(height)
475
455
 
476
- var root = this.scene.root
456
+ var root = this._scene.root
477
457
  // 2. 모델레이어의 원래 위치와 스케일을 저장한다.
478
458
  var translate = root.get('translate')
479
459
  var scale = root.get('scale')