@fmsim/board 2.0.0-beta.101 → 2.0.0-beta.104

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 (33) hide show
  1. package/custom-elements.json +2020 -1759
  2. package/dist/src/modeller/bulk-create-dialog.d.ts +12 -1
  3. package/dist/src/modeller/bulk-create-dialog.js +67 -3
  4. package/dist/src/modeller/bulk-create-dialog.js.map +1 -1
  5. package/dist/src/modeller/bulk-create.d.ts +6 -0
  6. package/dist/src/modeller/bulk-create.js +3 -1
  7. package/dist/src/modeller/bulk-create.js.map +1 -1
  8. package/dist/src/modeller/component-toolbar/component-toolbar.d.ts +6 -0
  9. package/dist/src/modeller/component-toolbar/component-toolbar.js +18 -2
  10. package/dist/src/modeller/component-toolbar/component-toolbar.js.map +1 -1
  11. package/dist/src/modeller/edit-toolbar.js +10 -1
  12. package/dist/src/modeller/edit-toolbar.js.map +1 -1
  13. package/dist/src/modeller/property-sidebar/effects/effects.js +3 -2
  14. package/dist/src/modeller/property-sidebar/effects/effects.js.map +1 -1
  15. package/dist/src/modeller/property-sidebar/shapes/ox-input-entity-id.js +12 -3
  16. package/dist/src/modeller/property-sidebar/shapes/ox-input-entity-id.js.map +1 -1
  17. package/dist/src/modeller/property-sidebar/shapes/shapes.js +40 -24
  18. package/dist/src/modeller/property-sidebar/shapes/shapes.js.map +1 -1
  19. package/dist/src/modeller/property-sidebar/specifics/parent-object.d.ts +29 -0
  20. package/dist/src/modeller/property-sidebar/specifics/parent-object.js +74 -0
  21. package/dist/src/modeller/property-sidebar/specifics/parent-object.js.map +1 -0
  22. package/dist/src/modeller/property-sidebar/specifics/specifics.d.ts +4 -2
  23. package/dist/src/modeller/property-sidebar/specifics/specifics.js +13 -31
  24. package/dist/src/modeller/property-sidebar/specifics/specifics.js.map +1 -1
  25. package/dist/src/ox-board-modeller.js +9 -2
  26. package/dist/src/ox-board-modeller.js.map +1 -1
  27. package/dist/src/ox-board-viewer.js +8 -2
  28. package/dist/src/ox-board-viewer.js.map +1 -1
  29. package/dist/src/scene-monitor-renderer.d.ts +10 -0
  30. package/dist/src/scene-monitor-renderer.js +226 -0
  31. package/dist/src/scene-monitor-renderer.js.map +1 -0
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +2 -2
@@ -2,91 +2,6 @@
2
2
  "schemaVersion": "1.0.0",
3
3
  "readme": "",
4
4
  "modules": [
5
- {
6
- "kind": "javascript-module",
7
- "path": "stories/restful-attachment-selector.stories.ts",
8
- "declarations": [
9
- {
10
- "kind": "variable",
11
- "name": "meta",
12
- "default": "{ title: 'Components/RestfulAttachmentSelector', component: 'restful-attachment-selector', argTypes: { category: { control: 'select', options: ['', 'audio', 'video', 'image', 'text', 'application'], description: '첨부파일 카테고리' }, creatable: { control: 'boolean', description: '파일 업로드 가능 여부' }, userName: { control: 'text', description: '사용자 이름' } }, parameters: { layout: 'centered' } } satisfies Meta"
13
- },
14
- {
15
- "kind": "variable",
16
- "name": "Default",
17
- "type": {
18
- "text": "Story"
19
- },
20
- "default": "{ render: args => html` <restful-attachment-selector .category=${args.category} .creatable=${args.creatable} .userName=${args.userName} style=\"width: 800px; height: 600px;\" ></restful-attachment-selector> `, args: { category: '', creatable: true, userName: 'testUser' } }"
21
- },
22
- {
23
- "kind": "variable",
24
- "name": "WithCategory",
25
- "type": {
26
- "text": "Story"
27
- },
28
- "default": "{ ...Default, args: { ...Default.args, category: 'document' } }"
29
- },
30
- {
31
- "kind": "variable",
32
- "name": "ReadOnly",
33
- "type": {
34
- "text": "Story"
35
- },
36
- "default": "{ ...Default, args: { ...Default.args, creatable: false } }"
37
- },
38
- {
39
- "kind": "variable",
40
- "name": "WithTestData",
41
- "type": {
42
- "text": "Story"
43
- },
44
- "default": "{ ...Default, args: { ...Default.args, category: 'document' }, play: async ({ canvasElement }) => { const selector = canvasElement.querySelector('restful-attachment-selector') as RestfulAttachmentSelector if (selector) { // 테스트 데이터 주입 selector.attachments = [ { id: 'test-1', name: 'test1.txt', description: 'Test file 1', mimetype: 'text/plain', encoding: '7bit', category: 'document', path: 'test1.txt', bulk: '27', createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), creatorId: 'testUser', updaterId: 'testUser', fullpath: 'http://localhost:16060/mcs/lv/images/test1.txt', download: 'http://localhost:16060/mcs/lv/downloadFile/test1.txt' }, { id: 'test-2', name: 'test2.jpg', description: 'Test image', mimetype: 'image/jpeg', encoding: '7bit', category: 'image', path: 'test2.jpg', bulk: '1024', createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), creatorId: 'testUser', updaterId: 'testUser', fullpath: 'http://localhost:16060/mcs/lv/images/test2.jpg', download: 'http://localhost:16060/mcs/lv/downloadFile/test2.jpg' } ] } } }"
45
- }
46
- ],
47
- "exports": [
48
- {
49
- "kind": "js",
50
- "name": "default",
51
- "declaration": {
52
- "name": "meta",
53
- "module": "stories/restful-attachment-selector.stories.ts"
54
- }
55
- },
56
- {
57
- "kind": "js",
58
- "name": "Default",
59
- "declaration": {
60
- "name": "Default",
61
- "module": "stories/restful-attachment-selector.stories.ts"
62
- }
63
- },
64
- {
65
- "kind": "js",
66
- "name": "WithCategory",
67
- "declaration": {
68
- "name": "WithCategory",
69
- "module": "stories/restful-attachment-selector.stories.ts"
70
- }
71
- },
72
- {
73
- "kind": "js",
74
- "name": "ReadOnly",
75
- "declaration": {
76
- "name": "ReadOnly",
77
- "module": "stories/restful-attachment-selector.stories.ts"
78
- }
79
- },
80
- {
81
- "kind": "js",
82
- "name": "WithTestData",
83
- "declaration": {
84
- "name": "WithTestData",
85
- "module": "stories/restful-attachment-selector.stories.ts"
86
- }
87
- }
88
- ]
89
- },
90
5
  {
91
6
  "kind": "javascript-module",
92
7
  "path": "src/index.ts",
@@ -2864,122 +2779,74 @@
2864
2779
  },
2865
2780
  {
2866
2781
  "kind": "javascript-module",
2867
- "path": "src/types.ts",
2868
- "declarations": [],
2869
- "exports": []
2870
- },
2871
- {
2872
- "kind": "javascript-module",
2873
- "path": "src/data-storage/board-model-cache.ts",
2782
+ "path": "src/scene-monitor-renderer.ts",
2874
2783
  "declarations": [
2875
2784
  {
2876
2785
  "kind": "class",
2877
2786
  "description": "",
2878
- "name": "BoardModelCache",
2787
+ "name": "SceneMonitorRenderer",
2879
2788
  "members": [
2880
2789
  {
2881
- "kind": "method",
2882
- "name": "get",
2883
- "static": true,
2884
- "return": {
2885
- "type": {
2886
- "text": "Promise<CachedBoard | null>"
2887
- }
2790
+ "kind": "field",
2791
+ "name": "_card",
2792
+ "type": {
2793
+ "text": "HTMLElement | undefined"
2888
2794
  },
2889
- "parameters": [
2890
- {
2891
- "name": "boardId",
2892
- "type": {
2893
- "text": "string"
2894
- }
2895
- }
2896
- ]
2795
+ "privacy": "private"
2897
2796
  },
2898
2797
  {
2899
- "kind": "method",
2900
- "name": "put",
2901
- "static": true,
2902
- "return": {
2903
- "type": {
2904
- "text": "Promise<void>"
2905
- }
2798
+ "kind": "field",
2799
+ "name": "_titleEl",
2800
+ "type": {
2801
+ "text": "HTMLElement | undefined"
2906
2802
  },
2907
- "parameters": [
2908
- {
2909
- "name": "boardId",
2910
- "type": {
2911
- "text": "string"
2912
- }
2913
- },
2914
- {
2915
- "name": "name",
2916
- "type": {
2917
- "text": "string"
2918
- }
2919
- },
2920
- {
2921
- "name": "model",
2922
- "type": {
2923
- "text": "string"
2924
- }
2925
- },
2926
- {
2927
- "name": "updatedAt",
2928
- "type": {
2929
- "text": "string"
2930
- }
2931
- }
2932
- ]
2803
+ "privacy": "private"
2804
+ },
2805
+ {
2806
+ "kind": "field",
2807
+ "name": "_bodyEl",
2808
+ "type": {
2809
+ "text": "HTMLElement | undefined"
2810
+ },
2811
+ "privacy": "private"
2812
+ },
2813
+ {
2814
+ "kind": "field",
2815
+ "name": "_lagEl",
2816
+ "type": {
2817
+ "text": "HTMLElement | undefined"
2818
+ },
2819
+ "privacy": "private"
2933
2820
  },
2934
2821
  {
2935
2822
  "kind": "method",
2936
- "name": "isValid",
2937
- "static": true,
2823
+ "name": "build",
2938
2824
  "return": {
2939
2825
  "type": {
2940
- "text": "Promise<boolean>"
2826
+ "text": "void"
2941
2827
  }
2942
2828
  },
2943
2829
  "parameters": [
2944
2830
  {
2945
- "name": "boardId",
2831
+ "name": "container",
2946
2832
  "type": {
2947
- "text": "string"
2833
+ "text": "HTMLElement"
2948
2834
  }
2949
2835
  },
2950
2836
  {
2951
- "name": "serverUpdatedAt",
2952
- "type": {
2953
- "text": "string"
2954
- }
2955
- }
2956
- ]
2957
- },
2958
- {
2959
- "kind": "method",
2960
- "name": "remove",
2961
- "static": true,
2962
- "return": {
2963
- "type": {
2964
- "text": "Promise<void>"
2965
- }
2966
- },
2967
- "parameters": [
2968
- {
2969
- "name": "boardId",
2837
+ "name": "host",
2970
2838
  "type": {
2971
- "text": "string"
2839
+ "text": "LoadingOverlayHost"
2972
2840
  }
2973
2841
  }
2974
2842
  ]
2975
2843
  },
2976
2844
  {
2977
2845
  "kind": "method",
2978
- "name": "clear",
2979
- "static": true,
2846
+ "name": "destroy",
2980
2847
  "return": {
2981
2848
  "type": {
2982
- "text": "Promise<void>"
2849
+ "text": "void"
2983
2850
  }
2984
2851
  }
2985
2852
  }
@@ -2989,102 +2856,101 @@
2989
2856
  "exports": [
2990
2857
  {
2991
2858
  "kind": "js",
2992
- "name": "BoardModelCache",
2859
+ "name": "SceneMonitorRenderer",
2993
2860
  "declaration": {
2994
- "name": "BoardModelCache",
2995
- "module": "src/data-storage/board-model-cache.ts"
2861
+ "name": "SceneMonitorRenderer",
2862
+ "module": "src/scene-monitor-renderer.ts"
2996
2863
  }
2997
2864
  }
2998
2865
  ]
2999
2866
  },
3000
2867
  {
3001
2868
  "kind": "javascript-module",
3002
- "path": "src/data-storage/data-storage.ts",
2869
+ "path": "src/types.ts",
2870
+ "declarations": [],
2871
+ "exports": []
2872
+ },
2873
+ {
2874
+ "kind": "javascript-module",
2875
+ "path": "stories/restful-attachment-selector.stories.ts",
3003
2876
  "declarations": [
3004
2877
  {
3005
- "kind": "class",
3006
- "description": "",
3007
- "name": "DataStorage",
3008
- "members": [
3009
- {
3010
- "kind": "field",
3011
- "name": "id",
3012
- "type": {
3013
- "text": "string"
3014
- },
3015
- "privacy": "private",
3016
- "default": "id"
3017
- },
3018
- {
3019
- "kind": "method",
3020
- "name": "load",
3021
- "privacy": "public",
3022
- "return": {
3023
- "type": {
3024
- "text": "Promise<any>"
3025
- }
3026
- },
3027
- "parameters": [
3028
- {
3029
- "name": "key",
3030
- "type": {
3031
- "text": "Component"
3032
- }
3033
- }
3034
- ]
3035
- },
3036
- {
3037
- "kind": "method",
3038
- "name": "save",
3039
- "privacy": "public",
3040
- "return": {
3041
- "type": {
3042
- "text": "Promise<void>"
3043
- }
3044
- },
3045
- "parameters": [
3046
- {
3047
- "name": "key",
3048
- "type": {
3049
- "text": "Component"
3050
- }
3051
- },
3052
- {
3053
- "name": "value",
3054
- "type": {
3055
- "text": "any"
3056
- }
3057
- }
3058
- ]
3059
- },
3060
- {
3061
- "kind": "method",
3062
- "name": "clear",
3063
- "privacy": "public",
3064
- "return": {
3065
- "type": {
3066
- "text": "Promise<void>"
3067
- }
3068
- },
3069
- "parameters": [
3070
- {
3071
- "name": "key",
3072
- "type": {
3073
- "text": "Component"
3074
- }
3075
- }
3076
- ]
3077
- }
3078
- ]
2878
+ "kind": "variable",
2879
+ "name": "meta",
2880
+ "default": "{ title: 'Components/RestfulAttachmentSelector', component: 'restful-attachment-selector', argTypes: { category: { control: 'select', options: ['', 'audio', 'video', 'image', 'text', 'application'], description: '첨부파일 카테고리' }, creatable: { control: 'boolean', description: '파일 업로드 가능 여부' }, userName: { control: 'text', description: '사용자 이름' } }, parameters: { layout: 'centered' } } satisfies Meta"
2881
+ },
2882
+ {
2883
+ "kind": "variable",
2884
+ "name": "Default",
2885
+ "type": {
2886
+ "text": "Story"
2887
+ },
2888
+ "default": "{ render: args => html` <restful-attachment-selector .category=${args.category} .creatable=${args.creatable} .userName=${args.userName} style=\"width: 800px; height: 600px;\" ></restful-attachment-selector> `, args: { category: '', creatable: true, userName: 'testUser' } }"
2889
+ },
2890
+ {
2891
+ "kind": "variable",
2892
+ "name": "WithCategory",
2893
+ "type": {
2894
+ "text": "Story"
2895
+ },
2896
+ "default": "{ ...Default, args: { ...Default.args, category: 'document' } }"
2897
+ },
2898
+ {
2899
+ "kind": "variable",
2900
+ "name": "ReadOnly",
2901
+ "type": {
2902
+ "text": "Story"
2903
+ },
2904
+ "default": "{ ...Default, args: { ...Default.args, creatable: false } }"
2905
+ },
2906
+ {
2907
+ "kind": "variable",
2908
+ "name": "WithTestData",
2909
+ "type": {
2910
+ "text": "Story"
2911
+ },
2912
+ "default": "{ ...Default, args: { ...Default.args, category: 'document' }, play: async ({ canvasElement }) => { const selector = canvasElement.querySelector('restful-attachment-selector') as RestfulAttachmentSelector if (selector) { // 테스트 데이터 주입 selector.attachments = [ { id: 'test-1', name: 'test1.txt', description: 'Test file 1', mimetype: 'text/plain', encoding: '7bit', category: 'document', path: 'test1.txt', bulk: '27', createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), creatorId: 'testUser', updaterId: 'testUser', fullpath: 'http://localhost:16060/mcs/lv/images/test1.txt', download: 'http://localhost:16060/mcs/lv/downloadFile/test1.txt' }, { id: 'test-2', name: 'test2.jpg', description: 'Test image', mimetype: 'image/jpeg', encoding: '7bit', category: 'image', path: 'test2.jpg', bulk: '1024', createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), creatorId: 'testUser', updaterId: 'testUser', fullpath: 'http://localhost:16060/mcs/lv/images/test2.jpg', download: 'http://localhost:16060/mcs/lv/downloadFile/test2.jpg' } ] } } }"
3079
2913
  }
3080
2914
  ],
3081
2915
  "exports": [
3082
2916
  {
3083
2917
  "kind": "js",
3084
- "name": "DataStorage",
2918
+ "name": "default",
3085
2919
  "declaration": {
3086
- "name": "DataStorage",
3087
- "module": "src/data-storage/data-storage.ts"
2920
+ "name": "meta",
2921
+ "module": "stories/restful-attachment-selector.stories.ts"
2922
+ }
2923
+ },
2924
+ {
2925
+ "kind": "js",
2926
+ "name": "Default",
2927
+ "declaration": {
2928
+ "name": "Default",
2929
+ "module": "stories/restful-attachment-selector.stories.ts"
2930
+ }
2931
+ },
2932
+ {
2933
+ "kind": "js",
2934
+ "name": "WithCategory",
2935
+ "declaration": {
2936
+ "name": "WithCategory",
2937
+ "module": "stories/restful-attachment-selector.stories.ts"
2938
+ }
2939
+ },
2940
+ {
2941
+ "kind": "js",
2942
+ "name": "ReadOnly",
2943
+ "declaration": {
2944
+ "name": "ReadOnly",
2945
+ "module": "stories/restful-attachment-selector.stories.ts"
2946
+ }
2947
+ },
2948
+ {
2949
+ "kind": "js",
2950
+ "name": "WithTestData",
2951
+ "declaration": {
2952
+ "name": "WithTestData",
2953
+ "module": "stories/restful-attachment-selector.stories.ts"
3088
2954
  }
3089
2955
  }
3090
2956
  ]
@@ -4566,139 +4432,360 @@
4566
4432
  },
4567
4433
  {
4568
4434
  "kind": "javascript-module",
4569
- "path": "src/layers/mcs-mouse-event-handler.ts",
4570
- "declarations": [],
4571
- "exports": []
4572
- },
4573
- {
4574
- "kind": "javascript-module",
4575
- "path": "src/layers/movement-layer.ts",
4435
+ "path": "src/data-storage/board-model-cache.ts",
4576
4436
  "declarations": [
4577
4437
  {
4578
4438
  "kind": "class",
4579
4439
  "description": "",
4580
- "name": "MovementLayer",
4440
+ "name": "BoardModelCache",
4581
4441
  "members": [
4582
- {
4583
- "kind": "field",
4584
- "name": "drawInstructionHandler"
4585
- },
4586
- {
4587
- "kind": "field",
4588
- "name": "clickComponentHandler"
4589
- },
4590
- {
4591
- "kind": "field",
4592
- "name": "onchangeTarget"
4593
- },
4594
- {
4595
- "kind": "method",
4596
- "name": "ready"
4597
- },
4598
- {
4599
- "kind": "method",
4600
- "name": "dispose"
4601
- },
4602
- {
4603
- "kind": "field",
4604
- "name": "pointerEvents",
4605
- "readonly": true
4606
- },
4607
- {
4608
- "kind": "field",
4609
- "name": "capturable",
4610
- "readonly": true
4611
- },
4612
4442
  {
4613
4443
  "kind": "method",
4614
- "name": "drawArrow",
4444
+ "name": "get",
4445
+ "static": true,
4446
+ "return": {
4447
+ "type": {
4448
+ "text": "Promise<CachedBoard | null>"
4449
+ }
4450
+ },
4615
4451
  "parameters": [
4616
4452
  {
4617
- "name": "ctx",
4453
+ "name": "boardId",
4618
4454
  "type": {
4619
- "text": "CanvasRenderingContext2D"
4455
+ "text": "string"
4620
4456
  }
4621
- },
4457
+ }
4458
+ ]
4459
+ },
4460
+ {
4461
+ "kind": "method",
4462
+ "name": "put",
4463
+ "static": true,
4464
+ "return": {
4465
+ "type": {
4466
+ "text": "Promise<void>"
4467
+ }
4468
+ },
4469
+ "parameters": [
4622
4470
  {
4623
- "name": "p1",
4471
+ "name": "boardId",
4624
4472
  "type": {
4625
- "text": "POINT"
4473
+ "text": "string"
4626
4474
  }
4627
4475
  },
4628
4476
  {
4629
- "name": "p2",
4477
+ "name": "name",
4630
4478
  "type": {
4631
- "text": "POINT"
4479
+ "text": "string"
4632
4480
  }
4633
4481
  },
4634
4482
  {
4635
- "name": "pathType",
4483
+ "name": "model",
4636
4484
  "type": {
4637
- "text": "PathType"
4485
+ "text": "string"
4638
4486
  }
4639
4487
  },
4640
4488
  {
4641
- "name": "pathStatus",
4489
+ "name": "updatedAt",
4642
4490
  "type": {
4643
- "text": "PathStatus"
4491
+ "text": "string"
4644
4492
  }
4645
- },
4493
+ }
4494
+ ]
4495
+ },
4496
+ {
4497
+ "kind": "method",
4498
+ "name": "isValid",
4499
+ "static": true,
4500
+ "return": {
4501
+ "type": {
4502
+ "text": "Promise<boolean>"
4503
+ }
4504
+ },
4505
+ "parameters": [
4646
4506
  {
4647
- "name": "label",
4507
+ "name": "boardId",
4648
4508
  "type": {
4649
4509
  "text": "string"
4650
4510
  }
4651
4511
  },
4652
4512
  {
4653
- "name": "styles",
4654
- "optional": true,
4513
+ "name": "serverUpdatedAt",
4655
4514
  "type": {
4656
- "text": "PathStyles"
4515
+ "text": "string"
4657
4516
  }
4658
4517
  }
4659
4518
  ]
4660
4519
  },
4661
4520
  {
4662
4521
  "kind": "method",
4663
- "name": "findSourceAndTarget",
4522
+ "name": "remove",
4523
+ "static": true,
4664
4524
  "return": {
4665
4525
  "type": {
4666
- "text": "[Component?, Component?]"
4526
+ "text": "Promise<void>"
4667
4527
  }
4668
4528
  },
4669
4529
  "parameters": [
4670
4530
  {
4671
- "name": "path",
4531
+ "name": "boardId",
4672
4532
  "type": {
4673
- "text": "PATH"
4533
+ "text": "string"
4674
4534
  }
4675
4535
  }
4676
4536
  ]
4677
4537
  },
4538
+ {
4539
+ "kind": "method",
4540
+ "name": "clear",
4541
+ "static": true,
4542
+ "return": {
4543
+ "type": {
4544
+ "text": "Promise<void>"
4545
+ }
4546
+ }
4547
+ }
4548
+ ]
4549
+ }
4550
+ ],
4551
+ "exports": [
4552
+ {
4553
+ "kind": "js",
4554
+ "name": "BoardModelCache",
4555
+ "declaration": {
4556
+ "name": "BoardModelCache",
4557
+ "module": "src/data-storage/board-model-cache.ts"
4558
+ }
4559
+ }
4560
+ ]
4561
+ },
4562
+ {
4563
+ "kind": "javascript-module",
4564
+ "path": "src/data-storage/data-storage.ts",
4565
+ "declarations": [
4566
+ {
4567
+ "kind": "class",
4568
+ "description": "",
4569
+ "name": "DataStorage",
4570
+ "members": [
4678
4571
  {
4679
4572
  "kind": "field",
4680
- "name": "monitoringTargets",
4573
+ "name": "id",
4681
4574
  "type": {
4682
- "text": "Component[]"
4575
+ "text": "string"
4683
4576
  },
4684
4577
  "privacy": "private",
4685
- "default": "[]"
4686
- },
4687
- {
4688
- "kind": "method",
4689
- "name": "clearMonitoringTargets",
4690
- "privacy": "private"
4578
+ "default": "id"
4691
4579
  },
4692
4580
  {
4693
4581
  "kind": "method",
4694
- "name": "addMonitoringTarget",
4695
- "privacy": "private",
4696
- "parameters": [
4697
- {
4698
- "name": "targets",
4699
- "type": {
4700
- "text": "Component[]"
4701
- }
4582
+ "name": "load",
4583
+ "privacy": "public",
4584
+ "return": {
4585
+ "type": {
4586
+ "text": "Promise<any>"
4587
+ }
4588
+ },
4589
+ "parameters": [
4590
+ {
4591
+ "name": "key",
4592
+ "type": {
4593
+ "text": "Component"
4594
+ }
4595
+ }
4596
+ ]
4597
+ },
4598
+ {
4599
+ "kind": "method",
4600
+ "name": "save",
4601
+ "privacy": "public",
4602
+ "return": {
4603
+ "type": {
4604
+ "text": "Promise<void>"
4605
+ }
4606
+ },
4607
+ "parameters": [
4608
+ {
4609
+ "name": "key",
4610
+ "type": {
4611
+ "text": "Component"
4612
+ }
4613
+ },
4614
+ {
4615
+ "name": "value",
4616
+ "type": {
4617
+ "text": "any"
4618
+ }
4619
+ }
4620
+ ]
4621
+ },
4622
+ {
4623
+ "kind": "method",
4624
+ "name": "clear",
4625
+ "privacy": "public",
4626
+ "return": {
4627
+ "type": {
4628
+ "text": "Promise<void>"
4629
+ }
4630
+ },
4631
+ "parameters": [
4632
+ {
4633
+ "name": "key",
4634
+ "type": {
4635
+ "text": "Component"
4636
+ }
4637
+ }
4638
+ ]
4639
+ }
4640
+ ]
4641
+ }
4642
+ ],
4643
+ "exports": [
4644
+ {
4645
+ "kind": "js",
4646
+ "name": "DataStorage",
4647
+ "declaration": {
4648
+ "name": "DataStorage",
4649
+ "module": "src/data-storage/data-storage.ts"
4650
+ }
4651
+ }
4652
+ ]
4653
+ },
4654
+ {
4655
+ "kind": "javascript-module",
4656
+ "path": "src/layers/mcs-mouse-event-handler.ts",
4657
+ "declarations": [],
4658
+ "exports": []
4659
+ },
4660
+ {
4661
+ "kind": "javascript-module",
4662
+ "path": "src/layers/movement-layer.ts",
4663
+ "declarations": [
4664
+ {
4665
+ "kind": "class",
4666
+ "description": "",
4667
+ "name": "MovementLayer",
4668
+ "members": [
4669
+ {
4670
+ "kind": "field",
4671
+ "name": "drawInstructionHandler"
4672
+ },
4673
+ {
4674
+ "kind": "field",
4675
+ "name": "clickComponentHandler"
4676
+ },
4677
+ {
4678
+ "kind": "field",
4679
+ "name": "onchangeTarget"
4680
+ },
4681
+ {
4682
+ "kind": "method",
4683
+ "name": "ready"
4684
+ },
4685
+ {
4686
+ "kind": "method",
4687
+ "name": "dispose"
4688
+ },
4689
+ {
4690
+ "kind": "field",
4691
+ "name": "pointerEvents",
4692
+ "readonly": true
4693
+ },
4694
+ {
4695
+ "kind": "field",
4696
+ "name": "capturable",
4697
+ "readonly": true
4698
+ },
4699
+ {
4700
+ "kind": "method",
4701
+ "name": "drawArrow",
4702
+ "parameters": [
4703
+ {
4704
+ "name": "ctx",
4705
+ "type": {
4706
+ "text": "CanvasRenderingContext2D"
4707
+ }
4708
+ },
4709
+ {
4710
+ "name": "p1",
4711
+ "type": {
4712
+ "text": "POINT"
4713
+ }
4714
+ },
4715
+ {
4716
+ "name": "p2",
4717
+ "type": {
4718
+ "text": "POINT"
4719
+ }
4720
+ },
4721
+ {
4722
+ "name": "pathType",
4723
+ "type": {
4724
+ "text": "PathType"
4725
+ }
4726
+ },
4727
+ {
4728
+ "name": "pathStatus",
4729
+ "type": {
4730
+ "text": "PathStatus"
4731
+ }
4732
+ },
4733
+ {
4734
+ "name": "label",
4735
+ "type": {
4736
+ "text": "string"
4737
+ }
4738
+ },
4739
+ {
4740
+ "name": "styles",
4741
+ "optional": true,
4742
+ "type": {
4743
+ "text": "PathStyles"
4744
+ }
4745
+ }
4746
+ ]
4747
+ },
4748
+ {
4749
+ "kind": "method",
4750
+ "name": "findSourceAndTarget",
4751
+ "return": {
4752
+ "type": {
4753
+ "text": "[Component?, Component?]"
4754
+ }
4755
+ },
4756
+ "parameters": [
4757
+ {
4758
+ "name": "path",
4759
+ "type": {
4760
+ "text": "PATH"
4761
+ }
4762
+ }
4763
+ ]
4764
+ },
4765
+ {
4766
+ "kind": "field",
4767
+ "name": "monitoringTargets",
4768
+ "type": {
4769
+ "text": "Component[]"
4770
+ },
4771
+ "privacy": "private",
4772
+ "default": "[]"
4773
+ },
4774
+ {
4775
+ "kind": "method",
4776
+ "name": "clearMonitoringTargets",
4777
+ "privacy": "private"
4778
+ },
4779
+ {
4780
+ "kind": "method",
4781
+ "name": "addMonitoringTarget",
4782
+ "privacy": "private",
4783
+ "parameters": [
4784
+ {
4785
+ "name": "targets",
4786
+ "type": {
4787
+ "text": "Component[]"
4788
+ }
4702
4789
  }
4703
4790
  ]
4704
4791
  },
@@ -4800,6 +4887,12 @@
4800
4887
  "description": "",
4801
4888
  "name": "BulkCreateDialog",
4802
4889
  "members": [
4890
+ {
4891
+ "kind": "field",
4892
+ "name": "scopedElements",
4893
+ "static": true,
4894
+ "readonly": true
4895
+ },
4803
4896
  {
4804
4897
  "kind": "field",
4805
4898
  "name": "template",
@@ -4838,6 +4931,24 @@
4838
4931
  "text": "BulkCreateDialogProps['onCancel'] | undefined"
4839
4932
  }
4840
4933
  },
4934
+ {
4935
+ "kind": "field",
4936
+ "name": "hasParentObject",
4937
+ "type": {
4938
+ "text": "boolean"
4939
+ },
4940
+ "default": "false",
4941
+ "description": "parentObject 필드 노출 여부 (template 이 ParentObjectMixin 컴포넌트일 때)."
4942
+ },
4943
+ {
4944
+ "kind": "field",
4945
+ "name": "parentObjectItems",
4946
+ "type": {
4947
+ "text": "string[]"
4948
+ },
4949
+ "default": "[]",
4950
+ "description": "parentObject 후보 id 리스트 (template 타입 기준, toolbar 에서 계산해 주입)."
4951
+ },
4841
4952
  {
4842
4953
  "kind": "field",
4843
4954
  "name": "pattern",
@@ -4847,6 +4958,15 @@
4847
4958
  "privacy": "private",
4848
4959
  "default": "'grid'"
4849
4960
  },
4961
+ {
4962
+ "kind": "field",
4963
+ "name": "parentObjectId",
4964
+ "type": {
4965
+ "text": "string"
4966
+ },
4967
+ "privacy": "private",
4968
+ "default": "''"
4969
+ },
4850
4970
  {
4851
4971
  "kind": "field",
4852
4972
  "name": "count",
@@ -5012,6 +5132,12 @@
5012
5132
  "fieldName": "initialArea"
5013
5133
  }
5014
5134
  ],
5135
+ "mixins": [
5136
+ {
5137
+ "name": "ScopedElementsMixin",
5138
+ "package": "@open-wc/scoped-elements"
5139
+ }
5140
+ ],
5015
5141
  "superclass": {
5016
5142
  "name": "LitElement",
5017
5143
  "package": "lit"
@@ -7373,6 +7499,16 @@
7373
7499
  "static": true,
7374
7500
  "readonly": true
7375
7501
  },
7502
+ {
7503
+ "kind": "field",
7504
+ "name": "_visibleGroupList",
7505
+ "type": {
7506
+ "text": "ComponentGroup[]"
7507
+ },
7508
+ "privacy": "private",
7509
+ "description": "3D 비활성(전역 isThreedEnabled()=false)에서는 3D 전용 컴포넌트 타입\n(requires3d — decal/backdrop/floor-plate 등)을 팔레트에서 제외하고, 비게 된 그룹도 숨긴다.\n3D 활성(기본)이면 원본 목록 그대로.",
7510
+ "readonly": true
7511
+ },
7376
7512
  {
7377
7513
  "kind": "method",
7378
7514
  "name": "onWheelEvent",
@@ -9169,98 +9305,41 @@
9169
9305
  },
9170
9306
  {
9171
9307
  "kind": "javascript-module",
9172
- "path": "src/modeller/property-sidebar/inspector/inspector-controller.ts",
9308
+ "path": "src/modeller/property-sidebar/effects/effects-shared-style.ts",
9173
9309
  "declarations": [
9174
9310
  {
9175
- "kind": "class",
9176
- "description": "",
9177
- "name": "InspectorController",
9178
- "members": [
9179
- {
9180
- "kind": "field",
9181
- "name": "_scene",
9182
- "type": {
9183
- "text": "Scene | undefined"
9184
- },
9185
- "privacy": "private"
9186
- },
9187
- {
9188
- "kind": "field",
9189
- "name": "_extendedMap",
9190
- "privacy": "private",
9191
- "default": "new WeakMap<Component, boolean>()"
9192
- },
9193
- {
9194
- "kind": "field",
9195
- "name": "_expandedGroups",
9196
- "privacy": "private",
9197
- "default": "new Set<string>()",
9198
- "description": "타입 그룹 뷰의 펼침 상태 — 그룹 키(type)는 안정적이라 Set 으로 관리. 기본 전부 접힘."
9199
- },
9200
- {
9201
- "kind": "field",
9202
- "name": "_dimmedTypes",
9203
- "privacy": "private",
9204
- "default": "new Set<string>()",
9205
- "description": "모델링 포커스 dim 처리된 그룹(타입) 집합 — transient(비영속)."
9206
- },
9207
- {
9208
- "kind": "field",
9209
- "name": "_anchor",
9210
- "type": {
9211
- "text": "Component | undefined"
9212
- },
9213
- "privacy": "private",
9214
- "description": "shift+click 범위(볼륨) 선택의 기준점 — 마지막 단일/토글 클릭."
9215
- },
9216
- {
9217
- "kind": "field",
9218
- "name": "_index",
9219
- "type": {
9220
- "text": "InspectorIndex | undefined"
9221
- },
9222
- "privacy": "private"
9223
- },
9311
+ "kind": "variable",
9312
+ "name": "EffectsSharedStyle",
9313
+ "default": "css` :host { display: grid; grid-template-columns: repeat(10, 1fr); grid-gap: 5px; grid-auto-rows: minmax(24px, auto); align-items: center; } * { align-self: stretch; } label { grid-column: span 3; text-align: right; text-transform: capitalize; align-self: center; } input, select, ox-input-angle, ox-input-color, [custom-editor] { grid-column: span 7; } input, select, ox-input-angle input, ox-input-color input, [custom-editor] input { border: var(--property-sidebar-fieldset-border); } ox-input-data { height: 300px; } input[type='checkbox'] { grid-column: 4 / 5; align-self: center; } label.checkbox-label { grid-column: span 6; text-align: left; } [fullwidth] { grid-column: 1 / -1; } `"
9314
+ }
9315
+ ],
9316
+ "exports": [
9317
+ {
9318
+ "kind": "js",
9319
+ "name": "EffectsSharedStyle",
9320
+ "declaration": {
9321
+ "name": "EffectsSharedStyle",
9322
+ "module": "src/modeller/property-sidebar/effects/effects-shared-style.ts"
9323
+ }
9324
+ }
9325
+ ]
9326
+ },
9327
+ {
9328
+ "kind": "javascript-module",
9329
+ "path": "src/modeller/property-sidebar/effects/effects.ts",
9330
+ "declarations": [
9331
+ {
9332
+ "kind": "class",
9333
+ "description": "",
9334
+ "name": "PropertyEffects",
9335
+ "members": [
9224
9336
  {
9225
9337
  "kind": "field",
9226
- "name": "_onChange",
9338
+ "name": "value",
9227
9339
  "type": {
9228
- "text": "() => void | undefined"
9229
- },
9230
- "privacy": "private"
9231
- },
9232
- {
9233
- "kind": "method",
9234
- "name": "bind",
9235
- "return": {
9236
- "type": {
9237
- "text": "void"
9238
- }
9340
+ "text": "Properties | undefined"
9239
9341
  },
9240
- "parameters": [
9241
- {
9242
- "name": "scene",
9243
- "type": {
9244
- "text": "Scene | undefined"
9245
- }
9246
- },
9247
- {
9248
- "name": "onChange",
9249
- "type": {
9250
- "text": "() => void"
9251
- }
9252
- }
9253
- ],
9254
- "description": "scene 에 바인딩 — 이전 바인딩은 해제한다. onChange 는 재렌더 요청 콜백."
9255
- },
9256
- {
9257
- "kind": "method",
9258
- "name": "unbind",
9259
- "return": {
9260
- "type": {
9261
- "text": "void"
9262
- }
9263
- }
9342
+ "attribute": "value"
9264
9343
  },
9265
9344
  {
9266
9345
  "kind": "field",
@@ -9268,7 +9347,7 @@
9268
9347
  "type": {
9269
9348
  "text": "Scene | undefined"
9270
9349
  },
9271
- "readonly": true
9350
+ "attribute": "scene"
9272
9351
  },
9273
9352
  {
9274
9353
  "kind": "field",
@@ -9276,877 +9355,832 @@
9276
9355
  "type": {
9277
9356
  "text": "Component[]"
9278
9357
  },
9279
- "readonly": true
9358
+ "default": "[]",
9359
+ "attribute": "selected"
9280
9360
  },
9281
9361
  {
9282
9362
  "kind": "field",
9283
- "name": "index",
9284
- "type": {
9285
- "text": "InspectorIndex | undefined"
9286
- },
9287
- "description": "캐시된 모델 인덱스 — 없으면 build. execute/undo/redo 시 무효화.",
9363
+ "name": "scopedElements",
9364
+ "static": true,
9288
9365
  "readonly": true
9289
9366
  },
9290
- {
9291
- "kind": "field",
9292
- "name": "_invalidateAndRefresh",
9293
- "privacy": "private"
9294
- },
9295
- {
9296
- "kind": "field",
9297
- "name": "_refresh",
9298
- "privacy": "private",
9299
- "description": "선택된 컴포넌트의 조상을 펼치고 재렌더 요청."
9300
- },
9301
9367
  {
9302
9368
  "kind": "method",
9303
- "name": "isExtended",
9304
- "return": {
9305
- "type": {
9306
- "text": "boolean"
9307
- }
9308
- },
9369
+ "name": "_onShadow3dChange",
9370
+ "privacy": "private",
9309
9371
  "parameters": [
9310
9372
  {
9311
- "name": "component",
9373
+ "name": "key",
9312
9374
  "type": {
9313
- "text": "Component"
9375
+ "text": "'castShadow' | 'receiveShadow'"
9314
9376
  }
9315
- }
9316
- ]
9317
- },
9318
- {
9319
- "kind": "method",
9320
- "name": "toggleExtended",
9321
- "return": {
9322
- "type": {
9323
- "text": "void"
9324
- }
9325
- },
9326
- "parameters": [
9377
+ },
9327
9378
  {
9328
- "name": "component",
9379
+ "name": "e",
9329
9380
  "type": {
9330
- "text": "Component"
9381
+ "text": "Event"
9331
9382
  }
9332
9383
  }
9333
- ]
9384
+ ],
9385
+ "description": "3D 그림자 토글 — material3d.castShadow / receiveShadow 만 갱신.\n\nmaterial3d 는 단일 객체 속성이므로 기존 material3d 전체를 보존한 채 해당\n키만 덮어써 dispatch 한다 ({ castShadow } 만 보내면 set() 의 top-level shallow\nmerge 로 material3d 전체가 사라짐). value-key 를 두지 않아 AbstractProperty\n의 제너릭 change 핸들러는 이 입력을 무시한다."
9334
9386
  },
9335
9387
  {
9336
9388
  "kind": "method",
9337
- "name": "nodeHandleClass",
9338
- "return": {
9339
- "type": {
9340
- "text": "string"
9341
- }
9342
- },
9389
+ "name": "_onValueChange",
9343
9390
  "parameters": [
9344
9391
  {
9345
- "name": "component",
9392
+ "name": "e",
9346
9393
  "type": {
9347
- "text": "Component"
9394
+ "text": "Event"
9348
9395
  }
9349
9396
  }
9350
9397
  ],
9351
- "description": "트리 노드 핸들(펼침/접힘/공백) 클래스."
9398
+ "inheritedFrom": {
9399
+ "name": "AbstractProperty",
9400
+ "module": "src/modeller/property-sidebar/abstract-property.ts"
9401
+ }
9352
9402
  },
9353
9403
  {
9354
9404
  "kind": "method",
9355
- "name": "isGroupExpanded",
9356
- "return": {
9357
- "type": {
9358
- "text": "boolean"
9359
- }
9360
- },
9405
+ "name": "_getValueFromEventTarget",
9361
9406
  "parameters": [
9362
9407
  {
9363
- "name": "type",
9408
+ "name": "element",
9364
9409
  "type": {
9365
- "text": "string"
9410
+ "text": "HTMLElement"
9366
9411
  }
9367
9412
  }
9368
- ]
9413
+ ],
9414
+ "inheritedFrom": {
9415
+ "name": "AbstractProperty",
9416
+ "module": "src/modeller/property-sidebar/abstract-property.ts"
9417
+ }
9369
9418
  },
9370
9419
  {
9371
9420
  "kind": "method",
9372
- "name": "toggleGroup",
9373
- "return": {
9374
- "type": {
9375
- "text": "void"
9376
- }
9377
- },
9421
+ "name": "_onAfterValueChange",
9378
9422
  "parameters": [
9379
9423
  {
9380
- "name": "type",
9424
+ "name": "key",
9381
9425
  "type": {
9382
9426
  "text": "string"
9383
9427
  }
9384
- }
9385
- ]
9386
- },
9387
- {
9388
- "kind": "method",
9389
- "name": "collapseAllGroups",
9390
- "return": {
9391
- "type": {
9392
- "text": "void"
9393
- }
9394
- },
9395
- "description": "모든 그룹 접기 — \"그룹 레벨까지만 펼침\"(헤더만 표시)."
9396
- },
9397
- {
9398
- "kind": "method",
9399
- "name": "expandAllGroups",
9400
- "return": {
9401
- "type": {
9402
- "text": "void"
9403
- }
9404
- },
9405
- "parameters": [
9428
+ },
9406
9429
  {
9407
- "name": "types",
9430
+ "name": "value",
9408
9431
  "type": {
9409
- "text": "string[]"
9432
+ "text": "any"
9410
9433
  }
9411
9434
  }
9412
9435
  ],
9413
- "description": "모든 그룹 펼치기."
9414
- },
9436
+ "inheritedFrom": {
9437
+ "name": "AbstractProperty",
9438
+ "module": "src/modeller/property-sidebar/abstract-property.ts"
9439
+ }
9440
+ }
9441
+ ],
9442
+ "events": [
9415
9443
  {
9416
- "kind": "method",
9417
- "name": "isTypeDimmed",
9418
- "return": {
9419
- "type": {
9420
- "text": "boolean"
9421
- }
9444
+ "name": "property-change",
9445
+ "type": {
9446
+ "text": "CustomEvent"
9422
9447
  },
9423
- "parameters": [
9424
- {
9425
- "name": "type",
9426
- "type": {
9427
- "text": "string"
9428
- }
9429
- }
9430
- ]
9448
+ "inheritedFrom": {
9449
+ "name": "AbstractProperty",
9450
+ "module": "src/modeller/property-sidebar/abstract-property.ts"
9451
+ }
9452
+ }
9453
+ ],
9454
+ "attributes": [
9455
+ {
9456
+ "name": "value",
9457
+ "type": {
9458
+ "text": "Properties | undefined"
9459
+ },
9460
+ "fieldName": "value"
9431
9461
  },
9432
9462
  {
9433
- "kind": "method",
9434
- "name": "toggleTypeDim",
9435
- "return": {
9436
- "type": {
9437
- "text": "void"
9438
- }
9463
+ "name": "scene",
9464
+ "type": {
9465
+ "text": "Scene | undefined"
9439
9466
  },
9440
- "parameters": [
9441
- {
9442
- "name": "type",
9443
- "type": {
9444
- "text": "string"
9445
- }
9446
- }
9447
- ],
9448
- "description": "그룹(타입) dim-out 토글 → scene.focusFilter 재설정(편집 모드에서 캔버스 dim + pick 제외)."
9467
+ "fieldName": "scene"
9449
9468
  },
9450
9469
  {
9451
- "kind": "method",
9452
- "name": "_applyFocusFilter",
9453
- "privacy": "private",
9454
- "return": {
9455
- "type": {
9456
- "text": "void"
9457
- }
9470
+ "name": "selected",
9471
+ "type": {
9472
+ "text": "Component[]"
9473
+ },
9474
+ "default": "[]",
9475
+ "fieldName": "selected"
9476
+ }
9477
+ ],
9478
+ "mixins": [
9479
+ {
9480
+ "name": "ScopedElementsMixin",
9481
+ "package": "@open-wc/scoped-elements"
9482
+ }
9483
+ ],
9484
+ "superclass": {
9485
+ "name": "AbstractProperty",
9486
+ "module": "/src/modeller/property-sidebar/abstract-property.js"
9487
+ }
9488
+ }
9489
+ ],
9490
+ "exports": [
9491
+ {
9492
+ "kind": "js",
9493
+ "name": "PropertyEffects",
9494
+ "declaration": {
9495
+ "name": "PropertyEffects",
9496
+ "module": "src/modeller/property-sidebar/effects/effects.ts"
9497
+ }
9498
+ }
9499
+ ]
9500
+ },
9501
+ {
9502
+ "kind": "javascript-module",
9503
+ "path": "src/modeller/property-sidebar/effects/event-handler-adapter.ts",
9504
+ "declarations": [
9505
+ {
9506
+ "kind": "function",
9507
+ "name": "eventHandlersToLegacyTap",
9508
+ "return": {
9509
+ "type": {
9510
+ "text": "LegacyTap"
9511
+ }
9512
+ },
9513
+ "parameters": [
9514
+ {
9515
+ "name": "handlers",
9516
+ "type": {
9517
+ "text": "EventHandler[] | undefined"
9518
+ }
9519
+ }
9520
+ ],
9521
+ "description": "trigger 가 click/tap 인 첫 핸들러를 legacy tap 객체로 변환."
9522
+ },
9523
+ {
9524
+ "kind": "function",
9525
+ "name": "applyLegacyTapToHandlers",
9526
+ "return": {
9527
+ "type": {
9528
+ "text": "EventHandler[]"
9529
+ }
9530
+ },
9531
+ "parameters": [
9532
+ {
9533
+ "name": "handlers",
9534
+ "type": {
9535
+ "text": "EventHandler[] | undefined"
9458
9536
  }
9459
9537
  },
9460
9538
  {
9461
- "kind": "method",
9462
- "name": "isTypeHidden",
9463
- "return": {
9464
- "type": {
9465
- "text": "boolean"
9466
- }
9539
+ "name": "newTap",
9540
+ "type": {
9541
+ "text": "LegacyTap | undefined"
9542
+ }
9543
+ }
9544
+ ],
9545
+ "description": "기존 배열에서 click/tap 항목을 새 값으로 교체 (또는 push, 또는 제거).\n다른 trigger 항목은 그대로 보존."
9546
+ }
9547
+ ],
9548
+ "exports": [
9549
+ {
9550
+ "kind": "js",
9551
+ "name": "eventHandlersToLegacyTap",
9552
+ "declaration": {
9553
+ "name": "eventHandlersToLegacyTap",
9554
+ "module": "src/modeller/property-sidebar/effects/event-handler-adapter.ts"
9555
+ }
9556
+ },
9557
+ {
9558
+ "kind": "js",
9559
+ "name": "applyLegacyTapToHandlers",
9560
+ "declaration": {
9561
+ "name": "applyLegacyTapToHandlers",
9562
+ "module": "src/modeller/property-sidebar/effects/event-handler-adapter.ts"
9563
+ }
9564
+ }
9565
+ ]
9566
+ },
9567
+ {
9568
+ "kind": "javascript-module",
9569
+ "path": "src/modeller/property-sidebar/effects/property-event-hover.ts",
9570
+ "declarations": [
9571
+ {
9572
+ "kind": "class",
9573
+ "description": "",
9574
+ "name": "PropertyEventHover",
9575
+ "members": [
9576
+ {
9577
+ "kind": "field",
9578
+ "name": "value",
9579
+ "type": {
9580
+ "text": "Properties | undefined"
9467
9581
  },
9468
- "parameters": [
9469
- {
9470
- "name": "type",
9471
- "type": {
9472
- "text": "string"
9473
- }
9474
- }
9475
- ],
9476
- "description": "그룹 전원이 hidden 이면 true(집계). 멤버/트리 eye 규약과 동일한 아이콘 판정에 사용."
9582
+ "attribute": "value"
9477
9583
  },
9478
9584
  {
9479
- "kind": "method",
9480
- "name": "toggleTypeHidden",
9481
- "return": {
9482
- "type": {
9483
- "text": "void"
9484
- }
9585
+ "kind": "field",
9586
+ "name": "scene",
9587
+ "type": {
9588
+ "text": "Scene | undefined"
9485
9589
  },
9590
+ "attribute": "scene"
9591
+ },
9592
+ {
9593
+ "kind": "method",
9594
+ "name": "_getPlaceHoder",
9486
9595
  "parameters": [
9487
9596
  {
9488
- "name": "type",
9597
+ "name": "action",
9489
9598
  "type": {
9490
9599
  "text": "string"
9491
9600
  }
9492
9601
  }
9493
- ],
9494
- "description": "그룹(타입) hidden 토글 → 하나라도 보이면 전원 숨김, 전원 숨김이면 전원 표시."
9602
+ ]
9495
9603
  },
9496
9604
  {
9497
9605
  "kind": "method",
9498
- "name": "toggleHidden",
9606
+ "name": "_getTargetList",
9499
9607
  "return": {
9500
9608
  "type": {
9501
- "text": "void"
9609
+ "text": "{ value: string; description: string }[]"
9502
9610
  }
9503
9611
  },
9504
9612
  "parameters": [
9505
9613
  {
9506
- "name": "component",
9614
+ "name": "action",
9507
9615
  "type": {
9508
- "text": "Component"
9616
+ "text": "string"
9509
9617
  }
9510
9618
  }
9511
- ],
9512
- "description": "개별 컴포넌트 hidden(영구 모델 속성) 토글 — 기존 eye 동작."
9619
+ ]
9513
9620
  },
9514
9621
  {
9515
9622
  "kind": "method",
9516
- "name": "toggleLocked",
9517
- "return": {
9518
- "type": {
9519
- "text": "void"
9520
- }
9521
- },
9623
+ "name": "_onValueChange",
9522
9624
  "parameters": [
9523
9625
  {
9524
- "name": "component",
9626
+ "name": "e",
9525
9627
  "type": {
9526
- "text": "Component"
9628
+ "text": "Event"
9527
9629
  }
9528
9630
  }
9529
- ],
9530
- "description": "개별 컴포넌트 locked(영구 모델 속성) 토글."
9631
+ ]
9632
+ }
9633
+ ],
9634
+ "events": [
9635
+ {
9636
+ "name": "change",
9637
+ "type": {
9638
+ "text": "CustomEvent"
9639
+ }
9640
+ }
9641
+ ],
9642
+ "attributes": [
9643
+ {
9644
+ "name": "value",
9645
+ "type": {
9646
+ "text": "Properties | undefined"
9647
+ },
9648
+ "fieldName": "value"
9531
9649
  },
9532
9650
  {
9533
- "kind": "method",
9534
- "name": "centerTo",
9535
- "return": {
9536
- "type": {
9537
- "text": "void"
9538
- }
9651
+ "name": "scene",
9652
+ "type": {
9653
+ "text": "Scene | undefined"
9539
9654
  },
9540
- "parameters": [
9541
- {
9542
- "name": "component",
9543
- "type": {
9544
- "text": "Component"
9545
- }
9546
- }
9547
- ],
9548
- "description": "캔버스를 해당 컴포넌트로 센터 이동."
9655
+ "fieldName": "scene"
9656
+ }
9657
+ ],
9658
+ "superclass": {
9659
+ "name": "LitElement",
9660
+ "package": "lit"
9661
+ },
9662
+ "customElement": true
9663
+ }
9664
+ ],
9665
+ "exports": [
9666
+ {
9667
+ "kind": "js",
9668
+ "name": "PropertyEventHover",
9669
+ "declaration": {
9670
+ "name": "PropertyEventHover",
9671
+ "module": "src/modeller/property-sidebar/effects/property-event-hover.ts"
9672
+ }
9673
+ }
9674
+ ]
9675
+ },
9676
+ {
9677
+ "kind": "javascript-module",
9678
+ "path": "src/modeller/property-sidebar/effects/property-event-tap.ts",
9679
+ "declarations": [
9680
+ {
9681
+ "kind": "class",
9682
+ "description": "",
9683
+ "name": "PropertyEventTap",
9684
+ "members": [
9685
+ {
9686
+ "kind": "field",
9687
+ "name": "value",
9688
+ "type": {
9689
+ "text": "Properties | undefined"
9690
+ },
9691
+ "attribute": "value"
9549
9692
  },
9550
9693
  {
9551
- "kind": "method",
9552
- "name": "select",
9553
- "return": {
9554
- "type": {
9555
- "text": "void"
9556
- }
9694
+ "kind": "field",
9695
+ "name": "scene",
9696
+ "type": {
9697
+ "text": "Scene | undefined"
9557
9698
  },
9558
- "parameters": [
9559
- {
9560
- "name": "component",
9561
- "type": {
9562
- "text": "Component"
9563
- }
9564
- },
9565
- {
9566
- "name": "append",
9567
- "default": "false"
9568
- }
9569
- ],
9570
- "description": "선택 — append(ctrl/cmd) 시 토글식 다중 선택. anchor 를 갱신한다."
9699
+ "attribute": "scene"
9571
9700
  },
9572
9701
  {
9573
- "kind": "method",
9574
- "name": "selectRange",
9575
- "return": {
9576
- "type": {
9577
- "text": "void"
9578
- }
9702
+ "kind": "field",
9703
+ "name": "targetList",
9704
+ "type": {
9705
+ "text": "{ value: string; description: string }[]"
9579
9706
  },
9580
- "parameters": [
9581
- {
9582
- "name": "target",
9583
- "type": {
9584
- "text": "Component"
9585
- }
9586
- },
9587
- {
9588
- "name": "terms",
9589
- "type": {
9590
- "text": "SearchTerm[]"
9591
- }
9592
- }
9593
- ],
9594
- "description": "shift+click 범위(볼륨) 선택 — anchor↔target 사이의 **보이는 트리 행**을 블록 선택한다.\ntarget 이 이미 선택돼 있으면 그 범위를 블록 **해제**(additive/subtractive). anchor 는 유지."
9707
+ "default": "[]"
9595
9708
  },
9596
9709
  {
9597
9710
  "kind": "method",
9598
- "name": "_decorate",
9599
- "privacy": "private",
9600
- "return": {
9601
- "type": {
9602
- "text": "void"
9603
- }
9604
- },
9711
+ "name": "_getPlaceHoder",
9605
9712
  "parameters": [
9606
9713
  {
9607
- "name": "component",
9714
+ "name": "action",
9608
9715
  "type": {
9609
- "text": "Component"
9716
+ "text": "string"
9610
9717
  }
9611
9718
  }
9612
- ],
9613
- "description": "fmsim 선택 강조 — deco-border (operato 는 reaction)."
9719
+ ]
9614
9720
  },
9615
9721
  {
9616
9722
  "kind": "method",
9617
- "name": "_visibleOrder",
9618
- "privacy": "private",
9619
- "return": {
9620
- "type": {
9621
- "text": "Component[]"
9622
- }
9623
- },
9723
+ "name": "_onValueChange",
9624
9724
  "parameters": [
9625
9725
  {
9626
- "name": "terms",
9726
+ "name": "e",
9627
9727
  "type": {
9628
- "text": "SearchTerm[]"
9728
+ "text": "Event"
9629
9729
  }
9630
9730
  }
9631
- ],
9632
- "description": "현재 트리 뷰에 보이는 컴포넌트를 렌더 순서대로 반환 — 범위 선택의 기준.\nrenderNode 와 동일 규칙(shouldBeShown = 자신/자손 매치, isExtended 자식만 전개)."
9731
+ ]
9633
9732
  }
9634
- ]
9635
- }
9636
- ],
9637
- "exports": [
9638
- {
9639
- "kind": "js",
9640
- "name": "InspectorController",
9641
- "declaration": {
9642
- "name": "InspectorController",
9643
- "module": "src/modeller/property-sidebar/inspector/inspector-controller.ts"
9644
- }
9645
- }
9646
- ]
9647
- },
9648
- {
9649
- "kind": "javascript-module",
9650
- "path": "src/modeller/property-sidebar/inspector/inspector-group-view.ts",
9651
- "declarations": [
9652
- {
9653
- "kind": "function",
9654
- "name": "renderInspectorGroupView",
9655
- "return": {
9656
- "type": {
9657
- "text": "TemplateResult"
9733
+ ],
9734
+ "events": [
9735
+ {
9736
+ "name": "change",
9737
+ "type": {
9738
+ "text": "CustomEvent"
9739
+ }
9658
9740
  }
9659
- },
9660
- "parameters": [
9741
+ ],
9742
+ "attributes": [
9661
9743
  {
9662
- "name": "index",
9744
+ "name": "value",
9663
9745
  "type": {
9664
- "text": "InspectorIndex | undefined"
9665
- }
9746
+ "text": "Properties | undefined"
9747
+ },
9748
+ "fieldName": "value"
9666
9749
  },
9667
9750
  {
9668
- "name": "ctx",
9751
+ "name": "scene",
9669
9752
  "type": {
9670
- "text": "GroupViewContext"
9671
- }
9753
+ "text": "Scene | undefined"
9754
+ },
9755
+ "fieldName": "scene"
9672
9756
  }
9673
9757
  ],
9674
- "description": "타입 그룹 뷰 전체 렌더 — 타입명 오름차순."
9758
+ "superclass": {
9759
+ "name": "LitElement",
9760
+ "package": "lit"
9761
+ },
9762
+ "customElement": true
9675
9763
  }
9676
9764
  ],
9677
9765
  "exports": [
9678
9766
  {
9679
9767
  "kind": "js",
9680
- "name": "renderInspectorGroupView",
9768
+ "name": "PropertyEventTap",
9681
9769
  "declaration": {
9682
- "name": "renderInspectorGroupView",
9683
- "module": "src/modeller/property-sidebar/inspector/inspector-group-view.ts"
9770
+ "name": "PropertyEventTap",
9771
+ "module": "src/modeller/property-sidebar/effects/property-event-tap.ts"
9684
9772
  }
9685
9773
  }
9686
9774
  ]
9687
9775
  },
9688
9776
  {
9689
9777
  "kind": "javascript-module",
9690
- "path": "src/modeller/property-sidebar/inspector/inspector-highlight.ts",
9778
+ "path": "src/modeller/property-sidebar/effects/property-event.ts",
9691
9779
  "declarations": [
9692
9780
  {
9693
- "kind": "function",
9694
- "name": "highlight",
9695
- "return": {
9696
- "type": {
9697
- "text": "TemplateResult | string"
9781
+ "kind": "class",
9782
+ "description": "things-scene v10 의 신규 모델 (`state.eventHandlers: EventHandler[]`) 위에서\n기존 단일-tap UI 를 그대로 동작시키는 어댑터.\n\nread : eventHandlers 배열에서 trigger='click'/'tap' 인 첫 항목 → legacy tap\n 객체로 변환 후 PropertyEventTap 에 전달.\nwrite: PropertyEventTap 이 emit 한 legacy tap 변경 → click 항목을 update/push\n 한 새 배열로 외부에 emit. 다른 trigger 의 핸들러는 보존.",
9783
+ "name": "PropertyEvent",
9784
+ "members": [
9785
+ {
9786
+ "kind": "field",
9787
+ "name": "value",
9788
+ "type": {
9789
+ "text": "EventHandler[] | undefined"
9790
+ },
9791
+ "attribute": "value"
9792
+ },
9793
+ {
9794
+ "kind": "field",
9795
+ "name": "scene",
9796
+ "type": {
9797
+ "text": "Scene | undefined"
9798
+ },
9799
+ "attribute": "scene"
9800
+ },
9801
+ {
9802
+ "kind": "field",
9803
+ "name": "scopedElements",
9804
+ "static": true,
9805
+ "readonly": true
9806
+ },
9807
+ {
9808
+ "kind": "method",
9809
+ "name": "_onValueChange",
9810
+ "parameters": [
9811
+ {
9812
+ "name": "e",
9813
+ "type": {
9814
+ "text": "Event"
9815
+ }
9816
+ }
9817
+ ]
9698
9818
  }
9699
- },
9700
- "parameters": [
9819
+ ],
9820
+ "events": [
9701
9821
  {
9702
- "name": "text",
9822
+ "name": "change",
9703
9823
  "type": {
9704
- "text": "string | undefined"
9824
+ "text": "CustomEvent"
9705
9825
  }
9826
+ }
9827
+ ],
9828
+ "attributes": [
9829
+ {
9830
+ "name": "value",
9831
+ "type": {
9832
+ "text": "EventHandler[] | undefined"
9833
+ },
9834
+ "fieldName": "value"
9706
9835
  },
9707
9836
  {
9708
- "name": "terms",
9837
+ "name": "scene",
9709
9838
  "type": {
9710
- "text": "SearchTerm[]"
9711
- }
9839
+ "text": "Scene | undefined"
9840
+ },
9841
+ "fieldName": "scene"
9712
9842
  }
9713
9843
  ],
9714
- "description": "text 안에서 terms 의 값(field 무관, 시각 표시용)에 일치하는 부분을 하이라이트.\n매치가 없거나 terms 가 비면 원본 문자열을 그대로 반환."
9844
+ "mixins": [
9845
+ {
9846
+ "name": "ScopedElementsMixin",
9847
+ "package": "@open-wc/scoped-elements"
9848
+ }
9849
+ ],
9850
+ "superclass": {
9851
+ "name": "LitElement",
9852
+ "package": "lit"
9853
+ },
9854
+ "customElement": true
9715
9855
  }
9716
9856
  ],
9717
9857
  "exports": [
9718
9858
  {
9719
9859
  "kind": "js",
9720
- "name": "highlight",
9860
+ "name": "PropertyEvent",
9721
9861
  "declaration": {
9722
- "name": "highlight",
9723
- "module": "src/modeller/property-sidebar/inspector/inspector-highlight.ts"
9862
+ "name": "PropertyEvent",
9863
+ "module": "src/modeller/property-sidebar/effects/property-event.ts"
9724
9864
  }
9725
9865
  }
9726
9866
  ]
9727
9867
  },
9728
9868
  {
9729
9869
  "kind": "javascript-module",
9730
- "path": "src/modeller/property-sidebar/inspector/inspector-model.ts",
9870
+ "path": "src/modeller/property-sidebar/effects/property-shadow.ts",
9731
9871
  "declarations": [
9732
9872
  {
9733
- "kind": "function",
9734
- "name": "buildInspectorIndex",
9735
- "return": {
9736
- "type": {
9737
- "text": "InspectorIndex"
9738
- }
9739
- },
9740
- "parameters": [
9873
+ "kind": "class",
9874
+ "description": "컴포넌트의 그림자 속성을 편집하는 element\n\nExample:\n <property-shadow",
9875
+ "name": "PropertyShadow",
9876
+ "members": [
9741
9877
  {
9742
- "name": "root",
9878
+ "kind": "field",
9879
+ "name": "value",
9743
9880
  "type": {
9744
- "text": "Component"
9745
- }
9881
+ "text": "Properties | undefined"
9882
+ },
9883
+ "attribute": "value"
9884
+ },
9885
+ {
9886
+ "kind": "method",
9887
+ "name": "_onValueChange",
9888
+ "parameters": [
9889
+ {
9890
+ "name": "e",
9891
+ "type": {
9892
+ "text": "Event"
9893
+ }
9894
+ }
9895
+ ]
9746
9896
  }
9747
9897
  ],
9748
- "description": "scene root 를 순회해 flat 목록 + 타입 그룹 맵을 만든다. root 자신은 제외."
9749
- },
9750
- {
9751
- "kind": "function",
9752
- "name": "parseQuery",
9753
- "return": {
9754
- "type": {
9755
- "text": "SearchTerm[]"
9756
- }
9757
- },
9758
- "parameters": [
9898
+ "events": [
9759
9899
  {
9760
- "name": "raw",
9900
+ "name": "change",
9761
9901
  "type": {
9762
- "text": "string"
9902
+ "text": "CustomEvent"
9763
9903
  }
9764
9904
  }
9765
9905
  ],
9766
- "description": "검색 문자열을 공백 토큰화해 SearchTerm[] 로 파싱. `field:value` 는 필드 스코프. 소문자화."
9767
- },
9768
- {
9769
- "kind": "function",
9770
- "name": "matchesQuery",
9771
- "return": {
9772
- "type": {
9773
- "text": "boolean"
9774
- }
9775
- },
9776
- "parameters": [
9777
- {
9778
- "name": "component",
9779
- "type": {
9780
- "text": "Component"
9781
- }
9782
- },
9906
+ "attributes": [
9783
9907
  {
9784
- "name": "terms",
9908
+ "name": "value",
9785
9909
  "type": {
9786
- "text": "SearchTerm[]"
9787
- }
9910
+ "text": "Properties | undefined"
9911
+ },
9912
+ "fieldName": "value"
9788
9913
  }
9789
9914
  ],
9790
- "description": "파싱된 검색어(AND)로 컴포넌트 매치 판정.\n- field 지정 term → 해당 필드 부분일치\n- bare term → type/name/id/tag/class 통합 부분일치\n빈 terms 는 항상 매치."
9915
+ "superclass": {
9916
+ "name": "LitElement",
9917
+ "package": "lit"
9918
+ },
9919
+ "customElement": true
9791
9920
  }
9792
9921
  ],
9793
9922
  "exports": [
9794
9923
  {
9795
9924
  "kind": "js",
9796
- "name": "buildInspectorIndex",
9797
- "declaration": {
9798
- "name": "buildInspectorIndex",
9799
- "module": "src/modeller/property-sidebar/inspector/inspector-model.ts"
9800
- }
9801
- },
9802
- {
9803
- "kind": "js",
9804
- "name": "parseQuery",
9805
- "declaration": {
9806
- "name": "parseQuery",
9807
- "module": "src/modeller/property-sidebar/inspector/inspector-model.ts"
9808
- }
9809
- },
9810
- {
9811
- "kind": "js",
9812
- "name": "matchesQuery",
9925
+ "name": "PropertyShadow",
9813
9926
  "declaration": {
9814
- "name": "matchesQuery",
9815
- "module": "src/modeller/property-sidebar/inspector/inspector-model.ts"
9927
+ "name": "PropertyShadow",
9928
+ "module": "src/modeller/property-sidebar/effects/property-shadow.ts"
9816
9929
  }
9817
9930
  }
9818
9931
  ]
9819
9932
  },
9820
9933
  {
9821
9934
  "kind": "javascript-module",
9822
- "path": "src/modeller/property-sidebar/inspector/inspector-tree-view.ts",
9935
+ "path": "src/modeller/property-sidebar/effects/value-converter.ts",
9823
9936
  "declarations": [
9824
9937
  {
9825
9938
  "kind": "function",
9826
- "name": "countMatches",
9827
- "return": {
9828
- "type": {
9829
- "text": "number"
9830
- }
9831
- },
9832
- "parameters": [
9833
- {
9834
- "name": "component",
9835
- "type": {
9836
- "text": "Component"
9837
- }
9838
- },
9839
- {
9840
- "name": "terms",
9841
- "type": {
9842
- "text": "SearchTerm[]"
9843
- }
9844
- }
9845
- ],
9846
- "description": "검색 매치 개수(루트 포함, 전체 트리) — ROOT 노드 count 표시용."
9847
- },
9848
- {
9849
- "kind": "function",
9850
- "name": "renderInspectorTree",
9851
- "return": {
9852
- "type": {
9853
- "text": "TemplateResult"
9854
- }
9855
- },
9939
+ "name": "convert",
9856
9940
  "parameters": [
9857
9941
  {
9858
- "name": "root",
9859
- "type": {
9860
- "text": "Component | undefined"
9861
- }
9862
- },
9863
- {
9864
- "name": "ctx",
9942
+ "name": "element",
9865
9943
  "type": {
9866
- "text": "TreeViewContext"
9944
+ "text": "any"
9867
9945
  }
9868
9946
  }
9869
- ],
9870
- "description": "scene.root 부터 트리를 렌더한다."
9947
+ ]
9871
9948
  }
9872
9949
  ],
9873
9950
  "exports": [
9874
9951
  {
9875
9952
  "kind": "js",
9876
- "name": "countMatches",
9953
+ "name": "convert",
9877
9954
  "declaration": {
9878
- "name": "countMatches",
9879
- "module": "src/modeller/property-sidebar/inspector/inspector-tree-view.ts"
9955
+ "name": "convert",
9956
+ "module": "src/modeller/property-sidebar/effects/value-converter.ts"
9880
9957
  }
9881
- },
9958
+ }
9959
+ ]
9960
+ },
9961
+ {
9962
+ "kind": "javascript-module",
9963
+ "path": "src/modeller/property-sidebar/shapes/box-padding-editor-styles.ts",
9964
+ "declarations": [
9965
+ {
9966
+ "kind": "variable",
9967
+ "name": "BoxPaddingEditorStyles",
9968
+ "default": "css` .box-padding { width: 100%; } .box-padding td { background: var(--url-icon-properties-padding) 50% 0 no-repeat; } .box-padding tr:nth-child(1), .box-padding tr:nth-child(3) { height: 20px; } .box-padding tr td:nth-child(1), .box-padding tr td:nth-child(3) { width: 18px; } .box-padding .slide1 { background-position: 0 0; } .box-padding .slide2 { background-position: 50% -40px; background-color: rgba(69, 46, 41, 0.2); } .box-padding .slide3 { background-position: 100% -440px; } .box-padding .slide4 { background-position: 0 -360px; background-color: rgba(69, 46, 41, 0.2); } .box-padding .slide5 { background: none; text-align: center; } .box-padding .slide6 { background-position: 100% -160px; background-color: rgba(69, 46, 41, 0.2); } .box-padding .slide7 { background-position: 0 100%; } .box-padding .slide8 { background-position: 50% -320px; background-color: rgba(69, 46, 41, 0.2); } .box-padding .slide9 { background-position: 0 0px; } .box-padding input { background-color: transparent; width: 35px; margin: 0px; padding: 0px; clear: both; float: initial; border: 1px solid #fff; border-width: 0 0 1px 0; text-align: right; font-size: 14px; } .slide5 input:nth-child(1), .slide5 input:nth-child(4) { display: block; margin: auto; } .slide5 input:nth-child(2) { float: left; } .slide5 input:nth-child(3) { float: right; margin-top: -25px; } .slide5 input:nth-child(4) { margin-top: -5px; } `"
9969
+ }
9970
+ ],
9971
+ "exports": [
9882
9972
  {
9883
9973
  "kind": "js",
9884
- "name": "renderInspectorTree",
9974
+ "name": "BoxPaddingEditorStyles",
9885
9975
  "declaration": {
9886
- "name": "renderInspectorTree",
9887
- "module": "src/modeller/property-sidebar/inspector/inspector-tree-view.ts"
9976
+ "name": "BoxPaddingEditorStyles",
9977
+ "module": "src/modeller/property-sidebar/shapes/box-padding-editor-styles.ts"
9888
9978
  }
9889
9979
  }
9890
9980
  ]
9891
9981
  },
9892
9982
  {
9893
9983
  "kind": "javascript-module",
9894
- "path": "src/modeller/property-sidebar/inspector/inspector.ts",
9984
+ "path": "src/modeller/property-sidebar/shapes/ox-input-entity-id.ts",
9895
9985
  "declarations": [
9896
9986
  {
9897
9987
  "kind": "class",
9898
- "description": "",
9899
- "name": "SceneInspector",
9988
+ "description": "컴포넌트 ID 입력기 — 자유 입력 + 타입별 백엔드(MCS) 검색 선택을 함께 제공.\n\n- 기존처럼 자유롭게 텍스트로 ID 를 입력할 수 있다 (commit = blur/Enter).\n- input 에 *포커스가 가면* 아래로 검색 드롭다운이 펼쳐진다. `entityType`\n (컴포넌트 타입) 으로 MCS 에 정의된 ID 후보를 조회한다.\n - machine 타입 → 머신 id 가 1레벨 평면으로 (선택 가능)\n - unit 타입 → machine 이 그룹 헤더, 그 아래 unit id 가 자식 (선택 가능).\n 컴포넌트가 부모 machine 을 알면(`machine` prop) 그 머신으로 좁혀 조회.\n\nvalue-key=\"id\" 와 함께 property-grid 안에 두면, 이 host 가 `change`(bubbles+\ncomposed) 를 발행하므로 AbstractProperty 제너릭 핸들러가 `element.value` 를\n읽어 property-change 로 전파한다.\n\n등록: 패널 자식 커스텀 엘리먼트 컨벤션에 따라 전역 `@customElement` 가 아니라\n부모 패널(PropertyShapes)의 `scopedElements` 로 등록한다 (@open-wc/scoped-elements).",
9989
+ "name": "OxInputEntityId",
9900
9990
  "members": [
9901
9991
  {
9902
9992
  "kind": "field",
9903
- "name": "scene",
9993
+ "name": "value",
9904
9994
  "type": {
9905
- "text": "Scene | undefined"
9995
+ "text": "string"
9906
9996
  },
9907
- "attribute": "scene"
9997
+ "default": "''",
9998
+ "description": "현재 ID 값.",
9999
+ "attribute": "value"
9908
10000
  },
9909
10001
  {
9910
10002
  "kind": "field",
9911
- "name": "searchText",
10003
+ "name": "entityType",
9912
10004
  "type": {
9913
10005
  "text": "string"
9914
10006
  },
9915
- "privacy": "private",
9916
- "default": "''"
10007
+ "default": "''",
10008
+ "description": "검색 조건 — 선택된 컴포넌트 타입 (예: 'STOCKER', 'AGV', 'Port').",
10009
+ "attribute": "entityType"
9917
10010
  },
9918
10011
  {
9919
10012
  "kind": "field",
9920
- "name": "viewMode",
10013
+ "name": "machine",
9921
10014
  "type": {
9922
- "text": "InspectorViewMode"
10015
+ "text": "string"
9923
10016
  },
9924
- "privacy": "private"
10017
+ "default": "''",
10018
+ "description": "검색 조건 — 부모 machine id (unit 컴포넌트가 소속 machine 을 알 때).",
10019
+ "attribute": "machine"
9925
10020
  },
9926
10021
  {
9927
10022
  "kind": "field",
9928
- "name": "controller",
9929
- "privacy": "private",
9930
- "default": "new InspectorController()"
10023
+ "name": "requireMachine",
10024
+ "type": {
10025
+ "text": "boolean"
10026
+ },
10027
+ "default": "false",
10028
+ "description": "machine 필수 타입(예: Port) — machine 없으면 조회하지 않는다 (후보 과다 방지).",
10029
+ "attribute": "requireMachine"
9931
10030
  },
9932
10031
  {
9933
10032
  "kind": "field",
9934
- "name": "show",
10033
+ "name": "localItems",
9935
10034
  "type": {
9936
- "text": "boolean"
10035
+ "text": "string[] | null"
9937
10036
  },
9938
- "privacy": "private",
9939
- "default": "false"
10037
+ "default": "null",
10038
+ "description": "백엔드 조회 대신 사용할 로컬 후보 리스트 (예: parentObject — 씬의 머신들). null 이면 백엔드 조회.",
10039
+ "attribute": "localItems"
9940
10040
  },
9941
10041
  {
9942
10042
  "kind": "field",
9943
- "name": "_lastSelected",
10043
+ "name": "placeholder",
9944
10044
  "type": {
9945
- "text": "Component[]"
10045
+ "text": "string"
9946
10046
  },
9947
- "privacy": "private",
9948
- "default": "[]",
9949
- "description": "reveal(스크롤) 판정용 직전 선택."
10047
+ "default": "''",
10048
+ "attribute": "placeholder"
9950
10049
  },
9951
10050
  {
9952
- "kind": "method",
9953
- "name": "_renderResult",
10051
+ "kind": "field",
10052
+ "name": "_open",
10053
+ "type": {
10054
+ "text": "boolean"
10055
+ },
9954
10056
  "privacy": "private",
9955
- "return": {
9956
- "type": {
9957
- "text": "TemplateResult"
9958
- }
9959
- }
10057
+ "default": "false"
9960
10058
  },
9961
10059
  {
9962
- "kind": "method",
9963
- "name": "_setViewMode",
10060
+ "kind": "field",
10061
+ "name": "_all",
10062
+ "type": {
10063
+ "text": "string[]"
10064
+ },
9964
10065
  "privacy": "private",
9965
- "parameters": [
9966
- {
9967
- "name": "mode",
9968
- "type": {
9969
- "text": "InspectorViewMode"
9970
- }
9971
- }
9972
- ]
10066
+ "default": "[]",
10067
+ "description": "서버에서 받은 전체 후보 리스트 (포커스 시 1회 조회, 키워드 미적용)."
9973
10068
  },
9974
10069
  {
9975
10070
  "kind": "field",
9976
- "name": "_collapseGroups",
9977
- "privacy": "private"
10071
+ "name": "_loading",
10072
+ "type": {
10073
+ "text": "boolean"
10074
+ },
10075
+ "privacy": "private",
10076
+ "default": "false"
9978
10077
  },
9979
10078
  {
9980
10079
  "kind": "field",
9981
- "name": "_expandGroups",
9982
- "privacy": "private"
9983
- },
9984
- {
9985
- "kind": "method",
9986
- "name": "refresh",
9987
- "description": "외부에서 강제 재렌더용."
9988
- },
9989
- {
9990
- "kind": "method",
9991
- "name": "_maybeReveal",
10080
+ "name": "_needMachine",
10081
+ "type": {
10082
+ "text": "boolean"
10083
+ },
9992
10084
  "privacy": "private",
9993
- "description": "선택이 바뀌면(캔버스 등) 해당 항목을 리스트에 노출한다 — 그룹 뷰면 그룹을 펼친 뒤 스크롤.\nscrollIntoView({block:'nearest'}) 라 이미 보이는 경우(인스펙터 클릭 등)엔 사실상 no-op."
10085
+ "default": "false",
10086
+ "description": "machine 필수인데 machine 미지정이라 조회를 보류한 상태."
9994
10087
  },
9995
10088
  {
9996
- "kind": "method",
9997
- "name": "_resolveComponent",
9998
- "privacy": "private",
9999
- "return": {
10000
- "type": {
10001
- "text": "Component | undefined"
10002
- }
10089
+ "kind": "field",
10090
+ "name": "_activeIndex",
10091
+ "type": {
10092
+ "text": "number"
10003
10093
  },
10004
- "parameters": [
10005
- {
10006
- "name": "e",
10007
- "type": {
10008
- "text": "MouseEvent"
10009
- }
10010
- }
10011
- ],
10012
- "description": "이벤트 타겟에서 상위로 올라가며 `.component` 를 가진 요소를 찾는다."
10013
- },
10014
- {
10015
- "kind": "method",
10016
- "name": "_onclick",
10017
- "parameters": [
10018
- {
10019
- "name": "e",
10020
- "type": {
10021
- "text": "MouseEvent"
10022
- }
10023
- }
10024
- ]
10094
+ "privacy": "private",
10095
+ "default": "-1",
10096
+ "description": "선택 가능 항목 기준 active index."
10025
10097
  },
10026
10098
  {
10027
- "kind": "method",
10028
- "name": "_ondblclick",
10029
- "parameters": [
10030
- {
10031
- "name": "e",
10032
- "type": {
10033
- "text": "MouseEvent"
10034
- }
10035
- }
10036
- ]
10037
- }
10038
- ],
10039
- "attributes": [
10040
- {
10041
- "name": "scene",
10099
+ "kind": "field",
10100
+ "name": "_input",
10042
10101
  "type": {
10043
- "text": "Scene | undefined"
10102
+ "text": "HTMLInputElement"
10044
10103
  },
10045
- "fieldName": "scene"
10046
- }
10047
- ],
10048
- "superclass": {
10049
- "name": "LitElement",
10050
- "package": "lit"
10051
- },
10052
- "customElement": true
10053
- }
10054
- ],
10055
- "exports": [
10056
- {
10057
- "kind": "js",
10058
- "name": "SceneInspector",
10059
- "declaration": {
10060
- "name": "SceneInspector",
10061
- "module": "src/modeller/property-sidebar/inspector/inspector.ts"
10062
- }
10063
- }
10064
- ]
10065
- },
10066
- {
10067
- "kind": "javascript-module",
10068
- "path": "src/modeller/property-sidebar/effects/effects-shared-style.ts",
10069
- "declarations": [
10070
- {
10071
- "kind": "variable",
10072
- "name": "EffectsSharedStyle",
10073
- "default": "css` :host { display: grid; grid-template-columns: repeat(10, 1fr); grid-gap: 5px; grid-auto-rows: minmax(24px, auto); align-items: center; } * { align-self: stretch; } label { grid-column: span 3; text-align: right; text-transform: capitalize; align-self: center; } input, select, ox-input-angle, ox-input-color, [custom-editor] { grid-column: span 7; } input, select, ox-input-angle input, ox-input-color input, [custom-editor] input { border: var(--property-sidebar-fieldset-border); } ox-input-data { height: 300px; } input[type='checkbox'] { grid-column: 4 / 5; align-self: center; } label.checkbox-label { grid-column: span 6; text-align: left; } [fullwidth] { grid-column: 1 / -1; } `"
10074
- }
10075
- ],
10076
- "exports": [
10077
- {
10078
- "kind": "js",
10079
- "name": "EffectsSharedStyle",
10080
- "declaration": {
10081
- "name": "EffectsSharedStyle",
10082
- "module": "src/modeller/property-sidebar/effects/effects-shared-style.ts"
10083
- }
10084
- }
10085
- ]
10086
- },
10087
- {
10088
- "kind": "javascript-module",
10089
- "path": "src/modeller/property-sidebar/effects/effects.ts",
10090
- "declarations": [
10091
- {
10092
- "kind": "class",
10093
- "description": "",
10094
- "name": "PropertyEffects",
10095
- "members": [
10104
+ "privacy": "private"
10105
+ },
10106
+ {
10107
+ "kind": "field",
10108
+ "name": "_blurTimer",
10109
+ "type": {
10110
+ "text": "ReturnType<typeof setTimeout> | undefined"
10111
+ },
10112
+ "privacy": "private"
10113
+ },
10096
10114
  {
10097
10115
  "kind": "field",
10098
- "name": "value",
10116
+ "name": "_loadSeq",
10099
10117
  "type": {
10100
- "text": "Properties | undefined"
10118
+ "text": "number"
10101
10119
  },
10102
- "attribute": "value"
10120
+ "privacy": "private",
10121
+ "default": "0"
10103
10122
  },
10104
10123
  {
10105
10124
  "kind": "field",
10106
- "name": "scene",
10125
+ "name": "_lastEmitted",
10107
10126
  "type": {
10108
- "text": "Scene | undefined"
10127
+ "text": "string | undefined"
10109
10128
  },
10110
- "attribute": "scene"
10129
+ "privacy": "private",
10130
+ "description": "마지막으로 발행한 값 — 같은 값 재발행(undo 중복) 방지."
10111
10131
  },
10112
10132
  {
10113
10133
  "kind": "field",
10114
- "name": "selected",
10134
+ "name": "_items",
10115
10135
  "type": {
10116
- "text": "Component[]"
10136
+ "text": "string[]"
10117
10137
  },
10118
- "default": "[]",
10119
- "attribute": "selected"
10138
+ "privacy": "private",
10139
+ "description": "드롭다운 표시 항목 — 입력값(초기값 포함)으로 풀텍스트 로컬 필터.\n단, 매치가 0이면 전체 후보로 fallback (막다른 \"결과 없음\" 방지 — 예: committed\nid 가 후보 형식과 달라 안 맞는 경우). 서버 재조회 없음.",
10140
+ "readonly": true
10120
10141
  },
10121
10142
  {
10122
10143
  "kind": "field",
10123
- "name": "scopedElements",
10124
- "static": true,
10144
+ "name": "_selectableIds",
10145
+ "type": {
10146
+ "text": "string[]"
10147
+ },
10148
+ "privacy": "private",
10149
+ "description": "드롭다운에서 선택 가능한 id 들 (표시 순서).",
10125
10150
  "readonly": true
10126
10151
  },
10127
10152
  {
10128
10153
  "kind": "method",
10129
- "name": "_onShadow3dChange",
10154
+ "name": "_renderDropdown",
10155
+ "privacy": "private"
10156
+ },
10157
+ {
10158
+ "kind": "method",
10159
+ "name": "_onFocus",
10160
+ "privacy": "private"
10161
+ },
10162
+ {
10163
+ "kind": "method",
10164
+ "name": "_onBlur",
10165
+ "privacy": "private"
10166
+ },
10167
+ {
10168
+ "kind": "method",
10169
+ "name": "_onInput",
10130
10170
  "privacy": "private",
10131
10171
  "parameters": [
10132
- {
10133
- "name": "key",
10134
- "type": {
10135
- "text": "'castShadow' | 'receiveShadow'"
10136
- }
10137
- },
10138
10172
  {
10139
10173
  "name": "e",
10140
10174
  "type": {
10141
10175
  "text": "Event"
10142
10176
  }
10143
10177
  }
10144
- ],
10145
- "description": "3D 그림자 토글 — material3d.castShadow / receiveShadow 만 갱신.\n\nmaterial3d 는 단일 객체 속성이므로 기존 material3d 전체를 보존한 채 해당\n키만 덮어써 dispatch 한다 ({ castShadow } 만 보내면 set() 의 top-level shallow\nmerge 로 material3d 전체가 사라짐). value-key 를 두지 않아 AbstractProperty\n의 제너릭 change 핸들러는 이 입력을 무시한다."
10178
+ ]
10146
10179
  },
10147
10180
  {
10148
10181
  "kind": "method",
10149
- "name": "_onValueChange",
10182
+ "name": "_onInputCommit",
10183
+ "privacy": "private",
10150
10184
  "parameters": [
10151
10185
  {
10152
10186
  "name": "e",
@@ -10155,223 +10189,47 @@
10155
10189
  }
10156
10190
  }
10157
10191
  ],
10158
- "inheritedFrom": {
10159
- "name": "AbstractProperty",
10160
- "module": "src/modeller/property-sidebar/abstract-property.ts"
10161
- }
10192
+ "description": "자유 입력 commit (blur/Enter 의 native change) — 기존 free-text 동작 보존."
10162
10193
  },
10163
10194
  {
10164
10195
  "kind": "method",
10165
- "name": "_getValueFromEventTarget",
10196
+ "name": "_onKeydown",
10197
+ "privacy": "private",
10166
10198
  "parameters": [
10167
10199
  {
10168
- "name": "element",
10200
+ "name": "e",
10169
10201
  "type": {
10170
- "text": "HTMLElement"
10202
+ "text": "KeyboardEvent"
10171
10203
  }
10172
10204
  }
10173
- ],
10174
- "inheritedFrom": {
10175
- "name": "AbstractProperty",
10176
- "module": "src/modeller/property-sidebar/abstract-property.ts"
10177
- }
10205
+ ]
10178
10206
  },
10179
10207
  {
10180
10208
  "kind": "method",
10181
- "name": "_onAfterValueChange",
10209
+ "name": "_select",
10210
+ "privacy": "private",
10182
10211
  "parameters": [
10183
10212
  {
10184
- "name": "key",
10213
+ "name": "id",
10185
10214
  "type": {
10186
10215
  "text": "string"
10187
10216
  }
10188
10217
  },
10189
10218
  {
10190
- "name": "value",
10191
- "type": {
10192
- "text": "any"
10193
- }
10194
- }
10195
- ],
10196
- "inheritedFrom": {
10197
- "name": "AbstractProperty",
10198
- "module": "src/modeller/property-sidebar/abstract-property.ts"
10199
- }
10200
- }
10201
- ],
10202
- "events": [
10203
- {
10204
- "name": "property-change",
10205
- "type": {
10206
- "text": "CustomEvent"
10207
- },
10208
- "inheritedFrom": {
10209
- "name": "AbstractProperty",
10210
- "module": "src/modeller/property-sidebar/abstract-property.ts"
10211
- }
10212
- }
10213
- ],
10214
- "attributes": [
10215
- {
10216
- "name": "value",
10217
- "type": {
10218
- "text": "Properties | undefined"
10219
- },
10220
- "fieldName": "value"
10221
- },
10222
- {
10223
- "name": "scene",
10224
- "type": {
10225
- "text": "Scene | undefined"
10226
- },
10227
- "fieldName": "scene"
10228
- },
10229
- {
10230
- "name": "selected",
10231
- "type": {
10232
- "text": "Component[]"
10233
- },
10234
- "default": "[]",
10235
- "fieldName": "selected"
10236
- }
10237
- ],
10238
- "mixins": [
10239
- {
10240
- "name": "ScopedElementsMixin",
10241
- "package": "@open-wc/scoped-elements"
10242
- }
10243
- ],
10244
- "superclass": {
10245
- "name": "AbstractProperty",
10246
- "module": "/src/modeller/property-sidebar/abstract-property.js"
10247
- }
10248
- }
10249
- ],
10250
- "exports": [
10251
- {
10252
- "kind": "js",
10253
- "name": "PropertyEffects",
10254
- "declaration": {
10255
- "name": "PropertyEffects",
10256
- "module": "src/modeller/property-sidebar/effects/effects.ts"
10257
- }
10258
- }
10259
- ]
10260
- },
10261
- {
10262
- "kind": "javascript-module",
10263
- "path": "src/modeller/property-sidebar/effects/event-handler-adapter.ts",
10264
- "declarations": [
10265
- {
10266
- "kind": "function",
10267
- "name": "eventHandlersToLegacyTap",
10268
- "return": {
10269
- "type": {
10270
- "text": "LegacyTap"
10271
- }
10272
- },
10273
- "parameters": [
10274
- {
10275
- "name": "handlers",
10276
- "type": {
10277
- "text": "EventHandler[] | undefined"
10278
- }
10279
- }
10280
- ],
10281
- "description": "trigger 가 click/tap 인 첫 핸들러를 legacy tap 객체로 변환."
10282
- },
10283
- {
10284
- "kind": "function",
10285
- "name": "applyLegacyTapToHandlers",
10286
- "return": {
10287
- "type": {
10288
- "text": "EventHandler[]"
10289
- }
10290
- },
10291
- "parameters": [
10292
- {
10293
- "name": "handlers",
10294
- "type": {
10295
- "text": "EventHandler[] | undefined"
10296
- }
10297
- },
10298
- {
10299
- "name": "newTap",
10300
- "type": {
10301
- "text": "LegacyTap | undefined"
10302
- }
10303
- }
10304
- ],
10305
- "description": "기존 배열에서 click/tap 항목을 새 값으로 교체 (또는 push, 또는 제거).\n다른 trigger 항목은 그대로 보존."
10306
- }
10307
- ],
10308
- "exports": [
10309
- {
10310
- "kind": "js",
10311
- "name": "eventHandlersToLegacyTap",
10312
- "declaration": {
10313
- "name": "eventHandlersToLegacyTap",
10314
- "module": "src/modeller/property-sidebar/effects/event-handler-adapter.ts"
10315
- }
10316
- },
10317
- {
10318
- "kind": "js",
10319
- "name": "applyLegacyTapToHandlers",
10320
- "declaration": {
10321
- "name": "applyLegacyTapToHandlers",
10322
- "module": "src/modeller/property-sidebar/effects/event-handler-adapter.ts"
10323
- }
10324
- }
10325
- ]
10326
- },
10327
- {
10328
- "kind": "javascript-module",
10329
- "path": "src/modeller/property-sidebar/effects/property-event-hover.ts",
10330
- "declarations": [
10331
- {
10332
- "kind": "class",
10333
- "description": "",
10334
- "name": "PropertyEventHover",
10335
- "members": [
10336
- {
10337
- "kind": "field",
10338
- "name": "value",
10339
- "type": {
10340
- "text": "Properties | undefined"
10341
- },
10342
- "attribute": "value"
10343
- },
10344
- {
10345
- "kind": "field",
10346
- "name": "scene",
10347
- "type": {
10348
- "text": "Scene | undefined"
10349
- },
10350
- "attribute": "scene"
10351
- },
10352
- {
10353
- "kind": "method",
10354
- "name": "_getPlaceHoder",
10355
- "parameters": [
10356
- {
10357
- "name": "action",
10219
+ "name": "e",
10358
10220
  "type": {
10359
- "text": "string"
10221
+ "text": "MouseEvent"
10360
10222
  }
10361
10223
  }
10362
10224
  ]
10363
10225
  },
10364
10226
  {
10365
10227
  "kind": "method",
10366
- "name": "_getTargetList",
10367
- "return": {
10368
- "type": {
10369
- "text": "{ value: string; description: string }[]"
10370
- }
10371
- },
10228
+ "name": "_commitValue",
10229
+ "privacy": "private",
10372
10230
  "parameters": [
10373
10231
  {
10374
- "name": "action",
10232
+ "name": "id",
10375
10233
  "type": {
10376
10234
  "text": "string"
10377
10235
  }
@@ -10380,15 +10238,14 @@
10380
10238
  },
10381
10239
  {
10382
10240
  "kind": "method",
10383
- "name": "_onValueChange",
10384
- "parameters": [
10385
- {
10386
- "name": "e",
10387
- "type": {
10388
- "text": "Event"
10389
- }
10390
- }
10391
- ]
10241
+ "name": "_emitChange",
10242
+ "privacy": "private"
10243
+ },
10244
+ {
10245
+ "kind": "method",
10246
+ "name": "_load",
10247
+ "privacy": "private",
10248
+ "description": "후보 전체를 1회 조회 (포커스 시). keyword 는 보내지 않으며, 표시 필터는 _items\n게터가 로컬에서 처리한다. entityType(+unit 이면 machine) 만 서버로 보낸다."
10392
10249
  }
10393
10250
  ],
10394
10251
  "events": [
@@ -10403,16 +10260,55 @@
10403
10260
  {
10404
10261
  "name": "value",
10405
10262
  "type": {
10406
- "text": "Properties | undefined"
10263
+ "text": "string"
10407
10264
  },
10265
+ "default": "''",
10266
+ "description": "현재 ID 값.",
10408
10267
  "fieldName": "value"
10409
10268
  },
10410
10269
  {
10411
- "name": "scene",
10270
+ "name": "entityType",
10412
10271
  "type": {
10413
- "text": "Scene | undefined"
10272
+ "text": "string"
10414
10273
  },
10415
- "fieldName": "scene"
10274
+ "default": "''",
10275
+ "description": "검색 조건 — 선택된 컴포넌트 타입 (예: 'STOCKER', 'AGV', 'Port').",
10276
+ "fieldName": "entityType"
10277
+ },
10278
+ {
10279
+ "name": "machine",
10280
+ "type": {
10281
+ "text": "string"
10282
+ },
10283
+ "default": "''",
10284
+ "description": "검색 조건 — 부모 machine id (unit 컴포넌트가 소속 machine 을 알 때).",
10285
+ "fieldName": "machine"
10286
+ },
10287
+ {
10288
+ "name": "requireMachine",
10289
+ "type": {
10290
+ "text": "boolean"
10291
+ },
10292
+ "default": "false",
10293
+ "description": "machine 필수 타입(예: Port) — machine 없으면 조회하지 않는다 (후보 과다 방지).",
10294
+ "fieldName": "requireMachine"
10295
+ },
10296
+ {
10297
+ "name": "localItems",
10298
+ "type": {
10299
+ "text": "string[] | null"
10300
+ },
10301
+ "default": "null",
10302
+ "description": "백엔드 조회 대신 사용할 로컬 후보 리스트 (예: parentObject — 씬의 머신들). null 이면 백엔드 조회.",
10303
+ "fieldName": "localItems"
10304
+ },
10305
+ {
10306
+ "name": "placeholder",
10307
+ "type": {
10308
+ "text": "string"
10309
+ },
10310
+ "default": "''",
10311
+ "fieldName": "placeholder"
10416
10312
  }
10417
10313
  ],
10418
10314
  "superclass": {
@@ -10425,23 +10321,29 @@
10425
10321
  "exports": [
10426
10322
  {
10427
10323
  "kind": "js",
10428
- "name": "PropertyEventHover",
10324
+ "name": "OxInputEntityId",
10429
10325
  "declaration": {
10430
- "name": "PropertyEventHover",
10431
- "module": "src/modeller/property-sidebar/effects/property-event-hover.ts"
10326
+ "name": "OxInputEntityId",
10327
+ "module": "src/modeller/property-sidebar/shapes/ox-input-entity-id.ts"
10432
10328
  }
10433
10329
  }
10434
10330
  ]
10435
10331
  },
10436
10332
  {
10437
10333
  "kind": "javascript-module",
10438
- "path": "src/modeller/property-sidebar/effects/property-event-tap.ts",
10334
+ "path": "src/modeller/property-sidebar/shapes/shapes.ts",
10439
10335
  "declarations": [
10440
10336
  {
10441
10337
  "kind": "class",
10442
10338
  "description": "",
10443
- "name": "PropertyEventTap",
10339
+ "name": "PropertyShapes",
10444
10340
  "members": [
10341
+ {
10342
+ "kind": "field",
10343
+ "name": "scopedElements",
10344
+ "static": true,
10345
+ "readonly": true
10346
+ },
10445
10347
  {
10446
10348
  "kind": "field",
10447
10349
  "name": "value",
@@ -10452,136 +10354,218 @@
10452
10354
  },
10453
10355
  {
10454
10356
  "kind": "field",
10455
- "name": "scene",
10357
+ "name": "bounds",
10456
10358
  "type": {
10457
- "text": "Scene | undefined"
10359
+ "text": "BOUNDS | null"
10458
10360
  },
10459
- "attribute": "scene"
10361
+ "default": "null",
10362
+ "attribute": "bounds"
10460
10363
  },
10461
10364
  {
10462
10365
  "kind": "field",
10463
- "name": "targetList",
10366
+ "name": "selected",
10464
10367
  "type": {
10465
- "text": "{ value: string; description: string }[]"
10368
+ "text": "Component[]"
10466
10369
  },
10467
- "default": "[]"
10370
+ "default": "[]",
10371
+ "attribute": "selected"
10468
10372
  },
10469
10373
  {
10470
10374
  "kind": "method",
10471
- "name": "_getPlaceHoder",
10375
+ "name": "_onValueChange",
10472
10376
  "parameters": [
10473
10377
  {
10474
- "name": "action",
10378
+ "name": "e",
10475
10379
  "type": {
10476
- "text": "string"
10380
+ "text": "Event"
10381
+ }
10382
+ }
10383
+ ],
10384
+ "inheritedFrom": {
10385
+ "name": "AbstractProperty",
10386
+ "module": "src/modeller/property-sidebar/abstract-property.ts"
10387
+ }
10388
+ },
10389
+ {
10390
+ "kind": "method",
10391
+ "name": "_hasTextProperty",
10392
+ "parameters": [
10393
+ {
10394
+ "name": "selected",
10395
+ "type": {
10396
+ "text": "Component[]"
10477
10397
  }
10478
10398
  }
10479
10399
  ]
10480
10400
  },
10481
10401
  {
10482
10402
  "kind": "method",
10483
- "name": "_onValueChange",
10403
+ "name": "_hasProperties",
10484
10404
  "parameters": [
10485
10405
  {
10486
- "name": "e",
10406
+ "name": "selected",
10487
10407
  "type": {
10488
- "text": "Event"
10408
+ "text": "Component[]"
10489
10409
  }
10490
10410
  }
10491
10411
  ]
10492
- }
10493
- ],
10494
- "events": [
10412
+ },
10495
10413
  {
10496
- "name": "change",
10497
- "type": {
10498
- "text": "CustomEvent"
10499
- }
10500
- }
10501
- ],
10502
- "attributes": [
10414
+ "kind": "method",
10415
+ "name": "_isIdentifiable",
10416
+ "parameters": [
10417
+ {
10418
+ "name": "selected",
10419
+ "type": {
10420
+ "text": "Component[]"
10421
+ }
10422
+ }
10423
+ ]
10424
+ },
10503
10425
  {
10504
- "name": "value",
10505
- "type": {
10506
- "text": "Properties | undefined"
10426
+ "kind": "method",
10427
+ "name": "_parentMachineId",
10428
+ "return": {
10429
+ "type": {
10430
+ "text": "string"
10431
+ }
10507
10432
  },
10508
- "fieldName": "value"
10433
+ "parameters": [
10434
+ {
10435
+ "name": "selected",
10436
+ "type": {
10437
+ "text": "Component[]"
10438
+ }
10439
+ }
10440
+ ],
10441
+ "description": "단일 선택 컴포넌트의 부모 machine id (unit 의 ID 검색 시 조회조건으로 전달).\n부모가 루트 모델/레이어가 아니고 id 를 가지면 그 id 를 반환 — unit 이 자신의\n소속 machine 을 특정할 수 있는 경우에 해당. 그 외엔 빈 문자열."
10509
10442
  },
10510
10443
  {
10511
- "name": "scene",
10512
- "type": {
10513
- "text": "Scene | undefined"
10444
+ "kind": "method",
10445
+ "name": "_idLookupType",
10446
+ "return": {
10447
+ "type": {
10448
+ "text": "string | undefined"
10449
+ }
10514
10450
  },
10515
- "fieldName": "scene"
10516
- }
10517
- ],
10518
- "superclass": {
10519
- "name": "LitElement",
10520
- "package": "lit"
10521
- },
10522
- "customElement": true
10523
- }
10524
- ],
10525
- "exports": [
10526
- {
10527
- "kind": "js",
10528
- "name": "PropertyEventTap",
10529
- "declaration": {
10530
- "name": "PropertyEventTap",
10531
- "module": "src/modeller/property-sidebar/effects/property-event-tap.ts"
10532
- }
10533
- }
10534
- ]
10535
- },
10536
- {
10537
- "kind": "javascript-module",
10538
- "path": "src/modeller/property-sidebar/effects/property-event.ts",
10539
- "declarations": [
10540
- {
10541
- "kind": "class",
10542
- "description": "things-scene v10 의 신규 모델 (`state.eventHandlers: EventHandler[]`) 위에서\n기존 단일-tap UI 를 그대로 동작시키는 어댑터.\n\nread : eventHandlers 배열에서 trigger='click'/'tap' 인 첫 항목 → legacy tap\n 객체로 변환 후 PropertyEventTap 에 전달.\nwrite: PropertyEventTap 이 emit 한 legacy tap 변경 → click 항목을 update/push\n 한 새 배열로 외부에 emit. 다른 trigger 의 핸들러는 보존.",
10543
- "name": "PropertyEvent",
10544
- "members": [
10451
+ "parameters": [
10452
+ {
10453
+ "name": "selected",
10454
+ "type": {
10455
+ "text": "Component[]"
10456
+ }
10457
+ }
10458
+ ],
10459
+ "description": "선택 컴포넌트의 id 조회용 타입명 (capability `idLookupType`). 값이 있으면 그 타입으로\n검색 에디터를 띄우고, 없으면(일반 도형·Carrier 등) plain input 으로 두어 불필요한 id\n리스트 요청을 보내지 않는다. 기본은 자기 타입이며 컴포넌트가 다른 타입으로 override 가능.\n(머신/유닛 + Node 가 opt-in. isLVComponent 은 Carrier 포함·Node 제외라 부적합.)"
10460
+ },
10545
10461
  {
10546
- "kind": "field",
10547
- "name": "value",
10548
- "type": {
10549
- "text": "EventHandler[] | undefined"
10462
+ "kind": "method",
10463
+ "name": "_idLookupEnabled",
10464
+ "return": {
10465
+ "type": {
10466
+ "text": "boolean"
10467
+ }
10550
10468
  },
10551
- "attribute": "value"
10469
+ "parameters": [
10470
+ {
10471
+ "name": "selected",
10472
+ "type": {
10473
+ "text": "Component[]"
10474
+ }
10475
+ }
10476
+ ],
10477
+ "description": "Board 루트 속성 state.idLookup 으로 id 룩업 전체 ON/OFF (기본 ON)."
10478
+ },
10479
+ {
10480
+ "kind": "method",
10481
+ "name": "_isClassIdentifiable",
10482
+ "parameters": [
10483
+ {
10484
+ "name": "selected",
10485
+ "type": {
10486
+ "text": "Component[]"
10487
+ }
10488
+ }
10489
+ ]
10552
10490
  },
10553
10491
  {
10554
- "kind": "field",
10555
- "name": "scene",
10556
- "type": {
10557
- "text": "Scene | undefined"
10558
- },
10559
- "attribute": "scene"
10492
+ "kind": "method",
10493
+ "name": "_isLine",
10494
+ "parameters": [
10495
+ {
10496
+ "name": "selected",
10497
+ "type": {
10498
+ "text": "Component[]"
10499
+ }
10500
+ }
10501
+ ]
10560
10502
  },
10561
10503
  {
10562
- "kind": "field",
10563
- "name": "scopedElements",
10564
- "static": true,
10565
- "readonly": true
10504
+ "kind": "method",
10505
+ "name": "_is3dish",
10506
+ "parameters": [
10507
+ {
10508
+ "name": "selected",
10509
+ "type": {
10510
+ "text": "Component[]"
10511
+ }
10512
+ }
10513
+ ]
10566
10514
  },
10567
10515
  {
10568
10516
  "kind": "method",
10569
- "name": "_onValueChange",
10517
+ "name": "_getValueFromEventTarget",
10570
10518
  "parameters": [
10571
10519
  {
10572
- "name": "e",
10520
+ "name": "element",
10573
10521
  "type": {
10574
- "text": "Event"
10522
+ "text": "HTMLElement"
10575
10523
  }
10576
10524
  }
10577
- ]
10525
+ ],
10526
+ "inheritedFrom": {
10527
+ "name": "AbstractProperty",
10528
+ "module": "src/modeller/property-sidebar/abstract-property.ts"
10529
+ }
10530
+ },
10531
+ {
10532
+ "kind": "method",
10533
+ "name": "_onAfterValueChange",
10534
+ "parameters": [
10535
+ {
10536
+ "name": "key",
10537
+ "type": {
10538
+ "text": "string"
10539
+ }
10540
+ },
10541
+ {
10542
+ "name": "value",
10543
+ "type": {
10544
+ "text": "any"
10545
+ }
10546
+ }
10547
+ ],
10548
+ "inheritedFrom": {
10549
+ "name": "AbstractProperty",
10550
+ "module": "src/modeller/property-sidebar/abstract-property.ts"
10551
+ }
10578
10552
  }
10579
10553
  ],
10580
10554
  "events": [
10581
10555
  {
10582
- "name": "change",
10556
+ "name": "bounds-change",
10557
+ "type": {
10558
+ "text": "CustomEvent"
10559
+ }
10560
+ },
10561
+ {
10562
+ "name": "property-change",
10583
10563
  "type": {
10584
10564
  "text": "CustomEvent"
10565
+ },
10566
+ "inheritedFrom": {
10567
+ "name": "AbstractProperty",
10568
+ "module": "src/modeller/property-sidebar/abstract-property.ts"
10585
10569
  }
10586
10570
  }
10587
10571
  ],
@@ -10589,16 +10573,25 @@
10589
10573
  {
10590
10574
  "name": "value",
10591
10575
  "type": {
10592
- "text": "EventHandler[] | undefined"
10576
+ "text": "Properties | undefined"
10593
10577
  },
10594
10578
  "fieldName": "value"
10595
10579
  },
10596
10580
  {
10597
- "name": "scene",
10581
+ "name": "bounds",
10598
10582
  "type": {
10599
- "text": "Scene | undefined"
10583
+ "text": "BOUNDS | null"
10600
10584
  },
10601
- "fieldName": "scene"
10585
+ "default": "null",
10586
+ "fieldName": "bounds"
10587
+ },
10588
+ {
10589
+ "name": "selected",
10590
+ "type": {
10591
+ "text": "Component[]"
10592
+ },
10593
+ "default": "[]",
10594
+ "fieldName": "selected"
10602
10595
  }
10603
10596
  ],
10604
10597
  "mixins": [
@@ -10608,771 +10601,1029 @@
10608
10601
  }
10609
10602
  ],
10610
10603
  "superclass": {
10611
- "name": "LitElement",
10612
- "package": "lit"
10613
- },
10614
- "customElement": true
10604
+ "name": "AbstractProperty",
10605
+ "module": "/src/modeller/property-sidebar/abstract-property"
10606
+ }
10615
10607
  }
10616
10608
  ],
10617
10609
  "exports": [
10618
10610
  {
10619
10611
  "kind": "js",
10620
- "name": "PropertyEvent",
10612
+ "name": "PropertyShapes",
10621
10613
  "declaration": {
10622
- "name": "PropertyEvent",
10623
- "module": "src/modeller/property-sidebar/effects/property-event.ts"
10614
+ "name": "PropertyShapes",
10615
+ "module": "src/modeller/property-sidebar/shapes/shapes.ts"
10624
10616
  }
10625
10617
  }
10626
10618
  ]
10627
10619
  },
10628
10620
  {
10629
10621
  "kind": "javascript-module",
10630
- "path": "src/modeller/property-sidebar/effects/property-shadow.ts",
10622
+ "path": "src/modeller/property-sidebar/inspector/inspector-controller.ts",
10631
10623
  "declarations": [
10632
10624
  {
10633
10625
  "kind": "class",
10634
- "description": "컴포넌트의 그림자 속성을 편집하는 element\n\nExample:\n <property-shadow",
10635
- "name": "PropertyShadow",
10626
+ "description": "",
10627
+ "name": "InspectorController",
10636
10628
  "members": [
10637
10629
  {
10638
10630
  "kind": "field",
10639
- "name": "value",
10631
+ "name": "_scene",
10640
10632
  "type": {
10641
- "text": "Properties | undefined"
10633
+ "text": "Scene | undefined"
10642
10634
  },
10643
- "attribute": "value"
10635
+ "privacy": "private"
10644
10636
  },
10645
10637
  {
10646
- "kind": "method",
10647
- "name": "_onValueChange",
10648
- "parameters": [
10649
- {
10650
- "name": "e",
10651
- "type": {
10652
- "text": "Event"
10653
- }
10654
- }
10655
- ]
10656
- }
10657
- ],
10658
- "events": [
10638
+ "kind": "field",
10639
+ "name": "_extendedMap",
10640
+ "privacy": "private",
10641
+ "default": "new WeakMap<Component, boolean>()"
10642
+ },
10659
10643
  {
10660
- "name": "change",
10661
- "type": {
10662
- "text": "CustomEvent"
10663
- }
10664
- }
10665
- ],
10666
- "attributes": [
10644
+ "kind": "field",
10645
+ "name": "_expandedGroups",
10646
+ "privacy": "private",
10647
+ "default": "new Set<string>()",
10648
+ "description": "타입 그룹 뷰의 펼침 상태 — 그룹 키(type)는 안정적이라 Set 으로 관리. 기본 전부 접힘."
10649
+ },
10667
10650
  {
10668
- "name": "value",
10651
+ "kind": "field",
10652
+ "name": "_dimmedTypes",
10653
+ "privacy": "private",
10654
+ "default": "new Set<string>()",
10655
+ "description": "모델링 포커스 dim 처리된 그룹(타입) 집합 — transient(비영속)."
10656
+ },
10657
+ {
10658
+ "kind": "field",
10659
+ "name": "_anchor",
10669
10660
  "type": {
10670
- "text": "Properties | undefined"
10661
+ "text": "Component | undefined"
10671
10662
  },
10672
- "fieldName": "value"
10673
- }
10674
- ],
10675
- "superclass": {
10676
- "name": "LitElement",
10677
- "package": "lit"
10678
- },
10679
- "customElement": true
10680
- }
10681
- ],
10682
- "exports": [
10683
- {
10684
- "kind": "js",
10685
- "name": "PropertyShadow",
10686
- "declaration": {
10687
- "name": "PropertyShadow",
10688
- "module": "src/modeller/property-sidebar/effects/property-shadow.ts"
10689
- }
10690
- }
10691
- ]
10692
- },
10693
- {
10694
- "kind": "javascript-module",
10695
- "path": "src/modeller/property-sidebar/effects/value-converter.ts",
10696
- "declarations": [
10697
- {
10698
- "kind": "function",
10699
- "name": "convert",
10700
- "parameters": [
10663
+ "privacy": "private",
10664
+ "description": "shift+click 범위(볼륨) 선택의 기준점 — 마지막 단일/토글 클릭."
10665
+ },
10701
10666
  {
10702
- "name": "element",
10667
+ "kind": "field",
10668
+ "name": "_index",
10703
10669
  "type": {
10704
- "text": "any"
10705
- }
10706
- }
10707
- ]
10708
- }
10709
- ],
10710
- "exports": [
10711
- {
10712
- "kind": "js",
10713
- "name": "convert",
10714
- "declaration": {
10715
- "name": "convert",
10716
- "module": "src/modeller/property-sidebar/effects/value-converter.ts"
10717
- }
10718
- }
10719
- ]
10720
- },
10721
- {
10722
- "kind": "javascript-module",
10723
- "path": "src/modeller/property-sidebar/shapes/box-padding-editor-styles.ts",
10724
- "declarations": [
10725
- {
10726
- "kind": "variable",
10727
- "name": "BoxPaddingEditorStyles",
10728
- "default": "css` .box-padding { width: 100%; } .box-padding td { background: var(--url-icon-properties-padding) 50% 0 no-repeat; } .box-padding tr:nth-child(1), .box-padding tr:nth-child(3) { height: 20px; } .box-padding tr td:nth-child(1), .box-padding tr td:nth-child(3) { width: 18px; } .box-padding .slide1 { background-position: 0 0; } .box-padding .slide2 { background-position: 50% -40px; background-color: rgba(69, 46, 41, 0.2); } .box-padding .slide3 { background-position: 100% -440px; } .box-padding .slide4 { background-position: 0 -360px; background-color: rgba(69, 46, 41, 0.2); } .box-padding .slide5 { background: none; text-align: center; } .box-padding .slide6 { background-position: 100% -160px; background-color: rgba(69, 46, 41, 0.2); } .box-padding .slide7 { background-position: 0 100%; } .box-padding .slide8 { background-position: 50% -320px; background-color: rgba(69, 46, 41, 0.2); } .box-padding .slide9 { background-position: 0 0px; } .box-padding input { background-color: transparent; width: 35px; margin: 0px; padding: 0px; clear: both; float: initial; border: 1px solid #fff; border-width: 0 0 1px 0; text-align: right; font-size: 14px; } .slide5 input:nth-child(1), .slide5 input:nth-child(4) { display: block; margin: auto; } .slide5 input:nth-child(2) { float: left; } .slide5 input:nth-child(3) { float: right; margin-top: -25px; } .slide5 input:nth-child(4) { margin-top: -5px; } `"
10729
- }
10730
- ],
10731
- "exports": [
10732
- {
10733
- "kind": "js",
10734
- "name": "BoxPaddingEditorStyles",
10735
- "declaration": {
10736
- "name": "BoxPaddingEditorStyles",
10737
- "module": "src/modeller/property-sidebar/shapes/box-padding-editor-styles.ts"
10738
- }
10739
- }
10740
- ]
10741
- },
10742
- {
10743
- "kind": "javascript-module",
10744
- "path": "src/modeller/property-sidebar/shapes/ox-input-entity-id.ts",
10745
- "declarations": [
10746
- {
10747
- "kind": "class",
10748
- "description": "컴포넌트 ID 입력기 — 자유 입력 + 타입별 백엔드(MCS) 검색 선택을 함께 제공.\n\n- 기존처럼 자유롭게 텍스트로 ID 를 입력할 수 있다 (commit = blur/Enter).\n- input 에 *포커스가 가면* 아래로 검색 드롭다운이 펼쳐진다. `entityType`\n (컴포넌트 타입) 으로 MCS 에 정의된 ID 후보를 조회한다.\n - machine 타입 → 머신 id 가 1레벨 평면으로 (선택 가능)\n - unit 타입 → machine 이 그룹 헤더, 그 아래 unit id 가 자식 (선택 가능).\n 컴포넌트가 부모 machine 을 알면(`machine` prop) 그 머신으로 좁혀 조회.\n\nvalue-key=\"id\" 와 함께 property-grid 안에 두면, 이 host 가 `change`(bubbles+\ncomposed) 를 발행하므로 AbstractProperty 제너릭 핸들러가 `element.value` 를\n읽어 property-change 로 전파한다.\n\n등록: 패널 자식 커스텀 엘리먼트 컨벤션에 따라 전역 `@customElement` 가 아니라\n부모 패널(PropertyShapes)의 `scopedElements` 로 등록한다 (@open-wc/scoped-elements).",
10749
- "name": "OxInputEntityId",
10750
- "members": [
10670
+ "text": "InspectorIndex | undefined"
10671
+ },
10672
+ "privacy": "private"
10673
+ },
10751
10674
  {
10752
10675
  "kind": "field",
10753
- "name": "value",
10676
+ "name": "_onChange",
10754
10677
  "type": {
10755
- "text": "string"
10678
+ "text": "() => void | undefined"
10756
10679
  },
10757
- "default": "''",
10758
- "description": "현재 ID 값.",
10759
- "attribute": "value"
10680
+ "privacy": "private"
10760
10681
  },
10761
10682
  {
10762
- "kind": "field",
10763
- "name": "entityType",
10764
- "type": {
10765
- "text": "string"
10683
+ "kind": "method",
10684
+ "name": "bind",
10685
+ "return": {
10686
+ "type": {
10687
+ "text": "void"
10688
+ }
10766
10689
  },
10767
- "default": "''",
10768
- "description": "검색 조건 — 선택된 컴포넌트 타입 (예: 'STOCKER', 'AGV', 'Port').",
10769
- "attribute": "entityType"
10690
+ "parameters": [
10691
+ {
10692
+ "name": "scene",
10693
+ "type": {
10694
+ "text": "Scene | undefined"
10695
+ }
10696
+ },
10697
+ {
10698
+ "name": "onChange",
10699
+ "type": {
10700
+ "text": "() => void"
10701
+ }
10702
+ }
10703
+ ],
10704
+ "description": "scene 에 바인딩 — 이전 바인딩은 해제한다. onChange 는 재렌더 요청 콜백."
10705
+ },
10706
+ {
10707
+ "kind": "method",
10708
+ "name": "unbind",
10709
+ "return": {
10710
+ "type": {
10711
+ "text": "void"
10712
+ }
10713
+ }
10770
10714
  },
10771
10715
  {
10772
10716
  "kind": "field",
10773
- "name": "machine",
10717
+ "name": "scene",
10774
10718
  "type": {
10775
- "text": "string"
10719
+ "text": "Scene | undefined"
10776
10720
  },
10777
- "default": "''",
10778
- "description": "검색 조건 — 부모 machine id (unit 컴포넌트가 소속 machine 을 알 때).",
10779
- "attribute": "machine"
10721
+ "readonly": true
10780
10722
  },
10781
10723
  {
10782
10724
  "kind": "field",
10783
- "name": "requireMachine",
10725
+ "name": "selected",
10784
10726
  "type": {
10785
- "text": "boolean"
10727
+ "text": "Component[]"
10786
10728
  },
10787
- "default": "false",
10788
- "description": "machine 필수 타입(예: Port) — machine 없으면 조회하지 않는다 (후보 과다 방지).",
10789
- "attribute": "requireMachine"
10729
+ "readonly": true
10790
10730
  },
10791
10731
  {
10792
10732
  "kind": "field",
10793
- "name": "localItems",
10733
+ "name": "index",
10794
10734
  "type": {
10795
- "text": "string[] | null"
10735
+ "text": "InspectorIndex | undefined"
10796
10736
  },
10797
- "default": "null",
10798
- "description": "백엔드 조회 대신 사용할 로컬 후보 리스트 (예: parentObject — 씬의 머신들). null 이면 백엔드 조회.",
10799
- "attribute": "localItems"
10737
+ "description": "캐시된 모델 인덱스 — 없으면 build. execute/undo/redo 시 무효화.",
10738
+ "readonly": true
10800
10739
  },
10801
10740
  {
10802
10741
  "kind": "field",
10803
- "name": "placeholder",
10804
- "type": {
10805
- "text": "string"
10806
- },
10807
- "default": "''",
10808
- "attribute": "placeholder"
10742
+ "name": "_invalidateAndRefresh",
10743
+ "privacy": "private"
10809
10744
  },
10810
10745
  {
10811
10746
  "kind": "field",
10812
- "name": "_open",
10813
- "type": {
10814
- "text": "boolean"
10815
- },
10747
+ "name": "_refresh",
10816
10748
  "privacy": "private",
10817
- "default": "false"
10749
+ "description": "선택된 컴포넌트의 조상을 펼치고 재렌더 요청."
10818
10750
  },
10819
10751
  {
10820
- "kind": "field",
10821
- "name": "_all",
10822
- "type": {
10823
- "text": "string[]"
10752
+ "kind": "method",
10753
+ "name": "isExtended",
10754
+ "return": {
10755
+ "type": {
10756
+ "text": "boolean"
10757
+ }
10824
10758
  },
10825
- "privacy": "private",
10826
- "default": "[]",
10827
- "description": "서버에서 받은 전체 후보 리스트 (포커스 시 1회 조회, 키워드 미적용)."
10759
+ "parameters": [
10760
+ {
10761
+ "name": "component",
10762
+ "type": {
10763
+ "text": "Component"
10764
+ }
10765
+ }
10766
+ ]
10828
10767
  },
10829
10768
  {
10830
- "kind": "field",
10831
- "name": "_loading",
10832
- "type": {
10833
- "text": "boolean"
10769
+ "kind": "method",
10770
+ "name": "toggleExtended",
10771
+ "return": {
10772
+ "type": {
10773
+ "text": "void"
10774
+ }
10834
10775
  },
10835
- "privacy": "private",
10836
- "default": "false"
10776
+ "parameters": [
10777
+ {
10778
+ "name": "component",
10779
+ "type": {
10780
+ "text": "Component"
10781
+ }
10782
+ }
10783
+ ]
10837
10784
  },
10838
10785
  {
10839
- "kind": "field",
10840
- "name": "_needMachine",
10841
- "type": {
10842
- "text": "boolean"
10786
+ "kind": "method",
10787
+ "name": "nodeHandleClass",
10788
+ "return": {
10789
+ "type": {
10790
+ "text": "string"
10791
+ }
10843
10792
  },
10844
- "privacy": "private",
10845
- "default": "false",
10846
- "description": "machine 필수인데 machine 미지정이라 조회를 보류한 상태."
10793
+ "parameters": [
10794
+ {
10795
+ "name": "component",
10796
+ "type": {
10797
+ "text": "Component"
10798
+ }
10799
+ }
10800
+ ],
10801
+ "description": "트리 노드 핸들(펼침/접힘/공백) 클래스."
10847
10802
  },
10848
10803
  {
10849
- "kind": "field",
10850
- "name": "_activeIndex",
10851
- "type": {
10852
- "text": "number"
10804
+ "kind": "method",
10805
+ "name": "isGroupExpanded",
10806
+ "return": {
10807
+ "type": {
10808
+ "text": "boolean"
10809
+ }
10853
10810
  },
10854
- "privacy": "private",
10855
- "default": "-1",
10856
- "description": "선택 가능 항목 기준 active index."
10811
+ "parameters": [
10812
+ {
10813
+ "name": "type",
10814
+ "type": {
10815
+ "text": "string"
10816
+ }
10817
+ }
10818
+ ]
10857
10819
  },
10858
10820
  {
10859
- "kind": "field",
10860
- "name": "_input",
10861
- "type": {
10862
- "text": "HTMLInputElement"
10821
+ "kind": "method",
10822
+ "name": "toggleGroup",
10823
+ "return": {
10824
+ "type": {
10825
+ "text": "void"
10826
+ }
10863
10827
  },
10864
- "privacy": "private"
10828
+ "parameters": [
10829
+ {
10830
+ "name": "type",
10831
+ "type": {
10832
+ "text": "string"
10833
+ }
10834
+ }
10835
+ ]
10865
10836
  },
10866
10837
  {
10867
- "kind": "field",
10868
- "name": "_blurTimer",
10869
- "type": {
10870
- "text": "ReturnType<typeof setTimeout> | undefined"
10838
+ "kind": "method",
10839
+ "name": "collapseAllGroups",
10840
+ "return": {
10841
+ "type": {
10842
+ "text": "void"
10843
+ }
10871
10844
  },
10872
- "privacy": "private"
10845
+ "description": "모든 그룹 접기 — \"그룹 레벨까지만 펼침\"(헤더만 표시)."
10873
10846
  },
10874
10847
  {
10875
- "kind": "field",
10876
- "name": "_loadSeq",
10877
- "type": {
10878
- "text": "number"
10848
+ "kind": "method",
10849
+ "name": "expandAllGroups",
10850
+ "return": {
10851
+ "type": {
10852
+ "text": "void"
10853
+ }
10879
10854
  },
10880
- "privacy": "private",
10881
- "default": "0"
10855
+ "parameters": [
10856
+ {
10857
+ "name": "types",
10858
+ "type": {
10859
+ "text": "string[]"
10860
+ }
10861
+ }
10862
+ ],
10863
+ "description": "모든 그룹 펼치기."
10882
10864
  },
10883
10865
  {
10884
- "kind": "field",
10885
- "name": "_lastEmitted",
10886
- "type": {
10887
- "text": "string | undefined"
10866
+ "kind": "method",
10867
+ "name": "isTypeDimmed",
10868
+ "return": {
10869
+ "type": {
10870
+ "text": "boolean"
10871
+ }
10888
10872
  },
10889
- "privacy": "private",
10890
- "description": "마지막으로 발행한 값 — 같은 값 재발행(undo 중복) 방지."
10873
+ "parameters": [
10874
+ {
10875
+ "name": "type",
10876
+ "type": {
10877
+ "text": "string"
10878
+ }
10879
+ }
10880
+ ]
10891
10881
  },
10892
10882
  {
10893
- "kind": "field",
10894
- "name": "_items",
10895
- "type": {
10896
- "text": "string[]"
10883
+ "kind": "method",
10884
+ "name": "toggleTypeDim",
10885
+ "return": {
10886
+ "type": {
10887
+ "text": "void"
10888
+ }
10897
10889
  },
10898
- "privacy": "private",
10899
- "description": "드롭다운 표시 항목 — 입력값(초기값 포함)으로 풀텍스트 로컬 필터.\n단, 매치가 0이면 전체 후보로 fallback (막다른 \"결과 없음\" 방지 — 예: committed\nid 가 후보 형식과 달라 안 맞는 경우). 서버 재조회 없음.",
10900
- "readonly": true
10890
+ "parameters": [
10891
+ {
10892
+ "name": "type",
10893
+ "type": {
10894
+ "text": "string"
10895
+ }
10896
+ }
10897
+ ],
10898
+ "description": "그룹(타입) dim-out 토글 → scene.focusFilter 재설정(편집 모드에서 캔버스 dim + pick 제외)."
10901
10899
  },
10902
10900
  {
10903
- "kind": "field",
10904
- "name": "_selectableIds",
10905
- "type": {
10906
- "text": "string[]"
10907
- },
10901
+ "kind": "method",
10902
+ "name": "_applyFocusFilter",
10908
10903
  "privacy": "private",
10909
- "description": "드롭다운에서 선택 가능한 id 들 (표시 순서).",
10910
- "readonly": true
10904
+ "return": {
10905
+ "type": {
10906
+ "text": "void"
10907
+ }
10908
+ }
10911
10909
  },
10912
10910
  {
10913
10911
  "kind": "method",
10914
- "name": "_renderDropdown",
10915
- "privacy": "private"
10912
+ "name": "isTypeHidden",
10913
+ "return": {
10914
+ "type": {
10915
+ "text": "boolean"
10916
+ }
10917
+ },
10918
+ "parameters": [
10919
+ {
10920
+ "name": "type",
10921
+ "type": {
10922
+ "text": "string"
10923
+ }
10924
+ }
10925
+ ],
10926
+ "description": "그룹 전원이 hidden 이면 true(집계). 멤버/트리 eye 규약과 동일한 아이콘 판정에 사용."
10916
10927
  },
10917
10928
  {
10918
10929
  "kind": "method",
10919
- "name": "_onFocus",
10920
- "privacy": "private"
10930
+ "name": "toggleTypeHidden",
10931
+ "return": {
10932
+ "type": {
10933
+ "text": "void"
10934
+ }
10935
+ },
10936
+ "parameters": [
10937
+ {
10938
+ "name": "type",
10939
+ "type": {
10940
+ "text": "string"
10941
+ }
10942
+ }
10943
+ ],
10944
+ "description": "그룹(타입) hidden 토글 → 하나라도 보이면 전원 숨김, 전원 숨김이면 전원 표시."
10921
10945
  },
10922
10946
  {
10923
10947
  "kind": "method",
10924
- "name": "_onBlur",
10925
- "privacy": "private"
10948
+ "name": "toggleHidden",
10949
+ "return": {
10950
+ "type": {
10951
+ "text": "void"
10952
+ }
10953
+ },
10954
+ "parameters": [
10955
+ {
10956
+ "name": "component",
10957
+ "type": {
10958
+ "text": "Component"
10959
+ }
10960
+ }
10961
+ ],
10962
+ "description": "개별 컴포넌트 hidden(영구 모델 속성) 토글 — 기존 eye 동작."
10926
10963
  },
10927
10964
  {
10928
10965
  "kind": "method",
10929
- "name": "_onInput",
10930
- "privacy": "private",
10966
+ "name": "toggleLocked",
10967
+ "return": {
10968
+ "type": {
10969
+ "text": "void"
10970
+ }
10971
+ },
10931
10972
  "parameters": [
10932
10973
  {
10933
- "name": "e",
10974
+ "name": "component",
10934
10975
  "type": {
10935
- "text": "Event"
10976
+ "text": "Component"
10936
10977
  }
10937
10978
  }
10938
- ]
10979
+ ],
10980
+ "description": "개별 컴포넌트 locked(영구 모델 속성) 토글."
10939
10981
  },
10940
10982
  {
10941
10983
  "kind": "method",
10942
- "name": "_onInputCommit",
10943
- "privacy": "private",
10984
+ "name": "centerTo",
10985
+ "return": {
10986
+ "type": {
10987
+ "text": "void"
10988
+ }
10989
+ },
10944
10990
  "parameters": [
10945
10991
  {
10946
- "name": "e",
10992
+ "name": "component",
10947
10993
  "type": {
10948
- "text": "Event"
10994
+ "text": "Component"
10949
10995
  }
10950
10996
  }
10951
10997
  ],
10952
- "description": "자유 입력 commit (blur/Enter 의 native change) — 기존 free-text 동작 보존."
10998
+ "description": "캔버스를 해당 컴포넌트로 센터 이동."
10953
10999
  },
10954
11000
  {
10955
11001
  "kind": "method",
10956
- "name": "_onKeydown",
10957
- "privacy": "private",
11002
+ "name": "select",
11003
+ "return": {
11004
+ "type": {
11005
+ "text": "void"
11006
+ }
11007
+ },
10958
11008
  "parameters": [
10959
11009
  {
10960
- "name": "e",
11010
+ "name": "component",
10961
11011
  "type": {
10962
- "text": "KeyboardEvent"
11012
+ "text": "Component"
10963
11013
  }
11014
+ },
11015
+ {
11016
+ "name": "append",
11017
+ "default": "false"
10964
11018
  }
10965
- ]
11019
+ ],
11020
+ "description": "선택 — append(ctrl/cmd) 시 토글식 다중 선택. anchor 를 갱신한다."
10966
11021
  },
10967
11022
  {
10968
11023
  "kind": "method",
10969
- "name": "_select",
10970
- "privacy": "private",
11024
+ "name": "selectRange",
11025
+ "return": {
11026
+ "type": {
11027
+ "text": "void"
11028
+ }
11029
+ },
10971
11030
  "parameters": [
10972
11031
  {
10973
- "name": "id",
11032
+ "name": "target",
10974
11033
  "type": {
10975
- "text": "string"
11034
+ "text": "Component"
10976
11035
  }
10977
11036
  },
10978
11037
  {
10979
- "name": "e",
11038
+ "name": "terms",
10980
11039
  "type": {
10981
- "text": "MouseEvent"
11040
+ "text": "SearchTerm[]"
10982
11041
  }
10983
11042
  }
10984
- ]
11043
+ ],
11044
+ "description": "shift+click 범위(볼륨) 선택 — anchor↔target 사이의 **보이는 트리 행**을 블록 선택한다.\ntarget 이 이미 선택돼 있으면 그 범위를 블록 **해제**(additive/subtractive). anchor 는 유지."
10985
11045
  },
10986
11046
  {
10987
11047
  "kind": "method",
10988
- "name": "_commitValue",
11048
+ "name": "_decorate",
10989
11049
  "privacy": "private",
11050
+ "return": {
11051
+ "type": {
11052
+ "text": "void"
11053
+ }
11054
+ },
10990
11055
  "parameters": [
10991
11056
  {
10992
- "name": "id",
11057
+ "name": "component",
10993
11058
  "type": {
10994
- "text": "string"
11059
+ "text": "Component"
10995
11060
  }
10996
11061
  }
10997
- ]
11062
+ ],
11063
+ "description": "fmsim 선택 강조 — deco-border (operato 는 reaction)."
10998
11064
  },
10999
11065
  {
11000
11066
  "kind": "method",
11001
- "name": "_emitChange",
11002
- "privacy": "private"
11067
+ "name": "_visibleOrder",
11068
+ "privacy": "private",
11069
+ "return": {
11070
+ "type": {
11071
+ "text": "Component[]"
11072
+ }
11073
+ },
11074
+ "parameters": [
11075
+ {
11076
+ "name": "terms",
11077
+ "type": {
11078
+ "text": "SearchTerm[]"
11079
+ }
11080
+ }
11081
+ ],
11082
+ "description": "현재 트리 뷰에 보이는 컴포넌트를 렌더 순서대로 반환 — 범위 선택의 기준.\nrenderNode 와 동일 규칙(shouldBeShown = 자신/자손 매치, isExtended 자식만 전개)."
11083
+ }
11084
+ ]
11085
+ }
11086
+ ],
11087
+ "exports": [
11088
+ {
11089
+ "kind": "js",
11090
+ "name": "InspectorController",
11091
+ "declaration": {
11092
+ "name": "InspectorController",
11093
+ "module": "src/modeller/property-sidebar/inspector/inspector-controller.ts"
11094
+ }
11095
+ }
11096
+ ]
11097
+ },
11098
+ {
11099
+ "kind": "javascript-module",
11100
+ "path": "src/modeller/property-sidebar/inspector/inspector-group-view.ts",
11101
+ "declarations": [
11102
+ {
11103
+ "kind": "function",
11104
+ "name": "renderInspectorGroupView",
11105
+ "return": {
11106
+ "type": {
11107
+ "text": "TemplateResult"
11108
+ }
11109
+ },
11110
+ "parameters": [
11111
+ {
11112
+ "name": "index",
11113
+ "type": {
11114
+ "text": "InspectorIndex | undefined"
11115
+ }
11116
+ },
11117
+ {
11118
+ "name": "ctx",
11119
+ "type": {
11120
+ "text": "GroupViewContext"
11121
+ }
11122
+ }
11123
+ ],
11124
+ "description": "타입 그룹 뷰 전체 렌더 — 타입명 오름차순."
11125
+ }
11126
+ ],
11127
+ "exports": [
11128
+ {
11129
+ "kind": "js",
11130
+ "name": "renderInspectorGroupView",
11131
+ "declaration": {
11132
+ "name": "renderInspectorGroupView",
11133
+ "module": "src/modeller/property-sidebar/inspector/inspector-group-view.ts"
11134
+ }
11135
+ }
11136
+ ]
11137
+ },
11138
+ {
11139
+ "kind": "javascript-module",
11140
+ "path": "src/modeller/property-sidebar/inspector/inspector-highlight.ts",
11141
+ "declarations": [
11142
+ {
11143
+ "kind": "function",
11144
+ "name": "highlight",
11145
+ "return": {
11146
+ "type": {
11147
+ "text": "TemplateResult | string"
11148
+ }
11149
+ },
11150
+ "parameters": [
11151
+ {
11152
+ "name": "text",
11153
+ "type": {
11154
+ "text": "string | undefined"
11155
+ }
11003
11156
  },
11004
11157
  {
11005
- "kind": "method",
11006
- "name": "_load",
11007
- "privacy": "private",
11008
- "description": "후보 전체를 1회 조회 (포커스 시). keyword 는 보내지 않으며, 표시 필터는 _items\n게터가 로컬에서 처리한다. entityType(+unit 이면 machine) 만 서버로 보낸다."
11158
+ "name": "terms",
11159
+ "type": {
11160
+ "text": "SearchTerm[]"
11161
+ }
11162
+ }
11163
+ ],
11164
+ "description": "text 안에서 terms 의 값(field 무관, 시각 표시용)에 일치하는 부분을 하이라이트.\n매치가 없거나 terms 가 비면 원본 문자열을 그대로 반환."
11165
+ }
11166
+ ],
11167
+ "exports": [
11168
+ {
11169
+ "kind": "js",
11170
+ "name": "highlight",
11171
+ "declaration": {
11172
+ "name": "highlight",
11173
+ "module": "src/modeller/property-sidebar/inspector/inspector-highlight.ts"
11174
+ }
11175
+ }
11176
+ ]
11177
+ },
11178
+ {
11179
+ "kind": "javascript-module",
11180
+ "path": "src/modeller/property-sidebar/inspector/inspector-model.ts",
11181
+ "declarations": [
11182
+ {
11183
+ "kind": "function",
11184
+ "name": "buildInspectorIndex",
11185
+ "return": {
11186
+ "type": {
11187
+ "text": "InspectorIndex"
11188
+ }
11189
+ },
11190
+ "parameters": [
11191
+ {
11192
+ "name": "root",
11193
+ "type": {
11194
+ "text": "Component"
11195
+ }
11009
11196
  }
11010
11197
  ],
11011
- "events": [
11198
+ "description": "scene root 를 순회해 flat 목록 + 타입 그룹 맵을 만든다. root 자신은 제외."
11199
+ },
11200
+ {
11201
+ "kind": "function",
11202
+ "name": "parseQuery",
11203
+ "return": {
11204
+ "type": {
11205
+ "text": "SearchTerm[]"
11206
+ }
11207
+ },
11208
+ "parameters": [
11012
11209
  {
11013
- "name": "change",
11210
+ "name": "raw",
11014
11211
  "type": {
11015
- "text": "CustomEvent"
11212
+ "text": "string"
11016
11213
  }
11017
11214
  }
11018
11215
  ],
11019
- "attributes": [
11216
+ "description": "검색 문자열을 공백 토큰화해 SearchTerm[] 로 파싱. `field:value` 는 필드 스코프. 소문자화."
11217
+ },
11218
+ {
11219
+ "kind": "function",
11220
+ "name": "matchesQuery",
11221
+ "return": {
11222
+ "type": {
11223
+ "text": "boolean"
11224
+ }
11225
+ },
11226
+ "parameters": [
11020
11227
  {
11021
- "name": "value",
11228
+ "name": "component",
11022
11229
  "type": {
11023
- "text": "string"
11024
- },
11025
- "default": "''",
11026
- "description": "현재 ID 값.",
11027
- "fieldName": "value"
11230
+ "text": "Component"
11231
+ }
11028
11232
  },
11029
11233
  {
11030
- "name": "entityType",
11234
+ "name": "terms",
11031
11235
  "type": {
11032
- "text": "string"
11033
- },
11034
- "default": "''",
11035
- "description": "검색 조건 — 선택된 컴포넌트 타입 (예: 'STOCKER', 'AGV', 'Port').",
11036
- "fieldName": "entityType"
11037
- },
11236
+ "text": "SearchTerm[]"
11237
+ }
11238
+ }
11239
+ ],
11240
+ "description": "파싱된 검색어(AND)로 컴포넌트 매치 판정.\n- field 지정 term → 해당 필드 부분일치\n- bare term → type/name/id/tag/class 통합 부분일치\n빈 terms 는 항상 매치."
11241
+ }
11242
+ ],
11243
+ "exports": [
11244
+ {
11245
+ "kind": "js",
11246
+ "name": "buildInspectorIndex",
11247
+ "declaration": {
11248
+ "name": "buildInspectorIndex",
11249
+ "module": "src/modeller/property-sidebar/inspector/inspector-model.ts"
11250
+ }
11251
+ },
11252
+ {
11253
+ "kind": "js",
11254
+ "name": "parseQuery",
11255
+ "declaration": {
11256
+ "name": "parseQuery",
11257
+ "module": "src/modeller/property-sidebar/inspector/inspector-model.ts"
11258
+ }
11259
+ },
11260
+ {
11261
+ "kind": "js",
11262
+ "name": "matchesQuery",
11263
+ "declaration": {
11264
+ "name": "matchesQuery",
11265
+ "module": "src/modeller/property-sidebar/inspector/inspector-model.ts"
11266
+ }
11267
+ }
11268
+ ]
11269
+ },
11270
+ {
11271
+ "kind": "javascript-module",
11272
+ "path": "src/modeller/property-sidebar/inspector/inspector-tree-view.ts",
11273
+ "declarations": [
11274
+ {
11275
+ "kind": "function",
11276
+ "name": "countMatches",
11277
+ "return": {
11278
+ "type": {
11279
+ "text": "number"
11280
+ }
11281
+ },
11282
+ "parameters": [
11038
11283
  {
11039
- "name": "machine",
11284
+ "name": "component",
11040
11285
  "type": {
11041
- "text": "string"
11042
- },
11043
- "default": "''",
11044
- "description": "검색 조건 — 부모 machine id (unit 컴포넌트가 소속 machine 을 알 때).",
11045
- "fieldName": "machine"
11286
+ "text": "Component"
11287
+ }
11046
11288
  },
11047
11289
  {
11048
- "name": "requireMachine",
11290
+ "name": "terms",
11049
11291
  "type": {
11050
- "text": "boolean"
11051
- },
11052
- "default": "false",
11053
- "description": "machine 필수 타입(예: Port) — machine 없으면 조회하지 않는다 (후보 과다 방지).",
11054
- "fieldName": "requireMachine"
11055
- },
11292
+ "text": "SearchTerm[]"
11293
+ }
11294
+ }
11295
+ ],
11296
+ "description": "검색 매치 개수(루트 포함, 전체 트리) — ROOT 노드 count 표시용."
11297
+ },
11298
+ {
11299
+ "kind": "function",
11300
+ "name": "renderInspectorTree",
11301
+ "return": {
11302
+ "type": {
11303
+ "text": "TemplateResult"
11304
+ }
11305
+ },
11306
+ "parameters": [
11056
11307
  {
11057
- "name": "localItems",
11308
+ "name": "root",
11058
11309
  "type": {
11059
- "text": "string[] | null"
11060
- },
11061
- "default": "null",
11062
- "description": "백엔드 조회 대신 사용할 로컬 후보 리스트 (예: parentObject — 씬의 머신들). null 이면 백엔드 조회.",
11063
- "fieldName": "localItems"
11310
+ "text": "Component | undefined"
11311
+ }
11064
11312
  },
11065
11313
  {
11066
- "name": "placeholder",
11314
+ "name": "ctx",
11067
11315
  "type": {
11068
- "text": "string"
11069
- },
11070
- "default": "''",
11071
- "fieldName": "placeholder"
11316
+ "text": "TreeViewContext"
11317
+ }
11072
11318
  }
11073
11319
  ],
11074
- "superclass": {
11075
- "name": "LitElement",
11076
- "package": "lit"
11077
- },
11078
- "customElement": true
11320
+ "description": "scene.root 부터 트리를 렌더한다."
11079
11321
  }
11080
11322
  ],
11081
11323
  "exports": [
11082
11324
  {
11083
11325
  "kind": "js",
11084
- "name": "OxInputEntityId",
11326
+ "name": "countMatches",
11085
11327
  "declaration": {
11086
- "name": "OxInputEntityId",
11087
- "module": "src/modeller/property-sidebar/shapes/ox-input-entity-id.ts"
11328
+ "name": "countMatches",
11329
+ "module": "src/modeller/property-sidebar/inspector/inspector-tree-view.ts"
11330
+ }
11331
+ },
11332
+ {
11333
+ "kind": "js",
11334
+ "name": "renderInspectorTree",
11335
+ "declaration": {
11336
+ "name": "renderInspectorTree",
11337
+ "module": "src/modeller/property-sidebar/inspector/inspector-tree-view.ts"
11088
11338
  }
11089
11339
  }
11090
11340
  ]
11091
11341
  },
11092
11342
  {
11093
11343
  "kind": "javascript-module",
11094
- "path": "src/modeller/property-sidebar/shapes/shapes.ts",
11344
+ "path": "src/modeller/property-sidebar/inspector/inspector.ts",
11095
11345
  "declarations": [
11096
11346
  {
11097
11347
  "kind": "class",
11098
11348
  "description": "",
11099
- "name": "PropertyShapes",
11349
+ "name": "SceneInspector",
11100
11350
  "members": [
11101
11351
  {
11102
11352
  "kind": "field",
11103
- "name": "scopedElements",
11104
- "static": true,
11105
- "readonly": true
11353
+ "name": "scene",
11354
+ "type": {
11355
+ "text": "Scene | undefined"
11356
+ },
11357
+ "attribute": "scene"
11106
11358
  },
11107
11359
  {
11108
11360
  "kind": "field",
11109
- "name": "value",
11361
+ "name": "searchText",
11110
11362
  "type": {
11111
- "text": "Properties | undefined"
11363
+ "text": "string"
11112
11364
  },
11113
- "attribute": "value"
11365
+ "privacy": "private",
11366
+ "default": "''"
11114
11367
  },
11115
11368
  {
11116
11369
  "kind": "field",
11117
- "name": "bounds",
11370
+ "name": "viewMode",
11118
11371
  "type": {
11119
- "text": "BOUNDS | null"
11372
+ "text": "InspectorViewMode"
11120
11373
  },
11121
- "default": "null",
11122
- "attribute": "bounds"
11374
+ "privacy": "private"
11123
11375
  },
11124
11376
  {
11125
11377
  "kind": "field",
11126
- "name": "selected",
11378
+ "name": "controller",
11379
+ "privacy": "private",
11380
+ "default": "new InspectorController()"
11381
+ },
11382
+ {
11383
+ "kind": "field",
11384
+ "name": "show",
11127
11385
  "type": {
11128
- "text": "Component[]"
11386
+ "text": "boolean"
11129
11387
  },
11130
- "default": "[]",
11131
- "attribute": "selected"
11388
+ "privacy": "private",
11389
+ "default": "false"
11132
11390
  },
11133
11391
  {
11134
- "kind": "method",
11135
- "name": "_onValueChange",
11136
- "parameters": [
11137
- {
11138
- "name": "e",
11139
- "type": {
11140
- "text": "Event"
11141
- }
11142
- }
11143
- ],
11144
- "inheritedFrom": {
11145
- "name": "AbstractProperty",
11146
- "module": "src/modeller/property-sidebar/abstract-property.ts"
11147
- }
11392
+ "kind": "field",
11393
+ "name": "_lastSelected",
11394
+ "type": {
11395
+ "text": "Component[]"
11396
+ },
11397
+ "privacy": "private",
11398
+ "default": "[]",
11399
+ "description": "reveal(스크롤) 판정용 직전 선택."
11148
11400
  },
11149
11401
  {
11150
11402
  "kind": "method",
11151
- "name": "_hasTextProperty",
11152
- "parameters": [
11153
- {
11154
- "name": "selected",
11155
- "type": {
11156
- "text": "Component[]"
11157
- }
11403
+ "name": "_renderResult",
11404
+ "privacy": "private",
11405
+ "return": {
11406
+ "type": {
11407
+ "text": "TemplateResult"
11158
11408
  }
11159
- ]
11409
+ }
11160
11410
  },
11161
11411
  {
11162
11412
  "kind": "method",
11163
- "name": "_hasProperties",
11413
+ "name": "_setViewMode",
11414
+ "privacy": "private",
11164
11415
  "parameters": [
11165
11416
  {
11166
- "name": "selected",
11417
+ "name": "mode",
11167
11418
  "type": {
11168
- "text": "Component[]"
11419
+ "text": "InspectorViewMode"
11169
11420
  }
11170
11421
  }
11171
11422
  ]
11172
11423
  },
11173
11424
  {
11174
- "kind": "method",
11175
- "name": "_isIdentifiable",
11176
- "parameters": [
11177
- {
11178
- "name": "selected",
11179
- "type": {
11180
- "text": "Component[]"
11181
- }
11182
- }
11183
- ]
11425
+ "kind": "field",
11426
+ "name": "_collapseGroups",
11427
+ "privacy": "private"
11428
+ },
11429
+ {
11430
+ "kind": "field",
11431
+ "name": "_expandGroups",
11432
+ "privacy": "private"
11184
11433
  },
11185
11434
  {
11186
11435
  "kind": "method",
11187
- "name": "_parentMachineId",
11188
- "return": {
11189
- "type": {
11190
- "text": "string"
11191
- }
11192
- },
11193
- "parameters": [
11194
- {
11195
- "name": "selected",
11196
- "type": {
11197
- "text": "Component[]"
11198
- }
11199
- }
11200
- ],
11201
- "description": "단일 선택 컴포넌트의 부모 machine id (unit 의 ID 검색 시 조회조건으로 전달).\n부모가 루트 모델/레이어가 아니고 id 를 가지면 그 id 를 반환 — unit 이 자신의\n소속 machine 을 특정할 수 있는 경우에 해당. 그 외엔 빈 문자열."
11436
+ "name": "refresh",
11437
+ "description": "외부에서 강제 재렌더용."
11202
11438
  },
11203
11439
  {
11204
11440
  "kind": "method",
11205
- "name": "_idLookupType",
11206
- "return": {
11207
- "type": {
11208
- "text": "string | undefined"
11209
- }
11210
- },
11211
- "parameters": [
11212
- {
11213
- "name": "selected",
11214
- "type": {
11215
- "text": "Component[]"
11216
- }
11217
- }
11218
- ],
11219
- "description": "선택 컴포넌트의 id 조회용 타입명 (capability `idLookupType`). 값이 있으면 그 타입으로\n검색 에디터를 띄우고, 없으면(일반 도형·Carrier 등) plain input 으로 두어 불필요한 id\n리스트 요청을 보내지 않는다. 기본은 자기 타입이며 컴포넌트가 다른 타입으로 override 가능.\n(머신/유닛 + Node 가 opt-in. isLVComponent 은 Carrier 포함·Node 제외라 부적합.)"
11441
+ "name": "_maybeReveal",
11442
+ "privacy": "private",
11443
+ "description": "선택이 바뀌면(캔버스 등) 해당 항목을 리스트에 노출한다 — 그룹 뷰면 그룹을 펼친 뒤 스크롤.\nscrollIntoView({block:'nearest'}) 라 이미 보이는 경우(인스펙터 클릭 등)엔 사실상 no-op."
11220
11444
  },
11221
11445
  {
11222
11446
  "kind": "method",
11223
- "name": "_idLookupEnabled",
11447
+ "name": "_resolveComponent",
11448
+ "privacy": "private",
11224
11449
  "return": {
11225
11450
  "type": {
11226
- "text": "boolean"
11451
+ "text": "Component | undefined"
11227
11452
  }
11228
11453
  },
11229
11454
  "parameters": [
11230
11455
  {
11231
- "name": "selected",
11456
+ "name": "e",
11232
11457
  "type": {
11233
- "text": "Component[]"
11458
+ "text": "MouseEvent"
11234
11459
  }
11235
11460
  }
11236
11461
  ],
11237
- "description": "Board 루트 속성 state.idLookup 으로 id 룩업 전체 ON/OFF (기본 ON)."
11238
- },
11239
- {
11240
- "kind": "method",
11241
- "name": "_isClassIdentifiable",
11242
- "parameters": [
11243
- {
11244
- "name": "selected",
11245
- "type": {
11246
- "text": "Component[]"
11247
- }
11248
- }
11249
- ]
11462
+ "description": "이벤트 타겟에서 상위로 올라가며 `.component` 를 가진 요소를 찾는다."
11250
11463
  },
11251
11464
  {
11252
11465
  "kind": "method",
11253
- "name": "_isLine",
11466
+ "name": "_onclick",
11254
11467
  "parameters": [
11255
11468
  {
11256
- "name": "selected",
11469
+ "name": "e",
11257
11470
  "type": {
11258
- "text": "Component[]"
11471
+ "text": "MouseEvent"
11259
11472
  }
11260
11473
  }
11261
11474
  ]
11262
11475
  },
11263
11476
  {
11264
11477
  "kind": "method",
11265
- "name": "_is3dish",
11478
+ "name": "_ondblclick",
11266
11479
  "parameters": [
11267
11480
  {
11268
- "name": "selected",
11481
+ "name": "e",
11269
11482
  "type": {
11270
- "text": "Component[]"
11483
+ "text": "MouseEvent"
11271
11484
  }
11272
11485
  }
11273
11486
  ]
11274
- },
11487
+ }
11488
+ ],
11489
+ "attributes": [
11275
11490
  {
11276
- "kind": "method",
11277
- "name": "_getValueFromEventTarget",
11278
- "parameters": [
11279
- {
11280
- "name": "element",
11281
- "type": {
11282
- "text": "HTMLElement"
11283
- }
11284
- }
11285
- ],
11286
- "inheritedFrom": {
11287
- "name": "AbstractProperty",
11288
- "module": "src/modeller/property-sidebar/abstract-property.ts"
11289
- }
11290
- },
11491
+ "name": "scene",
11492
+ "type": {
11493
+ "text": "Scene | undefined"
11494
+ },
11495
+ "fieldName": "scene"
11496
+ }
11497
+ ],
11498
+ "superclass": {
11499
+ "name": "LitElement",
11500
+ "package": "lit"
11501
+ },
11502
+ "customElement": true
11503
+ }
11504
+ ],
11505
+ "exports": [
11506
+ {
11507
+ "kind": "js",
11508
+ "name": "SceneInspector",
11509
+ "declaration": {
11510
+ "name": "SceneInspector",
11511
+ "module": "src/modeller/property-sidebar/inspector/inspector.ts"
11512
+ }
11513
+ }
11514
+ ]
11515
+ },
11516
+ {
11517
+ "kind": "javascript-module",
11518
+ "path": "src/modeller/property-sidebar/specifics/parent-object.ts",
11519
+ "declarations": [
11520
+ {
11521
+ "kind": "function",
11522
+ "name": "hasParentObject",
11523
+ "return": {
11524
+ "type": {
11525
+ "text": "boolean"
11526
+ }
11527
+ },
11528
+ "parameters": [
11291
11529
  {
11292
- "kind": "method",
11293
- "name": "_onAfterValueChange",
11294
- "parameters": [
11295
- {
11296
- "name": "key",
11297
- "type": {
11298
- "text": "string"
11299
- }
11300
- },
11301
- {
11302
- "name": "value",
11303
- "type": {
11304
- "text": "any"
11305
- }
11306
- }
11307
- ],
11308
- "inheritedFrom": {
11309
- "name": "AbstractProperty",
11310
- "module": "src/modeller/property-sidebar/abstract-property.ts"
11530
+ "name": "target",
11531
+ "type": {
11532
+ "text": "any"
11311
11533
  }
11312
11534
  }
11313
11535
  ],
11314
- "events": [
11536
+ "description": "대상이 ParentObjectMixin(= parentObjectTypes capability) 을 가졌는지."
11537
+ },
11538
+ {
11539
+ "kind": "function",
11540
+ "name": "parentObjectForTemplate",
11541
+ "return": {
11542
+ "type": {
11543
+ "text": "{ has: boolean; items: string[] }"
11544
+ }
11545
+ },
11546
+ "parameters": [
11315
11547
  {
11316
- "name": "bounds-change",
11548
+ "name": "template",
11317
11549
  "type": {
11318
- "text": "CustomEvent"
11550
+ "text": "any"
11319
11551
  }
11320
11552
  },
11321
11553
  {
11322
- "name": "property-change",
11554
+ "name": "root",
11323
11555
  "type": {
11324
- "text": "CustomEvent"
11325
- },
11326
- "inheritedFrom": {
11327
- "name": "AbstractProperty",
11328
- "module": "src/modeller/property-sidebar/abstract-property.ts"
11556
+ "text": "any"
11329
11557
  }
11330
11558
  }
11331
11559
  ],
11332
- "attributes": [
11560
+ "description": "template(모델)의 타입으로부터 parentObject 지원 여부 + 후보 리스트 계산 (bulk-paste 용).\ntemplate 은 라이브 컴포넌트가 아니라 클립보드 모델이므로, 타입 클래스의 임시 인스턴스로\nparentObjectTypes(클래스 상수 capability)를 읽은 뒤 씬(root)에서 후보를 수집한다."
11561
+ },
11562
+ {
11563
+ "kind": "function",
11564
+ "name": "collectParentObjectItems",
11565
+ "return": {
11566
+ "type": {
11567
+ "text": "string[]"
11568
+ }
11569
+ },
11570
+ "parameters": [
11333
11571
  {
11334
- "name": "value",
11572
+ "name": "parentObjectTypes",
11335
11573
  "type": {
11336
- "text": "Properties | undefined"
11574
+ "text": "string[] | undefined"
11337
11575
  },
11338
- "fieldName": "value"
11576
+ "description": "대상 컴포넌트가 부모로 삼을 수 있는 타입들 (빈 배열이면 isMcsMachine 폴백)."
11339
11577
  },
11340
11578
  {
11341
- "name": "bounds",
11579
+ "name": "root",
11342
11580
  "type": {
11343
- "text": "BOUNDS | null"
11581
+ "text": "any"
11344
11582
  },
11345
- "default": "null",
11346
- "fieldName": "bounds"
11583
+ "description": "씬 루트 (여기서부터 재귀 수집)."
11347
11584
  },
11348
11585
  {
11349
- "name": "selected",
11586
+ "name": "opts",
11587
+ "optional": true,
11350
11588
  "type": {
11351
- "text": "Component[]"
11352
- },
11353
- "default": "[]",
11354
- "fieldName": "selected"
11355
- }
11356
- ],
11357
- "mixins": [
11589
+ "text": "{ exclude?: any; knownParentId?: string }"
11590
+ }
11591
+ },
11358
11592
  {
11359
- "name": "ScopedElementsMixin",
11360
- "package": "@open-wc/scoped-elements"
11593
+ "description": "후보에서 제외할 컴포넌트 (자기 자신 등).",
11594
+ "name": "opts.exclude"
11595
+ },
11596
+ {
11597
+ "description": "이미 아는 부모 id — 있으면 후보 맨 앞으로.",
11598
+ "name": "opts.knownParentId"
11361
11599
  }
11362
11600
  ],
11363
- "superclass": {
11364
- "name": "AbstractProperty",
11365
- "module": "/src/modeller/property-sidebar/abstract-property"
11366
- }
11601
+ "description": "parentObject 후보 id 리스트."
11367
11602
  }
11368
11603
  ],
11369
11604
  "exports": [
11370
11605
  {
11371
11606
  "kind": "js",
11372
- "name": "PropertyShapes",
11607
+ "name": "hasParentObject",
11373
11608
  "declaration": {
11374
- "name": "PropertyShapes",
11375
- "module": "src/modeller/property-sidebar/shapes/shapes.ts"
11609
+ "name": "hasParentObject",
11610
+ "module": "src/modeller/property-sidebar/specifics/parent-object.ts"
11611
+ }
11612
+ },
11613
+ {
11614
+ "kind": "js",
11615
+ "name": "parentObjectForTemplate",
11616
+ "declaration": {
11617
+ "name": "parentObjectForTemplate",
11618
+ "module": "src/modeller/property-sidebar/specifics/parent-object.ts"
11619
+ }
11620
+ },
11621
+ {
11622
+ "kind": "js",
11623
+ "name": "collectParentObjectItems",
11624
+ "declaration": {
11625
+ "name": "collectParentObjectItems",
11626
+ "module": "src/modeller/property-sidebar/specifics/parent-object.ts"
11376
11627
  }
11377
11628
  }
11378
11629
  ]
@@ -11543,6 +11794,16 @@
11543
11794
  "default": "[]",
11544
11795
  "attribute": "propertyEditor"
11545
11796
  },
11797
+ {
11798
+ "kind": "field",
11799
+ "name": "_visibleProps",
11800
+ "type": {
11801
+ "text": "any[]"
11802
+ },
11803
+ "privacy": "private",
11804
+ "description": "3D 비활성 시 requires3d 태그 속성(조명 프리셋 등)을 뺀 목록.",
11805
+ "readonly": true
11806
+ },
11546
11807
  {
11547
11808
  "kind": "field",
11548
11809
  "name": "boundINeedSelected",
@@ -11695,7 +11956,7 @@
11695
11956
  }
11696
11957
  }
11697
11958
  ],
11698
- "description": "parentObject 후보 — 모델(씬)에서 컴포넌트 타입 기준 수집. 컴포넌트의 parentObjectTypes\n(예: AGV→['AGVLine'], PortFlow→['Port']) 타입만, 빈 배열이면 모든 머신(isMcsMachine). 자기 자신 제외."
11959
+ "description": "parentObject 후보 — 씬에서 컴포넌트 타입 기준 수집 (공유 헬퍼 재사용).\n실제 부모 컨테이너가 id 를 가지면 그 부모를 후보 맨 위로."
11699
11960
  },
11700
11961
  {
11701
11962
  "kind": "method",