@fmsim/board 2.0.0 → 2.0.2
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.
- package/custom-elements.json +3747 -3747
- package/dist/src/layers/mcs-mouse-event-handler.js +14 -1
- package/dist/src/layers/mcs-mouse-event-handler.js.map +1 -1
- package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-map.d.ts +1 -1
- package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-range.d.ts +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -33,7 +33,20 @@ function dispatchFetchLvModelDataByMouseEvent(type, event, target) {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
}));
|
|
36
|
-
|
|
36
|
+
/* 이 분기는 target 이 *자기 id 를 가진* 경우다. 후속 clickComponent(= 정보 팝업 대상)는
|
|
37
|
+
* **부모와 id 가 같은지** 하나로 가른다.
|
|
38
|
+
*
|
|
39
|
+
* - 같은 id → 부모의 대리 표현이다. 백엔드가 인지하지 못하는 컴포넌트(게이지 바 등)에
|
|
40
|
+
* 일부러 부모 id 를 입력하는 사용이 많고, 이때 원하는 정보는 부모의 것이다.
|
|
41
|
+
* - 다른 id → 독립 개체이므로 반드시 자신의 정보를 요청한다. Machine 안에 배치한 Port 를
|
|
42
|
+
* 클릭하면 Port 정보가 떠야 하는데, 부모를 돌려주면 Machine 정보가 뜬다. 부모가 없는
|
|
43
|
+
* 최상위 컴포넌트는 정상 동작하므로 "특정 오브젝트에서만" 발생하는 것처럼 보인다.
|
|
44
|
+
*
|
|
45
|
+
* id 비교는 양쪽 모두 getState 로 — get() 은 model 만 보므로 id 를 state 로 설정하는
|
|
46
|
+
* 컴포넌트(예: Carrier 의 setState('id', CARRIERNAME))에서 비교가 어긋난다.
|
|
47
|
+
* 부모 정보가 필요한 소비처는 위 payload 의 model.parentObject 로 받는다. */
|
|
48
|
+
const proxiesParent = !!parent && target.getState('id') === parent.getState('id');
|
|
49
|
+
return proxiesParent ? parent : target;
|
|
37
50
|
}
|
|
38
51
|
else if (parent && parent.getState('id')) {
|
|
39
52
|
// 클릭된 컴포넌트(target)가 자기 id 없이 id 보유 부모(Machine 등) 안에 배치된 경우 —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcs-mouse-event-handler.js","sourceRoot":"","sources":["../../../src/layers/mcs-mouse-event-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAE5D,SAAS,oCAAoC,CAC3C,IAAoC,EACpC,KAAiB,EACjB,MAAgD;;IAEhD,4BAA4B;IAC5B,0DAA0D;IAC1D,iEAAiE;IACjE,iEAAiE;IACjE,sDAAsD;IACtD,IAAI,MAAC,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,IAAI,0CAAE,YAAY;QAAE,OAAO,SAAS,CAAA;IAEzD,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAA;IAElC,qEAAqE;IACrE,mEAAmE;IACnE,8CAA8C;IAC9C,MAAM,OAAO,GAAG,MAAA,MAAC,MAAc,EAAC,cAAc,mDAAG,KAAK,CAAC,CAAA;IAEvD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,8BAA8B,EAAE;YAC9C,MAAM,EAAE;gBACN,KAAK,EAAE;oBACL,IAAI;oBACJ,KAAK;oBACL,KAAK,EAAE;wBACL,GAAG,MAAM,CAAC,KAAK;wBACf,YAAY,EAAE,MAAM;4BAClB,CAAC,CAAC;gCACE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gCACpB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;6BACzB;4BACH,CAAC,CAAC,IAAI;qBACT;oBACD,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChC;aACF;SACF,CAAC,CACH,CAAA;QAED,
|
|
1
|
+
{"version":3,"file":"mcs-mouse-event-handler.js","sourceRoot":"","sources":["../../../src/layers/mcs-mouse-event-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventMap } from '@hatiolab/things-scene'\n\nfunction dispatchFetchLvModelDataByMouseEvent(\n type: 'hover' | 'click' | 'dblclick',\n event: MouseEvent,\n target: Component & { parentObject?: Component }\n): Component | undefined {\n // 플레이백 모드 — 함수 자체를 실행하지 않음.\n // 1) 외부 모니터링 fetchLvModelDataByMouseEvent window 이벤트 차단\n // 2) realTarget 반환 차단 → onclick 의 후속 clickComponent dispatch 가\n // realTarget = undefined 로 흘러 popup 등 후속 backend 호출 경로도 비활성\n // (popup 의 detailInfo() 가드와 더불어 백엔드 요청을 차단하는 1차 게이트.)\n if ((target as any)?.root?.playbackMode) return undefined\n\n const parent = target.parentObject\n\n // CapacityBar(Stocker/Zone) 처럼 세그먼트 게이지를 그리는 컴포넌트는, carrier/abnormal\n // 모드에서 클릭된 세그먼트(Full/Empty/EmptyEmpty/Normal/Abnormal)를 함께 실어 보낸다.\n // capacity 모드·비세그먼트 컴포넌트는 undefined → 필드 미포함.\n const segment = (target as any).segmentAtEvent?.(event)\n\n if (target.getState('id')) {\n window.dispatchEvent(\n new CustomEvent('fetchLvModelDataByMouseEvent', {\n detail: {\n value: {\n type,\n event,\n model: {\n ...target.state,\n parentObject: parent\n ? {\n id: parent.get('id'),\n type: parent.get('type')\n }\n : null\n },\n data: target.data,\n ...(segment ? { segment } : {})\n }\n }\n })\n )\n\n /* 이 분기는 target 이 *자기 id 를 가진* 경우다. 후속 clickComponent(= 정보 팝업 대상)는\n * **부모와 id 가 같은지** 하나로 가른다.\n *\n * - 같은 id → 부모의 대리 표현이다. 백엔드가 인지하지 못하는 컴포넌트(게이지 바 등)에\n * 일부러 부모 id 를 입력하는 사용이 많고, 이때 원하는 정보는 부모의 것이다.\n * - 다른 id → 독립 개체이므로 반드시 자신의 정보를 요청한다. Machine 안에 배치한 Port 를\n * 클릭하면 Port 정보가 떠야 하는데, 부모를 돌려주면 Machine 정보가 뜬다. 부모가 없는\n * 최상위 컴포넌트는 정상 동작하므로 \"특정 오브젝트에서만\" 발생하는 것처럼 보인다.\n *\n * id 비교는 양쪽 모두 getState 로 — get() 은 model 만 보므로 id 를 state 로 설정하는\n * 컴포넌트(예: Carrier 의 setState('id', CARRIERNAME))에서 비교가 어긋난다.\n * 부모 정보가 필요한 소비처는 위 payload 의 model.parentObject 로 받는다. */\n const proxiesParent = !!parent && target.getState('id') === parent.getState('id')\n\n return proxiesParent ? parent : target\n } else if (parent && parent.getState('id')) {\n // 클릭된 컴포넌트(target)가 자기 id 없이 id 보유 부모(Machine 등) 안에 배치된 경우 —\n // 예: id 미지정 StockerCapacityBar / ZoneCapacityBar. 이때도 model 은 *실제 클릭된\n // 컴포넌트* 를 실어 model.type 이 자신의 타입이 되게 한다(부모 타입 stocker 로 치환 금지).\n // target 은 자기 id 가 없으므로, 주소가 되는 부모 id/type 은 parentObject 로 실어 위\n // 분기(target 이 id 를 가진 경우)와 payload 형태를 동일하게 맞춘다.\n window.dispatchEvent(\n new CustomEvent('fetchLvModelDataByMouseEvent', {\n detail: {\n value: {\n type,\n event,\n model: {\n ...target.state,\n parentObject: {\n id: parent.get('id'),\n type: parent.get('type')\n }\n },\n data: target.data,\n ...(segment ? { segment } : {})\n }\n }\n })\n )\n\n return parent\n }\n}\n\n// function onmouseenter(event: MouseEvent, hint: any) {\n// const target = hint.origin\n\n// event.stopPropagation()\n\n// dispatchFetchLvModelDataByMouseEvent('hover', event, target)\n// }\n\nfunction onclick(event: MouseEvent, hint: any) {\n const target = hint.origin\n\n event.stopPropagation()\n\n setTimeout(() => {\n if (target.currentEvent !== 'dblclick') {\n const realTarget = dispatchFetchLvModelDataByMouseEvent('click', event, target)\n\n window.dispatchEvent(\n new CustomEvent('clickComponent', {\n detail: realTarget || target\n })\n )\n }\n }, 300)\n}\n\nfunction ondblclick(event: MouseEvent, hint: any) {\n const target = hint.origin\n\n setTimeout(() => {\n target.currentEvent = ''\n }, 500)\n\n event.stopPropagation()\n\n target.currentEvent = 'dblclick'\n\n dispatchFetchLvModelDataByMouseEvent('dblclick', event, target)\n}\n\nEventMap.register('mcs-event-handler', {\n 'model-layer': {\n '(all)': {\n // mouseenter: onmouseenter, /* 사용되지 않고 있음 */\n click: onclick,\n dblclick: ondblclick\n }\n }\n})\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OxInputValueMap } from '@operato/input';
|
|
2
2
|
import '@operato/attachment/ox-attachment-selector.js';
|
|
3
3
|
export declare class DataBindingValueMap extends OxInputValueMap {
|
|
4
|
-
static styles: import("lit").CSSResult;
|
|
4
|
+
static styles: import("lit").CSSResult[];
|
|
5
5
|
valueInputTemplate(value?: any): import("lit-html").TemplateResult<1>;
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OxInputValueRange } from '@operato/input';
|
|
2
2
|
import '@operato/attachment/ox-attachment-selector.js';
|
|
3
3
|
export declare class DataBindingValueRange extends OxInputValueRange {
|
|
4
|
-
static styles: import("lit").CSSResult;
|
|
4
|
+
static styles: import("lit").CSSResult[];
|
|
5
5
|
valueInputTemplate(value?: any): import("lit-html").TemplateResult<1>;
|
|
6
6
|
}
|