@sentry/junior-dashboard 0.239.0 → 0.241.0
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/app.js +16 -16
- package/dist/chunks/{angular-html-3W5ULHSG.js → angular-html-ZNDXTZDN.js} +1 -1
- package/dist/chunks/{angular-ts-4LWK3KJS.js → angular-ts-ON3WFVNV.js} +1 -1
- package/dist/chunks/{blade-2ZY5IBVK.js → blade-XRKVUGGE.js} +1 -1
- package/dist/chunks/{chunk-7UGJD7LY.js → chunk-NNKU2YC4.js} +1 -1
- package/dist/chunks/{chunk-36REIGDL.js → chunk-SEA6YWUO.js} +1 -1
- package/dist/chunks/{chunk-H5RFWU3B.js → chunk-VXXQQLRX.js} +1 -1
- package/dist/chunks/{handlebars-IBE27NOG.js → handlebars-A4STSCQ6.js} +1 -1
- package/dist/chunks/{html-SP67HH5F.js → html-T3MIDC6T.js} +1 -1
- package/dist/chunks/{html-derivative-HSRB64DA.js → html-derivative-A5ABNIZH.js} +1 -1
- package/dist/chunks/{jinja-RWPJ7VSG.js → jinja-UYMB4X6S.js} +1 -1
- package/dist/chunks/{mdc-GOYXY36C.js → mdc-KT6TTBUF.js} +1 -1
- package/dist/chunks/{php-HGK4AZCK.js → php-3CK4FBZI.js} +1 -1
- package/dist/chunks/{pug-J24HZP2J.js → pug-IEW5PJRA.js} +1 -1
- package/dist/chunks/{ts-tags-5RZIQFFW.js → ts-tags-MCSPJMMM.js} +1 -1
- package/dist/chunks/vue-WXFFFGZ3.js +1 -0
- package/dist/client.js +48 -48
- package/dist/index.js +16 -16
- package/dist/tailwind.css +1 -1
- package/package.json +3 -3
- package/src/client/App.tsx +1 -0
- package/src/client/components/SegmentedNav.tsx +7 -2
- package/src/client/components/charts/ActivityChart.tsx +27 -8
- package/src/client/pages/automations/AutomationEditPage.tsx +2 -2
- package/src/client/pages/automations/AutomationLifecycle.tsx +1 -2
- package/src/client/pages/automations/AutomationRow.tsx +1 -1
- package/src/client/pages/memory/MemoryPage.tsx +16 -4
- package/src/client/pages/memory/MemorySearchHighlight.tsx +49 -0
- package/src/client/pages/memory/memoryDashboard.ts +34 -1
- package/dist/chunks/vue-WQSBUNEP.js +0 -1
|
@@ -177,9 +177,22 @@ export function ChartAxisHtmlLabel(props: {
|
|
|
177
177
|
);
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
+
type ChartBox = { height: number; width: number };
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Screen pixels per SVG user unit. The default `preserveAspectRatio` fits the
|
|
184
|
+
* whole viewBox inside the element box, so the smaller ratio wins.
|
|
185
|
+
*/
|
|
186
|
+
function chartSvgScale(box: ChartBox | undefined, layout: ActivityChartLayout) {
|
|
187
|
+
if (!box || box.width <= 0 || box.height <= 0) return 1;
|
|
188
|
+
return Math.min(box.width / layout.width, box.height / layout.height);
|
|
189
|
+
}
|
|
190
|
+
|
|
180
191
|
/**
|
|
181
192
|
* Render the shared SVG chart shell and provide its live screen scale to labels.
|
|
182
193
|
* SVG text uses user units, so labels invert this scale to remain 12px on screen.
|
|
194
|
+
* The scale comes from the current element size and viewBox, so a measurement
|
|
195
|
+
* from an earlier layout is never reused.
|
|
183
196
|
*/
|
|
184
197
|
export function ChartSvg(props: {
|
|
185
198
|
"aria-label": string;
|
|
@@ -188,22 +201,28 @@ export function ChartSvg(props: {
|
|
|
188
201
|
layout: ActivityChartLayout;
|
|
189
202
|
}) {
|
|
190
203
|
const svgRef = useRef<SVGSVGElement>(null);
|
|
191
|
-
const [
|
|
204
|
+
const [box, setBox] = useState<ChartBox>();
|
|
192
205
|
|
|
193
206
|
useLayoutEffect(() => {
|
|
194
207
|
const svg = svgRef.current;
|
|
195
208
|
if (!svg) return;
|
|
196
|
-
const
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
209
|
+
const updateBox = (next: ChartBox) =>
|
|
210
|
+
setBox((previous) =>
|
|
211
|
+
previous?.width === next.width && previous.height === next.height
|
|
212
|
+
? previous
|
|
213
|
+
: next,
|
|
214
|
+
);
|
|
215
|
+
// Measure before the first paint; the observer reports later changes.
|
|
216
|
+
updateBox({ height: svg.clientHeight, width: svg.clientWidth });
|
|
217
|
+
const observer = new ResizeObserver(([entry]) => {
|
|
218
|
+
if (entry) updateBox(entry.contentRect);
|
|
219
|
+
});
|
|
203
220
|
observer.observe(svg);
|
|
204
221
|
return () => observer.disconnect();
|
|
205
222
|
}, []);
|
|
206
223
|
|
|
224
|
+
const scale = chartSvgScale(box, props.layout);
|
|
225
|
+
|
|
207
226
|
return (
|
|
208
227
|
<ChartSvgScaleContext value={scale}>
|
|
209
228
|
<svg
|
|
@@ -39,8 +39,8 @@ export function AutomationEditPage(props: { enabled: boolean }) {
|
|
|
39
39
|
const value = summary.data;
|
|
40
40
|
const status =
|
|
41
41
|
value?.kind === "event"
|
|
42
|
-
? value.status
|
|
43
|
-
?
|
|
42
|
+
? value.status !== "active"
|
|
43
|
+
? value.status
|
|
44
44
|
: value.triggerAvailable
|
|
45
45
|
? "active"
|
|
46
46
|
: "unavailable"
|
|
@@ -26,8 +26,7 @@ export function AutomationLifecycle({
|
|
|
26
26
|
// Public readers can edit settings, but only the creator controls lifecycle.
|
|
27
27
|
const canEdit = !completed;
|
|
28
28
|
const canPause = automation.ownedByViewer && !completed;
|
|
29
|
-
const blockReason =
|
|
30
|
-
automation.kind === "scheduled" ? automation.statusReason : undefined;
|
|
29
|
+
const blockReason = automation.statusReason;
|
|
31
30
|
const action = paused || blocked ? "resume" : "pause";
|
|
32
31
|
const mutation = useMutation({
|
|
33
32
|
mutationFn: async () => {
|
|
@@ -125,7 +125,7 @@ function automationStatus(automation: AutomationSummary): string | undefined {
|
|
|
125
125
|
if (automation.kind === "scheduled") {
|
|
126
126
|
return automation.status === "active" ? undefined : automation.status;
|
|
127
127
|
}
|
|
128
|
-
if (automation.status
|
|
128
|
+
if (automation.status !== "active") return automation.status;
|
|
129
129
|
return automation.triggerAvailable ? undefined : "Trigger unavailable";
|
|
130
130
|
}
|
|
131
131
|
|
|
@@ -34,9 +34,11 @@ import { cn } from "../../styles";
|
|
|
34
34
|
import {
|
|
35
35
|
type MemoryDashboardData,
|
|
36
36
|
useMemoryDashboardData,
|
|
37
|
+
useMemorySearchCounts,
|
|
37
38
|
} from "./memoryDashboard";
|
|
38
39
|
import { MemoryDetailsDrawer } from "./MemoryDetailsDrawer";
|
|
39
40
|
import { MemoryPageLayout } from "./MemoryPageLayout";
|
|
41
|
+
import { MemorySearchHighlight } from "./MemorySearchHighlight";
|
|
40
42
|
import { MemoryTimeline } from "./MemoryTimeline";
|
|
41
43
|
import { MemoryCostChart } from "./MemoryCostChart";
|
|
42
44
|
import { useMemoryRecord } from "./memoryRecord";
|
|
@@ -151,6 +153,11 @@ function MemoryLibrary(props: {
|
|
|
151
153
|
setSearchText,
|
|
152
154
|
} = usePluginUserPageData(props.page);
|
|
153
155
|
const dashboardQuery = useMemoryDashboardData();
|
|
156
|
+
const searchCountsQuery = useMemorySearchCounts(searchQuery);
|
|
157
|
+
// Tab totals follow the search. Without a search, the summary owns them.
|
|
158
|
+
const counts = searchQuery
|
|
159
|
+
? searchCountsQuery.data
|
|
160
|
+
: dashboardQuery.data?.stats;
|
|
154
161
|
const navigate = useNavigate();
|
|
155
162
|
const location = useLocation();
|
|
156
163
|
const { memoryId } = useParams();
|
|
@@ -217,17 +224,17 @@ function MemoryLibrary(props: {
|
|
|
217
224
|
ariaLabel="Memory collections"
|
|
218
225
|
items={[
|
|
219
226
|
{
|
|
220
|
-
count:
|
|
227
|
+
count: counts?.active,
|
|
221
228
|
label: "All",
|
|
222
229
|
value: "",
|
|
223
230
|
},
|
|
224
231
|
{
|
|
225
|
-
count:
|
|
232
|
+
count: counts?.personal,
|
|
226
233
|
label: "Private",
|
|
227
234
|
value: "private",
|
|
228
235
|
},
|
|
229
236
|
{
|
|
230
|
-
count:
|
|
237
|
+
count: counts?.public,
|
|
231
238
|
label: "Public",
|
|
232
239
|
value: "public",
|
|
233
240
|
},
|
|
@@ -274,6 +281,7 @@ function MemoryLibrary(props: {
|
|
|
274
281
|
)
|
|
275
282
|
}
|
|
276
283
|
record={record}
|
|
284
|
+
searchQuery={searchQuery}
|
|
277
285
|
selected={record.id === memoryId}
|
|
278
286
|
/>
|
|
279
287
|
))}
|
|
@@ -472,6 +480,7 @@ function MemoryRow(props: {
|
|
|
472
480
|
first: boolean;
|
|
473
481
|
onSelect(): void;
|
|
474
482
|
record: PluginUserPageRecord;
|
|
483
|
+
searchQuery: string;
|
|
475
484
|
selected: boolean;
|
|
476
485
|
}) {
|
|
477
486
|
const kind = metadataValue(props.record, "Type");
|
|
@@ -506,7 +515,10 @@ function MemoryRow(props: {
|
|
|
506
515
|
size={14}
|
|
507
516
|
/>
|
|
508
517
|
<h3 className="m-0 truncate font-display text-base font-medium leading-snug text-dashboard-text">
|
|
509
|
-
|
|
518
|
+
<MemorySearchHighlight
|
|
519
|
+
query={props.searchQuery}
|
|
520
|
+
text={props.record.title}
|
|
521
|
+
/>
|
|
510
522
|
</h3>
|
|
511
523
|
</div>
|
|
512
524
|
<div className="mt-1.5 truncate font-mono text-xs leading-relaxed text-dashboard-text-muted">
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Split a search query into the terms that memory search matches. Keep this
|
|
3
|
+
* in step with `searchTerms` in `@sentry/junior-memory` `src/viewer.ts`.
|
|
4
|
+
*/
|
|
5
|
+
function memorySearchTerms(query: string): string[] {
|
|
6
|
+
return [
|
|
7
|
+
...new Set(
|
|
8
|
+
query
|
|
9
|
+
.toLowerCase()
|
|
10
|
+
.split(/[^a-z0-9_'-]+/)
|
|
11
|
+
.filter((term) => term.length >= 2),
|
|
12
|
+
),
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function escapeRegExp(value: string): string {
|
|
17
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Render memory text with each matched search term marked. */
|
|
21
|
+
export function MemorySearchHighlight(props: { query: string; text: string }) {
|
|
22
|
+
const terms = memorySearchTerms(props.query);
|
|
23
|
+
if (terms.length === 0) return <>{props.text}</>;
|
|
24
|
+
// Longer terms first so a term that contains another term wins the match.
|
|
25
|
+
const pattern = new RegExp(
|
|
26
|
+
`(${terms
|
|
27
|
+
.sort((a, b) => b.length - a.length)
|
|
28
|
+
.map(escapeRegExp)
|
|
29
|
+
.join("|")})`,
|
|
30
|
+
"gi",
|
|
31
|
+
);
|
|
32
|
+
// `split` with one capture group puts the matches at odd indexes.
|
|
33
|
+
return (
|
|
34
|
+
<>
|
|
35
|
+
{props.text.split(pattern).map((part, index) =>
|
|
36
|
+
index % 2 === 1 ? (
|
|
37
|
+
<mark
|
|
38
|
+
className="rounded-sm bg-amber-300/25 text-dashboard-text"
|
|
39
|
+
key={index}
|
|
40
|
+
>
|
|
41
|
+
{part}
|
|
42
|
+
</mark>
|
|
43
|
+
) : (
|
|
44
|
+
part
|
|
45
|
+
),
|
|
46
|
+
)}
|
|
47
|
+
</>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useQuery } from "@tanstack/react-query";
|
|
1
|
+
import { keepPreviousData, useQuery } from "@tanstack/react-query";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
|
|
4
4
|
import { fetchDashboardJson } from "../../http";
|
|
@@ -64,3 +64,36 @@ export function useMemoryDashboardData() {
|
|
|
64
64
|
retry: false,
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
|
+
|
|
68
|
+
const memoryCountsSchema = z
|
|
69
|
+
.object({
|
|
70
|
+
active: z.number().int().min(0),
|
|
71
|
+
personal: z.number().int().min(0),
|
|
72
|
+
public: z.number().int().min(0),
|
|
73
|
+
})
|
|
74
|
+
.strict();
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Load viewer-scoped memory totals that match a search query. The query stays
|
|
78
|
+
* idle without a search, because the dashboard summary owns unfiltered totals.
|
|
79
|
+
*/
|
|
80
|
+
export function useMemorySearchCounts(searchQuery: string) {
|
|
81
|
+
return useQuery({
|
|
82
|
+
enabled: Boolean(searchQuery),
|
|
83
|
+
placeholderData: keepPreviousData,
|
|
84
|
+
queryFn: ({ signal }) =>
|
|
85
|
+
fetchDashboardJson(
|
|
86
|
+
memoryCountsSchema,
|
|
87
|
+
`/api/plugins/memory/counts?${new URLSearchParams({ q: searchQuery })}`,
|
|
88
|
+
signal,
|
|
89
|
+
),
|
|
90
|
+
queryKey: [
|
|
91
|
+
"dashboard",
|
|
92
|
+
"plugin-user-page",
|
|
93
|
+
"memory",
|
|
94
|
+
"counts",
|
|
95
|
+
searchQuery,
|
|
96
|
+
],
|
|
97
|
+
retry: false,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as s}from"./chunk-2JCGS2R5.js";import{a as i}from"./chunk-H5RFWU3B.js";import{a as n}from"./chunk-7UGJD7LY.js";import{a}from"./chunk-TMGLBCIL.js";import{a as t}from"./chunk-KRCOHE3O.js";import{a as e}from"./chunk-33IMBO4B.js";import"./chunk-7SZRL6FY.js";var l=Object.freeze(JSON.parse('{"fileTypes":[],"injectTo":["text.html.markdown"],"injectionSelector":"L:text.html.markdown","name":"markdown-vue","patterns":[{"include":"#vue-code-block"}],"repository":{"vue-code-block":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(vue)((\\\\s+|[,:?{])[^`~]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown","patterns":[]}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"include":"text.html.vue"}]}},"scopeName":"markdown.vue.codeblock"}')),u=[l];var o=Object.freeze(JSON.parse('{"fileTypes":[],"injectTo":["source.vue","text.html.markdown","text.html.derivative","text.pug"],"injectionSelector":"L:meta.tag -meta.attribute -meta.ng-binding -entity.name.tag.pug -attribute_value -source.tsx -source.js.jsx, L:meta.element -meta.attribute","name":"vue-directives","patterns":[{"include":"text.html.vue#vue-directives"}],"scopeName":"vue.directives"}')),m=[o];var d=Object.freeze(JSON.parse('{"fileTypes":[],"injectTo":["source.vue","text.html.markdown","text.html.derivative","text.pug"],"injectionSelector":"L:text.pug -comment -string.comment, L:text.html.derivative -comment.block, L:text.html.markdown -comment.block","name":"vue-interpolations","patterns":[{"include":"text.html.vue#vue-interpolations"}],"scopeName":"vue.interpolations"}')),r=[d];var p=Object.freeze(JSON.parse(`{"fileTypes":[],"injectTo":["source.vue"],"injectionSelector":"L:source.css -comment, L:source.postcss -comment, L:source.sass -comment, L:source.stylus -comment","name":"vue-sfc-style-variable-injection","patterns":[{"include":"#vue-sfc-style-variable-injection"}],"repository":{"vue-sfc-style-variable-injection":{"begin":"\\\\b(v-bind)\\\\s*\\\\(","beginCaptures":{"1":{"name":"entity.name.function"}},"end":"\\\\)","name":"vue.sfc.style.variable.injection.v-bind","patterns":[{"begin":"([\\"'])","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"}},"end":"(\\\\1)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"source.ts.embedded.html.vue","patterns":[{"include":"source.js"}]},{"include":"source.js"}]}},"scopeName":"vue.sfc.style.variable.injection","embeddedLangs":["javascript"]}`)),c=[...e,p];var g=Object.freeze(JSON.parse(`{"displayName":"Vue","name":"vue","patterns":[{"include":"#vue-comments"},{"include":"#self-closing-tag"},{"begin":"(<)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"}},"end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html.vue"}},"patterns":[{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)md\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"text.html.markdown","patterns":[{"include":"text.html.markdown"}]}]},{"begin":"(?!template(?![-0-:A-Za-z]))([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)html\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"contentName":"text.html.derivative","end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"include":"#html-stuff"}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)pug\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"text.pug","patterns":[{"include":"text.pug"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)stylus\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.stylus","patterns":[{"include":"source.stylus"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)postcss\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.postcss","patterns":[{"include":"source.postcss"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)sass\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.sass","patterns":[{"include":"source.sass"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)css\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.css","patterns":[{"include":"source.css"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)scss\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.css.scss","patterns":[{"include":"source.css.scss"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)less\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.css.less","patterns":[{"include":"source.css.less"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)js\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.js","patterns":[{"include":"source.js"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)ts\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)(?=[^\\\\n]*</script[>\\\\s])","end":"(?=</script[>\\\\s])","name":"source.ts","patterns":[{"include":"source.ts"}]},{"begin":"(?<=>)","name":"source.ts","patterns":[{"include":"source.ts"}],"while":"^(?!\\\\s*</script[>\\\\s])"}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)jsx\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.js.jsx","patterns":[{"include":"source.js.jsx"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)tsx\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)(?=[^\\\\n]*</script[>\\\\s])","end":"(?=</script[>\\\\s])","name":"source.tsx","patterns":[{"include":"source.tsx"}]},{"begin":"(?<=>)","name":"source.tsx","patterns":[{"include":"source.tsx"}],"while":"^(?!\\\\s*</script[>\\\\s])"}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)coffee\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.coffee","patterns":[{"include":"source.coffee"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)json\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.json","patterns":[{"include":"source.json"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)jsonc\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.json.comments","patterns":[{"include":"source.json.comments"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)json5\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.json5","patterns":[{"include":"source.json5"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)yaml\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.yaml","patterns":[{"include":"source.yaml"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)toml\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.toml","patterns":[{"include":"source.toml"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)(g(?:ql|raphql))\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"source.graphql","patterns":[{"include":"source.graphql"}]}]},{"begin":"([-0-:A-Za-z]+)\\\\b(?=[^>]*\\\\blang\\\\s*=\\\\s*([\\"']?)vue\\\\b\\\\2)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"text.html.vue","patterns":[{"include":"text.html.vue"}]}]},{"begin":"(template)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</template[>\\\\s])","name":"text.html.derivative","patterns":[{"include":"#html-stuff"}]}]},{"begin":"(script)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#multi-line-script-tag-stuff"}]},{"begin":"(style)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#multi-line-style-tag-stuff"}]},{"begin":"([-0-:A-Za-z]+)","beginCaptures":{"1":{"name":"entity.name.tag.$1.html.vue"}},"end":"(</)(\\\\1)\\\\s*(?=>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</)","name":"text"}]}]}],"repository":{"html-stuff":{"patterns":[{"include":"#template-tag"},{"include":"text.html.derivative"},{"include":"text.html.basic"}]},"multi-line-script-tag-stuff":{"begin":"\\\\G","end":"(?=</script[>\\\\s])","patterns":[{"begin":"\\\\G(?!\\\\blang\\\\s*=\\\\s*[\\"']?(?:tsx??|jsx|coffee)\\\\b)","end":"(?=\\\\blang\\\\s*=\\\\s*[\\"']?(?:tsx??|jsx|coffee)\\\\b)|(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html.vue"}},"name":"meta.tag-stuff","patterns":[{"include":"#vue-directives"},{"include":"text.html.basic#attribute"}]},{"begin":"(?=\\\\blang\\\\s*=\\\\s*[\\"']?ts\\\\b)","end":"(?=</script[>\\\\s])","patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)(?=[^\\\\n]*</script[>\\\\s])","end":"(?=</script[>\\\\s])","name":"source.ts","patterns":[{"include":"source.ts"}]},{"begin":"(?<=>)","name":"source.ts","patterns":[{"include":"source.ts"}],"while":"^(?!\\\\s*</script[>\\\\s])"}]},{"begin":"(?=\\\\blang\\\\s*=\\\\s*[\\"']?tsx\\\\b)","end":"(?=</script[>\\\\s])","patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)(?=[^\\\\n]*</script[>\\\\s])","end":"(?=</script[>\\\\s])","name":"source.tsx","patterns":[{"include":"source.tsx"}]},{"begin":"(?<=>)","name":"source.tsx","patterns":[{"include":"source.tsx"}],"while":"^(?!\\\\s*</script[>\\\\s])"}]},{"begin":"(?=\\\\blang\\\\s*=\\\\s*[\\"']?jsx\\\\b)","end":"(?=</script[>\\\\s])","patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</script[>\\\\s])","name":"source.js.jsx","patterns":[{"include":"source.js.jsx"}]}]},{"begin":"(?=\\\\blang\\\\s*=\\\\s*[\\"']?coffee\\\\b)","end":"(?=</script[>\\\\s])","patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</script[>\\\\s])","name":"source.coffee","patterns":[{"include":"source.coffee"}]}]},{"begin":"(?<=>)","end":"(?=</script[>\\\\s])","name":"source.js","patterns":[{"include":"source.js"}]}]},"multi-line-style-tag-stuff":{"begin":"\\\\G","end":"(?=</style[>\\\\s])","patterns":[{"begin":"\\\\G(?!\\\\blang\\\\s*=\\\\s*[\\"']?(?:scss|stylus|less|postcss)\\\\b)","end":"(?=\\\\blang\\\\s*=\\\\s*[\\"']?(?:scss|stylus|less|postcss)\\\\b)|(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html.vue"}},"name":"meta.tag-stuff","patterns":[{"include":"#vue-directives"},{"include":"text.html.basic#attribute"}]},{"begin":"(?=\\\\blang\\\\s*=\\\\s*[\\"']?scss\\\\b)","end":"(?=</style[>\\\\s])","patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</style[>\\\\s])","name":"source.css.scss","patterns":[{"include":"source.css.scss"}]}]},{"begin":"(?=\\\\blang\\\\s*=\\\\s*[\\"']?stylus\\\\b)","end":"(?=</style[>\\\\s])","patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</style[>\\\\s])","name":"source.stylus","patterns":[{"include":"source.stylus"}]}]},{"begin":"(?=\\\\blang\\\\s*=\\\\s*[\\"']?less\\\\b)","end":"(?=</style[>\\\\s])","patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</style[>\\\\s])","name":"source.css.less","patterns":[{"include":"source.css.less"}]}]},{"begin":"(?=\\\\blang\\\\s*=\\\\s*[\\"']?postcss\\\\b)","end":"(?=</style[>\\\\s])","patterns":[{"include":"#tag-stuff"},{"begin":"(?<=>)","end":"(?=</style[>\\\\s])","name":"source.postcss","patterns":[{"include":"source.postcss"}]}]},{"begin":"(?<=>)","end":"(?=</style[>\\\\s])","name":"source.css","patterns":[{"include":"source.css"}]}]},"self-closing-tag":{"begin":"(<)([-0-:A-Za-z]+)(?=([^>]+/>))","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"end":"(/>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html.vue"}},"name":"self-closing-tag","patterns":[{"include":"#tag-stuff"}]},"tag-stuff":{"begin":"\\\\G","end":"(?=/>)|(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html.vue"}},"name":"meta.tag-stuff","patterns":[{"include":"#vue-directives"},{"include":"text.html.basic#attribute"}]},"template-tag":{"patterns":[{"include":"#template-tag-1"},{"include":"#template-tag-2"}]},"template-tag-1":{"begin":"(<)(template)\\\\b(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"},"3":{"name":"punctuation.definition.tag.end.html.vue"}},"end":"(/?>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html.vue"}},"name":"meta.template-tag.start","patterns":[{"begin":"\\\\G","end":"(?=/>)|((</)(template)(?=[>\\\\s]))","endCaptures":{"2":{"name":"punctuation.definition.tag.begin.html.vue"},"3":{"name":"entity.name.tag.$3.html.vue"}},"name":"meta.template-tag.end","patterns":[{"include":"#html-stuff"}]}]},"template-tag-2":{"begin":"(<)(template)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html.vue"},"2":{"name":"entity.name.tag.$2.html.vue"}},"end":"(/?>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html.vue"}},"name":"meta.template-tag.start","patterns":[{"begin":"\\\\G","end":"(?=/>)|((</)(template)(?=[>\\\\s]))","endCaptures":{"2":{"name":"punctuation.definition.tag.begin.html.vue"},"3":{"name":"entity.name.tag.$3.html.vue"}},"name":"meta.template-tag.end","patterns":[{"include":"#tag-stuff"},{"include":"#html-stuff"}]}]},"vue-comments":{"patterns":[{"include":"#vue-comments-key-value"},{"begin":"<!--","captures":{"0":{"name":"punctuation.definition.comment.vue"}},"end":"-->","name":"comment.block.vue"}]},"vue-comments-key-value":{"begin":"(<!--)\\\\s*(@)([$\\\\w]+)(?=\\\\s)","beginCaptures":{"1":{"name":"punctuation.definition.comment.vue"},"2":{"name":"punctuation.definition.block.tag.comment.vue"},"3":{"name":"storage.type.class.comment.vue"}},"end":"(-->)","endCaptures":{"1":{"name":"punctuation.definition.comment.vue"}},"name":"comment.block.vue","patterns":[{"include":"source.json#value"}]},"vue-directives":{"patterns":[{"include":"#vue-directives-control"},{"include":"#vue-directives-generic-attr"},{"include":"#vue-directives-style-attr"},{"include":"#vue-directives-original"}]},"vue-directives-control":{"begin":"(?:(v-for)|(v-(?:if|else-if|else)))(?=[)/=>\\\\s])","beginCaptures":{"1":{"name":"keyword.control.loop.vue"},"2":{"name":"keyword.control.conditional.vue"}},"end":"(?=\\\\s*[^=\\\\s])","name":"meta.attribute.directive.control.vue","patterns":[{"include":"#vue-directives-expression"}]},"vue-directives-expression":{"patterns":[{"begin":"(=)\\\\s*([\\"'\`])","beginCaptures":{"1":{"name":"punctuation.separator.key-value.html.vue"},"2":{"name":"punctuation.definition.string.begin.html.vue"}},"end":"(\\\\2)","endCaptures":{"1":{"name":"punctuation.definition.string.end.html.vue"}},"patterns":[{"begin":"(?<=([\\"'\`]))","end":"(?=\\\\1)","name":"source.ts.embedded.html.vue","patterns":[{"include":"source.ts#expression"}]}]},{"begin":"(=)\\\\s*(?=[^\\"'\`])","beginCaptures":{"1":{"name":"punctuation.separator.key-value.html.vue"}},"end":"(?=([>\\\\s]|/>))","patterns":[{"begin":"(?=[^\\"'\`])","end":"(?=([>\\\\s]|/>))","name":"source.ts.embedded.html.vue","patterns":[{"include":"source.ts#expression"}]}]}]},"vue-directives-generic-attr":{"begin":"\\\\b(generic)\\\\s*(=)","beginCaptures":{"1":{"name":"entity.other.attribute-name.html.vue"},"2":{"name":"punctuation.separator.key-value.html.vue"}},"end":"(?<=[\\"'])","name":"meta.attribute.generic.vue","patterns":[{"begin":"([\\"'])","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.html.vue"}},"end":"(\\\\1)","endCaptures":{"1":{"name":"punctuation.definition.string.end.html.vue"}},"name":"meta.type.parameters.vue","patterns":[{"include":"source.ts#comment"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.ts"},{"include":"source.ts#type"},{"include":"source.ts#punctuation-comma"},{"match":"(=)(?!>)","name":"keyword.operator.assignment.ts"}]}]},"vue-directives-original":{"begin":"(?:(v-[-\\\\w]+)(:)?|([.:])|(@)|(#))(?:(\\\\[)([^]]*)(])|([-\\\\w]+))?","beginCaptures":{"1":{"name":"entity.other.attribute-name.html.vue"},"2":{"name":"punctuation.separator.key-value.html.vue"},"3":{"name":"punctuation.attribute-shorthand.bind.html.vue"},"4":{"name":"punctuation.attribute-shorthand.event.html.vue"},"5":{"name":"punctuation.attribute-shorthand.slot.html.vue"},"6":{"name":"punctuation.separator.key-value.html.vue"},"7":{"name":"source.ts.embedded.html.vue","patterns":[{"include":"source.ts#expression"}]},"8":{"name":"punctuation.separator.key-value.html.vue"},"9":{"name":"entity.other.attribute-name.html.vue"}},"end":"(?=\\\\s*[^=\\\\s])","name":"meta.attribute.directive.vue","patterns":[{"1":{"name":"punctuation.separator.key-value.html.vue"},"2":{"name":"entity.other.attribute-name.html.vue"},"match":"(\\\\.)([-\\\\w]*)"},{"include":"#vue-directives-expression"}]},"vue-directives-style-attr":{"begin":"\\\\b(style)\\\\s*(=)","beginCaptures":{"1":{"name":"entity.other.attribute-name.html.vue"},"2":{"name":"punctuation.separator.key-value.html.vue"}},"end":"(?<=[\\"'])","name":"meta.attribute.style.vue","patterns":[{"begin":"([\\"'])","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.html.vue"}},"end":"(\\\\1)","endCaptures":{"1":{"name":"punctuation.definition.string.end.html.vue"}},"name":"source.css.embedded.html.vue","patterns":[{"include":"source.css#comment-block"},{"include":"source.css#escapes"},{"include":"source.css#font-features"},{"match":"(?<![-\\\\w])--[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.css"},{"begin":"(?<![-A-Za-z])(?=[-A-Za-z])","end":"$|(?![-A-Za-z])","name":"meta.property-name.css","patterns":[{"include":"source.css#property-names"}]},{"begin":"(:)\\\\s*","beginCaptures":{"1":{"name":"punctuation.separator.key-value.css"}},"contentName":"meta.property-value.css","end":"\\\\s*(;)|\\\\s*(?=[\\"'])","endCaptures":{"1":{"name":"punctuation.terminator.rule.css"}},"patterns":[{"include":"source.css#comment-block"},{"include":"source.css#property-values"}]},{"match":";","name":"punctuation.terminator.rule.css"}]}]},"vue-interpolations":{"patterns":[{"begin":"(\\\\{\\\\{)","beginCaptures":{"1":{"name":"punctuation.definition.interpolation.begin.html.vue"}},"end":"(}})","endCaptures":{"1":{"name":"punctuation.definition.interpolation.end.html.vue"}},"name":"expression.embedded.vue","patterns":[{"begin":"\\\\G","end":"(?=}})","name":"source.ts.embedded.html.vue","patterns":[{"include":"source.ts#expression"}]}]}]}},"scopeName":"text.html.vue","embeddedLangs":["css","javascript","typescript","json","html","html-derivative","markdown-vue","vue-directives","vue-interpolations","vue-sfc-style-variable-injection"],"embeddedLangsLazy":["markdown","pug","stylus","sass","scss","less","jsx","tsx","coffee","jsonc","json5","yaml","toml","graphql"]}`)),b=[...t,...e,...s,...a,...n,...i,...u,...m,...r,...c,g];export{b as default};
|