@fmsim/machine 1.0.64 → 1.0.66
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/agv-line.js +8 -4
- package/dist/agv-line.js.map +1 -1
- package/dist/agv.js +59 -30
- package/dist/agv.js.map +1 -1
- package/dist/buffer.js +8 -4
- package/dist/buffer.js.map +1 -1
- package/dist/carrier.js +8 -4
- package/dist/carrier.js.map +1 -1
- package/dist/conveyor-join.js +8 -4
- package/dist/conveyor-join.js.map +1 -1
- package/dist/conveyor.js +8 -4
- package/dist/conveyor.js.map +1 -1
- package/dist/crane.js +8 -4
- package/dist/crane.js.map +1 -1
- package/dist/equipment.js +8 -4
- package/dist/equipment.js.map +1 -1
- package/dist/floating-container.js +8 -4
- package/dist/floating-container.js.map +1 -1
- package/dist/node-path.js +8 -4
- package/dist/node-path.js.map +1 -1
- package/dist/node.js +19 -15
- package/dist/node.js.map +1 -1
- package/dist/oht-line.js +8 -4
- package/dist/oht-line.js.map +1 -1
- package/dist/oht.js +8 -4
- package/dist/oht.js.map +1 -1
- package/dist/port-flow.js +8 -4
- package/dist/port-flow.js.map +1 -1
- package/dist/port.js +8 -4
- package/dist/port.js.map +1 -1
- package/dist/shelf.js +8 -4
- package/dist/shelf.js.map +1 -1
- package/dist/shuttle.js +8 -4
- package/dist/shuttle.js.map +1 -1
- package/dist/stocker-capacity-bar.js +9 -5
- package/dist/stocker-capacity-bar.js.map +1 -1
- package/dist/stocker.js +8 -4
- package/dist/stocker.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/zone-capacity-bar.js +8 -4
- package/dist/zone-capacity-bar.js.map +1 -1
- package/package.json +2 -2
- package/src/agv-line.ts +2 -3
- package/src/agv.ts +64 -32
- package/src/buffer.ts +2 -3
- package/src/carrier.ts +2 -3
- package/src/conveyor-join.ts +2 -3
- package/src/conveyor.ts +2 -3
- package/src/crane.ts +2 -3
- package/src/equipment.ts +2 -3
- package/src/floating-container.ts +2 -3
- package/src/node-path.ts +2 -3
- package/src/node.ts +2 -3
- package/src/oht-line.ts +2 -3
- package/src/oht.ts +2 -3
- package/src/port-flow.ts +2 -3
- package/src/port.ts +2 -3
- package/src/shelf.ts +2 -3
- package/src/shuttle.ts +2 -3
- package/src/stocker-capacity-bar.ts +11 -4
- package/src/stocker.ts +2 -3
- package/src/zone-capacity-bar.ts +2 -3
package/dist/equipment.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { sceneComponent } from '@hatiolab/things-scene';
|
|
2
3
|
import MCSMachine from './mcs-machine';
|
|
3
4
|
const NATURE = {
|
|
4
5
|
mutable: false,
|
|
@@ -6,7 +7,7 @@ const NATURE = {
|
|
|
6
7
|
rotatable: true,
|
|
7
8
|
properties: [...MCSMachine.properties]
|
|
8
9
|
};
|
|
9
|
-
|
|
10
|
+
let Equipment = class Equipment extends MCSMachine {
|
|
10
11
|
static get nature() {
|
|
11
12
|
return NATURE;
|
|
12
13
|
}
|
|
@@ -16,6 +17,9 @@ export default class Equipment extends MCSMachine {
|
|
|
16
17
|
containable(component) {
|
|
17
18
|
return super.containable(component) || ['Port'].includes(component.state.type);
|
|
18
19
|
}
|
|
19
|
-
}
|
|
20
|
-
|
|
20
|
+
};
|
|
21
|
+
Equipment = __decorate([
|
|
22
|
+
sceneComponent('Equipment')
|
|
23
|
+
], Equipment);
|
|
24
|
+
export default Equipment;
|
|
21
25
|
//# sourceMappingURL=equipment.js.map
|
package/dist/equipment.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"equipment.js","sourceRoot":"","sources":["../src/equipment.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"equipment.js","sourceRoot":"","sources":["../src/equipment.ts"],"names":[],"mappings":";AAAA,OAAO,EAA8B,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,UAAU,MAAM,eAAe,CAAA;AAEtC,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC;CACvC,CAAA;AAGc,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,UAAU;IAC/C,MAAM,KAAK,MAAM;QACf,OAAO,MAAM,CAAA;IACf,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;IACpE,CAAC;IAED,WAAW,CAAC,SAAoB;QAC9B,OAAO,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChF,CAAC;CACF,CAAA;AAZoB,SAAS;IAD7B,cAAc,CAAC,WAAW,CAAC;GACP,SAAS,CAY7B;eAZoB,SAAS","sourcesContent":["import { Component, ComponentNature, sceneComponent } from '@hatiolab/things-scene'\nimport MCSMachine from './mcs-machine'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [...MCSMachine.properties]\n}\n\n@sceneComponent('Equipment')\nexport default class Equipment extends MCSMachine {\n static get nature() {\n return NATURE\n }\n\n getLegendFallback() {\n return this.root.equipmentLegendTheme || super.getLegendFallback()\n }\n\n containable(component: Component) {\n return super.containable(component) || ['Port'].includes(component.state.type)\n }\n}\n"]}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import { __decorate } from "tslib";
|
|
5
|
+
import { Container, sceneComponent } from '@hatiolab/things-scene';
|
|
6
|
+
let FloatingContainer = class FloatingContainer extends Container {
|
|
6
7
|
get position() {
|
|
7
8
|
var _a;
|
|
8
9
|
return ((_a = this.app) === null || _a === void 0 ? void 0 : _a.isViewMode) ? 'absolute' : 'static';
|
|
9
10
|
}
|
|
10
|
-
}
|
|
11
|
-
|
|
11
|
+
};
|
|
12
|
+
FloatingContainer = __decorate([
|
|
13
|
+
sceneComponent('FloatingContainer')
|
|
14
|
+
], FloatingContainer);
|
|
15
|
+
export default FloatingContainer;
|
|
12
16
|
//# sourceMappingURL=floating-container.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floating-container.js","sourceRoot":"","sources":["../src/floating-container.ts"],"names":[],"mappings":"AAAA;;GAEG
|
|
1
|
+
{"version":3,"file":"floating-container.js","sourceRoot":"","sources":["../src/floating-container.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,OAAO,EAAa,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAG9D,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;CACF,CAAA;AAJoB,iBAAiB;IADrC,cAAc,CAAC,mBAAmB,CAAC;GACf,iBAAiB,CAIrC;eAJoB,iBAAiB","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, Container, sceneComponent } from '@hatiolab/things-scene'\n\n@sceneComponent('FloatingContainer')\nexport default class FloatingContainer extends Container {\n get position() {\n return this.app?.isViewMode ? 'absolute' : 'static'\n }\n}\n"]}
|
package/dist/node-path.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { __decorate } from "tslib";
|
|
5
|
+
import { Line, sceneComponent } from '@hatiolab/things-scene';
|
|
5
6
|
var controlHandler = {
|
|
6
7
|
currentIndex: 0,
|
|
7
8
|
ondragstart: function (point, index, component) {
|
|
@@ -58,7 +59,7 @@ const NATURE = {
|
|
|
58
59
|
],
|
|
59
60
|
help: 'scene/component/node-path'
|
|
60
61
|
};
|
|
61
|
-
|
|
62
|
+
let NodePath = class NodePath extends Line {
|
|
62
63
|
static get nature() {
|
|
63
64
|
return NATURE;
|
|
64
65
|
}
|
|
@@ -228,6 +229,9 @@ export default class NodePath extends Line {
|
|
|
228
229
|
}
|
|
229
230
|
return controls;
|
|
230
231
|
}
|
|
231
|
-
}
|
|
232
|
-
|
|
232
|
+
};
|
|
233
|
+
NodePath = __decorate([
|
|
234
|
+
sceneComponent('NodePath')
|
|
235
|
+
], NodePath);
|
|
236
|
+
export default NodePath;
|
|
233
237
|
//# sourceMappingURL=node-path.js.map
|
package/dist/node-path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-path.js","sourceRoot":"","sources":["../src/node-path.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, Line, Control } from '@hatiolab/things-scene'\nimport { Node, Position } from './types'\n\nvar controlHandler = {\n currentIndex: 0,\n ondragstart: function (point, index, component) {\n component.mutatePath(null, function (path) {\n const nodes = component.state.nodes as Node[]\n const control = component.controls[index]\n const { from, to, id } = control as any\n const newId = `${Date.now()}`\n\n if (id) {\n const fromNode = nodes.find(node => node.id === id)\n const fromIndex = nodes.indexOf(fromNode!)\n controlHandler.currentIndex = fromIndex == 0 ? 0 : fromIndex + 1\n\n nodes.splice(controlHandler.currentIndex, 0, {\n id: newId,\n position: point,\n name: '',\n connections: []\n })\n\n fromNode!.connections.push(newId)\n path.splice(controlHandler.currentIndex, 0, point)\n } else {\n const fromNode = nodes.find(node => node.id === from)\n controlHandler.currentIndex = nodes.indexOf(fromNode!) + 1\n\n nodes.splice(controlHandler.currentIndex, 0, {\n id: newId,\n position: point,\n name: '',\n connections: [to]\n })\n\n const connections = fromNode!.connections\n connections.splice(connections.indexOf(to), 1, newId)\n\n path.splice(controlHandler.currentIndex, 0, point)\n }\n })\n },\n\n ondragmove: function (point, index, component) {\n component.mutatePath(null, function (path) {\n path[controlHandler.currentIndex] = point\n })\n },\n\n ondragend: function (point, index, component) {}\n}\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'nodes',\n label: 'nodes',\n name: 'nodes'\n }\n ],\n help: 'scene/component/node-path'\n}\n\nexport default class NodePath extends Line {\n static get nature() {\n return NATURE\n }\n\n get path(): Position[] {\n return this.state.nodes.map(node => node.position)\n }\n\n set path(path: Position[]) {\n const nodes = this.state.nodes || []\n\n this.set(\n 'nodes',\n nodes.map((node, index) => ({ ...node, position: path[index] }))\n )\n }\n\n contains(x: number, y: number): boolean {\n var path = this.path\n var result = false\n\n path.forEach((p, idx) => {\n let j = (idx + path.length + 1) % path.length\n\n let x1 = p.x\n let y1 = p.y\n let x2 = path[j].x\n let y2 = path[j].y\n\n if (y1 > y != y2 > y && x < ((x2 - x1) * (y - y1)) / (y2 - y1) + x1) result = !result\n })\n\n return result\n }\n\n render(ctx: CanvasRenderingContext2D): void {\n // 모든 연결 렌더링\n this.renderConnections(ctx)\n\n // 모든 노드 렌더링\n this.renderNodes(ctx)\n }\n\n renderConnections(ctx: CanvasRenderingContext2D): void {\n const { nodes = [], lineColor = '#000', lineWidth = 1 } = this.state\n\n nodes.forEach(node => {\n const { x: x1, y: y1 } = node.position\n const connections = node.connections || []\n\n connections.forEach(targetId => {\n const targetNode = this.findNodeById(targetId)\n if (targetNode) {\n const { x: x2, y: y2 } = targetNode.position\n\n ctx.beginPath()\n ctx.moveTo(x1, y1)\n ctx.lineTo(x2, y2)\n ctx.strokeStyle = lineColor\n ctx.lineWidth = lineWidth\n\n ctx.stroke()\n }\n })\n })\n }\n\n renderNodes(ctx: CanvasRenderingContext2D): void {\n const { nodes = [], fillStyle = '#fff', strokeStyle = '#000' } = this.state\n\n nodes.forEach(node => {\n const { x, y } = node.position\n\n ctx.beginPath()\n\n ctx.arc(x, y, 10, 0, Math.PI * 2)\n\n ctx.fillStyle = fillStyle\n ctx.strokeStyle = strokeStyle\n\n ctx.fill()\n })\n }\n\n findNodeById(id: string): Node | undefined {\n const nodes = this.state.nodes || []\n return nodes.find(node => node.id === id)\n }\n\n findNodeIndexById(id: string): number {\n const nodes = this.state.nodes || []\n return nodes.findIndex(node => node.id === id)\n }\n\n addNode(x: number, y: number, name: string = '', type: string = 'normal'): string {\n const nodes = [...(this.state.nodes || [])]\n const nodeId = `${Date.now()}`\n\n const node: Node = {\n id: nodeId,\n position: { x, y },\n name,\n connections: []\n }\n\n nodes.push(node)\n this.setState('nodes', nodes)\n\n return nodeId\n }\n\n moveNode(index: number, position: Position): void {\n const nodes = [...(this.state.nodes || [])]\n if (nodes[index]) {\n nodes[index].position = position\n this.setState('nodes', nodes)\n }\n }\n\n connectNodes(sourceId: string, targetId: string): boolean {\n if (sourceId === targetId) return false\n\n const nodes = [...(this.state.nodes || [])]\n const sourceIndex = this.findNodeIndexById(sourceId)\n const targetIndex = this.findNodeIndexById(targetId)\n\n if (sourceIndex >= 0 && targetIndex >= 0) {\n // 이미 연결되어 있는지 확인\n if (!nodes[sourceIndex].connections.includes(targetId)) {\n nodes[sourceIndex].connections.push(targetId)\n }\n\n // 양방향 연결 (선택적)\n // if (!nodes[targetIndex].connections.includes(sourceId)) {\n // nodes[targetIndex].connections.push(sourceId)\n // }\n\n this.setState('nodes', nodes)\n return true\n }\n\n return false\n }\n\n disconnectNodes(sourceId: string, targetId: string): void {\n const nodes = [...(this.state.nodes || [])]\n const sourceIndex = this.findNodeIndexById(sourceId)\n const targetIndex = this.findNodeIndexById(targetId)\n\n if (sourceIndex >= 0) {\n nodes[sourceIndex].connections = nodes[sourceIndex].connections.filter(id => id !== targetId)\n }\n\n // 양방향 연결 해제 (선택적)\n // if (targetIndex >= 0) {\n // nodes[targetIndex].connections = nodes[targetIndex].connections.filter(id => id !== sourceId)\n // }\n\n this.setState('nodes', nodes)\n }\n\n removeNode(nodeId: string): void {\n let nodes = [...(this.state.nodes || [])]\n\n // 해당 노드 제거\n nodes = nodes.filter(node => node.id !== nodeId)\n\n // 다른 노드들의 연결에서도 제거\n nodes.forEach(node => {\n node.connections = node.connections.filter(id => id !== nodeId)\n })\n\n this.setState('nodes', nodes)\n }\n\n // 특정 노드 연결에 대한 속성 설정\n setConnectionProperty(sourceId: string, targetId: string, propertyName: string, value: any): boolean {\n const nodes = [...(this.state.nodes || [])]\n const sourceIndex = this.findNodeIndexById(sourceId)\n\n if (sourceIndex >= 0 && nodes[sourceIndex].connections.includes(targetId)) {\n this.setState('nodes', nodes)\n return true\n }\n\n return false\n }\n\n get controls(): Control[] {\n var { nodes } = this.state\n var controls = [] as Control[]\n\n for (let i = 0; i < nodes.length; i++) {\n const { id: sourceId, position: p1, connections = [] } = nodes[i]\n controls.push({\n x: p1.x,\n y: p1.y,\n //@ts-ignore\n id: sourceId,\n handler: controlHandler\n })\n\n connections.forEach(targetId => {\n const targetNode = this.findNodeById(targetId)\n const { position: p2 } = targetNode!\n\n controls.push({\n x: (p1.x + p2.x) / 2,\n y: (p1.y + p2.y) / 2,\n //@ts-ignore\n from: sourceId,\n //@ts-ignore\n to: targetId,\n handler: controlHandler\n })\n })\n }\n\n return controls\n }\n}\n\nComponent.register('NodePath', NodePath)\n"]}
|
|
1
|
+
{"version":3,"file":"node-path.js","sourceRoot":"","sources":["../src/node-path.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,OAAO,EAAE,IAAI,EAAW,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGtE,IAAI,cAAc,GAAG;IACnB,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,SAAS;QAC5C,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,IAAI;YACvC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAe,CAAA;YAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,OAAc,CAAA;YACvC,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;YAE7B,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBACnD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAS,CAAC,CAAA;gBAC1C,cAAc,CAAC,YAAY,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAA;gBAEhE,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,EAAE;oBAC3C,EAAE,EAAE,KAAK;oBACT,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,EAAE;oBACR,WAAW,EAAE,EAAE;iBAChB,CAAC,CAAA;gBAEF,QAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACjC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,CAAA;gBACrD,cAAc,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAS,CAAC,GAAG,CAAC,CAAA;gBAE1D,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,EAAE;oBAC3C,EAAE,EAAE,KAAK;oBACT,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,EAAE;oBACR,WAAW,EAAE,CAAC,EAAE,CAAC;iBAClB,CAAC,CAAA;gBAEF,MAAM,WAAW,GAAG,QAAS,CAAC,WAAW,CAAA;gBACzC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;gBAErD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;YACpD,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,UAAU,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,SAAS;QAC3C,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,IAAI;YACvC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,KAAK,CAAA;QAC3C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,SAAS,IAAG,CAAC;CACjD,CAAA;AAED,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,OAAO;SACd;KACF;IACD,IAAI,EAAE,2BAA2B;CAClC,CAAA;AAGc,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,IAAI;IACxC,MAAM,KAAK,MAAM;QACf,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpD,CAAC;IAED,IAAI,IAAI,CAAC,IAAgB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAA;QAEpC,IAAI,CAAC,GAAG,CACN,OAAO,EACP,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,iCAAM,IAAI,KAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CACjE,CAAA;IACH,CAAC;IAED,QAAQ,CAAC,CAAS,EAAE,CAAS;QAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,IAAI,MAAM,GAAG,KAAK,CAAA;QAElB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACtB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;YAE7C,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YACZ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAClB,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAElB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE;gBAAE,MAAM,GAAG,CAAC,MAAM,CAAA;QACvF,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,GAA6B;QAClC,YAAY;QACZ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;QAE3B,YAAY;QACZ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,iBAAiB,CAAC,GAA6B;QAC7C,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,GAAG,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAEpE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;YACtC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAA;YAE1C,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;gBAC9C,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAA;oBAE5C,GAAG,CAAC,SAAS,EAAE,CAAA;oBACf,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;oBAClB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;oBAClB,GAAG,CAAC,WAAW,GAAG,SAAS,CAAA;oBAC3B,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;oBAEzB,GAAG,CAAC,MAAM,EAAE,CAAA;gBACd,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,WAAW,CAAC,GAA6B;QACvC,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,GAAG,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAE3E,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;YAE9B,GAAG,CAAC,SAAS,EAAE,CAAA;YAEf,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;YAEjC,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;YACzB,GAAG,CAAC,WAAW,GAAG,WAAW,CAAA;YAE7B,GAAG,CAAC,IAAI,EAAE,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAA;QACpC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,iBAAiB,CAAC,EAAU;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAA;QACpC,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,OAAe,EAAE,EAAE,OAAe,QAAQ;QACtE,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3C,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;QAE9B,MAAM,IAAI,GAAS;YACjB,EAAE,EAAE,MAAM;YACV,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;YAClB,IAAI;YACJ,WAAW,EAAE,EAAE;SAChB,CAAA;QAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAE7B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,QAAkB;QACxC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3C,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjB,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAA;YAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,YAAY,CAAC,QAAgB,EAAE,QAAgB;QAC7C,IAAI,QAAQ,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QAEvC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;QAEpD,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACzC,iBAAiB;YACjB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvD,KAAK,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC/C,CAAC;YAED,eAAe;YACf,4DAA4D;YAC5D,kDAAkD;YAClD,IAAI;YAEJ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAC7B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,eAAe,CAAC,QAAgB,EAAE,QAAgB;QAChD,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;QAEpD,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,WAAW,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAA;QAC/F,CAAC;QAED,kBAAkB;QAClB,0BAA0B;QAC1B,kGAAkG;QAClG,IAAI;QAEJ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;QAEzC,WAAW;QACX,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAA;QAEhD,mBAAmB;QACnB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,qBAAqB;IACrB,qBAAqB,CAAC,QAAgB,EAAE,QAAgB,EAAE,YAAoB,EAAE,KAAU;QACxF,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;QAEpD,IAAI,WAAW,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1E,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAC7B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC1B,IAAI,QAAQ,GAAG,EAAe,CAAA;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACjE,QAAQ,CAAC,IAAI,CAAC;gBACZ,CAAC,EAAE,EAAE,CAAC,CAAC;gBACP,CAAC,EAAE,EAAE,CAAC,CAAC;gBACP,YAAY;gBACZ,EAAE,EAAE,QAAQ;gBACZ,OAAO,EAAE,cAAc;aACxB,CAAC,CAAA;YAEF,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;gBAC9C,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,UAAW,CAAA;gBAEpC,QAAQ,CAAC,IAAI,CAAC;oBACZ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;oBACpB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;oBACpB,YAAY;oBACZ,IAAI,EAAE,QAAQ;oBACd,YAAY;oBACZ,EAAE,EAAE,QAAQ;oBACZ,OAAO,EAAE,cAAc;iBACxB,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF,CAAA;AA7NoB,QAAQ;IAD5B,cAAc,CAAC,UAAU,CAAC;GACN,QAAQ,CA6N5B;eA7NoB,QAAQ","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Line, Control, sceneComponent } from '@hatiolab/things-scene'\nimport { Node, Position } from './types'\n\nvar controlHandler = {\n currentIndex: 0,\n ondragstart: function (point, index, component) {\n component.mutatePath(null, function (path) {\n const nodes = component.state.nodes as Node[]\n const control = component.controls[index]\n const { from, to, id } = control as any\n const newId = `${Date.now()}`\n\n if (id) {\n const fromNode = nodes.find(node => node.id === id)\n const fromIndex = nodes.indexOf(fromNode!)\n controlHandler.currentIndex = fromIndex == 0 ? 0 : fromIndex + 1\n\n nodes.splice(controlHandler.currentIndex, 0, {\n id: newId,\n position: point,\n name: '',\n connections: []\n })\n\n fromNode!.connections.push(newId)\n path.splice(controlHandler.currentIndex, 0, point)\n } else {\n const fromNode = nodes.find(node => node.id === from)\n controlHandler.currentIndex = nodes.indexOf(fromNode!) + 1\n\n nodes.splice(controlHandler.currentIndex, 0, {\n id: newId,\n position: point,\n name: '',\n connections: [to]\n })\n\n const connections = fromNode!.connections\n connections.splice(connections.indexOf(to), 1, newId)\n\n path.splice(controlHandler.currentIndex, 0, point)\n }\n })\n },\n\n ondragmove: function (point, index, component) {\n component.mutatePath(null, function (path) {\n path[controlHandler.currentIndex] = point\n })\n },\n\n ondragend: function (point, index, component) {}\n}\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'nodes',\n label: 'nodes',\n name: 'nodes'\n }\n ],\n help: 'scene/component/node-path'\n}\n\n@sceneComponent('NodePath')\nexport default class NodePath extends Line {\n static get nature() {\n return NATURE\n }\n\n get path(): Position[] {\n return this.state.nodes.map(node => node.position)\n }\n\n set path(path: Position[]) {\n const nodes = this.state.nodes || []\n\n this.set(\n 'nodes',\n nodes.map((node, index) => ({ ...node, position: path[index] }))\n )\n }\n\n contains(x: number, y: number): boolean {\n var path = this.path\n var result = false\n\n path.forEach((p, idx) => {\n let j = (idx + path.length + 1) % path.length\n\n let x1 = p.x\n let y1 = p.y\n let x2 = path[j].x\n let y2 = path[j].y\n\n if (y1 > y != y2 > y && x < ((x2 - x1) * (y - y1)) / (y2 - y1) + x1) result = !result\n })\n\n return result\n }\n\n render(ctx: CanvasRenderingContext2D): void {\n // 모든 연결 렌더링\n this.renderConnections(ctx)\n\n // 모든 노드 렌더링\n this.renderNodes(ctx)\n }\n\n renderConnections(ctx: CanvasRenderingContext2D): void {\n const { nodes = [], lineColor = '#000', lineWidth = 1 } = this.state\n\n nodes.forEach(node => {\n const { x: x1, y: y1 } = node.position\n const connections = node.connections || []\n\n connections.forEach(targetId => {\n const targetNode = this.findNodeById(targetId)\n if (targetNode) {\n const { x: x2, y: y2 } = targetNode.position\n\n ctx.beginPath()\n ctx.moveTo(x1, y1)\n ctx.lineTo(x2, y2)\n ctx.strokeStyle = lineColor\n ctx.lineWidth = lineWidth\n\n ctx.stroke()\n }\n })\n })\n }\n\n renderNodes(ctx: CanvasRenderingContext2D): void {\n const { nodes = [], fillStyle = '#fff', strokeStyle = '#000' } = this.state\n\n nodes.forEach(node => {\n const { x, y } = node.position\n\n ctx.beginPath()\n\n ctx.arc(x, y, 10, 0, Math.PI * 2)\n\n ctx.fillStyle = fillStyle\n ctx.strokeStyle = strokeStyle\n\n ctx.fill()\n })\n }\n\n findNodeById(id: string): Node | undefined {\n const nodes = this.state.nodes || []\n return nodes.find(node => node.id === id)\n }\n\n findNodeIndexById(id: string): number {\n const nodes = this.state.nodes || []\n return nodes.findIndex(node => node.id === id)\n }\n\n addNode(x: number, y: number, name: string = '', type: string = 'normal'): string {\n const nodes = [...(this.state.nodes || [])]\n const nodeId = `${Date.now()}`\n\n const node: Node = {\n id: nodeId,\n position: { x, y },\n name,\n connections: []\n }\n\n nodes.push(node)\n this.setState('nodes', nodes)\n\n return nodeId\n }\n\n moveNode(index: number, position: Position): void {\n const nodes = [...(this.state.nodes || [])]\n if (nodes[index]) {\n nodes[index].position = position\n this.setState('nodes', nodes)\n }\n }\n\n connectNodes(sourceId: string, targetId: string): boolean {\n if (sourceId === targetId) return false\n\n const nodes = [...(this.state.nodes || [])]\n const sourceIndex = this.findNodeIndexById(sourceId)\n const targetIndex = this.findNodeIndexById(targetId)\n\n if (sourceIndex >= 0 && targetIndex >= 0) {\n // 이미 연결되어 있는지 확인\n if (!nodes[sourceIndex].connections.includes(targetId)) {\n nodes[sourceIndex].connections.push(targetId)\n }\n\n // 양방향 연결 (선택적)\n // if (!nodes[targetIndex].connections.includes(sourceId)) {\n // nodes[targetIndex].connections.push(sourceId)\n // }\n\n this.setState('nodes', nodes)\n return true\n }\n\n return false\n }\n\n disconnectNodes(sourceId: string, targetId: string): void {\n const nodes = [...(this.state.nodes || [])]\n const sourceIndex = this.findNodeIndexById(sourceId)\n const targetIndex = this.findNodeIndexById(targetId)\n\n if (sourceIndex >= 0) {\n nodes[sourceIndex].connections = nodes[sourceIndex].connections.filter(id => id !== targetId)\n }\n\n // 양방향 연결 해제 (선택적)\n // if (targetIndex >= 0) {\n // nodes[targetIndex].connections = nodes[targetIndex].connections.filter(id => id !== sourceId)\n // }\n\n this.setState('nodes', nodes)\n }\n\n removeNode(nodeId: string): void {\n let nodes = [...(this.state.nodes || [])]\n\n // 해당 노드 제거\n nodes = nodes.filter(node => node.id !== nodeId)\n\n // 다른 노드들의 연결에서도 제거\n nodes.forEach(node => {\n node.connections = node.connections.filter(id => id !== nodeId)\n })\n\n this.setState('nodes', nodes)\n }\n\n // 특정 노드 연결에 대한 속성 설정\n setConnectionProperty(sourceId: string, targetId: string, propertyName: string, value: any): boolean {\n const nodes = [...(this.state.nodes || [])]\n const sourceIndex = this.findNodeIndexById(sourceId)\n\n if (sourceIndex >= 0 && nodes[sourceIndex].connections.includes(targetId)) {\n this.setState('nodes', nodes)\n return true\n }\n\n return false\n }\n\n get controls(): Control[] {\n var { nodes } = this.state\n var controls = [] as Control[]\n\n for (let i = 0; i < nodes.length; i++) {\n const { id: sourceId, position: p1, connections = [] } = nodes[i]\n controls.push({\n x: p1.x,\n y: p1.y,\n //@ts-ignore\n id: sourceId,\n handler: controlHandler\n })\n\n connections.forEach(targetId => {\n const targetNode = this.findNodeById(targetId)\n const { position: p2 } = targetNode!\n\n controls.push({\n x: (p1.x + p2.x) / 2,\n y: (p1.y + p2.y) / 2,\n //@ts-ignore\n from: sourceId,\n //@ts-ignore\n to: targetId,\n handler: controlHandler\n })\n })\n }\n\n return controls\n }\n}\n"]}
|
package/dist/node.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
|
|
4
|
+
var Node_1;
|
|
5
|
+
import { __decorate } from "tslib";
|
|
6
|
+
import { Component, Shape, sceneComponent } from '@hatiolab/things-scene';
|
|
5
7
|
import MCSMachine from './mcs-machine';
|
|
6
8
|
const NATURE = {
|
|
7
9
|
mutable: false,
|
|
@@ -20,7 +22,7 @@ const NATURE = {
|
|
|
20
22
|
}
|
|
21
23
|
]
|
|
22
24
|
};
|
|
23
|
-
class Node extends Shape {
|
|
25
|
+
let Node = Node_1 = class Node extends Shape {
|
|
24
26
|
is3dish() {
|
|
25
27
|
return false;
|
|
26
28
|
}
|
|
@@ -30,27 +32,27 @@ class Node extends Shape {
|
|
|
30
32
|
render(context) {
|
|
31
33
|
const { cx, cy } = this.state;
|
|
32
34
|
context.beginPath();
|
|
33
|
-
context.ellipse(cx, cy, Math.abs(
|
|
35
|
+
context.ellipse(cx, cy, Math.abs(Node_1.RADIUS) * 1, Math.abs(Node_1.RADIUS) * 1, 0, 0, 2 * Math.PI);
|
|
34
36
|
context.closePath();
|
|
35
37
|
}
|
|
36
38
|
get path() {
|
|
37
39
|
var { cx, cy } = this.state;
|
|
38
40
|
return [
|
|
39
41
|
{
|
|
40
|
-
x: cx -
|
|
41
|
-
y: cy -
|
|
42
|
+
x: cx - Node_1.RADIUS * 1,
|
|
43
|
+
y: cy - Node_1.RADIUS * 1
|
|
42
44
|
},
|
|
43
45
|
{
|
|
44
|
-
x: cx +
|
|
45
|
-
y: cy -
|
|
46
|
+
x: cx + Node_1.RADIUS * 1,
|
|
47
|
+
y: cy - Node_1.RADIUS * 1
|
|
46
48
|
},
|
|
47
49
|
{
|
|
48
|
-
x: cx +
|
|
49
|
-
y: cy +
|
|
50
|
+
x: cx + Node_1.RADIUS * 1,
|
|
51
|
+
y: cy + Node_1.RADIUS * 1
|
|
50
52
|
},
|
|
51
53
|
{
|
|
52
|
-
x: cx -
|
|
53
|
-
y: cy +
|
|
54
|
+
x: cx - Node_1.RADIUS * 1,
|
|
55
|
+
y: cy + Node_1.RADIUS * 1
|
|
54
56
|
}
|
|
55
57
|
];
|
|
56
58
|
}
|
|
@@ -73,8 +75,8 @@ class Node extends Shape {
|
|
|
73
75
|
}
|
|
74
76
|
contains(x, y) {
|
|
75
77
|
var { cx, cy } = this.state;
|
|
76
|
-
var normx = (x - cx) / (
|
|
77
|
-
var normy = (y - cy) / (
|
|
78
|
+
var normx = (x - cx) / (Node_1.RADIUS * 2);
|
|
79
|
+
var normy = (y - cy) / (Node_1.RADIUS * 2);
|
|
78
80
|
return normx * normx + normy * normy < 0.25;
|
|
79
81
|
}
|
|
80
82
|
outline(progress) {
|
|
@@ -84,9 +86,11 @@ class Node extends Shape {
|
|
|
84
86
|
get nature() {
|
|
85
87
|
return NATURE;
|
|
86
88
|
}
|
|
87
|
-
}
|
|
89
|
+
};
|
|
88
90
|
Node.RADIUS = 8;
|
|
91
|
+
Node = Node_1 = __decorate([
|
|
92
|
+
sceneComponent('Node')
|
|
93
|
+
], Node);
|
|
89
94
|
export default Node;
|
|
90
95
|
Component.memoize(Node.prototype, 'path', false);
|
|
91
|
-
Component.register('Node', Node);
|
|
92
96
|
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;GAEG
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, Shape, sceneComponent } from '@hatiolab/things-scene'\nimport MCSMachine from './mcs-machine'\n\nconst NATURE = {\n mutable: false,\n resizable: false,\n rotatable: false,\n properties: [\n {\n type: 'string',\n name: 'NodeMachine',\n label: 'node-machine'\n },\n {\n type: 'nodes',\n label: 'nodes',\n name: 'alias'\n }\n ]\n}\n\n@sceneComponent('Node')\nexport default class Node extends Shape {\n static RADIUS = 8\n\n is3dish() {\n return false\n }\n\n isDescendible() {\n return false\n }\n\n render(context) {\n const { cx, cy } = this.state\n\n context.beginPath()\n\n context.ellipse(cx, cy, Math.abs(Node.RADIUS) * 1, Math.abs(Node.RADIUS) * 1, 0, 0, 2 * Math.PI)\n\n context.closePath()\n }\n\n get path() {\n var { cx, cy } = this.state\n\n return [\n {\n x: cx - Node.RADIUS * 1,\n y: cy - Node.RADIUS * 1\n },\n {\n x: cx + Node.RADIUS * 1,\n y: cy - Node.RADIUS * 1\n },\n {\n x: cx + Node.RADIUS * 1,\n y: cy + Node.RADIUS * 1\n },\n {\n x: cx - Node.RADIUS * 1,\n y: cy + Node.RADIUS * 1\n }\n ]\n }\n\n set path(path) {\n var left_top = path[0]\n var right_bottom = path[2]\n\n this.set({\n cx: left_top.x + (right_bottom.x - left_top.x) / 2,\n cy: left_top.y + (right_bottom.y - left_top.y) / 2\n })\n }\n\n get nodeMachine() {\n if (this.state.NodeMachine) {\n return this.state.NodeMachine\n }\n\n const parent = this.parent\n\n if (parent && parent instanceof MCSMachine) {\n return parent.state.id\n }\n }\n\n contains(x, y) {\n var { cx, cy } = this.state\n\n var normx = (x - cx) / (Node.RADIUS * 2)\n var normy = (y - cy) / (Node.RADIUS * 2)\n\n return normx * normx + normy * normy < 0.25\n }\n\n outline(progress) {\n var { cx, cy } = this.state\n\n return this.transcoordS2T(cx, cy)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.memoize(Node.prototype, 'path', false)\n"]}
|
package/dist/oht-line.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { sceneComponent } from '@hatiolab/things-scene';
|
|
2
3
|
import MCSTransport from './mcs-transport';
|
|
3
4
|
const NATURE = {
|
|
4
5
|
mutable: false,
|
|
@@ -6,7 +7,7 @@ const NATURE = {
|
|
|
6
7
|
rotatable: true,
|
|
7
8
|
properties: [...MCSTransport.properties]
|
|
8
9
|
};
|
|
9
|
-
|
|
10
|
+
let OHTLine = class OHTLine extends MCSTransport {
|
|
10
11
|
static get nature() {
|
|
11
12
|
return NATURE;
|
|
12
13
|
}
|
|
@@ -30,6 +31,9 @@ export default class OHTLine extends MCSTransport {
|
|
|
30
31
|
context.stroke();
|
|
31
32
|
context.translate(-left, -top);
|
|
32
33
|
}
|
|
33
|
-
}
|
|
34
|
-
|
|
34
|
+
};
|
|
35
|
+
OHTLine = __decorate([
|
|
36
|
+
sceneComponent('OHTLine')
|
|
37
|
+
], OHTLine);
|
|
38
|
+
export default OHTLine;
|
|
35
39
|
//# sourceMappingURL=oht-line.js.map
|
package/dist/oht-line.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oht-line.js","sourceRoot":"","sources":["../src/oht-line.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"oht-line.js","sourceRoot":"","sources":["../src/oht-line.ts"],"names":[],"mappings":";AAAA,OAAO,EAA8B,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,YAAY,MAAM,iBAAiB,CAAA;AAE1C,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC;CACzC,CAAA;AAGc,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,YAAY;IAC/C,MAAM,KAAK,MAAM;QACf,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,MAAM,CAAA;IACf,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;IAClE,CAAC;IAED,WAAW,CAAC,SAAoB;QAC9B,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,CAAC,OAAiC;QACtC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAEhD,OAAO,CAAC,SAAS,EAAE,CAAA;QAEnB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAE5B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,WAAY,CAAA;QACrC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,QAAS,CAAA;QAEpC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;QAErC,OAAO,CAAC,IAAI,EAAE,CAAA;QACd,OAAO,CAAC,MAAM,EAAE,CAAA;QAEhB,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;CACF,CAAA;AAlCoB,OAAO;IAD3B,cAAc,CAAC,SAAS,CAAC;GACL,OAAO,CAkC3B;eAlCoB,OAAO","sourcesContent":["import { Component, ComponentNature, sceneComponent } from '@hatiolab/things-scene'\nimport MCSTransport from './mcs-transport'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [...MCSTransport.properties]\n}\n\n@sceneComponent('OHTLine')\nexport default class OHTLine extends MCSTransport {\n static get nature() {\n return NATURE\n }\n\n get auxColor() {\n return '#333'\n }\n\n getLegendFallback() {\n return this.root.ohtlineLegendTheme || super.getLegendFallback()\n }\n\n containable(component: Component) {\n return ['OHT', 'Node'].includes(component.state.type)\n }\n\n render(context: CanvasRenderingContext2D) {\n const { left, top, width, height } = this.bounds\n\n context.beginPath()\n\n context.translate(left, top)\n\n context.fillStyle = this.statusColor!\n context.strokeStyle = this.auxColor!\n\n context.fillRect(0, 0, width, height)\n\n context.fill()\n context.stroke()\n\n context.translate(-left, -top)\n }\n}\n"]}
|
package/dist/oht.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { sceneComponent } from '@hatiolab/things-scene';
|
|
2
3
|
import MCSVehicle from './mcs-vehicle';
|
|
3
4
|
const NATURE = {
|
|
4
5
|
mutable: false,
|
|
@@ -7,7 +8,7 @@ const NATURE = {
|
|
|
7
8
|
properties: [...MCSVehicle.properties]
|
|
8
9
|
};
|
|
9
10
|
const GAP = 2;
|
|
10
|
-
|
|
11
|
+
let OHT = class OHT extends MCSVehicle {
|
|
11
12
|
static get nature() {
|
|
12
13
|
return NATURE;
|
|
13
14
|
}
|
|
@@ -43,6 +44,9 @@ export default class OHT extends MCSVehicle {
|
|
|
43
44
|
ctx.stroke();
|
|
44
45
|
ctx.translate(-left, -top);
|
|
45
46
|
}
|
|
46
|
-
}
|
|
47
|
-
|
|
47
|
+
};
|
|
48
|
+
OHT = __decorate([
|
|
49
|
+
sceneComponent('OHT')
|
|
50
|
+
], OHT);
|
|
51
|
+
export default OHT;
|
|
48
52
|
//# sourceMappingURL=oht.js.map
|
package/dist/oht.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oht.js","sourceRoot":"","sources":["../src/oht.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"oht.js","sourceRoot":"","sources":["../src/oht.ts"],"names":[],"mappings":";AAAA,OAAO,EAA0C,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC/F,OAAO,UAAU,MAAM,eAAe,CAAA;AAEtC,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC;CACvC,CAAA;AAED,MAAM,GAAG,GAAG,CAAC,CAAA;AAGE,IAAM,GAAG,GAAT,MAAM,GAAI,SAAQ,UAAU;IACzC,MAAM,KAAK,MAAM;QACf,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;IAC9D,CAAC;IAED,MAAM,CAAC,GAA6B;QAClC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAE9C,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACxB,GAAG,CAAC,SAAS,EAAE,CAAA;QAEf,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC/B,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,WAAY,CAAA;QACjC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAA;QACjB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA;QACrB,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QAEnB,oBAAoB;QACpB,2DAA2D;QAC3D,6CAA6C;QAC7C,yEAAyE;QACzE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;QAC7B,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;QAErD,GAAG,CAAC,IAAI,EAAE,CAAA;QACV,GAAG,CAAC,MAAM,EAAE,CAAA;QAEZ,GAAG,CAAC,SAAS,EAAE,CAAA;QAEf,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;QACpB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAA;QACzB,GAAG,CAAC,SAAS,GAAG,CAAC,CAAA;QACjB,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;QAC9B,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;QAEvC,GAAG,CAAC,MAAM,EAAE,CAAA;QAEZ,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;CACF,CAAA;AA/CoB,GAAG;IADvB,cAAc,CAAC,KAAK,CAAC;GACD,GAAG,CA+CvB;eA/CoB,GAAG","sourcesContent":["import { Component, ComponentNature, Properties, sceneComponent } from '@hatiolab/things-scene'\nimport MCSVehicle from './mcs-vehicle'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [...MCSVehicle.properties]\n}\n\nconst GAP = 2\n\n@sceneComponent('OHT')\nexport default class OHT extends MCSVehicle {\n static get nature() {\n return NATURE\n }\n\n get auxColor() {\n return 'black'\n }\n\n getLegendFallback() {\n return this.root.ohtLegendTheme || super.getLegendFallback()\n }\n\n render(ctx: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n ctx.translate(left, top)\n ctx.beginPath()\n\n ctx.strokeStyle = this.auxColor\n ctx.fillStyle = this.statusColor!\n ctx.lineWidth = 1\n ctx.lineCap = 'round'\n ctx.setLineDash([])\n\n // Performance aware\n // const radius = Math.round(Math.min(width, height) * 0.1)\n // ctx.roundRect(0, 0, width, height, radius)\n // ctx.roundRect(GAP, GAP, width - GAP * 2, height - GAP * 2, radius - 1)\n ctx.rect(0, 0, width, height)\n ctx.rect(GAP, GAP, width - GAP * 2, height - GAP * 2)\n\n ctx.fill()\n ctx.stroke()\n\n ctx.beginPath()\n\n ctx.lineCap = 'butt'\n ctx.strokeStyle = 'black'\n ctx.lineWidth = 3\n ctx.moveTo(width / 2, GAP * 2)\n ctx.lineTo(width / 2, height - GAP * 2)\n\n ctx.stroke()\n\n ctx.translate(-left, -top)\n }\n}\n"]}
|
package/dist/port-flow.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { RectPath, Shape, sceneComponent } from '@hatiolab/things-scene';
|
|
2
3
|
import { ParentObjectMixin, ParentObjectMixinProperties } from './features/parent-object-mixin';
|
|
3
4
|
const NATURE = {
|
|
4
5
|
mutable: false,
|
|
@@ -37,7 +38,7 @@ const NATURE = {
|
|
|
37
38
|
}
|
|
38
39
|
]
|
|
39
40
|
};
|
|
40
|
-
|
|
41
|
+
let PortFlow = class PortFlow extends ParentObjectMixin(RectPath(Shape)) {
|
|
41
42
|
static get nature() {
|
|
42
43
|
return NATURE;
|
|
43
44
|
}
|
|
@@ -210,6 +211,9 @@ export default class PortFlow extends ParentObjectMixin(RectPath(Shape)) {
|
|
|
210
211
|
const { INOUTTYPE } = after.data;
|
|
211
212
|
this.setState('direction', INOUTTYPE);
|
|
212
213
|
}
|
|
213
|
-
}
|
|
214
|
-
|
|
214
|
+
};
|
|
215
|
+
PortFlow = __decorate([
|
|
216
|
+
sceneComponent('PortFlow')
|
|
217
|
+
], PortFlow);
|
|
218
|
+
export default PortFlow;
|
|
215
219
|
//# sourceMappingURL=port-flow.js.map
|
package/dist/port-flow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port-flow.js","sourceRoot":"","sources":["../src/port-flow.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ComponentNature, RectPath, Shape, Properties } from '@hatiolab/things-scene'\nimport { ParentObjectMixin, ParentObjectMixinProperties } from './features/parent-object-mixin'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n ...ParentObjectMixinProperties,\n {\n type: 'select',\n name: 'orientation',\n label: 'orientation',\n property: {\n options: ['left to right', 'right to left', 'top to bottom', 'bottom to top']\n }\n },\n {\n type: 'select',\n name: 'labelPosition',\n label: 'label-position',\n property: {\n options: ['left', 'right', 'top', 'bottom']\n }\n },\n {\n type: 'select',\n name: 'direction',\n label: 'direction',\n property: {\n options: ['IN', 'OUT', 'BOTH']\n }\n },\n {\n type: 'checkbox',\n name: 'showText',\n label: 'show-text'\n }\n ]\n}\n\nexport default class PortFlow extends ParentObjectMixin(RectPath(Shape)) {\n static get nature() {\n return NATURE\n }\n\n get hasTextProperty() {\n return this.getState('showText') || false\n }\n\n get textBounds() {\n var { paddingTop, paddingLeft, paddingRight, paddingBottom, fontSize = 24 } = this.state\n\n paddingBottom ||= 0\n paddingTop ||= 0\n paddingLeft ||= 0\n paddingRight ||= 0\n\n var { left, top, width, height } = this.bounds\n var { labelPosition = 'top' } = this.state\n\n left += paddingLeft\n top += paddingTop\n width = Math.max(width - paddingLeft - paddingRight, 0)\n height = Math.max(height - paddingTop - paddingBottom, 0)\n\n switch (labelPosition) {\n case 'top':\n return {\n left,\n top: top - fontSize,\n width,\n height: fontSize\n }\n case 'bottom':\n return {\n left,\n top: top + height,\n width,\n height: fontSize\n }\n case 'left':\n return {\n left: left - fontSize * 4,\n top,\n width: fontSize * 4,\n height\n }\n case 'right':\n return {\n left: left + width,\n top,\n width: fontSize * 4,\n height\n }\n default:\n return {\n left,\n top: top - fontSize,\n width,\n height: fontSize\n }\n }\n }\n\n get text() {\n const { direction = 'IN' } = this.state\n\n return direction.toUpperCase()\n }\n\n render(ctx) {\n const { left, top, width, height } = this.bounds\n var { orientation = 'left to right', direction = 'BOTH' }: { orientation?: string; direction?: string } = this.state\n const { INOUTTYPE } = this.data || {}\n\n if (INOUTTYPE) {\n direction = INOUTTYPE /* IN | OUT | BOTH */\n }\n\n ctx.beginPath()\n\n const arrowSize = Math.min(width, height) * 1\n const bodyWidth = orientation === 'left to right' || orientation === 'right to left' ? height * 0.1 : width * 0.1\n const centerX = left + width / 2\n const centerY = top + height / 2\n\n let startX, startY, endX, endY\n let reverse = 1\n\n switch (orientation) {\n case 'left to right':\n startX = left\n endX = left + width\n startY = centerY\n endY = centerY\n break\n case 'right to left':\n startX = left + width\n endX = left\n startY = centerY\n endY = centerY\n reverse = -1\n break\n case 'top to bottom':\n startX = centerX\n endX = centerX\n startY = top\n endY = top + height\n break\n case 'bottom to top':\n startX = centerX\n endX = centerX\n startY = top + height\n endY = top\n reverse = -1\n break\n }\n\n ctx.lineTo(startX, startY)\n\n if (orientation.includes('left')) {\n if (direction === 'OUT' || direction === 'BOTH') {\n ctx.lineTo(startX + arrowSize * reverse, startY - bodyWidth * reverse * 8)\n } else {\n ctx.lineTo(startX, startY - bodyWidth * reverse)\n }\n\n ctx.lineTo(startX + arrowSize * reverse, startY - bodyWidth * reverse)\n ctx.lineTo(endX - arrowSize * reverse, endY - bodyWidth * reverse)\n\n if (direction === 'IN' || direction === 'BOTH') {\n ctx.lineTo(endX - arrowSize * reverse, endY - bodyWidth * 8 * reverse)\n } else {\n ctx.lineTo(endX, endY - bodyWidth * reverse)\n }\n\n ctx.lineTo(endX, endY)\n\n if (direction === 'IN' || direction === 'BOTH') {\n ctx.lineTo(endX - arrowSize * reverse, endY + bodyWidth * 8 * reverse)\n } else {\n ctx.lineTo(endX, endY + bodyWidth * reverse)\n }\n\n ctx.lineTo(endX - arrowSize * reverse, endY + bodyWidth * reverse)\n ctx.lineTo(startX + arrowSize * reverse, startY + bodyWidth * reverse)\n\n if (direction === 'OUT' || direction === 'BOTH') {\n ctx.lineTo(startX + arrowSize * reverse, startY + bodyWidth * 8 * reverse)\n } else {\n ctx.lineTo(startX, startY + bodyWidth * reverse)\n }\n } else {\n if (direction === 'OUT' || direction === 'BOTH') {\n ctx.lineTo(startX - bodyWidth * reverse * 8, startY + arrowSize * reverse)\n } else {\n ctx.lineTo(startX - bodyWidth * reverse, startY)\n }\n\n ctx.lineTo(startX - bodyWidth * reverse, startY + arrowSize * reverse)\n ctx.lineTo(endX - bodyWidth * reverse, endY - arrowSize * reverse)\n\n if (direction === 'IN' || direction === 'BOTH') {\n ctx.lineTo(endX - bodyWidth * 8 * reverse, endY - arrowSize * reverse)\n } else {\n ctx.lineTo(endX - bodyWidth * reverse, endY)\n }\n\n ctx.lineTo(endX, endY)\n\n if (direction === 'IN' || direction === 'BOTH') {\n ctx.lineTo(endX + bodyWidth * 8 * reverse, endY - arrowSize * reverse)\n } else {\n ctx.lineTo(endX + bodyWidth * reverse, endY)\n }\n\n ctx.lineTo(endX + bodyWidth * reverse, endY - arrowSize * reverse)\n ctx.lineTo(startX + bodyWidth * reverse, startY + arrowSize * reverse)\n\n if (direction === 'OUT' || direction === 'BOTH') {\n ctx.lineTo(startX + bodyWidth * 8 * reverse, startY + arrowSize * reverse)\n } else {\n ctx.lineTo(startX + bodyWidth * reverse, startY)\n }\n }\n\n ctx.closePath()\n\n this.drawStroke(ctx)\n }\n\n onchangeData(after: Properties, before: Properties): void {\n const { INOUTTYPE } = after.data\n\n this.setState('direction', INOUTTYPE)\n }\n}\n\nComponent.register('PortFlow', PortFlow)\n"]}
|
|
1
|
+
{"version":3,"file":"port-flow.js","sourceRoot":"","sources":["../src/port-flow.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ComponentNature, RectPath, Shape, Properties, sceneComponent } from '@hatiolab/things-scene'\nimport { ParentObjectMixin, ParentObjectMixinProperties } from './features/parent-object-mixin'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n ...ParentObjectMixinProperties,\n {\n type: 'select',\n name: 'orientation',\n label: 'orientation',\n property: {\n options: ['left to right', 'right to left', 'top to bottom', 'bottom to top']\n }\n },\n {\n type: 'select',\n name: 'labelPosition',\n label: 'label-position',\n property: {\n options: ['left', 'right', 'top', 'bottom']\n }\n },\n {\n type: 'select',\n name: 'direction',\n label: 'direction',\n property: {\n options: ['IN', 'OUT', 'BOTH']\n }\n },\n {\n type: 'checkbox',\n name: 'showText',\n label: 'show-text'\n }\n ]\n}\n\n@sceneComponent('PortFlow')\nexport default class PortFlow extends ParentObjectMixin(RectPath(Shape)) {\n static get nature() {\n return NATURE\n }\n\n get hasTextProperty() {\n return this.getState('showText') || false\n }\n\n get textBounds() {\n var { paddingTop, paddingLeft, paddingRight, paddingBottom, fontSize = 24 } = this.state\n\n paddingBottom ||= 0\n paddingTop ||= 0\n paddingLeft ||= 0\n paddingRight ||= 0\n\n var { left, top, width, height } = this.bounds\n var { labelPosition = 'top' } = this.state\n\n left += paddingLeft\n top += paddingTop\n width = Math.max(width - paddingLeft - paddingRight, 0)\n height = Math.max(height - paddingTop - paddingBottom, 0)\n\n switch (labelPosition) {\n case 'top':\n return {\n left,\n top: top - fontSize,\n width,\n height: fontSize\n }\n case 'bottom':\n return {\n left,\n top: top + height,\n width,\n height: fontSize\n }\n case 'left':\n return {\n left: left - fontSize * 4,\n top,\n width: fontSize * 4,\n height\n }\n case 'right':\n return {\n left: left + width,\n top,\n width: fontSize * 4,\n height\n }\n default:\n return {\n left,\n top: top - fontSize,\n width,\n height: fontSize\n }\n }\n }\n\n get text() {\n const { direction = 'IN' } = this.state\n\n return direction.toUpperCase()\n }\n\n render(ctx) {\n const { left, top, width, height } = this.bounds\n var { orientation = 'left to right', direction = 'BOTH' }: { orientation?: string; direction?: string } = this.state\n const { INOUTTYPE } = this.data || {}\n\n if (INOUTTYPE) {\n direction = INOUTTYPE /* IN | OUT | BOTH */\n }\n\n ctx.beginPath()\n\n const arrowSize = Math.min(width, height) * 1\n const bodyWidth = orientation === 'left to right' || orientation === 'right to left' ? height * 0.1 : width * 0.1\n const centerX = left + width / 2\n const centerY = top + height / 2\n\n let startX, startY, endX, endY\n let reverse = 1\n\n switch (orientation) {\n case 'left to right':\n startX = left\n endX = left + width\n startY = centerY\n endY = centerY\n break\n case 'right to left':\n startX = left + width\n endX = left\n startY = centerY\n endY = centerY\n reverse = -1\n break\n case 'top to bottom':\n startX = centerX\n endX = centerX\n startY = top\n endY = top + height\n break\n case 'bottom to top':\n startX = centerX\n endX = centerX\n startY = top + height\n endY = top\n reverse = -1\n break\n }\n\n ctx.lineTo(startX, startY)\n\n if (orientation.includes('left')) {\n if (direction === 'OUT' || direction === 'BOTH') {\n ctx.lineTo(startX + arrowSize * reverse, startY - bodyWidth * reverse * 8)\n } else {\n ctx.lineTo(startX, startY - bodyWidth * reverse)\n }\n\n ctx.lineTo(startX + arrowSize * reverse, startY - bodyWidth * reverse)\n ctx.lineTo(endX - arrowSize * reverse, endY - bodyWidth * reverse)\n\n if (direction === 'IN' || direction === 'BOTH') {\n ctx.lineTo(endX - arrowSize * reverse, endY - bodyWidth * 8 * reverse)\n } else {\n ctx.lineTo(endX, endY - bodyWidth * reverse)\n }\n\n ctx.lineTo(endX, endY)\n\n if (direction === 'IN' || direction === 'BOTH') {\n ctx.lineTo(endX - arrowSize * reverse, endY + bodyWidth * 8 * reverse)\n } else {\n ctx.lineTo(endX, endY + bodyWidth * reverse)\n }\n\n ctx.lineTo(endX - arrowSize * reverse, endY + bodyWidth * reverse)\n ctx.lineTo(startX + arrowSize * reverse, startY + bodyWidth * reverse)\n\n if (direction === 'OUT' || direction === 'BOTH') {\n ctx.lineTo(startX + arrowSize * reverse, startY + bodyWidth * 8 * reverse)\n } else {\n ctx.lineTo(startX, startY + bodyWidth * reverse)\n }\n } else {\n if (direction === 'OUT' || direction === 'BOTH') {\n ctx.lineTo(startX - bodyWidth * reverse * 8, startY + arrowSize * reverse)\n } else {\n ctx.lineTo(startX - bodyWidth * reverse, startY)\n }\n\n ctx.lineTo(startX - bodyWidth * reverse, startY + arrowSize * reverse)\n ctx.lineTo(endX - bodyWidth * reverse, endY - arrowSize * reverse)\n\n if (direction === 'IN' || direction === 'BOTH') {\n ctx.lineTo(endX - bodyWidth * 8 * reverse, endY - arrowSize * reverse)\n } else {\n ctx.lineTo(endX - bodyWidth * reverse, endY)\n }\n\n ctx.lineTo(endX, endY)\n\n if (direction === 'IN' || direction === 'BOTH') {\n ctx.lineTo(endX + bodyWidth * 8 * reverse, endY - arrowSize * reverse)\n } else {\n ctx.lineTo(endX + bodyWidth * reverse, endY)\n }\n\n ctx.lineTo(endX + bodyWidth * reverse, endY - arrowSize * reverse)\n ctx.lineTo(startX + bodyWidth * reverse, startY + arrowSize * reverse)\n\n if (direction === 'OUT' || direction === 'BOTH') {\n ctx.lineTo(startX + bodyWidth * 8 * reverse, startY + arrowSize * reverse)\n } else {\n ctx.lineTo(startX + bodyWidth * reverse, startY)\n }\n }\n\n ctx.closePath()\n\n this.drawStroke(ctx)\n }\n\n onchangeData(after: Properties, before: Properties): void {\n const { INOUTTYPE } = after.data\n\n this.setState('direction', INOUTTYPE)\n }\n}\n"]}
|
package/dist/port.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { sceneComponent } from '@hatiolab/things-scene';
|
|
2
3
|
import { MCSZoneMixin, MCSZoneMixinProperties } from './features/mcs-zone-mixin';
|
|
3
4
|
import MCSCarrierHolder from './mcs-carrier-holder';
|
|
4
5
|
const NATURE = {
|
|
@@ -7,7 +8,7 @@ const NATURE = {
|
|
|
7
8
|
rotatable: true,
|
|
8
9
|
properties: [...MCSZoneMixinProperties, ...MCSCarrierHolder.properties]
|
|
9
10
|
};
|
|
10
|
-
|
|
11
|
+
let Port = class Port extends MCSZoneMixin(MCSCarrierHolder) {
|
|
11
12
|
static get nature() {
|
|
12
13
|
return NATURE;
|
|
13
14
|
}
|
|
@@ -32,6 +33,9 @@ export default class Port extends MCSZoneMixin(MCSCarrierHolder) {
|
|
|
32
33
|
ctx.fill();
|
|
33
34
|
ctx.stroke();
|
|
34
35
|
}
|
|
35
|
-
}
|
|
36
|
-
|
|
36
|
+
};
|
|
37
|
+
Port = __decorate([
|
|
38
|
+
sceneComponent('Port')
|
|
39
|
+
], Port);
|
|
40
|
+
export default Port;
|
|
37
41
|
//# sourceMappingURL=port.js.map
|
package/dist/port.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port.js","sourceRoot":"","sources":["../src/port.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"port.js","sourceRoot":"","sources":["../src/port.ts"],"names":[],"mappings":";AAAA,OAAO,EAA8B,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAChF,OAAO,gBAAgB,MAAM,sBAAsB,CAAA;AAEnD,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,CAAC,GAAG,sBAAsB,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC;CACxE,CAAA;AAGc,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAC9D,MAAM,KAAK,MAAM;QACf,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;IAC/D,CAAC;IAED,MAAM,CAAC,GAA6B;QAClC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAE9C,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC/B,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,WAAY,CAAA;QACjC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAA;QACjB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA;QACrB,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QAEnB,GAAG,CAAC,SAAS,EAAE,CAAA;QAEf,oBAAoB;QACpB,2DAA2D;QAC3D,kDAAkD;QAClD,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;QAElC,GAAG,CAAC,IAAI,EAAE,CAAA;QACV,GAAG,CAAC,MAAM,EAAE,CAAA;IACd,CAAC;CACF,CAAA;AAhCoB,IAAI;IADxB,cAAc,CAAC,MAAM,CAAC;GACF,IAAI,CAgCxB;eAhCoB,IAAI","sourcesContent":["import { Component, ComponentNature, sceneComponent } from '@hatiolab/things-scene'\nimport { MCSZoneMixin, MCSZoneMixinProperties } from './features/mcs-zone-mixin'\nimport MCSCarrierHolder from './mcs-carrier-holder'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [...MCSZoneMixinProperties, ...MCSCarrierHolder.properties]\n}\n\n@sceneComponent('Port')\nexport default class Port extends MCSZoneMixin(MCSCarrierHolder) {\n static get nature() {\n return NATURE\n }\n\n get auxColor() {\n return 'black'\n }\n\n getLegendFallback() {\n return this.root.portLegendTheme || super.getLegendFallback()\n }\n\n render(ctx: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n ctx.strokeStyle = this.auxColor\n ctx.fillStyle = this.statusColor!\n ctx.lineWidth = 1\n ctx.lineCap = 'round'\n ctx.setLineDash([])\n\n ctx.beginPath()\n\n // Performance aware\n // const radius = Math.round(Math.min(width, height) * 0.1)\n // ctx.roundRect(left, top, width, height, radius)\n ctx.rect(left, top, width, height)\n\n ctx.fill()\n ctx.stroke()\n }\n}\n"]}
|
package/dist/shelf.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { sceneComponent } from '@hatiolab/things-scene';
|
|
2
3
|
import MCSCarrierHolder from './mcs-carrier-holder';
|
|
3
4
|
import { MCSZoneMixin, MCSZoneMixinProperties } from './features/mcs-zone-mixin';
|
|
4
5
|
const NATURE = {
|
|
@@ -7,7 +8,7 @@ const NATURE = {
|
|
|
7
8
|
rotatable: true,
|
|
8
9
|
properties: [...MCSZoneMixinProperties, ...MCSCarrierHolder.properties]
|
|
9
10
|
};
|
|
10
|
-
|
|
11
|
+
let Shelf = class Shelf extends MCSZoneMixin(MCSCarrierHolder) {
|
|
11
12
|
static get nature() {
|
|
12
13
|
return NATURE;
|
|
13
14
|
}
|
|
@@ -41,6 +42,9 @@ export default class Shelf extends MCSZoneMixin(MCSCarrierHolder) {
|
|
|
41
42
|
ctx.translate(-left, -top);
|
|
42
43
|
ctx.restore();
|
|
43
44
|
}
|
|
44
|
-
}
|
|
45
|
-
|
|
45
|
+
};
|
|
46
|
+
Shelf = __decorate([
|
|
47
|
+
sceneComponent('Shelf')
|
|
48
|
+
], Shelf);
|
|
49
|
+
export default Shelf;
|
|
46
50
|
//# sourceMappingURL=shelf.js.map
|
package/dist/shelf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shelf.js","sourceRoot":"","sources":["../src/shelf.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"shelf.js","sourceRoot":"","sources":["../src/shelf.ts"],"names":[],"mappings":";AAAA,OAAO,EAA8B,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,gBAAgB,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAEhF,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,CAAC,GAAG,sBAAsB,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC;CACxE,CAAA;AAGc,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAC/D,MAAM,KAAK,MAAM;QACf,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;IAChE,CAAC;IAED,MAAM,CAAC,GAA6B;QAClC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAE9C,GAAG,CAAC,IAAI,EAAE,CAAA;QAEV,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACxB,GAAG,CAAC,SAAS,EAAE,CAAA;QAEf,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC/B,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,WAAY,CAAA;QACjC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAA;QACjB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA;QACrB,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QAEnB,oBAAoB;QACpB,2DAA2D;QAC3D,6CAA6C;QAC7C,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;QAE7B,GAAG,CAAC,IAAI,EAAE,CAAA;QAEV,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAChB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QACrB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAEpB,GAAG,CAAC,IAAI,EAAE,CAAA;QACV,GAAG,CAAC,MAAM,EAAE,CAAA;QAEZ,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;QAC1B,GAAG,CAAC,OAAO,EAAE,CAAA;IACf,CAAC;CACF,CAAA;AA7CoB,KAAK;IADzB,cAAc,CAAC,OAAO,CAAC;GACH,KAAK,CA6CzB;eA7CoB,KAAK","sourcesContent":["import { Component, ComponentNature, sceneComponent } from '@hatiolab/things-scene'\nimport MCSCarrierHolder from './mcs-carrier-holder'\nimport { MCSZoneMixin, MCSZoneMixinProperties } from './features/mcs-zone-mixin'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [...MCSZoneMixinProperties, ...MCSCarrierHolder.properties]\n}\n\n@sceneComponent('Shelf')\nexport default class Shelf extends MCSZoneMixin(MCSCarrierHolder) {\n static get nature() {\n return NATURE\n }\n\n get auxColor() {\n return 'black'\n }\n\n getLegendFallback() {\n return this.root.shelfLegendTheme || super.getLegendFallback()\n }\n\n render(ctx: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n ctx.save()\n\n ctx.translate(left, top)\n ctx.beginPath()\n\n ctx.strokeStyle = this.auxColor\n ctx.fillStyle = this.statusColor!\n ctx.lineWidth = 1\n ctx.lineCap = 'round'\n ctx.setLineDash([])\n\n // Performance aware\n // const radius = Math.round(Math.min(width, height) * 0.1)\n // ctx.roundRect(0, 0, width, height, radius)\n ctx.rect(0, 0, width, height)\n\n ctx.clip()\n\n ctx.moveTo(0, 0)\n ctx.lineTo(width, height)\n ctx.moveTo(0, height)\n ctx.lineTo(width, 0)\n\n ctx.fill()\n ctx.stroke()\n\n ctx.translate(-left, -top)\n ctx.restore()\n }\n}\n"]}
|
package/dist/shuttle.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { sceneComponent } from '@hatiolab/things-scene';
|
|
2
3
|
import MCSVehicle from './mcs-vehicle';
|
|
3
4
|
const NATURE = {
|
|
4
5
|
mutable: false,
|
|
@@ -7,7 +8,7 @@ const NATURE = {
|
|
|
7
8
|
properties: [...MCSVehicle.properties]
|
|
8
9
|
};
|
|
9
10
|
const RAILWIDTH = 2;
|
|
10
|
-
|
|
11
|
+
let Shuttle = class Shuttle extends MCSVehicle {
|
|
11
12
|
static get nature() {
|
|
12
13
|
return NATURE;
|
|
13
14
|
}
|
|
@@ -54,6 +55,9 @@ export default class Shuttle extends MCSVehicle {
|
|
|
54
55
|
// Performance aware
|
|
55
56
|
// this.renderDirection(ctx)
|
|
56
57
|
}
|
|
57
|
-
}
|
|
58
|
-
|
|
58
|
+
};
|
|
59
|
+
Shuttle = __decorate([
|
|
60
|
+
sceneComponent('Shuttle')
|
|
61
|
+
], Shuttle);
|
|
62
|
+
export default Shuttle;
|
|
59
63
|
//# sourceMappingURL=shuttle.js.map
|