@codemonster-ru/vue-codeblock 1.0.0 → 1.1.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/README.md CHANGED
@@ -115,7 +115,7 @@ The component ships with light and dark defaults. You can override it with:
115
115
 
116
116
  - `theme="light"`
117
117
  - `theme="dark"`
118
- - `theme="inherit"` and an ancestor `data-theme="dark"`
118
+ - `theme="inherit"` and the nearest ancestor theme from `data-theme` or, if absent, `data-vf-theme`
119
119
 
120
120
  Main CSS custom properties:
121
121
 
@@ -4,7 +4,9 @@ declare function __VLS_template(): {
4
4
  slots: {
5
5
  actions?(_: {}): any;
6
6
  };
7
- refs: {};
7
+ refs: {
8
+ rootElement: HTMLElement;
9
+ };
8
10
  rootEl: HTMLElement;
9
11
  };
10
12
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
@@ -29,7 +31,9 @@ declare const __VLS_component: import('vue').DefineComponent<CodeBlockProps, {},
29
31
  maxHeight: string;
30
32
  ariaLabel: string;
31
33
  theme: import('..').CodeBlockTheme;
32
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLElement>;
34
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
35
+ rootElement: HTMLElement;
36
+ }, HTMLElement>;
33
37
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
34
38
  export default _default;
35
39
  type __VLS_WithTemplateSlots<T, S> = T & {
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- .vcb{display:grid;gap:var(--vcb-gap, 0);border:1px solid var(--vcb-border-color, #cbd5e1);border-radius:var(--vcb-border-radius, .625rem);background:var(--vcb-background-color, #f8fbff);color:var(--vcb-text-color, #0f172a);font-family:var(--vcb-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-size:var(--vcb-font-size, .8125rem);line-height:var(--vcb-line-height, 1.5)}.vcb__header{display:flex;align-items:center;justify-content:space-between;gap:var(--vcb-header-gap, .75rem);padding:var(--vcb-header-padding, .55rem .75rem);border-bottom:1px solid var(--vcb-header-border-color, rgba(148, 163, 184, .28))}.vcb__meta{display:inline-flex;align-items:center;gap:var(--vcb-meta-gap, .55rem);color:var(--vcb-meta-color, #475569);font-size:var(--vcb-meta-font-size, .75rem)}.vcb__filename{color:var(--vcb-filename-color, #0f172a);font-weight:var(--vcb-filename-font-weight, 600)}.vcb__actions{display:inline-flex;align-items:center;gap:var(--vcb-actions-gap, .45rem)}.vcb__copy{border:1px solid var(--vcb-action-border-color, rgba(148, 163, 184, .38));border-radius:var(--vcb-action-border-radius, .375rem);background:var(--vcb-action-background-color, #ffffff);color:var(--vcb-action-text-color, #0f172a);padding:var(--vcb-action-padding, .2rem .55rem);font-size:var(--vcb-action-font-size, .75rem)}.vcb__pre{margin:0;padding:var(--vcb-padding, .75rem .9rem);overflow:auto;white-space:pre}.vcb__pre_wrap{white-space:pre-wrap;word-break:break-word}.vcb__line{display:flex;align-items:baseline;gap:var(--vcb-line-gap, .7rem)}.vcb__line-number{text-align:right;color:var(--vcb-line-number-color, #64748b);min-width:var(--vcb-line-number-min-width, 2.1rem);-webkit-user-select:none;user-select:none}.vcb__line-content{white-space:inherit}.vcb__token_keyword{color:var(--vcb-token-keyword-color, #8b2fc9)}.vcb__token_string{color:var(--vcb-token-string-color, #0f7b45)}.vcb__token_number{color:var(--vcb-token-number-color, #c2410c)}.vcb__token_comment{color:var(--vcb-token-comment-color, #64748b)}.vcb__token_variable{color:var(--vcb-token-variable-color, #0f4c81)}.vcb__token_identifier{color:var(--vcb-token-identifier-color, #0369a1)}.vcb__token_function{color:var(--vcb-token-function-color, #1d4ed8)}.vcb__token_property{color:var(--vcb-token-property-color, #6d28d9)}.vcb__token_operator{color:var(--vcb-token-operator-color, #be185d)}.vcb__token_tag{color:var(--vcb-token-tag-color, #0f4c81)}.vcb__token_selector{color:var(--vcb-token-selector-color, #0f4c81)}.vcb__token_component{color:var(--vcb-token-component-color, #0369a1)}.vcb__token_attribute{color:var(--vcb-token-attribute-color, #7c3aed)}.vcb__token_directive{color:var(--vcb-token-directive-color, #a21caf)}.vcb[data-theme=dark],:root[data-theme=dark] .vcb:not([data-theme=light]),[data-theme=dark] .vcb:not([data-theme=light]){--vcb-background-color: var( --vcb-dark-background-color, #0a1425 );--vcb-text-color: var(--vcb-dark-text-color, #e2e8f0);--vcb-border-color: var( --vcb-dark-border-color, rgba(148, 163, 184, .35) );--vcb-header-border-color: var( --vcb-dark-header-border-color, rgba(148, 163, 184, .35) );--vcb-meta-color: var(--vcb-dark-meta-color, #93a4bf);--vcb-filename-color: var( --vcb-dark-filename-color, #e2e8f0 );--vcb-action-border-color: var( --vcb-dark-action-border-color, rgba(148, 163, 184, .45) );--vcb-action-background-color: var( --vcb-dark-action-background-color, rgba(15, 23, 42, .7) );--vcb-action-text-color: var( --vcb-dark-action-text-color, #e2e8f0 );--vcb-line-number-color: var( --vcb-dark-line-number-color, #64748b );--vcb-token-keyword-color: var( --vcb-dark-token-keyword-color, #c084fc );--vcb-token-string-color: var( --vcb-dark-token-string-color, #86efac );--vcb-token-number-color: var( --vcb-dark-token-number-color, #fca5a5 );--vcb-token-comment-color: var( --vcb-dark-token-comment-color, #94a3b8 );--vcb-token-variable-color: var( --vcb-dark-token-variable-color, #bfdbfe );--vcb-token-tag-color: var( --vcb-dark-token-tag-color, #93c5fd );--vcb-token-selector-color: var( --vcb-dark-token-selector-color, #93c5fd );--vcb-token-component-color: var( --vcb-dark-token-component-color, #67e8f9 );--vcb-token-attribute-color: var( --vcb-dark-token-attribute-color, #c4b5fd );--vcb-token-directive-color: var( --vcb-dark-token-directive-color, #f0abfc );--vcb-token-identifier-color: var( --vcb-dark-token-identifier-color, #7dd3fc );--vcb-token-function-color: var( --vcb-dark-token-function-color, #93c5fd );--vcb-token-property-color: var( --vcb-dark-token-property-color, #a5b4fc );--vcb-token-operator-color: var( --vcb-dark-token-operator-color, #f0abfc )}.vcb_disabled{opacity:var(--vcb-disabled-opacity, .6)}
1
+ .vcb{display:grid;gap:var(--vcb-gap, 0);border:1px solid var(--vcb-border-color, var(--vf-color-border, #d9dde3));border-radius:var(--vcb-border-radius, var(--vf-radius-surface, var(--vf-radius, .625rem)));background:var(--vcb-background-color, var(--vf-color-surface, #ffffff));color:var(--vcb-text-color, var(--vf-color-text, #1f232b));font-family:var(--vcb-font-family, var(--vf-font-family-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace));font-size:var(--vcb-font-size, var(--vf-font-size-sm, .8125rem));line-height:var(--vcb-line-height, var(--vf-line-height-normal, 1.5))}.vcb__header{display:flex;align-items:center;justify-content:space-between;gap:var(--vcb-header-gap, .75rem);padding:var(--vcb-header-padding, .55rem .75rem);border-bottom:1px solid var(--vcb-header-border-color, var(--vf-color-border, #d9dde3))}.vcb__meta{display:inline-flex;align-items:center;gap:var(--vcb-meta-gap, .55rem);color:var(--vcb-meta-color, var(--vf-color-muted, #616773));font-size:var(--vcb-meta-font-size, var(--vf-font-size-sm, .75rem))}.vcb__filename{color:var(--vcb-filename-color, var(--vf-color-text, #1f232b));font-weight:var(--vcb-filename-font-weight, var(--vf-font-weight-semibold, 600))}.vcb__actions{display:inline-flex;align-items:center;gap:var(--vcb-actions-gap, .45rem)}.vcb__copy{border:1px solid var(--vcb-action-border-color, var(--vf-color-border, #d9dde3));border-radius:var(--vcb-action-border-radius, var(--vf-radius-control-tight, .375rem));background:var(--vcb-action-background-color, var(--vf-color-surface-muted, #f3f3f3));color:var(--vcb-action-text-color, var(--vf-color-text, #1f232b));padding:var(--vcb-action-padding, var(--vf-button-padding-sm, .2rem .55rem));font-size:var(--vcb-action-font-size, var(--vf-font-size-sm, .75rem))}.vcb__pre{margin:0;padding:var(--vcb-padding, var(--vf-prose-code-block-padding, .75rem .9rem));overflow:auto;white-space:pre}.vcb__pre_wrap{white-space:pre-wrap;word-break:break-word}.vcb__line{display:flex;align-items:baseline;gap:var(--vcb-line-gap, .7rem)}.vcb__line-number{text-align:right;color:var(--vcb-line-number-color, var(--vf-color-muted, #616773));min-width:var(--vcb-line-number-min-width, 2.1rem);-webkit-user-select:none;user-select:none}.vcb__line-content{white-space:inherit}.vcb__token_keyword{color:var(--vcb-token-keyword-color, var(--vf-color-help, #8553a1))}.vcb__token_string{color:var(--vcb-token-string-color, var(--vf-color-success, #2e7d32))}.vcb__token_number{color:var(--vcb-token-number-color, var(--vf-color-warn, #9f8400))}.vcb__token_comment{color:var(--vcb-token-comment-color, var(--vf-color-muted, #616773))}.vcb__token_variable{color:var(--vcb-token-variable-color, var(--vf-color-text, #1f232b))}.vcb__token_identifier{color:var(--vcb-token-identifier-color, var(--vf-color-info, #0069ba))}.vcb__token_function{color:var(--vcb-token-function-color, var(--vf-color-primary, #0e639c))}.vcb__token_property{color:var(--vcb-token-property-color, var(--vf-color-primary, #0e639c))}.vcb__token_operator{color:var(--vcb-token-operator-color, var(--vf-color-danger, #c72e39))}.vcb__token_tag{color:var(--vcb-token-tag-color, var(--vf-color-primary, #0e639c))}.vcb__token_selector{color:var(--vcb-token-selector-color, var(--vf-color-primary, #0e639c))}.vcb__token_component{color:var(--vcb-token-component-color, var(--vf-color-info, #0069ba))}.vcb__token_attribute{color:var(--vcb-token-attribute-color, var(--vf-color-help, #8553a1))}.vcb__token_directive{color:var(--vcb-token-directive-color, var(--vf-color-help, #8553a1))}.vcb[data-theme=dark],:root[data-theme=dark] .vcb:not([data-theme=light]),[data-theme=dark] .vcb:not([data-theme=light]){--vcb-background-color: var( --vcb-dark-background-color, var(--vf-color-surface, #252526) );--vcb-text-color: var(--vcb-dark-text-color, var(--vf-color-text, #d4d4d4));--vcb-border-color: var( --vcb-dark-border-color, var(--vf-color-border, #3c3c3c) );--vcb-header-border-color: var( --vcb-dark-header-border-color, var(--vf-color-border, #3c3c3c) );--vcb-meta-color: var(--vcb-dark-meta-color, var(--vf-color-muted, #9da0a6));--vcb-filename-color: var( --vcb-dark-filename-color, var(--vf-color-text, #d4d4d4) );--vcb-action-border-color: var( --vcb-dark-action-border-color, var(--vf-color-border, #3c3c3c) );--vcb-action-background-color: var( --vcb-dark-action-background-color, var(--vf-color-surface-muted, #2d2d30) );--vcb-action-text-color: var( --vcb-dark-action-text-color, var(--vf-color-text, #d4d4d4) );--vcb-line-number-color: var( --vcb-dark-line-number-color, var(--vf-color-muted, #9da0a6) );--vcb-token-keyword-color: var( --vcb-dark-token-keyword-color, var(--vf-color-help, #c586c0) );--vcb-token-string-color: var( --vcb-dark-token-string-color, var(--vf-color-success, #6a9955) );--vcb-token-number-color: var( --vcb-dark-token-number-color, var(--vf-color-warn, #d7ba7d) );--vcb-token-comment-color: var(--vcb-dark-token-comment-color, #6a9955);--vcb-token-variable-color: var( --vcb-dark-token-variable-color, var(--vf-color-text, #d4d4d4) );--vcb-token-tag-color: var( --vcb-dark-token-tag-color, var(--vf-color-primary, #569cd6) );--vcb-token-selector-color: var( --vcb-dark-token-selector-color, var(--vf-color-warn, #d7ba7d) );--vcb-token-component-color: var( --vcb-dark-token-component-color, var(--vf-color-info, #4ec9b0) );--vcb-token-attribute-color: var(--vcb-dark-token-attribute-color, #9cdcfe);--vcb-token-directive-color: var(--vcb-dark-token-directive-color, #c586c0);--vcb-token-identifier-color: var(--vcb-dark-token-identifier-color, #9cdcfe);--vcb-token-function-color: var( --vcb-dark-token-function-color, var(--vf-color-contrast, #dcdcaa) );--vcb-token-property-color: var(--vcb-dark-token-property-color, #9cdcfe);--vcb-token-operator-color: var(--vcb-dark-token-operator-color, #d4d4d4)}.vcb_disabled{opacity:var(--vcb-disabled-opacity, .6)}
package/dist/index.js CHANGED
@@ -1,67 +1,64 @@
1
- import { defineComponent as R, ref as F, computed as y, onBeforeUnmount as U, openBlock as m, createElementBlock as b, normalizeClass as q, toDisplayString as w, createCommentVNode as x, createElementVNode as C, renderSlot as G, normalizeStyle as K, Fragment as X, renderList as Y } from "vue";
2
- const n = (t) => t.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;"), I = (t) => t.replaceAll("&quot;", '"').replaceAll("&#39;", "'").replaceAll("&lt;", "<").replaceAll("&gt;", ">").replaceAll("&amp;", "&"), B = (t) => n(t), l = (t, o) => `<span class="vcb__token ${t}">${o}</span>`, tt = "\\b\\d(?:[\\d_]*\\d)?(?:\\.\\d(?:[\\d_]*\\d)?)?\\b", et = "\\b-?\\d(?:[\\d_]*\\d)?(?:\\.\\d(?:[\\d_]*\\d)?)?(?:px|rem|em|%|vh|vw|fr|s|ms|deg)?\\b", E = (t) => t.startsWith(":") || t.startsWith("@") || t.startsWith("#") || t.startsWith("v-"), V = (t) => /^[A-Z]/.test(t), nt = (t) => {
3
- let o = 0, s = l("vcb__token_string", n("`"));
4
- for (; o < t.length - 1; ) {
5
- const e = t.indexOf("${", o), i = e === -1 ? t.length - 1 : e, c = t.slice(o, i);
6
- if (c && (s += l("vcb__token_string", n(c))), e === -1)
1
+ import { defineComponent as R, ref as W, computed as S, onMounted as U, onBeforeUnmount as G, openBlock as $, createElementBlock as A, normalizeClass as q, toDisplayString as L, createCommentVNode as z, createElementVNode as E, renderSlot as K, normalizeStyle as X, Fragment as Y, renderList as ee } from "vue";
2
+ const n = (e) => e.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;"), V = (e) => e.replaceAll("&quot;", '"').replaceAll("&#39;", "'").replaceAll("&lt;", "<").replaceAll("&gt;", ">").replaceAll("&amp;", "&"), B = (e) => n(e), l = (e, c) => `<span class="vcb__token ${e}">${c}</span>`, te = "\\b\\d(?:[\\d_]*\\d)?(?:\\.\\d(?:[\\d_]*\\d)?)?\\b", ne = "\\b-?\\d(?:[\\d_]*\\d)?(?:\\.\\d(?:[\\d_]*\\d)?)?(?:px|rem|em|%|vh|vw|fr|s|ms|deg)?\\b", O = (e) => e.startsWith(":") || e.startsWith("@") || e.startsWith("#") || e.startsWith("v-"), F = (e) => /^[A-Z]/.test(e), se = (e) => {
3
+ let c = 0, s = l("vcb__token_string", n("`"));
4
+ for (; c < e.length - 1; ) {
5
+ const t = e.indexOf("${", c), o = t === -1 ? e.length - 1 : t, r = e.slice(c, o);
6
+ if (r && (s += l("vcb__token_string", n(r))), t === -1)
7
7
  break;
8
8
  s += n("${");
9
- let a = e + 2, r = 1;
10
- for (; a < t.length && r > 0; ) {
11
- const u = t[a];
12
- u === "{" ? r += 1 : u === "}" && (r -= 1), a += 1;
9
+ let a = t + 2, i = 1;
10
+ for (; a < e.length && i > 0; ) {
11
+ const u = e[a];
12
+ u === "{" ? i += 1 : u === "}" && (i -= 1), a += 1;
13
13
  }
14
- const _ = t.slice(
15
- e + 2,
14
+ const d = e.slice(
15
+ t + 2,
16
16
  a - 1
17
17
  );
18
- s += M(_), s += n("}"), o = a;
18
+ s += T(d), s += n("}"), c = a;
19
19
  }
20
20
  return s += l("vcb__token_string", n("`")), s;
21
- }, M = (t) => H(t), st = (t) => {
22
- if (t.length < 2)
23
- return l("vcb__token_string", t);
24
- const o = t[0], s = I(t.slice(1, -1)), e = M(s), i = o === '"' ? "&quot;" : "&#39;";
25
- return `${i}${e}${i}`;
26
- }, L = (t, o, s, e, i) => {
27
- const c = s ? M(I(t)) : l("vcb__token_string", n(t)), a = o === '"' ? "&quot;" : "&#39;";
28
- return `${e ? a : ""}${c}${i ? a : ""}`;
29
- }, O = (t) => t.replaceAll(/{{\s*([\s\S]*?)\s*}}/g, (o, s) => {
30
- const e = M(s);
31
- return `${n("{{ ")}${e}${n(" }}")}`;
32
- }), T = (t) => t.replaceAll(
21
+ }, T = (e) => N(e), ce = (e) => {
22
+ if (e.length < 2)
23
+ return l("vcb__token_string", e);
24
+ const c = e[0], s = V(e.slice(1, -1)), t = T(s), o = c === '"' ? "&quot;" : "&#39;";
25
+ return `${o}${t}${o}`;
26
+ }, M = (e, c, s, t, o) => {
27
+ const r = s ? T(V(e)) : l("vcb__token_string", n(e)), a = c === '"' ? "&quot;" : "&#39;";
28
+ return `${t ? a : ""}${r}${o ? a : ""}`;
29
+ }, j = (e) => e.replaceAll(/{{\s*([\s\S]*?)\s*}}/g, (c, s) => {
30
+ const t = T(s);
31
+ return `${n("{{ ")}${t}${n(" }}")}`;
32
+ }), H = (e) => e.replaceAll(
33
33
  /(\s+)([:@#]?[\w-]+(?::[\w-]+)?)(\s*=\s*)?("[^"]*"|'[^']*')?/g,
34
- (o, s, e, i = "", c = "") => `${n(s)}${l(
35
- E(e) ? "vcb__token_directive" : "vcb__token_attribute",
36
- n(e)
37
- )}${n(i)}${c ? E(e) ? st(c) : l(
38
- "vcb__token_string",
39
- n(c)
40
- ) : ""}`
41
- ), z = (t) => {
42
- const o = t.match(/^(\s*)<([/\w-]+)([\s\S]*)$/);
43
- if (!o)
44
- return n(t);
45
- const [, s, e, i] = o, c = e.startsWith("/"), a = c ? e.slice(1) : e, r = V(a) ? "vcb__token_component" : "vcb__token_tag";
46
- return `${n(s)}${n(c ? "</" : "<")}${l(
47
- r,
34
+ (c, s, t, o = "", r = "") => `${n(s)}${l(
35
+ O(t) ? "vcb__token_directive" : "vcb__token_attribute",
36
+ n(t)
37
+ )}${n(o)}${r ? O(t) ? ce(r) : l("vcb__token_string", n(r)) : ""}`
38
+ ), Z = (e) => {
39
+ const c = e.match(/^(\s*)<([/\w-]+)([\s\S]*)$/);
40
+ if (!c)
41
+ return n(e);
42
+ const [, s, t, o] = c, r = t.startsWith("/"), a = r ? t.slice(1) : t, i = F(a) ? "vcb__token_component" : "vcb__token_tag";
43
+ return `${n(s)}${n(r ? "</" : "<")}${l(
44
+ i,
48
45
  n(a)
49
- )}${T(String(i))}`;
50
- }, ct = (t) => {
51
- if (t.startsWith("<!--") && t.endsWith("-->"))
52
- return l("vcb__token_comment", n(t));
53
- const o = t.startsWith("</"), s = t.endsWith("/>"), i = t.slice(
54
- o ? 2 : 1,
55
- t.length - (s ? 2 : 1)
46
+ )}${H(String(o))}`;
47
+ }, re = (e) => {
48
+ if (e.startsWith("<!--") && e.endsWith("-->"))
49
+ return l("vcb__token_comment", n(e));
50
+ const c = e.startsWith("</"), s = e.endsWith("/>"), o = e.slice(
51
+ c ? 2 : 1,
52
+ e.length - (s ? 2 : 1)
56
53
  ).match(/^([\w-]+)([\s\S]*)$/);
57
- if (!i)
58
- return n(t);
59
- const [, c, a] = i, r = V(c) ? "vcb__token_component" : "vcb__token_tag";
60
- return `${n(o ? "</" : "<")}${l(
61
- r,
62
- n(c)
63
- )}${T(a)}${n(s ? "/>" : ">")}`;
64
- }, ot = (t) => n(t).replaceAll(
54
+ if (!o)
55
+ return n(e);
56
+ const [, r, a] = o, i = F(r) ? "vcb__token_component" : "vcb__token_tag";
57
+ return `${n(c ? "</" : "<")}${l(
58
+ i,
59
+ n(r)
60
+ )}${H(a)}${n(s ? "/>" : ">")}`;
61
+ }, oe = (e) => n(e).replaceAll(
65
62
  /"(?:[^"\\]|\\.)*"(?=\s*:)?/g,
66
63
  (s) => l("vcb__token_string", s)
67
64
  ).replaceAll(
@@ -70,372 +67,312 @@ const n = (t) => t.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll("
70
67
  ).replaceAll(
71
68
  /\b-?\d(?:[\d_]*\d)?(?:\.\d(?:[\d_]*\d)?)?(?:[eE][+-]?\d(?:[\d_]*\d)?)?\b/g,
72
69
  (s) => l("vcb__token_number", s)
73
- ), it = (t, o) => {
74
- for (let s = o - 1; s >= 0; s -= 1) {
75
- const e = t[s];
76
- if (!/\s/.test(e))
77
- return e;
70
+ ), ie = (e, c) => {
71
+ for (let s = c - 1; s >= 0; s -= 1) {
72
+ const t = e[s];
73
+ if (!/\s/.test(t))
74
+ return t;
78
75
  }
79
76
  return "";
80
- }, J = (t, o) => {
81
- for (let s = o; s < t.length; s += 1) {
82
- const e = t[s];
83
- if (!/\s/.test(e))
84
- return e;
77
+ }, J = (e, c) => {
78
+ for (let s = c; s < e.length; s += 1) {
79
+ const t = e[s];
80
+ if (!/\s/.test(t))
81
+ return t;
85
82
  }
86
83
  return "";
87
- }, rt = (t, o) => {
88
- let s = o;
89
- for (; s > 0 && /\s/.test(t[s - 1]); )
84
+ }, le = (e, c) => {
85
+ let s = c;
86
+ for (; s > 0 && /\s/.test(e[s - 1]); )
90
87
  s -= 1;
91
- return t.slice(0, s).match(/([A-Za-z_$][\w$]*)\s*$/)?.[1] ?? "";
92
- }, lt = (t, o, s) => {
93
- const e = it(t, s), i = J(t, s + o.length), c = rt(t, s), a = t.slice(0, s);
94
- return e === "." || /\?\.\s*$/.test(a) || i === ":" && ["{", ",", ""].includes(e) ? "vcb__token_property" : i === "(" ? "vcb__token_function" : /^[A-Z]/.test(o) || ["import", "from", "new", "class", "extends"].includes(c) ? "vcb__token_identifier" : "vcb__token_variable";
95
- }, H = (t) => {
96
- const o = new RegExp(
97
- `(//.*$)|((["'\`])(?:\\\\.|(?!\\3).)*\\3)|\\b(const|let|var|function|return|if|else|for|while|class|new|import|export|from|await|async|try|catch|throw|true|false|null|undefined)\\b|(=>|\\?\\?|\\?|:|\\.|[{}()[\\],])|${tt}|\\b[A-Za-z_$][\\w$]*\\b`,
88
+ return e.slice(0, s).match(/([A-Za-z_$][\w$]*)\s*$/)?.[1] ?? "";
89
+ }, ae = (e, c, s) => {
90
+ const t = ie(e, s), o = J(e, s + c.length), r = le(e, s), a = e.slice(0, s);
91
+ return t === "." || /\?\.\s*$/.test(a) || o === ":" && ["{", ",", ""].includes(t) ? "vcb__token_property" : o === "(" ? "vcb__token_function" : /^[A-Z]/.test(c) || ["import", "from", "new", "class", "extends"].includes(r) ? "vcb__token_identifier" : "vcb__token_variable";
92
+ }, N = (e) => {
93
+ const c = new RegExp(
94
+ `(//.*$)|((["'\`])(?:\\\\.|(?!\\3).)*\\3)|\\b(const|let|var|function|return|if|else|for|while|class|new|import|export|from|await|async|try|catch|throw|true|false|null|undefined)\\b|(=>|\\?\\?|\\?|:|\\.|[{}()[\\],])|${te}|\\b[A-Za-z_$][\\w$]*\\b`,
98
95
  "g"
99
96
  );
100
- let s = 0, e = "";
101
- for (const i of t.matchAll(o)) {
102
- const c = i[0] ?? "", a = i.index ?? 0;
103
- e += n(t.slice(s, a)), i[1] ? e += l(
104
- "vcb__token_comment",
105
- n(c)
106
- ) : i[2] ? e += c.startsWith("`") && c.includes("${") ? nt(c) : l("vcb__token_string", n(c)) : i[4] ? e += l(
107
- "vcb__token_keyword",
108
- n(c)
109
- ) : i[5] ? e += l(
110
- "vcb__token_operator",
111
- n(c)
112
- ) : /^\d/.test(c) ? e += l(
113
- "vcb__token_number",
114
- n(c)
115
- ) : e += l(
116
- lt(t, c, a),
117
- n(c)
118
- ), s = a + c.length;
97
+ let s = 0, t = "";
98
+ for (const o of e.matchAll(c)) {
99
+ const r = o[0] ?? "", a = o.index ?? 0;
100
+ t += n(e.slice(s, a)), o[1] ? t += l("vcb__token_comment", n(r)) : o[2] ? t += r.startsWith("`") && r.includes("${") ? se(r) : l("vcb__token_string", n(r)) : o[4] ? t += l("vcb__token_keyword", n(r)) : o[5] ? t += l("vcb__token_operator", n(r)) : /^\d/.test(r) ? t += l("vcb__token_number", n(r)) : t += l(
101
+ ae(e, r, a),
102
+ n(r)
103
+ ), s = a + r.length;
119
104
  }
120
- return e += n(t.slice(s)), e;
121
- }, at = (t, o) => {
105
+ return t += n(e.slice(s)), t;
106
+ }, ue = (e, c) => {
122
107
  let s = null;
123
- for (let e = o + 1; e < t.length; e += 1) {
124
- const i = t[e];
108
+ for (let t = c + 1; t < e.length; t += 1) {
109
+ const o = e[t];
125
110
  if (s) {
126
- i === s && t[e - 1] !== "\\" && (s = null);
111
+ o === s && e[t - 1] !== "\\" && (s = null);
127
112
  continue;
128
113
  }
129
- if (i === '"' || i === "'") {
130
- s = i;
114
+ if (o === '"' || o === "'") {
115
+ s = o;
131
116
  continue;
132
117
  }
133
- if (i === ">")
134
- return e;
118
+ if (o === ">")
119
+ return t;
135
120
  }
136
121
  return -1;
137
- }, k = (t) => {
138
- if (!t.trim())
139
- return n(t);
140
- let o = 0, s = "";
141
- for (; o < t.length; ) {
142
- const e = t.indexOf("<", o);
143
- if (e === -1) {
144
- s += O(n(t.slice(o)));
122
+ }, y = (e) => {
123
+ if (!e.trim())
124
+ return n(e);
125
+ let c = 0, s = "";
126
+ for (; c < e.length; ) {
127
+ const t = e.indexOf("<", c);
128
+ if (t === -1) {
129
+ s += j(n(e.slice(c)));
145
130
  break;
146
131
  }
147
- s += O(
148
- n(t.slice(o, e))
132
+ s += j(
133
+ n(e.slice(c, t))
149
134
  );
150
- const i = at(t, e);
151
- if (i === -1) {
152
- s += n(t.slice(e));
135
+ const o = ue(e, t);
136
+ if (o === -1) {
137
+ s += n(e.slice(t));
153
138
  break;
154
139
  }
155
- s += ct(t.slice(e, i + 1)), o = i + 1;
140
+ s += re(e.slice(t, o + 1)), c = o + 1;
156
141
  }
157
142
  return s;
158
- }, ut = (t) => {
159
- const o = t.match(/^(\s*)(npm)(\s+)(run)(\s+)([^\s].*)$/);
160
- if (o) {
143
+ }, de = (e) => {
144
+ const c = e.match(/^(\s*)(npm)(\s+)(run)(\s+)([^\s].*)$/);
145
+ if (c) {
161
146
  const [
162
147
  ,
163
- r,
164
- _,
148
+ i,
149
+ d,
165
150
  u,
166
151
  f,
167
- h,
168
- d
169
- ] = o;
170
- return `${n(r)}${l(
152
+ _,
153
+ h
154
+ ] = c;
155
+ return `${n(i)}${l(
171
156
  "vcb__token_keyword",
172
- n(_)
157
+ n(d)
173
158
  )}${n(u)}${l(
174
159
  "vcb__token_function",
175
160
  n(f)
176
- )}${n(h)}${l(
161
+ )}${n(_)}${l(
177
162
  "vcb__token_variable",
178
- n(d)
163
+ n(h)
179
164
  )}`;
180
165
  }
181
- const s = (r) => {
182
- const _ = /(\s+)|((["'])(?:\\.|(?!\3).)*\3)|(\$[A-Za-z_][A-Za-z0-9_]*)|(@[A-Za-z0-9._/-]+|[A-Za-z0-9._-]+\/[A-Za-z0-9._/@-]+)|(-{1,2}[A-Za-z][\w-]*)(?:=(\S+))?|([^\s]+)/g;
166
+ const s = (i) => {
167
+ const d = /(\s+)|((["'])(?:\\.|(?!\3).)*\3)|(\$[A-Za-z_][A-Za-z0-9_]*)|(@[A-Za-z0-9._/-]+|[A-Za-z0-9._-]+\/[A-Za-z0-9._/@-]+)|(-{1,2}[A-Za-z][\w-]*)(?:=(\S+))?|([^\s]+)/g;
183
168
  let u = 0, f = "";
184
- for (const h of r.matchAll(_)) {
185
- const d = h[0] ?? "", A = h.index ?? 0;
186
- f += n(r.slice(u, A)), h[1] ? f += n(d) : h[2] ? f += l(
187
- "vcb__token_string",
188
- n(d)
189
- ) : h[4] ? f += l(
190
- "vcb__token_variable",
191
- n(d)
192
- ) : h[5] ? f += l(
193
- "vcb__token_string",
194
- n(d)
195
- ) : h[6] ? (f += l(
196
- "vcb__token_directive",
197
- n(h[6])
198
- ), h[7] && (f += `${n("=")}${l(
199
- h[7].startsWith("@") || h[7].includes("/") ? "vcb__token_string" : "vcb__token_variable",
200
- n(h[7])
201
- )}`)) : h[8] ? f += l(
202
- "vcb__token_variable",
203
- n(d)
204
- ) : f += n(d), u = A + d.length;
169
+ for (const _ of i.matchAll(d)) {
170
+ const h = _[0] ?? "", w = _.index ?? 0;
171
+ f += n(i.slice(u, w)), _[1] ? f += n(h) : _[2] ? f += l("vcb__token_string", n(h)) : _[4] ? f += l("vcb__token_variable", n(h)) : _[5] ? f += l("vcb__token_string", n(h)) : _[6] ? (f += l("vcb__token_directive", n(_[6])), _[7] && (f += `${n("=")}${l(
172
+ _[7].startsWith("@") || _[7].includes("/") ? "vcb__token_string" : "vcb__token_variable",
173
+ n(_[7])
174
+ )}`)) : _[8] ? f += l("vcb__token_variable", n(h)) : f += n(h), u = w + h.length;
205
175
  }
206
- return f += n(r.slice(u)), f;
207
- }, e = t.match(
176
+ return f += n(i.slice(u)), f;
177
+ }, t = e.match(
208
178
  /^(\s*)(npm|pnpm|yarn|bun)(\s+)(i|install|add|remove|rm|uninstall|create|dlx|exec|x)(\s+)(.+)$/
209
179
  );
210
- if (e) {
180
+ if (t) {
211
181
  const [
212
182
  ,
213
- r,
214
- _,
183
+ i,
184
+ d,
215
185
  u,
216
186
  f,
217
- h,
218
- d
219
- ] = e;
220
- return `${n(r)}${l(
187
+ _,
188
+ h
189
+ ] = t;
190
+ return `${n(i)}${l(
221
191
  "vcb__token_keyword",
222
- n(_)
192
+ n(d)
223
193
  )}${n(u)}${l(
224
194
  "vcb__token_function",
225
195
  n(f)
226
- )}${n(h)}${s(d)}`;
196
+ )}${n(_)}${s(h)}`;
227
197
  }
228
- const i = /(#[^\n]*$)|((["'])(?:\\.|(?!\3).)*\3)|(\$[A-Za-z_][A-Za-z0-9_]*)|(@[A-Za-z0-9._/-]+)|(^\s*[A-Za-z][\w-]*\b)|(\s-[A-Za-z-]+\b|\s--[A-Za-z-]+\b)/g;
229
- let c = 0, a = "";
230
- for (const r of t.matchAll(i)) {
231
- const _ = r[0] ?? "", u = r.index ?? 0;
232
- if (a += n(t.slice(c, u)), r[1])
233
- a += l(
234
- "vcb__token_comment",
235
- n(_)
236
- );
237
- else if (r[2])
238
- a += l(
239
- "vcb__token_string",
240
- n(_)
241
- );
242
- else if (r[4])
243
- a += l(
244
- "vcb__token_variable",
245
- n(_)
246
- );
247
- else if (r[5])
248
- a += l(
249
- "vcb__token_string",
250
- n(_)
251
- );
252
- else if (r[6])
198
+ const o = /(#[^\n]*$)|((["'])(?:\\.|(?!\3).)*\3)|(\$[A-Za-z_][A-Za-z0-9_]*)|(@[A-Za-z0-9._/-]+)|(^\s*[A-Za-z][\w-]*\b)|(\s-[A-Za-z-]+\b|\s--[A-Za-z-]+\b)/g;
199
+ let r = 0, a = "";
200
+ for (const i of e.matchAll(o)) {
201
+ const d = i[0] ?? "", u = i.index ?? 0;
202
+ if (a += n(e.slice(r, u)), i[1])
203
+ a += l("vcb__token_comment", n(d));
204
+ else if (i[2])
205
+ a += l("vcb__token_string", n(d));
206
+ else if (i[4])
207
+ a += l("vcb__token_variable", n(d));
208
+ else if (i[5])
209
+ a += l("vcb__token_string", n(d));
210
+ else if (i[6])
253
211
  a += l(
254
212
  "vcb__token_keyword",
255
- n(_.trimStart())
213
+ n(d.trimStart())
256
214
  );
257
- else if (r[7]) {
258
- const f = _.match(/^\s*/)?.[0] ?? "";
215
+ else if (i[7]) {
216
+ const f = d.match(/^\s*/)?.[0] ?? "";
259
217
  a += `${n(f)}${l(
260
218
  "vcb__token_directive",
261
- n(_.trimStart())
219
+ n(d.trimStart())
262
220
  )}`;
263
221
  } else
264
- a += n(_);
265
- c = u + _.length;
222
+ a += n(d);
223
+ r = u + d.length;
266
224
  }
267
- return a += n(t.slice(c)), a;
268
- }, j = (t) => {
269
- const o = new RegExp(
270
- `(\\/\\*.*?\\*\\/)|((["'])(?:\\\\.|(?!\\3).)*\\3)|(#[0-9A-Fa-f]{3,8})|(@[A-Za-z-]+)|([A-Za-z_-][\\w-]*)(?=\\s*\\()|${et}|\\b[A-Za-z_-][\\w-]*\\b`,
225
+ return a += n(e.slice(r)), a;
226
+ }, I = (e) => {
227
+ const c = new RegExp(
228
+ `(\\/\\*.*?\\*\\/)|((["'])(?:\\\\.|(?!\\3).)*\\3)|(#[0-9A-Fa-f]{3,8})|(@[A-Za-z-]+)|([A-Za-z_-][\\w-]*)(?=\\s*\\()|${ne}|\\b[A-Za-z_-][\\w-]*\\b`,
271
229
  "g"
272
230
  );
273
- let s = 0, e = "";
274
- for (const i of t.matchAll(o)) {
275
- const c = i[0] ?? "", a = i.index ?? 0;
276
- e += n(t.slice(s, a)), i[1] ? e += l(
277
- "vcb__token_comment",
278
- n(c)
279
- ) : i[2] ? e += l(
280
- "vcb__token_string",
281
- n(c)
282
- ) : /^#[0-9A-Fa-f]{3,8}$/.test(c) ? e += l(
283
- "vcb__token_number",
284
- n(c)
285
- ) : c.startsWith("@") ? e += l(
286
- "vcb__token_keyword",
287
- n(c)
288
- ) : J(t, a + c.length) === "(" ? e += l(
289
- "vcb__token_function",
290
- n(c)
291
- ) : /^-?\d/.test(c) ? e += l(
292
- "vcb__token_number",
293
- n(c)
294
- ) : e += l(
295
- "vcb__token_variable",
296
- n(c)
297
- ), s = a + c.length;
231
+ let s = 0, t = "";
232
+ for (const o of e.matchAll(c)) {
233
+ const r = o[0] ?? "", a = o.index ?? 0;
234
+ t += n(e.slice(s, a)), o[1] ? t += l("vcb__token_comment", n(r)) : o[2] ? t += l("vcb__token_string", n(r)) : /^#[0-9A-Fa-f]{3,8}$/.test(r) ? t += l("vcb__token_number", n(r)) : r.startsWith("@") ? t += l("vcb__token_keyword", n(r)) : J(e, a + r.length) === "(" ? t += l("vcb__token_function", n(r)) : /^-?\d/.test(r) ? t += l("vcb__token_number", n(r)) : t += l("vcb__token_variable", n(r)), s = a + r.length;
298
235
  }
299
- return e += n(t.slice(s)), e;
300
- }, _t = (t) => {
301
- const o = t.match(/^(\s*)(\/\*.*\*\/)(\s*)$/);
302
- if (o)
303
- return `${n(o[1])}${l(
236
+ return t += n(e.slice(s)), t;
237
+ }, he = (e) => {
238
+ const c = e.match(/^(\s*)(\/\*.*\*\/)(\s*)$/);
239
+ if (c)
240
+ return `${n(c[1])}${l(
304
241
  "vcb__token_comment",
305
- n(o[2])
306
- )}${n(o[3])}`;
307
- const s = t.match(/^(\s*)([^{}][^{}]*?)(\s*)(\{|\})\s*$/);
242
+ n(c[2])
243
+ )}${n(c[3])}`;
244
+ const s = e.match(/^(\s*)([^{}][^{}]*?)(\s*)(\{|\})\s*$/);
308
245
  if (s) {
309
- const [, i, c, a, r] = s, _ = c.trim(), u = _ === ":root" || _.startsWith(".") || _.startsWith("#") || /^[A-Za-z_-][\w-]*$/.test(_) ? "vcb__token_selector" : "vcb__token_variable";
310
- return `${n(i)}${l(u, n(_))}${n(
246
+ const [, o, r, a, i] = s, d = r.trim(), u = d === ":root" || d.startsWith(".") || d.startsWith("#") || /^[A-Za-z_-][\w-]*$/.test(d) ? "vcb__token_selector" : "vcb__token_variable";
247
+ return `${n(o)}${l(u, n(d))}${n(
311
248
  a
312
- )}${n(r)}`;
249
+ )}${n(i)}`;
313
250
  }
314
- const e = t.match(
251
+ const t = e.match(
315
252
  /^(\s*)(--?[A-Za-z_][\w-]*|[A-Za-z_][\w-]*)(\s*:\s*)(.*)$/
316
253
  );
317
- if (e) {
318
- const [, i, c, a, r] = e;
319
- return `${n(i)}${l(
254
+ if (t) {
255
+ const [, o, r, a, i] = t;
256
+ return `${n(o)}${l(
320
257
  "vcb__token_property",
321
- n(c)
322
- )}${n(a)}${j(r)}`;
258
+ n(r)
259
+ )}${n(a)}${I(i)}`;
323
260
  }
324
- return j(t);
325
- }, dt = (t, o, s = !0) => {
261
+ return I(e);
262
+ }, _e = (e, c, s = !0) => {
326
263
  if (!s)
327
- return B(o);
328
- const e = t.toLowerCase();
329
- return e.includes("json") ? ot(o) : e.includes("vue") || e.includes("html") ? k(o) : e.includes("js") || e.includes("ts") || e.includes("javascript") || e.includes("typescript") ? H(o) : e.includes("bash") || e.includes("shell") || e === "sh" ? ut(o) : e.includes("css") || e.includes("scss") || e.includes("sass") ? _t(o) : B(o);
330
- }, ht = (t, o) => {
331
- const s = (t || "").replace(/\r\n/g, `
264
+ return B(c);
265
+ const t = e.toLowerCase();
266
+ return t.includes("json") ? oe(c) : t.includes("vue") || t.includes("html") ? y(c) : t.includes("js") || t.includes("ts") || t.includes("javascript") || t.includes("typescript") ? N(c) : t.includes("bash") || t.includes("shell") || t === "sh" ? de(c) : t.includes("css") || t.includes("scss") || t.includes("sass") ? he(c) : B(c);
267
+ }, fe = (e, c) => {
268
+ const s = (e || "").replace(/\r\n/g, `
332
269
  `).split(`
333
270
  `);
334
- let e = !1, i = null, c = null;
271
+ let t = !1, o = null, r = null;
335
272
  return s.map((a) => {
336
- const r = a;
337
- if (!o)
338
- return B(r);
339
- const _ = n(r), u = _.trim();
273
+ const i = a;
274
+ if (!c)
275
+ return B(i);
276
+ const d = n(i), u = d.trim();
340
277
  if (!u)
341
- return _;
278
+ return d;
342
279
  if (/^&lt;script\b/i.test(u)) {
343
- i = "script";
344
- const d = u.includes("&gt;");
345
- return e = !d, d ? k(r) : z(r);
280
+ o = "script";
281
+ const h = u.includes("&gt;");
282
+ return t = !h, h ? y(i) : Z(i);
346
283
  }
347
284
  if (/^&lt;template\b/i.test(u)) {
348
- i = "template";
349
- const d = u.includes("&gt;");
350
- return e = !d, d ? k(r) : z(r);
285
+ o = "template";
286
+ const h = u.includes("&gt;");
287
+ return t = !h, h ? y(i) : Z(i);
351
288
  }
352
289
  if (/^&lt;style\b/i.test(u)) {
353
- i = "style";
354
- const d = u.includes("&gt;");
355
- return e = !d, d ? k(r) : z(r);
290
+ o = "style";
291
+ const h = u.includes("&gt;");
292
+ return t = !h, h ? y(i) : Z(i);
356
293
  }
357
294
  if (/^&lt;\/script&gt;/i.test(u) || /^&lt;\/template&gt;/i.test(u) || /^&lt;\/style&gt;/i.test(u))
358
- return i = null, e = !1, k(r);
359
- const f = u.startsWith("&lt;") && !u.startsWith("&lt;/"), h = u.includes("&gt;");
295
+ return o = null, t = !1, y(i);
296
+ const f = u.startsWith("&lt;") && !u.startsWith("&lt;/"), _ = u.includes("&gt;");
360
297
  if (f) {
361
- const d = h ? k(r) : z(r);
362
- return e = !h, d;
298
+ const h = _ ? y(i) : Z(i);
299
+ return t = !_, h;
363
300
  }
364
- if (e) {
301
+ if (t) {
365
302
  if (u === "&gt;" || u === "/&gt;")
366
- return e = !1, c = null, _;
367
- if (c) {
368
- const p = c, g = r.indexOf(c.quote);
369
- if (g === -1)
370
- return L(
371
- r,
303
+ return t = !1, r = null, d;
304
+ if (r) {
305
+ const p = r, v = i.indexOf(r.quote);
306
+ if (v === -1)
307
+ return M(
308
+ i,
372
309
  p.quote,
373
310
  p.directive,
374
311
  !1,
375
312
  !1
376
313
  );
377
- const Z = r.slice(0, g), v = r.slice(g + 1), $ = n(v);
378
- return c = null, v.includes(">") && (e = !1), `${L(
379
- Z,
314
+ const x = i.slice(0, v), g = i.slice(v + 1), m = n(g);
315
+ return r = null, g.includes(">") && (t = !1), `${M(
316
+ x,
380
317
  p.quote,
381
318
  p.directive,
382
319
  !1,
383
320
  !0
384
- )}${$}`;
321
+ )}${m}`;
385
322
  }
386
- const d = r.match(
323
+ const h = i.match(
387
324
  /^(\s+)([:@#]?[\w-]+(?::[\w-]+)?)(\s*=\s*)(["'])([\s\S]*)$/
388
325
  );
389
- if (d) {
390
- const [, p, g, Z, v, $] = d, S = E(g), W = $.indexOf(v), N = `${p}${l(
391
- S ? "vcb__token_directive" : "vcb__token_attribute",
392
- g
393
- )}${n(Z)}`;
394
- if (W === -1)
395
- return c = {
396
- quote: v,
397
- directive: S
398
- }, `${N}${L(
399
- $,
400
- v,
401
- S,
326
+ if (h) {
327
+ const [, p, v, x, g, m] = h, k = O(v), b = m.indexOf(g), C = `${p}${l(
328
+ k ? "vcb__token_directive" : "vcb__token_attribute",
329
+ v
330
+ )}${n(x)}`;
331
+ if (b === -1)
332
+ return r = {
333
+ quote: g,
334
+ directive: k
335
+ }, `${C}${M(
336
+ m,
337
+ g,
338
+ k,
402
339
  !0,
403
340
  !1
404
341
  )}`;
405
- const Q = $.slice(0, W), P = $.slice(W + 1);
406
- return P.includes(">") && (e = !1), `${N}${L(
342
+ const Q = m.slice(0, b), P = m.slice(b + 1);
343
+ return P.includes(">") && (t = !1), `${C}${M(
407
344
  Q,
408
- v,
409
- S,
345
+ g,
346
+ k,
410
347
  !0,
411
348
  !0
412
349
  )}${n(P)}`;
413
350
  }
414
- const A = T(_);
415
- return h && (e = !1), A;
351
+ const w = H(d);
352
+ return _ && (t = !1), w;
416
353
  }
417
- return i === "script" ? H(r) : k(r);
354
+ return o === "script" ? N(i) : y(i);
418
355
  }).join(`
419
356
  `);
420
- }, ft = (t, o, s = !0) => {
421
- const e = t.toLowerCase();
422
- return e.includes("vue") || e.includes("html") ? ht(o, s) : (o || "").replace(/\r\n/g, `
357
+ }, me = (e, c, s = !0) => {
358
+ const t = e.toLowerCase();
359
+ return t.includes("vue") || t.includes("html") ? fe(c, s) : (c || "").replace(/\r\n/g, `
423
360
  `).split(`
424
- `).map((i) => dt(t, i, s)).join(`
361
+ `).map((o) => _e(e, o, s)).join(`
425
362
  `);
426
- }, gt = ["data-theme", "aria-label"], mt = {
363
+ }, ge = ["data-theme", "aria-label"], be = {
427
364
  key: 0,
428
365
  class: "vcb__header"
429
- }, bt = {
366
+ }, pe = {
430
367
  key: 0,
431
368
  class: "vcb__meta"
432
- }, pt = {
369
+ }, ve = {
433
370
  key: 0,
434
371
  class: "vcb__filename"
435
- }, vt = { class: "vcb__language" }, kt = { class: "vcb__actions" }, $t = ["disabled"], At = {
372
+ }, ke = { class: "vcb__language" }, $e = { class: "vcb__actions" }, Ae = ["disabled"], ye = {
436
373
  key: 0,
437
374
  class: "vcb__line-number"
438
- }, yt = ["innerHTML"], D = /* @__PURE__ */ R({
375
+ }, we = ["innerHTML"], D = /* @__PURE__ */ R({
439
376
  name: "VcbCodeBlock",
440
377
  __name: "CodeBlock",
441
378
  props: {
@@ -457,78 +394,99 @@ const n = (t) => t.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll("
457
394
  theme: { default: "inherit" }
458
395
  },
459
396
  emits: ["copy"],
460
- setup(t, { emit: o }) {
461
- const s = t, e = o, i = F(!1);
462
- let c = null;
463
- const a = y(() => s.code.replace(/\r\n/g, `
464
- `)), r = y(() => a.value ? a.value.split(`
465
- `) : [""]), _ = y(
466
- () => ft(
397
+ setup(e, { emit: c }) {
398
+ const s = e, t = c, o = W(!1), r = W(null), a = W("light");
399
+ let i = null, d = null;
400
+ const u = S(() => s.code.replace(/\r\n/g, `
401
+ `)), f = S(() => u.value ? u.value.split(`
402
+ `) : [""]), _ = S(
403
+ () => me(
467
404
  s.language,
468
- a.value,
405
+ u.value,
469
406
  s.highlight
470
407
  ).split(`
471
408
  `)
472
- ), u = y(
473
- () => s.theme === "inherit" ? void 0 : s.theme
474
- ), f = y(() => {
409
+ ), h = S(
410
+ () => s.theme === "inherit" ? a.value : s.theme
411
+ ), w = S(() => {
475
412
  if (s.maxHeight)
476
413
  return {
477
414
  maxHeight: s.maxHeight
478
415
  };
479
- }), h = async () => {
416
+ }), p = async () => {
480
417
  if (!s.disabled)
481
418
  try {
482
- typeof navigator < "u" && navigator.clipboard?.writeText && await navigator.clipboard.writeText(a.value);
419
+ typeof navigator < "u" && navigator.clipboard?.writeText && await navigator.clipboard.writeText(u.value);
483
420
  } finally {
484
- e("copy", { text: a.value }), i.value = !0, c && clearTimeout(c), c = setTimeout(() => {
485
- i.value = !1, c = null;
421
+ t("copy", { text: u.value }), o.value = !0, i && clearTimeout(i), i = setTimeout(() => {
422
+ o.value = !1, i = null;
486
423
  }, s.copiedDuration);
487
424
  }
425
+ }, v = (m) => m === "dark" ? "dark" : "light", x = (m, k) => {
426
+ let b = m?.parentElement ?? null;
427
+ for (; b; ) {
428
+ if (b.hasAttribute(k))
429
+ return v(b.getAttribute(k));
430
+ b = b.parentElement;
431
+ }
432
+ return null;
433
+ }, g = () => {
434
+ s.theme === "inherit" && (a.value = x(r.value, "data-theme") ?? x(r.value, "data-vf-theme") ?? "light");
488
435
  };
489
436
  return U(() => {
490
- c && (clearTimeout(c), c = null);
491
- }), (d, A) => (m(), b("section", {
492
- class: q(["vcb", { vcb_disabled: t.disabled }]),
493
- "data-theme": u.value,
494
- "aria-label": t.ariaLabel
437
+ g(), !(typeof MutationObserver > "u" || !r.value) && (d = new MutationObserver(() => {
438
+ g();
439
+ }), d.observe(document.documentElement, {
440
+ subtree: !0,
441
+ childList: !0,
442
+ attributes: !0,
443
+ attributeFilter: ["data-theme", "data-vf-theme"]
444
+ }));
445
+ }), G(() => {
446
+ i && (clearTimeout(i), i = null), d && (d.disconnect(), d = null);
447
+ }), (m, k) => ($(), A("section", {
448
+ ref_key: "rootElement",
449
+ ref: r,
450
+ class: q(["vcb", { vcb_disabled: e.disabled }]),
451
+ "data-theme": h.value,
452
+ "aria-label": e.ariaLabel
495
453
  }, [
496
- t.showHeader || d.$slots.actions ? (m(), b("header", mt, [
497
- t.showHeader ? (m(), b("div", bt, [
498
- t.filename ? (m(), b("span", pt, w(t.filename), 1)) : x("", !0),
499
- C("span", vt, w(t.languageLabel) + ": " + w(t.language), 1)
500
- ])) : x("", !0),
501
- C("div", kt, [
502
- G(d.$slots, "actions"),
503
- t.copyable ? (m(), b("button", {
454
+ e.showHeader || m.$slots.actions ? ($(), A("header", be, [
455
+ e.showHeader ? ($(), A("div", pe, [
456
+ e.filename ? ($(), A("span", ve, L(e.filename), 1)) : z("", !0),
457
+ E("span", ke, L(e.languageLabel) + ": " + L(e.language), 1)
458
+ ])) : z("", !0),
459
+ E("div", $e, [
460
+ K(m.$slots, "actions"),
461
+ e.copyable ? ($(), A("button", {
504
462
  key: 0,
505
463
  type: "button",
506
464
  class: "vcb__copy",
507
- disabled: t.disabled,
508
- onClick: h
509
- }, w(i.value ? t.copiedLabel : t.copyLabel), 9, $t)) : x("", !0)
465
+ disabled: e.disabled,
466
+ onClick: p
467
+ }, L(o.value ? e.copiedLabel : e.copyLabel), 9, Ae)) : z("", !0)
510
468
  ])
511
- ])) : x("", !0),
512
- C("pre", {
513
- class: q(["vcb__pre", { vcb__pre_wrap: t.wrap }]),
514
- style: K(f.value)
469
+ ])) : z("", !0),
470
+ E("pre", {
471
+ class: q(["vcb__pre", { vcb__pre_wrap: e.wrap }]),
472
+ style: X(w.value)
515
473
  }, [
516
- C("code", null, [
517
- (m(!0), b(X, null, Y(r.value, (p, g) => (m(), b("span", {
518
- key: g,
474
+ E("code", null, [
475
+ ($(!0), A(Y, null, ee(f.value, (b, C) => ($(), A("span", {
476
+ key: C,
519
477
  class: "vcb__line"
520
478
  }, [
521
- t.showLineNumbers ? (m(), b("span", At, w(g + 1), 1)) : x("", !0),
522
- C("span", {
479
+ e.showLineNumbers ? ($(), A("span", ye, L(C + 1), 1)) : z("", !0),
480
+ E("span", {
523
481
  class: "vcb__line-content",
524
- innerHTML: _.value[g] ?? ""
525
- }, null, 8, yt)
482
+ innerHTML: _.value[C] ?? ""
483
+ }, null, 8, we)
526
484
  ]))), 128))
527
485
  ])
528
486
  ], 6)
529
- ], 10, gt));
487
+ ], 10, ge));
530
488
  }
531
- }), xt = [
489
+ }), Ce = [
532
490
  "plaintext",
533
491
  "text",
534
492
  "txt",
@@ -545,16 +503,16 @@ const n = (t) => t.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll("
545
503
  "css",
546
504
  "scss",
547
505
  "sass"
548
- ], Ct = {
549
- install(t) {
550
- t.component("CodeBlock", D), t.component("VueCodeBlock", D);
506
+ ], Se = {
507
+ install(e) {
508
+ e.component("CodeBlock", D), e.component("VueCodeBlock", D);
551
509
  }
552
510
  };
553
511
  export {
554
512
  D as CodeBlock,
555
- xt as SUPPORTED_CODE_BLOCK_LANGUAGES,
556
- Ct as default,
513
+ Ce as SUPPORTED_CODE_BLOCK_LANGUAGES,
514
+ Se as default,
557
515
  n as escapeCodeHtml,
558
- ft as highlightCodeBlock,
559
- dt as highlightCodeLine
516
+ me as highlightCodeBlock,
517
+ _e as highlightCodeLine
560
518
  };
@@ -1,11 +1,11 @@
1
- (function(f,s){typeof exports=="object"&&typeof module<"u"?s(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],s):(f=typeof globalThis<"u"?globalThis:f||self,s(f.VueCodeBlock={},f.Vue))})(this,(function(f,s){"use strict";var Z=document.createElement("style");Z.textContent=`.vcb{display:grid;gap:var(--vcb-gap, 0);border:1px solid var(--vcb-border-color, #cbd5e1);border-radius:var(--vcb-border-radius, .625rem);background:var(--vcb-background-color, #f8fbff);color:var(--vcb-text-color, #0f172a);font-family:var(--vcb-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-size:var(--vcb-font-size, .8125rem);line-height:var(--vcb-line-height, 1.5)}.vcb__header{display:flex;align-items:center;justify-content:space-between;gap:var(--vcb-header-gap, .75rem);padding:var(--vcb-header-padding, .55rem .75rem);border-bottom:1px solid var(--vcb-header-border-color, rgba(148, 163, 184, .28))}.vcb__meta{display:inline-flex;align-items:center;gap:var(--vcb-meta-gap, .55rem);color:var(--vcb-meta-color, #475569);font-size:var(--vcb-meta-font-size, .75rem)}.vcb__filename{color:var(--vcb-filename-color, #0f172a);font-weight:var(--vcb-filename-font-weight, 600)}.vcb__actions{display:inline-flex;align-items:center;gap:var(--vcb-actions-gap, .45rem)}.vcb__copy{border:1px solid var(--vcb-action-border-color, rgba(148, 163, 184, .38));border-radius:var(--vcb-action-border-radius, .375rem);background:var(--vcb-action-background-color, #ffffff);color:var(--vcb-action-text-color, #0f172a);padding:var(--vcb-action-padding, .2rem .55rem);font-size:var(--vcb-action-font-size, .75rem)}.vcb__pre{margin:0;padding:var(--vcb-padding, .75rem .9rem);overflow:auto;white-space:pre}.vcb__pre_wrap{white-space:pre-wrap;word-break:break-word}.vcb__line{display:flex;align-items:baseline;gap:var(--vcb-line-gap, .7rem)}.vcb__line-number{text-align:right;color:var(--vcb-line-number-color, #64748b);min-width:var(--vcb-line-number-min-width, 2.1rem);-webkit-user-select:none;user-select:none}.vcb__line-content{white-space:inherit}.vcb__token_keyword{color:var(--vcb-token-keyword-color, #8b2fc9)}.vcb__token_string{color:var(--vcb-token-string-color, #0f7b45)}.vcb__token_number{color:var(--vcb-token-number-color, #c2410c)}.vcb__token_comment{color:var(--vcb-token-comment-color, #64748b)}.vcb__token_variable{color:var(--vcb-token-variable-color, #0f4c81)}.vcb__token_identifier{color:var(--vcb-token-identifier-color, #0369a1)}.vcb__token_function{color:var(--vcb-token-function-color, #1d4ed8)}.vcb__token_property{color:var(--vcb-token-property-color, #6d28d9)}.vcb__token_operator{color:var(--vcb-token-operator-color, #be185d)}.vcb__token_tag{color:var(--vcb-token-tag-color, #0f4c81)}.vcb__token_selector{color:var(--vcb-token-selector-color, #0f4c81)}.vcb__token_component{color:var(--vcb-token-component-color, #0369a1)}.vcb__token_attribute{color:var(--vcb-token-attribute-color, #7c3aed)}.vcb__token_directive{color:var(--vcb-token-directive-color, #a21caf)}.vcb[data-theme=dark],:root[data-theme=dark] .vcb:not([data-theme=light]),[data-theme=dark] .vcb:not([data-theme=light]){--vcb-background-color: var( --vcb-dark-background-color, #0a1425 );--vcb-text-color: var(--vcb-dark-text-color, #e2e8f0);--vcb-border-color: var( --vcb-dark-border-color, rgba(148, 163, 184, .35) );--vcb-header-border-color: var( --vcb-dark-header-border-color, rgba(148, 163, 184, .35) );--vcb-meta-color: var(--vcb-dark-meta-color, #93a4bf);--vcb-filename-color: var( --vcb-dark-filename-color, #e2e8f0 );--vcb-action-border-color: var( --vcb-dark-action-border-color, rgba(148, 163, 184, .45) );--vcb-action-background-color: var( --vcb-dark-action-background-color, rgba(15, 23, 42, .7) );--vcb-action-text-color: var( --vcb-dark-action-text-color, #e2e8f0 );--vcb-line-number-color: var( --vcb-dark-line-number-color, #64748b );--vcb-token-keyword-color: var( --vcb-dark-token-keyword-color, #c084fc );--vcb-token-string-color: var( --vcb-dark-token-string-color, #86efac );--vcb-token-number-color: var( --vcb-dark-token-number-color, #fca5a5 );--vcb-token-comment-color: var( --vcb-dark-token-comment-color, #94a3b8 );--vcb-token-variable-color: var( --vcb-dark-token-variable-color, #bfdbfe );--vcb-token-tag-color: var( --vcb-dark-token-tag-color, #93c5fd );--vcb-token-selector-color: var( --vcb-dark-token-selector-color, #93c5fd );--vcb-token-component-color: var( --vcb-dark-token-component-color, #67e8f9 );--vcb-token-attribute-color: var( --vcb-dark-token-attribute-color, #c4b5fd );--vcb-token-directive-color: var( --vcb-dark-token-directive-color, #f0abfc );--vcb-token-identifier-color: var( --vcb-dark-token-identifier-color, #7dd3fc );--vcb-token-function-color: var( --vcb-dark-token-function-color, #93c5fd );--vcb-token-property-color: var( --vcb-dark-token-property-color, #a5b4fc );--vcb-token-operator-color: var( --vcb-dark-token-operator-color, #f0abfc )}.vcb_disabled{opacity:var(--vcb-disabled-opacity, .6)}
2
- /*$vite$:1*/`,document.head.appendChild(Z);const o=e=>e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),T=e=>e.replaceAll("&quot;",'"').replaceAll("&#39;","'").replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&"),S=e=>o(e),i=(e,r)=>`<span class="vcb__token ${e}">${r}</span>`,I="\\b\\d(?:[\\d_]*\\d)?(?:\\.\\d(?:[\\d_]*\\d)?)?\\b",R="\\b-?\\d(?:[\\d_]*\\d)?(?:\\.\\d(?:[\\d_]*\\d)?)?(?:px|rem|em|%|vh|vw|fr|s|ms|deg)?\\b",B=e=>e.startsWith(":")||e.startsWith("@")||e.startsWith("#")||e.startsWith("v-"),W=e=>/^[A-Z]/.test(e),U=e=>{let r=0,n=i("vcb__token_string",o("`"));for(;r<e.length-1;){const t=e.indexOf("${",r),a=t===-1?e.length-1:t,c=e.slice(r,a);if(c&&(n+=i("vcb__token_string",o(c))),t===-1)break;n+=o("${");let d=t+2,l=1;for(;d<e.length&&l>0;){const b=e[d];b==="{"?l+=1:b==="}"&&(l-=1),d+=1}const _=e.slice(t+2,d-1);n+=w(_),n+=o("}"),r=d}return n+=i("vcb__token_string",o("`")),n},w=e=>z(e),F=e=>{if(e.length<2)return i("vcb__token_string",e);const r=e[0],n=T(e.slice(1,-1)),t=w(n),a=r==='"'?"&quot;":"&#39;";return`${a}${t}${a}`},A=(e,r,n,t,a)=>{const c=n?w(T(e)):i("vcb__token_string",o(e)),d=r==='"'?"&quot;":"&#39;";return`${t?d:""}${c}${a?d:""}`},V=e=>e.replaceAll(/{{\s*([\s\S]*?)\s*}}/g,(r,n)=>{const t=w(n);return`${o("{{ ")}${t}${o(" }}")}`}),E=e=>e.replaceAll(/(\s+)([:@#]?[\w-]+(?::[\w-]+)?)(\s*=\s*)?("[^"]*"|'[^']*')?/g,(r,n,t,a="",c="")=>`${o(n)}${i(B(t)?"vcb__token_directive":"vcb__token_attribute",o(t))}${o(a)}${c?B(t)?F(c):i("vcb__token_string",o(c)):""}`),x=e=>{const r=e.match(/^(\s*)<([/\w-]+)([\s\S]*)$/);if(!r)return o(e);const[,n,t,a]=r,c=t.startsWith("/"),d=c?t.slice(1):t,l=W(d)?"vcb__token_component":"vcb__token_tag";return`${o(n)}${o(c?"</":"<")}${i(l,o(d))}${E(String(a))}`},G=e=>{if(e.startsWith("<!--")&&e.endsWith("-->"))return i("vcb__token_comment",o(e));const r=e.startsWith("</"),n=e.endsWith("/>"),a=e.slice(r?2:1,e.length-(n?2:1)).match(/^([\w-]+)([\s\S]*)$/);if(!a)return o(e);const[,c,d]=a,l=W(c)?"vcb__token_component":"vcb__token_tag";return`${o(r?"</":"<")}${i(l,o(c))}${E(d)}${o(n?"/>":">")}`},J=e=>o(e).replaceAll(/"(?:[^"\\]|\\.)*"(?=\s*:)?/g,n=>i("vcb__token_string",n)).replaceAll(/\b(true|false|null)\b/g,n=>i("vcb__token_keyword",n)).replaceAll(/\b-?\d(?:[\d_]*\d)?(?:\.\d(?:[\d_]*\d)?)?(?:[eE][+-]?\d(?:[\d_]*\d)?)?\b/g,n=>i("vcb__token_number",n)),Q=(e,r)=>{for(let n=r-1;n>=0;n-=1){const t=e[n];if(!/\s/.test(t))return t}return""},O=(e,r)=>{for(let n=r;n<e.length;n+=1){const t=e[n];if(!/\s/.test(t))return t}return""},K=(e,r)=>{let n=r;for(;n>0&&/\s/.test(e[n-1]);)n-=1;return e.slice(0,n).match(/([A-Za-z_$][\w$]*)\s*$/)?.[1]??""},X=(e,r,n)=>{const t=Q(e,n),a=O(e,n+r.length),c=K(e,n),d=e.slice(0,n);return t==="."||/\?\.\s*$/.test(d)||a===":"&&["{",",",""].includes(t)?"vcb__token_property":a==="("?"vcb__token_function":/^[A-Z]/.test(r)||["import","from","new","class","extends"].includes(c)?"vcb__token_identifier":"vcb__token_variable"},z=e=>{const r=new RegExp(`(//.*$)|((["'\`])(?:\\\\.|(?!\\3).)*\\3)|\\b(const|let|var|function|return|if|else|for|while|class|new|import|export|from|await|async|try|catch|throw|true|false|null|undefined)\\b|(=>|\\?\\?|\\?|:|\\.|[{}()[\\],])|${I}|\\b[A-Za-z_$][\\w$]*\\b`,"g");let n=0,t="";for(const a of e.matchAll(r)){const c=a[0]??"",d=a.index??0;t+=o(e.slice(n,d)),a[1]?t+=i("vcb__token_comment",o(c)):a[2]?t+=c.startsWith("`")&&c.includes("${")?U(c):i("vcb__token_string",o(c)):a[4]?t+=i("vcb__token_keyword",o(c)):a[5]?t+=i("vcb__token_operator",o(c)):/^\d/.test(c)?t+=i("vcb__token_number",o(c)):t+=i(X(e,c,d),o(c)),n=d+c.length}return t+=o(e.slice(n)),t},Y=(e,r)=>{let n=null;for(let t=r+1;t<e.length;t+=1){const a=e[t];if(n){a===n&&e[t-1]!=="\\"&&(n=null);continue}if(a==='"'||a==="'"){n=a;continue}if(a===">")return t}return-1},g=e=>{if(!e.trim())return o(e);let r=0,n="";for(;r<e.length;){const t=e.indexOf("<",r);if(t===-1){n+=V(o(e.slice(r)));break}n+=V(o(e.slice(r,t)));const a=Y(e,t);if(a===-1){n+=o(e.slice(t));break}n+=G(e.slice(t,a+1)),r=a+1}return n},ee=e=>{const r=e.match(/^(\s*)(npm)(\s+)(run)(\s+)([^\s].*)$/);if(r){const[,l,_,b,m,u,v]=r;return`${o(l)}${i("vcb__token_keyword",o(_))}${o(b)}${i("vcb__token_function",o(m))}${o(u)}${i("vcb__token_variable",o(v))}`}const n=l=>{const _=/(\s+)|((["'])(?:\\.|(?!\3).)*\3)|(\$[A-Za-z_][A-Za-z0-9_]*)|(@[A-Za-z0-9._/-]+|[A-Za-z0-9._-]+\/[A-Za-z0-9._/@-]+)|(-{1,2}[A-Za-z][\w-]*)(?:=(\S+))?|([^\s]+)/g;let b=0,m="";for(const u of l.matchAll(_)){const v=u[0]??"",y=u.index??0;m+=o(l.slice(b,y)),u[1]?m+=o(v):u[2]?m+=i("vcb__token_string",o(v)):u[4]?m+=i("vcb__token_variable",o(v)):u[5]?m+=i("vcb__token_string",o(v)):u[6]?(m+=i("vcb__token_directive",o(u[6])),u[7]&&(m+=`${o("=")}${i(u[7].startsWith("@")||u[7].includes("/")?"vcb__token_string":"vcb__token_variable",o(u[7]))}`)):u[8]?m+=i("vcb__token_variable",o(v)):m+=o(v),b=y+v.length}return m+=o(l.slice(b)),m},t=e.match(/^(\s*)(npm|pnpm|yarn|bun)(\s+)(i|install|add|remove|rm|uninstall|create|dlx|exec|x)(\s+)(.+)$/);if(t){const[,l,_,b,m,u,v]=t;return`${o(l)}${i("vcb__token_keyword",o(_))}${o(b)}${i("vcb__token_function",o(m))}${o(u)}${n(v)}`}const a=/(#[^\n]*$)|((["'])(?:\\.|(?!\3).)*\3)|(\$[A-Za-z_][A-Za-z0-9_]*)|(@[A-Za-z0-9._/-]+)|(^\s*[A-Za-z][\w-]*\b)|(\s-[A-Za-z-]+\b|\s--[A-Za-z-]+\b)/g;let c=0,d="";for(const l of e.matchAll(a)){const _=l[0]??"",b=l.index??0;if(d+=o(e.slice(c,b)),l[1])d+=i("vcb__token_comment",o(_));else if(l[2])d+=i("vcb__token_string",o(_));else if(l[4])d+=i("vcb__token_variable",o(_));else if(l[5])d+=i("vcb__token_string",o(_));else if(l[6])d+=i("vcb__token_keyword",o(_.trimStart()));else if(l[7]){const m=_.match(/^\s*/)?.[0]??"";d+=`${o(m)}${i("vcb__token_directive",o(_.trimStart()))}`}else d+=o(_);c=b+_.length}return d+=o(e.slice(c)),d},P=e=>{const r=new RegExp(`(\\/\\*.*?\\*\\/)|((["'])(?:\\\\.|(?!\\3).)*\\3)|(#[0-9A-Fa-f]{3,8})|(@[A-Za-z-]+)|([A-Za-z_-][\\w-]*)(?=\\s*\\()|${R}|\\b[A-Za-z_-][\\w-]*\\b`,"g");let n=0,t="";for(const a of e.matchAll(r)){const c=a[0]??"",d=a.index??0;t+=o(e.slice(n,d)),a[1]?t+=i("vcb__token_comment",o(c)):a[2]?t+=i("vcb__token_string",o(c)):/^#[0-9A-Fa-f]{3,8}$/.test(c)?t+=i("vcb__token_number",o(c)):c.startsWith("@")?t+=i("vcb__token_keyword",o(c)):O(e,d+c.length)==="("?t+=i("vcb__token_function",o(c)):/^-?\d/.test(c)?t+=i("vcb__token_number",o(c)):t+=i("vcb__token_variable",o(c)),n=d+c.length}return t+=o(e.slice(n)),t},te=e=>{const r=e.match(/^(\s*)(\/\*.*\*\/)(\s*)$/);if(r)return`${o(r[1])}${i("vcb__token_comment",o(r[2]))}${o(r[3])}`;const n=e.match(/^(\s*)([^{}][^{}]*?)(\s*)(\{|\})\s*$/);if(n){const[,a,c,d,l]=n,_=c.trim(),b=_===":root"||_.startsWith(".")||_.startsWith("#")||/^[A-Za-z_-][\w-]*$/.test(_)?"vcb__token_selector":"vcb__token_variable";return`${o(a)}${i(b,o(_))}${o(d)}${o(l)}`}const t=e.match(/^(\s*)(--?[A-Za-z_][\w-]*|[A-Za-z_][\w-]*)(\s*:\s*)(.*)$/);if(t){const[,a,c,d,l]=t;return`${o(a)}${i("vcb__token_property",o(c))}${o(d)}${P(l)}`}return P(e)},D=(e,r,n=!0)=>{if(!n)return S(r);const t=e.toLowerCase();return t.includes("json")?J(r):t.includes("vue")||t.includes("html")?g(r):t.includes("js")||t.includes("ts")||t.includes("javascript")||t.includes("typescript")?z(r):t.includes("bash")||t.includes("shell")||t==="sh"?ee(r):t.includes("css")||t.includes("scss")||t.includes("sass")?te(r):S(r)},oe=(e,r)=>{const n=(e||"").replace(/\r\n/g,`
1
+ (function(h,s){typeof exports=="object"&&typeof module<"u"?s(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],s):(h=typeof globalThis<"u"?globalThis:h||self,s(h.VueCodeBlock={},h.Vue))})(this,(function(h,s){"use strict";var N=document.createElement("style");N.textContent=`.vcb{display:grid;gap:var(--vcb-gap, 0);border:1px solid var(--vcb-border-color, var(--vf-color-border, #d9dde3));border-radius:var(--vcb-border-radius, var(--vf-radius-surface, var(--vf-radius, .625rem)));background:var(--vcb-background-color, var(--vf-color-surface, #ffffff));color:var(--vcb-text-color, var(--vf-color-text, #1f232b));font-family:var(--vcb-font-family, var(--vf-font-family-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace));font-size:var(--vcb-font-size, var(--vf-font-size-sm, .8125rem));line-height:var(--vcb-line-height, var(--vf-line-height-normal, 1.5))}.vcb__header{display:flex;align-items:center;justify-content:space-between;gap:var(--vcb-header-gap, .75rem);padding:var(--vcb-header-padding, .55rem .75rem);border-bottom:1px solid var(--vcb-header-border-color, var(--vf-color-border, #d9dde3))}.vcb__meta{display:inline-flex;align-items:center;gap:var(--vcb-meta-gap, .55rem);color:var(--vcb-meta-color, var(--vf-color-muted, #616773));font-size:var(--vcb-meta-font-size, var(--vf-font-size-sm, .75rem))}.vcb__filename{color:var(--vcb-filename-color, var(--vf-color-text, #1f232b));font-weight:var(--vcb-filename-font-weight, var(--vf-font-weight-semibold, 600))}.vcb__actions{display:inline-flex;align-items:center;gap:var(--vcb-actions-gap, .45rem)}.vcb__copy{border:1px solid var(--vcb-action-border-color, var(--vf-color-border, #d9dde3));border-radius:var(--vcb-action-border-radius, var(--vf-radius-control-tight, .375rem));background:var(--vcb-action-background-color, var(--vf-color-surface-muted, #f3f3f3));color:var(--vcb-action-text-color, var(--vf-color-text, #1f232b));padding:var(--vcb-action-padding, var(--vf-button-padding-sm, .2rem .55rem));font-size:var(--vcb-action-font-size, var(--vf-font-size-sm, .75rem))}.vcb__pre{margin:0;padding:var(--vcb-padding, var(--vf-prose-code-block-padding, .75rem .9rem));overflow:auto;white-space:pre}.vcb__pre_wrap{white-space:pre-wrap;word-break:break-word}.vcb__line{display:flex;align-items:baseline;gap:var(--vcb-line-gap, .7rem)}.vcb__line-number{text-align:right;color:var(--vcb-line-number-color, var(--vf-color-muted, #616773));min-width:var(--vcb-line-number-min-width, 2.1rem);-webkit-user-select:none;user-select:none}.vcb__line-content{white-space:inherit}.vcb__token_keyword{color:var(--vcb-token-keyword-color, var(--vf-color-help, #8553a1))}.vcb__token_string{color:var(--vcb-token-string-color, var(--vf-color-success, #2e7d32))}.vcb__token_number{color:var(--vcb-token-number-color, var(--vf-color-warn, #9f8400))}.vcb__token_comment{color:var(--vcb-token-comment-color, var(--vf-color-muted, #616773))}.vcb__token_variable{color:var(--vcb-token-variable-color, var(--vf-color-text, #1f232b))}.vcb__token_identifier{color:var(--vcb-token-identifier-color, var(--vf-color-info, #0069ba))}.vcb__token_function{color:var(--vcb-token-function-color, var(--vf-color-primary, #0e639c))}.vcb__token_property{color:var(--vcb-token-property-color, var(--vf-color-primary, #0e639c))}.vcb__token_operator{color:var(--vcb-token-operator-color, var(--vf-color-danger, #c72e39))}.vcb__token_tag{color:var(--vcb-token-tag-color, var(--vf-color-primary, #0e639c))}.vcb__token_selector{color:var(--vcb-token-selector-color, var(--vf-color-primary, #0e639c))}.vcb__token_component{color:var(--vcb-token-component-color, var(--vf-color-info, #0069ba))}.vcb__token_attribute{color:var(--vcb-token-attribute-color, var(--vf-color-help, #8553a1))}.vcb__token_directive{color:var(--vcb-token-directive-color, var(--vf-color-help, #8553a1))}.vcb[data-theme=dark],:root[data-theme=dark] .vcb:not([data-theme=light]),[data-theme=dark] .vcb:not([data-theme=light]){--vcb-background-color: var( --vcb-dark-background-color, var(--vf-color-surface, #252526) );--vcb-text-color: var(--vcb-dark-text-color, var(--vf-color-text, #d4d4d4));--vcb-border-color: var( --vcb-dark-border-color, var(--vf-color-border, #3c3c3c) );--vcb-header-border-color: var( --vcb-dark-header-border-color, var(--vf-color-border, #3c3c3c) );--vcb-meta-color: var(--vcb-dark-meta-color, var(--vf-color-muted, #9da0a6));--vcb-filename-color: var( --vcb-dark-filename-color, var(--vf-color-text, #d4d4d4) );--vcb-action-border-color: var( --vcb-dark-action-border-color, var(--vf-color-border, #3c3c3c) );--vcb-action-background-color: var( --vcb-dark-action-background-color, var(--vf-color-surface-muted, #2d2d30) );--vcb-action-text-color: var( --vcb-dark-action-text-color, var(--vf-color-text, #d4d4d4) );--vcb-line-number-color: var( --vcb-dark-line-number-color, var(--vf-color-muted, #9da0a6) );--vcb-token-keyword-color: var( --vcb-dark-token-keyword-color, var(--vf-color-help, #c586c0) );--vcb-token-string-color: var( --vcb-dark-token-string-color, var(--vf-color-success, #6a9955) );--vcb-token-number-color: var( --vcb-dark-token-number-color, var(--vf-color-warn, #d7ba7d) );--vcb-token-comment-color: var(--vcb-dark-token-comment-color, #6a9955);--vcb-token-variable-color: var( --vcb-dark-token-variable-color, var(--vf-color-text, #d4d4d4) );--vcb-token-tag-color: var( --vcb-dark-token-tag-color, var(--vf-color-primary, #569cd6) );--vcb-token-selector-color: var( --vcb-dark-token-selector-color, var(--vf-color-warn, #d7ba7d) );--vcb-token-component-color: var( --vcb-dark-token-component-color, var(--vf-color-info, #4ec9b0) );--vcb-token-attribute-color: var(--vcb-dark-token-attribute-color, #9cdcfe);--vcb-token-directive-color: var(--vcb-dark-token-directive-color, #c586c0);--vcb-token-identifier-color: var(--vcb-dark-token-identifier-color, #9cdcfe);--vcb-token-function-color: var( --vcb-dark-token-function-color, var(--vf-color-contrast, #dcdcaa) );--vcb-token-property-color: var(--vcb-dark-token-property-color, #9cdcfe);--vcb-token-operator-color: var(--vcb-dark-token-operator-color, #d4d4d4)}.vcb_disabled{opacity:var(--vcb-disabled-opacity, .6)}
2
+ /*$vite$:1*/`,document.head.appendChild(N);const o=e=>e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),W=e=>e.replaceAll("&quot;",'"').replaceAll("&#39;","'").replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&"),B=e=>o(e),i=(e,n)=>`<span class="vcb__token ${e}">${n}</span>`,I="\\b\\d(?:[\\d_]*\\d)?(?:\\.\\d(?:[\\d_]*\\d)?)?\\b",R="\\b-?\\d(?:[\\d_]*\\d)?(?:\\.\\d(?:[\\d_]*\\d)?)?(?:px|rem|em|%|vh|vw|fr|s|ms|deg)?\\b",L=e=>e.startsWith(":")||e.startsWith("@")||e.startsWith("#")||e.startsWith("v-"),O=e=>/^[A-Z]/.test(e),F=e=>{let n=0,r=i("vcb__token_string",o("`"));for(;n<e.length-1;){const t=e.indexOf("${",n),a=t===-1?e.length-1:t,c=e.slice(n,a);if(c&&(r+=i("vcb__token_string",o(c))),t===-1)break;r+=o("${");let d=t+2,l=1;for(;d<e.length&&l>0;){const v=e[d];v==="{"?l+=1:v==="}"&&(l-=1),d+=1}const b=e.slice(t+2,d-1);r+=E(b),r+=o("}"),n=d}return r+=i("vcb__token_string",o("`")),r},E=e=>T(e),U=e=>{if(e.length<2)return i("vcb__token_string",e);const n=e[0],r=W(e.slice(1,-1)),t=E(r),a=n==='"'?"&quot;":"&#39;";return`${a}${t}${a}`},S=(e,n,r,t,a)=>{const c=r?E(W(e)):i("vcb__token_string",o(e)),d=n==='"'?"&quot;":"&#39;";return`${t?d:""}${c}${a?d:""}`},V=e=>e.replaceAll(/{{\s*([\s\S]*?)\s*}}/g,(n,r)=>{const t=E(r);return`${o("{{ ")}${t}${o(" }}")}`}),M=e=>e.replaceAll(/(\s+)([:@#]?[\w-]+(?::[\w-]+)?)(\s*=\s*)?("[^"]*"|'[^']*')?/g,(n,r,t,a="",c="")=>`${o(r)}${i(L(t)?"vcb__token_directive":"vcb__token_attribute",o(t))}${o(a)}${c?L(t)?U(c):i("vcb__token_string",o(c)):""}`),z=e=>{const n=e.match(/^(\s*)<([/\w-]+)([\s\S]*)$/);if(!n)return o(e);const[,r,t,a]=n,c=t.startsWith("/"),d=c?t.slice(1):t,l=O(d)?"vcb__token_component":"vcb__token_tag";return`${o(r)}${o(c?"</":"<")}${i(l,o(d))}${M(String(a))}`},G=e=>{if(e.startsWith("<!--")&&e.endsWith("-->"))return i("vcb__token_comment",o(e));const n=e.startsWith("</"),r=e.endsWith("/>"),a=e.slice(n?2:1,e.length-(r?2:1)).match(/^([\w-]+)([\s\S]*)$/);if(!a)return o(e);const[,c,d]=a,l=O(c)?"vcb__token_component":"vcb__token_tag";return`${o(n?"</":"<")}${i(l,o(c))}${M(d)}${o(r?"/>":">")}`},J=e=>o(e).replaceAll(/"(?:[^"\\]|\\.)*"(?=\s*:)?/g,r=>i("vcb__token_string",r)).replaceAll(/\b(true|false|null)\b/g,r=>i("vcb__token_keyword",r)).replaceAll(/\b-?\d(?:[\d_]*\d)?(?:\.\d(?:[\d_]*\d)?)?(?:[eE][+-]?\d(?:[\d_]*\d)?)?\b/g,r=>i("vcb__token_number",r)),Q=(e,n)=>{for(let r=n-1;r>=0;r-=1){const t=e[r];if(!/\s/.test(t))return t}return""},P=(e,n)=>{for(let r=n;r<e.length;r+=1){const t=e[r];if(!/\s/.test(t))return t}return""},K=(e,n)=>{let r=n;for(;r>0&&/\s/.test(e[r-1]);)r-=1;return e.slice(0,r).match(/([A-Za-z_$][\w$]*)\s*$/)?.[1]??""},X=(e,n,r)=>{const t=Q(e,r),a=P(e,r+n.length),c=K(e,r),d=e.slice(0,r);return t==="."||/\?\.\s*$/.test(d)||a===":"&&["{",",",""].includes(t)?"vcb__token_property":a==="("?"vcb__token_function":/^[A-Z]/.test(n)||["import","from","new","class","extends"].includes(c)?"vcb__token_identifier":"vcb__token_variable"},T=e=>{const n=new RegExp(`(//.*$)|((["'\`])(?:\\\\.|(?!\\3).)*\\3)|\\b(const|let|var|function|return|if|else|for|while|class|new|import|export|from|await|async|try|catch|throw|true|false|null|undefined)\\b|(=>|\\?\\?|\\?|:|\\.|[{}()[\\],])|${I}|\\b[A-Za-z_$][\\w$]*\\b`,"g");let r=0,t="";for(const a of e.matchAll(n)){const c=a[0]??"",d=a.index??0;t+=o(e.slice(r,d)),a[1]?t+=i("vcb__token_comment",o(c)):a[2]?t+=c.startsWith("`")&&c.includes("${")?F(c):i("vcb__token_string",o(c)):a[4]?t+=i("vcb__token_keyword",o(c)):a[5]?t+=i("vcb__token_operator",o(c)):/^\d/.test(c)?t+=i("vcb__token_number",o(c)):t+=i(X(e,c,d),o(c)),r=d+c.length}return t+=o(e.slice(r)),t},Y=(e,n)=>{let r=null;for(let t=n+1;t<e.length;t+=1){const a=e[t];if(r){a===r&&e[t-1]!=="\\"&&(r=null);continue}if(a==='"'||a==="'"){r=a;continue}if(a===">")return t}return-1},w=e=>{if(!e.trim())return o(e);let n=0,r="";for(;n<e.length;){const t=e.indexOf("<",n);if(t===-1){r+=V(o(e.slice(n)));break}r+=V(o(e.slice(n,t)));const a=Y(e,t);if(a===-1){r+=o(e.slice(t));break}r+=G(e.slice(t,a+1)),n=a+1}return r},ee=e=>{const n=e.match(/^(\s*)(npm)(\s+)(run)(\s+)([^\s].*)$/);if(n){const[,l,b,v,_,u,f]=n;return`${o(l)}${i("vcb__token_keyword",o(b))}${o(v)}${i("vcb__token_function",o(_))}${o(u)}${i("vcb__token_variable",o(f))}`}const r=l=>{const b=/(\s+)|((["'])(?:\\.|(?!\3).)*\3)|(\$[A-Za-z_][A-Za-z0-9_]*)|(@[A-Za-z0-9._/-]+|[A-Za-z0-9._-]+\/[A-Za-z0-9._/@-]+)|(-{1,2}[A-Za-z][\w-]*)(?:=(\S+))?|([^\s]+)/g;let v=0,_="";for(const u of l.matchAll(b)){const f=u[0]??"",A=u.index??0;_+=o(l.slice(v,A)),u[1]?_+=o(f):u[2]?_+=i("vcb__token_string",o(f)):u[4]?_+=i("vcb__token_variable",o(f)):u[5]?_+=i("vcb__token_string",o(f)):u[6]?(_+=i("vcb__token_directive",o(u[6])),u[7]&&(_+=`${o("=")}${i(u[7].startsWith("@")||u[7].includes("/")?"vcb__token_string":"vcb__token_variable",o(u[7]))}`)):u[8]?_+=i("vcb__token_variable",o(f)):_+=o(f),v=A+f.length}return _+=o(l.slice(v)),_},t=e.match(/^(\s*)(npm|pnpm|yarn|bun)(\s+)(i|install|add|remove|rm|uninstall|create|dlx|exec|x)(\s+)(.+)$/);if(t){const[,l,b,v,_,u,f]=t;return`${o(l)}${i("vcb__token_keyword",o(b))}${o(v)}${i("vcb__token_function",o(_))}${o(u)}${r(f)}`}const a=/(#[^\n]*$)|((["'])(?:\\.|(?!\3).)*\3)|(\$[A-Za-z_][A-Za-z0-9_]*)|(@[A-Za-z0-9._/-]+)|(^\s*[A-Za-z][\w-]*\b)|(\s-[A-Za-z-]+\b|\s--[A-Za-z-]+\b)/g;let c=0,d="";for(const l of e.matchAll(a)){const b=l[0]??"",v=l.index??0;if(d+=o(e.slice(c,v)),l[1])d+=i("vcb__token_comment",o(b));else if(l[2])d+=i("vcb__token_string",o(b));else if(l[4])d+=i("vcb__token_variable",o(b));else if(l[5])d+=i("vcb__token_string",o(b));else if(l[6])d+=i("vcb__token_keyword",o(b.trimStart()));else if(l[7]){const _=b.match(/^\s*/)?.[0]??"";d+=`${o(_)}${i("vcb__token_directive",o(b.trimStart()))}`}else d+=o(b);c=v+b.length}return d+=o(e.slice(c)),d},D=e=>{const n=new RegExp(`(\\/\\*.*?\\*\\/)|((["'])(?:\\\\.|(?!\\3).)*\\3)|(#[0-9A-Fa-f]{3,8})|(@[A-Za-z-]+)|([A-Za-z_-][\\w-]*)(?=\\s*\\()|${R}|\\b[A-Za-z_-][\\w-]*\\b`,"g");let r=0,t="";for(const a of e.matchAll(n)){const c=a[0]??"",d=a.index??0;t+=o(e.slice(r,d)),a[1]?t+=i("vcb__token_comment",o(c)):a[2]?t+=i("vcb__token_string",o(c)):/^#[0-9A-Fa-f]{3,8}$/.test(c)?t+=i("vcb__token_number",o(c)):c.startsWith("@")?t+=i("vcb__token_keyword",o(c)):P(e,d+c.length)==="("?t+=i("vcb__token_function",o(c)):/^-?\d/.test(c)?t+=i("vcb__token_number",o(c)):t+=i("vcb__token_variable",o(c)),r=d+c.length}return t+=o(e.slice(r)),t},te=e=>{const n=e.match(/^(\s*)(\/\*.*\*\/)(\s*)$/);if(n)return`${o(n[1])}${i("vcb__token_comment",o(n[2]))}${o(n[3])}`;const r=e.match(/^(\s*)([^{}][^{}]*?)(\s*)(\{|\})\s*$/);if(r){const[,a,c,d,l]=r,b=c.trim(),v=b===":root"||b.startsWith(".")||b.startsWith("#")||/^[A-Za-z_-][\w-]*$/.test(b)?"vcb__token_selector":"vcb__token_variable";return`${o(a)}${i(v,o(b))}${o(d)}${o(l)}`}const t=e.match(/^(\s*)(--?[A-Za-z_][\w-]*|[A-Za-z_][\w-]*)(\s*:\s*)(.*)$/);if(t){const[,a,c,d,l]=t;return`${o(a)}${i("vcb__token_property",o(c))}${o(d)}${D(l)}`}return D(e)},H=(e,n,r=!0)=>{if(!r)return B(n);const t=e.toLowerCase();return t.includes("json")?J(n):t.includes("vue")||t.includes("html")?w(n):t.includes("js")||t.includes("ts")||t.includes("javascript")||t.includes("typescript")?T(n):t.includes("bash")||t.includes("shell")||t==="sh"?ee(n):t.includes("css")||t.includes("scss")||t.includes("sass")?te(n):B(n)},oe=(e,n)=>{const r=(e||"").replace(/\r\n/g,`
3
3
  `).split(`
4
- `);let t=!1,a=null,c=null;return n.map(d=>{const l=d;if(!r)return S(l);const _=o(l),b=_.trim();if(!b)return _;if(/^&lt;script\b/i.test(b)){a="script";const v=b.includes("&gt;");return t=!v,v?g(l):x(l)}if(/^&lt;template\b/i.test(b)){a="template";const v=b.includes("&gt;");return t=!v,v?g(l):x(l)}if(/^&lt;style\b/i.test(b)){a="style";const v=b.includes("&gt;");return t=!v,v?g(l):x(l)}if(/^&lt;\/script&gt;/i.test(b)||/^&lt;\/template&gt;/i.test(b)||/^&lt;\/style&gt;/i.test(b))return a=null,t=!1,g(l);const m=b.startsWith("&lt;")&&!b.startsWith("&lt;/"),u=b.includes("&gt;");if(m){const v=u?g(l):x(l);return t=!u,v}if(t){if(b==="&gt;"||b==="/&gt;")return t=!1,c=null,_;if(c){const k=c,h=l.indexOf(c.quote);if(h===-1)return A(l,k.quote,k.directive,!1,!1);const M=l.slice(0,h),p=l.slice(h+1),$=o(p);return c=null,p.includes(">")&&(t=!1),`${A(M,k.quote,k.directive,!1,!0)}${$}`}const v=l.match(/^(\s+)([:@#]?[\w-]+(?::[\w-]+)?)(\s*=\s*)(["'])([\s\S]*)$/);if(v){const[,k,h,M,p,$]=v,C=B(h),N=$.indexOf(p),j=`${k}${i(C?"vcb__token_directive":"vcb__token_attribute",h)}${o(M)}`;if(N===-1)return c={quote:p,directive:C},`${j}${A($,p,C,!0,!1)}`;const ue=$.slice(0,N),q=$.slice(N+1);return q.includes(">")&&(t=!1),`${j}${A(ue,p,C,!0,!0)}${o(q)}`}const y=E(_);return u&&(t=!1),y}return a==="script"?z(l):g(l)}).join(`
5
- `)},H=(e,r,n=!0)=>{const t=e.toLowerCase();return t.includes("vue")||t.includes("html")?oe(r,n):(r||"").replace(/\r\n/g,`
4
+ `);let t=!1,a=null,c=null;return r.map(d=>{const l=d;if(!n)return B(l);const b=o(l),v=b.trim();if(!v)return b;if(/^&lt;script\b/i.test(v)){a="script";const f=v.includes("&gt;");return t=!f,f?w(l):z(l)}if(/^&lt;template\b/i.test(v)){a="template";const f=v.includes("&gt;");return t=!f,f?w(l):z(l)}if(/^&lt;style\b/i.test(v)){a="style";const f=v.includes("&gt;");return t=!f,f?w(l):z(l)}if(/^&lt;\/script&gt;/i.test(v)||/^&lt;\/template&gt;/i.test(v)||/^&lt;\/style&gt;/i.test(v))return a=null,t=!1,w(l);const _=v.startsWith("&lt;")&&!v.startsWith("&lt;/"),u=v.includes("&gt;");if(_){const f=u?w(l):z(l);return t=!u,f}if(t){if(v==="&gt;"||v==="/&gt;")return t=!1,c=null,b;if(c){const k=c,y=l.indexOf(c.quote);if(y===-1)return S(l,k.quote,k.directive,!1,!1);const x=l.slice(0,y),g=l.slice(y+1),m=o(g);return c=null,g.includes(">")&&(t=!1),`${S(x,k.quote,k.directive,!1,!0)}${m}`}const f=l.match(/^(\s+)([:@#]?[\w-]+(?::[\w-]+)?)(\s*=\s*)(["'])([\s\S]*)$/);if(f){const[,k,y,x,g,m]=f,$=L(y),p=m.indexOf(g),C=`${k}${i($?"vcb__token_directive":"vcb__token_attribute",y)}${o(x)}`;if(p===-1)return c={quote:g,directive:$},`${C}${S(m,g,$,!0,!1)}`;const ue=m.slice(0,p),q=m.slice(p+1);return q.includes(">")&&(t=!1),`${C}${S(ue,g,$,!0,!0)}${o(q)}`}const A=M(b);return u&&(t=!1),A}return a==="script"?T(l):w(l)}).join(`
5
+ `)},j=(e,n,r=!0)=>{const t=e.toLowerCase();return t.includes("vue")||t.includes("html")?oe(n,r):(n||"").replace(/\r\n/g,`
6
6
  `).split(`
7
- `).map(a=>D(e,a,n)).join(`
8
- `)},ne=["data-theme","aria-label"],ce={key:0,class:"vcb__header"},re={key:0,class:"vcb__meta"},ae={key:0,class:"vcb__filename"},se={class:"vcb__language"},le={class:"vcb__actions"},ie=["disabled"],de={key:0,class:"vcb__line-number"},be=["innerHTML"],L=s.defineComponent({name:"VcbCodeBlock",__name:"CodeBlock",props:{code:{default:""},language:{default:"plaintext"},filename:{default:""},showHeader:{type:Boolean,default:!0},showLineNumbers:{type:Boolean,default:!1},copyable:{type:Boolean,default:!0},copyLabel:{default:"Copy"},copiedLabel:{default:"Copied"},copiedDuration:{default:1200},languageLabel:{default:"Language"},disabled:{type:Boolean,default:!1},wrap:{type:Boolean,default:!1},highlight:{type:Boolean,default:!0},maxHeight:{default:""},ariaLabel:{default:"Code block"},theme:{default:"inherit"}},emits:["copy"],setup(e,{emit:r}){const n=e,t=r,a=s.ref(!1);let c=null;const d=s.computed(()=>n.code.replace(/\r\n/g,`
9
- `)),l=s.computed(()=>d.value?d.value.split(`
10
- `):[""]),_=s.computed(()=>H(n.language,d.value,n.highlight).split(`
11
- `)),b=s.computed(()=>n.theme==="inherit"?void 0:n.theme),m=s.computed(()=>{if(n.maxHeight)return{maxHeight:n.maxHeight}}),u=async()=>{if(!n.disabled)try{typeof navigator<"u"&&navigator.clipboard?.writeText&&await navigator.clipboard.writeText(d.value)}finally{t("copy",{text:d.value}),a.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{a.value=!1,c=null},n.copiedDuration)}};return s.onBeforeUnmount(()=>{c&&(clearTimeout(c),c=null)}),(v,y)=>(s.openBlock(),s.createElementBlock("section",{class:s.normalizeClass(["vcb",{vcb_disabled:e.disabled}]),"data-theme":b.value,"aria-label":e.ariaLabel},[e.showHeader||v.$slots.actions?(s.openBlock(),s.createElementBlock("header",ce,[e.showHeader?(s.openBlock(),s.createElementBlock("div",re,[e.filename?(s.openBlock(),s.createElementBlock("span",ae,s.toDisplayString(e.filename),1)):s.createCommentVNode("",!0),s.createElementVNode("span",se,s.toDisplayString(e.languageLabel)+": "+s.toDisplayString(e.language),1)])):s.createCommentVNode("",!0),s.createElementVNode("div",le,[s.renderSlot(v.$slots,"actions"),e.copyable?(s.openBlock(),s.createElementBlock("button",{key:0,type:"button",class:"vcb__copy",disabled:e.disabled,onClick:u},s.toDisplayString(a.value?e.copiedLabel:e.copyLabel),9,ie)):s.createCommentVNode("",!0)])])):s.createCommentVNode("",!0),s.createElementVNode("pre",{class:s.normalizeClass(["vcb__pre",{vcb__pre_wrap:e.wrap}]),style:s.normalizeStyle(m.value)},[s.createElementVNode("code",null,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(l.value,(k,h)=>(s.openBlock(),s.createElementBlock("span",{key:h,class:"vcb__line"},[e.showLineNumbers?(s.openBlock(),s.createElementBlock("span",de,s.toDisplayString(h+1),1)):s.createCommentVNode("",!0),s.createElementVNode("span",{class:"vcb__line-content",innerHTML:_.value[h]??""},null,8,be)]))),128))])],6)],10,ne))}}),_e=["plaintext","text","txt","js","javascript","ts","typescript","vue","html","json","bash","shell","sh","css","scss","sass"],ve={install(e){e.component("CodeBlock",L),e.component("VueCodeBlock",L)}};f.CodeBlock=L,f.SUPPORTED_CODE_BLOCK_LANGUAGES=_e,f.default=ve,f.escapeCodeHtml=o,f.highlightCodeBlock=H,f.highlightCodeLine=D,Object.defineProperties(f,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
7
+ `).map(a=>H(e,a,r)).join(`
8
+ `)},re=["data-theme","aria-label"],ne={key:0,class:"vcb__header"},ce={key:0,class:"vcb__meta"},ae={key:0,class:"vcb__filename"},le={class:"vcb__language"},se={class:"vcb__actions"},ie=["disabled"],de={key:0,class:"vcb__line-number"},ve=["innerHTML"],Z=s.defineComponent({name:"VcbCodeBlock",__name:"CodeBlock",props:{code:{default:""},language:{default:"plaintext"},filename:{default:""},showHeader:{type:Boolean,default:!0},showLineNumbers:{type:Boolean,default:!1},copyable:{type:Boolean,default:!0},copyLabel:{default:"Copy"},copiedLabel:{default:"Copied"},copiedDuration:{default:1200},languageLabel:{default:"Language"},disabled:{type:Boolean,default:!1},wrap:{type:Boolean,default:!1},highlight:{type:Boolean,default:!0},maxHeight:{default:""},ariaLabel:{default:"Code block"},theme:{default:"inherit"}},emits:["copy"],setup(e,{emit:n}){const r=e,t=n,a=s.ref(!1),c=s.ref(null),d=s.ref("light");let l=null,b=null;const v=s.computed(()=>r.code.replace(/\r\n/g,`
9
+ `)),_=s.computed(()=>v.value?v.value.split(`
10
+ `):[""]),u=s.computed(()=>j(r.language,v.value,r.highlight).split(`
11
+ `)),f=s.computed(()=>r.theme==="inherit"?d.value:r.theme),A=s.computed(()=>{if(r.maxHeight)return{maxHeight:r.maxHeight}}),k=async()=>{if(!r.disabled)try{typeof navigator<"u"&&navigator.clipboard?.writeText&&await navigator.clipboard.writeText(v.value)}finally{t("copy",{text:v.value}),a.value=!0,l&&clearTimeout(l),l=setTimeout(()=>{a.value=!1,l=null},r.copiedDuration)}},y=m=>m==="dark"?"dark":"light",x=(m,$)=>{let p=m?.parentElement??null;for(;p;){if(p.hasAttribute($))return y(p.getAttribute($));p=p.parentElement}return null},g=()=>{r.theme==="inherit"&&(d.value=x(c.value,"data-theme")??x(c.value,"data-vf-theme")??"light")};return s.onMounted(()=>{g(),!(typeof MutationObserver>"u"||!c.value)&&(b=new MutationObserver(()=>{g()}),b.observe(document.documentElement,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["data-theme","data-vf-theme"]}))}),s.onBeforeUnmount(()=>{l&&(clearTimeout(l),l=null),b&&(b.disconnect(),b=null)}),(m,$)=>(s.openBlock(),s.createElementBlock("section",{ref_key:"rootElement",ref:c,class:s.normalizeClass(["vcb",{vcb_disabled:e.disabled}]),"data-theme":f.value,"aria-label":e.ariaLabel},[e.showHeader||m.$slots.actions?(s.openBlock(),s.createElementBlock("header",ne,[e.showHeader?(s.openBlock(),s.createElementBlock("div",ce,[e.filename?(s.openBlock(),s.createElementBlock("span",ae,s.toDisplayString(e.filename),1)):s.createCommentVNode("",!0),s.createElementVNode("span",le,s.toDisplayString(e.languageLabel)+": "+s.toDisplayString(e.language),1)])):s.createCommentVNode("",!0),s.createElementVNode("div",se,[s.renderSlot(m.$slots,"actions"),e.copyable?(s.openBlock(),s.createElementBlock("button",{key:0,type:"button",class:"vcb__copy",disabled:e.disabled,onClick:k},s.toDisplayString(a.value?e.copiedLabel:e.copyLabel),9,ie)):s.createCommentVNode("",!0)])])):s.createCommentVNode("",!0),s.createElementVNode("pre",{class:s.normalizeClass(["vcb__pre",{vcb__pre_wrap:e.wrap}]),style:s.normalizeStyle(A.value)},[s.createElementVNode("code",null,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(_.value,(p,C)=>(s.openBlock(),s.createElementBlock("span",{key:C,class:"vcb__line"},[e.showLineNumbers?(s.openBlock(),s.createElementBlock("span",de,s.toDisplayString(C+1),1)):s.createCommentVNode("",!0),s.createElementVNode("span",{class:"vcb__line-content",innerHTML:u.value[C]??""},null,8,ve)]))),128))])],6)],10,re))}}),be=["plaintext","text","txt","js","javascript","ts","typescript","vue","html","json","bash","shell","sh","css","scss","sass"],fe={install(e){e.component("CodeBlock",Z),e.component("VueCodeBlock",Z)}};h.CodeBlock=Z,h.SUPPORTED_CODE_BLOCK_LANGUAGES=be,h.default=fe,h.escapeCodeHtml=o,h.highlightCodeBlock=j,h.highlightCodeLine=H,Object.defineProperties(h,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemonster-ru/vue-codeblock",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Standalone Vue code block component with syntax highlighting and light/dark theming.",
5
5
  "license": "MIT",
6
6
  "author": "Kirill Kolesnikov",