@fmsim/board 2.0.0-beta.9 → 2.0.0-beta.93

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 (102) hide show
  1. package/custom-elements.json +6481 -3074
  2. package/demo/index-modeller.html +1 -1
  3. package/demo/index-player.html +2 -2
  4. package/demo/index-viewer.html +2 -2
  5. package/demo/index.html +2 -2
  6. package/dist/src/component/etc.js +36 -0
  7. package/dist/src/component/etc.js.map +1 -1
  8. package/dist/src/component/index.d.ts +1 -0
  9. package/dist/src/component/index.js +1 -0
  10. package/dist/src/component/index.js.map +1 -1
  11. package/dist/src/component/restful-property-editor-backdrop-faces.d.ts +50 -0
  12. package/dist/src/component/restful-property-editor-backdrop-faces.js +524 -0
  13. package/dist/src/component/restful-property-editor-backdrop-faces.js.map +1 -0
  14. package/dist/src/data-storage/board-model-cache.d.ts +13 -0
  15. package/dist/src/data-storage/board-model-cache.js +66 -0
  16. package/dist/src/data-storage/board-model-cache.js.map +1 -0
  17. package/dist/src/index.d.ts +3 -0
  18. package/dist/src/index.js +2 -0
  19. package/dist/src/index.js.map +1 -1
  20. package/dist/src/layers/mcs-mouse-event-handler.js +8 -0
  21. package/dist/src/layers/mcs-mouse-event-handler.js.map +1 -1
  22. package/dist/src/layers/movement-layer.d.ts +4 -4
  23. package/dist/src/layers/movement-layer.js +16 -8
  24. package/dist/src/layers/movement-layer.js.map +1 -1
  25. package/dist/src/modeller/bulk-create-dialog.d.ts +51 -0
  26. package/dist/src/modeller/bulk-create-dialog.js +531 -0
  27. package/dist/src/modeller/bulk-create-dialog.js.map +1 -0
  28. package/dist/src/modeller/bulk-create.d.ts +101 -0
  29. package/dist/src/modeller/bulk-create.js +199 -0
  30. package/dist/src/modeller/bulk-create.js.map +1 -0
  31. package/dist/src/modeller/component-toolbar/component-menu.d.ts +1 -1
  32. package/dist/src/modeller/component-toolbar/component-toolbar.d.ts +1 -1
  33. package/dist/src/modeller/edit-toolbar.d.ts +13 -0
  34. package/dist/src/modeller/edit-toolbar.js +168 -7
  35. package/dist/src/modeller/edit-toolbar.js.map +1 -1
  36. package/dist/src/modeller/property-sidebar/abstract-property.js +10 -2
  37. package/dist/src/modeller/property-sidebar/abstract-property.js.map +1 -1
  38. package/dist/src/modeller/property-sidebar/data-binding/data-binding.d.ts +1 -1
  39. package/dist/src/modeller/property-sidebar/effects/effects.d.ts +10 -1
  40. package/dist/src/modeller/property-sidebar/effects/effects.js +66 -1
  41. package/dist/src/modeller/property-sidebar/effects/effects.js.map +1 -1
  42. package/dist/src/modeller/property-sidebar/effects/event-handler-adapter.d.ts +44 -0
  43. package/dist/src/modeller/property-sidebar/effects/event-handler-adapter.js +70 -0
  44. package/dist/src/modeller/property-sidebar/effects/event-handler-adapter.js.map +1 -0
  45. package/dist/src/modeller/property-sidebar/effects/property-event.d.ts +13 -3
  46. package/dist/src/modeller/property-sidebar/effects/property-event.js +20 -11
  47. package/dist/src/modeller/property-sidebar/effects/property-event.js.map +1 -1
  48. package/dist/src/modeller/property-sidebar/property-sidebar.d.ts +1 -1
  49. package/dist/src/modeller/property-sidebar/shapes/ox-input-entity-id.d.ts +75 -0
  50. package/dist/src/modeller/property-sidebar/shapes/ox-input-entity-id.js +346 -0
  51. package/dist/src/modeller/property-sidebar/shapes/ox-input-entity-id.js.map +1 -0
  52. package/dist/src/modeller/property-sidebar/shapes/shapes.d.ts +22 -1
  53. package/dist/src/modeller/property-sidebar/shapes/shapes.js +94 -2
  54. package/dist/src/modeller/property-sidebar/shapes/shapes.js.map +1 -1
  55. package/dist/src/modeller/property-sidebar/specifics/specifics.d.ts +25 -1
  56. package/dist/src/modeller/property-sidebar/specifics/specifics.js +112 -2
  57. package/dist/src/modeller/property-sidebar/specifics/specifics.js.map +1 -1
  58. package/dist/src/modeller/property-sidebar/styles/styles.d.ts +1 -1
  59. package/dist/src/modeller/scene-viewer/ox-scene-layer.d.ts +4 -3
  60. package/dist/src/modeller/scene-viewer/ox-scene-layer.js +2 -1
  61. package/dist/src/modeller/scene-viewer/ox-scene-layer.js.map +1 -1
  62. package/dist/src/modeller/scene-viewer/ox-scene-viewer.d.ts +2 -1
  63. package/dist/src/modeller/scene-viewer/ox-scene-viewer.js +5 -1
  64. package/dist/src/modeller/scene-viewer/ox-scene-viewer.js.map +1 -1
  65. package/dist/src/ox-board-component-info.d.ts +1 -0
  66. package/dist/src/ox-board-component-info.js +42 -2
  67. package/dist/src/ox-board-component-info.js.map +1 -1
  68. package/dist/src/ox-board-list.js +2 -2
  69. package/dist/src/ox-board-list.js.map +1 -1
  70. package/dist/src/ox-board-modeller.d.ts +6 -3
  71. package/dist/src/ox-board-modeller.js +14 -1
  72. package/dist/src/ox-board-modeller.js.map +1 -1
  73. package/dist/src/ox-board-viewer.d.ts +113 -13
  74. package/dist/src/ox-board-viewer.js +764 -98
  75. package/dist/src/ox-board-viewer.js.map +1 -1
  76. package/dist/src/ox-editor-board-selector.d.ts +3 -0
  77. package/dist/src/ox-editor-board-selector.js +38 -9
  78. package/dist/src/ox-editor-board-selector.js.map +1 -1
  79. package/dist/src/ox-playback-controls.d.ts +157 -0
  80. package/dist/src/ox-playback-controls.js +1089 -0
  81. package/dist/src/ox-playback-controls.js.map +1 -0
  82. package/dist/src/playback/carrier-tracking-store.d.ts +51 -0
  83. package/dist/src/playback/carrier-tracking-store.js +115 -0
  84. package/dist/src/playback/carrier-tracking-store.js.map +1 -0
  85. package/dist/src/playback/playback-engine.d.ts +106 -0
  86. package/dist/src/playback/playback-engine.js +395 -0
  87. package/dist/src/playback/playback-engine.js.map +1 -0
  88. package/dist/src/selector/board-creation-popup.js +2 -2
  89. package/dist/src/selector/board-creation-popup.js.map +1 -1
  90. package/dist/src/selector/board-thumbnail-card.js +6 -6
  91. package/dist/src/selector/board-thumbnail-card.js.map +1 -1
  92. package/dist/src/selector/ox-board-creation-card.js +2 -2
  93. package/dist/src/selector/ox-board-creation-card.js.map +1 -1
  94. package/dist/src/selector/ox-board-selector.js +21 -10
  95. package/dist/src/selector/ox-board-selector.js.map +1 -1
  96. package/dist/tsconfig.tsbuildinfo +1 -1
  97. package/icons/components/text.png +0 -0
  98. package/icons/fab/mode-2d.svg +25 -0
  99. package/icons/fab/mode-3d.svg +25 -0
  100. package/icons/fab/playback-play.svg +49 -0
  101. package/icons/fab/playback-stop.svg +50 -0
  102. package/package.json +8 -4
@@ -3,8 +3,9 @@ import '@material/web/icon/icon.js';
3
3
  import './layers/movement-layer.js';
4
4
  import './ox-board-component-info.js';
5
5
  import './layers/mcs-mouse-event-handler.js';
6
+ import './ox-playback-controls.js';
6
7
  import { LitElement, PropertyValues } from 'lit';
7
- import { Component, ReferenceProvider } from '@hatiolab/things-scene';
8
+ import { Component, LoadTracker, ReferenceProvider } from '@hatiolab/things-scene';
8
9
  export declare class BoardViewer extends LitElement {
9
10
  static styles: import("lit").CSSResult[];
10
11
  baseUrl: string;
@@ -12,26 +13,29 @@ export declare class BoardViewer extends LitElement {
12
13
  provider: ReferenceProvider | null;
13
14
  data: any;
14
15
  values: any;
16
+ /** 앱에서 미리 생성한 LoadTracker — fetch 시작 전 생성하면 네트워크 시간도 추적 */
17
+ loadTracker?: LoadTracker;
15
18
  hideFullscreen: boolean;
16
19
  hideNavigation: boolean;
17
- _scene: any;
18
- _forward: {
19
- id: string;
20
- scene: any;
21
- }[];
22
- _backward: {
23
- id: string;
24
- scene: any;
25
- }[];
26
- _oldtarget: HTMLElement | null;
27
- _fade_animations?: Array<Animation>;
20
+ private _scene;
21
+ private _forward;
22
+ private _backward;
23
+ private _loadingOverlay?;
24
+ private _oldtarget;
25
+ private _fade_animations?;
26
+ _fabExpanded: boolean;
27
+ _playbackActive: boolean;
28
+ get _is3dMode(): boolean;
28
29
  currentBoardId?: string;
29
30
  _target: HTMLElement;
30
31
  _prev: HTMLElement;
31
32
  _next: HTMLElement;
32
- _fullscreen: HTMLElement;
33
+ _fabGroup: HTMLElement;
33
34
  private popup;
34
35
  private lastComponent;
36
+ /** SearchOverlay 의 query-submit 시 사용할 추적 색깔. things-scene 의 Scene.tracker
37
+ * 가 폴링/데코/3D outline 색 동기화 일괄 관리. */
38
+ private static readonly TRACKING_COLOR;
35
39
  render(): import("lit-html").TemplateResult<1>;
36
40
  fetchIFactsDataHandler: (e: Event) => void;
37
41
  fmbShowMovementHandler: (e: Event) => void;
@@ -43,14 +47,25 @@ export declare class BoardViewer extends LitElement {
43
47
  fmbShowFloatingContainerHandler: (e: Event) => void;
44
48
  fmbHideFloatingContainerHandler: (e: Event) => void;
45
49
  clickComponentHandler: (e: Event) => void;
50
+ /** 마우스 클릭/popup 의 selected highlight 해제. */
51
+ private _clearClickHighlight;
46
52
  fmbStartAnimation: (e: Event) => void;
47
53
  fmbStopAnimation: (e: Event) => void;
48
54
  fmbResetAnimation: () => void;
55
+ private _pointerMoveHandler;
56
+ /**
57
+ * playback 모드는 전체화면 모드와 한 몸 — 어떤 경로로든 전체화면이 해제되면
58
+ * playback 도 함께 종료. (단독 전체화면 토글은 기존처럼 동작하도록 `_playbackActive` 가드.)
59
+ */
60
+ private _fullscreenChangeHandler;
61
+ /** connect/disconnect 시 일괄 등록/해제할 window 이벤트 목록 (모니터링 연동) */
62
+ private get _monitoringEvents();
49
63
  connectedCallback(): void;
50
64
  disconnectedCallback(): void;
51
65
  updated(changes: PropertyValues<this>): void;
52
66
  initSceneAsync(): Promise<void>;
53
67
  initScene(): void;
68
+ private _ensureOverlay;
54
69
  closeScene(): void;
55
70
  releaseScene(): void;
56
71
  setupScene({ id, scene }: {
@@ -60,11 +75,96 @@ export declare class BoardViewer extends LitElement {
60
75
  showScene(boardId: string, bindingData?: any): Promise<void>;
61
76
  private resizeHandler;
62
77
  bindSceneEvents(): void;
78
+ /**
79
+ * Tracker fallback resolver — 플레이백 시각의 carrier 위치를 컴포넌트로 변환.
80
+ * NA / 정보 없음 / 머신 미존재 → null (Tracker 가 highlight 없이 추적만 유지).
81
+ *
82
+ * 매 1초 polling 마다 호출되며, 결과 target 이 직전과 동일하면 로그 skip.
83
+ */
84
+ private _resolveCarrierFallback;
85
+ /**
86
+ * deco-arrow 라이프사이클 — 이전 target 끄고 새 target 에 bouncing arrow 부착.
87
+ * 둘 다 null 가능 (해제만, 부착만).
88
+ */
89
+ private _setFallbackArrow;
90
+ /**
91
+ * 1초 polling — 화살표 부착 대상을 결정.
92
+ * 1) 플레이백 종료 / 추적 ID 없음 → 화살표 해제
93
+ * 2) carrier 가 scene 에 직접 존재 → **carrier 자체에 화살표 부착**
94
+ * (things-scene Tracker 가 carrier 발견 시 fallback 콜백 호출을 멈춰
95
+ * resolver 경로로는 우리가 모름. monitor 에서 직접 책임)
96
+ * 3) carrier 없음 + resolver 가 3초 이상 호출 안 됨 → 화살표 해제
97
+ * (그 외엔 resolver 의 logIfChanged 가 fallback target 으로 부착 중)
98
+ */
99
+ private _startFallbackArrowMonitor;
100
+ private _stopFallbackArrowMonitor;
101
+ /** 부착된 deco-arrow 강제 해제 + dedupe 상태 초기화. */
102
+ private _clearFallbackArrow;
103
+ /**
104
+ * onSearchSubmit hook — 영구추적 carrierName 이 설정되는 순간.
105
+ * 플레이백 윈도우가 잡혀 있으면 즉시 store 충전. 윈도우가 없으면
106
+ * 플레이백 시작 시 (_onPlaybackStart) 에 충전.
107
+ */
108
+ private _onCarrierTrackingSubmit;
63
109
  unbindSceneEvents(scene: any): void;
64
110
  transientShowButtons(stop?: boolean): void;
65
111
  onTapNext(): void;
66
112
  onTapPrev(): void;
67
113
  onTapFullscreen(): void;
114
+ onTapToggle3D(): void;
115
+ private _dataSubscriptionProvider;
116
+ private _playbackEngine?;
117
+ /**
118
+ * 영구추적 fallback 데이터 캐시 — 플레이백 윈도우 × carrierName 단위로
119
+ * carrier 위치 이력을 보관. carrier 가 scene 에 직접 안 보일 때
120
+ * Tracker fallback 콜백이 lookupAt 으로 머신/유닛을 찾아 반환.
121
+ */
122
+ private _carrierTrackingStore;
123
+ /** 마지막으로 시작한 플레이백 윈도우 (carrier store load 트리거용). */
124
+ private _playbackWindow?;
125
+ /**
126
+ * fallback 결과(target 컴포넌트) dedupe — 직전과 동일한 target 일 땐 로그 skip
127
+ * + deco-arrow 라이프사이클 (target 변경 시 이전 끄고 새로 부착).
128
+ */
129
+ private _lastFallbackTarget;
130
+ /** _resolveCarrierFallback 마지막 호출 timestamp — carrier 발견 감지용. */
131
+ private _lastFallbackResolvedAt;
132
+ /** carrier 발견 감지 / deco-arrow 자동 해제용 1초 polling 타이머. */
133
+ private _fallbackArrowMonitor?;
134
+ onTapPlayback(): void;
135
+ private _onPlaybackStart;
136
+ private _onPlaybackPause;
137
+ private _onPlaybackResume;
138
+ private _onPlaybackStop;
139
+ /**
140
+ * 플레이백 시작 시: RESTful data-subscription 컴포넌트의 WebSocket 을 실제 disconnect.
141
+ * GraphQL 경로는 _dataSubscriptionProvider.pause() 에서 일괄 처리.
142
+ */
143
+ private _unsubscribeSceneData;
144
+ /**
145
+ * 플레이백 종료 시: RESTful data-subscription 컴포넌트의 WebSocket 을 재연결.
146
+ * GraphQL 경로는 _dataSubscriptionProvider.resume() 에서 일괄 처리.
147
+ */
148
+ private _resubscribeSceneData;
149
+ private _resetSceneData;
150
+ private _onPlaybackSeek;
151
+ /**
152
+ * 드래그 시작 신호 — 엔진의 재생 타이머 정지해서 스크러빙 동안
153
+ * scene 이 엔진 시간으로 독립 갱신되지 않도록 함. _state 는 유지되므로
154
+ * 드래그 종료 시 seekTo 가 원래 재생/일시정지 상태로 복원.
155
+ */
156
+ private _onPlaybackSeekStart;
157
+ /**
158
+ * 드래그 중 디바운스된 seek preview. 해당 시간의 snapshot 만 scene 에 적용.
159
+ * 보드 리셋 없음, 애니메이션 억제.
160
+ */
161
+ private _onPlaybackSeekPreview;
162
+ private _onPlaybackSpeed;
163
+ /**
164
+ * 페이지에서 주입하는 playback 데이터 fetch 함수.
165
+ * 2-arg 호출은 청크 프리페치, 4-arg 호출은 preview snapshot (count=1).
166
+ */
167
+ _fetchPlaybackData?: (startTime: string, endTime?: string, includeSnapshot?: boolean, count?: number) => Promise<any>;
68
168
  onRunBoard(): void;
69
169
  onLinkGoto(targetBoardId: string, options: any, fromComponent: any): void;
70
170
  onLinkOpen(url: string, value: any, fromComponent: Component): void;