@operato/board 0.2.51 → 0.2.52

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 (75) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/custom-elements.json +976 -292
  3. package/dist/src/component/3d.d.ts +2 -2
  4. package/dist/src/component/3d.js.map +1 -1
  5. package/dist/src/component/chart-and-gauge.d.ts +2 -2
  6. package/dist/src/component/chart-and-gauge.js.map +1 -1
  7. package/dist/src/component/container.d.ts +2 -2
  8. package/dist/src/component/container.js.map +1 -1
  9. package/dist/src/component/data-source.d.ts +2 -2
  10. package/dist/src/component/data-source.js.map +1 -1
  11. package/dist/src/component/etc.d.ts +2 -2
  12. package/dist/src/component/etc.js.map +1 -1
  13. package/dist/src/component/form.d.ts +2 -2
  14. package/dist/src/component/form.js.map +1 -1
  15. package/dist/src/component/iot.d.ts +2 -2
  16. package/dist/src/component/iot.js.map +1 -1
  17. package/dist/src/component/line.d.ts +2 -2
  18. package/dist/src/component/line.js.map +1 -1
  19. package/dist/src/component/shape.d.ts +2 -2
  20. package/dist/src/component/shape.js.map +1 -1
  21. package/dist/src/component/table.d.ts +2 -2
  22. package/dist/src/component/table.js.map +1 -1
  23. package/dist/src/component/text-and-media.d.ts +2 -2
  24. package/dist/src/component/text-and-media.js.map +1 -1
  25. package/dist/src/component/warehouse.d.ts +2 -2
  26. package/dist/src/component/warehouse.js.map +1 -1
  27. package/dist/src/graphql/board.d.ts +6 -0
  28. package/dist/src/graphql/board.js +130 -0
  29. package/dist/src/graphql/board.js.map +1 -0
  30. package/dist/src/graphql/favorite-board.d.ts +1 -0
  31. package/dist/src/graphql/favorite-board.js +23 -0
  32. package/dist/src/graphql/favorite-board.js.map +1 -0
  33. package/dist/src/graphql/group.d.ts +7 -0
  34. package/dist/src/graphql/group.js +125 -0
  35. package/dist/src/graphql/group.js.map +1 -0
  36. package/dist/src/graphql/index.d.ts +4 -0
  37. package/dist/src/graphql/index.js +5 -0
  38. package/dist/src/graphql/index.js.map +1 -0
  39. package/dist/src/graphql/play-group.d.ts +8 -0
  40. package/dist/src/graphql/play-group.js +173 -0
  41. package/dist/src/graphql/play-group.js.map +1 -0
  42. package/dist/src/modeller/component-toolbar/component-toolbar.js.map +1 -1
  43. package/dist/src/ox-board-list.d.ts +2 -0
  44. package/dist/src/ox-board-list.js +427 -0
  45. package/dist/src/ox-board-list.js.map +1 -0
  46. package/dist/src/ox-board-modeller.d.ts +4 -4
  47. package/dist/src/ox-board-modeller.js.map +1 -1
  48. package/dist/src/types.d.ts +18 -1
  49. package/dist/src/types.js.map +1 -1
  50. package/dist/tsconfig.tsbuildinfo +1 -1
  51. package/package.json +11 -6
  52. package/src/component/3d.ts +2 -2
  53. package/src/component/chart-and-gauge.ts +2 -2
  54. package/src/component/container.ts +2 -2
  55. package/src/component/data-source.ts +2 -2
  56. package/src/component/etc.ts +2 -2
  57. package/src/component/form.ts +2 -2
  58. package/src/component/iot.ts +2 -2
  59. package/src/component/line.ts +2 -2
  60. package/src/component/shape.ts +2 -2
  61. package/src/component/table.ts +2 -2
  62. package/src/component/text-and-media.ts +2 -2
  63. package/src/component/warehouse.ts +2 -2
  64. package/src/graphql/board.ts +144 -0
  65. package/src/graphql/favorite-board.ts +25 -0
  66. package/src/graphql/group.ts +138 -0
  67. package/src/graphql/index.ts +4 -0
  68. package/src/graphql/play-group.ts +189 -0
  69. package/src/modeller/component-toolbar/component-toolbar.ts +3 -3
  70. package/src/ox-board-list.ts +459 -0
  71. package/src/ox-board-modeller.ts +4 -4
  72. package/src/types.ts +21 -1
  73. package/dist/src/component/init-groups.d.ts +0 -1
  74. package/dist/src/component/init-groups.js +0 -28
  75. package/dist/src/component/init-groups.js.map +0 -1
@@ -0,0 +1,459 @@
1
+ import '@operato/popup'
2
+ import '@operato/data-grist'
3
+
4
+ import { Board, BoardGroup } from './types'
5
+ import { ColumnConfig, GristData, GristRecord, SortersConfig } from '@operato/data-grist/dist/src/types'
6
+ import { LitElement, css, html } from 'lit'
7
+ import { createBoard, fetchBoardList } from './graphql/board'
8
+ import { customElement, property, query, state } from 'lit/decorators'
9
+
10
+ import { DataGrist } from '@operato/data-grist'
11
+ import { OxPopup } from '@operato/popup'
12
+ import { fetchFavoriteBoardList } from './graphql/favorite-board'
13
+ import { fetchGroupList } from './graphql/group'
14
+
15
+ @customElement('ox-board-list')
16
+ class BoardList extends LitElement {
17
+ static styles = css`
18
+ :host {
19
+ display: flex;
20
+
21
+ width: 100%;
22
+
23
+ --grid-record-emphasized-background-color: red;
24
+ --grid-record-emphasized-color: yellow;
25
+ }
26
+
27
+ ox-grist {
28
+ flex: 1;
29
+ overflow-y: auto;
30
+
31
+ --grid-record-emphasized-background-color: red;
32
+ --grid-record-emphasized-color: yellow;
33
+ }
34
+
35
+ #headroom {
36
+ display: flex;
37
+ flex-direction: row;
38
+ align-items: center;
39
+ padding: var(--padding-default) var(--padding-wide);
40
+ border-top: 2px solid rgba(0, 0, 0, 0.2);
41
+ background-color: var(--theme-white-color);
42
+ box-shadow: var(--box-shadow);
43
+ }
44
+
45
+ #filters {
46
+ flex: 1;
47
+ --mdc-icon-size: 20px;
48
+ }
49
+ #mode {
50
+ width: 100px;
51
+ }
52
+ #add {
53
+ width: 50px;
54
+ text-align: right;
55
+ }
56
+
57
+ #modes > * {
58
+ padding: var(--padding-narrow);
59
+ font-size: 1em;
60
+ opacity: 0.5;
61
+ color: var(--primary-text-color);
62
+ cursor: pointer;
63
+ }
64
+
65
+ #modes > mwc-icon[active] {
66
+ border-radius: 9px;
67
+ background-color: rgba(var(--primary-color-rgb), 0.05);
68
+ opacity: 1;
69
+ color: var(--secondary-text-color);
70
+ cursor: default;
71
+ }
72
+ #modes > mwc-icon:hover {
73
+ opacity: 1;
74
+ color: var(--secondary-text-color);
75
+ }
76
+
77
+ #add button {
78
+ background-color: var(--status-success-color);
79
+ border: 0;
80
+ border-radius: 50%;
81
+ padding: 5px;
82
+ width: 36px;
83
+ height: 36px;
84
+ cursor: pointer;
85
+ }
86
+ #add button:hover {
87
+ background-color: var(--focus-background-color);
88
+ box-shadow: var(--box-shadow);
89
+ }
90
+ #add button mwc-icon {
91
+ font-size: 2em;
92
+ color: var(--theme-white-color);
93
+ }
94
+
95
+ #filters {
96
+ position: relative;
97
+ }
98
+ #filters [type='text'] {
99
+ background-color: transparent;
100
+ border: 0;
101
+ border-bottom: var(--border-dark-color);
102
+ padding: var(--padding-narrow) var(--padding-narrow) 7px 25px;
103
+ font-size: var(--fontsize-large);
104
+ }
105
+ #filters [type='text']:focus {
106
+ outline: none;
107
+ }
108
+ #filters mwc-icon {
109
+ position: absolute;
110
+ top: 3px;
111
+ color: var(--secondary-color);
112
+ }
113
+ #filters * {
114
+ margin-right: var(--margin-default);
115
+ }
116
+
117
+ oops-spinner {
118
+ display: none;
119
+ position: absolute;
120
+ left: 50%;
121
+ top: 50%;
122
+ transform: translate(-50%, -50%);
123
+ }
124
+
125
+ oops-spinner[show] {
126
+ display: block;
127
+ }
128
+
129
+ @media only screen and (max-width: 460px) {
130
+ #modes {
131
+ display: none;
132
+ }
133
+ }
134
+ `
135
+
136
+ @property({ type: Boolean }) creatable: boolean = false
137
+ @property({ type: Object }) config: any
138
+ @property({ type: Object }) data: any
139
+ @property({ type: String }) mode: 'GRID' | 'LIST' | 'CARD' = 'CARD'
140
+ @property({ type: String }) groupId?: string
141
+ @property({ type: Array }) groups: any[] = []
142
+ @property({ type: Array }) favorites: any[] = []
143
+
144
+ @state() _showSpinner: boolean = false
145
+
146
+ @query('ox-grist') grist!: DataGrist
147
+
148
+ render() {
149
+ const mode = this.mode || 'CARD'
150
+
151
+ return html`
152
+ <ox-grist .config=${this.config} .mode=${mode} auto-fetch .fetchHandler=${this.fetchHandler.bind(this)}>
153
+ <div slot="headroom" id="headroom">
154
+ <div id="filters">
155
+ <mwc-icon>search</mwc-icon>
156
+ <input type="text" />
157
+
158
+ <select
159
+ @change=${(e: Event) => {
160
+ this.groupId = (e.currentTarget as HTMLInputElement).value
161
+ this.requestUpdate()
162
+ }}
163
+ >
164
+ <option value="">*</option>
165
+ ${this.groups.map(
166
+ group =>
167
+ html` <option value=${group.id} ?selected=${group.id === this.groupId}>${group.description}</option> `
168
+ )}
169
+ </select>
170
+ </div>
171
+
172
+ <div id="modes">
173
+ <mwc-icon @click=${() => (this.mode = 'GRID')} ?active=${mode == 'GRID'}>grid_on</mwc-icon>
174
+ <mwc-icon @click=${() => (this.mode = 'LIST')} ?active=${mode == 'LIST'}>format_list_bulleted</mwc-icon>
175
+ <mwc-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</mwc-icon>
176
+ </div>
177
+
178
+ ${this.creatable
179
+ ? html`
180
+ <div id="add">
181
+ <button><mwc-icon @click=${() => this.onCreateBoard()}>add</mwc-icon></button>
182
+ </div>
183
+ `
184
+ : undefined}
185
+ </div>
186
+ </ox-grist>
187
+
188
+ <oops-spinner ?show=${this._showSpinner}></oops-spinner>
189
+ `
190
+ }
191
+
192
+ async fetchHandler({ page, limit, sorters = [] }: { page: number; limit: number; sorters: SortersConfig }) {
193
+ this._showSpinner = true
194
+
195
+ const { items: records, total } = await this.getBoards({ page, limit, sorters })
196
+
197
+ this._showSpinner = false
198
+
199
+ return {
200
+ total,
201
+ records
202
+ }
203
+ }
204
+
205
+ get gristConfig() {
206
+ return {
207
+ list: {
208
+ thumbnail: function (record: GristRecord, rowIndex: number) {
209
+ return html` <img src=${record.thumbnail} style="width: 100%; height: 100%;" /> `
210
+ },
211
+ fields: ['name', 'description'],
212
+ details: ['updatedAt']
213
+ },
214
+ columns: [
215
+ {
216
+ type: 'gutter',
217
+ gutterName: 'dirty'
218
+ },
219
+ {
220
+ type: 'gutter',
221
+ gutterName: 'sequence'
222
+ },
223
+ {
224
+ type: 'gutter',
225
+ gutterName: 'button',
226
+ icon: 'star_border',
227
+ handlers: {
228
+ click: (
229
+ columns: ColumnConfig[],
230
+ data: GristData,
231
+ column: ColumnConfig,
232
+ record: GristRecord,
233
+ rowIndex: number
234
+ ): void => {}
235
+ }
236
+ },
237
+ {
238
+ type: 'gutter',
239
+ gutterName: 'button',
240
+ icon: 'drive_file_rename_outline',
241
+ handlers: {
242
+ click: (
243
+ columns: ColumnConfig[],
244
+ data: GristData,
245
+ column: ColumnConfig,
246
+ record: GristRecord,
247
+ rowIndex: number
248
+ ): void => {}
249
+ }
250
+ },
251
+ {
252
+ type: 'string',
253
+ name: 'id',
254
+ hidden: true
255
+ },
256
+ {
257
+ type: 'string',
258
+ name: 'name',
259
+ header: 'name',
260
+ record: {
261
+ editable: true,
262
+ align: 'left'
263
+ },
264
+ width: 200,
265
+ sortable: true
266
+ },
267
+ {
268
+ type: 'string',
269
+ name: 'description',
270
+ header: 'description',
271
+ record: {
272
+ editable: true,
273
+ align: 'left'
274
+ },
275
+ width: 200,
276
+ handlers: {
277
+ dblclick: (
278
+ columns: ColumnConfig[],
279
+ data: GristData,
280
+ column: ColumnConfig,
281
+ record: GristRecord,
282
+ rowIndex: number
283
+ ): void => {
284
+ alert(`${column.name} ${record[column.name]}, row : ${rowIndex}`)
285
+ }
286
+ }
287
+ },
288
+ {
289
+ type: 'boolean',
290
+ name: 'active',
291
+ header: 'active',
292
+ record: {
293
+ editable: true
294
+ },
295
+ sortable: true,
296
+ width: 60
297
+ },
298
+ {
299
+ type: 'datetime',
300
+ name: 'updatedAt',
301
+ header: 'updated at',
302
+ record: {
303
+ editable: true
304
+ },
305
+ sortable: true,
306
+ width: 180
307
+ },
308
+ {
309
+ type: 'datetime',
310
+ name: 'createdAt',
311
+ header: 'created at',
312
+ record: {
313
+ editable: true
314
+ },
315
+ sortable: true,
316
+ width: 180
317
+ }
318
+ ],
319
+ rows: {
320
+ selectable: {
321
+ multiple: true
322
+ },
323
+ handlers: {},
324
+ classifier: function (
325
+ record: GristRecord,
326
+ rowIndex: number
327
+ ): { emphasized?: boolean | string | string[]; [key: string]: any } | void {}
328
+ },
329
+ sorters: [
330
+ {
331
+ name: 'name',
332
+ desc: false
333
+ }
334
+ ],
335
+ pagination: {
336
+ pages: [20, 30, 50, 100, 200]
337
+ }
338
+ }
339
+ }
340
+
341
+ async refresh() {
342
+ this.groups = (await fetchGroupList()).groups.items
343
+
344
+ if (this.groups) {
345
+ await this.refreshBoards()
346
+ }
347
+ }
348
+
349
+ async getBoards({
350
+ page = 1,
351
+ limit = 30,
352
+ sorters = []
353
+ }: { page?: number; limit?: number; sorters?: SortersConfig } = {}) {
354
+ if (this.groupId && this.groupId == 'favor')
355
+ return await this.getFavoriteBoards({
356
+ page,
357
+ limit
358
+ })
359
+
360
+ var listParam = {
361
+ filters: this.groupId
362
+ ? [
363
+ {
364
+ name: 'group_id',
365
+ operator: 'eq',
366
+ value: this.groupId
367
+ }
368
+ ]
369
+ : [],
370
+ sortings: sorters,
371
+ pagination: {
372
+ page,
373
+ limit
374
+ }
375
+ }
376
+
377
+ return (await fetchBoardList(listParam)).boards
378
+ }
379
+
380
+ async getFavoriteBoards({ page = 1, limit = 30 } = {}) {
381
+ var listParam = {
382
+ pagination: {
383
+ page,
384
+ limit
385
+ }
386
+ }
387
+
388
+ return (await fetchFavoriteBoardList(listParam)).favoriteBoards
389
+ }
390
+
391
+ async refreshBoards() {
392
+ if (!this.groups) {
393
+ await this.refresh()
394
+ return
395
+ }
396
+
397
+ this.grist.fetch()
398
+ }
399
+
400
+ async onCreateBoard() {
401
+ /*
402
+ * 기존 설정된 이미지가 선택된 상태가 되게 하기 위해서는 selector에 value를 전달해줄 필요가 있음.
403
+ * 주의. value는 object일 수도 있고, string일 수도 있다.
404
+ * string인 경우에는 해당 보드의 id로 해석한다.
405
+ */
406
+ var template = html`
407
+ <process-creation-popup
408
+ .defaultGroup=${this.groupId}
409
+ .groups=${this.groups}
410
+ @create-process=${async (e: CustomEvent) => {
411
+ try {
412
+ var { name, description, groupId } = e.detail
413
+ var board: Board = {
414
+ name,
415
+ description,
416
+ groupId,
417
+ model: {
418
+ width: 1200,
419
+ height: 800
420
+ }
421
+ }
422
+
423
+ const { createBoard: created } = await createBoard(board)
424
+
425
+ // this.popup && this.popup.close()
426
+
427
+ // await sleep(100)
428
+
429
+ this.notify('info', 'new process created')
430
+ } catch (ex: Error | any) {
431
+ console.error(ex)
432
+ this.notify('error', ex, ex)
433
+ }
434
+ }}
435
+ ></process-creation-popup>
436
+ `
437
+
438
+ OxPopup.open({
439
+ template,
440
+ parent: this.renderRoot as Element
441
+ })
442
+
443
+ requestAnimationFrame(() => {
444
+ dispatchEvent(new Event('resize'))
445
+ })
446
+ }
447
+
448
+ notify(level: 'warn' | 'error' | 'info', message: any, ex?: Error) {
449
+ document.dispatchEvent(
450
+ new CustomEvent('notify', {
451
+ detail: {
452
+ level,
453
+ message,
454
+ ex
455
+ }
456
+ })
457
+ )
458
+ }
459
+ }
@@ -6,7 +6,7 @@ import './modeller/edit-toolbar'
6
6
  import '@hatiolab/things-scene'
7
7
  import './ox-board-viewer'
8
8
 
9
- import { ComponentTemplate, Group } from './types'
9
+ import { ComponentGroup, ComponentTemplate } from './types'
10
10
  import { LitElement, css, html } from 'lit'
11
11
  import { Model, SCENE_MODE, Scene } from '@hatiolab/things-scene'
12
12
  import { customElement, property, query } from 'lit/decorators.js'
@@ -18,7 +18,7 @@ import { togglefullscreen } from './utils/fullscreen'
18
18
 
19
19
  const isMacOS = navigator.userAgent.indexOf('Mac') != -1
20
20
 
21
- var Registry: Group[] = []
21
+ var Registry: ComponentGroup[] = []
22
22
 
23
23
  @customElement('ox-board-modeller')
24
24
  export class BoardModeller extends LitElement {
@@ -95,7 +95,7 @@ export class BoardModeller extends LitElement {
95
95
  `
96
96
  ]
97
97
 
98
- static registerGroup(group: Group) {
98
+ static registerGroup(group: ComponentGroup) {
99
99
  var found = Registry.find(inRegisterGroup => inRegisterGroup.name == group.name)
100
100
 
101
101
  if (found) {
@@ -124,7 +124,7 @@ export class BoardModeller extends LitElement {
124
124
  })
125
125
  }
126
126
 
127
- static get groups(): Group[] {
127
+ static get groups(): ComponentGroup[] {
128
128
  return Registry
129
129
  }
130
130
 
package/src/types.ts CHANGED
@@ -46,9 +46,29 @@ export type ComponentTemplate = {
46
46
  model: Model
47
47
  }
48
48
 
49
- export type Group = {
49
+ export type ComponentGroup = {
50
50
  name: string
51
51
  description: string
52
52
  icon: string
53
53
  templates: ComponentTemplate[]
54
54
  }
55
+
56
+ export type Board = {
57
+ id?: string
58
+ name?: string
59
+ description?: string
60
+ model?: any
61
+ groupId?: string
62
+ }
63
+
64
+ export type BoardGroup = {
65
+ id?: string
66
+ name?: string
67
+ description?: string
68
+ }
69
+
70
+ export type PlayGroup = {
71
+ id?: string
72
+ name?: string
73
+ description?: string
74
+ }
@@ -1 +0,0 @@
1
- export declare function registerDefaultGroups(): void;
@@ -1,28 +0,0 @@
1
- import { BoardModeller } from '../ox-board-modeller';
2
- import { chartAndGauge } from './chart-and-gauge';
3
- import { container } from './container';
4
- import { dataSource } from './data-source';
5
- import { etc } from './etc';
6
- import { form } from './form';
7
- import { iot } from './iot';
8
- import { line } from './line';
9
- import { shape } from './shape';
10
- import { table } from './table';
11
- import { textAndMedia } from './text-and-media';
12
- import { threed } from './3d';
13
- import { warehouse } from './warehouse';
14
- export function registerDefaultGroups() {
15
- BoardModeller.registerGroup(line);
16
- BoardModeller.registerGroup(shape);
17
- BoardModeller.registerGroup(textAndMedia);
18
- BoardModeller.registerGroup(chartAndGauge);
19
- BoardModeller.registerGroup(table);
20
- BoardModeller.registerGroup(container);
21
- BoardModeller.registerGroup(dataSource);
22
- BoardModeller.registerGroup(iot);
23
- BoardModeller.registerGroup(threed);
24
- BoardModeller.registerGroup(warehouse);
25
- BoardModeller.registerGroup(form);
26
- BoardModeller.registerGroup(etc);
27
- }
28
- //# sourceMappingURL=init-groups.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init-groups.js","sourceRoot":"","sources":["../../../src/component/init-groups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,UAAU,qBAAqB;IACnC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IACjC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAClC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;IACzC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;IAC1C,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAClC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IACtC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IACvC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAChC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IACnC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IACtC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IACjC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;AAClC,CAAC","sourcesContent":["import { BoardModeller } from '../ox-board-modeller'\nimport { chartAndGauge } from './chart-and-gauge'\nimport { container } from './container'\nimport { dataSource } from './data-source'\nimport { etc } from './etc'\nimport { form } from './form'\nimport { iot } from './iot'\nimport { line } from './line'\nimport { shape } from './shape'\nimport { table } from './table'\nimport { textAndMedia } from './text-and-media'\nimport { threed } from './3d'\nimport { warehouse } from './warehouse'\n\nexport function registerDefaultGroups() {\n BoardModeller.registerGroup(line)\n BoardModeller.registerGroup(shape)\n BoardModeller.registerGroup(textAndMedia)\n BoardModeller.registerGroup(chartAndGauge)\n BoardModeller.registerGroup(table)\n BoardModeller.registerGroup(container)\n BoardModeller.registerGroup(dataSource)\n BoardModeller.registerGroup(iot)\n BoardModeller.registerGroup(threed)\n BoardModeller.registerGroup(warehouse)\n BoardModeller.registerGroup(form)\n BoardModeller.registerGroup(etc)\n}\n"]}