@obvi/blueprint 1.0.9
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/LICENSE +21 -0
- package/README.md +443 -0
- package/THIRD_PARTY_NOTICES.md +27 -0
- package/dist/blueprint.css +2689 -0
- package/dist/blueprint.js +416 -0
- package/dist/code-highlighting/blueprint-code.css +406 -0
- package/dist/code-highlighting/blueprint-code.js +19 -0
- package/package.json +52 -0
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
/* =====================================================================
|
|
2
|
+
blueprint-code.css — a monochrome syntax-highlighting theme
|
|
3
|
+
---------------------------------------------------------------------
|
|
4
|
+
A portable, build-step-free CSS theme for the Blueprint design system.
|
|
5
|
+
Code is TEXT, so it reads in the same neutral ink as the rest of the
|
|
6
|
+
document — blue is reserved for illustrations. It styles Prism's stable
|
|
7
|
+
token classes (.token.*) using ONLY a neutral grayscale ramp. Tokens are
|
|
8
|
+
differentiated by LUMINANCE, WEIGHT, and ITALIC — never by hue.
|
|
9
|
+
|
|
10
|
+
Drop-in contract (mirrors blueprint.css):
|
|
11
|
+
• One CSS file, no build step. Load Prism (runtime highlighter) +
|
|
12
|
+
this theme; token colors are pure CSS.
|
|
13
|
+
• Composes with blueprint.css: inherits --bp-mono (then legacy --mono)
|
|
14
|
+
/ --text / surface tokens when present, and falls back to
|
|
15
|
+
self-contained values so this file is also legible stand-alone.
|
|
16
|
+
• Theme-aware: light by default, dark via [data-obvious-theme="dark"].
|
|
17
|
+
• Zero specificity: every selector is wrapped in :where(), so the
|
|
18
|
+
theme never fights authored component classes (the same
|
|
19
|
+
specificity contract blueprint.css commits to).
|
|
20
|
+
• Graceful degradation: only ADDS color/weight on top of the
|
|
21
|
+
classless base's pre/code styling. With JS absent (no .token
|
|
22
|
+
spans, no language- class) code still renders as legible mono.
|
|
23
|
+
|
|
24
|
+
Token → role mapping (see README for the full table):
|
|
25
|
+
comment faint blue, italic, de-emphasized — reads last
|
|
26
|
+
punctuation muted blue-grey — structural, recedes
|
|
27
|
+
operator muted, slightly stronger than punctuation
|
|
28
|
+
variable base code ink — the neutral baseline
|
|
29
|
+
string mid blue — calm, distinct from identifiers
|
|
30
|
+
number bright chromatic blue stop — literals pop
|
|
31
|
+
constant bright chromatic blue (shared with number)
|
|
32
|
+
function primary ink, medium weight — call sites read
|
|
33
|
+
class-name chromatic blue, medium weight — types read
|
|
34
|
+
keyword strongest ink, heaviest weight — reads FIRST
|
|
35
|
+
tag/attr markup structure, keyword-adjacent weights
|
|
36
|
+
deleted/inserted diff rows tinted by blue luminance + affordance
|
|
37
|
+
===================================================================== */
|
|
38
|
+
|
|
39
|
+
/* Geist Mono (code face), mirroring blueprint.css. Kept here so this theme
|
|
40
|
+
stays a self-contained drop-in (the standalone demo loads only this
|
|
41
|
+
file). When composed with blueprint.css the identical @import is deduped
|
|
42
|
+
by the browser. @import must precede all rules below. */
|
|
43
|
+
@import url("https://fonts.googleapis.com/css2?family=Geist+Mono:ital,wght@0,100..900;1,100..900&display=swap");
|
|
44
|
+
|
|
45
|
+
/* ---------------------------------------------------------------------
|
|
46
|
+
1. Syntax token ramp
|
|
47
|
+
---------------------------------------------------------------------
|
|
48
|
+
A dedicated set of NEUTRAL grayscale syntax stops (chroma 0), tuned for
|
|
49
|
+
legibility on the code surface in each theme. All distinction comes from
|
|
50
|
+
LUMINANCE + WEIGHT + ITALIC — never from hue. Every token role clears
|
|
51
|
+
WCAG AA (≥ 4.5:1) against the surface in both themes.
|
|
52
|
+
|
|
53
|
+
Light theme: surface is near-white, so meaningful tokens are DARK gray;
|
|
54
|
+
importance increases by getting darker + heavier.
|
|
55
|
+
------------------------------------------------------------------- */
|
|
56
|
+
:where(:root) {
|
|
57
|
+
/* code-block container */
|
|
58
|
+
--bpc-surface: oklch(0.975 0 0);
|
|
59
|
+
--bpc-surface-2: oklch(0.95 0 0); /* gutter / header strip */
|
|
60
|
+
--bpc-border: oklch(0.9 0 0);
|
|
61
|
+
--bpc-line-no: oklch(0.6 0 0); /* line numbers, recede */
|
|
62
|
+
--bpc-selection: oklch(0.85 0 0);
|
|
63
|
+
|
|
64
|
+
/* syntax stops — ordered by reading priority (darkest + heaviest = first) */
|
|
65
|
+
--bpc-keyword: oklch(0.32 0 0); /* strongest ink, heaviest */
|
|
66
|
+
--bpc-number: oklch(0.34 0 0); /* literals pop via darkness */
|
|
67
|
+
--bpc-class: oklch(0.36 0 0); /* types, medium weight */
|
|
68
|
+
--bpc-function: oklch(0.4 0 0); /* call sites, medium weight */
|
|
69
|
+
--bpc-base: oklch(0.4 0 0); /* identifiers / plain code */
|
|
70
|
+
--bpc-attr: oklch(0.42 0 0); /* markup attribute names */
|
|
71
|
+
--bpc-string: oklch(0.45 0 0); /* calm, distinct */
|
|
72
|
+
--bpc-operator: oklch(0.48 0 0); /* muted, > punctuation */
|
|
73
|
+
--bpc-punctuation: oklch(0.5 0 0); /* structural, recedes */
|
|
74
|
+
--bpc-comment: oklch(0.52 0 0); /* italic, reads last */
|
|
75
|
+
|
|
76
|
+
/* diff affordance tints (row backgrounds) */
|
|
77
|
+
--bpc-inserted-bg: oklch(0.94 0 0);
|
|
78
|
+
--bpc-inserted-ink: oklch(0.34 0 0);
|
|
79
|
+
--bpc-deleted-bg: oklch(0.975 0 0);
|
|
80
|
+
--bpc-deleted-ink: oklch(0.55 0 0);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* Dark theme: surface is dark, so meaningful tokens are LIGHT gray;
|
|
84
|
+
importance increases by getting brighter + heavier. */
|
|
85
|
+
:where([data-obvious-theme="dark"]) {
|
|
86
|
+
--bpc-surface: oklch(0.21 0 0);
|
|
87
|
+
--bpc-surface-2: oklch(0.25 0 0);
|
|
88
|
+
--bpc-border: oklch(0.33 0 0);
|
|
89
|
+
--bpc-line-no: oklch(0.5 0 0);
|
|
90
|
+
--bpc-selection: oklch(0.4 0 0);
|
|
91
|
+
|
|
92
|
+
--bpc-keyword: oklch(0.95 0 0);
|
|
93
|
+
--bpc-number: oklch(0.9 0 0);
|
|
94
|
+
--bpc-class: oklch(0.87 0 0);
|
|
95
|
+
--bpc-function: oklch(0.84 0 0);
|
|
96
|
+
--bpc-base: oklch(0.84 0 0);
|
|
97
|
+
--bpc-attr: oklch(0.82 0 0);
|
|
98
|
+
--bpc-string: oklch(0.78 0 0);
|
|
99
|
+
--bpc-operator: oklch(0.74 0 0);
|
|
100
|
+
--bpc-punctuation: oklch(0.7 0 0);
|
|
101
|
+
--bpc-comment: oklch(0.68 0 0);
|
|
102
|
+
|
|
103
|
+
--bpc-inserted-bg: oklch(0.3 0 0);
|
|
104
|
+
--bpc-inserted-ink: oklch(0.9 0 0);
|
|
105
|
+
--bpc-deleted-bg: oklch(0.26 0 0);
|
|
106
|
+
--bpc-deleted-ink: oklch(0.62 0 0);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* ---------------------------------------------------------------------
|
|
110
|
+
2. Code-block container
|
|
111
|
+
---------------------------------------------------------------------
|
|
112
|
+
Composes with the classless base's pre/code. Scoped to
|
|
113
|
+
pre[class*="language-"] / code[class*="language-"] so it only dresses
|
|
114
|
+
blocks meant for highlighting and never touches inline <code> or
|
|
115
|
+
un-hinted <pre>. Zero specificity via :where().
|
|
116
|
+
------------------------------------------------------------------- */
|
|
117
|
+
:where(pre[class*="language-"]) {
|
|
118
|
+
position: relative; /* anchor for the straight accent bar */
|
|
119
|
+
margin: 1.5em 0;
|
|
120
|
+
padding: 1rem 1.15rem;
|
|
121
|
+
overflow: auto; /* horizontal scroll on long lines stays inside block */
|
|
122
|
+
background: var(--bpc-surface);
|
|
123
|
+
color: var(--bpc-base);
|
|
124
|
+
border: 1px solid var(--bpc-border);
|
|
125
|
+
border-radius: var(--bp-radius-4, 4px);
|
|
126
|
+
font-family: var(
|
|
127
|
+
--bp-mono,
|
|
128
|
+
var(
|
|
129
|
+
--mono,
|
|
130
|
+
"Geist Mono",
|
|
131
|
+
ui-monospace,
|
|
132
|
+
"SF Mono",
|
|
133
|
+
Menlo,
|
|
134
|
+
Consolas,
|
|
135
|
+
monospace
|
|
136
|
+
)
|
|
137
|
+
);
|
|
138
|
+
font-size: var(--bp-text-code, 12.5px);
|
|
139
|
+
line-height: var(--bp-lh-code, 1.6);
|
|
140
|
+
tab-size: 2;
|
|
141
|
+
-moz-tab-size: 2;
|
|
142
|
+
text-align: left;
|
|
143
|
+
white-space: pre;
|
|
144
|
+
word-spacing: normal;
|
|
145
|
+
word-break: normal;
|
|
146
|
+
hyphens: none;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* Left accent: a straight bar drawn as a pseudo-element so it never picks
|
|
150
|
+
up the container's corner radius (no curved ends like a border-left). */
|
|
151
|
+
:where(pre[class*="language-"])::before {
|
|
152
|
+
content: "";
|
|
153
|
+
position: absolute;
|
|
154
|
+
top: 0;
|
|
155
|
+
bottom: 0;
|
|
156
|
+
left: 0;
|
|
157
|
+
width: 4px;
|
|
158
|
+
background: var(--bp-ink, var(--ink, oklch(0.4 0 0)));
|
|
159
|
+
pointer-events: none;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
:where(code[class*="language-"]) {
|
|
163
|
+
font-family: inherit;
|
|
164
|
+
font-size: inherit;
|
|
165
|
+
color: inherit;
|
|
166
|
+
background: none; /* override base .prose code chip inside blocks */
|
|
167
|
+
padding: 0;
|
|
168
|
+
white-space: inherit;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/* Inline <code class="language-xxx"> keeps the base's inline chip but
|
|
172
|
+
adopts blue token colors. */
|
|
173
|
+
:where(:not(pre) > code[class*="language-"]) {
|
|
174
|
+
padding: 0.12em 0.4em;
|
|
175
|
+
border-radius: var(--bp-radius-2, 2px);
|
|
176
|
+
background: var(--bpc-surface-2);
|
|
177
|
+
color: var(--bpc-base);
|
|
178
|
+
white-space: normal;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
:where(pre[class*="language-"])::selection,
|
|
182
|
+
:where(pre[class*="language-"]) ::selection,
|
|
183
|
+
:where(code[class*="language-"])::selection,
|
|
184
|
+
:where(code[class*="language-"]) ::selection {
|
|
185
|
+
background: var(--bpc-selection);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/* ---------------------------------------------------------------------
|
|
189
|
+
3. Token → color mapping (blue-only: luminance + weight + italic)
|
|
190
|
+
------------------------------------------------------------------- */
|
|
191
|
+
:where(.token.comment),
|
|
192
|
+
:where(.token.prolog),
|
|
193
|
+
:where(.token.cdata) {
|
|
194
|
+
color: var(--bpc-comment);
|
|
195
|
+
font-style: italic;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
:where(.token.doctype),
|
|
199
|
+
:where(.token.punctuation) {
|
|
200
|
+
color: var(--bpc-punctuation);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
:where(.token.operator),
|
|
204
|
+
:where(.token.entity),
|
|
205
|
+
:where(.token.url),
|
|
206
|
+
:where(.token.atrule),
|
|
207
|
+
:where(.token.attr-value) {
|
|
208
|
+
color: var(--bpc-operator);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
:where(.token.string),
|
|
212
|
+
:where(.token.char),
|
|
213
|
+
:where(.token.regex),
|
|
214
|
+
:where(.token.attr-value .token.string) {
|
|
215
|
+
color: var(--bpc-string);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
:where(.token.number),
|
|
219
|
+
:where(.token.boolean),
|
|
220
|
+
:where(.token.constant),
|
|
221
|
+
:where(.token.symbol) {
|
|
222
|
+
color: var(--bpc-number);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
:where(.token.property),
|
|
226
|
+
:where(.token.variable) {
|
|
227
|
+
color: var(--bpc-base);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
:where(.token.function),
|
|
231
|
+
:where(.token.method),
|
|
232
|
+
:where(.token.function-variable) {
|
|
233
|
+
color: var(--bpc-function);
|
|
234
|
+
font-weight: 500;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
:where(.token.class-name),
|
|
238
|
+
:where(.token.maybe-class-name),
|
|
239
|
+
:where(.token.namespace),
|
|
240
|
+
:where(.token.builtin) {
|
|
241
|
+
color: var(--bpc-class);
|
|
242
|
+
font-weight: 500;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
:where(.token.keyword) {
|
|
246
|
+
color: var(--bpc-keyword);
|
|
247
|
+
font-weight: 600;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* markup (HTML/XML) — structure reads via weight, still blue-only */
|
|
251
|
+
:where(.token.tag),
|
|
252
|
+
:where(.token.tag .token.punctuation) {
|
|
253
|
+
color: var(--bpc-keyword);
|
|
254
|
+
}
|
|
255
|
+
:where(.token.tag .token.tag) {
|
|
256
|
+
font-weight: 600;
|
|
257
|
+
}
|
|
258
|
+
:where(.token.attr-name) {
|
|
259
|
+
color: var(--bpc-attr);
|
|
260
|
+
}
|
|
261
|
+
:where(.token.selector) {
|
|
262
|
+
color: var(--bpc-class);
|
|
263
|
+
font-weight: 500;
|
|
264
|
+
}
|
|
265
|
+
:where(.token.important) {
|
|
266
|
+
color: var(--bpc-keyword);
|
|
267
|
+
font-weight: 600;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
:where(.token.italic) {
|
|
271
|
+
font-style: italic;
|
|
272
|
+
}
|
|
273
|
+
:where(.token.bold) {
|
|
274
|
+
font-weight: 600;
|
|
275
|
+
}
|
|
276
|
+
:where(.token.namespace) {
|
|
277
|
+
opacity: 0.8;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/* ---------------------------------------------------------------------
|
|
281
|
+
4. Diff blocks (language-diff)
|
|
282
|
+
---------------------------------------------------------------------
|
|
283
|
+
Blue-only: rows are differentiated by luminance/tint, not red/green.
|
|
284
|
+
The +/- gutter glyph carries the semantic, the tint reinforces it.
|
|
285
|
+
------------------------------------------------------------------- */
|
|
286
|
+
:where(.token.inserted) {
|
|
287
|
+
color: var(--bpc-inserted-ink);
|
|
288
|
+
}
|
|
289
|
+
:where(.token.inserted-sign) {
|
|
290
|
+
background: var(--bpc-inserted-bg);
|
|
291
|
+
display: block;
|
|
292
|
+
width: 100%;
|
|
293
|
+
}
|
|
294
|
+
:where(.token.deleted) {
|
|
295
|
+
color: var(--bpc-deleted-ink);
|
|
296
|
+
text-decoration: none;
|
|
297
|
+
}
|
|
298
|
+
:where(.token.deleted-sign) {
|
|
299
|
+
background: var(--bpc-deleted-bg);
|
|
300
|
+
display: block;
|
|
301
|
+
width: 100%;
|
|
302
|
+
}
|
|
303
|
+
:where(.token.coord) {
|
|
304
|
+
color: var(--bpc-comment);
|
|
305
|
+
font-style: italic;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/* ---------------------------------------------------------------------
|
|
309
|
+
5. Line-numbers plugin (optional affordance)
|
|
310
|
+
------------------------------------------------------------------- */
|
|
311
|
+
:where(pre[class*="language-"].line-numbers) {
|
|
312
|
+
position: relative;
|
|
313
|
+
padding-left: 3.2em;
|
|
314
|
+
counter-reset: linenumber;
|
|
315
|
+
}
|
|
316
|
+
:where(pre[class*="language-"].line-numbers > code) {
|
|
317
|
+
position: relative;
|
|
318
|
+
}
|
|
319
|
+
:where(.line-numbers .line-numbers-rows) {
|
|
320
|
+
position: absolute;
|
|
321
|
+
top: 0;
|
|
322
|
+
font-size: 100%;
|
|
323
|
+
left: -3.2em;
|
|
324
|
+
width: 2.6em;
|
|
325
|
+
letter-spacing: -1px;
|
|
326
|
+
border-right: 1px solid var(--bpc-border);
|
|
327
|
+
user-select: none;
|
|
328
|
+
}
|
|
329
|
+
:where(.line-numbers-rows > span) {
|
|
330
|
+
display: block;
|
|
331
|
+
counter-increment: linenumber;
|
|
332
|
+
}
|
|
333
|
+
:where(.line-numbers-rows > span)::before {
|
|
334
|
+
content: counter(linenumber);
|
|
335
|
+
color: var(--bpc-line-no);
|
|
336
|
+
display: block;
|
|
337
|
+
padding-right: 0.8em;
|
|
338
|
+
text-align: right;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/* ---------------------------------------------------------------------
|
|
342
|
+
6. Filename / caption affordance
|
|
343
|
+
---------------------------------------------------------------------
|
|
344
|
+
When a code block is wrapped in <figure class="bpc-code"> with a
|
|
345
|
+
<figcaption>, the caption renders as a monospace filename strip atop
|
|
346
|
+
the block. Purely additive — no JS, degrades to a plain caption.
|
|
347
|
+
------------------------------------------------------------------- */
|
|
348
|
+
:where(figure.bpc-code) {
|
|
349
|
+
margin: 1.5em 0;
|
|
350
|
+
}
|
|
351
|
+
:where(figure.bpc-code > figcaption) {
|
|
352
|
+
font-family: var(
|
|
353
|
+
--bp-mono,
|
|
354
|
+
var(--mono, "Geist Mono", ui-monospace, Menlo, Consolas, monospace)
|
|
355
|
+
);
|
|
356
|
+
font-size: var(--bp-label-lg, 11px);
|
|
357
|
+
letter-spacing: 0.08em;
|
|
358
|
+
text-transform: none;
|
|
359
|
+
color: var(--bp-text-secondary, var(--text-secondary, oklch(0.5 0 0)));
|
|
360
|
+
background: var(--bpc-surface-2);
|
|
361
|
+
border: 1px solid var(--bpc-border);
|
|
362
|
+
border-bottom: none;
|
|
363
|
+
border-radius: var(--bp-radius-4, 4px) var(--bp-radius-4, 4px) 0 0;
|
|
364
|
+
padding: 0.45rem 0.8rem;
|
|
365
|
+
}
|
|
366
|
+
:where(figure.bpc-code > figcaption + pre[class*="language-"]),
|
|
367
|
+
:where(figure.bpc-code > pre[class*="language-"]) {
|
|
368
|
+
margin: 0;
|
|
369
|
+
border-radius: 0 0 var(--bp-radius-4, 4px) var(--bp-radius-4, 4px);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/* ---------------------------------------------------------------------
|
|
373
|
+
7. Reusable source disclosure
|
|
374
|
+
---------------------------------------------------------------------
|
|
375
|
+
The structural .bp-source component lives in blueprint.css. These
|
|
376
|
+
companion overrides make a highlighted block sit flush beneath the
|
|
377
|
+
toolbar even though the general highlighted-block treatment has margin
|
|
378
|
+
and rounded corners. Copy behavior lives in blueprint-code.js.
|
|
379
|
+
------------------------------------------------------------------- */
|
|
380
|
+
:where(.bp-source > pre[class*="language-"]) {
|
|
381
|
+
max-height: 360px;
|
|
382
|
+
margin: 0;
|
|
383
|
+
border: 0;
|
|
384
|
+
border-top: 1px solid var(--bpc-border);
|
|
385
|
+
border-radius: var(--bp-radius-0, 0);
|
|
386
|
+
}
|
|
387
|
+
:where(.bp-source > pre[class*="language-"])::before {
|
|
388
|
+
display: none; /* flush block, no accent bar */
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/* ---------------------------------------------------------------------
|
|
392
|
+
8. Code citation tooltip (<bp-cite>)
|
|
393
|
+
---------------------------------------------------------------------
|
|
394
|
+
The card shell + trigger live in blueprint.css. These overrides dress
|
|
395
|
+
the highlighted code block flush inside the popover card: no outer
|
|
396
|
+
margin/border, rounded only on the lower corners under the header.
|
|
397
|
+
------------------------------------------------------------------- */
|
|
398
|
+
:where(.bp-cite-pop pre[class*="language-"]) {
|
|
399
|
+
max-height: 320px;
|
|
400
|
+
margin: 0;
|
|
401
|
+
border: 0;
|
|
402
|
+
border-radius: 0 0 var(--bp-radius-6, 6px) var(--bp-radius-6, 6px);
|
|
403
|
+
}
|
|
404
|
+
:where(.bp-cite-pop pre[class*="language-"])::before {
|
|
405
|
+
display: none; /* flush inside popover, no accent bar */
|
|
406
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
var we=Object.create;var Q=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var Ee=Object.getOwnPropertyNames;var xe=Object.getPrototypeOf,Fe=Object.prototype.hasOwnProperty;var F=(n,e)=>()=>{try{return e||n((e={exports:{}}).exports,e),e.exports}catch(o){throw e=0,o}};var ke=(n,e,o,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Ee(e))!Fe.call(n,a)&&a!==o&&Q(n,a,{get:()=>e[a],enumerable:!(c=Ae(e,a))||c.enumerable});return n};var k=(n,e,o)=>(o=n!=null?we(xe(n)):{},ke(e||!n||!n.__esModule?Q(o,"default",{value:n,enumerable:!0}):o,n));var te=F((Ie,M)=>{var Pe=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};var ee=(function(n){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,o=0,c={},a={manual:n.Prism&&n.Prism.manual,disableWorkerMessageHandler:n.Prism&&n.Prism.disableWorkerMessageHandler,util:{encode:function r(t){return t instanceof m?new m(t.type,r(t.content),t.alias):Array.isArray(t)?t.map(r):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(r){return Object.prototype.toString.call(r).slice(8,-1)},objId:function(r){return r.__id||Object.defineProperty(r,"__id",{value:++o}),r.__id},clone:function r(t,i){i=i||{};var s,l;switch(a.util.type(t)){case"Object":if(l=a.util.objId(t),i[l])return i[l];s={},i[l]=s;for(var d in t)t.hasOwnProperty(d)&&(s[d]=r(t[d],i));return s;case"Array":return l=a.util.objId(t),i[l]?i[l]:(s=[],i[l]=s,t.forEach(function(v,p){s[p]=r(v,i)}),s);default:return t}},getLanguage:function(r){for(;r;){var t=e.exec(r.className);if(t)return t[1].toLowerCase();r=r.parentElement}return"none"},setLanguage:function(r,t){r.className=r.className.replace(RegExp(e,"gi"),""),r.classList.add("language-"+t)},currentScript:function(){if(typeof document>"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT")return document.currentScript;try{throw new Error}catch(s){var r=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(s.stack)||[])[1];if(r){var t=document.getElementsByTagName("script");for(var i in t)if(t[i].src==r)return t[i]}return null}},isActive:function(r,t,i){for(var s="no-"+t;r;){var l=r.classList;if(l.contains(t))return!0;if(l.contains(s))return!1;r=r.parentElement}return!!i}},languages:{plain:c,plaintext:c,text:c,txt:c,extend:function(r,t){var i=a.util.clone(a.languages[r]);for(var s in t)i[s]=t[s];return i},insertBefore:function(r,t,i,s){s=s||a.languages;var l=s[r],d={};for(var v in l)if(l.hasOwnProperty(v)){if(v==t)for(var p in i)i.hasOwnProperty(p)&&(d[p]=i[p]);i.hasOwnProperty(v)||(d[v]=l[v])}var w=s[r];return s[r]=d,a.languages.DFS(a.languages,function(A,T){T===w&&A!=r&&(this[A]=d)}),d},DFS:function r(t,i,s,l){l=l||{};var d=a.util.objId;for(var v in t)if(t.hasOwnProperty(v)){i.call(t,v,t[v],s||v);var p=t[v],w=a.util.type(p);w==="Object"&&!l[d(p)]?(l[d(p)]=!0,r(p,i,null,l)):w==="Array"&&!l[d(p)]&&(l[d(p)]=!0,r(p,i,v,l))}}},plugins:{},highlightAll:function(r,t){a.highlightAllUnder(document,r,t)},highlightAllUnder:function(r,t,i){var s={callback:i,container:r,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};a.hooks.run("before-highlightall",s),s.elements=Array.prototype.slice.apply(s.container.querySelectorAll(s.selector)),a.hooks.run("before-all-elements-highlight",s);for(var l=0,d;d=s.elements[l++];)a.highlightElement(d,t===!0,s.callback)},highlightElement:function(r,t,i){var s=a.util.getLanguage(r),l=a.languages[s];a.util.setLanguage(r,s);var d=r.parentElement;d&&d.nodeName.toLowerCase()==="pre"&&a.util.setLanguage(d,s);var v=r.textContent,p={element:r,language:s,grammar:l,code:v};function w(T){p.highlightedCode=T,a.hooks.run("before-insert",p),p.element.innerHTML=p.highlightedCode,a.hooks.run("after-highlight",p),a.hooks.run("complete",p),i&&i.call(p.element)}if(a.hooks.run("before-sanity-check",p),d=p.element.parentElement,d&&d.nodeName.toLowerCase()==="pre"&&!d.hasAttribute("tabindex")&&d.setAttribute("tabindex","0"),!p.code){a.hooks.run("complete",p),i&&i.call(p.element);return}if(a.hooks.run("before-highlight",p),!p.grammar){w(a.util.encode(p.code));return}if(t&&n.Worker){var A=new Worker(a.filename);A.onmessage=function(T){w(T.data)},A.postMessage(JSON.stringify({language:p.language,code:p.code,immediateClose:!0}))}else w(a.highlight(p.code,p.grammar,p.language))},highlight:function(r,t,i){var s={code:r,grammar:t,language:i};if(a.hooks.run("before-tokenize",s),!s.grammar)throw new Error('The language "'+s.language+'" has no grammar.');return s.tokens=a.tokenize(s.code,s.grammar),a.hooks.run("after-tokenize",s),m.stringify(a.util.encode(s.tokens),s.language)},tokenize:function(r,t){var i=t.rest;if(i){for(var s in i)t[s]=i[s];delete t.rest}var l=new g;return f(l,l.head,r),h(r,l,t,l.head,0),b(l)},hooks:{all:{},add:function(r,t){var i=a.hooks.all;i[r]=i[r]||[],i[r].push(t)},run:function(r,t){var i=a.hooks.all[r];if(!(!i||!i.length))for(var s=0,l;l=i[s++];)l(t)}},Token:m};n.Prism=a;function m(r,t,i,s){this.type=r,this.content=t,this.alias=i,this.length=(s||"").length|0}m.stringify=function r(t,i){if(typeof t=="string")return t;if(Array.isArray(t)){var s="";return t.forEach(function(w){s+=r(w,i)}),s}var l={type:t.type,content:r(t.content,i),tag:"span",classes:["token",t.type],attributes:{},language:i},d=t.alias;d&&(Array.isArray(d)?Array.prototype.push.apply(l.classes,d):l.classes.push(d)),a.hooks.run("wrap",l);var v="";for(var p in l.attributes)v+=" "+p+'="'+(l.attributes[p]||"").replace(/"/g,""")+'"';return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+v+">"+l.content+"</"+l.tag+">"};function u(r,t,i,s){r.lastIndex=t;var l=r.exec(i);if(l&&s&&l[1]){var d=l[1].length;l.index+=d,l[0]=l[0].slice(d)}return l}function h(r,t,i,s,l,d){for(var v in i)if(!(!i.hasOwnProperty(v)||!i[v])){var p=i[v];p=Array.isArray(p)?p:[p];for(var w=0;w<p.length;++w){if(d&&d.cause==v+","+w)return;var A=p[w],T=A.inside,Y=!!A.lookbehind,K=!!A.greedy,be=A.alias;if(K&&!A.pattern.global){var ve=A.pattern.toString().match(/[imsuy]*$/)[0];A.pattern=RegExp(A.pattern.source,ve+"g")}for(var V=A.pattern||A,E=s.next,P=l;E!==t.tail&&!(d&&P>=d.reach);P+=E.value.length,E=E.next){var $=E.value;if(t.length>r.length)return;if(!($ instanceof m)){var O=1,x;if(K){if(x=u(V,P,r,Y),!x||x.index>=r.length)break;var R=x.index,ye=x.index+x[0].length,C=P;for(C+=E.value.length;R>=C;)E=E.next,C+=E.value.length;if(C-=E.value.length,P=C,E.value instanceof m)continue;for(var I=E;I!==t.tail&&(C<ye||typeof I.value=="string");I=I.next)O++,C+=I.value.length;O--,$=r.slice(P,C),x.index-=P}else if(x=u(V,0,$,Y),!x)continue;var R=x.index,D=x[0],G=$.slice(0,R),J=$.slice(R+D.length),B=P+$.length;d&&B>d.reach&&(d.reach=B);var H=E.prev;G&&(H=f(t,H,G),P+=G.length),y(t,H,O);var Se=new m(v,T?a.tokenize(D,T):D,be,D);if(E=f(t,H,Se),J&&f(t,E,J),O>1){var j={cause:v+","+w,reach:B};h(r,t,i,E.prev,P,j),d&&j.reach>d.reach&&(d.reach=j.reach)}}}}}}function g(){var r={value:null,prev:null,next:null},t={value:null,prev:r,next:null};r.next=t,this.head=r,this.tail=t,this.length=0}function f(r,t,i){var s=t.next,l={value:i,prev:t,next:s};return t.next=l,s.prev=l,r.length++,l}function y(r,t,i){for(var s=t.next,l=0;l<i&&s!==r.tail;l++)s=s.next;t.next=s,s.prev=t,r.length-=l}function b(r){for(var t=[],i=r.head.next;i!==r.tail;)t.push(i.value),i=i.next;return t}if(!n.document)return n.addEventListener&&(a.disableWorkerMessageHandler||n.addEventListener("message",function(r){var t=JSON.parse(r.data),i=t.language,s=t.code,l=t.immediateClose;n.postMessage(a.highlight(s,a.languages[i],i)),l&&n.close()},!1)),a;var S=a.util.currentScript();S&&(a.filename=S.src,S.hasAttribute("data-manual")&&(a.manual=!0));function _(){a.manual||a.highlightAll()}if(!a.manual){var N=document.readyState;N==="loading"||N==="interactive"&&S&&S.defer?document.addEventListener("DOMContentLoaded",_):window.requestAnimationFrame?window.requestAnimationFrame(_):window.setTimeout(_,16)}return a})(Pe);typeof M<"u"&&M.exports&&(M.exports=ee);typeof global<"u"&&(global.Prism=ee)});var ne=F(()=>{Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity;Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup;Prism.hooks.add("wrap",function(n){n.type==="entity"&&(n.attributes.title=n.content.replace(/&/,"&"))});Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,o){var c={};c["language-"+o]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[o]},c.cdata=/^<!\[CDATA\[|\]\]>$/i;var a={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:c}};a["language-"+o]={pattern:/[\s\S]+/,inside:Prism.languages[o]};var m={};m[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:a},Prism.languages.insertBefore("markup","cdata",m)}});Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(n,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+n+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}});Prism.languages.html=Prism.languages.markup;Prism.languages.mathml=Prism.languages.markup;Prism.languages.svg=Prism.languages.markup;Prism.languages.xml=Prism.languages.extend("markup",{});Prism.languages.ssml=Prism.languages.xml;Prism.languages.atom=Prism.languages.xml;Prism.languages.rss=Prism.languages.xml});var ae=F(()=>{(function(n){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;n.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+e.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},n.languages.css.atrule.inside.rest=n.languages.css;var o=n.languages.markup;o&&(o.tag.addInlined("style","css"),o.tag.addAttribute("style","css"))})(Prism)});var re=F(()=>{Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}});var ie=F(()=>{Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));Prism.languages.js=Prism.languages.javascript});var se=F(()=>{(function(n){n.languages.typescript=n.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),n.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete n.languages.typescript.parameter,delete n.languages.typescript["literal-property"];var e=n.languages.extend("typescript",{});delete e["class-name"],n.languages.typescript["class-name"].inside=e,n.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e}}}}),n.languages.ts=n.languages.typescript})(Prism)});var oe=F(()=>{Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}};Prism.languages.webmanifest=Prism.languages.json});var le=F(()=>{(function(n){var e="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",o={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},c={bash:o,environment:{pattern:RegExp("\\$"+e),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+e),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};n.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+e),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:c},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:o}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:c},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:c.entity}}],environment:{pattern:RegExp("\\$?"+e),alias:"constant"},variable:c.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},o.inside=n.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],m=c.variable[1].inside,u=0;u<a.length;u++)m[a[u]]=n.languages.bash[a[u]];n.languages.sh=n.languages.bash,n.languages.shell=n.languages.bash})(Prism)});var ue=F(()=>{Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern://,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/};Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python;Prism.languages.py=Prism.languages.python});var ce=F(()=>{(function(n){n.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var e={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(e).forEach(function(o){var c=e[o],a=[];/^\w+$/.test(o)||a.push(/\w+/.exec(o)[0]),o==="diff"&&a.push("bold"),n.languages.diff[o]={pattern:RegExp("^(?:["+c+`].*(?:\r
|
|
2
|
+
?|
|
|
3
|
+
|(?![\\s\\S])))+`,"m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(o)[0]}}}}),Object.defineProperty(n.languages.diff,"PREFIXES",{value:e})})(Prism)});var de=F(()=>{(function(){if(typeof Prism>"u"||typeof document>"u")return;var n="line-numbers",e=/\n(?!$)/g,o=Prism.plugins.lineNumbers={getLine:function(u,h){if(!(u.tagName!=="PRE"||!u.classList.contains(n))){var g=u.querySelector(".line-numbers-rows");if(g){var f=parseInt(u.getAttribute("data-start"),10)||1,y=f+(g.children.length-1);h<f&&(h=f),h>y&&(h=y);var b=h-f;return g.children[b]}}},resize:function(u){c([u])},assumeViewportIndependence:!0};function c(u){if(u=u.filter(function(g){var f=a(g),y=f["white-space"];return y==="pre-wrap"||y==="pre-line"}),u.length!=0){var h=u.map(function(g){var f=g.querySelector("code"),y=g.querySelector(".line-numbers-rows");if(!(!f||!y)){var b=g.querySelector(".line-numbers-sizer"),S=f.textContent.split(e);b||(b=document.createElement("span"),b.className="line-numbers-sizer",f.appendChild(b)),b.innerHTML="0",b.style.display="block";var _=b.getBoundingClientRect().height;return b.innerHTML="",{element:g,lines:S,lineHeights:[],oneLinerHeight:_,sizer:b}}}).filter(Boolean);h.forEach(function(g){var f=g.sizer,y=g.lines,b=g.lineHeights,S=g.oneLinerHeight;b[y.length-1]=void 0,y.forEach(function(_,N){if(_&&_.length>1){var r=f.appendChild(document.createElement("span"));r.style.display="block",r.textContent=_}else b[N]=S})}),h.forEach(function(g){for(var f=g.sizer,y=g.lineHeights,b=0,S=0;S<y.length;S++)y[S]===void 0&&(y[S]=f.children[b++].getBoundingClientRect().height)}),h.forEach(function(g){var f=g.sizer,y=g.element.querySelector(".line-numbers-rows");f.style.display="none",f.innerHTML="",g.lineHeights.forEach(function(b,S){y.children[S].style.height=b+"px"})})}}function a(u){return u?window.getComputedStyle?getComputedStyle(u):u.currentStyle||null:null}var m=void 0;window.addEventListener("resize",function(){o.assumeViewportIndependence&&m===window.innerWidth||(m=window.innerWidth,c(Array.prototype.slice.call(document.querySelectorAll("pre."+n))))}),Prism.hooks.add("complete",function(u){if(u.code){var h=u.element,g=h.parentNode;if(!(!g||!/pre/i.test(g.nodeName))&&!h.querySelector(".line-numbers-rows")&&Prism.util.isActive(h,n)){h.classList.remove(n),g.classList.add(n);var f=u.code.match(e),y=f?f.length+1:1,b,S=new Array(y+1).join("<span></span>");b=document.createElement("span"),b.setAttribute("aria-hidden","true"),b.className="line-numbers-rows",b.innerHTML=S,g.hasAttribute("data-start")&&(g.style.counterReset="linenumber "+(parseInt(g.getAttribute("data-start"),10)-1)),u.element.appendChild(b),c([g]),Prism.hooks.run("line-numbers",u)}}}),Prism.hooks.add("line-numbers",function(u){u.plugins=u.plugins||{},u.plugins.lineNumbers=!0})})()});var z=k(te(),1);globalThis.Prism=z.default;z.default.manual=!0;await Promise.resolve().then(()=>k(ne(),1));await Promise.resolve().then(()=>k(ae(),1));await Promise.resolve().then(()=>k(re(),1));await Promise.resolve().then(()=>k(ie(),1));await Promise.resolve().then(()=>k(se(),1));await Promise.resolve().then(()=>k(oe(),1));await Promise.resolve().then(()=>k(le(),1));await Promise.resolve().then(()=>k(ue(),1));await Promise.resolve().then(()=>k(ce(),1));await Promise.resolve().then(()=>k(de(),1));var X="bp-source",ge=".bp-source",U=new WeakMap,he=Object.freeze({bash:{grammar:"bash",label:"Bash"},css:{grammar:"css",label:"CSS"},diff:{grammar:"diff",label:"Diff"},html:{grammar:"markup",label:"HTML"},javascript:{grammar:"javascript",label:"JavaScript"},js:{grammar:"javascript",label:"JavaScript"},json:{grammar:"json",label:"JSON"},markup:{grammar:"markup",label:"HTML"},py:{grammar:"python",label:"Python"},python:{grammar:"python",label:"Python"},sh:{grammar:"bash",label:"Bash"},shell:{grammar:"bash",label:"Bash"},ts:{grammar:"typescript",label:"TypeScript"},typescript:{grammar:"typescript",label:"TypeScript"},xml:{grammar:"markup",label:"XML"}});function W(n){let e=n.replaceAll(`\r
|
|
4
|
+
`,`
|
|
5
|
+
`).split(`
|
|
6
|
+
`);e[0]?.trim()===""&&e.shift(),e.at(-1)?.trim()===""&&e.pop();let o=u=>u.match(/^[\t ]*/)?.[0].length??0,c=e.length>1&&e[0].trim()!==""&&o(e[0])===0,a=e.filter((u,h)=>u.trim()&&!(c&&h===0)).map(o),m=a.length?Math.min(...a):0;return e.map((u,h)=>c&&h===0?u:u.slice(m)).join(`
|
|
7
|
+
`)}function me(n){let e=n.trim().toLowerCase();return he[e]??{grammar:"plain",label:e||"Plain text"}}function fe(n,e){let o=globalThis.Prism,c=o?.languages?.[e],a=c&&e!=="plain";return n.className=`language-${a?e:"none"}`,n.parentElement.className=n.className,n.parentElement.tabIndex=0,a?(n.innerHTML=o.highlight(n.textContent,c,e),!0):!1}var L=class extends HTMLElement{static observedAttributes=["language","open"];static languages=Object.freeze(Object.keys(he));#a;#t;#e;#n;#r=!1;connectedCallback(){this.#r||(this.#n=W(this.textContent??""),this.#o(),this.#r=!0),this.#i()}attributeChangedCallback(){this.#r&&this.#i()}get language(){return this.getAttribute("language")||"text"}set language(e){this.setAttribute("language",e)}get sourceText(){return this.#n??W(this.textContent??"")}#o(){let e=document.createElement("details"),o=document.createElement("summary"),c=document.createElement("span"),a=document.createElement("div"),m=document.createElement("span"),u=document.createElement("button"),h=document.createElement("pre"),g=document.createElement("code");e.className=ge.slice(1),c.className="bp-source-name",c.textContent=this.getAttribute("summary")||"Source",a.className="bp-source-toolbar",m.className="bp-source-language",u.className="bp-source-copy",u.type="button",u.dataset.bpCopy="",u.setAttribute("aria-live","polite"),u.textContent="Copy",g.textContent=this.#n,a.append(m,u),o.append(c,a),h.append(g),e.append(o,h),this.replaceChildren(e),this.#a=e,this.#t=m,this.#e=g}#i(){let e=me(this.language);this.#a.open=this.hasAttribute("open"),this.#t.textContent=e.label,this.#e.textContent=this.#n;let o=fe(this.#e,e.grammar);this.dataset.bpHighlightState=o?"ready":"plain"}};customElements.get(X)||customElements.define(X,L);var pe="bp-cite",_e=0,Z=class extends HTMLElement{static observedAttributes=["language","loc","code","for"];#a=!1;#t;#e;#n;#r;#o;#i="";#s=!1;#l;#u;connectedCallback(){this.#a||(this.#d(),this.#m(),this.#a=!0),this.#p()}attributeChangedCallback(){this.#a&&(this.#d(),this.#p())}#d(){let e=this.querySelector(":scope > template"),o=this.getAttribute("for")?this.ownerDocument.getElementById(this.getAttribute("for")):null,c=this.getAttribute("code");if(c==null&&o&&(c=o.sourceText??o.textContent),c==null&&e&&(c=e.content.textContent),this.#i=W(c??""),!this.#a){let a="";for(let m of this.childNodes)m.nodeName.toLowerCase()!=="template"&&(a+=m.textContent??"");this.dataset.bpLabel=a.trim()||this.getAttribute("loc")||"source"}}get sourceText(){return this.#i}#m(){let e=`bp-cite-${_e+=1}`,o=document.createElement("button");o.type="button",o.className="bp-cite-trigger",o.textContent=this.dataset.bpLabel,o.setAttribute("aria-describedby",e),o.setAttribute("aria-expanded","false");let c=document.createElement("span");c.className="bp-cite-icon",c.setAttribute("aria-hidden","true"),o.append(c);let a=document.createElement("div");a.className="bp-cite-pop",a.id=e,a.setAttribute("role","tooltip"),a.showPopover&&a.setAttribute("popover","manual");let m=document.createElement("div");m.className="bp-cite-head";let u=document.createElement("span");u.className="bp-cite-loc";let h=document.createElement("span");h.className="bp-cite-lang",m.append(u,h);let g=document.createElement("pre"),f=document.createElement("code");g.append(f),a.append(m,g),this.replaceChildren(o,a),this.#t=o,this.#e=a,this.#n=f,this.#r=u,this.#o=h,this.#f()}#p(){let e=me(this.getAttribute("language")||"text");this.#o.textContent=e.label,this.#r.textContent=this.getAttribute("loc")||e.label,this.#t&&(this.#t.firstChild.textContent=this.dataset.bpLabel),this.#n.textContent=this.#i,fe(this.#n,e.grammar)}#f(){let e=()=>{clearTimeout(this.#l),this.#g()},o=()=>{clearTimeout(this.#l),this.#l=setTimeout(()=>this.#c(),140)};this.#t.addEventListener("pointerenter",e),this.#t.addEventListener("pointerleave",o),this.#t.addEventListener("focus",e),this.#t.addEventListener("blur",o),this.#e.addEventListener("pointerenter",()=>clearTimeout(this.#l)),this.#e.addEventListener("pointerleave",o),this.#t.addEventListener("click",()=>{this.#s=!this.#s,this.#s?this.#g():this.#c(!0)}),this.#u=()=>{this.#e.matches(".bp-cite-pop:popover-open, .bp-cite-pop.is-open")&&this.#h()},window.addEventListener("scroll",this.#u,{passive:!0}),window.addEventListener("resize",this.#u,{passive:!0}),document.addEventListener("keydown",c=>{c.key==="Escape"&&this.#b()&&(this.#s=!1,this.#c(!0),this.#t.focus())})}#b(){return this.#e.matches(".bp-cite-pop:popover-open, .bp-cite-pop.is-open")}#g(){if(this.#e.showPopover)try{this.#e.matches(":popover-open")||this.#e.showPopover()}catch{this.#e.classList.add("is-open")}else this.#e.classList.add("is-open");this.#t.setAttribute("aria-expanded","true"),requestAnimationFrame(()=>this.#h())}#c(e=!1){if(!(this.#s&&!e)){if(this.#e.hidePopover&&this.#e.matches(":popover-open"))try{this.#e.hidePopover()}catch{}this.#e.classList.remove("is-open"),this.#t.setAttribute("aria-expanded","false")}}#h(){let e=this.#t.getBoundingClientRect(),o=this.#e.getBoundingClientRect(),c=10,a=10,m="top",u=e.top-o.height-a;u<c&&(u=e.bottom+a,m="bottom");let h=e.left+e.width/2-o.width/2;h=Math.max(c,Math.min(h,window.innerWidth-o.width-c)),this.#e.style.left=`${Math.round(h)}px`,this.#e.style.top=`${Math.round(u)}px`,this.#e.dataset.placement=m;let g=Math.max(14,Math.min(o.width-14,e.left+e.width/2-h));this.#e.style.setProperty("--bp-cite-caret",`${Math.round(g)}px`)}};customElements.get(pe)||customElements.define(pe,Z);function Te(n){let e=n.closest(X);return e instanceof L?e:n.querySelector("pre code")}async function Ce(n){if(!globalThis.isSecureContext||!navigator.clipboard?.writeText)throw new Error("The Clipboard API requires a secure context");await navigator.clipboard.writeText(n)}function q(n,e){let o=U.get(n);o&&clearTimeout(o),n.dataset.bpCopyState=e,n.textContent=e==="copied"?"Copied":"Copy failed",U.set(n,setTimeout(()=>{delete n.dataset.bpCopyState,n.textContent="Copy",U.delete(n)},1800))}document.addEventListener("click",async n=>{let e=n.target instanceof Element?n.target.closest("[data-bp-copy]"):null;if(!(e instanceof HTMLButtonElement))return;n.preventDefault();let o=e.closest(ge),c=o?Te(o):null;if(!c)return q(e,"error");let a=c instanceof L?c.sourceText:c.textContent;try{await Ce(a??""),q(e,"copied")}catch{q(e,"error")}});z.default.highlightAll();
|
|
8
|
+
/*! Bundled license information:
|
|
9
|
+
|
|
10
|
+
prismjs/components/prism-core.js:
|
|
11
|
+
(**
|
|
12
|
+
* Prism: Lightweight, robust, elegant syntax highlighting
|
|
13
|
+
*
|
|
14
|
+
* @license MIT <https://opensource.org/licenses/MIT>
|
|
15
|
+
* @author Lea Verou <https://lea.verou.me>
|
|
16
|
+
* @namespace
|
|
17
|
+
* @public
|
|
18
|
+
*)
|
|
19
|
+
*/
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@obvi/blueprint",
|
|
3
|
+
"version": "1.0.9",
|
|
4
|
+
"description": "A classless-first CSS design system for beautiful technical blueprint documents.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/FlatFilers/blueprint-framework.git"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/FlatFilers/blueprint-framework/issues"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/FlatFilers/blueprint-framework#readme",
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"LICENSE",
|
|
18
|
+
"README.md",
|
|
19
|
+
"THIRD_PARTY_NOTICES.md"
|
|
20
|
+
],
|
|
21
|
+
"main": "./dist/blueprint.css",
|
|
22
|
+
"style": "./dist/blueprint.css",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": "./dist/blueprint.css",
|
|
25
|
+
"./blueprint.js": "./dist/blueprint.js",
|
|
26
|
+
"./blueprint.css": "./dist/blueprint.css",
|
|
27
|
+
"./styles.css": "./dist/blueprint.css",
|
|
28
|
+
"./code-highlighting.css": "./dist/code-highlighting/blueprint-code.css",
|
|
29
|
+
"./code-highlighting/blueprint-code.js": "./dist/code-highlighting/blueprint-code.js",
|
|
30
|
+
"./web-components": "./dist/code-highlighting/blueprint-code.js",
|
|
31
|
+
"./bp-source": "./dist/code-highlighting/blueprint-code.js"
|
|
32
|
+
},
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"registry": "https://registry.npmjs.org",
|
|
35
|
+
"access": "restricted"
|
|
36
|
+
},
|
|
37
|
+
"scripts": {
|
|
38
|
+
"build": "npm run build:code && node scripts/build-package.mjs",
|
|
39
|
+
"build:code": "node code-highlighting/scripts/build.mjs",
|
|
40
|
+
"render": "node harness/render.mjs",
|
|
41
|
+
"measure": "node harness/measure.mjs && node harness/behavior.mjs",
|
|
42
|
+
"verify:package": "node scripts/verify-package.mjs",
|
|
43
|
+
"verify": "npm run build && npm run measure && npm run verify:package",
|
|
44
|
+
"prepack": "npm run build"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/prismjs": "^1.26.5",
|
|
48
|
+
"esbuild": "^0.28.1",
|
|
49
|
+
"prismjs": "^1.30.0",
|
|
50
|
+
"puppeteer": "^22.0.0"
|
|
51
|
+
}
|
|
52
|
+
}
|