@fmsim/machine 2.0.0-beta.70 → 2.0.0-beta.77
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/dist/features/conveyor-mixin.js.map +1 -1
- package/dist/features/mcs-status-mixin.js.map +1 -1
- package/dist/features/mcs-zone-mixin.js.map +1 -1
- package/dist/features/parent-object-mixin.js.map +1 -1
- package/dist/floating-container.js +5 -0
- package/dist/floating-container.js.map +1 -1
- package/dist/mcs-unit.js.map +1 -1
- package/dist/scene/root-container-override.js +35 -0
- package/dist/scene/root-container-override.js.map +1 -1
- package/dist/static-container.js +5 -0
- package/dist/static-container.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/icons/backdrop.png +0 -0
- package/icons/decal.png +0 -0
- package/package.json +3 -3
- package/src/features/conveyor-mixin.ts +1 -1
- package/src/features/mcs-status-mixin.ts +5 -4
- package/src/features/mcs-zone-mixin.ts +1 -1
- package/src/features/parent-object-mixin.ts +1 -1
- package/src/floating-container.ts +5 -0
- package/src/mcs-unit.ts +1 -1
- package/src/scene/root-container-override.ts +37 -0
- package/src/static-container.ts +5 -0
- package/translations/en.json +6 -1
- package/translations/ja.json +6 -1
- package/translations/ko.json +6 -1
- package/translations/ms.json +6 -1
- package/translations/zh.json +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conveyor-mixin.js","sourceRoot":"","sources":["../../src/features/conveyor-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAGlD,SAAS,OAAO,CAAC,SAAc;IAC7B,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAA;IAEjC,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,SAAS,CAAC,KAAK,CAAA;IAExC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IAElC,IAAI,KAAK,GAAG,SAAS,CAAC,WAAY,CAAA;IAClC,IAAI,MAAM,GAAG,SAAS,CAAC,QAAS,CAAA;IAChC,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxB,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IACvD,CAAC;IAED,SAAS,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAA;IAElC,IAAI,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAEjD,OAAO,CAAC,SAAS,EAAE,CAAA;IACnB,OAAO,CAAC,SAAS,GAAG,KAAK,CAAA;IACzB,OAAO,CAAC,WAAW,GAAG,MAAM,CAAA;IAC5B,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;IAE7B,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACpB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC7B,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IACzB,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACpB,OAAO,CAAC,IAAI,EAAE,CAAA;IAEd,OAAO,CAAC,SAAS,EAAE,CAAA;IAEnB,OAAO,CAAC,WAAW,GAAG,GAAG,CAAA;IAEzB,IAAI,UAAU,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,CAAA;IAC/C,IAAI,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QACzB,UAAU,GAAG,KAAK,GAAG,UAAU,CAAA;IACjC,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAClC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IAE7B,OAAO,CAAC,MAAM,EAAE,CAAA;IAEhB,OAAO,SAAS,CAAC,QAAQ,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,
|
|
1
|
+
{"version":3,"file":"conveyor-mixin.js","sourceRoot":"","sources":["../../src/features/conveyor-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAGlD,SAAS,OAAO,CAAC,SAAc;IAC7B,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAA;IAEjC,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,SAAS,CAAC,KAAK,CAAA;IAExC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IAElC,IAAI,KAAK,GAAG,SAAS,CAAC,WAAY,CAAA;IAClC,IAAI,MAAM,GAAG,SAAS,CAAC,QAAS,CAAA;IAChC,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxB,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IACvD,CAAC;IAED,SAAS,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAA;IAElC,IAAI,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAEjD,OAAO,CAAC,SAAS,EAAE,CAAA;IACnB,OAAO,CAAC,SAAS,GAAG,KAAK,CAAA;IACzB,OAAO,CAAC,WAAW,GAAG,MAAM,CAAA;IAC5B,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;IAE7B,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACpB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC7B,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IACzB,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACpB,OAAO,CAAC,IAAI,EAAE,CAAA;IAEd,OAAO,CAAC,SAAS,EAAE,CAAA;IAEnB,OAAO,CAAC,WAAW,GAAG,GAAG,CAAA;IAEzB,IAAI,UAAU,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,CAAA;IAC/C,IAAI,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QACzB,UAAU,GAAG,KAAK,GAAG,UAAU,CAAA;IACjC,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAClC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IAE7B,OAAO,CAAC,MAAM,EAAE,CAAA;IAEhB,OAAO,SAAS,CAAC,QAAQ,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAA4C,IAAW;IAClF,MAAM,CAAC,GAAG,KAAM,SAAQ,IAAI;QAG1B,OAAO;YACL,KAAK,CAAC,OAAO,EAAE,CAAA;YACf,OAAO,IAAI,CAAC,QAAQ,CAAA;QACtB,CAAC;QAED,IAAI,SAAS;YACX,OAAO;gBACL,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;gBACpB,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE,SAAS;aAChB,CAAA;QACH,CAAC;KACF,CAAA;IAED,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;IAElD,OAAO,CAAC,CAAA;AACV,CAAC","sourcesContent":["import { Component } from '@hatiolab/things-scene'\ntype Constructor<T = {}> = new (...args: any[]) => T\n\nfunction pattern(component: any) {\n var { height } = component.bounds\n\n var { rollWidth = 10 } = component.model\n\n var width = Math.max(rollWidth, 1)\n\n var color = component.statusColor!\n var stroke = component.auxColor!\n var lineWidth = 1\n\n if (!component._pattern) {\n component._pattern = document.createElement('canvas')\n }\n\n component._pattern.width = width\n component._pattern.height = height\n\n var context = component._pattern.getContext('2d')\n\n context.beginPath()\n context.fillStyle = color\n context.strokeStyle = stroke\n context.lineWidth = lineWidth\n\n context.moveTo(0, 0)\n context.lineTo(width, 0)\n context.lineTo(width, height)\n context.lineTo(0, height)\n context.lineTo(0, 0)\n context.fill()\n\n context.beginPath()\n\n context.globalAlpha = 0.2\n\n var x_for_belt = (component._step || 0) % width\n if (component.value == 2) {\n x_for_belt = width - x_for_belt\n }\n\n context.moveTo(x_for_belt, height)\n context.lineTo(x_for_belt, 0)\n\n context.stroke()\n\n return component._pattern\n}\n\nexport function ConveyorMixin<TBase extends new (...args: any[]) => any>(Base: TBase): any {\n const A = class extends Base {\n _pattern\n\n dispose() {\n super.dispose()\n delete this._pattern\n }\n\n get fillStyle() {\n return {\n image: pattern(this),\n offsetX: 0,\n offsetY: 0,\n type: 'pattern'\n }\n }\n }\n\n Component.memoize(A.prototype, 'fillStyle', false)\n\n return A\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcs-status-mixin.js","sourceRoot":"","sources":["../../src/features/mcs-status-mixin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcs-status-mixin.js","sourceRoot":"","sources":["../../src/features/mcs-status-mixin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAQlD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE;YACR,OAAO,EAAE,cAAc;SACxB;KACF;CACF,CAAA;AAED,MAAM,UAAU,cAAc,CAAuC,IAAW;IAC9E,OAAO,KAAM,SAAQ,IAAI;QACvB,aAAa;YACX,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,MAAM;YACR,OAAM;QACR,CAAC;QAED,IAAI,SAAS;YACX,OAAM;QACR,CAAC;QAED,IAAI,MAAM;YACR,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,IAAI,SAAS;YACX,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,IAAI,WAAW;YACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YAE1B,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,KAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA,IAAI,SAAS,CAAA;QACpH,CAAC;QAED,IAAI,QAAQ;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAA;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAA;YAE7B,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,KAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA,CAAA;QACvG,CAAC;QAED;;;;;;;WAOG;QACH,YAAY,CAAC,KAAU,EAAE,MAAW;;YAClC,6CAA6C;YAC7C,yEAAyE;YACzE,MAAM,YAAY,GAAI,IAAI,CAAC,SAAiB,CAAC,YAAY,CAAA;YACzD,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;gBACvC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;YACxC,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAA;YAC9B,IAAI,KAAK,IAAI,KAAK,MAAK,MAAC,IAAY,CAAC,KAAK,0CAAE,SAAS,CAAA,EAAE,CAAC;gBACtD,CAAC;gBAAC,IAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;YAC7C,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["import { Component } from '@hatiolab/things-scene'\nimport { themesColorMap } from '@fmsim/api'\nimport { LEGEND_NULL } from './mcs-status-default'\n\ntype Constructor<T = {}> = new (...args: any[]) => T\n\ninterface Legend {\n [key: string]: string\n}\n\nexport const MCSStatusMixinProperties = [\n {\n type: 'select',\n label: 'legend-name',\n name: 'legendName',\n property: {\n options: themesColorMap\n }\n }\n]\n\nexport function MCSStatusMixin<TBase extends Constructor<Component>>(Base: TBase): any {\n return class extends Base {\n isLVComponent() {\n return true\n }\n\n get status(): string | undefined {\n return\n }\n\n get auxStatus(): string | undefined {\n return\n }\n\n get legend(): Legend {\n return LEGEND_NULL\n }\n\n get auxLegend(): Legend {\n return LEGEND_NULL\n }\n\n get statusColor(): string | undefined {\n const status = this.status\n const legend = this.legend\n\n return (status && legend && (legend[status] || legend[status!] || legend.default)) || legend?.default || '#F0F0F0'\n }\n\n get auxColor(): string | undefined {\n const status = this.auxStatus\n const legend = this.auxLegend\n\n return (status && legend && (legend[status] || legend[status!] || legend.default)) || legend?.default\n }\n\n /**\n * 데이터 변경 시 status 기반 색상을 state.fillStyle 로 반영.\n * things-scene 표준 경로(updateFillStyle)가 2D/3D 모두 자동 갱신하도록 유도.\n *\n * 주의: state.fillStyle 이 runtime 색상으로 덮어써짐. 모델 저장 시 status 색상이\n * 남을 수 있는 트레이드오프가 있음 (data-driven 컴포넌트의 fillStyle 은 의미상\n * 초기값일 뿐 항상 status 가 덮어쓰는 것이 자연스러움).\n */\n onchangeData(after: any, before: any) {\n // Base (mixin 인자) 의 onchangeData 를 렉시컬하게 호출.\n // Object.getPrototypeOf(this) 는 leaf 를 가리켜 무한재귀되므로 Base.prototype 직접 사용.\n const baseOnchange = (Base.prototype as any).onchangeData\n if (typeof baseOnchange === 'function') {\n baseOnchange.call(this, after, before)\n }\n const color = this.statusColor\n if (color && color !== (this as any).state?.fillStyle) {\n ;(this as any).setState('fillStyle', color)\n }\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcs-zone-mixin.js","sourceRoot":"","sources":["../../src/features/mcs-zone-mixin.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,MAAM;KACb;CACF,CAAA;AAED,MAAM,UAAU,YAAY,CAAqC,IAAW;IAC1E,OAAO,KAAM,SAAQ,IAAI;QACvB,IAAI,IAAI;YACN,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,IAAwB;YAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["type Constructor<T = {}> = new (...args: any[]) => T\n\nimport MCSUnit from 'src/mcs-unit'\n\nexport const MCSZoneMixinProperties = [\n {\n type: 'string',\n label: 'zone',\n name: 'zone'\n }\n]\n\nexport function MCSZoneMixin<TBase extends Constructor<MCSUnit>>(Base: TBase) {\n return class extends Base {\n get zone(): string | undefined {\n return\n }\n\n set zone(zone: string | undefined) {\n this.zone = zone\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mcs-zone-mixin.js","sourceRoot":"","sources":["../../src/features/mcs-zone-mixin.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,MAAM;KACb;CACF,CAAA;AAED,MAAM,UAAU,YAAY,CAAqC,IAAW;IAC1E,OAAO,KAAM,SAAQ,IAAI;QACvB,IAAI,IAAI;YACN,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,IAAwB;YAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["type Constructor<T = {}> = new (...args: any[]) => T\n\nimport MCSUnit from 'src/mcs-unit'\n\nexport const MCSZoneMixinProperties = [\n {\n type: 'string',\n label: 'zone',\n name: 'zone'\n }\n]\n\nexport function MCSZoneMixin<TBase extends Constructor<MCSUnit>>(Base: TBase): any {\n return class extends Base {\n get zone(): string | undefined {\n return\n }\n\n set zone(zone: string | undefined) {\n this.zone = zone\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parent-object-mixin.js","sourceRoot":"","sources":["../../src/features/parent-object-mixin.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,gBAAgB,CAAA;AACvC,OAAO,OAAO,MAAM,aAAa,CAAA;AAEjC,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,gBAAgB;KACvB;CACF,CAAA;AAED,MAAM,UAAU,iBAAiB,CAAuC,IAAW;IACjF,OAAO,KAAM,SAAQ,IAAI;QACvB,IAAI,YAAY;;YACd,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;YAEzC,IAAI,cAAc,IAAI,EAAE,EAAE,CAAC;gBACzB,YAAY;gBACZ,MAAM,OAAO,GAAG,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,WAAW,CAAC,cAAc,IAAI,EAAE,CAAC,KAAI,EAAE,CAAA;gBAClE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,IAAI,MAAM,YAAY,UAAU,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;wBAC9D,OAAO,MAAM,CAAA;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YAC1B,IAAI,MAAM,YAAY,UAAU,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9D,OAAO,MAAM,CAAA;YACf,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["type Constructor<T = {}> = new (...args: any[]) => T\n\nimport { Component } from '@hatiolab/things-scene'\nimport MCSMachine from '../mcs-machine'\nimport MCSUnit from '../mcs-unit'\n\nexport const ParentObjectMixinProperties = [\n {\n type: 'string',\n label: 'parent-object-id',\n name: 'parentObjectId'\n }\n]\n\nexport function ParentObjectMixin<TBase extends Constructor<Component>>(Base: TBase) {\n return class extends Base {\n get parentObject(): MCSMachine | MCSUnit | undefined {\n const { id, parentObjectId } = this.state\n\n if (parentObjectId || id) {\n //@ts-ignore\n const targets = this.root?.findAllById(parentObjectId || id) || []\n for (const target of targets) {\n if (target instanceof MCSMachine || target instanceof MCSUnit) {\n return target\n }\n }\n }\n\n const parent = this.parent\n if (parent instanceof MCSMachine || parent instanceof MCSUnit) {\n return parent\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"parent-object-mixin.js","sourceRoot":"","sources":["../../src/features/parent-object-mixin.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,gBAAgB,CAAA;AACvC,OAAO,OAAO,MAAM,aAAa,CAAA;AAEjC,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,gBAAgB;KACvB;CACF,CAAA;AAED,MAAM,UAAU,iBAAiB,CAAuC,IAAW;IACjF,OAAO,KAAM,SAAQ,IAAI;QACvB,IAAI,YAAY;;YACd,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;YAEzC,IAAI,cAAc,IAAI,EAAE,EAAE,CAAC;gBACzB,YAAY;gBACZ,MAAM,OAAO,GAAG,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,WAAW,CAAC,cAAc,IAAI,EAAE,CAAC,KAAI,EAAE,CAAA;gBAClE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,IAAI,MAAM,YAAY,UAAU,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;wBAC9D,OAAO,MAAM,CAAA;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YAC1B,IAAI,MAAM,YAAY,UAAU,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9D,OAAO,MAAM,CAAA;YACf,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["type Constructor<T = {}> = new (...args: any[]) => T\n\nimport { Component } from '@hatiolab/things-scene'\nimport MCSMachine from '../mcs-machine'\nimport MCSUnit from '../mcs-unit'\n\nexport const ParentObjectMixinProperties = [\n {\n type: 'string',\n label: 'parent-object-id',\n name: 'parentObjectId'\n }\n]\n\nexport function ParentObjectMixin<TBase extends Constructor<Component>>(Base: TBase): any {\n return class extends Base {\n get parentObject(): MCSMachine | MCSUnit | undefined {\n const { id, parentObjectId } = this.state\n\n if (parentObjectId || id) {\n //@ts-ignore\n const targets = this.root?.findAllById(parentObjectId || id) || []\n for (const target of targets) {\n if (target instanceof MCSMachine || target instanceof MCSUnit) {\n return target\n }\n }\n }\n\n const parent = this.parent\n if (parent instanceof MCSMachine || parent instanceof MCSUnit) {\n return parent\n }\n }\n }\n}\n"]}
|
|
@@ -40,6 +40,11 @@ const NATURE = {
|
|
|
40
40
|
]
|
|
41
41
|
};
|
|
42
42
|
let FloatingContainer = class FloatingContainer extends Container {
|
|
43
|
+
// things-scene 의 `declare const Container_base` 패턴이 base 인스턴스 타입의 accessor
|
|
44
|
+
// 정보를 object-type property 로 평탄화하여 TS2611 발생. 동일 위치를 override 하는
|
|
45
|
+
// 케이스가 operato-scene 엔 없어 fmsim 만 영향. things-scene 측 mixin 타입 패턴이
|
|
46
|
+
// 개선되면 제거.
|
|
47
|
+
// @ts-expect-error TS2611
|
|
43
48
|
get position() {
|
|
44
49
|
var _a;
|
|
45
50
|
return ((_a = this.app) === null || _a === void 0 ? void 0 : _a.isViewMode) ? 'absolute' : 'static';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floating-container.js","sourceRoot":"","sources":["../src/floating-container.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAElE,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR,OAAO,EAAE;oBACP,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;oBAC1B,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;oBAC1C,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;oBAC9C,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;oBAC5C,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;oBAChD,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;oBACpD,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;oBAClD,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;oBAChD,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;oBACpD,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;iBACnD;aACF;SACF;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,SAAS;SAChB;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,SAAS;SAChB;KACF;CACF,CAAA;AAEc,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,SAAS;IACtD,IAAI,QAAQ;;QACV,OAAO,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,UAAU,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAA;IACrD,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"floating-container.js","sourceRoot":"","sources":["../src/floating-container.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAElE,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR,OAAO,EAAE;oBACP,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;oBAC1B,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;oBAC1C,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;oBAC9C,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;oBAC5C,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;oBAChD,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;oBACpD,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;oBAClD,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;oBAChD,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;oBACpD,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;iBACnD;aACF;SACF;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,SAAS;SAChB;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,SAAS;SAChB;KACF;CACF,CAAA;AAEc,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,SAAS;IACtD,2EAA2E;IAC3E,iEAAiE;IACjE,kEAAkE;IAClE,WAAW;IACX,0BAA0B;IAC1B,IAAI,QAAQ;;QACV,OAAO,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,UAAU,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAA;IACrD,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAboB,iBAAiB;IADrC,cAAc,CAAC,mBAAmB,CAAC;GACf,iBAAiB,CAarC;eAboB,iBAAiB","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Container, sceneComponent } from '@hatiolab/things-scene'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'select',\n label: 'position-origin',\n name: 'origin',\n property: {\n options: [\n { display: '', value: '' },\n { display: 'left-top', value: 'left-top' },\n { display: 'center-top', value: 'center-top' },\n { display: 'right-top', value: 'right-top' },\n { display: 'left-middle', value: 'left-middle' },\n { display: 'center-middle', value: 'center-middle' },\n { display: 'right-middle', value: 'right-middle' },\n { display: 'left-bottom', value: 'left-bottom' },\n { display: 'center-bottom', value: 'center-bottom' },\n { display: 'right-bottom', value: 'right-bottom' }\n ]\n }\n },\n {\n type: 'number',\n label: 'offset-x',\n name: 'offsetX'\n },\n {\n type: 'number',\n label: 'offset-y',\n name: 'offsetY'\n }\n ]\n}\n@sceneComponent('FloatingContainer')\nexport default class FloatingContainer extends Container {\n // things-scene 의 `declare const Container_base` 패턴이 base 인스턴스 타입의 accessor\n // 정보를 object-type property 로 평탄화하여 TS2611 발생. 동일 위치를 override 하는\n // 케이스가 operato-scene 엔 없어 fmsim 만 영향. things-scene 측 mixin 타입 패턴이\n // 개선되면 제거.\n // @ts-expect-error TS2611\n get position() {\n return this.app?.isViewMode ? 'absolute' : 'static'\n }\n\n get nature() {\n return NATURE\n }\n}\n"]}
|
package/dist/mcs-unit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcs-unit.js","sourceRoot":"","sources":["../src/mcs-unit.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"mcs-unit.js","sourceRoot":"","sources":["../src/mcs-unit.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContainerAbstract } from '@hatiolab/things-scene'\nimport { getPopupData } from '@fmsim/api'\n\nimport { MCSStatusMixin, MCSStatusMixinProperties } from './features/mcs-status-mixin'\nimport { LEGEND_UNIT, Legend } from './features/mcs-status-default'\nimport { ParentObjectMixin, ParentObjectMixinProperties } from './features/parent-object-mixin'\n\n/**\n * MCS용 Unit들의 공통 속성을 정의한 오브젝트\n */\nexport default class MCSUnit extends MCSStatusMixin(ParentObjectMixin(ContainerAbstract)) {\n static get properties(): any {\n return [...MCSStatusMixinProperties, ...ParentObjectMixinProperties]\n }\n\n get hasTextProperty() {\n return true\n }\n\n get decorators() {\n return ['decotag']\n }\n\n getTheme() {\n const { legendName } = this.state\n\n if (legendName) {\n return (this.root as any)?.style?.[legendName]\n }\n }\n\n get status() {\n return this.data?.STATUS\n }\n\n get auxStatus() {\n return this.data?.STATUS\n }\n\n get legend(): Legend {\n return this.getTheme() || this.getLegendFallback()\n }\n\n get auxLegend() {\n return this.legend\n }\n\n getLegendFallback() {\n return LEGEND_UNIT\n }\n\n /**\n * In 2D, ignore `state.alpha`; preserve inherited alpha + editMode-hidden dim.\n * See MCSMachine.prerender for the full rationale.\n */\n prerender(ctx: any) {\n const inherited = ctx.globalAlpha\n super.prerender(ctx)\n const dim = this.app.isEditMode && this.hidden ? 0.5 : 1\n ctx.globalAlpha = inherited * dim\n }\n\n contains(x, y) {\n var { left, top, width, height, lineWidth = 0 } = this.state\n var extend = lineWidth / 2\n\n return (\n x < Math.max(left + width, left) + extend &&\n x > Math.min(left + width, left) - extend &&\n y < Math.max(top + height, top) + extend &&\n y > Math.min(top + height, top) - extend\n )\n }\n\n set path(path) {\n var left_top = path[0]\n var right_bottom = path[2]\n\n this.set({\n left: left_top.x,\n top: left_top.y,\n width: right_bottom.x - left_top.x,\n height: right_bottom.y - left_top.y\n })\n }\n\n get path() {\n var { left = 0, top = 0, width = 0, height = 0 } = this.state\n\n return [\n {\n x: left,\n y: top\n },\n {\n x: left + width,\n y: top\n },\n {\n x: left + width,\n y: top + height\n },\n {\n x: left,\n y: top + height\n }\n ]\n }\n\n async detailInfo() {\n const { type, id } = this.state\n\n if (!id) {\n return\n }\n\n return await getPopupData(type, id)\n }\n}\n"]}
|
|
@@ -165,12 +165,47 @@ Object.defineProperty(ModelLayer.prototype, 'nature', {
|
|
|
165
165
|
property: {
|
|
166
166
|
options: themesColorRange
|
|
167
167
|
}
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: 'select',
|
|
171
|
+
label: 'light-preset',
|
|
172
|
+
name: 'lightPreset',
|
|
173
|
+
property: {
|
|
174
|
+
options: ['dark', 'medium', 'bright']
|
|
175
|
+
}
|
|
168
176
|
}
|
|
169
177
|
],
|
|
170
178
|
'value-property': 'text'
|
|
171
179
|
};
|
|
172
180
|
}
|
|
173
181
|
});
|
|
182
|
+
/**
|
|
183
|
+
* 조명 프리셋 — 3 단계 밝기 토글.
|
|
184
|
+
*
|
|
185
|
+
* fmsim 은 디테일 조명 옵션 UI 를 노출하지 않으므로 단일 select 로 단순화.
|
|
186
|
+
* medium = things-scene 의 현재 default 값과 동일 (외관 변화 없음).
|
|
187
|
+
* 사용자가 select 변경 시 onchange 가 exposure + hemiIntensity + dirLightIntensity
|
|
188
|
+
* 를 일괄 set → three-capability 의 변경 감지 핸들러가 즉시 갱신.
|
|
189
|
+
*/
|
|
190
|
+
const LIGHT_PRESETS = {
|
|
191
|
+
dark: { exposure: 0.7, hemiIntensity: 2.0, dirLightIntensity: 1.0 },
|
|
192
|
+
medium: { exposure: 1.2, hemiIntensity: 4.0, dirLightIntensity: 2.0 },
|
|
193
|
+
bright: { exposure: 1.6, hemiIntensity: 6.0, dirLightIntensity: 3.0 }
|
|
194
|
+
};
|
|
195
|
+
const _origModelLayerOnchange = ModelLayer.prototype.onchange;
|
|
196
|
+
ModelLayer.prototype.onchange = function (after) {
|
|
197
|
+
if (after && Object.prototype.hasOwnProperty.call(after, 'lightPreset')) {
|
|
198
|
+
const preset = LIGHT_PRESETS[after.lightPreset];
|
|
199
|
+
if (preset) {
|
|
200
|
+
this.set({
|
|
201
|
+
exposure: preset.exposure,
|
|
202
|
+
hemiIntensity: preset.hemiIntensity,
|
|
203
|
+
dirLightIntensity: preset.dirLightIntensity
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return _origModelLayerOnchange.call(this, after);
|
|
208
|
+
};
|
|
174
209
|
Object.defineProperty(RootContainer.prototype, 'equipmentLegendTheme', {
|
|
175
210
|
get: function () {
|
|
176
211
|
const { equipmentLegendName } = this.rootModel.state;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root-container-override.js","sourceRoot":"","sources":["../../src/scene/root-container-override.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, RootContainer } from '@hatiolab/things-scene'\nimport { themesColorMap, themesColorRange, themesAnimationMap } from '@fmsim/api'\nimport { Legend } from '../features/mcs-status-default'\nimport CarrierManager from '../carrier-manager'\n\n// RootContainer 클래스 타입 확장\ndeclare module '@hatiolab/things-scene' {\n interface RootContainer {\n portLegendTheme?: any\n carrierLegendTheme?: any\n carrierAnimationTheme?: any\n stockerCapacityLegendTheme?: any\n zoneCapacityLegendTheme?: any\n batteryRateLegendTheme?: any\n bufferLegendTheme?: any\n agvlineLegendTheme?: any\n ohtlineLegendTheme?: any\n conveyorLegendTheme?: any\n stokerLegendTheme?: any\n agvLegendTheme?: any\n ohtLegendTheme?: any\n shuttleLegendTheme?: any\n craneLegendTheme?: any\n shelfLegendTheme?: any\n equipmentLegendTheme?: any\n style: any\n vehicleAnimation?: boolean\n // 캐시 관련 속성 추가\n _animationConfigCache?: Map<string, any>\n _carrierManager?: CarrierManager\n carrierManager: CarrierManager\n }\n}\n\nconst ModelLayer = (Component as any).register('model-layer') as any\n\nObject.defineProperty(ModelLayer.prototype, 'nature', {\n get: function () {\n return {\n mutable: false,\n rotatable: false,\n resizable: true,\n properties: [\n {\n type: 'boolean',\n label: 'vehicle-animation',\n name: 'vehicleAnimation'\n },\n {\n type: 'legend',\n label: '',\n name: 'LEGENDS',\n property: {\n label: 'LEGENDS'\n }\n },\n {\n type: 'select',\n label: 'equipment-legend-name',\n name: 'equipmentLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'buffer-legend-name',\n name: 'bufferLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'agvline-legend-name',\n name: 'agvlineLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'ohtline-legend-name',\n name: 'ohtlineLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'conveyor-legend-name',\n name: 'conveyorLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'stoker-legend-name',\n name: 'stokerLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'port-legend-name',\n name: 'portLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'agv-legend-name',\n name: 'agvLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'oht-legend-name',\n name: 'ohtLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'shuttle-legend-name',\n name: 'shuttleLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'crane-legend-name',\n name: 'craneLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'port-legend-name',\n name: 'portLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'shelf-legend-name',\n name: 'shelfLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'carrier-legend-name',\n name: 'carrierLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'carrier-animation-name',\n name: 'carrierAnimationName',\n property: {\n options: themesAnimationMap\n }\n },\n {\n type: 'select',\n label: 'stocker-capacity-legend-name',\n name: 'stockerCapacityLegendName',\n property: {\n options: themesColorRange\n }\n },\n {\n type: 'select',\n label: 'zone-capacity-legend-name',\n name: 'zoneCapacityLegendName',\n property: {\n options: themesColorRange\n }\n },\n {\n type: 'select',\n label: 'battery-rate-legend-name',\n name: 'batteryRateLegendName',\n property: {\n options: themesColorRange\n }\n }\n ],\n 'value-property': 'text'\n }\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'equipmentLegendTheme', {\n get: function () {\n const { equipmentLegendName } = this.rootModel.state\n return equipmentLegendName && this.state.style[equipmentLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'bufferLegendTheme', {\n get: function () {\n const { bufferLegendName } = this.rootModel.state\n return bufferLegendName && this.state.style[bufferLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'agvlineLegendTheme', {\n get: function () {\n const { agvlineLegendName } = this.rootModel.state\n return agvlineLegendName && this.state.style[agvlineLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'ohtlineLegendTheme', {\n get: function () {\n const { ohtlineLegendName } = this.rootModel.state\n return ohtlineLegendName && this.state.style[ohtlineLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'conveyorLegendTheme', {\n get: function () {\n const { conveyorLegendName } = this.rootModel.state\n return conveyorLegendName && this.state.style[conveyorLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'stokerLegendTheme', {\n get: function () {\n const { stokerLegendName } = this.rootModel.state\n return stokerLegendName && this.state.style[stokerLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'agvLegendTheme', {\n get: function () {\n const { agvLegendName } = this.rootModel.state\n return agvLegendName && this.state.style[agvLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'ohtLegendTheme', {\n get: function () {\n const { ohtLegendName } = this.rootModel.state\n return ohtLegendName && this.state.style[ohtLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'shuttleLegendTheme', {\n get: function () {\n const { shuttleLegendName } = this.rootModel.state\n return shuttleLegendName && this.state.style[shuttleLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'craneLegendTheme', {\n get: function () {\n const { craneLegendName } = this.rootModel.state\n return craneLegendName && this.state.style[craneLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'shelfLegendTheme', {\n get: function () {\n const { shelfLegendName } = this.rootModel.state\n return shelfLegendName && this.state.style[shelfLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'portLegendTheme', {\n get: function () {\n const { portLegendName } = this.rootModel.state\n return portLegendName && this.state.style[portLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'carrierLegendTheme', {\n get: function () {\n const { carrierLegendName } = this.rootModel.state\n return carrierLegendName && this.state.style[carrierLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'carrierAnimationTheme', {\n get: function () {\n const { carrierAnimationName } = this.rootModel.state\n return carrierAnimationName && this.state.style[carrierAnimationName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'stockerCapacityLegendTheme', {\n get: function () {\n const { stockerCapacityLegendName } = this.rootModel.state\n return stockerCapacityLegendName && this.state.style[stockerCapacityLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'zoneCapacityLegendTheme', {\n get: function () {\n const { zoneCapacityLegendName } = this.rootModel.state\n return zoneCapacityLegendName && this.state.style[zoneCapacityLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'batteryRateLegendTheme', {\n get: function () {\n const { batteryRateLegendName } = this.rootModel.state\n return batteryRateLegendName && this.state.style[batteryRateLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'vehicleAnimation', {\n get: function () {\n const { vehicleAnimation } = this.rootModel.state\n return !!vehicleAnimation\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'carrierManager', {\n get: function () {\n if (!this._carrierManager) {\n this._carrierManager = new CarrierManager(this)\n }\n return this._carrierManager\n }\n})\n"]}
|
|
1
|
+
{"version":3,"file":"root-container-override.js","sourceRoot":"","sources":["../../src/scene/root-container-override.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, RootContainer } from '@hatiolab/things-scene'\nimport { themesColorMap, themesColorRange, themesAnimationMap } from '@fmsim/api'\nimport { Legend } from '../features/mcs-status-default'\nimport CarrierManager from '../carrier-manager'\n\n// RootContainer 클래스 타입 확장\ndeclare module '@hatiolab/things-scene' {\n interface RootContainer {\n portLegendTheme?: any\n carrierLegendTheme?: any\n carrierAnimationTheme?: any\n stockerCapacityLegendTheme?: any\n zoneCapacityLegendTheme?: any\n batteryRateLegendTheme?: any\n bufferLegendTheme?: any\n agvlineLegendTheme?: any\n ohtlineLegendTheme?: any\n conveyorLegendTheme?: any\n stokerLegendTheme?: any\n agvLegendTheme?: any\n ohtLegendTheme?: any\n shuttleLegendTheme?: any\n craneLegendTheme?: any\n shelfLegendTheme?: any\n equipmentLegendTheme?: any\n style: any\n vehicleAnimation?: boolean\n // 캐시 관련 속성 추가\n _animationConfigCache?: Map<string, any>\n _carrierManager?: CarrierManager\n carrierManager: CarrierManager\n }\n}\n\nconst ModelLayer = (Component as any).register('model-layer') as any\n\nObject.defineProperty(ModelLayer.prototype, 'nature', {\n get: function () {\n return {\n mutable: false,\n rotatable: false,\n resizable: true,\n properties: [\n {\n type: 'boolean',\n label: 'vehicle-animation',\n name: 'vehicleAnimation'\n },\n {\n type: 'legend',\n label: '',\n name: 'LEGENDS',\n property: {\n label: 'LEGENDS'\n }\n },\n {\n type: 'select',\n label: 'equipment-legend-name',\n name: 'equipmentLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'buffer-legend-name',\n name: 'bufferLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'agvline-legend-name',\n name: 'agvlineLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'ohtline-legend-name',\n name: 'ohtlineLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'conveyor-legend-name',\n name: 'conveyorLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'stoker-legend-name',\n name: 'stokerLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'port-legend-name',\n name: 'portLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'agv-legend-name',\n name: 'agvLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'oht-legend-name',\n name: 'ohtLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'shuttle-legend-name',\n name: 'shuttleLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'crane-legend-name',\n name: 'craneLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'port-legend-name',\n name: 'portLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'shelf-legend-name',\n name: 'shelfLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'carrier-legend-name',\n name: 'carrierLegendName',\n property: {\n options: themesColorMap\n }\n },\n {\n type: 'select',\n label: 'carrier-animation-name',\n name: 'carrierAnimationName',\n property: {\n options: themesAnimationMap\n }\n },\n {\n type: 'select',\n label: 'stocker-capacity-legend-name',\n name: 'stockerCapacityLegendName',\n property: {\n options: themesColorRange\n }\n },\n {\n type: 'select',\n label: 'zone-capacity-legend-name',\n name: 'zoneCapacityLegendName',\n property: {\n options: themesColorRange\n }\n },\n {\n type: 'select',\n label: 'battery-rate-legend-name',\n name: 'batteryRateLegendName',\n property: {\n options: themesColorRange\n }\n },\n {\n type: 'select',\n label: 'light-preset',\n name: 'lightPreset',\n property: {\n options: ['dark', 'medium', 'bright']\n }\n }\n ],\n 'value-property': 'text'\n }\n }\n})\n\n/**\n * 조명 프리셋 — 3 단계 밝기 토글.\n *\n * fmsim 은 디테일 조명 옵션 UI 를 노출하지 않으므로 단일 select 로 단순화.\n * medium = things-scene 의 현재 default 값과 동일 (외관 변화 없음).\n * 사용자가 select 변경 시 onchange 가 exposure + hemiIntensity + dirLightIntensity\n * 를 일괄 set → three-capability 의 변경 감지 핸들러가 즉시 갱신.\n */\nconst LIGHT_PRESETS: Record<string, { exposure: number; hemiIntensity: number; dirLightIntensity: number }> = {\n dark: { exposure: 0.7, hemiIntensity: 2.0, dirLightIntensity: 1.0 },\n medium: { exposure: 1.2, hemiIntensity: 4.0, dirLightIntensity: 2.0 },\n bright: { exposure: 1.6, hemiIntensity: 6.0, dirLightIntensity: 3.0 }\n}\n\nconst _origModelLayerOnchange = ModelLayer.prototype.onchange\nModelLayer.prototype.onchange = function (after: any) {\n if (after && Object.prototype.hasOwnProperty.call(after, 'lightPreset')) {\n const preset = LIGHT_PRESETS[after.lightPreset as string]\n if (preset) {\n this.set({\n exposure: preset.exposure,\n hemiIntensity: preset.hemiIntensity,\n dirLightIntensity: preset.dirLightIntensity\n })\n }\n }\n return _origModelLayerOnchange.call(this, after)\n}\n\nObject.defineProperty(RootContainer.prototype, 'equipmentLegendTheme', {\n get: function () {\n const { equipmentLegendName } = this.rootModel.state\n return equipmentLegendName && this.state.style[equipmentLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'bufferLegendTheme', {\n get: function () {\n const { bufferLegendName } = this.rootModel.state\n return bufferLegendName && this.state.style[bufferLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'agvlineLegendTheme', {\n get: function () {\n const { agvlineLegendName } = this.rootModel.state\n return agvlineLegendName && this.state.style[agvlineLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'ohtlineLegendTheme', {\n get: function () {\n const { ohtlineLegendName } = this.rootModel.state\n return ohtlineLegendName && this.state.style[ohtlineLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'conveyorLegendTheme', {\n get: function () {\n const { conveyorLegendName } = this.rootModel.state\n return conveyorLegendName && this.state.style[conveyorLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'stokerLegendTheme', {\n get: function () {\n const { stokerLegendName } = this.rootModel.state\n return stokerLegendName && this.state.style[stokerLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'agvLegendTheme', {\n get: function () {\n const { agvLegendName } = this.rootModel.state\n return agvLegendName && this.state.style[agvLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'ohtLegendTheme', {\n get: function () {\n const { ohtLegendName } = this.rootModel.state\n return ohtLegendName && this.state.style[ohtLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'shuttleLegendTheme', {\n get: function () {\n const { shuttleLegendName } = this.rootModel.state\n return shuttleLegendName && this.state.style[shuttleLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'craneLegendTheme', {\n get: function () {\n const { craneLegendName } = this.rootModel.state\n return craneLegendName && this.state.style[craneLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'shelfLegendTheme', {\n get: function () {\n const { shelfLegendName } = this.rootModel.state\n return shelfLegendName && this.state.style[shelfLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'portLegendTheme', {\n get: function () {\n const { portLegendName } = this.rootModel.state\n return portLegendName && this.state.style[portLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'carrierLegendTheme', {\n get: function () {\n const { carrierLegendName } = this.rootModel.state\n return carrierLegendName && this.state.style[carrierLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'carrierAnimationTheme', {\n get: function () {\n const { carrierAnimationName } = this.rootModel.state\n return carrierAnimationName && this.state.style[carrierAnimationName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'stockerCapacityLegendTheme', {\n get: function () {\n const { stockerCapacityLegendName } = this.rootModel.state\n return stockerCapacityLegendName && this.state.style[stockerCapacityLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'zoneCapacityLegendTheme', {\n get: function () {\n const { zoneCapacityLegendName } = this.rootModel.state\n return zoneCapacityLegendName && this.state.style[zoneCapacityLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'batteryRateLegendTheme', {\n get: function () {\n const { batteryRateLegendName } = this.rootModel.state\n return batteryRateLegendName && this.state.style[batteryRateLegendName]\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'vehicleAnimation', {\n get: function () {\n const { vehicleAnimation } = this.rootModel.state\n return !!vehicleAnimation\n }\n})\n\nObject.defineProperty(RootContainer.prototype, 'carrierManager', {\n get: function () {\n if (!this._carrierManager) {\n this._carrierManager = new CarrierManager(this)\n }\n return this._carrierManager\n }\n})\n"]}
|
package/dist/static-container.js
CHANGED
|
@@ -10,6 +10,11 @@ const NATURE = {
|
|
|
10
10
|
properties: []
|
|
11
11
|
};
|
|
12
12
|
let StaticContainer = class StaticContainer extends Container {
|
|
13
|
+
// things-scene 의 `declare const Container_base` 패턴이 base 인스턴스 타입의 accessor
|
|
14
|
+
// 정보를 object-type property 로 평탄화하여 TS2611 발생. operato-scene 은 position
|
|
15
|
+
// override 케이스가 없어 미발현, fmsim 만 해당. things-scene 측 mixin 타입 패턴이
|
|
16
|
+
// 개선되면 제거.
|
|
17
|
+
// @ts-expect-error TS2611
|
|
13
18
|
get position() {
|
|
14
19
|
return 'static';
|
|
15
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-container.js","sourceRoot":"","sources":["../src/static-container.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAElE,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,EAAE;CACf,CAAA;AAGc,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,SAAS;IACpD,IAAI,QAAQ;QACV,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"static-container.js","sourceRoot":"","sources":["../src/static-container.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAElE,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,EAAE;CACf,CAAA;AAGc,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,SAAS;IACpD,2EAA2E;IAC3E,uEAAuE;IACvE,gEAAgE;IAChE,WAAW;IACX,0BAA0B;IAC1B,IAAI,QAAQ;QACV,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAboB,eAAe;IADnC,cAAc,CAAC,WAAW,CAAC;GACP,eAAe,CAanC;eAboB,eAAe","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Container, sceneComponent } from '@hatiolab/things-scene'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: []\n}\n\n@sceneComponent('container')\nexport default class StaticContainer extends Container {\n // things-scene 의 `declare const Container_base` 패턴이 base 인스턴스 타입의 accessor\n // 정보를 object-type property 로 평탄화하여 TS2611 발생. operato-scene 은 position\n // override 케이스가 없어 미발현, fmsim 만 해당. things-scene 측 mixin 타입 패턴이\n // 개선되면 제거.\n // @ts-expect-error TS2611\n get position() {\n return 'static'\n }\n\n get nature() {\n return NATURE\n }\n}\n"]}
|