hledger-lsp 0.1.1 → 0.1.5
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/README.md +11 -8
- package/out/features/codeActions.d.ts +20 -0
- package/out/features/codeActions.d.ts.map +1 -1
- package/out/features/codeActions.js +145 -0
- package/out/features/codeActions.js.map +1 -1
- package/out/features/completion.d.ts +16 -4
- package/out/features/completion.d.ts.map +1 -1
- package/out/features/completion.js +4 -4
- package/out/features/completion.js.map +1 -1
- package/out/features/definition.js +4 -4
- package/out/features/definition.js.map +1 -1
- package/out/features/formatter.d.ts +4 -20
- package/out/features/formatter.d.ts.map +1 -1
- package/out/features/formatter.js +271 -223
- package/out/features/formatter.js.map +1 -1
- package/out/features/hover.js +4 -4
- package/out/features/hover.js.map +1 -1
- package/out/features/inlayHints.d.ts +7 -2
- package/out/features/inlayHints.d.ts.map +1 -1
- package/out/features/inlayHints.js +65 -17
- package/out/features/inlayHints.js.map +1 -1
- package/out/features/semanticTokens.d.ts.map +1 -1
- package/out/features/semanticTokens.js +17 -14
- package/out/features/semanticTokens.js.map +1 -1
- package/out/features/symbols.js +4 -4
- package/out/features/symbols.js.map +1 -1
- package/out/features/validator.d.ts +5 -0
- package/out/features/validator.d.ts.map +1 -1
- package/out/features/validator.js +45 -13
- package/out/features/validator.js.map +1 -1
- package/out/parser/ast.d.ts +48 -7
- package/out/parser/ast.d.ts.map +1 -1
- package/out/parser/ast.js +547 -363
- package/out/parser/ast.js.map +1 -1
- package/out/parser/document.d.ts +7 -0
- package/out/parser/document.d.ts.map +1 -0
- package/out/parser/document.js +70 -0
- package/out/parser/document.js.map +1 -0
- package/out/parser/includes.d.ts.map +1 -1
- package/out/parser/includes.js +21 -33
- package/out/parser/includes.js.map +1 -1
- package/out/parser/index.d.ts.map +1 -1
- package/out/parser/index.js +39 -7
- package/out/parser/index.js.map +1 -1
- package/out/server/settings.d.ts +5 -0
- package/out/server/settings.d.ts.map +1 -1
- package/out/server/settings.js +5 -3
- package/out/server/settings.js.map +1 -1
- package/out/server.js +4 -4
- package/out/server.js.map +1 -1
- package/out/types.d.ts +16 -12
- package/out/types.d.ts.map +1 -1
- package/out/types.js +1 -0
- package/out/types.js.map +1 -1
- package/out/utils/index.js +1 -1
- package/out/utils/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -36,7 +36,7 @@ class FormattingProvider {
|
|
|
36
36
|
// to get inferred costs and other parsing results
|
|
37
37
|
const transaction = parsed.transactions.find(t => t.line === i);
|
|
38
38
|
// Collect and format all postings in this transaction
|
|
39
|
-
const
|
|
39
|
+
const transactionLines = [];
|
|
40
40
|
i++;
|
|
41
41
|
while (i < lines.length) {
|
|
42
42
|
const postingLine = lines[i];
|
|
@@ -45,31 +45,11 @@ class FormattingProvider {
|
|
|
45
45
|
if (!postingTrimmed || (0, index_1.isTransactionHeader)(postingTrimmed) || (0, index_1.isDirective)(postingTrimmed)) {
|
|
46
46
|
break;
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
// Preserve comments between postings as-is
|
|
50
|
-
formattedLines.push(postingTrimmed);
|
|
51
|
-
}
|
|
52
|
-
else if ((0, index_1.isPosting)(postingLine)) { // Check with original line, not trimmed
|
|
53
|
-
// Use the parsed transaction's postings if available (includes inferred costs)
|
|
54
|
-
if (transaction && postingLayouts.length < transaction.postings.length) {
|
|
55
|
-
const posting = transaction.postings[postingLayouts.length];
|
|
56
|
-
const layout = this.parsePostingLayout(posting, parsed, options);
|
|
57
|
-
postingLayouts.push(layout);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
// Fallback to parsing from text if transaction not found
|
|
61
|
-
const posting = (0, ast_1.parsePosting)(postingLine);
|
|
62
|
-
if (posting) {
|
|
63
|
-
const layout = this.parsePostingLayout(posting, parsed, options);
|
|
64
|
-
postingLayouts.push(layout);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
48
|
+
transactionLines.push(postingLine);
|
|
68
49
|
i++;
|
|
69
50
|
}
|
|
70
51
|
// Format all postings in the transaction together for alignment
|
|
71
|
-
|
|
72
|
-
formattedLines.push(...formattedPostings);
|
|
52
|
+
formattedLines.push(...this.formatTransactionLines(transactionLines, transaction, parsed, options));
|
|
73
53
|
// Don't increment i here as we've already moved past the transaction
|
|
74
54
|
continue;
|
|
75
55
|
}
|
|
@@ -97,6 +77,273 @@ class FormattingProvider {
|
|
|
97
77
|
newText: formattedText
|
|
98
78
|
}];
|
|
99
79
|
}
|
|
80
|
+
formatTransactionLines(lines, transaction, parsed, options) {
|
|
81
|
+
let formattedLines = [];
|
|
82
|
+
if (!transaction) {
|
|
83
|
+
// No transaction info, just trim lines
|
|
84
|
+
formattedLines = lines.map(line => line.trimEnd());
|
|
85
|
+
return formattedLines;
|
|
86
|
+
}
|
|
87
|
+
let indentColumnWidth = 0;
|
|
88
|
+
let accountColumnWidth = 0;
|
|
89
|
+
let commodityBeforeColumnWidth = 0;
|
|
90
|
+
let spaceBetweenCommodityBeforeAndAmount = 0;
|
|
91
|
+
let negativeSignColumnWidth = 0;
|
|
92
|
+
let amountIntegerColumnWidth = 0;
|
|
93
|
+
let amountDecimalMarkColumnWidth = 0;
|
|
94
|
+
let amountDecimalColumnWidth = 0;
|
|
95
|
+
let spaceBetweenAmountAndCommodityAfterColumnWidth = 0;
|
|
96
|
+
let commodityAfterColumnWidth = 0;
|
|
97
|
+
let costColumnWidth = 0;
|
|
98
|
+
let costCommodityBeforeColumnWidth = 0;
|
|
99
|
+
let spaceBetweenCostCommodityBeforeAndAmount = 0;
|
|
100
|
+
let costNegativeSignColumnWidth = 0;
|
|
101
|
+
let costAmountIntegerColumnWidth = 0;
|
|
102
|
+
let costAmountDecimalMarkColumnWidth = 0;
|
|
103
|
+
let costAmountDecimalColumnWidth = 0;
|
|
104
|
+
let spaceBetweenCostAmountAndCommodityAfterColumnWidth = 0;
|
|
105
|
+
let costCommodityAfterColumnWidth = 0;
|
|
106
|
+
let assertionColumnWidth = 0;
|
|
107
|
+
let assertionCommodityBeforeColumnWidth = 0;
|
|
108
|
+
let spaceBetweenAssertionCommodityBeforeAndAmount = 0;
|
|
109
|
+
let assertionNegativeSignColumnWidth = 0;
|
|
110
|
+
let assertionAmountIntegerColumnWidth = 0;
|
|
111
|
+
let assertionAmountDecimalMarkColumnWidth = 0;
|
|
112
|
+
let assertionAmountDecimalColumnWidth = 0;
|
|
113
|
+
let spaceBetweenAssertionAmountAndCommodityAfterColumnWidth = 0;
|
|
114
|
+
let assertionCommodityAfterColumnWidth = 0;
|
|
115
|
+
// First pass: determine column widths and cache layouts
|
|
116
|
+
const postingLayouts = [];
|
|
117
|
+
for (let posting of transaction.postings) {
|
|
118
|
+
let postingLayout = {};
|
|
119
|
+
indentColumnWidth = Math.max(indentColumnWidth, options.indentation);
|
|
120
|
+
accountColumnWidth = Math.max(accountColumnWidth, posting.account.length);
|
|
121
|
+
if (posting.amount) {
|
|
122
|
+
const layout = this.layoutAmount(posting.amount, parsed, options);
|
|
123
|
+
postingLayout.amountLayout = layout;
|
|
124
|
+
commodityBeforeColumnWidth = Math.max(commodityBeforeColumnWidth, layout.commodityBefore.length);
|
|
125
|
+
negativeSignColumnWidth = Math.max(negativeSignColumnWidth, layout.isNegative ? 1 : 0);
|
|
126
|
+
spaceBetweenCommodityBeforeAndAmount = Math.max(spaceBetweenCommodityBeforeAndAmount, (layout.spaceBetweenCommodityAndAmount && layout.commodityBefore.length) ? 1 : 0);
|
|
127
|
+
amountIntegerColumnWidth = Math.max(amountIntegerColumnWidth, layout.amountIntegerString.length);
|
|
128
|
+
amountDecimalMarkColumnWidth = Math.max(amountDecimalMarkColumnWidth, layout.amountDecimalString ? 1 : 0);
|
|
129
|
+
amountDecimalColumnWidth = Math.max(amountDecimalColumnWidth, layout.amountDecimalString.length);
|
|
130
|
+
spaceBetweenAmountAndCommodityAfterColumnWidth = Math.max(spaceBetweenAmountAndCommodityAfterColumnWidth, (layout.spaceBetweenCommodityAndAmount && layout.commodityAfter.length) ? 1 : 0);
|
|
131
|
+
commodityAfterColumnWidth = Math.max(commodityAfterColumnWidth, layout.commodityAfter.length);
|
|
132
|
+
}
|
|
133
|
+
if (posting.cost) {
|
|
134
|
+
const layout = this.layoutAmount(posting.cost.amount, parsed, options);
|
|
135
|
+
postingLayout.costLayout = layout;
|
|
136
|
+
costColumnWidth = Math.max(costColumnWidth, posting.cost.type === 'unit' ? 3 : 4);
|
|
137
|
+
costCommodityBeforeColumnWidth = Math.max(costCommodityBeforeColumnWidth, layout.commodityBefore.length);
|
|
138
|
+
costNegativeSignColumnWidth = Math.max(costNegativeSignColumnWidth, layout.isNegative ? 1 : 0);
|
|
139
|
+
spaceBetweenCostCommodityBeforeAndAmount = Math.max(spaceBetweenCostCommodityBeforeAndAmount, (layout.spaceBetweenCommodityAndAmount && layout.commodityBefore.length) ? 1 : 0);
|
|
140
|
+
costAmountIntegerColumnWidth = Math.max(costAmountIntegerColumnWidth, layout.amountIntegerString.length);
|
|
141
|
+
costAmountDecimalMarkColumnWidth = Math.max(costAmountDecimalMarkColumnWidth, layout.amountDecimalString ? 1 : 0);
|
|
142
|
+
costAmountDecimalColumnWidth = Math.max(costAmountDecimalColumnWidth, layout.amountDecimalString.length);
|
|
143
|
+
spaceBetweenCostAmountAndCommodityAfterColumnWidth = Math.max(spaceBetweenCostAmountAndCommodityAfterColumnWidth, (layout.spaceBetweenCommodityAndAmount && layout.commodityAfter.length) ? 1 : 0);
|
|
144
|
+
costCommodityAfterColumnWidth = Math.max(costCommodityAfterColumnWidth, layout.commodityAfter.length);
|
|
145
|
+
}
|
|
146
|
+
if (posting.assertion) {
|
|
147
|
+
const layout = this.layoutAmount(posting.assertion, parsed, options);
|
|
148
|
+
postingLayout.assertionLayout = layout;
|
|
149
|
+
assertionColumnWidth = Math.max(assertionColumnWidth, 3); // for the assertion operator with spaces
|
|
150
|
+
assertionCommodityBeforeColumnWidth = Math.max(assertionCommodityBeforeColumnWidth, layout.commodityBefore.length);
|
|
151
|
+
assertionNegativeSignColumnWidth = Math.max(assertionNegativeSignColumnWidth, layout.isNegative ? 1 : 0);
|
|
152
|
+
spaceBetweenAssertionCommodityBeforeAndAmount = Math.max(spaceBetweenAssertionCommodityBeforeAndAmount, layout.isNegative ? 1 : 0);
|
|
153
|
+
assertionAmountIntegerColumnWidth = Math.max(assertionAmountIntegerColumnWidth, layout.amountIntegerString.length);
|
|
154
|
+
assertionAmountDecimalMarkColumnWidth = Math.max(assertionAmountDecimalMarkColumnWidth, layout.amountDecimalString ? 1 : 0);
|
|
155
|
+
assertionAmountDecimalColumnWidth = Math.max(assertionAmountDecimalColumnWidth, layout.amountDecimalString.length);
|
|
156
|
+
spaceBetweenAssertionAmountAndCommodityAfterColumnWidth = Math.max(spaceBetweenAssertionAmountAndCommodityAfterColumnWidth, (layout.spaceBetweenCommodityAndAmount && layout.commodityAfter.length) ? 1 : 0);
|
|
157
|
+
assertionCommodityAfterColumnWidth = Math.max(assertionCommodityAfterColumnWidth, layout.commodityAfter.length);
|
|
158
|
+
}
|
|
159
|
+
postingLayouts.push(postingLayout);
|
|
160
|
+
}
|
|
161
|
+
// Second pass: format each posting line
|
|
162
|
+
const formattedPostingLines = [];
|
|
163
|
+
for (let idx = 0; idx < transaction.postings.length; idx++) {
|
|
164
|
+
const posting = transaction.postings[idx];
|
|
165
|
+
const postingLayout = postingLayouts[idx];
|
|
166
|
+
let line = ' '.repeat(options.indentation);
|
|
167
|
+
line += posting.account.padEnd(accountColumnWidth, ' ');
|
|
168
|
+
line += ' '.repeat(options.minSpacing);
|
|
169
|
+
if (posting.amount) {
|
|
170
|
+
const lengthAtPaddingLocation = line.length;
|
|
171
|
+
const layout = postingLayout.amountLayout;
|
|
172
|
+
line += layout.commodityBefore.padStart(commodityBeforeColumnWidth, ' ');
|
|
173
|
+
line += ' '.repeat(spaceBetweenCommodityBeforeAndAmount);
|
|
174
|
+
line += layout.isNegative ? '-'.padStart(negativeSignColumnWidth, ' ') : ' '.repeat(negativeSignColumnWidth);
|
|
175
|
+
line += layout.amountIntegerString.padStart(amountIntegerColumnWidth, ' ');
|
|
176
|
+
const lengthAtDecimalLocation = line.length;
|
|
177
|
+
const targetDecimalColumn = options.decimalAlignColumn;
|
|
178
|
+
const linePrePadding = line.substring(0, lengthAtPaddingLocation);
|
|
179
|
+
const linePostPadding = line.substring(lengthAtPaddingLocation);
|
|
180
|
+
const currentDecimalColumn = lengthAtDecimalLocation;
|
|
181
|
+
const neededPadding = targetDecimalColumn - currentDecimalColumn;
|
|
182
|
+
line = linePrePadding + ' '.repeat(Math.max(0, neededPadding)) + linePostPadding;
|
|
183
|
+
if (layout.demicalMark) {
|
|
184
|
+
line += layout.demicalMark.padEnd(amountDecimalMarkColumnWidth, ' ');
|
|
185
|
+
line += layout.amountDecimalString.padEnd(amountDecimalColumnWidth, ' ');
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
line += ' '.repeat(amountDecimalMarkColumnWidth + amountDecimalColumnWidth);
|
|
189
|
+
}
|
|
190
|
+
line += ' '.repeat(spaceBetweenAmountAndCommodityAfterColumnWidth);
|
|
191
|
+
line += layout.commodityAfter.padEnd(commodityAfterColumnWidth, ' ');
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
const lengthAtPaddingLocation = line.length;
|
|
195
|
+
const neededPadding = options.decimalAlignColumn - lengthAtPaddingLocation;
|
|
196
|
+
line += ' '.repeat(Math.max(0, neededPadding));
|
|
197
|
+
line += ' '.repeat(amountDecimalMarkColumnWidth +
|
|
198
|
+
amountDecimalColumnWidth +
|
|
199
|
+
spaceBetweenAmountAndCommodityAfterColumnWidth +
|
|
200
|
+
commodityAfterColumnWidth); // space for missing amount
|
|
201
|
+
}
|
|
202
|
+
if (posting.cost) {
|
|
203
|
+
const layout = postingLayout.costLayout;
|
|
204
|
+
line += posting.cost.type === 'unit' ? ' @'.padEnd(costColumnWidth, ' ') : ' @@'.padEnd(costColumnWidth, ' ');
|
|
205
|
+
line += layout.commodityBefore.padStart(costCommodityBeforeColumnWidth, ' ');
|
|
206
|
+
line += ' '.repeat(spaceBetweenCostCommodityBeforeAndAmount);
|
|
207
|
+
line += layout.isNegative ? '-'.padStart(costNegativeSignColumnWidth, ' ') : ' '.repeat(costNegativeSignColumnWidth);
|
|
208
|
+
line += layout.amountIntegerString.padStart(costAmountIntegerColumnWidth, ' ');
|
|
209
|
+
if (layout.demicalMark) {
|
|
210
|
+
line += layout.demicalMark.padEnd(costAmountDecimalMarkColumnWidth, ' ');
|
|
211
|
+
line += layout.amountDecimalString.padEnd(costAmountDecimalColumnWidth, ' ');
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
line += ' '.repeat(costAmountDecimalColumnWidth + costAmountDecimalMarkColumnWidth);
|
|
215
|
+
}
|
|
216
|
+
line += ' '.repeat(spaceBetweenCostAmountAndCommodityAfterColumnWidth);
|
|
217
|
+
line += layout.commodityAfter.padEnd(costCommodityAfterColumnWidth, ' ');
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
line += ' '.repeat(costColumnWidth +
|
|
221
|
+
costCommodityBeforeColumnWidth +
|
|
222
|
+
spaceBetweenCostCommodityBeforeAndAmount +
|
|
223
|
+
costNegativeSignColumnWidth +
|
|
224
|
+
costAmountIntegerColumnWidth +
|
|
225
|
+
costAmountDecimalMarkColumnWidth +
|
|
226
|
+
costAmountDecimalColumnWidth +
|
|
227
|
+
spaceBetweenCostAmountAndCommodityAfterColumnWidth +
|
|
228
|
+
costCommodityAfterColumnWidth); // space for missing cost
|
|
229
|
+
}
|
|
230
|
+
if (posting.assertion) {
|
|
231
|
+
const layout = postingLayout.assertionLayout;
|
|
232
|
+
line += ' ='.padEnd(assertionColumnWidth, ' ');
|
|
233
|
+
line += layout.commodityBefore.padStart(assertionCommodityBeforeColumnWidth, ' ');
|
|
234
|
+
line += ' '.repeat(spaceBetweenAssertionCommodityBeforeAndAmount);
|
|
235
|
+
line += layout.isNegative ? '-'.padStart(assertionNegativeSignColumnWidth, ' ') : ' '.repeat(assertionNegativeSignColumnWidth);
|
|
236
|
+
line += layout.amountIntegerString.padStart(assertionAmountIntegerColumnWidth, ' ');
|
|
237
|
+
if (layout.demicalMark) {
|
|
238
|
+
line += layout.demicalMark.padEnd(assertionAmountDecimalMarkColumnWidth, ' ');
|
|
239
|
+
line += layout.amountDecimalString.padEnd(assertionAmountDecimalColumnWidth, ' ');
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
line += ' '.repeat(assertionAmountDecimalColumnWidth + assertionAmountDecimalMarkColumnWidth);
|
|
243
|
+
}
|
|
244
|
+
line += ' '.repeat(spaceBetweenAssertionAmountAndCommodityAfterColumnWidth);
|
|
245
|
+
line += layout.commodityAfter.padEnd(assertionCommodityAfterColumnWidth, ' ');
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
line += ' '.repeat(2 + // space for spaces around assertion indicator
|
|
249
|
+
assertionColumnWidth +
|
|
250
|
+
assertionCommodityBeforeColumnWidth +
|
|
251
|
+
spaceBetweenAssertionCommodityBeforeAndAmount +
|
|
252
|
+
assertionNegativeSignColumnWidth +
|
|
253
|
+
assertionAmountIntegerColumnWidth +
|
|
254
|
+
assertionAmountDecimalColumnWidth +
|
|
255
|
+
assertionAmountDecimalMarkColumnWidth +
|
|
256
|
+
spaceBetweenAssertionAmountAndCommodityAfterColumnWidth +
|
|
257
|
+
assertionCommodityAfterColumnWidth); // space for missing assertion
|
|
258
|
+
}
|
|
259
|
+
if (posting.comment) {
|
|
260
|
+
line = line.trimEnd();
|
|
261
|
+
line += ';' + posting.comment.trim();
|
|
262
|
+
}
|
|
263
|
+
formattedPostingLines.push(line);
|
|
264
|
+
}
|
|
265
|
+
// Third pass: Reintegrate with comments from original lines
|
|
266
|
+
let postingIndex = 0;
|
|
267
|
+
for (let line of lines) {
|
|
268
|
+
const trimmed = line.trim();
|
|
269
|
+
if ((0, index_1.isComment)(trimmed) || trimmed === '') {
|
|
270
|
+
formattedLines.push(line.trimEnd());
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
formattedLines.push(formattedPostingLines[postingIndex].trimEnd());
|
|
274
|
+
postingIndex++;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return formattedLines;
|
|
278
|
+
}
|
|
279
|
+
layoutAmount(amount, parsed, options) {
|
|
280
|
+
const commodity = this.findCommodity(amount.commodity, parsed);
|
|
281
|
+
let format = {};
|
|
282
|
+
let declaredPrecision = undefined;
|
|
283
|
+
if (commodity && commodity.format) {
|
|
284
|
+
format = commodity.format;
|
|
285
|
+
declaredPrecision = commodity.format.precision ?? undefined;
|
|
286
|
+
}
|
|
287
|
+
else if (amount.format) {
|
|
288
|
+
format = amount.format;
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
format = {};
|
|
292
|
+
}
|
|
293
|
+
// Determine the actual precision to use based on the rules:
|
|
294
|
+
// 1. Never reduce precision if posting has higher precision than declared
|
|
295
|
+
// 2. Add zeros to match declared precision when actual < declared
|
|
296
|
+
// 3. Don't change formatting when commodity is not declared
|
|
297
|
+
const actualPrecision = amount.format?.precision ?? undefined;
|
|
298
|
+
let targetPrecision = undefined;
|
|
299
|
+
if (declaredPrecision !== undefined) {
|
|
300
|
+
// Commodity is declared - use max of actual and declared precision
|
|
301
|
+
if (actualPrecision !== undefined) {
|
|
302
|
+
targetPrecision = Math.max(actualPrecision, declaredPrecision);
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
targetPrecision = declaredPrecision;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
// Commodity is not declared - preserve original precision
|
|
310
|
+
targetPrecision = actualPrecision;
|
|
311
|
+
}
|
|
312
|
+
return {
|
|
313
|
+
commodityBefore: format.symbolOnLeft ? format.symbol || '' : '',
|
|
314
|
+
isNegative: amount.quantity < 0,
|
|
315
|
+
amountIntegerString: this.formatIntegerAmount(amount, format),
|
|
316
|
+
amountDecimalString: this.formatDecimalAmount(amount, format, targetPrecision),
|
|
317
|
+
demicalMark: targetPrecision && targetPrecision > 0 ? (format.decimalMark || '.') : '',
|
|
318
|
+
spaceBetweenCommodityAndAmount: format.spaceBetween || false,
|
|
319
|
+
commodityAfter: !format.symbolOnLeft ? format.symbol || '' : ''
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
formatIntegerAmount(amount, format) {
|
|
323
|
+
const integerPart = Math.floor(Math.abs(amount.quantity)).toString();
|
|
324
|
+
// Format integer part with grouping if specified
|
|
325
|
+
let integerString = '';
|
|
326
|
+
if (format.thousandsSeparator) {
|
|
327
|
+
const regex = /\B(?=(\d{3})+(?!\d))/g;
|
|
328
|
+
integerString = integerPart.replace(regex, format.thousandsSeparator);
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
integerString = integerPart;
|
|
332
|
+
}
|
|
333
|
+
return integerString;
|
|
334
|
+
}
|
|
335
|
+
formatDecimalAmount(amount, format, targetPrecision) {
|
|
336
|
+
const decimalPart = Math.abs(amount.quantity) % 1;
|
|
337
|
+
// Format decimal part based on target precision
|
|
338
|
+
let decimalString = '';
|
|
339
|
+
if (targetPrecision !== undefined && targetPrecision > 0) {
|
|
340
|
+
decimalString = decimalPart.toFixed(targetPrecision).substring(2); // Skip "0."
|
|
341
|
+
}
|
|
342
|
+
else if (decimalPart > 0) {
|
|
343
|
+
decimalString = decimalPart.toString().substring(2); // Skip "0."
|
|
344
|
+
}
|
|
345
|
+
return decimalString;
|
|
346
|
+
}
|
|
100
347
|
/**
|
|
101
348
|
* Format a range of lines
|
|
102
349
|
*/
|
|
@@ -162,210 +409,11 @@ class FormattingProvider {
|
|
|
162
409
|
}
|
|
163
410
|
return result;
|
|
164
411
|
}
|
|
165
|
-
/**
|
|
166
|
-
* Parse a posting into its layout components
|
|
167
|
-
*/
|
|
168
|
-
parsePostingLayout(posting, parsed, options) {
|
|
169
|
-
const indent = ' '.repeat(options.indentation);
|
|
170
|
-
const account = posting.account;
|
|
171
|
-
const parsedAmount = posting.amount
|
|
172
|
-
? this.parseAmount(posting.amount, parsed)
|
|
173
|
-
: null;
|
|
174
|
-
const parsedCost = posting.cost
|
|
175
|
-
? this.parseCost(posting.cost, parsed)
|
|
176
|
-
: null;
|
|
177
|
-
const parsedAssertion = posting.assertion
|
|
178
|
-
? this.parseAmount(posting.assertion, parsed)
|
|
179
|
-
: null;
|
|
180
|
-
const comment = posting.comment || '';
|
|
181
|
-
return {
|
|
182
|
-
posting,
|
|
183
|
-
indent,
|
|
184
|
-
account,
|
|
185
|
-
parsedAmount,
|
|
186
|
-
parsedCost,
|
|
187
|
-
parsedAssertion,
|
|
188
|
-
comment
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Parse an amount into its components for column alignment
|
|
193
|
-
*/
|
|
194
|
-
parseAmount(amount, parsed) {
|
|
195
|
-
const commodity = this.findCommodity(amount.commodity, parsed);
|
|
196
|
-
const absQuantity = Math.abs(amount.quantity);
|
|
197
|
-
const isNegative = amount.quantity < 0;
|
|
198
|
-
// Determine precision
|
|
199
|
-
const actualPrecision = this.getDecimalPlaces(amount.quantity);
|
|
200
|
-
const usePrecision = commodity?.format?.precision !== null && commodity?.format?.precision !== undefined
|
|
201
|
-
? Math.max(actualPrecision, commodity.format.precision)
|
|
202
|
-
: actualPrecision;
|
|
203
|
-
// Format the number
|
|
204
|
-
const formattedNumber = absQuantity.toFixed(usePrecision);
|
|
205
|
-
const decimalPos = formattedNumber.indexOf('.');
|
|
206
|
-
const decimalPosition = decimalPos >= 0 ? decimalPos : formattedNumber.length;
|
|
207
|
-
// Build amount string with negative sign
|
|
208
|
-
const amountNumber = (isNegative ? '-' : '') + formattedNumber;
|
|
209
|
-
// Determine commodity placement
|
|
210
|
-
const commoditySymbol = commodity?.format?.symbol || amount.commodity || '';
|
|
211
|
-
let commodityBefore = '';
|
|
212
|
-
let commodityAfter = '';
|
|
213
|
-
if (commodity?.format) {
|
|
214
|
-
if (commodity.format.symbolOnLeft) {
|
|
215
|
-
commodityBefore = commoditySymbol;
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
commodityAfter = commoditySymbol;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
else if (commoditySymbol) {
|
|
222
|
-
// Default heuristic: currencies go on left
|
|
223
|
-
const leftSymbols = ['$', '€', '£', '¥'];
|
|
224
|
-
if (leftSymbols.includes(commoditySymbol)) {
|
|
225
|
-
commodityBefore = commoditySymbol;
|
|
226
|
-
}
|
|
227
|
-
else {
|
|
228
|
-
commodityAfter = commoditySymbol;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
return {
|
|
232
|
-
commodityBefore,
|
|
233
|
-
amountNumber,
|
|
234
|
-
commodityAfter,
|
|
235
|
-
decimalPosition: isNegative ? decimalPosition + 1 : decimalPosition // Adjust for minus sign
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Parse a cost into its components for formatting
|
|
240
|
-
*/
|
|
241
|
-
parseCost(cost, parsed) {
|
|
242
|
-
const parsedAmount = this.parseAmount(cost.amount, parsed);
|
|
243
|
-
return {
|
|
244
|
-
type: cost.type,
|
|
245
|
-
commodityBefore: parsedAmount.commodityBefore,
|
|
246
|
-
amountNumber: parsedAmount.amountNumber,
|
|
247
|
-
commodityAfter: parsedAmount.commodityAfter,
|
|
248
|
-
decimalPosition: parsedAmount.decimalPosition
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Format all postings in a transaction with column alignment
|
|
253
|
-
*/
|
|
254
|
-
formatTransactionPostings(layouts, options) {
|
|
255
|
-
if (layouts.length === 0) {
|
|
256
|
-
return [];
|
|
257
|
-
}
|
|
258
|
-
// Calculate column widths for this transaction
|
|
259
|
-
let maxAccountLen = 0;
|
|
260
|
-
let maxCommodityBeforeLen = 0;
|
|
261
|
-
let maxCommodityAfterLen = 0;
|
|
262
|
-
let maxAssertionCommodityBeforeLen = 0;
|
|
263
|
-
let maxAssertionCommodityAfterLen = 0;
|
|
264
|
-
for (const layout of layouts) {
|
|
265
|
-
maxAccountLen = Math.max(maxAccountLen, layout.account.length);
|
|
266
|
-
if (layout.parsedAmount) {
|
|
267
|
-
maxCommodityBeforeLen = Math.max(maxCommodityBeforeLen, layout.parsedAmount.commodityBefore.length);
|
|
268
|
-
maxCommodityAfterLen = Math.max(maxCommodityAfterLen, layout.parsedAmount.commodityAfter.length);
|
|
269
|
-
}
|
|
270
|
-
if (layout.parsedAssertion) {
|
|
271
|
-
maxAssertionCommodityBeforeLen = Math.max(maxAssertionCommodityBeforeLen, layout.parsedAssertion.commodityBefore.length);
|
|
272
|
-
maxAssertionCommodityAfterLen = Math.max(maxAssertionCommodityAfterLen, layout.parsedAssertion.commodityAfter.length);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
// Apply maximum constraints
|
|
276
|
-
maxAccountLen = Math.min(maxAccountLen, options.maxAccountWidth);
|
|
277
|
-
maxCommodityBeforeLen = Math.min(maxCommodityBeforeLen, options.maxCommodityWidth);
|
|
278
|
-
maxCommodityAfterLen = Math.min(maxCommodityAfterLen, options.maxCommodityWidth);
|
|
279
|
-
maxAssertionCommodityBeforeLen = Math.min(maxAssertionCommodityBeforeLen, options.maxCommodityWidth);
|
|
280
|
-
maxAssertionCommodityAfterLen = Math.min(maxAssertionCommodityAfterLen, options.maxCommodityWidth);
|
|
281
|
-
// Format each posting
|
|
282
|
-
return layouts.map(layout => {
|
|
283
|
-
let result = layout.indent + layout.account;
|
|
284
|
-
// If no amount, just return account with comment if any
|
|
285
|
-
if (!layout.parsedAmount) {
|
|
286
|
-
if (layout.comment) {
|
|
287
|
-
result += ' ;' + layout.comment;
|
|
288
|
-
}
|
|
289
|
-
return result;
|
|
290
|
-
}
|
|
291
|
-
// Calculate spacing to reach decimal align column
|
|
292
|
-
const accountEnd = layout.indent.length + layout.account.length;
|
|
293
|
-
// Target position for the decimal point
|
|
294
|
-
let decimalTargetCol = options.decimalAlignColumn;
|
|
295
|
-
// Calculate where amount needs to start to align decimal at target
|
|
296
|
-
const amountStartCol = decimalTargetCol - layout.parsedAmount.decimalPosition;
|
|
297
|
-
// Calculate where commodity-before needs to start (right-aligned before amount)
|
|
298
|
-
const commodityBeforeStartCol = amountStartCol - (layout.parsedAmount.commodityBefore.length > 0 ? layout.parsedAmount.commodityBefore.length : 0);
|
|
299
|
-
// Calculate spacing needed after account
|
|
300
|
-
let spacingAfterAccount = commodityBeforeStartCol - accountEnd;
|
|
301
|
-
// Ensure minimum spacing
|
|
302
|
-
if (spacingAfterAccount < options.minSpacing) {
|
|
303
|
-
spacingAfterAccount = options.minSpacing;
|
|
304
|
-
}
|
|
305
|
-
// Add spacing
|
|
306
|
-
result += ' '.repeat(spacingAfterAccount);
|
|
307
|
-
// Add commodity-before (right-aligned in its column)
|
|
308
|
-
if (layout.parsedAmount.commodityBefore) {
|
|
309
|
-
result += layout.parsedAmount.commodityBefore;
|
|
310
|
-
}
|
|
311
|
-
// Add amount
|
|
312
|
-
result += layout.parsedAmount.amountNumber;
|
|
313
|
-
// Add commodity-after (left-aligned in its column)
|
|
314
|
-
if (layout.parsedAmount.commodityAfter) {
|
|
315
|
-
result += ' ' + layout.parsedAmount.commodityAfter;
|
|
316
|
-
}
|
|
317
|
-
// Add cost notation if present
|
|
318
|
-
if (layout.parsedCost) {
|
|
319
|
-
// Add @ or @@ operator
|
|
320
|
-
result += layout.parsedCost.type === 'unit' ? ' @ ' : ' @@ ';
|
|
321
|
-
// Add cost commodity-before
|
|
322
|
-
if (layout.parsedCost.commodityBefore) {
|
|
323
|
-
result += layout.parsedCost.commodityBefore;
|
|
324
|
-
}
|
|
325
|
-
// Add cost amount
|
|
326
|
-
result += layout.parsedCost.amountNumber;
|
|
327
|
-
// Add cost commodity-after
|
|
328
|
-
if (layout.parsedCost.commodityAfter) {
|
|
329
|
-
result += ' ' + layout.parsedCost.commodityAfter;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
// Add balance assertion if present
|
|
333
|
-
if (layout.parsedAssertion) {
|
|
334
|
-
result += ' = ';
|
|
335
|
-
// Add assertion commodity-before
|
|
336
|
-
if (layout.parsedAssertion.commodityBefore) {
|
|
337
|
-
result += layout.parsedAssertion.commodityBefore;
|
|
338
|
-
}
|
|
339
|
-
// Add assertion amount
|
|
340
|
-
result += layout.parsedAssertion.amountNumber;
|
|
341
|
-
// Add assertion commodity-after
|
|
342
|
-
if (layout.parsedAssertion.commodityAfter) {
|
|
343
|
-
result += ' ' + layout.parsedAssertion.commodityAfter;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
// Add comment if present
|
|
347
|
-
if (layout.comment) {
|
|
348
|
-
result += ' ;' + layout.comment;
|
|
349
|
-
}
|
|
350
|
-
return result;
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* Get the number of decimal places in a number
|
|
355
|
-
*/
|
|
356
|
-
getDecimalPlaces(value) {
|
|
357
|
-
const str = value.toString();
|
|
358
|
-
const decimalIndex = str.indexOf('.');
|
|
359
|
-
if (decimalIndex === -1) {
|
|
360
|
-
return 0;
|
|
361
|
-
}
|
|
362
|
-
return str.length - decimalIndex - 1;
|
|
363
|
-
}
|
|
364
412
|
/**
|
|
365
413
|
* Find the commodity format from parsed document
|
|
366
414
|
*/
|
|
367
415
|
findCommodity(commodityName, parsed) {
|
|
368
|
-
return parsed.commodities.
|
|
416
|
+
return parsed.commodities.get(commodityName);
|
|
369
417
|
}
|
|
370
418
|
}
|
|
371
419
|
exports.FormattingProvider = FormattingProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/features/formatter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/features/formatter.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAKH,uCAAqE;AACrE,0CAAwF;AAqCxF,MAAM,eAAe,GAAgC;IACnD,WAAW,EAAE,CAAC;IACd,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,CAAC;IACpB,cAAc,EAAE,EAAE;IAClB,UAAU,EAAE,CAAC;IACb,kBAAkB,EAAE,EAAE;IACtB,2BAA2B,EAAE,EAAE;CAChC,CAAC;AAGF,MAAa,kBAAkB;IAC7B;;OAEG;IACH,cAAc,CACZ,QAAsB,EACtB,MAAsB,EACtB,WAAiC,EACjC,cAA0C,EAAE;QAE5C,MAAM,OAAO,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/B,6CAA6C;QAC7C,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAE5B,IAAI,IAAA,2BAAmB,EAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,gCAAgC;gBAChC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAE3D,4DAA4D;gBAC5D,kDAAkD;gBAClD,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;gBAEhE,sDAAsD;gBACtD,MAAM,gBAAgB,GAAa,EAAE,CAAC;gBACtC,CAAC,EAAE,CAAC;gBAEJ,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBACxB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;oBAE1C,qDAAqD;oBACrD,IAAI,CAAC,cAAc,IAAI,IAAA,2BAAmB,EAAC,cAAc,CAAC,IAAI,IAAA,mBAAW,EAAC,cAAc,CAAC,EAAE,CAAC;wBAC1F,MAAM;oBACR,CAAC;oBAED,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACnC,CAAC,EAAE,CAAC;gBACN,CAAC;gBAED,gEAAgE;gBAChE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBAEpG,qEAAqE;gBACrE,SAAS;YACX,CAAC;iBAAM,IAAI,IAAA,mBAAW,EAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBAC1B,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,IAAA,iBAAS,EAAC,OAAO,CAAC,EAAE,CAAC;gBAC9B,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,oCAAoC;gBACpC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACtC,CAAC;YAED,CAAC,EAAE,CAAC;QACN,CAAC;QAED,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhD,OAAO,CAAC;gBACN,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;oBAChC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE;iBAC1C;gBACD,OAAO,EAAE,aAAa;aACvB,CAAC,CAAC;IACL,CAAC;IAEO,sBAAsB,CAC5B,KAAe,EACf,WAAoC,EAAE,MAAsB,EAC5D,OAAoC;QAEpC,IAAI,cAAc,GAAa,EAAE,CAAC;QAElC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,uCAAuC;YACvC,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,IAAI,0BAA0B,GAAG,CAAC,CAAC;QACnC,IAAI,oCAAoC,GAAG,CAAC,CAAC;QAC7C,IAAI,uBAAuB,GAAG,CAAC,CAAC;QAChC,IAAI,wBAAwB,GAAG,CAAC,CAAC;QACjC,IAAI,4BAA4B,GAAG,CAAC,CAAC;QACrC,IAAI,wBAAwB,GAAG,CAAC,CAAC;QACjC,IAAI,8CAA8C,GAAG,CAAC,CAAC;QACvD,IAAI,yBAAyB,GAAG,CAAC,CAAC;QAClC,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,8BAA8B,GAAG,CAAC,CAAC;QACvC,IAAI,wCAAwC,GAAG,CAAC,CAAC;QACjD,IAAI,2BAA2B,GAAG,CAAC,CAAC;QACpC,IAAI,4BAA4B,GAAG,CAAC,CAAC;QACrC,IAAI,gCAAgC,GAAG,CAAC,CAAC;QACzC,IAAI,4BAA4B,GAAG,CAAC,CAAC;QACrC,IAAI,kDAAkD,GAAG,CAAC,CAAC;QAC3D,IAAI,6BAA6B,GAAG,CAAC,CAAC;QACtC,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAC7B,IAAI,mCAAmC,GAAG,CAAC,CAAC;QAC5C,IAAI,6CAA6C,GAAG,CAAC,CAAC;QACtD,IAAI,gCAAgC,GAAG,CAAC,CAAC;QACzC,IAAI,iCAAiC,GAAG,CAAC,CAAC;QAC1C,IAAI,qCAAqC,GAAG,CAAC,CAAC;QAC9C,IAAI,iCAAiC,GAAG,CAAC,CAAC;QAC1C,IAAI,uDAAuD,GAAG,CAAC,CAAC;QAChE,IAAI,kCAAkC,GAAG,CAAC,CAAC;QAE3C,wDAAwD;QACxD,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,KAAK,IAAI,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,aAAa,GAAkB,EAAE,CAAC;YACtC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YACrE,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE1E,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAClE,aAAa,CAAC,YAAY,GAAG,MAAM,CAAC;gBACpC,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACjG,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvF,oCAAoC,GAAG,IAAI,CAAC,GAAG,CAAC,oCAAoC,EAAE,CAAC,MAAM,CAAC,8BAA8B,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxK,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACjG,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1G,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACjG,8CAA8C,GAAG,IAAI,CAAC,GAAG,CAAC,8CAA8C,EAAE,CAAC,MAAM,CAAC,8BAA8B,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3L,yBAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAChG,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACvE,aAAa,CAAC,UAAU,GAAG,MAAM,CAAC;gBAClC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClF,8BAA8B,GAAG,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACzG,2BAA2B,GAAG,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/F,wCAAwC,GAAG,IAAI,CAAC,GAAG,CAAC,wCAAwC,EAAE,CAAC,MAAM,CAAC,8BAA8B,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChL,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACzG,gCAAgC,GAAG,IAAI,CAAC,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClH,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACzG,kDAAkD,GAAG,IAAI,CAAC,GAAG,CAAC,kDAAkD,EAAE,CAAC,MAAM,CAAC,8BAA8B,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnM,6BAA6B,GAAG,IAAI,CAAC,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACxG,CAAC;YAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACrE,aAAa,CAAC,eAAe,GAAG,MAAM,CAAC;gBACvC,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,yCAAyC;gBACnG,mCAAmC,GAAG,IAAI,CAAC,GAAG,CAAC,mCAAmC,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACnH,gCAAgC,GAAG,IAAI,CAAC,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzG,6CAA6C,GAAG,IAAI,CAAC,GAAG,CAAC,6CAA6C,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnI,iCAAiC,GAAG,IAAI,CAAC,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACnH,qCAAqC,GAAG,IAAI,CAAC,GAAG,CAAC,qCAAqC,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5H,iCAAiC,GAAG,IAAI,CAAC,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACnH,uDAAuD,GAAG,IAAI,CAAC,GAAG,CAAC,uDAAuD,EAAE,CAAC,MAAM,CAAC,8BAA8B,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7M,kCAAkC,GAAG,IAAI,CAAC,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAClH,CAAC;YACD,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC;QAED,wCAAwC;QACxC,MAAM,qBAAqB,GAAa,EAAE,CAAC;QAC3C,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YAC3D,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC3C,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;YACxD,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAGvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,YAAa,CAAC;gBAC3C,IAAI,IAAI,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;gBACzE,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;gBACzD,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;gBAC7G,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;gBAC3E,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC5C,MAAM,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;gBACvD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;gBAClE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;gBAChE,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;gBACrD,MAAM,aAAa,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;gBACjE,IAAI,GAAG,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,eAAe,CAAC;gBACjF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvB,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;oBACrE,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;gBAC3E,CAAC;qBAAM,CAAC;oBACN,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,4BAA4B,GAAG,wBAAwB,CAAC,CAAC;gBAC9E,CAAC;gBACD,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC;gBACnE,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,kBAAkB,GAAG,uBAAuB,CAAC;gBAC3E,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;gBAC/C,IAAI,IAAI,GAAG,CAAC,MAAM,CAChB,4BAA4B;oBAC5B,wBAAwB;oBACxB,8CAA8C;oBAC9C,yBAAyB,CAC1B,CAAC,CAAC,2BAA2B;YAChC,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,aAAa,CAAC,UAAW,CAAC;gBACzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;gBAC9G,IAAI,IAAI,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;gBAC7E,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;gBAC7D,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;gBACrH,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;gBAC/E,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvB,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;oBACzE,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;gBAC/E,CAAC;qBAAM,CAAC;oBACN,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,4BAA4B,GAAG,gCAAgC,CAAC,CAAC;gBACtF,CAAC;gBACD,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC;gBACvE,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAC3E,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,eAAe;oBAChC,8BAA8B;oBAC9B,wCAAwC;oBACxC,2BAA2B;oBAC3B,4BAA4B;oBAC5B,gCAAgC;oBAChC,4BAA4B;oBAC5B,kDAAkD;oBAClD,6BAA6B,CAC9B,CAAC,CAAC,yBAAyB;YAC9B,CAAC;YAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,aAAa,CAAC,eAAgB,CAAC;gBAC9C,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;gBAC/C,IAAI,IAAI,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;gBAClF,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC;gBAClE,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;gBAC/H,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;gBACpF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvB,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;oBAC9E,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;gBACpF,CAAC;qBAAM,CAAC;oBACN,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,iCAAiC,GAAG,qCAAqC,CAAC,CAAC;gBAChG,CAAC;gBACD,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC;gBAC5E,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;YAChF,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,8CAA8C;oBACnE,oBAAoB;oBACpB,mCAAmC;oBACnC,6CAA6C;oBAC7C,gCAAgC;oBAChC,iCAAiC;oBACjC,iCAAiC;oBACjC,qCAAqC;oBACrC,uDAAuD;oBACvD,kCAAkC,CACnC,CAAC,CAAC,8BAA8B;YACnC,CAAC;YAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtB,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC;YAED,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,4DAA4D;QAC5D,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,IAAA,iBAAS,EAAC,OAAO,CAAC,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBACzC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnE,YAAY,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CAAC;IAExB,CAAC;IAGO,YAAY,CAAC,MAAc,EAAE,MAAsB,EAAE,OAAoC;QAC/F,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/D,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,iBAAiB,GAAuB,SAAS,CAAC;QAEtD,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAC1B,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC;QAC9D,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,EAAE,CAAC;QACd,CAAC;QAED,4DAA4D;QAC5D,0EAA0E;QAC1E,kEAAkE;QAClE,4DAA4D;QAC5D,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,SAAS,CAAC;QAC9D,IAAI,eAAe,GAAuB,SAAS,CAAC;QAEpD,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,mEAAmE;YACnE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAClC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,eAAe,GAAG,iBAAiB,CAAC;YACtC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,0DAA0D;YAC1D,eAAe,GAAG,eAAe,CAAC;QACpC,CAAC;QAED,OAAO;YACL,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;YAC/D,UAAU,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC;YAC/B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC;YAC7D,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC;YAC9E,WAAW,EAAE,eAAe,IAAI,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YACtF,8BAA8B,EAAE,MAAM,CAAC,YAAY,IAAI,KAAK;YAC5D,cAAc,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;SAChE,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,MAAc,EAAE,MAAc;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAErE,iDAAiD;QACjD,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,uBAAuB,CAAC;YACtC,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,WAAW,CAAC;QAC9B,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,mBAAmB,CAAC,MAAc,EAAE,MAAc,EAAE,eAAwB;QAClF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAElD,gDAAgD;QAChD,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;YACzD,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;QACjF,CAAC;aAAM,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAC3B,aAAa,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;QACnE,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAGD;;OAEG;IACH,WAAW,CACT,QAAsB,EACtB,MAAa,EACb,MAAsB,EACtB,WAAiC,EACjC,cAA0C,EAAE;QAE5C,iFAAiF;QACjF,8DAA8D;QAC9D,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,YAAY,CACV,QAAsB,EACtB,SAAmB,EACnB,EAAU,EACV,MAAsB,EACtB,WAAiC,EACjC,cAA0C,EAAE;QAE5C,yBAAyB;QACzB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,mDAAmD;QACnD,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,IAAY;QAC1C,MAAM,MAAM,GAAG,IAAA,4BAAsB,EAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC;QAED,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC;QACvC,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;QACrC,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;QACnC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,IAAY;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,6BAA6B;QAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACjE,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAElE,qCAAqC;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,GAAG,OAAO,CAAC;QAC5B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,aAAqB,EAAE,MAAsB;QACjE,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC;CACF;AApdD,gDAodC;AAEY,QAAA,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
|
package/out/features/hover.js
CHANGED
|
@@ -59,12 +59,12 @@ class HoverProvider {
|
|
|
59
59
|
return this.provideAccountHover(token, parsed);
|
|
60
60
|
}
|
|
61
61
|
// Check for commodity
|
|
62
|
-
const commodity = parsed.commodities.
|
|
62
|
+
const commodity = parsed.commodities.get(token);
|
|
63
63
|
if (commodity) {
|
|
64
64
|
return this.provideCommodityHover(commodity);
|
|
65
65
|
}
|
|
66
66
|
// Check for payee - only if token is part of payee name
|
|
67
|
-
const payee = parsed.payees.find(p => p.name.toLowerCase().includes(token.toLowerCase()));
|
|
67
|
+
const payee = parsed.payees.get(token) || Array.from(parsed.payees.values()).find(p => p.name.toLowerCase().includes(token.toLowerCase()));
|
|
68
68
|
if (payee?.declared) {
|
|
69
69
|
return this.providePayeeHover(payee, parsed);
|
|
70
70
|
}
|
|
@@ -127,7 +127,7 @@ class HoverProvider {
|
|
|
127
127
|
* Provide hover for accounts
|
|
128
128
|
*/
|
|
129
129
|
provideAccountHover(accountName, parsed) {
|
|
130
|
-
const account = parsed.accounts.
|
|
130
|
+
const account = parsed.accounts.get(accountName);
|
|
131
131
|
if (!account) {
|
|
132
132
|
return {
|
|
133
133
|
contents: {
|
|
@@ -247,7 +247,7 @@ class HoverProvider {
|
|
|
247
247
|
* Provide hover for tags
|
|
248
248
|
*/
|
|
249
249
|
provideTagHover(tagName, parsed) {
|
|
250
|
-
const tag = parsed.tags.
|
|
250
|
+
const tag = parsed.tags.get(tagName);
|
|
251
251
|
if (!tag) {
|
|
252
252
|
return {
|
|
253
253
|
contents: {
|