@operato/property-panel 10.0.0-beta.6 → 10.0.0-beta.60

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 (67) hide show
  1. package/CHANGELOG.md +395 -0
  2. package/dist/src/index.d.ts +4 -0
  3. package/dist/src/index.js +6 -0
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/ox-property-panel.d.ts +7 -0
  6. package/dist/src/ox-property-panel.js +62 -34
  7. package/dist/src/ox-property-panel.js.map +1 -1
  8. package/dist/src/property-panel/abstract-property.js +11 -2
  9. package/dist/src/property-panel/abstract-property.js.map +1 -1
  10. package/dist/src/property-panel/data-binding/data-binding-mapper.js +11 -3
  11. package/dist/src/property-panel/data-binding/data-binding-mapper.js.map +1 -1
  12. package/dist/src/property-panel/data-binding/data-binding-popup.d.ts +63 -0
  13. package/dist/src/property-panel/data-binding/data-binding-popup.js +1414 -0
  14. package/dist/src/property-panel/data-binding/data-binding-popup.js.map +1 -0
  15. package/dist/src/property-panel/data-binding/data-binding.d.ts +1 -0
  16. package/dist/src/property-panel/data-binding/data-binding.js +37 -5
  17. package/dist/src/property-panel/data-binding/data-binding.js.map +1 -1
  18. package/dist/src/property-panel/effects/effects.js +1 -1
  19. package/dist/src/property-panel/effects/effects.js.map +1 -1
  20. package/dist/src/property-panel/effects/property-event-hover.d.ts +1 -1
  21. package/dist/src/property-panel/effects/property-event-tap.js +21 -1
  22. package/dist/src/property-panel/effects/property-event-tap.js.map +1 -1
  23. package/dist/src/property-panel/effects/property-event.d.ts +15 -7
  24. package/dist/src/property-panel/effects/property-event.js +17 -38
  25. package/dist/src/property-panel/effects/property-event.js.map +1 -1
  26. package/dist/src/property-panel/effects/property-shadow.js +14 -5
  27. package/dist/src/property-panel/effects/property-shadow.js.map +1 -1
  28. package/dist/src/property-panel/event-handlers/event-handlers-help.d.ts +23 -0
  29. package/dist/src/property-panel/event-handlers/event-handlers-help.js +356 -0
  30. package/dist/src/property-panel/event-handlers/event-handlers-help.js.map +1 -0
  31. package/dist/src/property-panel/event-handlers/event-handlers-mapper.d.ts +31 -0
  32. package/dist/src/property-panel/event-handlers/event-handlers-mapper.js +238 -0
  33. package/dist/src/property-panel/event-handlers/event-handlers-mapper.js.map +1 -0
  34. package/dist/src/property-panel/event-handlers/event-handlers-popup.d.ts +42 -0
  35. package/dist/src/property-panel/event-handlers/event-handlers-popup.js +375 -0
  36. package/dist/src/property-panel/event-handlers/event-handlers-popup.js.map +1 -0
  37. package/dist/src/property-panel/event-handlers/event-handlers.d.ts +54 -0
  38. package/dist/src/property-panel/event-handlers/event-handlers.js +410 -0
  39. package/dist/src/property-panel/event-handlers/event-handlers.js.map +1 -0
  40. package/dist/src/property-panel/shapes/ox-placeholder-convert-editor.d.ts +20 -0
  41. package/dist/src/property-panel/shapes/ox-placeholder-convert-editor.js +125 -0
  42. package/dist/src/property-panel/shapes/ox-placeholder-convert-editor.js.map +1 -0
  43. package/dist/src/property-panel/shapes/placeholder-convert.d.ts +34 -0
  44. package/dist/src/property-panel/shapes/placeholder-convert.js +117 -0
  45. package/dist/src/property-panel/shapes/placeholder-convert.js.map +1 -0
  46. package/dist/src/property-panel/shapes/shapes.js +28 -10
  47. package/dist/src/property-panel/shapes/shapes.js.map +1 -1
  48. package/dist/src/property-panel/specifics/specifics.d.ts +1 -0
  49. package/dist/src/property-panel/specifics/specifics.js +2 -1
  50. package/dist/src/property-panel/specifics/specifics.js.map +1 -1
  51. package/dist/src/property-panel/styles/styles.js +2 -0
  52. package/dist/src/property-panel/styles/styles.js.map +1 -1
  53. package/dist/src/property-panel/threed/property-material3d.js +8 -1
  54. package/dist/src/property-panel/threed/property-material3d.js.map +1 -1
  55. package/dist/src/property-panel/threed/property-scene3d.d.ts +34 -6
  56. package/dist/src/property-panel/threed/property-scene3d.js +332 -201
  57. package/dist/src/property-panel/threed/property-scene3d.js.map +1 -1
  58. package/dist/src/property-panel/threed/threed.js +8 -0
  59. package/dist/src/property-panel/threed/threed.js.map +1 -1
  60. package/dist/tsconfig.tsbuildinfo +1 -1
  61. package/package.json +8 -7
  62. package/themes/grist-theme.css +1 -1
  63. package/translations/en.json +34 -1
  64. package/translations/ja.json +34 -1
  65. package/translations/ko.json +34 -1
  66. package/translations/ms.json +34 -1
  67. package/translations/zh.json +34 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,401 @@
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.60](https://github.com/hatiolab/operato/compare/v10.0.0-beta.59...v10.0.0-beta.60) (2026-06-08)
7
+
8
+ **Note:** Version bump only for package @operato/property-panel
9
+
10
+
11
+
12
+
13
+
14
+ ## [10.0.0-beta.59](https://github.com/hatiolab/operato/compare/v10.0.0-beta.58...v10.0.0-beta.59) (2026-06-03)
15
+
16
+
17
+ ### :bug: Bug Fix
18
+
19
+ * **property-panel/event-handlers:** popup 폭 / 높이 레이아웃 회귀 정리 ([799a2f2](https://github.com/hatiolab/operato/commit/799a2f2b5713fc6d56748f5ef8887e55c0eab8ab))
20
+
21
+
22
+ ### :rocket: New Features
23
+
24
+ * **property-panel/event-handlers:** help pane + UX 개선 + (none) 핸들러 제외 ([8c23f62](https://github.com/hatiolab/operato/commit/8c23f62008aea1dcbf4b305cce432eeda7807dd5))
25
+
26
+
27
+ ### :sparkles: Styling
28
+
29
+ * **property-panel/event-handlers:** popup + help pane 에 표준 ScrollbarStyles 적용 ([e11f4a6](https://github.com/hatiolab/operato/commit/e11f4a64a1a223498f02b9f02cdfedd441cef869))
30
+ * **property-panel/event-handlers:** popup 안 mapper 의 상단 모서리도 둥글림 ([717422c](https://github.com/hatiolab/operato/commit/717422cb96b698ae151293dcdf106c1b52a3f9e1))
31
+
32
+
33
+
34
+ ## [10.0.0-beta.58](https://github.com/hatiolab/operato/compare/v10.0.0-beta.57...v10.0.0-beta.58) (2026-05-28)
35
+
36
+
37
+ ### :rocket: New Features
38
+
39
+ * **property-panel:** event handlers panel — eventHandlers[] 편집기 + popup ([268ed3d](https://github.com/hatiolab/operato/commit/268ed3d2558e9b9eab1ad24810d20dda8cd17b04))
40
+
41
+
42
+
43
+ ## [10.0.0-beta.57](https://github.com/hatiolab/operato/compare/v10.0.0-beta.56...v10.0.0-beta.57) (2026-05-27)
44
+
45
+ **Note:** Version bump only for package @operato/property-panel
46
+
47
+
48
+
49
+
50
+
51
+ ## [10.0.0-beta.56](https://github.com/hatiolab/operato/compare/v10.0.0-beta.55...v10.0.0-beta.56) (2026-05-27)
52
+
53
+ **Note:** Version bump only for package @operato/property-panel
54
+
55
+
56
+
57
+
58
+
59
+ ## [10.0.0-beta.55](https://github.com/hatiolab/operato/compare/v10.0.0-beta.54...v10.0.0-beta.55) (2026-05-27)
60
+
61
+ **Note:** Version bump only for package @operato/property-panel
62
+
63
+
64
+
65
+
66
+
67
+ ## [10.0.0-beta.54](https://github.com/hatiolab/operato/compare/v10.0.0-beta.53...v10.0.0-beta.54) (2026-05-27)
68
+
69
+ **Note:** Version bump only for package @operato/property-panel
70
+
71
+
72
+
73
+
74
+
75
+ ## [10.0.0-beta.53](https://github.com/hatiolab/operato/compare/v10.0.0-beta.52...v10.0.0-beta.53) (2026-05-24)
76
+
77
+ **Note:** Version bump only for package @operato/property-panel
78
+
79
+
80
+
81
+
82
+
83
+ ## [10.0.0-beta.52](https://github.com/hatiolab/operato/compare/v10.0.0-beta.51...v10.0.0-beta.52) (2026-05-22)
84
+
85
+
86
+ ### :sparkles: Styling
87
+
88
+ * **data-grist:** record-card 시각 정돈 + danger hover 가독성 ([60cf583](https://github.com/hatiolab/operato/commit/60cf583d3096286f074d1b412e3737bc9b283258))
89
+
90
+
91
+
92
+ ## [10.0.0-beta.50](https://github.com/hatiolab/operato/compare/v10.0.0-beta.49...v10.0.0-beta.50) (2026-05-12)
93
+
94
+
95
+ ### :bug: Bug Fix
96
+
97
+ * **property-panel:** shapes 가드 보강 — selected[0] non-Component 방어 ([77f54e4](https://github.com/hatiolab/operato/commit/77f54e4aaf4a45cf1c44ae39db30dc29f499c07a))
98
+
99
+
100
+ ### :mega: Other
101
+
102
+ * **property-panel:** label.see-through 5 언어 다국어 추가 ([1c0106e](https://github.com/hatiolab/operato/commit/1c0106e451e3d4469e5a3705a4b07b382b8175c4))
103
+
104
+
105
+
106
+ ## [10.0.0-beta.49](https://github.com/hatiolab/operato/compare/v10.0.0-beta.48...v10.0.0-beta.49) (2026-05-07)
107
+
108
+ **Note:** Version bump only for package @operato/property-panel
109
+
110
+
111
+
112
+
113
+
114
+ ## [10.0.0-beta.48](https://github.com/hatiolab/operato/compare/v10.0.0-beta.47...v10.0.0-beta.48) (2026-05-05)
115
+
116
+
117
+ ### :rocket: New Features
118
+
119
+ * **property-panel:** generic-object 타입 변환 UI를 specifics 탭 전용 에디터로 이동 ([4b90f57](https://github.com/hatiolab/operato/commit/4b90f574c29f1677eb0dacc73b05e9fd10c9d2b2))
120
+
121
+
122
+ ### :house: Code Refactoring
123
+
124
+ * **property-panel:** placeholder-convert 아키텍처 정리 ([ec7c805](https://github.com/hatiolab/operato/commit/ec7c80550148fe2a13704999aafb940b26558729))
125
+
126
+
127
+
128
+ ## [10.0.0-beta.47](https://github.com/hatiolab/operato/compare/v10.0.0-beta.46...v10.0.0-beta.47) (2026-05-03)
129
+
130
+
131
+ ### :rocket: New Features
132
+
133
+ * **i18n:** popup-container + tooltip-3d component names + new property labels ([2e15e2b](https://github.com/hatiolab/operato/commit/2e15e2baad9d8f09a651f6f253015f8d7a8e5e32))
134
+ * **modeller:** popup-container palette + inline-popup tap actions ([737b081](https://github.com/hatiolab/operato/commit/737b0819c287d7703f404db266e79b12281070d3))
135
+ * **property-panel:** popup position option + inline-popup target list ([19778c5](https://github.com/hatiolab/operato/commit/19778c515ca38678bfd88b895639f1aa95032682))
136
+
137
+
138
+
139
+ ## [10.0.0-beta.46](https://github.com/hatiolab/operato/compare/v10.0.0-beta.45...v10.0.0-beta.46) (2026-05-01)
140
+
141
+ **Note:** Version bump only for package @operato/property-panel
142
+
143
+
144
+
145
+
146
+
147
+ ## [10.0.0-beta.45](https://github.com/hatiolab/operato/compare/v10.0.0-beta.44...v10.0.0-beta.45) (2026-04-30)
148
+
149
+
150
+ ### :rocket: New Features
151
+
152
+ * **board,property-panel:** logistics group split + NaN-safe number inputs ([aa3aa37](https://github.com/hatiolab/operato/commit/aa3aa376802d2296ee9a8315b4490b8a2a34b223))
153
+ * **board,property-panel:** manufacturing group + dynamic nature refresh ([a82cab7](https://github.com/hatiolab/operato/commit/a82cab79dded6b5996c554dfbcaf6f578f303861))
154
+
155
+
156
+
157
+ ## [10.0.0-beta.44](https://github.com/hatiolab/operato/compare/v10.0.0-beta.43...v10.0.0-beta.44) (2026-04-28)
158
+
159
+
160
+ ### :house: Code Refactoring
161
+
162
+ * **shadow:** property panel 에디터를 신규 키 (offsetX/offsetY/blur) 로 현행화 ([aee4dbe](https://github.com/hatiolab/operato/commit/aee4dbef842606bc31b6ad3f2161ffa22c2d3221))
163
+
164
+
165
+
166
+ ## [10.0.0-beta.43](https://github.com/hatiolab/operato/compare/v10.0.0-beta.42...v10.0.0-beta.43) (2026-04-24)
167
+
168
+ **Note:** Version bump only for package @operato/property-panel
169
+
170
+
171
+
172
+
173
+
174
+ ## [10.0.0-beta.42](https://github.com/hatiolab/operato/compare/v10.0.0-beta.41...v10.0.0-beta.42) (2026-04-18)
175
+
176
+ **Note:** Version bump only for package @operato/property-panel
177
+
178
+
179
+
180
+
181
+
182
+ ## [10.0.0-beta.41](https://github.com/hatiolab/operato/compare/v10.0.0-beta.40...v10.0.0-beta.41) (2026-04-18)
183
+
184
+
185
+ ### :rocket: New Features
186
+
187
+ * **property-panel:** environment + light mood 2-tier 프리셋 구조로 재설계 ([226bbab](https://github.com/hatiolab/operato/commit/226bbabbe8f198936d88e7d7c01b6365f910a71d))
188
+
189
+
190
+
191
+ ## [10.0.0-beta.40](https://github.com/hatiolab/operato/compare/v10.0.0-beta.39...v10.0.0-beta.40) (2026-04-18)
192
+
193
+
194
+ ### :rocket: New Features
195
+
196
+ * **property-panel:** scene 3d에 camera 섹션 + renderer exposure 슬라이더 추가 ([cc3ff97](https://github.com/hatiolab/operato/commit/cc3ff9738ff0dfc22a6bd563ec29c24e302873df))
197
+
198
+
199
+
200
+ ## [10.0.0-beta.39](https://github.com/hatiolab/operato/compare/v10.0.0-beta.38...v10.0.0-beta.39) (2026-04-18)
201
+
202
+
203
+ ### :rocket: New Features
204
+
205
+ * **property-panel:** hemisphere 색상 편집 + key light 방향/그림자 컨트롤 ([d0cc346](https://github.com/hatiolab/operato/commit/d0cc34651460e0b0d8aa290f0897c75aa7fb3fc7))
206
+ * **property-panel:** lighting preset UI 개선 — 값 범위 확장 + 버튼→select 전환 ([b866db9](https://github.com/hatiolab/operato/commit/b866db9a2871573095b415d0ead63401ae336c89)), closes [#ffaa55](https://github.com/hatiolab/operato/issues/ffaa55) [#88](https://github.com/hatiolab/operato/issues/88)
207
+
208
+
209
+ ### :house: Code Refactoring
210
+
211
+ * **property-panel:** scene3d 탭에서 bookmarks 섹션 제거 ([50d12de](https://github.com/hatiolab/operato/commit/50d12de7bc20a192503907db05a8506951931206))
212
+
213
+
214
+
215
+ ## [10.0.0-beta.38](https://github.com/hatiolab/operato/compare/v10.0.0-beta.37...v10.0.0-beta.38) (2026-04-17)
216
+
217
+
218
+ ### :rocket: New Features
219
+
220
+ * **property-panel:** scene3d 탭에 placement 모드 선택 추가 ([5f55786](https://github.com/hatiolab/operato/commit/5f55786500fc07e478b6d94a3518fb21598d7c59))
221
+
222
+
223
+
224
+ ## [10.0.0-beta.36](https://github.com/hatiolab/operato/compare/v10.0.0-beta.35...v10.0.0-beta.36) (2026-04-17)
225
+
226
+ **Note:** Version bump only for package @operato/property-panel
227
+
228
+
229
+
230
+
231
+
232
+ ## [10.0.0-beta.34](https://github.com/hatiolab/operato/compare/v10.0.0-beta.33...v10.0.0-beta.34) (2026-04-16)
233
+
234
+ **Note:** Version bump only for package @operato/property-panel
235
+
236
+
237
+
238
+
239
+
240
+ ## [10.0.0-beta.33](https://github.com/hatiolab/operato/compare/v10.0.0-beta.32...v10.0.0-beta.33) (2026-04-16)
241
+
242
+ **Note:** Version bump only for package @operato/property-panel
243
+
244
+
245
+
246
+
247
+
248
+ ## [10.0.0-beta.32](https://github.com/hatiolab/operato/compare/v10.0.0-beta.31...v10.0.0-beta.32) (2026-04-15)
249
+
250
+
251
+ ### :bug: Bug Fix
252
+
253
+ * **property-panel:** data-binding-popup의 Flow 탭이 "No scene"으로 빠지는 문제 수정 ([ac0bc78](https://github.com/hatiolab/operato/commit/ac0bc78e27a105657809157d3964b52857484c38))
254
+
255
+
256
+
257
+ ## [10.0.0-beta.31](https://github.com/hatiolab/operato/compare/v10.0.0-beta.30...v10.0.0-beta.31) (2026-04-15)
258
+
259
+ **Note:** Version bump only for package @operato/property-panel
260
+
261
+
262
+
263
+
264
+
265
+ ## [10.0.0-beta.30](https://github.com/hatiolab/operato/compare/v10.0.0-beta.29...v10.0.0-beta.30) (2026-04-14)
266
+
267
+ **Note:** Version bump only for package @operato/property-panel
268
+
269
+
270
+
271
+
272
+
273
+ ## [10.0.0-beta.29](https://github.com/hatiolab/operato/compare/v10.0.0-beta.28...v10.0.0-beta.29) (2026-04-13)
274
+
275
+ **Note:** Version bump only for package @operato/property-panel
276
+
277
+
278
+
279
+
280
+
281
+ ## [10.0.0-beta.26](https://github.com/hatiolab/operato/compare/v10.0.0-beta.25...v10.0.0-beta.26) (2026-04-09)
282
+
283
+ **Note:** Version bump only for package @operato/property-panel
284
+
285
+
286
+
287
+
288
+
289
+ ## [10.0.0-beta.25](https://github.com/hatiolab/operato/compare/v10.0.0-beta.24...v10.0.0-beta.25) (2026-04-08)
290
+
291
+
292
+ ### :bug: Bug Fix
293
+
294
+ * **property-panel:** group selection shows specific tab empty instead of full block ([cfe4a11](https://github.com/hatiolab/operato/commit/cfe4a11647928a301a3d19c80257887272ad619e))
295
+
296
+
297
+
298
+ ## [10.0.0-beta.24](https://github.com/hatiolab/operato/compare/v10.0.0-beta.23...v10.0.0-beta.24) (2026-04-06)
299
+
300
+ **Note:** Version bump only for package @operato/property-panel
301
+
302
+
303
+
304
+
305
+
306
+ ## [10.0.0-beta.23](https://github.com/hatiolab/operato/compare/v10.0.0-beta.22...v10.0.0-beta.23) (2026-04-06)
307
+
308
+
309
+ ### :bug: Bug Fix
310
+
311
+ * **property-panel:** 3D 모드 라벨 변경 — Enable 3D → Start in 3D ([044f29d](https://github.com/hatiolab/operato/commit/044f29de76e30e9457cd575bc5a8b567b4ba535a))
312
+ * **property-panel:** 3D 탭을 컴포넌트 전환 시에도 유지 ([002b30c](https://github.com/hatiolab/operato/commit/002b30c6768ff059707dc9c0236ea0852d66349f))
313
+ * **property-panel:** floor constraint label to keep above ground ([239d9c9](https://github.com/hatiolab/operato/commit/239d9c980a586bdc70bd0a2cee423074a30e2109))
314
+
315
+
316
+ ### :rocket: New Features
317
+
318
+ * **property-panel:** 3D mode labels i18n + keep above ground label fix ([57bbefc](https://github.com/hatiolab/operato/commit/57bbefc6dfe0b08ed10b23abc76735594c967404))
319
+
320
+
321
+
322
+ ## [10.0.0-beta.22](https://github.com/hatiolab/operato/compare/v10.0.0-beta.21...v10.0.0-beta.22) (2026-04-02)
323
+
324
+
325
+ ### :rocket: New Features
326
+
327
+ * **property-panel:** 3D 컴포넌트 다국어 추가 (en/ko/ja/zh/ms) ([f1e68f2](https://github.com/hatiolab/operato/commit/f1e68f25d555528ca7aebf1e31a0b8f740a94552))
328
+
329
+
330
+
331
+ ## [10.0.0-beta.21](https://github.com/hatiolab/operato/compare/v10.0.0-beta.20...v10.0.0-beta.21) (2026-04-02)
332
+
333
+ **Note:** Version bump only for package @operato/property-panel
334
+
335
+
336
+
337
+
338
+
339
+ ## [10.0.0-beta.18](https://github.com/hatiolab/operato/compare/v10.0.0-beta.17...v10.0.0-beta.18) (2026-03-25)
340
+
341
+
342
+ ### :rocket: New Features
343
+
344
+ * **property-panel:** cameraFloorConstraint UI 추가 ([8bb94e5](https://github.com/hatiolab/operato/commit/8bb94e59f8e356a9deb755a82e91939fcf2df7e6))
345
+
346
+
347
+
348
+ ## [10.0.0-beta.15](https://github.com/hatiolab/operato/compare/v10.0.0-beta.14...v10.0.0-beta.15) (2026-03-22)
349
+
350
+
351
+ ### :house: Code Refactoring
352
+
353
+ * **property-panel:** 3D 설정에서 bookmark 섹션 제거 ([14bbf5c](https://github.com/hatiolab/operato/commit/14bbf5c063f5afd5f77f15fc573e78f4da440ef5))
354
+
355
+
356
+ ### :rocket: New Features
357
+
358
+ * **board:** 데이터바인딩 팝업 에디터 + property 콤보박스 + D키 핫키 ([d467180](https://github.com/hatiolab/operato/commit/d467180e106b1d268099bf9895082e2c6cf8d07b))
359
+ * **property-panel:** 데이터바인딩 팝업 Flow 탭 + UI 개선 ([d52fadc](https://github.com/hatiolab/operato/commit/d52fadc24dd9ba4a658cbd5ac2edd8c53460f3fe))
360
+
361
+
362
+ ### :bug: Bug Fix
363
+
364
+ * **board:** 데이터바인딩 팝업 모델 반영 + GLTF animations 트리 + 사이드바 저장 조건 완화 ([46fe68e](https://github.com/hatiolab/operato/commit/46fe68ea8c3af43c5c4275a42cd7bb5e761ec118))
365
+ * **property-panel:** 데이터바인딩 팝업 GLTF Mesh 필터링 + fillStyleTargets 저장 조건 ([09afea6](https://github.com/hatiolab/operato/commit/09afea65d1cdf86d04e2e1606ba6e1b2063a4739))
366
+
367
+
368
+
369
+ ## [10.0.0-beta.12](https://github.com/hatiolab/operato/compare/v10.0.0-beta.11...v10.0.0-beta.12) (2026-03-17)
370
+
371
+
372
+ ### :rocket: New Features
373
+
374
+ * **property-panel:** 3D 탭에 Screen Fixed (HUD) 체크박스 추가 ([9f53d88](https://github.com/hatiolab/operato/commit/9f53d88e4690e9c07dba622e9d4d00d2dcc2afbb))
375
+
376
+
377
+ ### :bug: Bug Fix
378
+
379
+ * **property-panel:** screenFixed 체크박스 형태 통일 ([f1da9ce](https://github.com/hatiolab/operato/commit/f1da9ce748949e670b0a02560e012974b74adc27))
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
+
386
+ ### :bug: Bug Fix
387
+
388
+ * **property-panel:** 다중 타입 선택 시 Component.Undefined 대신 적절한 레이블 표시 ([7bad969](https://github.com/hatiolab/operato/commit/7bad96938ee220b72fd5c68d84ec8d55d7d85cf9))
389
+
390
+
391
+
392
+ ## [10.0.0-beta.7](https://github.com/hatiolab/operato/compare/v10.0.0-beta.6...v10.0.0-beta.7) (2026-03-09)
393
+
394
+
395
+ ### :rocket: New Features
396
+
397
+ * **property-panel:** add cross arrow tip type to line style selector ([b70d3d7](https://github.com/hatiolab/operato/commit/b70d3d7efaa2fec705e5696ba98a8b5c3ea464dc))
398
+
399
+
400
+
6
401
  ## [10.0.0-beta.6](https://github.com/hatiolab/operato/compare/v10.0.0-beta.5...v10.0.0-beta.6) (2026-03-09)
7
402
 
8
403
 
@@ -1,5 +1,9 @@
1
1
  export { OxPropertyPanel } from './ox-property-panel.js';
2
2
  export * from './property-panel/data-binding/data-binding.js';
3
+ export * from './property-panel/event-handlers/event-handlers-mapper.js';
4
+ export * from './property-panel/event-handlers/event-handlers.js';
5
+ export * from './property-panel/event-handlers/event-handlers-popup.js';
6
+ export * from './property-panel/event-handlers/event-handlers-help.js';
3
7
  export * from './property-panel/effects/effects.js';
4
8
  export * from './property-panel/inspector/inspector.js';
5
9
  export * from './property-panel/shapes/shapes.js';
package/dist/src/index.js CHANGED
@@ -1,5 +1,11 @@
1
1
  export { OxPropertyPanel } from './ox-property-panel.js';
2
2
  export * from './property-panel/data-binding/data-binding.js';
3
+ // Event handlers — inline panel + popup (data-binding 패턴 동일). effects tab
4
+ // 의 PropertyEvent fieldset 에서 inline 으로 host. open_in_new 클릭 시 popup.
5
+ export * from './property-panel/event-handlers/event-handlers-mapper.js';
6
+ export * from './property-panel/event-handlers/event-handlers.js';
7
+ export * from './property-panel/event-handlers/event-handlers-popup.js';
8
+ export * from './property-panel/event-handlers/event-handlers-help.js';
3
9
  export * from './property-panel/effects/effects.js';
4
10
  export * from './property-panel/inspector/inspector.js';
5
11
  export * from './property-panel/shapes/shapes.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,qCAAqC,CAAA;AACnD,cAAc,yCAAyC,CAAA;AACvD,cAAc,mCAAmC,CAAA;AACjD,cAAc,yCAAyC,CAAA;AACvD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA","sourcesContent":["export { OxPropertyPanel } from './ox-property-panel.js'\n\nexport * from './property-panel/data-binding/data-binding.js'\nexport * from './property-panel/effects/effects.js'\nexport * from './property-panel/inspector/inspector.js'\nexport * from './property-panel/shapes/shapes.js'\nexport * from './property-panel/specifics/specifics.js'\nexport * from './property-panel/styles/styles.js'\nexport * from './property-panel/threed/threed.js'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,cAAc,+CAA+C,CAAA;AAC7D,0EAA0E;AAC1E,sEAAsE;AACtE,cAAc,0DAA0D,CAAA;AACxE,cAAc,mDAAmD,CAAA;AACjE,cAAc,yDAAyD,CAAA;AACvE,cAAc,wDAAwD,CAAA;AACtE,cAAc,qCAAqC,CAAA;AACnD,cAAc,yCAAyC,CAAA;AACvD,cAAc,mCAAmC,CAAA;AACjD,cAAc,yCAAyC,CAAA;AACvD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA","sourcesContent":["export { OxPropertyPanel } from './ox-property-panel.js'\n\nexport * from './property-panel/data-binding/data-binding.js'\n// Event handlers — inline panel + popup (data-binding 패턴 동일). effects tab\n// 의 PropertyEvent fieldset 에서 inline 으로 host. open_in_new 클릭 시 popup.\nexport * from './property-panel/event-handlers/event-handlers-mapper.js'\nexport * from './property-panel/event-handlers/event-handlers.js'\nexport * from './property-panel/event-handlers/event-handlers-popup.js'\nexport * from './property-panel/event-handlers/event-handlers-help.js'\nexport * from './property-panel/effects/effects.js'\nexport * from './property-panel/inspector/inspector.js'\nexport * from './property-panel/shapes/shapes.js'\nexport * from './property-panel/specifics/specifics.js'\nexport * from './property-panel/styles/styles.js'\nexport * from './property-panel/threed/threed.js'\n"]}
@@ -37,8 +37,15 @@ export declare class OxPropertyPanel extends OxPropertyPanel_base {
37
37
  'property-data-binding': typeof PropertyDataBinding;
38
38
  'scene-inspector': typeof SceneInspector;
39
39
  };
40
+ private hasGroup;
40
41
  render(): import("lit-html").TemplateResult<1>;
41
42
  private onPropertyChanged;
43
+ /**
44
+ * 새 properties 배열이 현재 specificProps 와 *구조상* 다른지 빠르게 검사.
45
+ * 단순히 length + 각 항목의 name 만 비교 — value 변경은 model 측에서 처리되므로
46
+ * specificProps 의 reference 를 바꿀 필요가 없다.
47
+ */
48
+ private specificPropsChanged;
42
49
  private onBoundsChanged;
43
50
  private onChangedByScene;
44
51
  private setPropertyTargetAsDefault;
@@ -50,6 +50,9 @@ let OxPropertyPanel = class OxPropertyPanel extends ScopedElementsMixin(LitEleme
50
50
  'scene-inspector': SceneInspector
51
51
  };
52
52
  }
53
+ hasGroup(selected) {
54
+ return selected.some(c => { var _a; return ((_a = c === null || c === void 0 ? void 0 : c.model) === null || _a === void 0 ? void 0 : _a.type) === 'group'; });
55
+ }
53
56
  render() {
54
57
  var tabName = this.tabName ? this.tabName : 'shape';
55
58
  return html `
@@ -61,9 +64,7 @@ let OxPropertyPanel = class OxPropertyPanel extends ScopedElementsMixin(LitEleme
61
64
  >
62
65
  <md-icon name="shape" ?selected=${tabName == 'shape'}>format_shapes</md-icon>
63
66
  <md-icon name="style" ?selected=${tabName == 'style'}>palette</md-icon>
64
- ${this.is3dish(this.selected)
65
- ? html `<md-icon name="threed" ?selected=${tabName == 'threed'}>view_in_ar</md-icon>`
66
- : html ``}
67
+ <md-icon name="threed" ?selected=${tabName == 'threed'}>view_in_ar</md-icon>
67
68
  <md-icon name="effect" ?selected=${tabName == 'effect'}>movie_filter</md-icon>
68
69
  <md-icon name="specific" ?selected=${tabName == 'specific'}>tune</md-icon>
69
70
  <md-icon name="data-binding" ?selected=${tabName == 'data-binding'}>share</md-icon>
@@ -92,39 +93,47 @@ let OxPropertyPanel = class OxPropertyPanel extends ScopedElementsMixin(LitEleme
92
93
  >
93
94
  </property-style>
94
95
  `,
95
- threed: this.isRootModel(this.selected)
96
+ threed: !this.is3dish(this.selected)
96
97
  ? html `
97
- <property-scene3d
98
- .value=${this.model}
99
- .scene=${this.scene}
100
- ?active=${tabName == 'threed'}
101
- >
102
- </property-scene3d>
98
+ <div style="display:flex;align-items:center;justify-content:center;height:100%;color:var(--md-sys-color-on-surface-variant,#666);font-size:12px;opacity:0.7;padding:16px;text-align:center;">
99
+ Selected component(s) do not support 3D properties
100
+ </div>
103
101
  `
102
+ : this.isRootModel(this.selected)
103
+ ? html `
104
+ <property-scene3d
105
+ .value=${this.model}
106
+ .scene=${this.scene}
107
+ ?active=${tabName == 'threed'}
108
+ >
109
+ </property-scene3d>
110
+ `
111
+ : html `
112
+ <property-3d
113
+ .value=${this.model}
114
+ .bounds=${this.bounds}
115
+ .selected=${this.selected}
116
+ ?active=${tabName == 'threed'}
117
+ >
118
+ </property-3d>
119
+ `,
120
+ effect: html `
121
+ <property-effect .value=${this.model} .scene=${this.scene} ?active=${tabName == 'effect'}>
122
+ </property-effect>
123
+ `,
124
+ specific: this.hasGroup(this.selected)
125
+ ? html ``
104
126
  : html `
105
- <property-3d
127
+ <property-specific
106
128
  .value=${this.model}
107
- .bounds=${this.bounds}
129
+ .scene=${this.scene}
108
130
  .selected=${this.selected}
109
- ?active=${tabName == 'threed'}
131
+ .props=${this.specificProps}
132
+ .propertyEditor=${this.propertyEditor}
133
+ ?active=${tabName == 'specific'}
110
134
  >
111
- </property-3d>
135
+ </property-specific>
112
136
  `,
113
- effect: html `
114
- <property-effect .value=${this.model} .scene=${this.scene} ?active=${tabName == 'effect'}>
115
- </property-effect>
116
- `,
117
- specific: html `
118
- <property-specific
119
- .value=${this.model}
120
- .scene=${this.scene}
121
- .selected=${this.selected}
122
- .props=${this.specificProps}
123
- .propertyEditor=${this.propertyEditor}
124
- ?active=${tabName == 'specific'}
125
- >
126
- </property-specific>
127
- `,
128
137
  'data-binding': html `
129
138
  <property-data-binding .scene=${this.scene} .value=${this.model} ?active=${tabName == 'data-binding'}>
130
139
  </property-data-binding>
@@ -138,16 +147,40 @@ let OxPropertyPanel = class OxPropertyPanel extends ScopedElementsMixin(LitEleme
138
147
  `;
139
148
  }
140
149
  onPropertyChanged(e) {
150
+ var _a;
141
151
  var detail = e.detail;
142
152
  if (this.propertyTarget) {
143
153
  /* 단일 컴포넌트의 경우에 적용 */
144
154
  this.scene && this.scene.undoableChange(() => this.propertyTarget.set(detail));
155
+ // nature.properties 가 동적인 컴포넌트(예: robot-arm 의 chainPreset
156
+ // 변경 시 joint 개수 변화)를 위해 set 직후 nature 재평가.
157
+ // 정적 nature 컴포넌트는 동일한 배열이 반환되어 비용 미미.
158
+ const nextProps = (_a = this.propertyTarget.nature) === null || _a === void 0 ? void 0 : _a.properties;
159
+ if (nextProps && this.specificPropsChanged(nextProps)) {
160
+ this.specificProps = deepClone(nextProps);
161
+ }
145
162
  }
146
163
  else {
147
164
  /* 여러 컴포넌트의 경우에 적용 */
148
165
  this.scene && this.scene.undoableChange(() => this.selected.forEach(component => component.set(detail)));
149
166
  }
150
167
  }
168
+ /**
169
+ * 새 properties 배열이 현재 specificProps 와 *구조상* 다른지 빠르게 검사.
170
+ * 단순히 length + 각 항목의 name 만 비교 — value 변경은 model 측에서 처리되므로
171
+ * specificProps 의 reference 를 바꿀 필요가 없다.
172
+ */
173
+ specificPropsChanged(next) {
174
+ var _a, _b;
175
+ const cur = this.specificProps;
176
+ if (!cur || cur.length !== next.length)
177
+ return true;
178
+ for (let i = 0; i < next.length; i++) {
179
+ if (((_a = cur[i]) === null || _a === void 0 ? void 0 : _a.name) !== ((_b = next[i]) === null || _b === void 0 ? void 0 : _b.name))
180
+ return true;
181
+ }
182
+ return false;
183
+ }
151
184
  onBoundsChanged(e) {
152
185
  var detail = e.detail;
153
186
  if (!this.scene) {
@@ -204,11 +237,6 @@ let OxPropertyPanel = class OxPropertyPanel extends ScopedElementsMixin(LitEleme
204
237
  }
205
238
  async onSelectedChanged(after) {
206
239
  await this.updateComplete;
207
- // 3D 탭 선택 중 비-3D 컴포넌트로 전환 시 shape 탭으로 복귀
208
- // (model-layer는 항상 3D 탭 표시 가능)
209
- if (this.tabName === 'threed' && !this.is3dish(after)) {
210
- this.tabName = 'shape';
211
- }
212
240
  if (after.length == 1) {
213
241
  this.setPropertyTarget(after[0]);
214
242
  // 컴포넌트 특성 속성(specific properties)을 먼저 바꾸고, 모델을 바꾸어준다.