circuitscript 0.0.38 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/BaseVisitor.js +69 -46
- package/dist/cjs/SymbolValidatorVisitor.js +1 -1
- package/dist/cjs/antlr/CircuitScriptLexer.js +80 -80
- package/dist/cjs/antlr/CircuitScriptParser.js +580 -613
- package/dist/cjs/builtinMethods.js +32 -10
- package/dist/cjs/draw_symbols.js +375 -233
- package/dist/cjs/execute.js +142 -131
- package/dist/cjs/export.js +2 -4
- package/dist/cjs/geometry.js +52 -19
- package/dist/cjs/globals.js +14 -9
- package/dist/cjs/helpers.js +16 -3
- package/dist/cjs/layout.js +143 -151
- package/dist/cjs/logger.js +8 -1
- package/dist/cjs/objects/ClassComponent.js +22 -22
- package/dist/cjs/objects/ExecutionScope.js +10 -4
- package/dist/cjs/objects/Frame.js +4 -1
- package/dist/cjs/objects/ParamDefinition.js +120 -4
- package/dist/cjs/objects/PinDefinition.js +1 -4
- package/dist/cjs/objects/types.js +41 -0
- package/dist/cjs/render.js +41 -110
- package/dist/cjs/sizing.js +33 -7
- package/dist/cjs/utils.js +92 -2
- package/dist/cjs/visitor.js +279 -284
- package/dist/esm/BaseVisitor.mjs +70 -47
- package/dist/esm/SymbolValidatorVisitor.mjs +1 -1
- package/dist/esm/antlr/CircuitScriptLexer.mjs +80 -80
- package/dist/esm/antlr/CircuitScriptParser.mjs +580 -613
- package/dist/esm/builtinMethods.mjs +29 -10
- package/dist/esm/draw_symbols.mjs +381 -238
- package/dist/esm/execute.mjs +144 -133
- package/dist/esm/export.mjs +2 -4
- package/dist/esm/geometry.mjs +52 -19
- package/dist/esm/globals.mjs +13 -8
- package/dist/esm/helpers.mjs +17 -4
- package/dist/esm/layout.mjs +144 -153
- package/dist/esm/logger.mjs +8 -1
- package/dist/esm/objects/ClassComponent.mjs +21 -26
- package/dist/esm/objects/ExecutionScope.mjs +10 -4
- package/dist/esm/objects/Frame.mjs +4 -1
- package/dist/esm/objects/ParamDefinition.mjs +119 -3
- package/dist/esm/objects/PinDefinition.mjs +0 -2
- package/dist/esm/objects/types.mjs +42 -0
- package/dist/esm/render.mjs +44 -113
- package/dist/esm/sizing.mjs +34 -8
- package/dist/esm/utils.mjs +86 -1
- package/dist/esm/visitor.mjs +281 -286
- package/dist/types/BaseVisitor.d.ts +3 -2
- package/dist/types/antlr/CircuitScriptParser.d.ts +5 -3
- package/dist/types/draw_symbols.d.ts +81 -49
- package/dist/types/execute.d.ts +16 -11
- package/dist/types/geometry.d.ts +31 -19
- package/dist/types/globals.d.ts +15 -10
- package/dist/types/helpers.d.ts +2 -1
- package/dist/types/layout.d.ts +22 -21
- package/dist/types/logger.d.ts +1 -1
- package/dist/types/objects/ClassComponent.d.ts +19 -16
- package/dist/types/objects/ExecutionScope.d.ts +2 -1
- package/dist/types/objects/Frame.d.ts +5 -3
- package/dist/types/objects/ParamDefinition.d.ts +31 -2
- package/dist/types/objects/PinDefinition.d.ts +0 -2
- package/dist/types/objects/types.d.ts +7 -2
- package/dist/types/render.d.ts +2 -1
- package/dist/types/utils.d.ts +9 -1
- package/dist/types/visitor.d.ts +5 -5
- package/libs/lib.cst +102 -32
- package/package.json +7 -3
package/dist/cjs/sizing.js
CHANGED
|
@@ -67,27 +67,53 @@ function measureTextSize2(text, fontFamily, fontSize, fontWeight = 'regular', an
|
|
|
67
67
|
}
|
|
68
68
|
const key = `${text}-${fontFamily}-${fontSize}-${fontWeight}-${anchor}-${vanchor}`;
|
|
69
69
|
if (measureTextSizeCache[key] === undefined) {
|
|
70
|
-
let dominantBaseline =
|
|
70
|
+
let dominantBaseline = geometry_js_1.VerticalAlignProp.Hanging;
|
|
71
71
|
switch (vanchor) {
|
|
72
72
|
case geometry_js_1.VerticalAlign.Top:
|
|
73
|
-
dominantBaseline =
|
|
73
|
+
dominantBaseline = geometry_js_1.VerticalAlignProp.Hanging;
|
|
74
74
|
break;
|
|
75
75
|
case geometry_js_1.VerticalAlign.Middle:
|
|
76
|
-
dominantBaseline =
|
|
76
|
+
dominantBaseline = geometry_js_1.VerticalAlignProp.Central;
|
|
77
77
|
break;
|
|
78
78
|
case geometry_js_1.VerticalAlign.Bottom:
|
|
79
|
-
dominantBaseline =
|
|
79
|
+
dominantBaseline = geometry_js_1.VerticalAlignProp.TextTop;
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
let useAnchor = geometry_js_1.HorizontalAlignProp.Start;
|
|
83
|
+
switch (anchor) {
|
|
84
|
+
case geometry_js_1.HorizontalAlign.Left:
|
|
85
|
+
useAnchor = geometry_js_1.HorizontalAlignProp.Start;
|
|
86
|
+
break;
|
|
87
|
+
case geometry_js_1.HorizontalAlign.Middle:
|
|
88
|
+
useAnchor = geometry_js_1.HorizontalAlignProp.Middle;
|
|
89
|
+
break;
|
|
90
|
+
case geometry_js_1.HorizontalAlign.Right:
|
|
91
|
+
useAnchor = geometry_js_1.HorizontalAlignProp.End;
|
|
80
92
|
break;
|
|
81
93
|
}
|
|
82
94
|
fontFamily = globals_js_1.defaultFont;
|
|
83
95
|
const tmpTextElement = MainCanvas.text(text).font({
|
|
84
96
|
family: fontFamily,
|
|
85
97
|
size: fontSize,
|
|
86
|
-
anchor:
|
|
98
|
+
anchor: useAnchor,
|
|
87
99
|
'dominant-baseline': dominantBaseline,
|
|
88
100
|
weight: fontWeight,
|
|
89
|
-
})
|
|
90
|
-
|
|
101
|
+
})
|
|
102
|
+
.attr("xml:space", "preserve")
|
|
103
|
+
.fill('#333');
|
|
104
|
+
let textbox = tmpTextElement.bbox();
|
|
105
|
+
const tmpTextBox = { ...textbox };
|
|
106
|
+
if (dominantBaseline === geometry_js_1.VerticalAlignProp.Hanging) {
|
|
107
|
+
tmpTextBox.y = textbox.cy - textbox.height;
|
|
108
|
+
tmpTextBox.y2 = tmpTextBox.y + textbox.height;
|
|
109
|
+
textbox = tmpTextBox;
|
|
110
|
+
}
|
|
111
|
+
else if (dominantBaseline === geometry_js_1.VerticalAlignProp.Central) {
|
|
112
|
+
tmpTextBox.y -= textbox.cy;
|
|
113
|
+
tmpTextBox.y2 -= textbox.cy;
|
|
114
|
+
tmpTextBox.cy = 0;
|
|
115
|
+
textbox = tmpTextBox;
|
|
116
|
+
}
|
|
91
117
|
const { width, height } = textbox;
|
|
92
118
|
tmpTextElement.remove();
|
|
93
119
|
measureTextSizeCache[key] = {
|
package/dist/cjs/utils.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.roundValue = exports.getPortType = exports.getBoundsSize = exports.toNearestGrid = exports.resizeToNearestGrid = exports.printBounds = exports.resizeBounds = exports.SimpleStopwatch = void 0;
|
|
3
|
+
exports.resolveToNumericValue = exports.getNumberExponentialText = exports.getNumberExponential = exports.combineMaps = exports.throwWithContext = exports.roundValue = exports.getPortType = exports.getBoundsSize = exports.toNearestGrid = exports.resizeToNearestGrid = exports.printBounds = exports.resizeBounds = exports.SimpleStopwatch = void 0;
|
|
4
|
+
const big_js_1 = require("big.js");
|
|
5
|
+
const ParamDefinition_1 = require("./objects/ParamDefinition");
|
|
4
6
|
class SimpleStopwatch {
|
|
5
7
|
constructor() {
|
|
6
8
|
this.startTime = new Date();
|
|
@@ -73,6 +75,94 @@ function getPortType(component) {
|
|
|
73
75
|
}
|
|
74
76
|
exports.getPortType = getPortType;
|
|
75
77
|
function roundValue(value) {
|
|
76
|
-
return
|
|
78
|
+
return resolveToNumericValue(new big_js_1.Big(value.toBigNumber().toFixed(7)));
|
|
77
79
|
}
|
|
78
80
|
exports.roundValue = roundValue;
|
|
81
|
+
function throwWithContext(context, message) {
|
|
82
|
+
const startLine = context.start?.line;
|
|
83
|
+
const startColumn = context.start?.column;
|
|
84
|
+
const startString = startLine + ":" + startColumn;
|
|
85
|
+
const stopLine = context.stop?.line;
|
|
86
|
+
const stopColumn = context.stop?.column;
|
|
87
|
+
let stopString = "";
|
|
88
|
+
if (startLine === stopLine) {
|
|
89
|
+
stopString = stopColumn?.toString();
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
stopString = stopLine + ":" + stopString;
|
|
93
|
+
}
|
|
94
|
+
throw `Parse exception at [${startString} - ${stopString}] : ${message}`;
|
|
95
|
+
}
|
|
96
|
+
exports.throwWithContext = throwWithContext;
|
|
97
|
+
function combineMaps(map1, map2) {
|
|
98
|
+
const newMap = new Map(map1);
|
|
99
|
+
map2.forEach((value, key) => {
|
|
100
|
+
newMap.set(key, value);
|
|
101
|
+
});
|
|
102
|
+
return newMap;
|
|
103
|
+
}
|
|
104
|
+
exports.combineMaps = combineMaps;
|
|
105
|
+
function getNumberExponential(value) {
|
|
106
|
+
value = value.trim();
|
|
107
|
+
switch (value) {
|
|
108
|
+
case 'G':
|
|
109
|
+
return 9;
|
|
110
|
+
case 'M':
|
|
111
|
+
return 6;
|
|
112
|
+
case 'k':
|
|
113
|
+
case 'K':
|
|
114
|
+
return 3;
|
|
115
|
+
case 'm':
|
|
116
|
+
return -3;
|
|
117
|
+
case 'u':
|
|
118
|
+
return -6;
|
|
119
|
+
case 'n':
|
|
120
|
+
return -9;
|
|
121
|
+
case 'p':
|
|
122
|
+
return -12;
|
|
123
|
+
case 'f':
|
|
124
|
+
return -15;
|
|
125
|
+
default:
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.getNumberExponential = getNumberExponential;
|
|
130
|
+
function getNumberExponentialText(value) {
|
|
131
|
+
switch (value) {
|
|
132
|
+
case -15:
|
|
133
|
+
return 'f';
|
|
134
|
+
case -12:
|
|
135
|
+
return 'p';
|
|
136
|
+
case -9:
|
|
137
|
+
return 'n';
|
|
138
|
+
case -6:
|
|
139
|
+
return 'u';
|
|
140
|
+
case -3:
|
|
141
|
+
return 'm';
|
|
142
|
+
case 3:
|
|
143
|
+
return 'k';
|
|
144
|
+
case 6:
|
|
145
|
+
return 'M';
|
|
146
|
+
case 9:
|
|
147
|
+
return 'G';
|
|
148
|
+
case 0:
|
|
149
|
+
default:
|
|
150
|
+
return '';
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
exports.getNumberExponentialText = getNumberExponentialText;
|
|
154
|
+
function resolveToNumericValue(value) {
|
|
155
|
+
if (value.toNumber() === 0) {
|
|
156
|
+
return new ParamDefinition_1.NumericValue(0);
|
|
157
|
+
}
|
|
158
|
+
const isNeg = value.lt(0);
|
|
159
|
+
const positiveValue = isNeg ? value.neg() : value;
|
|
160
|
+
const prefixPart = Math.floor(Math.log10(positiveValue.toNumber()) / 3);
|
|
161
|
+
let useValue = value;
|
|
162
|
+
if (prefixPart !== 0) {
|
|
163
|
+
const tmpValue1 = positiveValue.div(Math.pow(10, prefixPart * 3));
|
|
164
|
+
useValue = isNeg ? tmpValue1.neg() : tmpValue1;
|
|
165
|
+
}
|
|
166
|
+
return new ParamDefinition_1.NumericValue(useValue, prefixPart * 3);
|
|
167
|
+
}
|
|
168
|
+
exports.resolveToNumericValue = resolveToNumericValue;
|