circuitscript 0.1.19 → 0.1.20

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/cjs/graph.js CHANGED
@@ -51,6 +51,7 @@ class NetGraph {
51
51
  const baseFrame = new layout_js_1.RenderFrame(new Frame_js_1.Frame(Frame_js_1.FixedFrameIds.BaseFrame));
52
52
  const frameStack = [baseFrame];
53
53
  const containerFrames = [baseFrame];
54
+ const nodeFrames = new Map();
54
55
  sequence.forEach((sequenceStep, index) => {
55
56
  const action = sequenceStep[0];
56
57
  let tmpComponent;
@@ -60,6 +61,10 @@ class NetGraph {
60
61
  this.print(...sequenceStep);
61
62
  const [, component, pin] = sequenceStep;
62
63
  const tmpInstanceName = component.instanceName;
64
+ if (action === ExecutionScope_js_1.SequenceAction.At) {
65
+ previousNode = null;
66
+ previousPin = null;
67
+ }
63
68
  if (!graph.hasNode(tmpInstanceName)) {
64
69
  this.print('create instance', tmpInstanceName);
65
70
  const { displayProp = null } = component;
@@ -83,8 +88,15 @@ class NetGraph {
83
88
  tmpComponent = new layout_js_1.RenderComponent(component, useWidth, useHeight);
84
89
  tmpComponent.symbol = tmpSymbol;
85
90
  graph.setNode(tmpInstanceName, [RenderItemType.Component, tmpComponent, index]);
86
- const currentFrame = frameStack[frameStack.length - 1];
87
- currentFrame && currentFrame.innerItems.push(tmpComponent);
91
+ let useFrame = frameStack[frameStack.length - 1];
92
+ if (nodeFrames.has(previousNode)) {
93
+ const previousNodeFrame = nodeFrames.get(previousNode);
94
+ if (previousNodeFrame !== useFrame) {
95
+ useFrame = previousNodeFrame;
96
+ }
97
+ }
98
+ useFrame && useFrame.innerItems.push(tmpComponent);
99
+ nodeFrames.set(tmpInstanceName, useFrame);
88
100
  }
89
101
  if (action === ExecutionScope_js_1.SequenceAction.To && previousNode && previousPin) {
90
102
  this.setGraphEdge(graph, previousNode, tmpInstanceName, makeEdgeValue(previousNode, previousPin, tmpInstanceName, pin, index));
@@ -116,6 +128,7 @@ class NetGraph {
116
128
  wire.netName = useNet.toString();
117
129
  const wireName = getWireName(wire.id);
118
130
  graph.setNode(wireName, [RenderItemType.Wire, wire, index]);
131
+ let tmpPreviousNode = previousNode;
119
132
  this.setGraphEdge(graph, previousNode, wireName, makeEdgeValue(previousNode, previousPin, wireName, 0, index));
120
133
  previousNode = wireName;
121
134
  previousPin = 1;
@@ -132,6 +145,14 @@ class NetGraph {
132
145
  }
133
146
  return tmp;
134
147
  });
148
+ let useFrame = frameStack[frameStack.length - 1];
149
+ if (nodeFrames.has(tmpPreviousNode)) {
150
+ const previousNodeFrame = nodeFrames.get(tmpPreviousNode);
151
+ if (previousNodeFrame !== useFrame) {
152
+ useFrame = previousNodeFrame;
153
+ }
154
+ }
155
+ nodeFrames.set(wireName, useFrame);
135
156
  this.print(ExecutionScope_js_1.SequenceAction.Wire, wireId, JSON.stringify(wireSegmentsInfo));
136
157
  break;
137
158
  }
@@ -1241,6 +1241,8 @@ class RenderFrame extends RenderObject {
1241
1241
  this.containsTitle = false;
1242
1242
  this.frame = frame;
1243
1243
  this.renderType = type;
1244
+ this.frameId = RenderFrame.FrameIdCounter;
1245
+ RenderFrame.FrameIdCounter++;
1244
1246
  }
1245
1247
  toString() {
1246
1248
  let name = "";
@@ -1255,6 +1257,7 @@ class RenderFrame extends RenderObject {
1255
1257
  }
1256
1258
  }
1257
1259
  exports.RenderFrame = RenderFrame;
1260
+ RenderFrame.FrameIdCounter = 0;
1258
1261
  var RenderFrameType;
1259
1262
  (function (RenderFrameType) {
1260
1263
  RenderFrameType[RenderFrameType["Container"] = 1] = "Container";
package/dist/esm/graph.js CHANGED
@@ -26,6 +26,7 @@ export class NetGraph {
26
26
  const baseFrame = new RenderFrame(new Frame(FixedFrameIds.BaseFrame));
27
27
  const frameStack = [baseFrame];
28
28
  const containerFrames = [baseFrame];
29
+ const nodeFrames = new Map();
29
30
  sequence.forEach((sequenceStep, index) => {
30
31
  const action = sequenceStep[0];
31
32
  let tmpComponent;
@@ -35,6 +36,10 @@ export class NetGraph {
35
36
  this.print(...sequenceStep);
36
37
  const [, component, pin] = sequenceStep;
37
38
  const tmpInstanceName = component.instanceName;
39
+ if (action === SequenceAction.At) {
40
+ previousNode = null;
41
+ previousPin = null;
42
+ }
38
43
  if (!graph.hasNode(tmpInstanceName)) {
39
44
  this.print('create instance', tmpInstanceName);
40
45
  const { displayProp = null } = component;
@@ -58,8 +63,15 @@ export class NetGraph {
58
63
  tmpComponent = new RenderComponent(component, useWidth, useHeight);
59
64
  tmpComponent.symbol = tmpSymbol;
60
65
  graph.setNode(tmpInstanceName, [RenderItemType.Component, tmpComponent, index]);
61
- const currentFrame = frameStack[frameStack.length - 1];
62
- currentFrame && currentFrame.innerItems.push(tmpComponent);
66
+ let useFrame = frameStack[frameStack.length - 1];
67
+ if (nodeFrames.has(previousNode)) {
68
+ const previousNodeFrame = nodeFrames.get(previousNode);
69
+ if (previousNodeFrame !== useFrame) {
70
+ useFrame = previousNodeFrame;
71
+ }
72
+ }
73
+ useFrame && useFrame.innerItems.push(tmpComponent);
74
+ nodeFrames.set(tmpInstanceName, useFrame);
63
75
  }
64
76
  if (action === SequenceAction.To && previousNode && previousPin) {
65
77
  this.setGraphEdge(graph, previousNode, tmpInstanceName, makeEdgeValue(previousNode, previousPin, tmpInstanceName, pin, index));
@@ -91,6 +103,7 @@ export class NetGraph {
91
103
  wire.netName = useNet.toString();
92
104
  const wireName = getWireName(wire.id);
93
105
  graph.setNode(wireName, [RenderItemType.Wire, wire, index]);
106
+ let tmpPreviousNode = previousNode;
94
107
  this.setGraphEdge(graph, previousNode, wireName, makeEdgeValue(previousNode, previousPin, wireName, 0, index));
95
108
  previousNode = wireName;
96
109
  previousPin = 1;
@@ -107,6 +120,14 @@ export class NetGraph {
107
120
  }
108
121
  return tmp;
109
122
  });
123
+ let useFrame = frameStack[frameStack.length - 1];
124
+ if (nodeFrames.has(tmpPreviousNode)) {
125
+ const previousNodeFrame = nodeFrames.get(tmpPreviousNode);
126
+ if (previousNodeFrame !== useFrame) {
127
+ useFrame = previousNodeFrame;
128
+ }
129
+ }
130
+ nodeFrames.set(wireName, useFrame);
110
131
  this.print(SequenceAction.Wire, wireId, JSON.stringify(wireSegmentsInfo));
111
132
  break;
112
133
  }
@@ -1219,6 +1219,7 @@ export class RenderText extends RenderObject {
1219
1219
  }
1220
1220
  }
1221
1221
  export class RenderFrame extends RenderObject {
1222
+ static FrameIdCounter = 0;
1222
1223
  bounds = null;
1223
1224
  frame;
1224
1225
  innerItems = [];
@@ -1233,10 +1234,13 @@ export class RenderFrame extends RenderObject {
1233
1234
  subgraphId = "";
1234
1235
  renderType;
1235
1236
  containsTitle = false;
1237
+ frameId;
1236
1238
  constructor(frame, type = RenderFrameType.Container) {
1237
1239
  super();
1238
1240
  this.frame = frame;
1239
1241
  this.renderType = type;
1242
+ this.frameId = RenderFrame.FrameIdCounter;
1243
+ RenderFrame.FrameIdCounter++;
1240
1244
  }
1241
1245
  toString() {
1242
1246
  let name = "";
@@ -107,6 +107,7 @@ export declare class RenderText extends RenderObject {
107
107
  constructor(text: string);
108
108
  }
109
109
  export declare class RenderFrame extends RenderObject {
110
+ static FrameIdCounter: number;
110
111
  bounds: BoundBox | null;
111
112
  frame: Frame;
112
113
  innerItems: (RenderComponent | RenderFrame | RenderText)[];
@@ -121,6 +122,7 @@ export declare class RenderFrame extends RenderObject {
121
122
  subgraphId: string;
122
123
  renderType: RenderFrameType;
123
124
  containsTitle: boolean;
125
+ frameId: number;
124
126
  constructor(frame: Frame, type?: RenderFrameType);
125
127
  toString(): string;
126
128
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "circuitscript",
3
- "version": "0.1.19",
3
+ "version": "0.1.20",
4
4
  "description": "Interpreter for the circuitscript language",
5
5
  "homepage": "https://circuitscript.net",
6
6
  "engines": {