@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,102 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-GB">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <style>
7
+ body {
8
+ margin: 0;
9
+ padding: 0;
10
+ overflow: hidden;
11
+
12
+ /* This is a font-stack that tries to use the system-default sans-serifs first */
13
+ font-family: Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
14
+ line-height: 1.5;
15
+ -webkit-font-smoothing: antialiased;
16
+ }
17
+
18
+ ox-board-modeller {
19
+ width: 100vw;
20
+ height: 100dvh;
21
+ }
22
+ </style>
23
+
24
+ <link href="/node_modules/@material-design-icons/font/index.css" rel="stylesheet" />
25
+ <link href="/node_modules/@fontsource/roboto/index.css" rel="stylesheet" />
26
+ </head>
27
+ <body>
28
+ <div id="demo"></div>
29
+ <script type="module">
30
+ import { html, render } from 'lit'
31
+ import '../dist/src/ox-board-modeller.js'
32
+ import { ReferenceMap, create, error } from '@hatiolab/things-scene'
33
+
34
+ const colors = ['red', 'blue', 'orange', 'yellow', 'magenta', 'violet', 'navy', 'green', 'cyan', 'lime']
35
+ const boards = colors.map((color, idx) => {
36
+ var to = colors[(idx + 1) % colors.length]
37
+ return {
38
+ id: color,
39
+ model: {
40
+ width: 400,
41
+ height: 300,
42
+ fillStyle: color,
43
+ components: [
44
+ {
45
+ type: 'text',
46
+ left: 100,
47
+ top: 100,
48
+ width: 200,
49
+ height: 30,
50
+ text: `Click to move to ${to}`,
51
+ event: {
52
+ tap: {
53
+ action: 'goto',
54
+ target: to
55
+ }
56
+ }
57
+ }
58
+ ]
59
+ }
60
+ }
61
+ })
62
+
63
+ var provider = new ReferenceMap(
64
+ async (boardId, resolve, reject) => {
65
+ try {
66
+ const board = boards.find(board => {
67
+ return board.id === boardId
68
+ })
69
+ if (!board) {
70
+ throw `no board named as ${boardId}`
71
+ }
72
+
73
+ var scene
74
+
75
+ try {
76
+ scene = await provider.get(boardId)
77
+ console.warn('Board fetched more than twice.', boardId)
78
+ } catch (e) {
79
+ scene = create({
80
+ model: JSON.parse(JSON.stringify(board.model)),
81
+ mode: 0,
82
+ refProvider: provider
83
+ })
84
+ }
85
+ resolve(scene, board)
86
+ } catch (e) {
87
+ error(e)
88
+ reject(e)
89
+ }
90
+ },
91
+ async (id, ref) => {
92
+ ref.dispose()
93
+ }
94
+ )
95
+
96
+ render(
97
+ html` <ox-board-modeller .board=${boards[0]} .provider=${provider}> </ox-board-modeller> `,
98
+ document.querySelector('#demo')
99
+ )
100
+ </script>
101
+ </body>
102
+ </html>
@@ -0,0 +1,101 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-GB">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <style>
7
+ body {
8
+ margin: 0;
9
+ padding: 0;
10
+ overflow: hidden;
11
+
12
+ /* This is a font-stack that tries to use the system-default sans-serifs first */
13
+ font-family: Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
14
+ line-height: 1.5;
15
+ -webkit-font-smoothing: antialiased;
16
+ }
17
+
18
+ ox-board-player {
19
+ width: 100vw;
20
+ height: 100dvh;
21
+ }
22
+ </style>
23
+ <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet" />
24
+ <link href="/node_modules/@material-design-icons/font/index.css" rel="stylesheet" />
25
+ </head>
26
+ <body>
27
+ <div id="demo"></div>
28
+ <script type="module">
29
+ import { html, render } from 'lit'
30
+ import '../dist/src/index.js'
31
+ import { ReferenceMap, create, error } from '@hatiolab/things-scene'
32
+
33
+ const colors = ['red', 'blue', 'orange', 'yellow', 'magenta', 'violet', 'navy', 'green', 'cyan', 'lime']
34
+ const boards = colors.map((color, idx) => {
35
+ var to = colors[(idx + 1) % colors.length]
36
+ return {
37
+ id: color,
38
+ model: {
39
+ width: 400,
40
+ height: 300,
41
+ fillStyle: color,
42
+ components: [
43
+ {
44
+ type: 'text',
45
+ left: 100,
46
+ top: 100,
47
+ width: 200,
48
+ height: 30,
49
+ text: `Click to move to ${to}`,
50
+ event: {
51
+ tap: {
52
+ action: 'goto',
53
+ target: to
54
+ }
55
+ }
56
+ }
57
+ ]
58
+ }
59
+ }
60
+ })
61
+
62
+ var provider = new ReferenceMap(
63
+ async (boardId, resolve, reject) => {
64
+ try {
65
+ const board = boards.find(board => {
66
+ return board.id === boardId
67
+ })
68
+ if (!board) {
69
+ throw `no board named as ${boardId}`
70
+ }
71
+
72
+ var scene
73
+
74
+ try {
75
+ scene = await provider.get(boardId)
76
+ console.warn('Board fetched more than twice.', boardId)
77
+ } catch (e) {
78
+ scene = create({
79
+ model: JSON.parse(JSON.stringify(board.model)),
80
+ mode: 0,
81
+ refProvider: provider
82
+ })
83
+ }
84
+ resolve(scene, board)
85
+ } catch (e) {
86
+ error(e)
87
+ reject(e)
88
+ }
89
+ },
90
+ async (id, ref) => {
91
+ ref.dispose()
92
+ }
93
+ )
94
+
95
+ render(
96
+ html` <ox-board-player .boards=${boards} .provider=${provider}></ox-board-player> `,
97
+ document.querySelector('#demo')
98
+ )
99
+ </script>
100
+ </body>
101
+ </html>
@@ -0,0 +1,101 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-GB">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <style>
7
+ body {
8
+ margin: 0;
9
+ padding: 0;
10
+ overflow: hidden;
11
+
12
+ /* This is a font-stack that tries to use the system-default sans-serifs first */
13
+ font-family: Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
14
+ line-height: 1.5;
15
+ -webkit-font-smoothing: antialiased;
16
+ }
17
+
18
+ ox-board-viewer {
19
+ width: 100vw;
20
+ height: 100dvh;
21
+ }
22
+ </style>
23
+ <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet" />
24
+ <link href="/node_modules/@material-design-icons/font/index.css" rel="stylesheet" />
25
+ </head>
26
+ <body>
27
+ <div id="demo"></div>
28
+ <script type="module">
29
+ import { html, render } from 'lit'
30
+ import '../dist/src/ox-board-viewer.js'
31
+ import { ReferenceMap, create, error } from '@hatiolab/things-scene'
32
+
33
+ const colors = ['red', 'blue', 'orange', 'yellow', 'magenta', 'violet', 'navy', 'green', 'cyan', 'lime']
34
+ const boards = colors.map((color, idx) => {
35
+ var to = colors[(idx + 1) % colors.length]
36
+ return {
37
+ id: color,
38
+ model: {
39
+ width: 400,
40
+ height: 300,
41
+ fillStyle: color,
42
+ components: [
43
+ {
44
+ type: 'text',
45
+ left: 100,
46
+ top: 100,
47
+ width: 200,
48
+ height: 30,
49
+ text: `Click to move to ${to}`,
50
+ event: {
51
+ tap: {
52
+ action: 'goto',
53
+ target: to
54
+ }
55
+ }
56
+ }
57
+ ]
58
+ }
59
+ }
60
+ })
61
+
62
+ var provider = new ReferenceMap(
63
+ async (boardId, resolve, reject) => {
64
+ try {
65
+ const board = boards.find(board => {
66
+ return board.id === boardId
67
+ })
68
+ if (!board) {
69
+ throw `no board named as ${boardId}`
70
+ }
71
+
72
+ var scene
73
+
74
+ try {
75
+ scene = await provider.get(boardId)
76
+ console.warn('Board fetched more than twice.', boardId)
77
+ } catch (e) {
78
+ scene = create({
79
+ model: JSON.parse(JSON.stringify(board.model)),
80
+ mode: 0,
81
+ refProvider: provider
82
+ })
83
+ }
84
+ resolve(scene, board)
85
+ } catch (e) {
86
+ error(e)
87
+ reject(e)
88
+ }
89
+ },
90
+ async (id, ref) => {
91
+ ref.dispose()
92
+ }
93
+ )
94
+
95
+ render(
96
+ html` <ox-board-viewer .board=${boards[0]} .provider=${provider}></ox-board-viewer> `,
97
+ document.querySelector('#demo')
98
+ )
99
+ </script>
100
+ </body>
101
+ </html>
@@ -0,0 +1,101 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-GB">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <style>
7
+ body {
8
+ margin: 0;
9
+ padding: 0;
10
+ overflow: hidden;
11
+
12
+ /* This is a font-stack that tries to use the system-default sans-serifs first */
13
+ font-family: Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
14
+ line-height: 1.5;
15
+ -webkit-font-smoothing: antialiased;
16
+ }
17
+
18
+ ox-board-viewer {
19
+ width: 100vw;
20
+ height: 100dvh;
21
+ }
22
+ </style>
23
+ <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet" />
24
+ <link href="/node_modules/@material-design-icons/font/index.css" rel="stylesheet" />
25
+ </head>
26
+ <body>
27
+ <div id="demo"></div>
28
+ <script type="module">
29
+ import { html, render } from 'lit'
30
+ import '../dist/src/ox-board-viewer.js'
31
+ import { ReferenceMap, create, error } from '@hatiolab/things-scene'
32
+
33
+ const colors = ['red', 'blue', 'orange', 'yellow', 'magenta', 'violet', 'navy', 'green', 'cyan', 'lime']
34
+ const boards = colors.map((color, idx) => {
35
+ var to = colors[(idx + 1) % colors.length]
36
+ return {
37
+ id: color,
38
+ model: {
39
+ width: 400,
40
+ height: 300,
41
+ fillStyle: color,
42
+ components: [
43
+ {
44
+ type: 'text',
45
+ left: 100,
46
+ top: 100,
47
+ width: 200,
48
+ height: 30,
49
+ text: `Click to move to ${to}`,
50
+ event: {
51
+ tap: {
52
+ action: 'goto',
53
+ target: to
54
+ }
55
+ }
56
+ }
57
+ ]
58
+ }
59
+ }
60
+ })
61
+
62
+ var provider = new ReferenceMap(
63
+ async (boardId, resolve, reject) => {
64
+ try {
65
+ const board = boards.find(board => {
66
+ return board.id === boardId
67
+ })
68
+ if (!board) {
69
+ throw `no board named as ${boardId}`
70
+ }
71
+
72
+ var scene
73
+
74
+ try {
75
+ scene = await provider.get(boardId)
76
+ console.warn('Board fetched more than twice.', boardId)
77
+ } catch (e) {
78
+ scene = create({
79
+ model: JSON.parse(JSON.stringify(board.model)),
80
+ mode: 0,
81
+ refProvider: provider
82
+ })
83
+ }
84
+ resolve(scene, board)
85
+ } catch (e) {
86
+ error(e)
87
+ reject(e)
88
+ }
89
+ },
90
+ async (id, ref) => {
91
+ ref.dispose()
92
+ }
93
+ )
94
+
95
+ render(
96
+ html` <ox-board-viewer .board=${boards[0]} .provider=${provider}></ox-board-viewer> `,
97
+ document.querySelector('#demo')
98
+ )
99
+ </script>
100
+ </body>
101
+ </html>
@@ -0,0 +1,2 @@
1
+ import { ComponentGroup } from '../types';
2
+ export declare const etc: ComponentGroup;
@@ -0,0 +1,104 @@
1
+ const rect = new URL('../../../icons/components/rect.png', import.meta.url).href;
2
+ const ellipse = new URL('../../../icons/components/ellipse.png', import.meta.url).href;
3
+ const lineIcon = new URL('../../../icons/components/line.png', import.meta.url).href;
4
+ const dash = new URL('../../../icons/components/dash.png', import.meta.url).href;
5
+ const icon = `
6
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
7
+ <style type="text/css">
8
+ .st0{fill:{{strokeColor}};}
9
+ </style>
10
+ <g>
11
+ <circle class="st0" cx="7.1" cy="15" r="2"/>
12
+ <circle class="st0" cx="15" cy="15" r="2"/>
13
+ <circle class="st0" cx="22.9" cy="15" r="2"/>
14
+ </g>
15
+ </svg>
16
+ `;
17
+ export const etc = {
18
+ name: 'etc',
19
+ description: 'a group of components that have not yet been defined.',
20
+ icon,
21
+ templates: [
22
+ {
23
+ type: 'rect',
24
+ description: 'rectangle shape',
25
+ icon: rect,
26
+ group: 'shape',
27
+ model: {
28
+ type: 'rect',
29
+ left: 100,
30
+ top: 100,
31
+ width: 100,
32
+ height: 100,
33
+ fillStyle: '#fff',
34
+ strokeStyle: '#000',
35
+ alpha: 1,
36
+ hidden: false,
37
+ lineWidth: 1,
38
+ lineDash: 'solid',
39
+ lineCap: 'butt'
40
+ }
41
+ },
42
+ {
43
+ type: 'ellipse',
44
+ description: 'ellipse shape',
45
+ icon: ellipse,
46
+ group: 'shape',
47
+ model: {
48
+ type: 'ellipse',
49
+ rx: 50,
50
+ ry: 50,
51
+ cx: 150,
52
+ cy: 150,
53
+ fillStyle: '#fff',
54
+ strokeStyle: '#000',
55
+ alpha: 1,
56
+ hidden: false,
57
+ lineWidth: 1,
58
+ lineDash: 'solid',
59
+ lineCap: 'butt'
60
+ }
61
+ },
62
+ {
63
+ type: 'line',
64
+ description: 'simple line',
65
+ icon: lineIcon,
66
+ group: 'line',
67
+ model: {
68
+ type: 'line',
69
+ x1: 100,
70
+ y1: 100,
71
+ x2: 200,
72
+ y2: 200,
73
+ fillStyle: '#fff',
74
+ strokeStyle: '#000',
75
+ alpha: 1,
76
+ hidden: false,
77
+ lineWidth: 3,
78
+ lineDash: 'solid',
79
+ lineCap: 'butt'
80
+ }
81
+ },
82
+ {
83
+ type: 'dash',
84
+ description: 'dash line',
85
+ icon: dash,
86
+ group: 'line',
87
+ model: {
88
+ type: 'line',
89
+ x1: 100,
90
+ y1: 100,
91
+ x2: 200,
92
+ y2: 200,
93
+ fillStyle: '#fff',
94
+ strokeStyle: '#000',
95
+ alpha: 1,
96
+ hidden: false,
97
+ lineWidth: 3,
98
+ lineDash: 'round-dot',
99
+ lineCap: 'butt'
100
+ }
101
+ }
102
+ ]
103
+ };
104
+ //# sourceMappingURL=etc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"etc.js","sourceRoot":"","sources":["../../../src/component/etc.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAChF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,uCAAuC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AACtF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AACpF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAEhF,MAAM,IAAI,GAAG;;;;;;;;;;;CAWZ,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAmB;IACjC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,uDAAuD;IACpE,IAAI;IACJ,SAAS,EAAE;QACT;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,iBAAiB;YAC9B,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,OAAO;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,GAAG;gBACT,GAAG,EAAE,GAAG;gBACR,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,MAAM;gBACnB,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,MAAM;aAChB;SACF;QACD;YACE,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,eAAe;YAC5B,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,OAAO;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,SAAS;gBACf,EAAE,EAAE,EAAE;gBACN,EAAE,EAAE,EAAE;gBACN,EAAE,EAAE,GAAG;gBACP,EAAE,EAAE,GAAG;gBACP,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,MAAM;gBACnB,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,MAAM;aAChB;SACF;QACD;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,MAAM;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM;gBACZ,EAAE,EAAE,GAAG;gBACP,EAAE,EAAE,GAAG;gBACP,EAAE,EAAE,GAAG;gBACP,EAAE,EAAE,GAAG;gBACP,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,MAAM;gBACnB,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,MAAM;aAChB;SACF;QACD;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,WAAW;YACxB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,MAAM;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM;gBACZ,EAAE,EAAE,GAAG;gBACP,EAAE,EAAE,GAAG;gBACP,EAAE,EAAE,GAAG;gBACP,EAAE,EAAE,GAAG;gBACP,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,MAAM;gBACnB,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,WAAW;gBACrB,OAAO,EAAE,MAAM;aAChB;SACF;KACF;CACF,CAAA","sourcesContent":["import { ComponentGroup } from '../types'\n\nconst rect = new URL('../../../icons/components/rect.png', import.meta.url).href\nconst ellipse = new URL('../../../icons/components/ellipse.png', import.meta.url).href\nconst lineIcon = new URL('../../../icons/components/line.png', import.meta.url).href\nconst dash = new URL('../../../icons/components/dash.png', import.meta.url).href\n\nconst icon = `\n<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 30 30\" style=\"enable-background:new 0 0 30 30;\" xml:space=\"preserve\">\n <style type=\"text/css\">\n .st0{fill:{{strokeColor}};}\n </style>\n <g>\n <circle class=\"st0\" cx=\"7.1\" cy=\"15\" r=\"2\"/>\n <circle class=\"st0\" cx=\"15\" cy=\"15\" r=\"2\"/>\n <circle class=\"st0\" cx=\"22.9\" cy=\"15\" r=\"2\"/>\n </g>\n</svg>\n`\n\nexport const etc: ComponentGroup = {\n name: 'etc',\n description: 'a group of components that have not yet been defined.',\n icon,\n templates: [\n {\n type: 'rect',\n description: 'rectangle shape',\n icon: rect,\n group: 'shape',\n model: {\n type: 'rect',\n left: 100,\n top: 100,\n width: 100,\n height: 100,\n fillStyle: '#fff',\n strokeStyle: '#000',\n alpha: 1,\n hidden: false,\n lineWidth: 1,\n lineDash: 'solid',\n lineCap: 'butt'\n }\n },\n {\n type: 'ellipse',\n description: 'ellipse shape',\n icon: ellipse,\n group: 'shape',\n model: {\n type: 'ellipse',\n rx: 50,\n ry: 50,\n cx: 150,\n cy: 150,\n fillStyle: '#fff',\n strokeStyle: '#000',\n alpha: 1,\n hidden: false,\n lineWidth: 1,\n lineDash: 'solid',\n lineCap: 'butt'\n }\n },\n {\n type: 'line',\n description: 'simple line',\n icon: lineIcon,\n group: 'line',\n model: {\n type: 'line',\n x1: 100,\n y1: 100,\n x2: 200,\n y2: 200,\n fillStyle: '#fff',\n strokeStyle: '#000',\n alpha: 1,\n hidden: false,\n lineWidth: 3,\n lineDash: 'solid',\n lineCap: 'butt'\n }\n },\n {\n type: 'dash',\n description: 'dash line',\n icon: dash,\n group: 'line',\n model: {\n type: 'line',\n x1: 100,\n y1: 100,\n x2: 200,\n y2: 200,\n fillStyle: '#fff',\n strokeStyle: '#000',\n alpha: 1,\n hidden: false,\n lineWidth: 3,\n lineDash: 'round-dot',\n lineCap: 'butt'\n }\n }\n ]\n}\n"]}
@@ -0,0 +1 @@
1
+ export * from './etc';
@@ -0,0 +1,2 @@
1
+ export * from './etc';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/component/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA","sourcesContent":["export * from './etc'\n"]}
@@ -0,0 +1 @@
1
+ export declare function registerDefaultGroups(): void;
@@ -0,0 +1,6 @@
1
+ import { BoardModeller } from '../ox-board-modeller';
2
+ import { etc } from './etc';
3
+ export function registerDefaultGroups() {
4
+ BoardModeller.registerGroup(etc);
5
+ }
6
+ //# sourceMappingURL=register-default-groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-default-groups.js","sourceRoot":"","sources":["../../../src/component/register-default-groups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE3B,MAAM,UAAU,qBAAqB;IACnC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;AAClC,CAAC","sourcesContent":["import { BoardModeller } from '../ox-board-modeller'\nimport { etc } from './etc'\n\nexport function registerDefaultGroups() {\n BoardModeller.registerGroup(etc)\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import { Component, PersistentDataStorage } from '@hatiolab/things-scene';
2
+ export declare class DataStorage implements PersistentDataStorage {
3
+ private id;
4
+ constructor(id: string);
5
+ load(key: Component): Promise<any>;
6
+ save(key: Component, value: any): Promise<void>;
7
+ clear(key: Component): Promise<void>;
8
+ }
@@ -0,0 +1,28 @@
1
+ import Dexie from 'dexie';
2
+ class BoardDatabase extends Dexie {
3
+ //...other tables goes here...
4
+ constructor() {
5
+ super('operato-board-database');
6
+ this.version(1).stores({
7
+ board_data: '[board+refid]'
8
+ //...other tables goes here...
9
+ });
10
+ }
11
+ }
12
+ const db = new BoardDatabase();
13
+ export class DataStorage {
14
+ constructor(id) {
15
+ this.id = id;
16
+ }
17
+ async load(key) {
18
+ const saved = await db.board_data.where({ board: this.id, refid: key.state.refid }).first();
19
+ return saved === null || saved === void 0 ? void 0 : saved.data;
20
+ }
21
+ async save(key, value) {
22
+ await db.board_data.put({ board: this.id, refid: key.state.refid, data: value, timestamp: Date.now() });
23
+ }
24
+ async clear(key) {
25
+ await db.board_data.where({ board: this.id, refid: key.state.refid }).delete();
26
+ }
27
+ }
28
+ //# sourceMappingURL=data-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-storage.js","sourceRoot":"","sources":["../../../src/data-storage/data-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,aAAc,SAAQ,KAAK;IAE/B,8BAA8B;IAE9B;QACE,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACrB,UAAU,EAAE,eAAe;YAC3B,8BAA8B;SAC/B,CAAC,CAAA;IACJ,CAAC;CACF;AAUD,MAAM,EAAE,GAAG,IAAI,aAAa,EAAE,CAAA;AAE9B,MAAM,OAAO,WAAW;IAGtB,YAAY,EAAU;QACpB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,GAAc;QAC9B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;QAC3F,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA;IACpB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,GAAc,EAAE,KAAU;QAC1C,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACzG,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,GAAc;QAC/B,MAAM,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA;IAChF,CAAC;CACF","sourcesContent":["import Dexie from 'dexie'\n\nimport { Component, PersistentDataStorage } from '@hatiolab/things-scene'\n\nclass BoardDatabase extends Dexie {\n board_data!: Dexie.Table<IBoardData, number> // number = type of the primkey\n //...other tables goes here...\n\n constructor() {\n super('operato-board-database')\n this.version(1).stores({\n board_data: '[board+refid]'\n //...other tables goes here...\n })\n }\n}\n\ninterface IBoardData {\n id?: number\n board: string\n refid: string | number\n data: any\n timestamp: number\n}\n\nconst db = new BoardDatabase()\n\nexport class DataStorage implements PersistentDataStorage {\n private id: string\n\n constructor(id: string) {\n this.id = id\n }\n\n public async load(key: Component): Promise<any> {\n const saved = await db.board_data.where({ board: this.id, refid: key.state.refid }).first()\n return saved?.data\n }\n\n public async save(key: Component, value: any): Promise<void> {\n await db.board_data.put({ board: this.id, refid: key.state.refid, data: value, timestamp: Date.now() })\n }\n\n public async clear(key: Component): Promise<void> {\n await db.board_data.where({ board: this.id, refid: key.state.refid }).delete()\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { Board } from '../types';
2
+ export declare function fetchBoardList(listParam?: {}): Promise<any>;
3
+ export declare function fetchBoard(id: string): Promise<any>;
4
+ export declare function createBoard(board: Board): Promise<any>;
5
+ export declare function updateBoard(board: Board): Promise<any>;
6
+ export declare function deleteBoard(id: string): Promise<any>;