@fmsim/board 0.0.49

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.
Files changed (226) hide show
  1. package/.storybook/main.js +3 -0
  2. package/.storybook/server.mjs +8 -0
  3. package/custom-elements.json +6500 -0
  4. package/demo/index-modeller.html +102 -0
  5. package/demo/index-player.html +101 -0
  6. package/demo/index-viewer.html +101 -0
  7. package/demo/index.html +101 -0
  8. package/dist/src/component/etc.d.ts +2 -0
  9. package/dist/src/component/etc.js +104 -0
  10. package/dist/src/component/etc.js.map +1 -0
  11. package/dist/src/component/index.d.ts +1 -0
  12. package/dist/src/component/index.js +2 -0
  13. package/dist/src/component/index.js.map +1 -0
  14. package/dist/src/component/register-default-groups.d.ts +1 -0
  15. package/dist/src/component/register-default-groups.js +6 -0
  16. package/dist/src/component/register-default-groups.js.map +1 -0
  17. package/dist/src/data-storage/data-storage.d.ts +8 -0
  18. package/dist/src/data-storage/data-storage.js +28 -0
  19. package/dist/src/data-storage/data-storage.js.map +1 -0
  20. package/dist/src/graphql/board.d.ts +6 -0
  21. package/dist/src/graphql/board.js +139 -0
  22. package/dist/src/graphql/board.js.map +1 -0
  23. package/dist/src/graphql/data-subscription.d.ts +5 -0
  24. package/dist/src/graphql/data-subscription.js +24 -0
  25. package/dist/src/graphql/data-subscription.js.map +1 -0
  26. package/dist/src/graphql/favorite-board.d.ts +1 -0
  27. package/dist/src/graphql/favorite-board.js +23 -0
  28. package/dist/src/graphql/favorite-board.js.map +1 -0
  29. package/dist/src/graphql/group.d.ts +7 -0
  30. package/dist/src/graphql/group.js +125 -0
  31. package/dist/src/graphql/group.js.map +1 -0
  32. package/dist/src/graphql/index.d.ts +4 -0
  33. package/dist/src/graphql/index.js +5 -0
  34. package/dist/src/graphql/index.js.map +1 -0
  35. package/dist/src/graphql/play-group.d.ts +8 -0
  36. package/dist/src/graphql/play-group.js +173 -0
  37. package/dist/src/graphql/play-group.js.map +1 -0
  38. package/dist/src/graphql/scenario.d.ts +6 -0
  39. package/dist/src/graphql/scenario.js +69 -0
  40. package/dist/src/graphql/scenario.js.map +1 -0
  41. package/dist/src/index.d.ts +6 -0
  42. package/dist/src/index.js +7 -0
  43. package/dist/src/index.js.map +1 -0
  44. package/dist/src/layers/bouncing-arrow-decorator.d.ts +1 -0
  45. package/dist/src/layers/bouncing-arrow-decorator.js +40 -0
  46. package/dist/src/layers/bouncing-arrow-decorator.js.map +1 -0
  47. package/dist/src/layers/event-handlers.d.ts +1 -0
  48. package/dist/src/layers/event-handlers.js +70 -0
  49. package/dist/src/layers/event-handlers.js.map +1 -0
  50. package/dist/src/layers/mcs-event-handlers.d.ts +1 -0
  51. package/dist/src/layers/mcs-event-handlers.js +73 -0
  52. package/dist/src/layers/mcs-event-handlers.js.map +1 -0
  53. package/dist/src/layers/movement-layer.d.ts +27 -0
  54. package/dist/src/layers/movement-layer.js +109 -0
  55. package/dist/src/layers/movement-layer.js.map +1 -0
  56. package/dist/src/layers/ox-mini-map.d.ts +1 -0
  57. package/dist/src/layers/ox-mini-map.js +189 -0
  58. package/dist/src/layers/ox-mini-map.js.map +1 -0
  59. package/dist/src/layers/scroll-layer.d.ts +24 -0
  60. package/dist/src/layers/scroll-layer.js +125 -0
  61. package/dist/src/layers/scroll-layer.js.map +1 -0
  62. package/dist/src/layers/shift-handler.d.ts +1 -0
  63. package/dist/src/layers/shift-handler.js +38 -0
  64. package/dist/src/layers/shift-handler.js.map +1 -0
  65. package/dist/src/layers/zoom-handler.d.ts +1 -0
  66. package/dist/src/layers/zoom-handler.js +36 -0
  67. package/dist/src/layers/zoom-handler.js.map +1 -0
  68. package/dist/src/modeller/component-toolbar/component-detail.d.ts +12 -0
  69. package/dist/src/modeller/component-toolbar/component-detail.js +53 -0
  70. package/dist/src/modeller/component-toolbar/component-detail.js.map +1 -0
  71. package/dist/src/modeller/component-toolbar/component-menu.d.ts +27 -0
  72. package/dist/src/modeller/component-toolbar/component-menu.js +192 -0
  73. package/dist/src/modeller/component-toolbar/component-menu.js.map +1 -0
  74. package/dist/src/modeller/component-toolbar/component-toolbar.d.ts +30 -0
  75. package/dist/src/modeller/component-toolbar/component-toolbar.js +188 -0
  76. package/dist/src/modeller/component-toolbar/component-toolbar.js.map +1 -0
  77. package/dist/src/modeller/component-toolbar/mode-icons.d.ts +2 -0
  78. package/dist/src/modeller/component-toolbar/mode-icons.js +86 -0
  79. package/dist/src/modeller/component-toolbar/mode-icons.js.map +1 -0
  80. package/dist/src/modeller/edit-toolbar-style.d.ts +4 -0
  81. package/dist/src/modeller/edit-toolbar-style.js +227 -0
  82. package/dist/src/modeller/edit-toolbar-style.js.map +1 -0
  83. package/dist/src/modeller/edit-toolbar.d.ts +61 -0
  84. package/dist/src/modeller/edit-toolbar.js +646 -0
  85. package/dist/src/modeller/edit-toolbar.js.map +1 -0
  86. package/dist/src/modeller/property-sidebar/abstract-property.d.ts +10 -0
  87. package/dist/src/modeller/property-sidebar/abstract-property.js +55 -0
  88. package/dist/src/modeller/property-sidebar/abstract-property.js.map +1 -0
  89. package/dist/src/modeller/property-sidebar/data-binding/data-binding-mapper.d.ts +54 -0
  90. package/dist/src/modeller/property-sidebar/data-binding/data-binding-mapper.js +392 -0
  91. package/dist/src/modeller/property-sidebar/data-binding/data-binding-mapper.js.map +1 -0
  92. package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-map.d.ts +6 -0
  93. package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-map.js +19 -0
  94. package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-map.js.map +1 -0
  95. package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-range.d.ts +6 -0
  96. package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-range.js +19 -0
  97. package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-range.js.map +1 -0
  98. package/dist/src/modeller/property-sidebar/data-binding/data-binding.d.ts +43 -0
  99. package/dist/src/modeller/property-sidebar/data-binding/data-binding.js +416 -0
  100. package/dist/src/modeller/property-sidebar/data-binding/data-binding.js.map +1 -0
  101. package/dist/src/modeller/property-sidebar/effects/effects-shared-style.d.ts +4 -0
  102. package/dist/src/modeller/property-sidebar/effects/effects-shared-style.js +61 -0
  103. package/dist/src/modeller/property-sidebar/effects/effects-shared-style.js.map +1 -0
  104. package/dist/src/modeller/property-sidebar/effects/effects.d.ts +22 -0
  105. package/dist/src/modeller/property-sidebar/effects/effects.js +46 -0
  106. package/dist/src/modeller/property-sidebar/effects/effects.js.map +1 -0
  107. package/dist/src/modeller/property-sidebar/effects/property-event-hover.d.ts +20 -0
  108. package/dist/src/modeller/property-sidebar/effects/property-event-hover.js +128 -0
  109. package/dist/src/modeller/property-sidebar/effects/property-event-hover.js.map +1 -0
  110. package/dist/src/modeller/property-sidebar/effects/property-event-tap.d.ts +28 -0
  111. package/dist/src/modeller/property-sidebar/effects/property-event-tap.js +190 -0
  112. package/dist/src/modeller/property-sidebar/effects/property-event-tap.js.map +1 -0
  113. package/dist/src/modeller/property-sidebar/effects/property-event.d.ts +22 -0
  114. package/dist/src/modeller/property-sidebar/effects/property-event.js +55 -0
  115. package/dist/src/modeller/property-sidebar/effects/property-event.js.map +1 -0
  116. package/dist/src/modeller/property-sidebar/effects/property-shadow.d.ts +23 -0
  117. package/dist/src/modeller/property-sidebar/effects/property-shadow.js +103 -0
  118. package/dist/src/modeller/property-sidebar/effects/property-shadow.js.map +1 -0
  119. package/dist/src/modeller/property-sidebar/effects/value-converter.d.ts +1 -0
  120. package/dist/src/modeller/property-sidebar/effects/value-converter.js +21 -0
  121. package/dist/src/modeller/property-sidebar/effects/value-converter.js.map +1 -0
  122. package/dist/src/modeller/property-sidebar/inspector/inspector.d.ts +29 -0
  123. package/dist/src/modeller/property-sidebar/inspector/inspector.js +334 -0
  124. package/dist/src/modeller/property-sidebar/inspector/inspector.js.map +1 -0
  125. package/dist/src/modeller/property-sidebar/property-shared-style.d.ts +4 -0
  126. package/dist/src/modeller/property-sidebar/property-shared-style.js +135 -0
  127. package/dist/src/modeller/property-sidebar/property-shared-style.js.map +1 -0
  128. package/dist/src/modeller/property-sidebar/property-sidebar.d.ts +47 -0
  129. package/dist/src/modeller/property-sidebar/property-sidebar.js +324 -0
  130. package/dist/src/modeller/property-sidebar/property-sidebar.js.map +1 -0
  131. package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.d.ts +1 -0
  132. package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.js +94 -0
  133. package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.js.map +1 -0
  134. package/dist/src/modeller/property-sidebar/shapes/shapes.d.ts +25 -0
  135. package/dist/src/modeller/property-sidebar/shapes/shapes.js +354 -0
  136. package/dist/src/modeller/property-sidebar/shapes/shapes.js.map +1 -0
  137. package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.d.ts +16 -0
  138. package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.js +132 -0
  139. package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.js.map +1 -0
  140. package/dist/src/modeller/property-sidebar/specifics/specifics.d.ts +28 -0
  141. package/dist/src/modeller/property-sidebar/specifics/specifics.js +129 -0
  142. package/dist/src/modeller/property-sidebar/specifics/specifics.js.map +1 -0
  143. package/dist/src/modeller/property-sidebar/styles/styles.d.ts +21 -0
  144. package/dist/src/modeller/property-sidebar/styles/styles.js +559 -0
  145. package/dist/src/modeller/property-sidebar/styles/styles.js.map +1 -0
  146. package/dist/src/modeller/scene-viewer/confidential-overlay.d.ts +4 -0
  147. package/dist/src/modeller/scene-viewer/confidential-overlay.js +14 -0
  148. package/dist/src/modeller/scene-viewer/confidential-overlay.js.map +1 -0
  149. package/dist/src/modeller/scene-viewer/ox-scene-handler.d.ts +11 -0
  150. package/dist/src/modeller/scene-viewer/ox-scene-handler.js +36 -0
  151. package/dist/src/modeller/scene-viewer/ox-scene-handler.js.map +1 -0
  152. package/dist/src/modeller/scene-viewer/ox-scene-layer.d.ts +10 -0
  153. package/dist/src/modeller/scene-viewer/ox-scene-layer.js +42 -0
  154. package/dist/src/modeller/scene-viewer/ox-scene-layer.js.map +1 -0
  155. package/dist/src/modeller/scene-viewer/ox-scene-property.d.ts +6 -0
  156. package/dist/src/modeller/scene-viewer/ox-scene-property.js +19 -0
  157. package/dist/src/modeller/scene-viewer/ox-scene-property.js.map +1 -0
  158. package/dist/src/modeller/scene-viewer/ox-scene-viewer.d.ts +40 -0
  159. package/dist/src/modeller/scene-viewer/ox-scene-viewer.js +253 -0
  160. package/dist/src/modeller/scene-viewer/ox-scene-viewer.js.map +1 -0
  161. package/dist/src/ox-board-list.d.ts +2 -0
  162. package/dist/src/ox-board-list.js +425 -0
  163. package/dist/src/ox-board-list.js.map +1 -0
  164. package/dist/src/ox-board-modeller.d.ts +57 -0
  165. package/dist/src/ox-board-modeller.js +401 -0
  166. package/dist/src/ox-board-modeller.js.map +1 -0
  167. package/dist/src/ox-board-viewer-backup.d.ts +64 -0
  168. package/dist/src/ox-board-viewer-backup.js +529 -0
  169. package/dist/src/ox-board-viewer-backup.js.map +1 -0
  170. package/dist/src/ox-board-viewer-other.d.ts +19 -0
  171. package/dist/src/ox-board-viewer-other.js +82 -0
  172. package/dist/src/ox-board-viewer-other.js.map +1 -0
  173. package/dist/src/ox-board-viewer.d.ts +60 -0
  174. package/dist/src/ox-board-viewer.js +503 -0
  175. package/dist/src/ox-board-viewer.js.map +1 -0
  176. package/dist/src/ox-editor-board-selector.d.ts +15 -0
  177. package/dist/src/ox-editor-board-selector.js +85 -0
  178. package/dist/src/ox-editor-board-selector.js.map +1 -0
  179. package/dist/src/ox-property-editor-board-selector.d.ts +4 -0
  180. package/dist/src/ox-property-editor-board-selector.js +22 -0
  181. package/dist/src/ox-property-editor-board-selector.js.map +1 -0
  182. package/dist/src/ox-property-editor-theme.d.ts +19 -0
  183. package/dist/src/ox-property-editor-theme.js +111 -0
  184. package/dist/src/ox-property-editor-theme.js.map +1 -0
  185. package/dist/src/selector/board-creation-popup.d.ts +19 -0
  186. package/dist/src/selector/board-creation-popup.js +100 -0
  187. package/dist/src/selector/board-creation-popup.js.map +1 -0
  188. package/dist/src/selector/board-thumbnail-card.d.ts +15 -0
  189. package/dist/src/selector/board-thumbnail-card.js +168 -0
  190. package/dist/src/selector/board-thumbnail-card.js.map +1 -0
  191. package/dist/src/selector/ox-board-creation-card.d.ts +14 -0
  192. package/dist/src/selector/ox-board-creation-card.js +84 -0
  193. package/dist/src/selector/ox-board-creation-card.js.map +1 -0
  194. package/dist/src/selector/ox-board-selector.d.ts +45 -0
  195. package/dist/src/selector/ox-board-selector.js +273 -0
  196. package/dist/src/selector/ox-board-selector.js.map +1 -0
  197. package/dist/src/types.d.ts +37 -0
  198. package/dist/src/types.js +2 -0
  199. package/dist/src/types.js.map +1 -0
  200. package/dist/stories/index.stories.d.ts +33 -0
  201. package/dist/stories/index.stories.js +33 -0
  202. package/dist/stories/index.stories.js.map +1 -0
  203. package/dist/tsconfig.tsbuildinfo +1 -0
  204. package/icons/components/dash.png +0 -0
  205. package/icons/components/ellipse.png +0 -0
  206. package/icons/components/line.png +0 -0
  207. package/icons/components/no-image.png +0 -0
  208. package/icons/components/popup.png +0 -0
  209. package/icons/components/rect.png +0 -0
  210. package/icons/icon-collapse-active.png +0 -0
  211. package/icons/icon-collapse.png +0 -0
  212. package/icons/icon-fullscreen.png +0 -0
  213. package/icons/icon-htoolbar.png +0 -0
  214. package/icons/icon-properties-arrow-type.png +0 -0
  215. package/icons/icon-properties-gradient-direction.png +0 -0
  216. package/icons/icon-properties-label.png +0 -0
  217. package/icons/icon-properties-line-type.png +0 -0
  218. package/icons/icon-properties-padding.png +0 -0
  219. package/icons/icon-properties-ratio.png +0 -0
  220. package/icons/icon-properties-table.png +0 -0
  221. package/icons/icon-properties.png +0 -0
  222. package/icons/icon-shell-inspector.png +0 -0
  223. package/package.json +149 -0
  224. package/stories/index.stories.ts +52 -0
  225. package/web-dev-server.config.mjs +30 -0
  226. package/web-test-runner.config.mjs +29 -0
@@ -0,0 +1,82 @@
1
+ import { __decorate } from "tslib";
2
+ import '@material/mwc-fab';
3
+ import '@hatiolab/things-scene';
4
+ import './layers/zoom-handler.js';
5
+ import './layers/shift-handler.js';
6
+ import './modeller/scene-viewer/ox-scene-handler.js';
7
+ import './modeller/scene-viewer/ox-scene-layer.js';
8
+ import './modeller/scene-viewer/ox-scene-viewer.js';
9
+ import { css, html, LitElement } from 'lit';
10
+ import { customElement, property } from 'lit/decorators.js';
11
+ import { SCENE_MODE } from '@hatiolab/things-scene';
12
+ export let BoardViewer = class BoardViewer extends LitElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.board = null;
16
+ this.baseUrl = '';
17
+ this.mode = SCENE_MODE.VIEW;
18
+ this.provider = null;
19
+ }
20
+ render() {
21
+ const { model } = this.board || {};
22
+ return html `
23
+ <ox-scene-viewer
24
+ id="scene"
25
+ .scene=${this.scene}
26
+ @scene-changed=${(e) => {
27
+ this.scene = e.detail.value;
28
+ }}
29
+ .model=${model}
30
+ .mode=${this.mode}
31
+ @mode-changed=${(e) => {
32
+ this.mode = e.detail.value;
33
+ }}
34
+ fit="ratio"
35
+ .baseUrl=${this.baseUrl}
36
+ .provider=${this.provider}
37
+ >
38
+ <ox-scene-handler type="zoom-handler"></ox-scene-handler>
39
+ <ox-scene-handler type="shift-handler"> </ox-scene-handler>
40
+ </ox-scene-viewer>
41
+ `;
42
+ }
43
+ closeScene() {
44
+ this.board = null;
45
+ this.requestUpdate();
46
+ }
47
+ };
48
+ BoardViewer.styles = [
49
+ css `
50
+ :host {
51
+ display: flex;
52
+ flex-direction: column;
53
+
54
+ overflow: hidden;
55
+ }
56
+
57
+ ox-scene-viewer {
58
+ flex: 1;
59
+ width: 100%;
60
+ height: 100%;
61
+ }
62
+ `
63
+ ];
64
+ __decorate([
65
+ property({ type: Object })
66
+ ], BoardViewer.prototype, "board", void 0);
67
+ __decorate([
68
+ property({ type: String })
69
+ ], BoardViewer.prototype, "baseUrl", void 0);
70
+ __decorate([
71
+ property({ type: Number })
72
+ ], BoardViewer.prototype, "mode", void 0);
73
+ __decorate([
74
+ property({ type: Object })
75
+ ], BoardViewer.prototype, "provider", void 0);
76
+ __decorate([
77
+ property({ type: Object })
78
+ ], BoardViewer.prototype, "scene", void 0);
79
+ BoardViewer = __decorate([
80
+ customElement('ox-board-viewer')
81
+ ], BoardViewer);
82
+ //# sourceMappingURL=ox-board-viewer-other.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-board-viewer-other.js","sourceRoot":"","sources":["../../src/ox-board-viewer-other.ts"],"names":[],"mappings":";AAAA,OAAO,mBAAmB,CAAA;AAC1B,OAAO,wBAAwB,CAAA;AAC/B,OAAO,0BAA0B,CAAA;AACjC,OAAO,2BAA2B,CAAA;AAClC,OAAO,6CAA6C,CAAA;AACpD,OAAO,2CAA2C,CAAA;AAClD,OAAO,4CAA4C,CAAA;AAEnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAS,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAA4B,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAGtE,WAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;QAkBuB,UAAK,GAAQ,IAAI,CAAA;QACjB,YAAO,GAAW,EAAE,CAAA;QACpB,SAAI,GAAe,UAAU,CAAC,IAAI,CAAA;QAClC,aAAQ,GAA6B,IAAI,CAAA;IAgCvE,CAAC;IA7BC,MAAM;QACJ,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAA;QAElC,OAAO,IAAI,CAAA;;;iBAGE,IAAI,CAAC,KAAK;yBACF,CAAC,CAAc,EAAE,EAAE;YAClC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA;QAC7B,CAAC;iBACQ,KAAK;gBACN,IAAI,CAAC,IAAI;wBACD,CAAC,CAAc,EAAE,EAAE;YACjC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA;QAC5B,CAAC;;mBAEU,IAAI,CAAC,OAAO;oBACX,IAAI,CAAC,QAAQ;;;;;KAK5B,CAAA;IACH,CAAC;IAED,UAAU;QACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC;;AAnDM,kBAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;;;;KAaF;CACF,AAfY,CAeZ;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAkB;AACjB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CAAqB;AACpB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yCAAmC;AAClC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAA0C;AACzC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAc;AAtB9B,WAAW;IADvB,aAAa,CAAC,iBAAiB,CAAC;GACpB,WAAW,CAqDvB","sourcesContent":["import '@material/mwc-fab'\nimport '@hatiolab/things-scene'\nimport './layers/zoom-handler.js'\nimport './layers/shift-handler.js'\nimport './modeller/scene-viewer/ox-scene-handler.js'\nimport './modeller/scene-viewer/ox-scene-layer.js'\nimport './modeller/scene-viewer/ox-scene-viewer.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { ReferenceProvider, Scene, SCENE_MODE } from '@hatiolab/things-scene'\n\n@customElement('ox-board-viewer')\nexport class BoardViewer extends LitElement {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n overflow: hidden;\n }\n\n ox-scene-viewer {\n flex: 1;\n width: 100%;\n height: 100%;\n }\n `\n ]\n\n @property({ type: Object }) board: any = null\n @property({ type: String }) baseUrl: string = ''\n @property({ type: Number }) mode: SCENE_MODE = SCENE_MODE.VIEW\n @property({ type: Object }) provider: ReferenceProvider | null = null\n @property({ type: Object }) scene?: Scene\n\n render() {\n const { model } = this.board || {}\n\n return html`\n <ox-scene-viewer\n id=\"scene\"\n .scene=${this.scene}\n @scene-changed=${(e: CustomEvent) => {\n this.scene = e.detail.value\n }}\n .model=${model}\n .mode=${this.mode}\n @mode-changed=${(e: CustomEvent) => {\n this.mode = e.detail.value\n }}\n fit=\"ratio\"\n .baseUrl=${this.baseUrl}\n .provider=${this.provider}\n >\n <ox-scene-handler type=\"zoom-handler\"></ox-scene-handler>\n <ox-scene-handler type=\"shift-handler\"> </ox-scene-handler>\n </ox-scene-viewer>\n `\n }\n\n closeScene() {\n this.board = null\n this.requestUpdate()\n }\n}\n"]}
@@ -0,0 +1,60 @@
1
+ import '@material/mwc-fab';
2
+ import '@material/mwc-icon';
3
+ import './layers/mcs-event-handlers.js';
4
+ import './layers/movement-layer.js';
5
+ import { LitElement, PropertyValues } from 'lit';
6
+ import { Component, ReferenceProvider, Scene } from '@hatiolab/things-scene';
7
+ export declare class BoardViewer extends LitElement {
8
+ static styles: import("lit").CSSResult[];
9
+ baseUrl: string;
10
+ board: any;
11
+ provider: ReferenceProvider | null;
12
+ data: any;
13
+ values: any;
14
+ hideFullscreen: boolean;
15
+ hideNavigation: boolean;
16
+ _scene: Scene | null;
17
+ _forward: {
18
+ id: string;
19
+ scene: any;
20
+ }[];
21
+ _backward: {
22
+ id: string;
23
+ scene: any;
24
+ }[];
25
+ _oldtarget: HTMLElement | null;
26
+ _fade_animations?: Array<Animation>;
27
+ currentBoardId?: string;
28
+ _target: HTMLElement;
29
+ _prev: HTMLElement;
30
+ _next: HTMLElement;
31
+ _fullscreen: HTMLElement;
32
+ render(): import("lit-html").TemplateResult<1>;
33
+ connectedCallback(): void;
34
+ disconnectedCallback(): void;
35
+ updated(changes: PropertyValues<this>): void;
36
+ initSceneAsync(): Promise<void>;
37
+ initScene(): void;
38
+ closeScene(): void;
39
+ releaseScene(): void;
40
+ setupScene({ id, scene }: {
41
+ id: string;
42
+ scene: any;
43
+ }): void;
44
+ showScene(boardId: string, bindingData?: any): Promise<void>;
45
+ bindSceneEvents(): void;
46
+ unbindSceneEvents(scene: any): void;
47
+ transientShowButtons(stop?: boolean): void;
48
+ onTapNext(): void;
49
+ onTapPrev(): void;
50
+ onTapFullscreen(): void;
51
+ onRunBoard(): void;
52
+ onLinkGoto(targetBoardId: string, options: any, fromComponent: any): void;
53
+ onLinkOpen(url: string, value: any, fromComponent: Component): void;
54
+ onLinkMove(url: string, value: any, fromComponent: Component): void;
55
+ onRoutePage(page: string): void;
56
+ onStartScenario(scenario: string, value: string | number | object, component: Component): Promise<void>;
57
+ onRunScenario(scenario: string, value: string | number | object, component: Component): Promise<void>;
58
+ getSceneData(): object | undefined;
59
+ getSceneValues(): object | undefined;
60
+ }
@@ -0,0 +1,503 @@
1
+ import { __decorate } from "tslib";
2
+ import '@material/mwc-fab';
3
+ import '@material/mwc-icon';
4
+ import './layers/mcs-event-handlers.js';
5
+ import './layers/movement-layer.js';
6
+ import { css, html, LitElement } from 'lit';
7
+ import { customElement, property, query, state } from 'lit/decorators.js';
8
+ import { create, SCENE_MODE } from '@hatiolab/things-scene';
9
+ import { isIOS, togglefullscreen } from '@operato/utils';
10
+ import { ScrollbarStyles } from '@operato/styles';
11
+ import { DataStorage } from './data-storage/data-storage.js';
12
+ import { runScenario, startScenario, DataSubscriptionProviderImpl } from '@fmsim/api';
13
+ export let BoardViewer = class BoardViewer extends LitElement {
14
+ constructor() {
15
+ var _a;
16
+ super(...arguments);
17
+ this.baseUrl = '';
18
+ this.board = {};
19
+ this.provider = null;
20
+ this.hideFullscreen = false;
21
+ this.hideNavigation = false;
22
+ this._scene = null;
23
+ this._forward = [];
24
+ this._backward = [];
25
+ this._oldtarget = null;
26
+ this.currentBoardId = (_a = this.board) === null || _a === void 0 ? void 0 : _a.id;
27
+ }
28
+ render() {
29
+ var fullscreen = !isIOS() && !this.hideFullscreen
30
+ ? html `
31
+ <mwc-fab
32
+ id="fullscreen"
33
+ .icon=${document.fullscreenElement ? 'fullscreen_exit' : 'fullscreen'}
34
+ @click=${(e) => this.onTapFullscreen()}
35
+ @mouseover=${(e) => this.transientShowButtons(true)}
36
+ @mouseout=${(e) => this.transientShowButtons()}
37
+ title="fullscreen"
38
+ ></mwc-fab>
39
+ `
40
+ : html ``;
41
+ var prev = !this.hideNavigation
42
+ ? html `
43
+ <mwc-icon
44
+ id="prev"
45
+ @click=${(e) => this.onTapPrev()}
46
+ @mouseover=${(e) => this.transientShowButtons(true)}
47
+ @mouseout=${(e) => this.transientShowButtons()}
48
+ hidden
49
+ >keyboard_arrow_left</mwc-icon
50
+ >
51
+ `
52
+ : html ``;
53
+ var next = !this.hideNavigation
54
+ ? html `
55
+ <mwc-icon
56
+ id="next"
57
+ @click=${(e) => this.onTapNext()}
58
+ @mouseover=${(e) => this.transientShowButtons(true)}
59
+ @mouseout=${(e) => this.transientShowButtons()}
60
+ hidden
61
+ >keyboard_arrow_right</mwc-icon
62
+ >
63
+ `
64
+ : html ``;
65
+ return html `
66
+ ${prev}
67
+
68
+ <div
69
+ id="target"
70
+ @touchstart=${(e) => this.transientShowButtons()}
71
+ @mousemove=${(e) => this.transientShowButtons()}
72
+ ></div>
73
+
74
+ ${next} ${fullscreen}
75
+ `;
76
+ }
77
+ connectedCallback() {
78
+ super.connectedCallback();
79
+ window.addEventListener('resize', () => {
80
+ this._scene && this._scene.fit();
81
+ });
82
+ this.renderRoot.addEventListener('close-scene', e => {
83
+ e.preventDefault();
84
+ this.onTapPrev();
85
+ }, false);
86
+ // 모니터링에서 장비 아이디에 해당하는 object를 찾아 캔버스 가운데 위치하도록 조정한다.
87
+ window.addEventListener('fetchIFactsData', (e) => {
88
+ var _a, _b;
89
+ const id = e.detail.value;
90
+ const components = (_a = this._scene) === null || _a === void 0 ? void 0 : _a.findAll(`#${id}`);
91
+ if (!components || components.length == 0) {
92
+ console.log('No equipment was found.');
93
+ return;
94
+ }
95
+ components[0].trigger('reactionreset');
96
+ components.forEach(component => component.trigger('reaction'));
97
+ (_b = this._scene) === null || _b === void 0 ? void 0 : _b.centerTo(components[0], true /* animated */);
98
+ });
99
+ // 모니터링에서 Movement Data를 보여준다.
100
+ window.addEventListener('fmbShowMovement', (e) => {
101
+ var _a;
102
+ const movement = e.detail.value;
103
+ const movementLayer = (_a = this._scene) === null || _a === void 0 ? void 0 : _a.findById(`#movement-layer`);
104
+ if (!movementLayer) {
105
+ return;
106
+ }
107
+ movementLayer.data = movement;
108
+ });
109
+ // 모니터링에서 보드 상태를 원래상태 (정사이즈)로 돌려놓는다.
110
+ window.addEventListener('fmbMonitoringInit', e => {
111
+ var _a;
112
+ (_a = this._scene) === null || _a === void 0 ? void 0 : _a.fit('ratio');
113
+ });
114
+ }
115
+ disconnectedCallback() {
116
+ super.disconnectedCallback();
117
+ // TODO release event handlers
118
+ this.closeScene();
119
+ }
120
+ updated(changes) {
121
+ if (changes.has('board')) {
122
+ this.closeScene();
123
+ if (this.board && this.board.id) {
124
+ if (this.board.model) {
125
+ this.initScene();
126
+ }
127
+ else {
128
+ this.initSceneAsync();
129
+ }
130
+ }
131
+ }
132
+ if (changes.has('data') && this._scene && this.data) {
133
+ this._scene.data = this.data;
134
+ }
135
+ if (changes.has('values') && this._scene && this.values) {
136
+ this._scene.values = this.values;
137
+ }
138
+ }
139
+ async initSceneAsync() {
140
+ if (!this.board || !this.board.id)
141
+ return;
142
+ this._scene = await this.provider.create(this.board.id);
143
+ this.setupScene({ id: this.board.id, scene: this._scene });
144
+ }
145
+ initScene() {
146
+ if (!this.board || !this.board.id)
147
+ return;
148
+ this._scene = create({
149
+ model: {
150
+ ...this.board.model
151
+ },
152
+ style: this.board.style,
153
+ mode: SCENE_MODE.VIEW,
154
+ handlers: ['mcs-event-handler', 'zoom-handler', 'shift-handler'],
155
+ layers: [{ type: 'reaction-layer' }, { type: 'scroll-layer' }, { type: 'movement-layer', id: 'movement-layer' }],
156
+ refProvider: this.provider,
157
+ dataStorage: this.board.id !== 'preview' ? new DataStorage(this.board.id) : undefined,
158
+ dataSubscriptionProvider: new DataSubscriptionProviderImpl()
159
+ });
160
+ if (this.baseUrl) {
161
+ this._scene.baseUrl = this.baseUrl;
162
+ }
163
+ this.setupScene({ id: this.board.id, scene: this._scene });
164
+ }
165
+ closeScene() {
166
+ if (this._scene) {
167
+ this.unbindSceneEvents(this._scene);
168
+ this._scene.target = null;
169
+ this._scene.release && this._scene.release();
170
+ this._scene = null;
171
+ }
172
+ // delete queued scenes
173
+ this._forward.forEach(({ scene }) => scene.release && scene.release());
174
+ this._forward = [];
175
+ this._backward.forEach(({ scene }) => scene.release && scene.release());
176
+ this._backward = [];
177
+ }
178
+ releaseScene() {
179
+ this.closeScene();
180
+ this.transientShowButtons();
181
+ }
182
+ setupScene({ id, scene }) {
183
+ var _a;
184
+ this._scene = scene;
185
+ const backgroundColor = (_a = this._scene) === null || _a === void 0 ? void 0 : _a.root.state.fillStyle;
186
+ if (typeof backgroundColor === 'string') {
187
+ this.style.backgroundColor = backgroundColor;
188
+ }
189
+ else {
190
+ this.style.backgroundColor = 'initial';
191
+ }
192
+ /* scene의 기존 target을 보관한다. */
193
+ this._oldtarget = this._scene.target;
194
+ this._scene.fit(this._scene.fitMode);
195
+ this._scene.target = this._target;
196
+ if (this.data) {
197
+ this._scene.data = this.data;
198
+ }
199
+ if (this.values) {
200
+ this._scene.values = this.values;
201
+ }
202
+ this.currentBoardId = id;
203
+ this.bindSceneEvents();
204
+ this.transientShowButtons();
205
+ }
206
+ async showScene(boardId, bindingData) {
207
+ if (!boardId)
208
+ return;
209
+ try {
210
+ var scene = await this.provider.get(boardId, true);
211
+ if (scene === this._scene) {
212
+ scene.release && scene.release();
213
+ return;
214
+ }
215
+ if (this._scene) {
216
+ /* old scene을 _backward에 보관한다. */
217
+ this.unbindSceneEvents(this._scene);
218
+ /* 원래의 target에 되돌린다. */
219
+ this._scene.target = this._oldtarget;
220
+ this._backward.push({ id: this.currentBoardId, scene: this._scene });
221
+ }
222
+ this._scene = scene;
223
+ this._forward.forEach(({ scene }) => scene.release && scene.release());
224
+ /* forward를 비운다. */
225
+ this._forward = [];
226
+ this.setupScene({ id: boardId, scene });
227
+ if (bindingData) {
228
+ scene.data = bindingData;
229
+ }
230
+ }
231
+ catch (e) {
232
+ console.error(e);
233
+ }
234
+ }
235
+ bindSceneEvents() {
236
+ this._scene.on('run', this.onRunBoard, this);
237
+ this._scene.on('goto', this.onLinkGoto, this);
238
+ this._scene.on('link-open', this.onLinkOpen, this);
239
+ this._scene.on('link-move', this.onLinkMove, this);
240
+ this._scene.on('route-page', this.onRoutePage, this);
241
+ this._scene.on('start-scenario', this.onStartScenario, this);
242
+ this._scene.on('run-scenario', this.onRunScenario, this);
243
+ }
244
+ unbindSceneEvents(scene) {
245
+ scene.off('run', this.onRunBoard, this);
246
+ scene.off('goto', this.onLinkGoto, this);
247
+ scene.off('link-open', this.onLinkOpen, this);
248
+ scene.off('link-move', this.onLinkMove, this);
249
+ scene.off('route-page', this.onRoutePage, this);
250
+ scene.off('start-scenario', this.onStartScenario, this);
251
+ scene.off('run-scenario', this.onRunScenario, this);
252
+ }
253
+ transientShowButtons(stop) {
254
+ var buttons = [];
255
+ !this.hideNavigation && buttons.push(this._next, this._prev);
256
+ !this.hideFullscreen && buttons.push(this._fullscreen);
257
+ if (buttons.length == 0) {
258
+ return;
259
+ }
260
+ if (!this._fade_animations) {
261
+ this._fade_animations = buttons
262
+ .filter(button => button)
263
+ .map(button => {
264
+ let animation = button.animate([
265
+ {
266
+ opacity: 1,
267
+ easing: 'ease-in'
268
+ },
269
+ { opacity: 0 }
270
+ ], { delay: 1000, duration: 2000 });
271
+ animation.onfinish = () => {
272
+ button.setAttribute('hidden', '');
273
+ };
274
+ return animation;
275
+ });
276
+ }
277
+ this._forward.length <= 0 ? this._next.setAttribute('hidden', '') : this._next.removeAttribute('hidden');
278
+ this._backward.length <= 0 ? this._prev.setAttribute('hidden', '') : this._prev.removeAttribute('hidden');
279
+ this._fullscreen && this._fullscreen.removeAttribute('hidden');
280
+ this._fade_animations.forEach(animation => {
281
+ animation.cancel();
282
+ if (stop)
283
+ return;
284
+ animation.play();
285
+ });
286
+ }
287
+ /* event handlers */
288
+ onTapNext() {
289
+ var { id, scene } = this._forward.pop() || {};
290
+ if (!scene)
291
+ return;
292
+ if (this._scene) {
293
+ this._scene.target = null;
294
+ /* 원래의 target에 되돌린다. */
295
+ this._scene.target = this._oldtarget;
296
+ this.unbindSceneEvents(this._scene);
297
+ this._backward.push({ id: id, scene: this._scene });
298
+ }
299
+ this.setupScene({ id: id, scene });
300
+ }
301
+ onTapPrev() {
302
+ var { id, scene } = this._backward.pop() || {};
303
+ if (!scene)
304
+ return;
305
+ if (this._scene) {
306
+ this._scene.target = null;
307
+ /* 원래의 target에 되돌린다. */
308
+ this._scene.target = this._oldtarget;
309
+ this.unbindSceneEvents(this._scene);
310
+ this._forward.push({ id: id, scene: this._scene });
311
+ }
312
+ this.setupScene({ id: id, scene });
313
+ }
314
+ onTapFullscreen() {
315
+ togglefullscreen(this, () => this.requestUpdate(), () => this.requestUpdate());
316
+ }
317
+ onRunBoard() {
318
+ this.dispatchEvent(new CustomEvent('run-board', { bubbles: true, composed: true, detail: this.board.id }));
319
+ }
320
+ onLinkGoto(targetBoardId, options, fromComponent) {
321
+ var _a;
322
+ const { input, output } = options || { input: '(self)' };
323
+ const data = input && ((_a = fromComponent.root.findFirst(input, fromComponent)) === null || _a === void 0 ? void 0 : _a.data);
324
+ this.showScene(targetBoardId, data);
325
+ }
326
+ onLinkOpen(url, value, fromComponent) {
327
+ if (!url)
328
+ return;
329
+ try {
330
+ window.open(url);
331
+ }
332
+ catch (ex) {
333
+ document.dispatchEvent(new CustomEvent('notify', {
334
+ detail: {
335
+ level: 'error',
336
+ message: ex,
337
+ ex
338
+ }
339
+ }));
340
+ }
341
+ }
342
+ onLinkMove(url, value, fromComponent) {
343
+ if (!url)
344
+ return;
345
+ location.href = url;
346
+ }
347
+ onRoutePage(page) {
348
+ if (!page) {
349
+ return;
350
+ }
351
+ history.pushState({}, '', page);
352
+ window.dispatchEvent(new Event('popstate'));
353
+ }
354
+ async onStartScenario(scenario, value, component) {
355
+ try {
356
+ await startScenario(scenario, scenario, value);
357
+ }
358
+ catch (e) {
359
+ console.error(e);
360
+ }
361
+ }
362
+ async onRunScenario(scenario, value, component) {
363
+ try {
364
+ component.data = await runScenario(scenario, value);
365
+ }
366
+ catch (e) {
367
+ console.error(e);
368
+ }
369
+ }
370
+ getSceneData() {
371
+ var _a;
372
+ return (_a = this._scene) === null || _a === void 0 ? void 0 : _a.data;
373
+ }
374
+ getSceneValues() {
375
+ var _a;
376
+ return (_a = this._scene) === null || _a === void 0 ? void 0 : _a.values;
377
+ }
378
+ };
379
+ BoardViewer.styles = [
380
+ ScrollbarStyles,
381
+ css `
382
+ :host {
383
+ display: flex;
384
+ flex-direction: column;
385
+
386
+ position: relative;
387
+
388
+ width: 100%; /* 전체화면보기를 위해서 필요함. */
389
+ overflow: hidden;
390
+ }
391
+
392
+ #target {
393
+ flex: 1;
394
+
395
+ width: 100%; /* 전체화면보기를 위해서 필요함. */
396
+ height: 100%;
397
+
398
+ outline: 0;
399
+ }
400
+
401
+ /* navigation buttons */
402
+ mwc-icon {
403
+ z-index: 10;
404
+ position: absolute;
405
+ top: 45%;
406
+ min-width: 50px;
407
+ width: 50px;
408
+ height: 50px;
409
+ margin: 0;
410
+ padding: 0;
411
+ color: #fff;
412
+ user-select: none;
413
+
414
+ --mdc-icon-size: 3em;
415
+ }
416
+
417
+ mwc-icon[hidden] {
418
+ display: none;
419
+ }
420
+
421
+ mwc-icon:hover {
422
+ background-color: rgba(0, 0, 0, 0.2);
423
+ border-radius: 50%;
424
+ }
425
+
426
+ #prev {
427
+ left: 5px;
428
+ }
429
+
430
+ #next {
431
+ right: 5px;
432
+ }
433
+
434
+ #fullscreen {
435
+ position: absolute;
436
+ bottom: 15px;
437
+ right: 16px;
438
+ }
439
+
440
+ [hidden] {
441
+ display: none;
442
+ }
443
+
444
+ @media print {
445
+ mwc-fab,
446
+ mwc-icon {
447
+ display: none;
448
+ }
449
+ }
450
+ `
451
+ ];
452
+ __decorate([
453
+ property({ type: String })
454
+ ], BoardViewer.prototype, "baseUrl", void 0);
455
+ __decorate([
456
+ property({ type: Object })
457
+ ], BoardViewer.prototype, "board", void 0);
458
+ __decorate([
459
+ property({ type: Object })
460
+ ], BoardViewer.prototype, "provider", void 0);
461
+ __decorate([
462
+ property({ type: Object })
463
+ ], BoardViewer.prototype, "data", void 0);
464
+ __decorate([
465
+ property({ type: Object })
466
+ ], BoardViewer.prototype, "values", void 0);
467
+ __decorate([
468
+ property({ type: Boolean, reflect: true, attribute: 'hide-fullscreen' })
469
+ ], BoardViewer.prototype, "hideFullscreen", void 0);
470
+ __decorate([
471
+ property({ type: Boolean, reflect: true, attribute: 'hide-navigation' })
472
+ ], BoardViewer.prototype, "hideNavigation", void 0);
473
+ __decorate([
474
+ state()
475
+ ], BoardViewer.prototype, "_scene", void 0);
476
+ __decorate([
477
+ state()
478
+ ], BoardViewer.prototype, "_forward", void 0);
479
+ __decorate([
480
+ state()
481
+ ], BoardViewer.prototype, "_backward", void 0);
482
+ __decorate([
483
+ state()
484
+ ], BoardViewer.prototype, "_oldtarget", void 0);
485
+ __decorate([
486
+ state()
487
+ ], BoardViewer.prototype, "_fade_animations", void 0);
488
+ __decorate([
489
+ query('#target')
490
+ ], BoardViewer.prototype, "_target", void 0);
491
+ __decorate([
492
+ query('#prev')
493
+ ], BoardViewer.prototype, "_prev", void 0);
494
+ __decorate([
495
+ query('#next')
496
+ ], BoardViewer.prototype, "_next", void 0);
497
+ __decorate([
498
+ query('#fullscreen')
499
+ ], BoardViewer.prototype, "_fullscreen", void 0);
500
+ BoardViewer = __decorate([
501
+ customElement('ox-board-viewer')
502
+ ], BoardViewer);
503
+ //# sourceMappingURL=ox-board-viewer.js.map