@ant-design/agentic-ui 2.29.43 → 2.29.45
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/AgentRunBar/index.js +27 -19
- package/dist/Hooks/useLanguage.d.ts +1 -0
- package/dist/I18n/locales.d.ts +1 -0
- package/dist/I18n/locales.js +2 -0
- package/dist/MarkdownEditor/editor/elements/Table/Table.js +2 -1
- package/dist/MarkdownEditor/editor/elements/index.js +21 -0
- package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/enter.js +15 -0
- package/dist/MarkdownEditor/editor/plugins/useHighlight.js +173 -14
- package/dist/MarkdownEditor/editor/style.js +343 -363
- package/dist/MarkdownEditor/editor/tools/JinjaTemplatePanel/index.js +39 -17
- package/dist/MarkdownEditor/editor/tools/JinjaTemplatePanel/style.js +23 -1
- package/dist/MarkdownEditor/el.d.ts +7 -0
- package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundary.d.ts +2 -0
- package/package.json +1 -1
|
@@ -112,54 +112,62 @@ export * from "./Robot";
|
|
|
112
112
|
}, locale === null || locale === void 0 ? void 0 : (_locale_agentRunBar9 = locale.agentRunBar) === null || _locale_agentRunBar9 === void 0 ? void 0 : _locale_agentRunBar9.newTask);
|
|
113
113
|
}
|
|
114
114
|
} else if (taskStatus === "stopped" || taskStatus === "cancelled") {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
115
|
+
var _locale_agentRunBar10, _locale_agentRunBar11;
|
|
116
|
+
actionNode1 = /*#__PURE__*/ React.createElement(React.Fragment, null, onViewResult && /*#__PURE__*/ React.createElement(Button, {
|
|
117
|
+
onClick: onViewResult,
|
|
118
|
+
color: "default",
|
|
119
|
+
variant: "solid",
|
|
120
|
+
autoInsertSpace: false
|
|
121
|
+
}, locale === null || locale === void 0 ? void 0 : (_locale_agentRunBar10 = locale.agentRunBar) === null || _locale_agentRunBar10 === void 0 ? void 0 : _locale_agentRunBar10.submitTask), onCreateNewTask && /*#__PURE__*/ React.createElement(Button, {
|
|
122
|
+
type: "primary",
|
|
123
|
+
onClick: onCreateNewTask,
|
|
124
|
+
icon: /*#__PURE__*/ React.createElement(PlusOutlined, null),
|
|
125
|
+
color: "default",
|
|
126
|
+
variant: "solid"
|
|
127
|
+
}, locale === null || locale === void 0 ? void 0 : (_locale_agentRunBar11 = locale.agentRunBar) === null || _locale_agentRunBar11 === void 0 ? void 0 : _locale_agentRunBar11.createNewTask));
|
|
125
128
|
} else if (taskStatus === "success" && taskRunningStatus === "complete") {
|
|
126
|
-
var
|
|
129
|
+
var _locale_agentRunBar12, _locale_agentRunBar13, _locale_agentRunBar14;
|
|
127
130
|
actionNode1 = /*#__PURE__*/ React.createElement(React.Fragment, null, onReplay && /*#__PURE__*/ React.createElement(Button, {
|
|
128
131
|
onClick: onReplay,
|
|
129
132
|
variant: "solid",
|
|
130
133
|
autoInsertSpace: false
|
|
131
|
-
}, locale === null || locale === void 0 ? void 0 : (
|
|
134
|
+
}, locale === null || locale === void 0 ? void 0 : (_locale_agentRunBar12 = locale.agentRunBar) === null || _locale_agentRunBar12 === void 0 ? void 0 : _locale_agentRunBar12.replayTask), onViewResult && /*#__PURE__*/ React.createElement(Button, {
|
|
132
135
|
onClick: onViewResult,
|
|
133
136
|
color: "default",
|
|
134
137
|
variant: "solid",
|
|
135
138
|
autoInsertSpace: false
|
|
136
|
-
}, locale === null || locale === void 0 ? void 0 : (
|
|
139
|
+
}, locale === null || locale === void 0 ? void 0 : (_locale_agentRunBar13 = locale.agentRunBar) === null || _locale_agentRunBar13 === void 0 ? void 0 : _locale_agentRunBar13.submitTask), onCreateNewTask && /*#__PURE__*/ React.createElement(Button, {
|
|
137
140
|
onClick: onCreateNewTask,
|
|
138
141
|
icon: /*#__PURE__*/ React.createElement(PlusOutlined, null),
|
|
139
142
|
color: "default",
|
|
140
143
|
variant: "solid"
|
|
141
|
-
}, locale === null || locale === void 0 ? void 0 : (
|
|
144
|
+
}, locale === null || locale === void 0 ? void 0 : (_locale_agentRunBar14 = locale.agentRunBar) === null || _locale_agentRunBar14 === void 0 ? void 0 : _locale_agentRunBar14.newTask));
|
|
142
145
|
} else if (taskStatus === "error") {
|
|
143
|
-
var
|
|
146
|
+
var _locale_agentRunBar15, _locale_agentRunBar16, _locale_agentRunBar17;
|
|
144
147
|
actionNode1 = /*#__PURE__*/ React.createElement(React.Fragment, null, onReplay && /*#__PURE__*/ React.createElement(Button, {
|
|
145
148
|
onClick: onReplay,
|
|
146
149
|
variant: "solid",
|
|
147
150
|
autoInsertSpace: false
|
|
148
|
-
}, locale === null || locale === void 0 ? void 0 : (
|
|
151
|
+
}, locale === null || locale === void 0 ? void 0 : (_locale_agentRunBar15 = locale.agentRunBar) === null || _locale_agentRunBar15 === void 0 ? void 0 : _locale_agentRunBar15.replayTask), onViewResult && /*#__PURE__*/ React.createElement(Button, {
|
|
152
|
+
onClick: onViewResult,
|
|
153
|
+
color: "default",
|
|
154
|
+
variant: "solid",
|
|
155
|
+
autoInsertSpace: false
|
|
156
|
+
}, locale === null || locale === void 0 ? void 0 : (_locale_agentRunBar16 = locale.agentRunBar) === null || _locale_agentRunBar16 === void 0 ? void 0 : _locale_agentRunBar16.submitTask), onCreateNewTask && /*#__PURE__*/ React.createElement(Button, {
|
|
149
157
|
onClick: onCreateNewTask,
|
|
150
158
|
icon: /*#__PURE__*/ React.createElement(PlusOutlined, null),
|
|
151
159
|
color: "default",
|
|
152
160
|
variant: "solid"
|
|
153
|
-
}, locale === null || locale === void 0 ? void 0 : (
|
|
161
|
+
}, locale === null || locale === void 0 ? void 0 : (_locale_agentRunBar17 = locale.agentRunBar) === null || _locale_agentRunBar17 === void 0 ? void 0 : _locale_agentRunBar17.newTask));
|
|
154
162
|
} else if (!isRunning && !isPause) {
|
|
155
163
|
if (onCreateNewTask) {
|
|
156
|
-
var
|
|
164
|
+
var _locale_agentRunBar18;
|
|
157
165
|
actionNode1 = /*#__PURE__*/ React.createElement(Button, {
|
|
158
166
|
onClick: onCreateNewTask,
|
|
159
167
|
icon: /*#__PURE__*/ React.createElement(PlusOutlined, null),
|
|
160
168
|
color: "default",
|
|
161
169
|
variant: "solid"
|
|
162
|
-
}, locale === null || locale === void 0 ? void 0 : (
|
|
170
|
+
}, locale === null || locale === void 0 ? void 0 : (_locale_agentRunBar18 = locale.agentRunBar) === null || _locale_agentRunBar18 === void 0 ? void 0 : _locale_agentRunBar18.createNewTask);
|
|
163
171
|
}
|
|
164
172
|
}
|
|
165
173
|
var stopTitle = locale === null || locale === void 0 ? void 0 : (_locale_agentRunBar = locale.agentRunBar) === null || _locale_agentRunBar === void 0 ? void 0 : _locale_agentRunBar.stop;
|
|
@@ -416,6 +416,7 @@ export declare function useLanguage(): {
|
|
|
416
416
|
'refine.optimizePrompt': string;
|
|
417
417
|
'jinja.panel.title': string;
|
|
418
418
|
'jinja.panel.docLink': string;
|
|
419
|
+
'jinja.panel.close': string;
|
|
419
420
|
'jinja.panel.noTemplates': string;
|
|
420
421
|
'jinja.template.variableInterpolation.title': string;
|
|
421
422
|
'jinja.template.variableInterpolation.description': string;
|
package/dist/I18n/locales.d.ts
CHANGED
|
@@ -378,6 +378,7 @@ export declare const cnLabels: {
|
|
|
378
378
|
'refine.optimizePrompt': string;
|
|
379
379
|
'jinja.panel.title': string;
|
|
380
380
|
'jinja.panel.docLink': string;
|
|
381
|
+
'jinja.panel.close': string;
|
|
381
382
|
'jinja.panel.noTemplates': string;
|
|
382
383
|
'jinja.template.variableInterpolation.title': string;
|
|
383
384
|
'jinja.template.variableInterpolation.description': string;
|
package/dist/I18n/locales.js
CHANGED
|
@@ -406,6 +406,7 @@
|
|
|
406
406
|
// Jinja 模板面板相关
|
|
407
407
|
'jinja.panel.title': 'Jinja 模板',
|
|
408
408
|
'jinja.panel.docLink': '使用说明',
|
|
409
|
+
'jinja.panel.close': '关闭',
|
|
409
410
|
'jinja.panel.noTemplates': '暂无模板',
|
|
410
411
|
'jinja.template.variableInterpolation.title': '变量插值',
|
|
411
412
|
'jinja.template.variableInterpolation.description': '{{ variable }}',
|
|
@@ -826,6 +827,7 @@
|
|
|
826
827
|
// Jinja template panel related
|
|
827
828
|
'jinja.panel.title': 'Jinja Templates',
|
|
828
829
|
'jinja.panel.docLink': 'Documentation',
|
|
830
|
+
'jinja.panel.close': 'Close',
|
|
829
831
|
'jinja.panel.noTemplates': 'No templates',
|
|
830
832
|
'jinja.template.variableInterpolation.title': 'Variable interpolation',
|
|
831
833
|
'jinja.template.variableInterpolation.description': '{{ variable }}',
|
|
@@ -223,7 +223,8 @@ import useScrollShadow from "./useScrollShadow";
|
|
|
223
223
|
var isMobileLayout = containerWidth <= mobileBreakpointValue;
|
|
224
224
|
var minColumnWidth = isMobileLayout ? MOBILE_TABLE_MIN_COLUMN_WIDTH : 60;
|
|
225
225
|
var maxColumnWidth = isMobileLayout ? containerWidth : containerWidth / 4;
|
|
226
|
-
|
|
226
|
+
// 至少采样 3 行用于列宽计算(若有 3 行以上),不足 3 行时自动使用全部可用行
|
|
227
|
+
var rowsToSample = tableRows.length >= 3 ? Math.min(5, tableRows.length) : tableRows.length;
|
|
227
228
|
// 一次性计算宽度
|
|
228
229
|
var calculatedWidths = Array.from({
|
|
229
230
|
length: columnCount
|
|
@@ -433,6 +433,27 @@ var MLeafComponent = function MLeafComponent(props) {
|
|
|
433
433
|
if (leaf.jinjaComment) {
|
|
434
434
|
prefixClassName = classNames(prefixClassName, "".concat(mdEditorBaseClass, "-jinja-comment"));
|
|
435
435
|
}
|
|
436
|
+
if (leaf.jinjaKeyword) {
|
|
437
|
+
prefixClassName = classNames(prefixClassName, "".concat(mdEditorBaseClass, "-jinja-keyword"));
|
|
438
|
+
}
|
|
439
|
+
if (leaf.jinjaString) {
|
|
440
|
+
prefixClassName = classNames(prefixClassName, "".concat(mdEditorBaseClass, "-jinja-string"));
|
|
441
|
+
}
|
|
442
|
+
if (leaf.jinjaNumber) {
|
|
443
|
+
prefixClassName = classNames(prefixClassName, "".concat(mdEditorBaseClass, "-jinja-number"));
|
|
444
|
+
}
|
|
445
|
+
if (leaf.jinjaFilter) {
|
|
446
|
+
prefixClassName = classNames(prefixClassName, "".concat(mdEditorBaseClass, "-jinja-filter"));
|
|
447
|
+
}
|
|
448
|
+
if (leaf.jinjaVariableName) {
|
|
449
|
+
prefixClassName = classNames(prefixClassName, "".concat(mdEditorBaseClass, "-jinja-variable-name"));
|
|
450
|
+
}
|
|
451
|
+
if (leaf.jinjaPlaceholder) {
|
|
452
|
+
prefixClassName = classNames(prefixClassName, "".concat(mdEditorBaseClass, "-jinja-placeholder"));
|
|
453
|
+
}
|
|
454
|
+
if (leaf.jinjaDelimiter) {
|
|
455
|
+
prefixClassName = classNames(prefixClassName, "".concat(mdEditorBaseClass, "-jinja-delimiter"));
|
|
456
|
+
}
|
|
436
457
|
if (leaf.current) {
|
|
437
458
|
style.background = '#f59e0b';
|
|
438
459
|
}
|
|
@@ -491,6 +491,21 @@ export var EnterKey = /*#__PURE__*/ function() {
|
|
|
491
491
|
}
|
|
492
492
|
}
|
|
493
493
|
if (parent[0].type === 'list-item') {
|
|
494
|
+
// 列表为空(仅有一项且该项无内容)时,回车将列表转换为段落
|
|
495
|
+
var listItemPath = parent[1];
|
|
496
|
+
var _Editor_parent = _sliced_to_array(Editor.parent(this.editor, listItemPath), 2), listNode = _Editor_parent[0], listPath = _Editor_parent[1];
|
|
497
|
+
var isListWithSingleEmptyItem = listNode.children.length === 1 && Node.string(node[0]) === '' && !Path.hasPrevious(listItemPath);
|
|
498
|
+
if (isListWithSingleEmptyItem) {
|
|
499
|
+
e.preventDefault();
|
|
500
|
+
Transforms.removeNodes(this.editor, {
|
|
501
|
+
at: listPath
|
|
502
|
+
});
|
|
503
|
+
Transforms.insertNodes(this.editor, EditorUtils.p, {
|
|
504
|
+
at: listPath,
|
|
505
|
+
select: true
|
|
506
|
+
});
|
|
507
|
+
return true;
|
|
508
|
+
}
|
|
494
509
|
if (isMod(e) || Path.hasPrevious(node[1])) {
|
|
495
510
|
var text = Point.equals(end, sel.focus) ? [
|
|
496
511
|
{
|
|
@@ -215,23 +215,182 @@ var processLinkMatches = function processLinkMatches(text, path, childIndex) {
|
|
|
215
215
|
}
|
|
216
216
|
return ranges;
|
|
217
217
|
};
|
|
218
|
+
/** Jinja 关键字集合 */ var JINJA_KEYWORDS = new Set([
|
|
219
|
+
'set',
|
|
220
|
+
'if',
|
|
221
|
+
'elif',
|
|
222
|
+
'else',
|
|
223
|
+
'endif',
|
|
224
|
+
'for',
|
|
225
|
+
'endfor',
|
|
226
|
+
'in',
|
|
227
|
+
'and',
|
|
228
|
+
'or',
|
|
229
|
+
'not',
|
|
230
|
+
'with',
|
|
231
|
+
'without',
|
|
232
|
+
'true',
|
|
233
|
+
'false',
|
|
234
|
+
'is',
|
|
235
|
+
'none'
|
|
236
|
+
]);
|
|
237
|
+
/** 解析 {% %} 标签内部内容,返回子 token 的 [start, end, prop][] */ var tokenizeJinjaTagContent = function tokenizeJinjaTagContent(content, baseOffset) {
|
|
238
|
+
var tokens = [];
|
|
239
|
+
var pos = 0;
|
|
240
|
+
var addToken = function addToken(len, prop) {
|
|
241
|
+
if (len > 0) {
|
|
242
|
+
tokens.push({
|
|
243
|
+
start: baseOffset + pos,
|
|
244
|
+
end: baseOffset + pos + len,
|
|
245
|
+
prop: prop
|
|
246
|
+
});
|
|
247
|
+
pos += len;
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
while(pos < content.length){
|
|
251
|
+
var rest = content.slice(pos);
|
|
252
|
+
// 占位符 $(xxx:yyy)
|
|
253
|
+
var placeholderMatch = rest.match(/^\$\([^)]+\)/);
|
|
254
|
+
if (placeholderMatch) {
|
|
255
|
+
addToken(placeholderMatch[0].length, 'jinjaPlaceholder');
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
// 字符串 '...' 或 "..."
|
|
259
|
+
var singleStrMatch = rest.match(/^'([^'\\]|\\.)*'/);
|
|
260
|
+
var doubleStrMatch = rest.match(/^"([^"\\]|\\.)*"/);
|
|
261
|
+
var strMatch = singleStrMatch || doubleStrMatch;
|
|
262
|
+
if (strMatch) {
|
|
263
|
+
addToken(strMatch[0].length, 'jinjaString');
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
// 数字(含小数)
|
|
267
|
+
var numMatch = rest.match(/^\d+(\.\d+)?/);
|
|
268
|
+
if (numMatch) {
|
|
269
|
+
addToken(numMatch[0].length, 'jinjaNumber');
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
// 过滤器 | name
|
|
273
|
+
var filterMatch = rest.match(/^\|\s*[a-zA-Z_][a-zA-Z0-9_]*/);
|
|
274
|
+
if (filterMatch) {
|
|
275
|
+
addToken(filterMatch[0].length, 'jinjaFilter');
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
// 关键字(需与标识符区分)
|
|
279
|
+
var wordMatch = rest.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);
|
|
280
|
+
if (wordMatch) {
|
|
281
|
+
var word = wordMatch[0];
|
|
282
|
+
addToken(word.length, JINJA_KEYWORDS.has(word) ? 'jinjaKeyword' : 'jinjaVariableName');
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
// 比较运算符(多字符优先)
|
|
286
|
+
if (rest.startsWith('==') || rest.startsWith('!=') || rest.startsWith('>=') || rest.startsWith('<=')) {
|
|
287
|
+
addToken(2, 'jinjaDelimiter');
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
if ('=<>'.includes(rest[0])) {
|
|
291
|
+
addToken(1, 'jinjaDelimiter');
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
// 其他符号或空格:作为 jinjaDelimiter(括括号等)或跳过
|
|
295
|
+
pos += 1;
|
|
296
|
+
}
|
|
297
|
+
return tokens;
|
|
298
|
+
};
|
|
299
|
+
/** 解析 {{ }} 变量块内部,返回子 token(变量名、过滤器、占位符) */ var tokenizeJinjaVariableContent = function tokenizeJinjaVariableContent(content, baseOffset) {
|
|
300
|
+
var tokens = [];
|
|
301
|
+
var i = 0;
|
|
302
|
+
while(i < content.length){
|
|
303
|
+
var rest = content.slice(i);
|
|
304
|
+
var ph = rest.match(/^\$\([^)]+\)/);
|
|
305
|
+
if (ph) {
|
|
306
|
+
tokens.push({
|
|
307
|
+
start: baseOffset + i,
|
|
308
|
+
end: baseOffset + i + ph[0].length,
|
|
309
|
+
prop: 'jinjaPlaceholder'
|
|
310
|
+
});
|
|
311
|
+
i += ph[0].length;
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
314
|
+
var flt = rest.match(/^\|\s*[a-zA-Z_][a-zA-Z0-9_]*/);
|
|
315
|
+
if (flt) {
|
|
316
|
+
tokens.push({
|
|
317
|
+
start: baseOffset + i,
|
|
318
|
+
end: baseOffset + i + flt[0].length,
|
|
319
|
+
prop: 'jinjaFilter'
|
|
320
|
+
});
|
|
321
|
+
i += flt[0].length;
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
var word = rest.match(/^[a-zA-Z_$][a-zA-Z0-9_]*/);
|
|
325
|
+
if (word) {
|
|
326
|
+
tokens.push({
|
|
327
|
+
start: baseOffset + i,
|
|
328
|
+
end: baseOffset + i + word[0].length,
|
|
329
|
+
prop: 'jinjaVariableName'
|
|
330
|
+
});
|
|
331
|
+
i += word[0].length;
|
|
332
|
+
continue;
|
|
333
|
+
}
|
|
334
|
+
i += 1;
|
|
335
|
+
}
|
|
336
|
+
return tokens;
|
|
337
|
+
};
|
|
218
338
|
/** 在整段文本上匹配 Jinja,支持被 inline code 分割的语法(如 {% if `x` %}) */ var processJinjaMatchesOnFullText = function processJinjaMatchesOnFullText(fullText, path, children) {
|
|
219
339
|
var ranges = [];
|
|
220
|
-
var
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
while((match = reg.exec(fullText)) !== null){
|
|
224
|
-
var start = match.index;
|
|
225
|
-
var matched = match[0];
|
|
226
|
-
if (typeof start !== 'number' || !matched) continue;
|
|
227
|
-
var end = start + matched.length;
|
|
228
|
-
var range = createRangeSpanningChildren(path, children, start, end, _define_property({}, prop, true));
|
|
229
|
-
if (range) ranges.push(range);
|
|
230
|
-
}
|
|
340
|
+
var addRange = function addRange(start, end, prop) {
|
|
341
|
+
var range = createRangeSpanningChildren(path, children, start, end, _define_property({}, prop, true));
|
|
342
|
+
if (range) ranges.push(range);
|
|
231
343
|
};
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
344
|
+
// 注释:整块灰色
|
|
345
|
+
JINJA_COMMENT_REG.lastIndex = 0;
|
|
346
|
+
var match;
|
|
347
|
+
while((match = JINJA_COMMENT_REG.exec(fullText)) !== null){
|
|
348
|
+
var start = match.index;
|
|
349
|
+
var matched = match[0];
|
|
350
|
+
if (typeof start === 'number' && matched) {
|
|
351
|
+
addRange(start, start + matched.length, 'jinjaComment');
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
// 变量 {{ }}:细粒度高亮
|
|
355
|
+
JINJA_VARIABLE_REG.lastIndex = 0;
|
|
356
|
+
while((match = JINJA_VARIABLE_REG.exec(fullText)) !== null){
|
|
357
|
+
var start1 = match.index;
|
|
358
|
+
var matched1 = match[0];
|
|
359
|
+
if (typeof start1 !== 'number' || !matched1) continue;
|
|
360
|
+
var openLen = 2; // {{
|
|
361
|
+
var closeLen = 2; // }}
|
|
362
|
+
var innerStart = start1 + openLen;
|
|
363
|
+
var innerEnd = start1 + matched1.length - closeLen;
|
|
364
|
+
var innerContent = matched1.slice(openLen, matched1.length - closeLen);
|
|
365
|
+
addRange(start1, innerStart, 'jinjaDelimiter');
|
|
366
|
+
var varTokens = tokenizeJinjaVariableContent(innerContent, innerStart);
|
|
367
|
+
if (varTokens.length > 0) {
|
|
368
|
+
varTokens.forEach(function(t) {
|
|
369
|
+
return addRange(t.start, t.end, t.prop);
|
|
370
|
+
});
|
|
371
|
+
} else if (innerContent.trim()) {
|
|
372
|
+
addRange(innerStart, innerEnd, 'jinjaVariableName');
|
|
373
|
+
}
|
|
374
|
+
addRange(innerEnd, start1 + matched1.length, 'jinjaDelimiter');
|
|
375
|
+
}
|
|
376
|
+
// 标签 {% %}:细粒度高亮
|
|
377
|
+
JINJA_TAG_REG.lastIndex = 0;
|
|
378
|
+
while((match = JINJA_TAG_REG.exec(fullText)) !== null){
|
|
379
|
+
var start2 = match.index;
|
|
380
|
+
var matched2 = match[0];
|
|
381
|
+
if (typeof start2 !== 'number' || !matched2) continue;
|
|
382
|
+
var openLen1 = 2; // {%
|
|
383
|
+
var closeLen1 = 2; // %}
|
|
384
|
+
var innerStart1 = start2 + openLen1;
|
|
385
|
+
var innerEnd1 = start2 + matched2.length - closeLen1;
|
|
386
|
+
var innerContent1 = matched2.slice(openLen1, matched2.length - closeLen1);
|
|
387
|
+
addRange(start2, innerStart1, 'jinjaDelimiter');
|
|
388
|
+
var tagTokens = tokenizeJinjaTagContent(innerContent1, innerStart1);
|
|
389
|
+
tagTokens.forEach(function(t) {
|
|
390
|
+
return addRange(t.start, t.end, t.prop);
|
|
391
|
+
});
|
|
392
|
+
addRange(innerEnd1, start2 + matched2.length, 'jinjaDelimiter');
|
|
393
|
+
}
|
|
235
394
|
return ranges;
|
|
236
395
|
};
|
|
237
396
|
export function useHighlight(store, jinjaEnabled) {
|