@operato/board 10.0.0-beta.5 → 10.0.0-beta.51

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 (89) hide show
  1. package/CHANGELOG.md +422 -0
  2. package/dist/src/component/container.js +18 -3
  3. package/dist/src/component/container.js.map +1 -1
  4. package/dist/src/component/conveyance.d.ts +2 -0
  5. package/dist/src/component/conveyance.js +38 -0
  6. package/dist/src/component/conveyance.js.map +1 -0
  7. package/dist/src/component/etc.js +2 -10
  8. package/dist/src/component/etc.js.map +1 -1
  9. package/dist/src/component/facility.d.ts +2 -0
  10. package/dist/src/component/facility.js +35 -0
  11. package/dist/src/component/facility.js.map +1 -0
  12. package/dist/src/component/index.d.ts +5 -0
  13. package/dist/src/component/index.js +5 -0
  14. package/dist/src/component/index.js.map +1 -1
  15. package/dist/src/component/line.js +4 -28
  16. package/dist/src/component/line.js.map +1 -1
  17. package/dist/src/component/manufacturing.d.ts +2 -0
  18. package/dist/src/component/manufacturing.js +41 -0
  19. package/dist/src/component/manufacturing.js.map +1 -0
  20. package/dist/src/component/register-default-groups.js +19 -2
  21. package/dist/src/component/register-default-groups.js.map +1 -1
  22. package/dist/src/component/shape.js +5 -29
  23. package/dist/src/component/shape.js.map +1 -1
  24. package/dist/src/component/storage.d.ts +2 -0
  25. package/dist/src/component/storage.js +27 -0
  26. package/dist/src/component/storage.js.map +1 -0
  27. package/dist/src/component/text-and-media.js +2 -25
  28. package/dist/src/component/text-and-media.js.map +1 -1
  29. package/dist/src/component/transport.d.ts +2 -0
  30. package/dist/src/component/transport.js +36 -0
  31. package/dist/src/component/transport.js.map +1 -0
  32. package/dist/src/component/warehouse.d.ts +1 -0
  33. package/dist/src/component/warehouse.js +8 -1
  34. package/dist/src/component/warehouse.js.map +1 -1
  35. package/dist/src/data-storage/board-model-cache.d.ts +30 -0
  36. package/dist/src/data-storage/board-model-cache.js +93 -0
  37. package/dist/src/data-storage/board-model-cache.js.map +1 -0
  38. package/dist/src/graphql/playback-buffer.d.ts +79 -0
  39. package/dist/src/graphql/playback-buffer.js +139 -0
  40. package/dist/src/graphql/playback-buffer.js.map +1 -0
  41. package/dist/src/graphql/playback-buffer.test.d.ts +1 -0
  42. package/dist/src/graphql/playback-buffer.test.js +261 -0
  43. package/dist/src/graphql/playback-buffer.test.js.map +1 -0
  44. package/dist/src/graphql/playback-subscription.d.ts +89 -0
  45. package/dist/src/graphql/playback-subscription.js +258 -0
  46. package/dist/src/graphql/playback-subscription.js.map +1 -0
  47. package/dist/src/index.d.ts +3 -0
  48. package/dist/src/index.js +2 -0
  49. package/dist/src/index.js.map +1 -1
  50. package/dist/src/modeller/bulk-create-dialog.d.ts +51 -0
  51. package/dist/src/modeller/bulk-create-dialog.js +531 -0
  52. package/dist/src/modeller/bulk-create-dialog.js.map +1 -0
  53. package/dist/src/modeller/bulk-create.d.ts +101 -0
  54. package/dist/src/modeller/bulk-create.js +199 -0
  55. package/dist/src/modeller/bulk-create.js.map +1 -0
  56. package/dist/src/modeller/component-toolbar/component-menu.js +8 -1
  57. package/dist/src/modeller/component-toolbar/component-menu.js.map +1 -1
  58. package/dist/src/modeller/edit-toolbar-style.js +38 -1
  59. package/dist/src/modeller/edit-toolbar-style.js.map +1 -1
  60. package/dist/src/modeller/edit-toolbar.d.ts +21 -16
  61. package/dist/src/modeller/edit-toolbar.js +362 -201
  62. package/dist/src/modeller/edit-toolbar.js.map +1 -1
  63. package/dist/src/modeller/scene-viewer/ox-scene-viewer.d.ts +2 -1
  64. package/dist/src/modeller/scene-viewer/ox-scene-viewer.js +7 -11
  65. package/dist/src/modeller/scene-viewer/ox-scene-viewer.js.map +1 -1
  66. package/dist/src/ox-board-modeller.d.ts +8 -1
  67. package/dist/src/ox-board-modeller.js +125 -6
  68. package/dist/src/ox-board-modeller.js.map +1 -1
  69. package/dist/src/ox-board-preview.d.ts +36 -0
  70. package/dist/src/ox-board-preview.js +114 -0
  71. package/dist/src/ox-board-preview.js.map +1 -0
  72. package/dist/src/ox-board-template-list.d.ts +1 -0
  73. package/dist/src/ox-board-template-list.js +19 -1
  74. package/dist/src/ox-board-template-list.js.map +1 -1
  75. package/dist/src/ox-board-viewer.d.ts +50 -1
  76. package/dist/src/ox-board-viewer.js +271 -28
  77. package/dist/src/ox-board-viewer.js.map +1 -1
  78. package/dist/src/ox-playback-controls.d.ts +56 -0
  79. package/dist/src/ox-playback-controls.js +515 -0
  80. package/dist/src/ox-playback-controls.js.map +1 -0
  81. package/dist/src/selector/ox-board-selector.js +11 -1
  82. package/dist/src/selector/ox-board-selector.js.map +1 -1
  83. package/dist/tsconfig.tsbuildinfo +1 -1
  84. package/package.json +17 -12
  85. package/translations/en.json +19 -1
  86. package/translations/ja.json +19 -1
  87. package/translations/ko.json +19 -1
  88. package/translations/ms.json +19 -1
  89. package/translations/zh.json +19 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,428 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [10.0.0-beta.51](https://github.com/hatiolab/operato/compare/v10.0.0-beta.50...v10.0.0-beta.51) (2026-05-12)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * **board:** bulk-paste 시 원본 크기 보존 — type-aware bounds derive ([353d0ab](https://github.com/hatiolab/operato/commit/353d0ab5f59ba7e559a5def3cd31badd2571f27b))
12
+
13
+
14
+ ### :house: Code Refactoring
15
+
16
+ * **board:** bulk-create helpers 를 local 구현으로 (things-scene 분리) ([e36e096](https://github.com/hatiolab/operato/commit/e36e096bb89d24f17267dc19ecd22acf44857735))
17
+
18
+
19
+
20
+ ## [10.0.0-beta.50](https://github.com/hatiolab/operato/compare/v10.0.0-beta.49...v10.0.0-beta.50) (2026-05-12)
21
+
22
+
23
+ ### :rocket: New Features
24
+
25
+ * **board:** bulk-paste (Ctrl+Shift+V) + zorder Photoshop 컨벤션 ([9a1bb03](https://github.com/hatiolab/operato/commit/9a1bb031e157b15cabff0403ad27fbdeb559fa55)), closes [#4a9](https://github.com/hatiolab/operato/issues/4a9)
26
+
27
+
28
+ ### :mega: Other
29
+
30
+ * **board:** bulk-paste dialog 디버깅 console.log 제거 ([e1b88d5](https://github.com/hatiolab/operato/commit/e1b88d511ebdc106a1cda77ee6893f79775afd99))
31
+
32
+
33
+ ### :house: Code Refactoring
34
+
35
+ * **board:** bulk-paste 영역 드래그를 things-scene AddLayer 로 위임 ([9efdac7](https://github.com/hatiolab/operato/commit/9efdac7831a47072a81e5d4122ecf321de47c378)), closes [#2964c2](https://github.com/hatiolab/operato/issues/2964c2)
36
+
37
+
38
+ ### :bug: Bug Fix
39
+
40
+ * **board:** bulk-create-dialog 4꼭지점 흰색 사각형 제거 ([e8bd653](https://github.com/hatiolab/operato/commit/e8bd653a81a1c2c4886546a9c9a261bfb0159795))
41
+
42
+
43
+
44
+ ## [10.0.0-beta.49](https://github.com/hatiolab/operato/compare/v10.0.0-beta.48...v10.0.0-beta.49) (2026-05-07)
45
+
46
+ **Note:** Version bump only for package @operato/board
47
+
48
+
49
+
50
+
51
+
52
+ ## [10.0.0-beta.48](https://github.com/hatiolab/operato/compare/v10.0.0-beta.47...v10.0.0-beta.48) (2026-05-05)
53
+
54
+
55
+ ### :rocket: New Features
56
+
57
+ * **property-panel:** generic-object 타입 변환 UI를 specifics 탭 전용 에디터로 이동 ([4b90f57](https://github.com/hatiolab/operato/commit/4b90f574c29f1677eb0dacc73b05e9fd10c9d2b2))
58
+
59
+
60
+
61
+ ## [10.0.0-beta.47](https://github.com/hatiolab/operato/compare/v10.0.0-beta.46...v10.0.0-beta.47) (2026-05-03)
62
+
63
+
64
+ ### :rocket: New Features
65
+
66
+ * **modeller:** popup-container palette + inline-popup tap actions ([737b081](https://github.com/hatiolab/operato/commit/737b0819c287d7703f404db266e79b12281070d3))
67
+
68
+
69
+
70
+ ## [10.0.0-beta.46](https://github.com/hatiolab/operato/compare/v10.0.0-beta.45...v10.0.0-beta.46) (2026-05-01)
71
+
72
+ **Note:** Version bump only for package @operato/board
73
+
74
+
75
+
76
+
77
+
78
+ ## [10.0.0-beta.45](https://github.com/hatiolab/operato/compare/v10.0.0-beta.44...v10.0.0-beta.45) (2026-04-30)
79
+
80
+
81
+ ### :rocket: New Features
82
+
83
+ * **board,property-panel:** logistics group split + NaN-safe number inputs ([aa3aa37](https://github.com/hatiolab/operato/commit/aa3aa376802d2296ee9a8315b4490b8a2a34b223))
84
+ * **board,property-panel:** manufacturing group + dynamic nature refresh ([a82cab7](https://github.com/hatiolab/operato/commit/a82cab79dded6b5996c554dfbcaf6f578f303861))
85
+
86
+
87
+
88
+ ## [10.0.0-beta.44](https://github.com/hatiolab/operato/compare/v10.0.0-beta.43...v10.0.0-beta.44) (2026-04-28)
89
+
90
+ **Note:** Version bump only for package @operato/board
91
+
92
+
93
+
94
+
95
+
96
+ ## [10.0.0-beta.43](https://github.com/hatiolab/operato/compare/v10.0.0-beta.42...v10.0.0-beta.43) (2026-04-24)
97
+
98
+ **Note:** Version bump only for package @operato/board
99
+
100
+
101
+
102
+
103
+
104
+ ## [10.0.0-beta.42](https://github.com/hatiolab/operato/compare/v10.0.0-beta.41...v10.0.0-beta.42) (2026-04-18)
105
+
106
+ **Note:** Version bump only for package @operato/board
107
+
108
+
109
+
110
+
111
+
112
+ ## [10.0.0-beta.41](https://github.com/hatiolab/operato/compare/v10.0.0-beta.40...v10.0.0-beta.41) (2026-04-18)
113
+
114
+ **Note:** Version bump only for package @operato/board
115
+
116
+
117
+
118
+
119
+
120
+ ## [10.0.0-beta.40](https://github.com/hatiolab/operato/compare/v10.0.0-beta.39...v10.0.0-beta.40) (2026-04-18)
121
+
122
+ **Note:** Version bump only for package @operato/board
123
+
124
+
125
+
126
+
127
+
128
+ ## [10.0.0-beta.39](https://github.com/hatiolab/operato/compare/v10.0.0-beta.38...v10.0.0-beta.39) (2026-04-18)
129
+
130
+ **Note:** Version bump only for package @operato/board
131
+
132
+
133
+
134
+
135
+
136
+ ## [10.0.0-beta.38](https://github.com/hatiolab/operato/compare/v10.0.0-beta.37...v10.0.0-beta.38) (2026-04-17)
137
+
138
+ **Note:** Version bump only for package @operato/board
139
+
140
+
141
+
142
+
143
+
144
+ ## [10.0.0-beta.36](https://github.com/hatiolab/operato/compare/v10.0.0-beta.35...v10.0.0-beta.36) (2026-04-17)
145
+
146
+ **Note:** Version bump only for package @operato/board
147
+
148
+
149
+
150
+
151
+
152
+ ## [10.0.0-beta.35](https://github.com/hatiolab/operato/compare/v10.0.0-beta.34...v10.0.0-beta.35) (2026-04-16)
153
+
154
+
155
+ ### :bug: Bug Fix
156
+
157
+ * **board:** iOS에서 뷰어 FAB 버튼 표시 — fullscreen만 숨김 ([dfde2b7](https://github.com/hatiolab/operato/commit/dfde2b707f6d8992141dde6e6efbfcae92374a30))
158
+
159
+
160
+
161
+ ## [10.0.0-beta.34](https://github.com/hatiolab/operato/compare/v10.0.0-beta.33...v10.0.0-beta.34) (2026-04-16)
162
+
163
+ **Note:** Version bump only for package @operato/board
164
+
165
+
166
+
167
+
168
+
169
+ ## [10.0.0-beta.33](https://github.com/hatiolab/operato/compare/v10.0.0-beta.32...v10.0.0-beta.33) (2026-04-16)
170
+
171
+ **Note:** Version bump only for package @operato/board
172
+
173
+
174
+
175
+
176
+
177
+ ## [10.0.0-beta.32](https://github.com/hatiolab/operato/compare/v10.0.0-beta.31...v10.0.0-beta.32) (2026-04-15)
178
+
179
+ **Note:** Version bump only for package @operato/board
180
+
181
+
182
+
183
+
184
+
185
+ ## [10.0.0-beta.31](https://github.com/hatiolab/operato/compare/v10.0.0-beta.30...v10.0.0-beta.31) (2026-04-15)
186
+
187
+ **Note:** Version bump only for package @operato/board
188
+
189
+
190
+
191
+
192
+
193
+ ## [10.0.0-beta.30](https://github.com/hatiolab/operato/compare/v10.0.0-beta.29...v10.0.0-beta.30) (2026-04-14)
194
+
195
+ **Note:** Version bump only for package @operato/board
196
+
197
+
198
+
199
+
200
+
201
+ ## [10.0.0-beta.29](https://github.com/hatiolab/operato/compare/v10.0.0-beta.28...v10.0.0-beta.29) (2026-04-13)
202
+
203
+
204
+ ### :rocket: New Features
205
+
206
+ * **board:** 플레이백 YouTube 스트리밍 방식 — PlaybackBuffer + 청크 기반 Provider ([dda8b0b](https://github.com/hatiolab/operato/commit/dda8b0b675472c4e606730195e608667a4919010))
207
+
208
+
209
+ ### :mega: Other
210
+
211
+ * **board:** @types/jest 의존성 추가 — playback-buffer 테스트 빌드 오류 해결 ([c68cfb0](https://github.com/hatiolab/operato/commit/c68cfb0a75f2b7ab10e32c9d3f2446ae766a87e7))
212
+
213
+
214
+
215
+ ## [10.0.0-beta.28](https://github.com/hatiolab/operato/compare/v10.0.0-beta.27...v10.0.0-beta.28) (2026-04-11)
216
+
217
+
218
+ ### :house: Code Refactoring
219
+
220
+ * **board:** text/image 컴포넌트 템플릿 기본값 정리 — 불필요한 default 속성 제거 ([dadbb54](https://github.com/hatiolab/operato/commit/dadbb54c9fb347402e7fdd5a42a19934973d764a))
221
+ * **board:** 컴포넌트 템플릿 기본값 정리 — 불필요한 default 속성 제거 ([9716220](https://github.com/hatiolab/operato/commit/97162201f2330ada26bc35711da8f05d9222acc7))
222
+
223
+
224
+
225
+ ## [10.0.0-beta.27](https://github.com/hatiolab/operato/compare/v10.0.0-beta.26...v10.0.0-beta.27) (2026-04-09)
226
+
227
+
228
+ ### :rocket: New Features
229
+
230
+ * **board:** 보드 모델 JSON 편집기 — F10으로 토글, ox-input-code(CodeMirror) 사용 ([e1f9ad8](https://github.com/hatiolab/operato/commit/e1f9ad88ee064077ec85f5f8a9882383a3af8ec3))
231
+
232
+
233
+
234
+ ## [10.0.0-beta.26](https://github.com/hatiolab/operato/compare/v10.0.0-beta.25...v10.0.0-beta.26) (2026-04-09)
235
+
236
+ **Note:** Version bump only for package @operato/board
237
+
238
+
239
+
240
+
241
+
242
+ ## [10.0.0-beta.25](https://github.com/hatiolab/operato/compare/v10.0.0-beta.24...v10.0.0-beta.25) (2026-04-08)
243
+
244
+ **Note:** Version bump only for package @operato/board
245
+
246
+
247
+
248
+
249
+
250
+ ## [10.0.0-beta.24](https://github.com/hatiolab/operato/compare/v10.0.0-beta.23...v10.0.0-beta.24) (2026-04-06)
251
+
252
+ **Note:** Version bump only for package @operato/board
253
+
254
+
255
+
256
+
257
+
258
+ ## [10.0.0-beta.23](https://github.com/hatiolab/operato/compare/v10.0.0-beta.22...v10.0.0-beta.23) (2026-04-06)
259
+
260
+
261
+ ### :bug: Bug Fix
262
+
263
+ * **board:** _is3dMode to use rootModel.is3dMode instead of state.threed ([774e142](https://github.com/hatiolab/operato/commit/774e14274a11eee4288efadded053a942f84a7fc))
264
+ * **board:** 3D 토글에서 root.threed setter 사용 (모델 저장 방지) ([e2bc3d2](https://github.com/hatiolab/operato/commit/e2bc3d2cd08d3fde42cf48efb2e2cc17dbb5b3f5))
265
+
266
+
267
+
268
+ ## [10.0.0-beta.22](https://github.com/hatiolab/operato/compare/v10.0.0-beta.21...v10.0.0-beta.22) (2026-04-02)
269
+
270
+
271
+ ### :rocket: New Features
272
+
273
+ * **board:** 3D 그룹에 floor-plate, wall 컴포넌트 등록 ([da56cc8](https://github.com/hatiolab/operato/commit/da56cc86fefcba19cd80b0e8b40849b6b72c159a))
274
+
275
+
276
+
277
+ ## [10.0.0-beta.21](https://github.com/hatiolab/operato/compare/v10.0.0-beta.20...v10.0.0-beta.21) (2026-04-02)
278
+
279
+ **Note:** Version bump only for package @operato/board
280
+
281
+
282
+
283
+
284
+
285
+ ## [10.0.0-beta.20](https://github.com/hatiolab/operato/compare/v10.0.0-beta.19...v10.0.0-beta.20) (2026-03-29)
286
+
287
+
288
+ ### :house: Code Refactoring
289
+
290
+ * **board:** fab를 expand/collapse 패턴으로 통일 ([ef369ef](https://github.com/hatiolab/operato/commit/ef369ef959780f52499a3ce08fae3f10a7d2a910))
291
+
292
+
293
+
294
+ ## [10.0.0-beta.19](https://github.com/hatiolab/operato/compare/v10.0.0-beta.18...v10.0.0-beta.19) (2026-03-29)
295
+
296
+
297
+ ### :rocket: New Features
298
+
299
+ * **board:** viewer 3D 토글 fab 추가, 보드 선택 카드 강조 + 자동 스크롤 ([9c5c14c](https://github.com/hatiolab/operato/commit/9c5c14c9dfcb69d3830f8e50c1e5a6d82de5f419))
300
+
301
+
302
+
303
+ ## [10.0.0-beta.18](https://github.com/hatiolab/operato/compare/v10.0.0-beta.17...v10.0.0-beta.18) (2026-03-25)
304
+
305
+ **Note:** Version bump only for package @operato/board
306
+
307
+
308
+
309
+
310
+
311
+ ## [10.0.0-beta.17](https://github.com/hatiolab/operato/compare/v10.0.0-beta.16...v10.0.0-beta.17) (2026-03-23)
312
+
313
+
314
+ ### :rocket: New Features
315
+
316
+ * **board:** add board model cache (IndexedDB) ([122036d](https://github.com/hatiolab/operato/commit/122036d19063a4f9e47d5f4d325615f6e895a328))
317
+
318
+
319
+
320
+ ## [10.0.0-beta.16](https://github.com/hatiolab/operato/compare/v10.0.0-beta.15...v10.0.0-beta.16) (2026-03-23)
321
+
322
+
323
+ ### :rocket: New Features
324
+
325
+ * **board:** scene monitor 연동 — load tracker/overlay 통합 ([265a716](https://github.com/hatiolab/operato/commit/265a7167b21337b3842d2bae5ef95ba3d071053c))
326
+
327
+
328
+
329
+ ## [10.0.0-beta.15](https://github.com/hatiolab/operato/compare/v10.0.0-beta.14...v10.0.0-beta.15) (2026-03-22)
330
+
331
+
332
+ ### :rocket: New Features
333
+
334
+ * **board:** 데이터바인딩 팝업 에디터 + property 콤보박스 + D키 핫키 ([d467180](https://github.com/hatiolab/operato/commit/d467180e106b1d268099bf9895082e2c6cf8d07b))
335
+
336
+
337
+ ### :bug: Bug Fix
338
+
339
+ * **board:** 데이터바인딩 팝업 모델 반영 + GLTF animations 트리 + 사이드바 저장 조건 완화 ([46fe68e](https://github.com/hatiolab/operato/commit/46fe68ea8c3af43c5c4275a42cd7bb5e761ec118))
340
+
341
+
342
+
343
+ ## [10.0.0-beta.14](https://github.com/hatiolab/operato/compare/v10.0.0-beta.13...v10.0.0-beta.14) (2026-03-20)
344
+
345
+
346
+ ### :rocket: New Features
347
+
348
+ * **board:** 모델러에 snap-guide-layer 추가 ([85e091b](https://github.com/hatiolab/operato/commit/85e091b4f3486845ef9804610d9237f5d8902de3))
349
+
350
+
351
+ ### :house: Code Refactoring
352
+
353
+ * **board:** 모델러에서 guide-layer 제거 ([dbfd8fe](https://github.com/hatiolab/operato/commit/dbfd8fe19a0739671e6e27849dd6f3b1d3b53c97))
354
+
355
+
356
+
357
+ ## [10.0.0-beta.13](https://github.com/hatiolab/operato/compare/v10.0.0-beta.12...v10.0.0-beta.13) (2026-03-19)
358
+
359
+
360
+ ### :bug: Bug Fix
361
+
362
+ * **board:** 편집 툴바 조건부 버튼 이벤트 바인딩 + dimension 초기화 ([e642ffa](https://github.com/hatiolab/operato/commit/e642ffa8be05cf4305f857fd4bef633611401c42))
363
+
364
+
365
+
366
+ ## [10.0.0-beta.12](https://github.com/hatiolab/operato/compare/v10.0.0-beta.11...v10.0.0-beta.12) (2026-03-17)
367
+
368
+ **Note:** Version bump only for package @operato/board
369
+
370
+
371
+
372
+
373
+
374
+ ## [10.0.0-beta.11](https://github.com/hatiolab/operato/compare/v10.0.0-beta.10...v10.0.0-beta.11) (2026-03-15)
375
+
376
+
377
+ ### :bug: Bug Fix
378
+
379
+ * **board:** 프리뷰 팝업에 preventCloseOnBlur 옵션 추가 ([c73cd97](https://github.com/hatiolab/operato/commit/c73cd97210bb280b932b10fca125ef2022c6766e))
380
+
381
+
382
+
383
+ ## [10.0.0-beta.10](https://github.com/hatiolab/operato/compare/v10.0.0-beta.9...v10.0.0-beta.10) (2026-03-14)
384
+
385
+ **Note:** Version bump only for package @operato/board
386
+
387
+
388
+
389
+
390
+
391
+ ## [10.0.0-beta.9](https://github.com/hatiolab/operato/compare/v10.0.0-beta.8...v10.0.0-beta.9) (2026-03-13)
392
+
393
+
394
+ ### :rocket: New Features
395
+
396
+ * **board:** 2D/3D 모드별 edit-toolbar 분기 ([26ca616](https://github.com/hatiolab/operato/commit/26ca616b85294af77a8eed5f24c937c612db57f8))
397
+ * **board:** 3D 모드 기즈모 버튼, 툴바 UX 개선 ([45b46ff](https://github.com/hatiolab/operato/commit/45b46ff47ac2258bac66db51c0a6b46b16f26fbe))
398
+
399
+
400
+
401
+ ## [10.0.0-beta.8](https://github.com/hatiolab/operato/compare/v10.0.0-beta.7...v10.0.0-beta.8) (2026-03-13)
402
+
403
+
404
+ ### :rocket: New Features
405
+
406
+ * **board:** add playback feature for historical data replay ([e8a3a73](https://github.com/hatiolab/operato/commit/e8a3a730648c2b5ec17244b157e1ce59b728b524))
407
+
408
+
409
+
410
+ ## [10.0.0-beta.7](https://github.com/hatiolab/operato/compare/v10.0.0-beta.6...v10.0.0-beta.7) (2026-03-09)
411
+
412
+
413
+ ### :bug: Bug Fix
414
+
415
+ * **board:** correct invalid CSS overflow and remove debug console.log ([7292222](https://github.com/hatiolab/operato/commit/7292222646bde1140018465b4fe57f529103c48c))
416
+
417
+
418
+
419
+ ## [10.0.0-beta.6](https://github.com/hatiolab/operato/compare/v10.0.0-beta.5...v10.0.0-beta.6) (2026-03-09)
420
+
421
+
422
+ ### :bug: Bug Fix
423
+
424
+ * **board:** remove unnecessary reactive properties to prevent Lit update warnings ([2e6ad75](https://github.com/hatiolab/operato/commit/2e6ad75b853fc27a56410e4fff7de24325d24d24))
425
+
426
+
427
+
6
428
  ## [10.0.0-beta.5](https://github.com/hatiolab/operato/compare/v10.0.0-beta.4...v10.0.0-beta.5) (2026-03-08)
7
429
 
8
430
  **Note:** Version bump only for package @operato/board
@@ -34,9 +34,7 @@ export const container = {
34
34
  strokeStyle: '#999',
35
35
  alpha: 1,
36
36
  hidden: false,
37
- lineWidth: 1,
38
- lineDash: 'solid',
39
- lineCap: 'butt'
37
+ lineWidth: 1
40
38
  }
41
39
  },
42
40
  {
@@ -54,6 +52,23 @@ export const container = {
54
52
  strokeStyle: 'DarkGoldenRod',
55
53
  hidden: true
56
54
  }
55
+ },
56
+ {
57
+ type: 'popup-container',
58
+ description: 'popup template — modeled in board, fresh instance per popup show',
59
+ icon: popup,
60
+ group: 'container',
61
+ model: {
62
+ type: 'popup-container',
63
+ left: 100,
64
+ top: 100,
65
+ width: 320,
66
+ height: 200,
67
+ fillStyle: '#fff',
68
+ strokeStyle: '#999',
69
+ lineWidth: 1,
70
+ position: 'popup'
71
+ }
57
72
  }
58
73
  ]
59
74
  };
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/component/container.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,yCAAyC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAC9F,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,qCAAqC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAElF,MAAM,IAAI,GAAG;;;;;;;;;;;;;CAaZ,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAmB;IACvC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,+BAA+B;IAC5C,IAAI;IACJ,SAAS,EAAE;QACT;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,mBAAmB;YAChC,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE,WAAW;gBACjB,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,OAAO;YACb,WAAW,EAAE,cAAc;YAC3B,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,GAAG;gBACT,GAAG,EAAE,GAAG;gBACR,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,eAAe;gBAC5B,MAAM,EAAE,IAAI;aACb;SACF;KACF;CACF,CAAA","sourcesContent":["import { ComponentGroup } from '../types.js'\n\nconst iconContainer = new URL('../../../icons/components/container.png', import.meta.url).href\nconst popup = new URL('../../../icons/components/popup.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 .st3{fill:none;stroke:{{strokeColor}};stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}\n .st9{fill:none;stroke:{{strokeColor}};stroke-miterlimit:10;}\n </style>\n <g>\n <rect x=\"2.8\" y=\"10.3\" class=\"st9\" width=\"24.4\" height=\"13.8\"/>\n <polygon class=\"st0\" points=\"27.7,9.8 2.3,9.8 7.8,5.9 22.2,5.9\"/>\n <line class=\"st3\" x1=\"10.9\" y1=\"15.5\" x2=\"19.1\" y2=\"15.5\"/>\n </g>\n</svg>\n`\n\nexport const container: ComponentGroup = {\n name: 'container',\n description: 'a group of various containers',\n icon,\n templates: [\n {\n type: 'container',\n description: 'general container',\n icon: iconContainer,\n group: 'container',\n model: {\n type: 'container',\n left: 100,\n top: 100,\n width: 100,\n height: 100,\n fillStyle: '#fff',\n strokeStyle: '#999',\n alpha: 1,\n hidden: false,\n lineWidth: 1,\n lineDash: 'solid',\n lineCap: 'butt'\n }\n },\n {\n type: 'popup',\n description: 'popup window',\n icon: popup,\n group: 'container',\n model: {\n type: 'popup',\n left: 100,\n top: 100,\n width: 100,\n height: 100,\n fillStyle: '#fff',\n strokeStyle: 'DarkGoldenRod',\n hidden: true\n }\n }\n ]\n}\n"]}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/component/container.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,yCAAyC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAC9F,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,qCAAqC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAElF,MAAM,IAAI,GAAG;;;;;;;;;;;;;CAaZ,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAmB;IACvC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,+BAA+B;IAC5C,IAAI;IACJ,SAAS,EAAE;QACT;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,mBAAmB;YAChC,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE,WAAW;gBACjB,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;aACb;SACF;QACD;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,cAAc;YAC3B,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,GAAG;gBACT,GAAG,EAAE,GAAG;gBACR,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,eAAe;gBAC5B,MAAM,EAAE,IAAI;aACb;SACF;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,kEAAkE;YAC/E,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,GAAG;gBACT,GAAG,EAAE,GAAG;gBACR,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,MAAM;gBACnB,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,OAAO;aAClB;SACF;KACF;CACF,CAAA","sourcesContent":["import { ComponentGroup } from '../types.js'\n\nconst iconContainer = new URL('../../../icons/components/container.png', import.meta.url).href\nconst popup = new URL('../../../icons/components/popup.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 .st3{fill:none;stroke:{{strokeColor}};stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}\n .st9{fill:none;stroke:{{strokeColor}};stroke-miterlimit:10;}\n </style>\n <g>\n <rect x=\"2.8\" y=\"10.3\" class=\"st9\" width=\"24.4\" height=\"13.8\"/>\n <polygon class=\"st0\" points=\"27.7,9.8 2.3,9.8 7.8,5.9 22.2,5.9\"/>\n <line class=\"st3\" x1=\"10.9\" y1=\"15.5\" x2=\"19.1\" y2=\"15.5\"/>\n </g>\n</svg>\n`\n\nexport const container: ComponentGroup = {\n name: 'container',\n description: 'a group of various containers',\n icon,\n templates: [\n {\n type: 'container',\n description: 'general container',\n icon: iconContainer,\n group: 'container',\n model: {\n type: 'container',\n left: 100,\n top: 100,\n width: 100,\n height: 100,\n fillStyle: '#fff',\n strokeStyle: '#999',\n alpha: 1,\n hidden: false,\n lineWidth: 1\n }\n },\n {\n type: 'popup',\n description: 'popup window',\n icon: popup,\n group: 'container',\n model: {\n type: 'popup',\n left: 100,\n top: 100,\n width: 100,\n height: 100,\n fillStyle: '#fff',\n strokeStyle: 'DarkGoldenRod',\n hidden: true\n }\n },\n {\n type: 'popup-container',\n description: 'popup template — modeled in board, fresh instance per popup show',\n icon: popup,\n group: 'container',\n model: {\n type: 'popup-container',\n left: 100,\n top: 100,\n width: 320,\n height: 200,\n fillStyle: '#fff',\n strokeStyle: '#999',\n lineWidth: 1,\n position: 'popup'\n }\n }\n ]\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import { ComponentGroup } from '../types.js';
2
+ export declare const conveyance: ComponentGroup;
@@ -0,0 +1,38 @@
1
+ // Conveyance group icon — belt section with end drums, a parcel riding
2
+ // on top, and a flow arrow above. Same stroke-weight family as the other
3
+ // logistics group icons (heavy 2.5 for the dominant feature, light 1.0
4
+ // for outline detail, fill for emphasized solids).
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
+ .st14{fill:none;stroke:{{strokeColor}};stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
10
+ .st15{fill:none;stroke:{{strokeColor}};stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
11
+ </style>
12
+ <g>
13
+ <!-- flow arrow (direction of travel) -->
14
+ <line class="st15" x1="9" y1="5.5" x2="20.5" y2="5.5"/>
15
+ <polyline class="st15" points="18,3 21,5.5 18,8"/>
16
+ <!-- parcel sitting on the belt (fill-detail, the visual focal point) -->
17
+ <rect class="st0" x="11.5" y="11" width="7" height="5"/>
18
+ <!-- belt top surface (heavy stroke, anchors the silhouette) -->
19
+ <line class="st14" x1="6" y1="17" x2="24" y2="17"/>
20
+ <!-- end drums -->
21
+ <circle class="st15" cx="6" cy="20" r="3.2"/>
22
+ <circle class="st15" cx="24" cy="20" r="3.2"/>
23
+ <circle class="st0" cx="6" cy="20" r="0.9"/>
24
+ <circle class="st0" cx="24" cy="20" r="0.9"/>
25
+ <!-- frame legs / ground -->
26
+ <line class="st15" x1="6" y1="23.4" x2="6" y2="26.5"/>
27
+ <line class="st15" x1="24" y1="23.4" x2="24" y2="26.5"/>
28
+ <line class="st15" x1="2.5" y1="26.5" x2="27.5" y2="26.5"/>
29
+ </g>
30
+ </svg>
31
+ `;
32
+ export const conveyance = {
33
+ name: 'conveyance',
34
+ description: 'conveyors, sorters, chutes, and induct stations — components that move parcels along a path',
35
+ icon,
36
+ templates: []
37
+ };
38
+ //# sourceMappingURL=conveyance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conveyance.js","sourceRoot":"","sources":["../../../src/component/conveyance.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,yEAAyE;AACzE,uEAAuE;AACvE,mDAAmD;AACnD,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BZ,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,6FAA6F;IAC1G,IAAI;IACJ,SAAS,EAAE,EAAE;CACd,CAAA","sourcesContent":["import { ComponentGroup } from '../types.js'\n\n// Conveyance group icon — belt section with end drums, a parcel riding\n// on top, and a flow arrow above. Same stroke-weight family as the other\n// logistics group icons (heavy 2.5 for the dominant feature, light 1.0\n// for outline detail, fill for emphasized solids).\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 .st14{fill:none;stroke:{{strokeColor}};stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}\n .st15{fill:none;stroke:{{strokeColor}};stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}\n </style>\n <g>\n <!-- flow arrow (direction of travel) -->\n <line class=\"st15\" x1=\"9\" y1=\"5.5\" x2=\"20.5\" y2=\"5.5\"/>\n <polyline class=\"st15\" points=\"18,3 21,5.5 18,8\"/>\n <!-- parcel sitting on the belt (fill-detail, the visual focal point) -->\n <rect class=\"st0\" x=\"11.5\" y=\"11\" width=\"7\" height=\"5\"/>\n <!-- belt top surface (heavy stroke, anchors the silhouette) -->\n <line class=\"st14\" x1=\"6\" y1=\"17\" x2=\"24\" y2=\"17\"/>\n <!-- end drums -->\n <circle class=\"st15\" cx=\"6\" cy=\"20\" r=\"3.2\"/>\n <circle class=\"st15\" cx=\"24\" cy=\"20\" r=\"3.2\"/>\n <circle class=\"st0\" cx=\"6\" cy=\"20\" r=\"0.9\"/>\n <circle class=\"st0\" cx=\"24\" cy=\"20\" r=\"0.9\"/>\n <!-- frame legs / ground -->\n <line class=\"st15\" x1=\"6\" y1=\"23.4\" x2=\"6\" y2=\"26.5\"/>\n <line class=\"st15\" x1=\"24\" y1=\"23.4\" x2=\"24\" y2=\"26.5\"/>\n <line class=\"st15\" x1=\"2.5\" y1=\"26.5\" x2=\"27.5\" y2=\"26.5\"/>\n </g>\n</svg>\n`\n\nexport const conveyance: ComponentGroup = {\n name: 'conveyance',\n description: 'conveyors, sorters, chutes, and induct stations — components that move parcels along a path',\n icon,\n templates: []\n}\n"]}
@@ -50,11 +50,7 @@ export const etc = {
50
50
  height: 100,
51
51
  fillStyle: '#fff',
52
52
  strokeStyle: '#000',
53
- alpha: 1,
54
- hidden: false,
55
- lineWidth: 1,
56
- lineDash: 'solid',
57
- lineCap: 'butt'
53
+ lineWidth: 1
58
54
  }
59
55
  },
60
56
  {
@@ -70,11 +66,7 @@ export const etc = {
70
66
  height: 100,
71
67
  fillStyle: '#fff',
72
68
  strokeStyle: '#000',
73
- alpha: 1,
74
- hidden: false,
75
- lineWidth: 1,
76
- lineDash: 'solid',
77
- lineCap: 'butt'
69
+ lineWidth: 1
78
70
  }
79
71
  }
80
72
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"etc.js","sourceRoot":"","sources":["../../../src/component/etc.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,gDAAgD,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AACvG,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,2CAA2C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAC7F,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,+CAA+C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAErG,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,aAAa;YACnB,WAAW,EAAE,oBAAoB;YACjC,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE;gBACL,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,EAAE;gBACR,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,eAAe;gBAC5B,MAAM,EAAE,IAAI;gBACZ,iBAAiB,EACf,gJAAgJ;gBAClJ,gBAAgB,EACd,gJAAgJ;gBAClJ,KAAK,EACH,gHAAgH;aACnH;SACF;QACD;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,iBAAiB;YAC9B,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE;gBACL,IAAI,EAAE,WAAW;gBACjB,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,YAAY;YAClB,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE;gBACL,IAAI,EAAE,YAAY;gBAClB,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;KACF;CACF,CAAA","sourcesContent":["import { ComponentGroup } from '../types.js'\n\nconst globalReference = new URL('../../../icons/components/global-reference.png', import.meta.url).href\nconst infoWindow = new URL('../../../icons/components/info-window.png', import.meta.url).href\nconst localReference = new URL('../../../icons/components/local-reference.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: 'info-window',\n description: 'information window',\n icon: infoWindow,\n group: 'etc',\n model: {\n type: 'info-window',\n left: 10,\n top: 10,\n width: 50,\n height: 50,\n fillStyle: '#fff',\n strokeStyle: 'DarkGoldenRod',\n hidden: true,\n frontSideTemplate:\n \"<h2 id='xxx'>\\n\\t<%= text %>\\n</h2>\\n<img src='https://www.tutorialspoint.com/images/html.gif' alt='HTML Tutorial' height='150' width='140' />\",\n backSideTemplate:\n \"<h2 id='yyy'>\\n\\t<%= text %>\\n</h2>\\n<img src='https://www.tutorialspoint.com/images/html.gif' alt='HTML Tutorial' height='150' width='140' />\",\n style:\n '#yyy {\\n\\tbackground-color:navy;\\n\\tcolor:white\\n}\\n#xxx, #yyy {\\n\\twhite-space:nowrap;\\n\\tmin-width:200px;\\n}'\n }\n },\n {\n type: 'local-ref',\n description: 'local reference',\n icon: localReference,\n group: 'etc',\n model: {\n type: 'local-ref',\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: 'global-ref',\n description: 'global reference',\n icon: globalReference,\n group: 'etc',\n model: {\n type: 'global-ref',\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}\n"]}
1
+ {"version":3,"file":"etc.js","sourceRoot":"","sources":["../../../src/component/etc.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,gDAAgD,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AACvG,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,2CAA2C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAC7F,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,+CAA+C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAErG,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,aAAa;YACnB,WAAW,EAAE,oBAAoB;YACjC,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE;gBACL,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,EAAE;gBACR,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,eAAe;gBAC5B,MAAM,EAAE,IAAI;gBACZ,iBAAiB,EACf,gJAAgJ;gBAClJ,gBAAgB,EACd,gJAAgJ;gBAClJ,KAAK,EACH,gHAAgH;aACnH;SACF;QACD;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,iBAAiB;YAC9B,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE;gBACL,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,GAAG;gBACT,GAAG,EAAE,GAAG;gBACR,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,MAAM;gBACnB,SAAS,EAAE,CAAC;aACb;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE;gBACL,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,GAAG;gBACT,GAAG,EAAE,GAAG;gBACR,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,MAAM;gBACnB,SAAS,EAAE,CAAC;aACb;SACF;KACF;CACF,CAAA","sourcesContent":["import { ComponentGroup } from '../types.js'\n\nconst globalReference = new URL('../../../icons/components/global-reference.png', import.meta.url).href\nconst infoWindow = new URL('../../../icons/components/info-window.png', import.meta.url).href\nconst localReference = new URL('../../../icons/components/local-reference.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: 'info-window',\n description: 'information window',\n icon: infoWindow,\n group: 'etc',\n model: {\n type: 'info-window',\n left: 10,\n top: 10,\n width: 50,\n height: 50,\n fillStyle: '#fff',\n strokeStyle: 'DarkGoldenRod',\n hidden: true,\n frontSideTemplate:\n \"<h2 id='xxx'>\\n\\t<%= text %>\\n</h2>\\n<img src='https://www.tutorialspoint.com/images/html.gif' alt='HTML Tutorial' height='150' width='140' />\",\n backSideTemplate:\n \"<h2 id='yyy'>\\n\\t<%= text %>\\n</h2>\\n<img src='https://www.tutorialspoint.com/images/html.gif' alt='HTML Tutorial' height='150' width='140' />\",\n style:\n '#yyy {\\n\\tbackground-color:navy;\\n\\tcolor:white\\n}\\n#xxx, #yyy {\\n\\twhite-space:nowrap;\\n\\tmin-width:200px;\\n}'\n }\n },\n {\n type: 'local-ref',\n description: 'local reference',\n icon: localReference,\n group: 'etc',\n model: {\n type: 'local-ref',\n left: 100,\n top: 100,\n width: 100,\n height: 100,\n fillStyle: '#fff',\n strokeStyle: '#000',\n lineWidth: 1\n }\n },\n {\n type: 'global-ref',\n description: 'global reference',\n icon: globalReference,\n group: 'etc',\n model: {\n type: 'global-ref',\n left: 100,\n top: 100,\n width: 100,\n height: 100,\n fillStyle: '#fff',\n strokeStyle: '#000',\n lineWidth: 1\n }\n }\n ]\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import { ComponentGroup } from '../types.js';
2
+ export declare const facility: ComponentGroup;
@@ -0,0 +1,35 @@
1
+ // Facility group icon — sawtooth-roof factory with a chimney.
2
+ // Stroke weights mirror the legacy `warehouse` icon (heavy 2.5 for the
3
+ // roofline, light 1.0 for everything else, filled rectangles for door/
4
+ // windows) so the new logistics groups read as a coherent visual family.
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
+ .st14{fill:none;stroke:{{strokeColor}};stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
10
+ .st15{fill:none;stroke:{{strokeColor}};stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
11
+ </style>
12
+ <g>
13
+ <!-- chimney -->
14
+ <rect class="st0" x="22.2" y="2.5" width="2.6" height="9.5"/>
15
+ <!-- sawtooth roofline (heavy stroke, anchors the silhouette) -->
16
+ <polyline class="st14" points="2.5,12 7,7 7,12 12,7 12,12 17,7 17,12 22,7 22,12"/>
17
+ <!-- factory walls -->
18
+ <polyline class="st15" points="3.2,12 3.2,24.8 26.8,24.8 26.8,12"/>
19
+ <!-- ground line -->
20
+ <line class="st15" x1="1.7" y1="25.8" x2="28.3" y2="25.8"/>
21
+ <!-- entrance door (centered, fill-detail) -->
22
+ <rect class="st0" x="13" y="18" width="4" height="6.8"/>
23
+ <!-- two symmetric windows (outline-detail) -->
24
+ <rect class="st15" x="6" y="15.5" width="3.2" height="3.2"/>
25
+ <rect class="st15" x="20.8" y="15.5" width="3.2" height="3.2"/>
26
+ </g>
27
+ </svg>
28
+ `;
29
+ export const facility = {
30
+ name: 'facility',
31
+ description: 'floors, walls, mezzanines, and atmospheric backdrops — the built environment that holds everything else',
32
+ icon,
33
+ templates: []
34
+ };
35
+ //# sourceMappingURL=facility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facility.js","sourceRoot":"","sources":["../../../src/component/facility.ts"],"names":[],"mappings":"AAEA,8DAA8D;AAC9D,uEAAuE;AACvE,uEAAuE;AACvE,yEAAyE;AACzE,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBZ,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,yGAAyG;IACtH,IAAI;IACJ,SAAS,EAAE,EAAE;CACd,CAAA","sourcesContent":["import { ComponentGroup } from '../types.js'\n\n// Facility group icon — sawtooth-roof factory with a chimney.\n// Stroke weights mirror the legacy `warehouse` icon (heavy 2.5 for the\n// roofline, light 1.0 for everything else, filled rectangles for door/\n// windows) so the new logistics groups read as a coherent visual family.\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 .st14{fill:none;stroke:{{strokeColor}};stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}\n .st15{fill:none;stroke:{{strokeColor}};stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}\n </style>\n <g>\n <!-- chimney -->\n <rect class=\"st0\" x=\"22.2\" y=\"2.5\" width=\"2.6\" height=\"9.5\"/>\n <!-- sawtooth roofline (heavy stroke, anchors the silhouette) -->\n <polyline class=\"st14\" points=\"2.5,12 7,7 7,12 12,7 12,12 17,7 17,12 22,7 22,12\"/>\n <!-- factory walls -->\n <polyline class=\"st15\" points=\"3.2,12 3.2,24.8 26.8,24.8 26.8,12\"/>\n <!-- ground line -->\n <line class=\"st15\" x1=\"1.7\" y1=\"25.8\" x2=\"28.3\" y2=\"25.8\"/>\n <!-- entrance door (centered, fill-detail) -->\n <rect class=\"st0\" x=\"13\" y=\"18\" width=\"4\" height=\"6.8\"/>\n <!-- two symmetric windows (outline-detail) -->\n <rect class=\"st15\" x=\"6\" y=\"15.5\" width=\"3.2\" height=\"3.2\"/>\n <rect class=\"st15\" x=\"20.8\" y=\"15.5\" width=\"3.2\" height=\"3.2\"/>\n </g>\n</svg>\n`\n\nexport const facility: ComponentGroup = {\n name: 'facility',\n description: 'floors, walls, mezzanines, and atmospheric backdrops — the built environment that holds everything else',\n icon,\n templates: []\n}\n"]}
@@ -8,6 +8,11 @@ export * from './3d.js';
8
8
  export * from './iot.js';
9
9
  export * from './form.js';
10
10
  export * from './warehouse.js';
11
+ export * from './facility.js';
12
+ export * from './conveyance.js';
13
+ export * from './storage.js';
14
+ export * from './transport.js';
15
+ export * from './manufacturing.js';
11
16
  export * from './container.js';
12
17
  export * from './material-design.js';
13
18
  export * from './etc.js';
@@ -8,6 +8,11 @@ export * from './3d.js';
8
8
  export * from './iot.js';
9
9
  export * from './form.js';
10
10
  export * from './warehouse.js';
11
+ export * from './facility.js';
12
+ export * from './conveyance.js';
13
+ export * from './storage.js';
14
+ export * from './transport.js';
15
+ export * from './manufacturing.js';
11
16
  export * from './container.js';
12
17
  export * from './material-design.js';
13
18
  export * from './etc.js';