@duskmoon-dev/el-code-block 0.12.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/dist/cjs/index.js CHANGED
@@ -46,8 +46,111 @@ module.exports = __toCommonJS(exports_src);
46
46
 
47
47
  // src/el-dm-code-block.ts
48
48
  var import_el_base = require("@duskmoon-dev/el-base");
49
- var import_code_block = require("@duskmoon-dev/core/components/code-block");
50
- var coreStyles = import_code_block.css.replace(/@layer\s+components\s*\{/, "").replace(/\}\s*$/, "");
49
+ var styles = import_el_base.css`
50
+ :host {
51
+ display: block;
52
+ }
53
+ :host([hidden]) {
54
+ display: none !important;
55
+ }
56
+
57
+ .code-block {
58
+ border: 1px solid var(--dm-border, #e0e0e0);
59
+ border-radius: var(--dm-radius-md, 0.5rem);
60
+ background: var(--dm-surface, #fafafa);
61
+ color: var(--dm-on-surface, #1a1a1a);
62
+ font-family: var(
63
+ --dm-font-mono,
64
+ ui-monospace,
65
+ SFMono-Regular,
66
+ Menlo,
67
+ Monaco,
68
+ Consolas,
69
+ monospace
70
+ );
71
+ font-size: 0.875rem;
72
+ line-height: 1.5;
73
+ overflow: hidden;
74
+ }
75
+
76
+ .code-block-compact .code-content {
77
+ padding: 0.5rem;
78
+ }
79
+
80
+ .code-block-borderless {
81
+ border: none;
82
+ }
83
+
84
+ .code-header {
85
+ display: flex;
86
+ align-items: center;
87
+ gap: 0.5rem;
88
+ padding: 0.5rem 1rem;
89
+ border-bottom: 1px solid var(--dm-border, #e0e0e0);
90
+ background: var(--dm-surface-container, #f0f0f0);
91
+ font-size: 0.75rem;
92
+ }
93
+
94
+ .code-title {
95
+ font-weight: 600;
96
+ color: var(--dm-on-surface, #1a1a1a);
97
+ }
98
+
99
+ .code-language {
100
+ margin-inline-start: auto;
101
+ padding: 0.125rem 0.5rem;
102
+ border-radius: var(--dm-radius-sm, 0.25rem);
103
+ background: var(--dm-primary, #6750a4);
104
+ color: var(--dm-on-primary, #fff);
105
+ font-size: 0.6875rem;
106
+ font-weight: 500;
107
+ text-transform: uppercase;
108
+ letter-spacing: 0.025em;
109
+ }
110
+
111
+ .code-title + .code-language {
112
+ margin-inline-start: 0;
113
+ }
114
+
115
+ .copy-button {
116
+ display: inline-flex;
117
+ align-items: center;
118
+ gap: 0.25rem;
119
+ margin-inline-start: auto;
120
+ padding: 0.25rem 0.5rem;
121
+ border: 1px solid var(--dm-border, #e0e0e0);
122
+ border-radius: var(--dm-radius-sm, 0.25rem);
123
+ background: var(--dm-surface, #fafafa);
124
+ color: var(--dm-on-surface-variant, #555);
125
+ font-family: inherit;
126
+ font-size: 0.6875rem;
127
+ cursor: pointer;
128
+ transition:
129
+ background 0.15s,
130
+ color 0.15s;
131
+ }
132
+
133
+ .copy-button:hover {
134
+ background: var(--dm-surface-container-high, #e0e0e0);
135
+ color: var(--dm-on-surface, #1a1a1a);
136
+ }
137
+
138
+ .code-content {
139
+ padding: 0;
140
+ }
141
+
142
+ ::slotted(pre) {
143
+ margin: 0;
144
+ padding: 1rem;
145
+ background: transparent;
146
+ overflow-x: auto;
147
+ }
148
+
149
+ ::slotted(code) {
150
+ background: transparent;
151
+ padding: 0;
152
+ }
153
+ `;
51
154
  var COPY_ICON = `<svg class="copy-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>`;
52
155
  var CHECK_ICON = `<svg class="copy-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg>`;
53
156
 
@@ -61,26 +164,7 @@ class ElDmCodeBlock extends import_el_base.BaseElement {
61
164
  };
62
165
  constructor() {
63
166
  super();
64
- this.attachStyles(import_el_base.css`
65
- :host {
66
- display: block;
67
- }
68
- :host([hidden]) {
69
- display: none !important;
70
- }
71
- ${coreStyles}
72
- /* Pass slotted pre/code through without re-styling */
73
- ::slotted(pre) {
74
- margin: 0;
75
- padding: 1rem;
76
- background: transparent;
77
- overflow-x: auto;
78
- }
79
- ::slotted(code) {
80
- background: transparent;
81
- padding: 0;
82
- }
83
- `);
167
+ this.attachStyles(styles);
84
168
  }
85
169
  _getSlottedText() {
86
170
  const slot = this.shadowRoot?.querySelector("slot:not([name])");
@@ -149,5 +233,5 @@ function register() {
149
233
  }
150
234
  }
151
235
 
152
- //# debugId=0C143FC4916163F164756E2164756E21
236
+ //# debugId=653D259B7968995564756E2164756E21
153
237
  //# sourceMappingURL=index.js.map
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/el-dm-code-block.ts", "../../src/index.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * DuskMoon Code Block Element\n *\n * A styled container for displaying code with optional header, language badge, and copy button.\n * Uses styles from @duskmoon-dev/core for consistent theming.\n *\n * @element el-dm-code-block\n *\n * @attr {string} language - Language label shown in the header badge\n * @attr {string} title - Optional title shown in the header\n * @attr {boolean} copyable - Whether to show a copy button\n * @attr {boolean} compact - Use compact (reduced padding) styling\n * @attr {boolean} borderless - Remove borders\n *\n * @slot - Default slot for code content (place a <pre><code> here)\n *\n * @csspart container - The code-block container div\n * @csspart header - The header bar\n * @csspart content - The code content wrapper\n *\n * @fires copy - Fired when the copy button is clicked, detail: { text: string }\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-base';\nimport { css as codeBlockCSS } from '@duskmoon-dev/core/components/code-block';\n\nconst coreStyles = codeBlockCSS.replace(/@layer\\s+components\\s*\\{/, '').replace(/\\}\\s*$/, '');\n\nconst COPY_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>`;\n\nconst CHECK_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"/></svg>`;\n\nexport class ElDmCodeBlock extends BaseElement {\n static properties = {\n language: { type: String, reflect: true },\n title: { type: String, reflect: true },\n copyable: { type: Boolean, reflect: true },\n compact: { type: Boolean, reflect: true },\n borderless: { type: Boolean, reflect: true },\n };\n\n declare language: string;\n declare title: string;\n declare copyable: boolean;\n declare compact: boolean;\n declare borderless: boolean;\n\n constructor() {\n super();\n this.attachStyles(css`\n :host {\n display: block;\n }\n :host([hidden]) {\n display: none !important;\n }\n ${coreStyles}\n /* Pass slotted pre/code through without re-styling */\n ::slotted(pre) {\n margin: 0;\n padding: 1rem;\n background: transparent;\n overflow-x: auto;\n }\n ::slotted(code) {\n background: transparent;\n padding: 0;\n }\n `);\n }\n\n private _getSlottedText(): string {\n const slot = this.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement | null;\n if (!slot) return '';\n return slot\n .assignedNodes({ flatten: true })\n .map((n) => n.textContent ?? '')\n .join('');\n }\n\n private async _handleCopy(): Promise<void> {\n const text = this._getSlottedText();\n try {\n await navigator.clipboard.writeText(text);\n this.emit('copy', { text });\n this._showCopied();\n } catch {\n // Clipboard API unavailable — silently ignore\n }\n }\n\n private _showCopied(): void {\n const btn = this.shadowRoot?.querySelector('.copy-button');\n if (!btn) return;\n btn.innerHTML = `${CHECK_ICON} Copied`;\n setTimeout(() => {\n btn.innerHTML = `${COPY_ICON} Copy`;\n }, 2000);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.shadowRoot?.addEventListener('click', (e) => {\n if ((e.target as Element)?.closest('.copy-button')) {\n this._handleCopy();\n }\n });\n }\n\n private _renderHeader(): string {\n const hasHeader = this.title || this.language || this.copyable;\n if (!hasHeader) return '';\n return `\n <div class=\"code-header\" part=\"header\">\n ${this.title ? `<span class=\"code-title\">${this.title}</span>` : ''}\n ${this.language ? `<span class=\"code-language\">${this.language}</span>` : ''}\n ${this.copyable ? `<button class=\"copy-button\" type=\"button\" aria-label=\"Copy code\">${COPY_ICON} Copy</button>` : ''}\n </div>\n `;\n }\n\n render(): string {\n const classes = ['code-block'];\n if (this.compact) classes.push('code-block-compact');\n if (this.borderless) classes.push('code-block-borderless');\n\n return `\n <div class=\"${classes.join(' ')}\" part=\"container\">\n ${this._renderHeader()}\n <div class=\"code-content\" part=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n",
5
+ "/**\n * DuskMoon Code Block Element\n *\n * A styled container for displaying code with optional header, language badge, and copy button.\n *\n * @element el-dm-code-block\n *\n * @attr {string} language - Language label shown in the header badge\n * @attr {string} title - Optional title shown in the header\n * @attr {boolean} copyable - Whether to show a copy button\n * @attr {boolean} compact - Use compact (reduced padding) styling\n * @attr {boolean} borderless - Remove borders\n *\n * @slot - Default slot for code content (place a <pre><code> here)\n *\n * @csspart container - The code-block container div\n * @csspart header - The header bar\n * @csspart content - The code content wrapper\n *\n * @fires copy - Fired when the copy button is clicked, detail: { text: string }\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-base';\n\nconst styles = css`\n :host {\n display: block;\n }\n :host([hidden]) {\n display: none !important;\n }\n\n .code-block {\n border: 1px solid var(--dm-border, #e0e0e0);\n border-radius: var(--dm-radius-md, 0.5rem);\n background: var(--dm-surface, #fafafa);\n color: var(--dm-on-surface, #1a1a1a);\n font-family: var(\n --dm-font-mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n monospace\n );\n font-size: 0.875rem;\n line-height: 1.5;\n overflow: hidden;\n }\n\n .code-block-compact .code-content {\n padding: 0.5rem;\n }\n\n .code-block-borderless {\n border: none;\n }\n\n .code-header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 1rem;\n border-bottom: 1px solid var(--dm-border, #e0e0e0);\n background: var(--dm-surface-container, #f0f0f0);\n font-size: 0.75rem;\n }\n\n .code-title {\n font-weight: 600;\n color: var(--dm-on-surface, #1a1a1a);\n }\n\n .code-language {\n margin-inline-start: auto;\n padding: 0.125rem 0.5rem;\n border-radius: var(--dm-radius-sm, 0.25rem);\n background: var(--dm-primary, #6750a4);\n color: var(--dm-on-primary, #fff);\n font-size: 0.6875rem;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.025em;\n }\n\n .code-title + .code-language {\n margin-inline-start: 0;\n }\n\n .copy-button {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n margin-inline-start: auto;\n padding: 0.25rem 0.5rem;\n border: 1px solid var(--dm-border, #e0e0e0);\n border-radius: var(--dm-radius-sm, 0.25rem);\n background: var(--dm-surface, #fafafa);\n color: var(--dm-on-surface-variant, #555);\n font-family: inherit;\n font-size: 0.6875rem;\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s;\n }\n\n .copy-button:hover {\n background: var(--dm-surface-container-high, #e0e0e0);\n color: var(--dm-on-surface, #1a1a1a);\n }\n\n .code-content {\n padding: 0;\n }\n\n ::slotted(pre) {\n margin: 0;\n padding: 1rem;\n background: transparent;\n overflow-x: auto;\n }\n\n ::slotted(code) {\n background: transparent;\n padding: 0;\n }\n`;\n\nconst COPY_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>`;\n\nconst CHECK_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"/></svg>`;\n\nexport class ElDmCodeBlock extends BaseElement {\n static properties = {\n language: { type: String, reflect: true },\n title: { type: String, reflect: true },\n copyable: { type: Boolean, reflect: true },\n compact: { type: Boolean, reflect: true },\n borderless: { type: Boolean, reflect: true },\n };\n\n declare language: string;\n declare title: string;\n declare copyable: boolean;\n declare compact: boolean;\n declare borderless: boolean;\n\n constructor() {\n super();\n this.attachStyles(styles);\n }\n\n private _getSlottedText(): string {\n const slot = this.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement | null;\n if (!slot) return '';\n return slot\n .assignedNodes({ flatten: true })\n .map((n) => n.textContent ?? '')\n .join('');\n }\n\n private async _handleCopy(): Promise<void> {\n const text = this._getSlottedText();\n try {\n await navigator.clipboard.writeText(text);\n this.emit('copy', { text });\n this._showCopied();\n } catch {\n // Clipboard API unavailable — silently ignore\n }\n }\n\n private _showCopied(): void {\n const btn = this.shadowRoot?.querySelector('.copy-button');\n if (!btn) return;\n btn.innerHTML = `${CHECK_ICON} Copied`;\n setTimeout(() => {\n btn.innerHTML = `${COPY_ICON} Copy`;\n }, 2000);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.shadowRoot?.addEventListener('click', (e) => {\n if ((e.target as Element)?.closest('.copy-button')) {\n this._handleCopy();\n }\n });\n }\n\n private _renderHeader(): string {\n const hasHeader = this.title || this.language || this.copyable;\n if (!hasHeader) return '';\n return `\n <div class=\"code-header\" part=\"header\">\n ${this.title ? `<span class=\"code-title\">${this.title}</span>` : ''}\n ${this.language ? `<span class=\"code-language\">${this.language}</span>` : ''}\n ${this.copyable ? `<button class=\"copy-button\" type=\"button\" aria-label=\"Copy code\">${COPY_ICON} Copy</button>` : ''}\n </div>\n `;\n }\n\n render(): string {\n const classes = ['code-block'];\n if (this.compact) classes.push('code-block-compact');\n if (this.borderless) classes.push('code-block-borderless');\n\n return `\n <div class=\"${classes.join(' ')}\" part=\"container\">\n ${this._renderHeader()}\n <div class=\"code-content\" part=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n",
6
6
  "import { ElDmCodeBlock } from './el-dm-code-block.js';\n\nexport { ElDmCodeBlock };\n\nexport function register(): void {\n if (!customElements.get('el-dm-code-block')) {\n customElements.define('el-dm-code-block', ElDmCodeBlock);\n }\n}\n"
7
7
  ],
8
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBiC,IAAjC;AACoC,IAApC;AAEA,IAAM,aAAa,sBAAa,QAAQ,4BAA4B,EAAE,EAAE,QAAQ,UAAU,EAAE;AAE5F,IAAM,YAAY;AAElB,IAAM,aAAa;AAAA;AAEZ,MAAM,sBAAsB,2BAAY;AAAA,SACtC,aAAa;AAAA,IAClB,UAAU,EAAE,MAAM,QAAQ,SAAS,KAAK;AAAA,IACxC,OAAO,EAAE,MAAM,QAAQ,SAAS,KAAK;AAAA,IACrC,UAAU,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,IACzC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,IACxC,YAAY,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,EAC7C;AAAA,EAQA,WAAW,GAAG;AAAA,IACZ,MAAM;AAAA,IACN,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAYH;AAAA;AAAA,EAGK,eAAe,GAAW;AAAA,IAChC,MAAM,OAAO,KAAK,YAAY,cAAc,kBAAkB;AAAA,IAC9D,IAAI,CAAC;AAAA,MAAM,OAAO;AAAA,IAClB,OAAO,KACJ,cAAc,EAAE,SAAS,KAAK,CAAC,EAC/B,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,EAC9B,KAAK,EAAE;AAAA;AAAA,OAGE,YAAW,GAAkB;AAAA,IACzC,MAAM,OAAO,KAAK,gBAAgB;AAAA,IAClC,IAAI;AAAA,MACF,MAAM,UAAU,UAAU,UAAU,IAAI;AAAA,MACxC,KAAK,KAAK,QAAQ,EAAE,KAAK,CAAC;AAAA,MAC1B,KAAK,YAAY;AAAA,MACjB,MAAM;AAAA;AAAA,EAKF,WAAW,GAAS;AAAA,IAC1B,MAAM,MAAM,KAAK,YAAY,cAAc,cAAc;AAAA,IACzD,IAAI,CAAC;AAAA,MAAK;AAAA,IACV,IAAI,YAAY,GAAG;AAAA,IACnB,WAAW,MAAM;AAAA,MACf,IAAI,YAAY,GAAG;AAAA,OAClB,IAAI;AAAA;AAAA,EAGT,iBAAiB,GAAS;AAAA,IACxB,MAAM,kBAAkB;AAAA,IACxB,KAAK,YAAY,iBAAiB,SAAS,CAAC,MAAM;AAAA,MAChD,IAAK,EAAE,QAAoB,QAAQ,cAAc,GAAG;AAAA,QAClD,KAAK,YAAY;AAAA,MACnB;AAAA,KACD;AAAA;AAAA,EAGK,aAAa,GAAW;AAAA,IAC9B,MAAM,YAAY,KAAK,SAAS,KAAK,YAAY,KAAK;AAAA,IACtD,IAAI,CAAC;AAAA,MAAW,OAAO;AAAA,IACvB,OAAO;AAAA;AAAA,UAED,KAAK,QAAQ,4BAA4B,KAAK,iBAAiB;AAAA,UAC/D,KAAK,WAAW,+BAA+B,KAAK,oBAAoB;AAAA,UACxE,KAAK,WAAW,oEAAoE,4BAA4B;AAAA;AAAA;AAAA;AAAA,EAKxH,MAAM,GAAW;AAAA,IACf,MAAM,UAAU,CAAC,YAAY;AAAA,IAC7B,IAAI,KAAK;AAAA,MAAS,QAAQ,KAAK,oBAAoB;AAAA,IACnD,IAAI,KAAK;AAAA,MAAY,QAAQ,KAAK,uBAAuB;AAAA,IAEzD,OAAO;AAAA,oBACS,QAAQ,KAAK,GAAG;AAAA,UAC1B,KAAK,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAO7B;;;ACnIO,SAAS,QAAQ,GAAS;AAAA,EAC/B,IAAI,CAAC,eAAe,IAAI,kBAAkB,GAAG;AAAA,IAC3C,eAAe,OAAO,oBAAoB,aAAa;AAAA,EACzD;AAAA;",
9
- "debugId": "0C143FC4916163F164756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "653D259B7968995564756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -46,8 +46,111 @@ module.exports = __toCommonJS(exports_src);
46
46
 
47
47
  // src/el-dm-code-block.ts
48
48
  var import_el_base = require("@duskmoon-dev/el-base");
49
- var import_code_block = require("@duskmoon-dev/core/components/code-block");
50
- var coreStyles = import_code_block.css.replace(/@layer\s+components\s*\{/, "").replace(/\}\s*$/, "");
49
+ var styles = import_el_base.css`
50
+ :host {
51
+ display: block;
52
+ }
53
+ :host([hidden]) {
54
+ display: none !important;
55
+ }
56
+
57
+ .code-block {
58
+ border: 1px solid var(--dm-border, #e0e0e0);
59
+ border-radius: var(--dm-radius-md, 0.5rem);
60
+ background: var(--dm-surface, #fafafa);
61
+ color: var(--dm-on-surface, #1a1a1a);
62
+ font-family: var(
63
+ --dm-font-mono,
64
+ ui-monospace,
65
+ SFMono-Regular,
66
+ Menlo,
67
+ Monaco,
68
+ Consolas,
69
+ monospace
70
+ );
71
+ font-size: 0.875rem;
72
+ line-height: 1.5;
73
+ overflow: hidden;
74
+ }
75
+
76
+ .code-block-compact .code-content {
77
+ padding: 0.5rem;
78
+ }
79
+
80
+ .code-block-borderless {
81
+ border: none;
82
+ }
83
+
84
+ .code-header {
85
+ display: flex;
86
+ align-items: center;
87
+ gap: 0.5rem;
88
+ padding: 0.5rem 1rem;
89
+ border-bottom: 1px solid var(--dm-border, #e0e0e0);
90
+ background: var(--dm-surface-container, #f0f0f0);
91
+ font-size: 0.75rem;
92
+ }
93
+
94
+ .code-title {
95
+ font-weight: 600;
96
+ color: var(--dm-on-surface, #1a1a1a);
97
+ }
98
+
99
+ .code-language {
100
+ margin-inline-start: auto;
101
+ padding: 0.125rem 0.5rem;
102
+ border-radius: var(--dm-radius-sm, 0.25rem);
103
+ background: var(--dm-primary, #6750a4);
104
+ color: var(--dm-on-primary, #fff);
105
+ font-size: 0.6875rem;
106
+ font-weight: 500;
107
+ text-transform: uppercase;
108
+ letter-spacing: 0.025em;
109
+ }
110
+
111
+ .code-title + .code-language {
112
+ margin-inline-start: 0;
113
+ }
114
+
115
+ .copy-button {
116
+ display: inline-flex;
117
+ align-items: center;
118
+ gap: 0.25rem;
119
+ margin-inline-start: auto;
120
+ padding: 0.25rem 0.5rem;
121
+ border: 1px solid var(--dm-border, #e0e0e0);
122
+ border-radius: var(--dm-radius-sm, 0.25rem);
123
+ background: var(--dm-surface, #fafafa);
124
+ color: var(--dm-on-surface-variant, #555);
125
+ font-family: inherit;
126
+ font-size: 0.6875rem;
127
+ cursor: pointer;
128
+ transition:
129
+ background 0.15s,
130
+ color 0.15s;
131
+ }
132
+
133
+ .copy-button:hover {
134
+ background: var(--dm-surface-container-high, #e0e0e0);
135
+ color: var(--dm-on-surface, #1a1a1a);
136
+ }
137
+
138
+ .code-content {
139
+ padding: 0;
140
+ }
141
+
142
+ ::slotted(pre) {
143
+ margin: 0;
144
+ padding: 1rem;
145
+ background: transparent;
146
+ overflow-x: auto;
147
+ }
148
+
149
+ ::slotted(code) {
150
+ background: transparent;
151
+ padding: 0;
152
+ }
153
+ `;
51
154
  var COPY_ICON = `<svg class="copy-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>`;
52
155
  var CHECK_ICON = `<svg class="copy-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg>`;
53
156
 
@@ -61,26 +164,7 @@ class ElDmCodeBlock extends import_el_base.BaseElement {
61
164
  };
62
165
  constructor() {
63
166
  super();
64
- this.attachStyles(import_el_base.css`
65
- :host {
66
- display: block;
67
- }
68
- :host([hidden]) {
69
- display: none !important;
70
- }
71
- ${coreStyles}
72
- /* Pass slotted pre/code through without re-styling */
73
- ::slotted(pre) {
74
- margin: 0;
75
- padding: 1rem;
76
- background: transparent;
77
- overflow-x: auto;
78
- }
79
- ::slotted(code) {
80
- background: transparent;
81
- padding: 0;
82
- }
83
- `);
167
+ this.attachStyles(styles);
84
168
  }
85
169
  _getSlottedText() {
86
170
  const slot = this.shadowRoot?.querySelector("slot:not([name])");
@@ -152,5 +236,5 @@ function register() {
152
236
  // src/register.ts
153
237
  register();
154
238
 
155
- //# debugId=231E41720DE475BC64756E2164756E21
239
+ //# debugId=26A7F49183A0DA0964756E2164756E21
156
240
  //# sourceMappingURL=register.js.map
@@ -2,11 +2,11 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/el-dm-code-block.ts", "../../src/index.ts", "../../src/register.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * DuskMoon Code Block Element\n *\n * A styled container for displaying code with optional header, language badge, and copy button.\n * Uses styles from @duskmoon-dev/core for consistent theming.\n *\n * @element el-dm-code-block\n *\n * @attr {string} language - Language label shown in the header badge\n * @attr {string} title - Optional title shown in the header\n * @attr {boolean} copyable - Whether to show a copy button\n * @attr {boolean} compact - Use compact (reduced padding) styling\n * @attr {boolean} borderless - Remove borders\n *\n * @slot - Default slot for code content (place a <pre><code> here)\n *\n * @csspart container - The code-block container div\n * @csspart header - The header bar\n * @csspart content - The code content wrapper\n *\n * @fires copy - Fired when the copy button is clicked, detail: { text: string }\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-base';\nimport { css as codeBlockCSS } from '@duskmoon-dev/core/components/code-block';\n\nconst coreStyles = codeBlockCSS.replace(/@layer\\s+components\\s*\\{/, '').replace(/\\}\\s*$/, '');\n\nconst COPY_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>`;\n\nconst CHECK_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"/></svg>`;\n\nexport class ElDmCodeBlock extends BaseElement {\n static properties = {\n language: { type: String, reflect: true },\n title: { type: String, reflect: true },\n copyable: { type: Boolean, reflect: true },\n compact: { type: Boolean, reflect: true },\n borderless: { type: Boolean, reflect: true },\n };\n\n declare language: string;\n declare title: string;\n declare copyable: boolean;\n declare compact: boolean;\n declare borderless: boolean;\n\n constructor() {\n super();\n this.attachStyles(css`\n :host {\n display: block;\n }\n :host([hidden]) {\n display: none !important;\n }\n ${coreStyles}\n /* Pass slotted pre/code through without re-styling */\n ::slotted(pre) {\n margin: 0;\n padding: 1rem;\n background: transparent;\n overflow-x: auto;\n }\n ::slotted(code) {\n background: transparent;\n padding: 0;\n }\n `);\n }\n\n private _getSlottedText(): string {\n const slot = this.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement | null;\n if (!slot) return '';\n return slot\n .assignedNodes({ flatten: true })\n .map((n) => n.textContent ?? '')\n .join('');\n }\n\n private async _handleCopy(): Promise<void> {\n const text = this._getSlottedText();\n try {\n await navigator.clipboard.writeText(text);\n this.emit('copy', { text });\n this._showCopied();\n } catch {\n // Clipboard API unavailable — silently ignore\n }\n }\n\n private _showCopied(): void {\n const btn = this.shadowRoot?.querySelector('.copy-button');\n if (!btn) return;\n btn.innerHTML = `${CHECK_ICON} Copied`;\n setTimeout(() => {\n btn.innerHTML = `${COPY_ICON} Copy`;\n }, 2000);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.shadowRoot?.addEventListener('click', (e) => {\n if ((e.target as Element)?.closest('.copy-button')) {\n this._handleCopy();\n }\n });\n }\n\n private _renderHeader(): string {\n const hasHeader = this.title || this.language || this.copyable;\n if (!hasHeader) return '';\n return `\n <div class=\"code-header\" part=\"header\">\n ${this.title ? `<span class=\"code-title\">${this.title}</span>` : ''}\n ${this.language ? `<span class=\"code-language\">${this.language}</span>` : ''}\n ${this.copyable ? `<button class=\"copy-button\" type=\"button\" aria-label=\"Copy code\">${COPY_ICON} Copy</button>` : ''}\n </div>\n `;\n }\n\n render(): string {\n const classes = ['code-block'];\n if (this.compact) classes.push('code-block-compact');\n if (this.borderless) classes.push('code-block-borderless');\n\n return `\n <div class=\"${classes.join(' ')}\" part=\"container\">\n ${this._renderHeader()}\n <div class=\"code-content\" part=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n",
5
+ "/**\n * DuskMoon Code Block Element\n *\n * A styled container for displaying code with optional header, language badge, and copy button.\n *\n * @element el-dm-code-block\n *\n * @attr {string} language - Language label shown in the header badge\n * @attr {string} title - Optional title shown in the header\n * @attr {boolean} copyable - Whether to show a copy button\n * @attr {boolean} compact - Use compact (reduced padding) styling\n * @attr {boolean} borderless - Remove borders\n *\n * @slot - Default slot for code content (place a <pre><code> here)\n *\n * @csspart container - The code-block container div\n * @csspart header - The header bar\n * @csspart content - The code content wrapper\n *\n * @fires copy - Fired when the copy button is clicked, detail: { text: string }\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-base';\n\nconst styles = css`\n :host {\n display: block;\n }\n :host([hidden]) {\n display: none !important;\n }\n\n .code-block {\n border: 1px solid var(--dm-border, #e0e0e0);\n border-radius: var(--dm-radius-md, 0.5rem);\n background: var(--dm-surface, #fafafa);\n color: var(--dm-on-surface, #1a1a1a);\n font-family: var(\n --dm-font-mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n monospace\n );\n font-size: 0.875rem;\n line-height: 1.5;\n overflow: hidden;\n }\n\n .code-block-compact .code-content {\n padding: 0.5rem;\n }\n\n .code-block-borderless {\n border: none;\n }\n\n .code-header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 1rem;\n border-bottom: 1px solid var(--dm-border, #e0e0e0);\n background: var(--dm-surface-container, #f0f0f0);\n font-size: 0.75rem;\n }\n\n .code-title {\n font-weight: 600;\n color: var(--dm-on-surface, #1a1a1a);\n }\n\n .code-language {\n margin-inline-start: auto;\n padding: 0.125rem 0.5rem;\n border-radius: var(--dm-radius-sm, 0.25rem);\n background: var(--dm-primary, #6750a4);\n color: var(--dm-on-primary, #fff);\n font-size: 0.6875rem;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.025em;\n }\n\n .code-title + .code-language {\n margin-inline-start: 0;\n }\n\n .copy-button {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n margin-inline-start: auto;\n padding: 0.25rem 0.5rem;\n border: 1px solid var(--dm-border, #e0e0e0);\n border-radius: var(--dm-radius-sm, 0.25rem);\n background: var(--dm-surface, #fafafa);\n color: var(--dm-on-surface-variant, #555);\n font-family: inherit;\n font-size: 0.6875rem;\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s;\n }\n\n .copy-button:hover {\n background: var(--dm-surface-container-high, #e0e0e0);\n color: var(--dm-on-surface, #1a1a1a);\n }\n\n .code-content {\n padding: 0;\n }\n\n ::slotted(pre) {\n margin: 0;\n padding: 1rem;\n background: transparent;\n overflow-x: auto;\n }\n\n ::slotted(code) {\n background: transparent;\n padding: 0;\n }\n`;\n\nconst COPY_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>`;\n\nconst CHECK_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"/></svg>`;\n\nexport class ElDmCodeBlock extends BaseElement {\n static properties = {\n language: { type: String, reflect: true },\n title: { type: String, reflect: true },\n copyable: { type: Boolean, reflect: true },\n compact: { type: Boolean, reflect: true },\n borderless: { type: Boolean, reflect: true },\n };\n\n declare language: string;\n declare title: string;\n declare copyable: boolean;\n declare compact: boolean;\n declare borderless: boolean;\n\n constructor() {\n super();\n this.attachStyles(styles);\n }\n\n private _getSlottedText(): string {\n const slot = this.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement | null;\n if (!slot) return '';\n return slot\n .assignedNodes({ flatten: true })\n .map((n) => n.textContent ?? '')\n .join('');\n }\n\n private async _handleCopy(): Promise<void> {\n const text = this._getSlottedText();\n try {\n await navigator.clipboard.writeText(text);\n this.emit('copy', { text });\n this._showCopied();\n } catch {\n // Clipboard API unavailable — silently ignore\n }\n }\n\n private _showCopied(): void {\n const btn = this.shadowRoot?.querySelector('.copy-button');\n if (!btn) return;\n btn.innerHTML = `${CHECK_ICON} Copied`;\n setTimeout(() => {\n btn.innerHTML = `${COPY_ICON} Copy`;\n }, 2000);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.shadowRoot?.addEventListener('click', (e) => {\n if ((e.target as Element)?.closest('.copy-button')) {\n this._handleCopy();\n }\n });\n }\n\n private _renderHeader(): string {\n const hasHeader = this.title || this.language || this.copyable;\n if (!hasHeader) return '';\n return `\n <div class=\"code-header\" part=\"header\">\n ${this.title ? `<span class=\"code-title\">${this.title}</span>` : ''}\n ${this.language ? `<span class=\"code-language\">${this.language}</span>` : ''}\n ${this.copyable ? `<button class=\"copy-button\" type=\"button\" aria-label=\"Copy code\">${COPY_ICON} Copy</button>` : ''}\n </div>\n `;\n }\n\n render(): string {\n const classes = ['code-block'];\n if (this.compact) classes.push('code-block-compact');\n if (this.borderless) classes.push('code-block-borderless');\n\n return `\n <div class=\"${classes.join(' ')}\" part=\"container\">\n ${this._renderHeader()}\n <div class=\"code-content\" part=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n",
6
6
  "import { ElDmCodeBlock } from './el-dm-code-block.js';\n\nexport { ElDmCodeBlock };\n\nexport function register(): void {\n if (!customElements.get('el-dm-code-block')) {\n customElements.define('el-dm-code-block', ElDmCodeBlock);\n }\n}\n",
7
7
  "import { register } from './index.js';\n\nregister();\n"
8
8
  ],
9
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBiC,IAAjC;AACoC,IAApC;AAEA,IAAM,aAAa,sBAAa,QAAQ,4BAA4B,EAAE,EAAE,QAAQ,UAAU,EAAE;AAE5F,IAAM,YAAY;AAElB,IAAM,aAAa;AAAA;AAEZ,MAAM,sBAAsB,2BAAY;AAAA,SACtC,aAAa;AAAA,IAClB,UAAU,EAAE,MAAM,QAAQ,SAAS,KAAK;AAAA,IACxC,OAAO,EAAE,MAAM,QAAQ,SAAS,KAAK;AAAA,IACrC,UAAU,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,IACzC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,IACxC,YAAY,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,EAC7C;AAAA,EAQA,WAAW,GAAG;AAAA,IACZ,MAAM;AAAA,IACN,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAYH;AAAA;AAAA,EAGK,eAAe,GAAW;AAAA,IAChC,MAAM,OAAO,KAAK,YAAY,cAAc,kBAAkB;AAAA,IAC9D,IAAI,CAAC;AAAA,MAAM,OAAO;AAAA,IAClB,OAAO,KACJ,cAAc,EAAE,SAAS,KAAK,CAAC,EAC/B,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,EAC9B,KAAK,EAAE;AAAA;AAAA,OAGE,YAAW,GAAkB;AAAA,IACzC,MAAM,OAAO,KAAK,gBAAgB;AAAA,IAClC,IAAI;AAAA,MACF,MAAM,UAAU,UAAU,UAAU,IAAI;AAAA,MACxC,KAAK,KAAK,QAAQ,EAAE,KAAK,CAAC;AAAA,MAC1B,KAAK,YAAY;AAAA,MACjB,MAAM;AAAA;AAAA,EAKF,WAAW,GAAS;AAAA,IAC1B,MAAM,MAAM,KAAK,YAAY,cAAc,cAAc;AAAA,IACzD,IAAI,CAAC;AAAA,MAAK;AAAA,IACV,IAAI,YAAY,GAAG;AAAA,IACnB,WAAW,MAAM;AAAA,MACf,IAAI,YAAY,GAAG;AAAA,OAClB,IAAI;AAAA;AAAA,EAGT,iBAAiB,GAAS;AAAA,IACxB,MAAM,kBAAkB;AAAA,IACxB,KAAK,YAAY,iBAAiB,SAAS,CAAC,MAAM;AAAA,MAChD,IAAK,EAAE,QAAoB,QAAQ,cAAc,GAAG;AAAA,QAClD,KAAK,YAAY;AAAA,MACnB;AAAA,KACD;AAAA;AAAA,EAGK,aAAa,GAAW;AAAA,IAC9B,MAAM,YAAY,KAAK,SAAS,KAAK,YAAY,KAAK;AAAA,IACtD,IAAI,CAAC;AAAA,MAAW,OAAO;AAAA,IACvB,OAAO;AAAA;AAAA,UAED,KAAK,QAAQ,4BAA4B,KAAK,iBAAiB;AAAA,UAC/D,KAAK,WAAW,+BAA+B,KAAK,oBAAoB;AAAA,UACxE,KAAK,WAAW,oEAAoE,4BAA4B;AAAA;AAAA;AAAA;AAAA,EAKxH,MAAM,GAAW;AAAA,IACf,MAAM,UAAU,CAAC,YAAY;AAAA,IAC7B,IAAI,KAAK;AAAA,MAAS,QAAQ,KAAK,oBAAoB;AAAA,IACnD,IAAI,KAAK;AAAA,MAAY,QAAQ,KAAK,uBAAuB;AAAA,IAEzD,OAAO;AAAA,oBACS,QAAQ,KAAK,GAAG;AAAA,UAC1B,KAAK,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAO7B;;;ACnIO,SAAS,QAAQ,GAAS;AAAA,EAC/B,IAAI,CAAC,eAAe,IAAI,kBAAkB,GAAG;AAAA,IAC3C,eAAe,OAAO,oBAAoB,aAAa;AAAA,EACzD;AAAA;;;ACLF,SAAS;",
10
- "debugId": "231E41720DE475BC64756E2164756E21",
9
+ "mappings": "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",
10
+ "debugId": "26A7F49183A0DA0964756E2164756E21",
11
11
  "names": []
12
12
  }
package/dist/esm/index.js CHANGED
@@ -1,7 +1,110 @@
1
1
  // src/el-dm-code-block.ts
2
2
  import { BaseElement, css } from "@duskmoon-dev/el-base";
3
- import { css as codeBlockCSS } from "@duskmoon-dev/core/components/code-block";
4
- var coreStyles = codeBlockCSS.replace(/@layer\s+components\s*\{/, "").replace(/\}\s*$/, "");
3
+ var styles = css`
4
+ :host {
5
+ display: block;
6
+ }
7
+ :host([hidden]) {
8
+ display: none !important;
9
+ }
10
+
11
+ .code-block {
12
+ border: 1px solid var(--dm-border, #e0e0e0);
13
+ border-radius: var(--dm-radius-md, 0.5rem);
14
+ background: var(--dm-surface, #fafafa);
15
+ color: var(--dm-on-surface, #1a1a1a);
16
+ font-family: var(
17
+ --dm-font-mono,
18
+ ui-monospace,
19
+ SFMono-Regular,
20
+ Menlo,
21
+ Monaco,
22
+ Consolas,
23
+ monospace
24
+ );
25
+ font-size: 0.875rem;
26
+ line-height: 1.5;
27
+ overflow: hidden;
28
+ }
29
+
30
+ .code-block-compact .code-content {
31
+ padding: 0.5rem;
32
+ }
33
+
34
+ .code-block-borderless {
35
+ border: none;
36
+ }
37
+
38
+ .code-header {
39
+ display: flex;
40
+ align-items: center;
41
+ gap: 0.5rem;
42
+ padding: 0.5rem 1rem;
43
+ border-bottom: 1px solid var(--dm-border, #e0e0e0);
44
+ background: var(--dm-surface-container, #f0f0f0);
45
+ font-size: 0.75rem;
46
+ }
47
+
48
+ .code-title {
49
+ font-weight: 600;
50
+ color: var(--dm-on-surface, #1a1a1a);
51
+ }
52
+
53
+ .code-language {
54
+ margin-inline-start: auto;
55
+ padding: 0.125rem 0.5rem;
56
+ border-radius: var(--dm-radius-sm, 0.25rem);
57
+ background: var(--dm-primary, #6750a4);
58
+ color: var(--dm-on-primary, #fff);
59
+ font-size: 0.6875rem;
60
+ font-weight: 500;
61
+ text-transform: uppercase;
62
+ letter-spacing: 0.025em;
63
+ }
64
+
65
+ .code-title + .code-language {
66
+ margin-inline-start: 0;
67
+ }
68
+
69
+ .copy-button {
70
+ display: inline-flex;
71
+ align-items: center;
72
+ gap: 0.25rem;
73
+ margin-inline-start: auto;
74
+ padding: 0.25rem 0.5rem;
75
+ border: 1px solid var(--dm-border, #e0e0e0);
76
+ border-radius: var(--dm-radius-sm, 0.25rem);
77
+ background: var(--dm-surface, #fafafa);
78
+ color: var(--dm-on-surface-variant, #555);
79
+ font-family: inherit;
80
+ font-size: 0.6875rem;
81
+ cursor: pointer;
82
+ transition:
83
+ background 0.15s,
84
+ color 0.15s;
85
+ }
86
+
87
+ .copy-button:hover {
88
+ background: var(--dm-surface-container-high, #e0e0e0);
89
+ color: var(--dm-on-surface, #1a1a1a);
90
+ }
91
+
92
+ .code-content {
93
+ padding: 0;
94
+ }
95
+
96
+ ::slotted(pre) {
97
+ margin: 0;
98
+ padding: 1rem;
99
+ background: transparent;
100
+ overflow-x: auto;
101
+ }
102
+
103
+ ::slotted(code) {
104
+ background: transparent;
105
+ padding: 0;
106
+ }
107
+ `;
5
108
  var COPY_ICON = `<svg class="copy-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>`;
6
109
  var CHECK_ICON = `<svg class="copy-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg>`;
7
110
 
@@ -15,26 +118,7 @@ class ElDmCodeBlock extends BaseElement {
15
118
  };
16
119
  constructor() {
17
120
  super();
18
- this.attachStyles(css`
19
- :host {
20
- display: block;
21
- }
22
- :host([hidden]) {
23
- display: none !important;
24
- }
25
- ${coreStyles}
26
- /* Pass slotted pre/code through without re-styling */
27
- ::slotted(pre) {
28
- margin: 0;
29
- padding: 1rem;
30
- background: transparent;
31
- overflow-x: auto;
32
- }
33
- ::slotted(code) {
34
- background: transparent;
35
- padding: 0;
36
- }
37
- `);
121
+ this.attachStyles(styles);
38
122
  }
39
123
  _getSlottedText() {
40
124
  const slot = this.shadowRoot?.querySelector("slot:not([name])");
@@ -107,5 +191,5 @@ export {
107
191
  ElDmCodeBlock
108
192
  };
109
193
 
110
- //# debugId=1D7F365A774CCF7064756E2164756E21
194
+ //# debugId=305524681CD093B064756E2164756E21
111
195
  //# sourceMappingURL=index.js.map
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/el-dm-code-block.ts", "../../src/index.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * DuskMoon Code Block Element\n *\n * A styled container for displaying code with optional header, language badge, and copy button.\n * Uses styles from @duskmoon-dev/core for consistent theming.\n *\n * @element el-dm-code-block\n *\n * @attr {string} language - Language label shown in the header badge\n * @attr {string} title - Optional title shown in the header\n * @attr {boolean} copyable - Whether to show a copy button\n * @attr {boolean} compact - Use compact (reduced padding) styling\n * @attr {boolean} borderless - Remove borders\n *\n * @slot - Default slot for code content (place a <pre><code> here)\n *\n * @csspart container - The code-block container div\n * @csspart header - The header bar\n * @csspart content - The code content wrapper\n *\n * @fires copy - Fired when the copy button is clicked, detail: { text: string }\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-base';\nimport { css as codeBlockCSS } from '@duskmoon-dev/core/components/code-block';\n\nconst coreStyles = codeBlockCSS.replace(/@layer\\s+components\\s*\\{/, '').replace(/\\}\\s*$/, '');\n\nconst COPY_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>`;\n\nconst CHECK_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"/></svg>`;\n\nexport class ElDmCodeBlock extends BaseElement {\n static properties = {\n language: { type: String, reflect: true },\n title: { type: String, reflect: true },\n copyable: { type: Boolean, reflect: true },\n compact: { type: Boolean, reflect: true },\n borderless: { type: Boolean, reflect: true },\n };\n\n declare language: string;\n declare title: string;\n declare copyable: boolean;\n declare compact: boolean;\n declare borderless: boolean;\n\n constructor() {\n super();\n this.attachStyles(css`\n :host {\n display: block;\n }\n :host([hidden]) {\n display: none !important;\n }\n ${coreStyles}\n /* Pass slotted pre/code through without re-styling */\n ::slotted(pre) {\n margin: 0;\n padding: 1rem;\n background: transparent;\n overflow-x: auto;\n }\n ::slotted(code) {\n background: transparent;\n padding: 0;\n }\n `);\n }\n\n private _getSlottedText(): string {\n const slot = this.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement | null;\n if (!slot) return '';\n return slot\n .assignedNodes({ flatten: true })\n .map((n) => n.textContent ?? '')\n .join('');\n }\n\n private async _handleCopy(): Promise<void> {\n const text = this._getSlottedText();\n try {\n await navigator.clipboard.writeText(text);\n this.emit('copy', { text });\n this._showCopied();\n } catch {\n // Clipboard API unavailable — silently ignore\n }\n }\n\n private _showCopied(): void {\n const btn = this.shadowRoot?.querySelector('.copy-button');\n if (!btn) return;\n btn.innerHTML = `${CHECK_ICON} Copied`;\n setTimeout(() => {\n btn.innerHTML = `${COPY_ICON} Copy`;\n }, 2000);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.shadowRoot?.addEventListener('click', (e) => {\n if ((e.target as Element)?.closest('.copy-button')) {\n this._handleCopy();\n }\n });\n }\n\n private _renderHeader(): string {\n const hasHeader = this.title || this.language || this.copyable;\n if (!hasHeader) return '';\n return `\n <div class=\"code-header\" part=\"header\">\n ${this.title ? `<span class=\"code-title\">${this.title}</span>` : ''}\n ${this.language ? `<span class=\"code-language\">${this.language}</span>` : ''}\n ${this.copyable ? `<button class=\"copy-button\" type=\"button\" aria-label=\"Copy code\">${COPY_ICON} Copy</button>` : ''}\n </div>\n `;\n }\n\n render(): string {\n const classes = ['code-block'];\n if (this.compact) classes.push('code-block-compact');\n if (this.borderless) classes.push('code-block-borderless');\n\n return `\n <div class=\"${classes.join(' ')}\" part=\"container\">\n ${this._renderHeader()}\n <div class=\"code-content\" part=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n",
5
+ "/**\n * DuskMoon Code Block Element\n *\n * A styled container for displaying code with optional header, language badge, and copy button.\n *\n * @element el-dm-code-block\n *\n * @attr {string} language - Language label shown in the header badge\n * @attr {string} title - Optional title shown in the header\n * @attr {boolean} copyable - Whether to show a copy button\n * @attr {boolean} compact - Use compact (reduced padding) styling\n * @attr {boolean} borderless - Remove borders\n *\n * @slot - Default slot for code content (place a <pre><code> here)\n *\n * @csspart container - The code-block container div\n * @csspart header - The header bar\n * @csspart content - The code content wrapper\n *\n * @fires copy - Fired when the copy button is clicked, detail: { text: string }\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-base';\n\nconst styles = css`\n :host {\n display: block;\n }\n :host([hidden]) {\n display: none !important;\n }\n\n .code-block {\n border: 1px solid var(--dm-border, #e0e0e0);\n border-radius: var(--dm-radius-md, 0.5rem);\n background: var(--dm-surface, #fafafa);\n color: var(--dm-on-surface, #1a1a1a);\n font-family: var(\n --dm-font-mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n monospace\n );\n font-size: 0.875rem;\n line-height: 1.5;\n overflow: hidden;\n }\n\n .code-block-compact .code-content {\n padding: 0.5rem;\n }\n\n .code-block-borderless {\n border: none;\n }\n\n .code-header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 1rem;\n border-bottom: 1px solid var(--dm-border, #e0e0e0);\n background: var(--dm-surface-container, #f0f0f0);\n font-size: 0.75rem;\n }\n\n .code-title {\n font-weight: 600;\n color: var(--dm-on-surface, #1a1a1a);\n }\n\n .code-language {\n margin-inline-start: auto;\n padding: 0.125rem 0.5rem;\n border-radius: var(--dm-radius-sm, 0.25rem);\n background: var(--dm-primary, #6750a4);\n color: var(--dm-on-primary, #fff);\n font-size: 0.6875rem;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.025em;\n }\n\n .code-title + .code-language {\n margin-inline-start: 0;\n }\n\n .copy-button {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n margin-inline-start: auto;\n padding: 0.25rem 0.5rem;\n border: 1px solid var(--dm-border, #e0e0e0);\n border-radius: var(--dm-radius-sm, 0.25rem);\n background: var(--dm-surface, #fafafa);\n color: var(--dm-on-surface-variant, #555);\n font-family: inherit;\n font-size: 0.6875rem;\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s;\n }\n\n .copy-button:hover {\n background: var(--dm-surface-container-high, #e0e0e0);\n color: var(--dm-on-surface, #1a1a1a);\n }\n\n .code-content {\n padding: 0;\n }\n\n ::slotted(pre) {\n margin: 0;\n padding: 1rem;\n background: transparent;\n overflow-x: auto;\n }\n\n ::slotted(code) {\n background: transparent;\n padding: 0;\n }\n`;\n\nconst COPY_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>`;\n\nconst CHECK_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"/></svg>`;\n\nexport class ElDmCodeBlock extends BaseElement {\n static properties = {\n language: { type: String, reflect: true },\n title: { type: String, reflect: true },\n copyable: { type: Boolean, reflect: true },\n compact: { type: Boolean, reflect: true },\n borderless: { type: Boolean, reflect: true },\n };\n\n declare language: string;\n declare title: string;\n declare copyable: boolean;\n declare compact: boolean;\n declare borderless: boolean;\n\n constructor() {\n super();\n this.attachStyles(styles);\n }\n\n private _getSlottedText(): string {\n const slot = this.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement | null;\n if (!slot) return '';\n return slot\n .assignedNodes({ flatten: true })\n .map((n) => n.textContent ?? '')\n .join('');\n }\n\n private async _handleCopy(): Promise<void> {\n const text = this._getSlottedText();\n try {\n await navigator.clipboard.writeText(text);\n this.emit('copy', { text });\n this._showCopied();\n } catch {\n // Clipboard API unavailable — silently ignore\n }\n }\n\n private _showCopied(): void {\n const btn = this.shadowRoot?.querySelector('.copy-button');\n if (!btn) return;\n btn.innerHTML = `${CHECK_ICON} Copied`;\n setTimeout(() => {\n btn.innerHTML = `${COPY_ICON} Copy`;\n }, 2000);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.shadowRoot?.addEventListener('click', (e) => {\n if ((e.target as Element)?.closest('.copy-button')) {\n this._handleCopy();\n }\n });\n }\n\n private _renderHeader(): string {\n const hasHeader = this.title || this.language || this.copyable;\n if (!hasHeader) return '';\n return `\n <div class=\"code-header\" part=\"header\">\n ${this.title ? `<span class=\"code-title\">${this.title}</span>` : ''}\n ${this.language ? `<span class=\"code-language\">${this.language}</span>` : ''}\n ${this.copyable ? `<button class=\"copy-button\" type=\"button\" aria-label=\"Copy code\">${COPY_ICON} Copy</button>` : ''}\n </div>\n `;\n }\n\n render(): string {\n const classes = ['code-block'];\n if (this.compact) classes.push('code-block-compact');\n if (this.borderless) classes.push('code-block-borderless');\n\n return `\n <div class=\"${classes.join(' ')}\" part=\"container\">\n ${this._renderHeader()}\n <div class=\"code-content\" part=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n",
6
6
  "import { ElDmCodeBlock } from './el-dm-code-block.js';\n\nexport { ElDmCodeBlock };\n\nexport function register(): void {\n if (!customElements.get('el-dm-code-block')) {\n customElements.define('el-dm-code-block', ElDmCodeBlock);\n }\n}\n"
7
7
  ],
8
- "mappings": ";AAuBA;AACA,gBAAS;AAET,IAAM,aAAa,aAAa,QAAQ,4BAA4B,EAAE,EAAE,QAAQ,UAAU,EAAE;AAE5F,IAAM,YAAY;AAElB,IAAM,aAAa;AAAA;AAEZ,MAAM,sBAAsB,YAAY;AAAA,SACtC,aAAa;AAAA,IAClB,UAAU,EAAE,MAAM,QAAQ,SAAS,KAAK;AAAA,IACxC,OAAO,EAAE,MAAM,QAAQ,SAAS,KAAK;AAAA,IACrC,UAAU,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,IACzC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,IACxC,YAAY,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,EAC7C;AAAA,EAQA,WAAW,GAAG;AAAA,IACZ,MAAM;AAAA,IACN,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAYH;AAAA;AAAA,EAGK,eAAe,GAAW;AAAA,IAChC,MAAM,OAAO,KAAK,YAAY,cAAc,kBAAkB;AAAA,IAC9D,IAAI,CAAC;AAAA,MAAM,OAAO;AAAA,IAClB,OAAO,KACJ,cAAc,EAAE,SAAS,KAAK,CAAC,EAC/B,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,EAC9B,KAAK,EAAE;AAAA;AAAA,OAGE,YAAW,GAAkB;AAAA,IACzC,MAAM,OAAO,KAAK,gBAAgB;AAAA,IAClC,IAAI;AAAA,MACF,MAAM,UAAU,UAAU,UAAU,IAAI;AAAA,MACxC,KAAK,KAAK,QAAQ,EAAE,KAAK,CAAC;AAAA,MAC1B,KAAK,YAAY;AAAA,MACjB,MAAM;AAAA;AAAA,EAKF,WAAW,GAAS;AAAA,IAC1B,MAAM,MAAM,KAAK,YAAY,cAAc,cAAc;AAAA,IACzD,IAAI,CAAC;AAAA,MAAK;AAAA,IACV,IAAI,YAAY,GAAG;AAAA,IACnB,WAAW,MAAM;AAAA,MACf,IAAI,YAAY,GAAG;AAAA,OAClB,IAAI;AAAA;AAAA,EAGT,iBAAiB,GAAS;AAAA,IACxB,MAAM,kBAAkB;AAAA,IACxB,KAAK,YAAY,iBAAiB,SAAS,CAAC,MAAM;AAAA,MAChD,IAAK,EAAE,QAAoB,QAAQ,cAAc,GAAG;AAAA,QAClD,KAAK,YAAY;AAAA,MACnB;AAAA,KACD;AAAA;AAAA,EAGK,aAAa,GAAW;AAAA,IAC9B,MAAM,YAAY,KAAK,SAAS,KAAK,YAAY,KAAK;AAAA,IACtD,IAAI,CAAC;AAAA,MAAW,OAAO;AAAA,IACvB,OAAO;AAAA;AAAA,UAED,KAAK,QAAQ,4BAA4B,KAAK,iBAAiB;AAAA,UAC/D,KAAK,WAAW,+BAA+B,KAAK,oBAAoB;AAAA,UACxE,KAAK,WAAW,oEAAoE,4BAA4B;AAAA;AAAA;AAAA;AAAA,EAKxH,MAAM,GAAW;AAAA,IACf,MAAM,UAAU,CAAC,YAAY;AAAA,IAC7B,IAAI,KAAK;AAAA,MAAS,QAAQ,KAAK,oBAAoB;AAAA,IACnD,IAAI,KAAK;AAAA,MAAY,QAAQ,KAAK,uBAAuB;AAAA,IAEzD,OAAO;AAAA,oBACS,QAAQ,KAAK,GAAG;AAAA,UAC1B,KAAK,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAO7B;;;ACnIO,SAAS,QAAQ,GAAS;AAAA,EAC/B,IAAI,CAAC,eAAe,IAAI,kBAAkB,GAAG;AAAA,IAC3C,eAAe,OAAO,oBAAoB,aAAa;AAAA,EACzD;AAAA;",
9
- "debugId": "1D7F365A774CCF7064756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "305524681CD093B064756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,7 +1,110 @@
1
1
  // src/el-dm-code-block.ts
2
2
  import { BaseElement, css } from "@duskmoon-dev/el-base";
3
- import { css as codeBlockCSS } from "@duskmoon-dev/core/components/code-block";
4
- var coreStyles = codeBlockCSS.replace(/@layer\s+components\s*\{/, "").replace(/\}\s*$/, "");
3
+ var styles = css`
4
+ :host {
5
+ display: block;
6
+ }
7
+ :host([hidden]) {
8
+ display: none !important;
9
+ }
10
+
11
+ .code-block {
12
+ border: 1px solid var(--dm-border, #e0e0e0);
13
+ border-radius: var(--dm-radius-md, 0.5rem);
14
+ background: var(--dm-surface, #fafafa);
15
+ color: var(--dm-on-surface, #1a1a1a);
16
+ font-family: var(
17
+ --dm-font-mono,
18
+ ui-monospace,
19
+ SFMono-Regular,
20
+ Menlo,
21
+ Monaco,
22
+ Consolas,
23
+ monospace
24
+ );
25
+ font-size: 0.875rem;
26
+ line-height: 1.5;
27
+ overflow: hidden;
28
+ }
29
+
30
+ .code-block-compact .code-content {
31
+ padding: 0.5rem;
32
+ }
33
+
34
+ .code-block-borderless {
35
+ border: none;
36
+ }
37
+
38
+ .code-header {
39
+ display: flex;
40
+ align-items: center;
41
+ gap: 0.5rem;
42
+ padding: 0.5rem 1rem;
43
+ border-bottom: 1px solid var(--dm-border, #e0e0e0);
44
+ background: var(--dm-surface-container, #f0f0f0);
45
+ font-size: 0.75rem;
46
+ }
47
+
48
+ .code-title {
49
+ font-weight: 600;
50
+ color: var(--dm-on-surface, #1a1a1a);
51
+ }
52
+
53
+ .code-language {
54
+ margin-inline-start: auto;
55
+ padding: 0.125rem 0.5rem;
56
+ border-radius: var(--dm-radius-sm, 0.25rem);
57
+ background: var(--dm-primary, #6750a4);
58
+ color: var(--dm-on-primary, #fff);
59
+ font-size: 0.6875rem;
60
+ font-weight: 500;
61
+ text-transform: uppercase;
62
+ letter-spacing: 0.025em;
63
+ }
64
+
65
+ .code-title + .code-language {
66
+ margin-inline-start: 0;
67
+ }
68
+
69
+ .copy-button {
70
+ display: inline-flex;
71
+ align-items: center;
72
+ gap: 0.25rem;
73
+ margin-inline-start: auto;
74
+ padding: 0.25rem 0.5rem;
75
+ border: 1px solid var(--dm-border, #e0e0e0);
76
+ border-radius: var(--dm-radius-sm, 0.25rem);
77
+ background: var(--dm-surface, #fafafa);
78
+ color: var(--dm-on-surface-variant, #555);
79
+ font-family: inherit;
80
+ font-size: 0.6875rem;
81
+ cursor: pointer;
82
+ transition:
83
+ background 0.15s,
84
+ color 0.15s;
85
+ }
86
+
87
+ .copy-button:hover {
88
+ background: var(--dm-surface-container-high, #e0e0e0);
89
+ color: var(--dm-on-surface, #1a1a1a);
90
+ }
91
+
92
+ .code-content {
93
+ padding: 0;
94
+ }
95
+
96
+ ::slotted(pre) {
97
+ margin: 0;
98
+ padding: 1rem;
99
+ background: transparent;
100
+ overflow-x: auto;
101
+ }
102
+
103
+ ::slotted(code) {
104
+ background: transparent;
105
+ padding: 0;
106
+ }
107
+ `;
5
108
  var COPY_ICON = `<svg class="copy-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>`;
6
109
  var CHECK_ICON = `<svg class="copy-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg>`;
7
110
 
@@ -15,26 +118,7 @@ class ElDmCodeBlock extends BaseElement {
15
118
  };
16
119
  constructor() {
17
120
  super();
18
- this.attachStyles(css`
19
- :host {
20
- display: block;
21
- }
22
- :host([hidden]) {
23
- display: none !important;
24
- }
25
- ${coreStyles}
26
- /* Pass slotted pre/code through without re-styling */
27
- ::slotted(pre) {
28
- margin: 0;
29
- padding: 1rem;
30
- background: transparent;
31
- overflow-x: auto;
32
- }
33
- ::slotted(code) {
34
- background: transparent;
35
- padding: 0;
36
- }
37
- `);
121
+ this.attachStyles(styles);
38
122
  }
39
123
  _getSlottedText() {
40
124
  const slot = this.shadowRoot?.querySelector("slot:not([name])");
@@ -106,5 +190,5 @@ function register() {
106
190
  // src/register.ts
107
191
  register();
108
192
 
109
- //# debugId=312581E0EB6264A864756E2164756E21
193
+ //# debugId=C22AD66D2A46864864756E2164756E21
110
194
  //# sourceMappingURL=register.js.map
@@ -2,11 +2,11 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/el-dm-code-block.ts", "../../src/index.ts", "../../src/register.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * DuskMoon Code Block Element\n *\n * A styled container for displaying code with optional header, language badge, and copy button.\n * Uses styles from @duskmoon-dev/core for consistent theming.\n *\n * @element el-dm-code-block\n *\n * @attr {string} language - Language label shown in the header badge\n * @attr {string} title - Optional title shown in the header\n * @attr {boolean} copyable - Whether to show a copy button\n * @attr {boolean} compact - Use compact (reduced padding) styling\n * @attr {boolean} borderless - Remove borders\n *\n * @slot - Default slot for code content (place a <pre><code> here)\n *\n * @csspart container - The code-block container div\n * @csspart header - The header bar\n * @csspart content - The code content wrapper\n *\n * @fires copy - Fired when the copy button is clicked, detail: { text: string }\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-base';\nimport { css as codeBlockCSS } from '@duskmoon-dev/core/components/code-block';\n\nconst coreStyles = codeBlockCSS.replace(/@layer\\s+components\\s*\\{/, '').replace(/\\}\\s*$/, '');\n\nconst COPY_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>`;\n\nconst CHECK_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"/></svg>`;\n\nexport class ElDmCodeBlock extends BaseElement {\n static properties = {\n language: { type: String, reflect: true },\n title: { type: String, reflect: true },\n copyable: { type: Boolean, reflect: true },\n compact: { type: Boolean, reflect: true },\n borderless: { type: Boolean, reflect: true },\n };\n\n declare language: string;\n declare title: string;\n declare copyable: boolean;\n declare compact: boolean;\n declare borderless: boolean;\n\n constructor() {\n super();\n this.attachStyles(css`\n :host {\n display: block;\n }\n :host([hidden]) {\n display: none !important;\n }\n ${coreStyles}\n /* Pass slotted pre/code through without re-styling */\n ::slotted(pre) {\n margin: 0;\n padding: 1rem;\n background: transparent;\n overflow-x: auto;\n }\n ::slotted(code) {\n background: transparent;\n padding: 0;\n }\n `);\n }\n\n private _getSlottedText(): string {\n const slot = this.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement | null;\n if (!slot) return '';\n return slot\n .assignedNodes({ flatten: true })\n .map((n) => n.textContent ?? '')\n .join('');\n }\n\n private async _handleCopy(): Promise<void> {\n const text = this._getSlottedText();\n try {\n await navigator.clipboard.writeText(text);\n this.emit('copy', { text });\n this._showCopied();\n } catch {\n // Clipboard API unavailable — silently ignore\n }\n }\n\n private _showCopied(): void {\n const btn = this.shadowRoot?.querySelector('.copy-button');\n if (!btn) return;\n btn.innerHTML = `${CHECK_ICON} Copied`;\n setTimeout(() => {\n btn.innerHTML = `${COPY_ICON} Copy`;\n }, 2000);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.shadowRoot?.addEventListener('click', (e) => {\n if ((e.target as Element)?.closest('.copy-button')) {\n this._handleCopy();\n }\n });\n }\n\n private _renderHeader(): string {\n const hasHeader = this.title || this.language || this.copyable;\n if (!hasHeader) return '';\n return `\n <div class=\"code-header\" part=\"header\">\n ${this.title ? `<span class=\"code-title\">${this.title}</span>` : ''}\n ${this.language ? `<span class=\"code-language\">${this.language}</span>` : ''}\n ${this.copyable ? `<button class=\"copy-button\" type=\"button\" aria-label=\"Copy code\">${COPY_ICON} Copy</button>` : ''}\n </div>\n `;\n }\n\n render(): string {\n const classes = ['code-block'];\n if (this.compact) classes.push('code-block-compact');\n if (this.borderless) classes.push('code-block-borderless');\n\n return `\n <div class=\"${classes.join(' ')}\" part=\"container\">\n ${this._renderHeader()}\n <div class=\"code-content\" part=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n",
5
+ "/**\n * DuskMoon Code Block Element\n *\n * A styled container for displaying code with optional header, language badge, and copy button.\n *\n * @element el-dm-code-block\n *\n * @attr {string} language - Language label shown in the header badge\n * @attr {string} title - Optional title shown in the header\n * @attr {boolean} copyable - Whether to show a copy button\n * @attr {boolean} compact - Use compact (reduced padding) styling\n * @attr {boolean} borderless - Remove borders\n *\n * @slot - Default slot for code content (place a <pre><code> here)\n *\n * @csspart container - The code-block container div\n * @csspart header - The header bar\n * @csspart content - The code content wrapper\n *\n * @fires copy - Fired when the copy button is clicked, detail: { text: string }\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-base';\n\nconst styles = css`\n :host {\n display: block;\n }\n :host([hidden]) {\n display: none !important;\n }\n\n .code-block {\n border: 1px solid var(--dm-border, #e0e0e0);\n border-radius: var(--dm-radius-md, 0.5rem);\n background: var(--dm-surface, #fafafa);\n color: var(--dm-on-surface, #1a1a1a);\n font-family: var(\n --dm-font-mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n monospace\n );\n font-size: 0.875rem;\n line-height: 1.5;\n overflow: hidden;\n }\n\n .code-block-compact .code-content {\n padding: 0.5rem;\n }\n\n .code-block-borderless {\n border: none;\n }\n\n .code-header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 1rem;\n border-bottom: 1px solid var(--dm-border, #e0e0e0);\n background: var(--dm-surface-container, #f0f0f0);\n font-size: 0.75rem;\n }\n\n .code-title {\n font-weight: 600;\n color: var(--dm-on-surface, #1a1a1a);\n }\n\n .code-language {\n margin-inline-start: auto;\n padding: 0.125rem 0.5rem;\n border-radius: var(--dm-radius-sm, 0.25rem);\n background: var(--dm-primary, #6750a4);\n color: var(--dm-on-primary, #fff);\n font-size: 0.6875rem;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.025em;\n }\n\n .code-title + .code-language {\n margin-inline-start: 0;\n }\n\n .copy-button {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n margin-inline-start: auto;\n padding: 0.25rem 0.5rem;\n border: 1px solid var(--dm-border, #e0e0e0);\n border-radius: var(--dm-radius-sm, 0.25rem);\n background: var(--dm-surface, #fafafa);\n color: var(--dm-on-surface-variant, #555);\n font-family: inherit;\n font-size: 0.6875rem;\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s;\n }\n\n .copy-button:hover {\n background: var(--dm-surface-container-high, #e0e0e0);\n color: var(--dm-on-surface, #1a1a1a);\n }\n\n .code-content {\n padding: 0;\n }\n\n ::slotted(pre) {\n margin: 0;\n padding: 1rem;\n background: transparent;\n overflow-x: auto;\n }\n\n ::slotted(code) {\n background: transparent;\n padding: 0;\n }\n`;\n\nconst COPY_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>`;\n\nconst CHECK_ICON = `<svg class=\"copy-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"/></svg>`;\n\nexport class ElDmCodeBlock extends BaseElement {\n static properties = {\n language: { type: String, reflect: true },\n title: { type: String, reflect: true },\n copyable: { type: Boolean, reflect: true },\n compact: { type: Boolean, reflect: true },\n borderless: { type: Boolean, reflect: true },\n };\n\n declare language: string;\n declare title: string;\n declare copyable: boolean;\n declare compact: boolean;\n declare borderless: boolean;\n\n constructor() {\n super();\n this.attachStyles(styles);\n }\n\n private _getSlottedText(): string {\n const slot = this.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement | null;\n if (!slot) return '';\n return slot\n .assignedNodes({ flatten: true })\n .map((n) => n.textContent ?? '')\n .join('');\n }\n\n private async _handleCopy(): Promise<void> {\n const text = this._getSlottedText();\n try {\n await navigator.clipboard.writeText(text);\n this.emit('copy', { text });\n this._showCopied();\n } catch {\n // Clipboard API unavailable — silently ignore\n }\n }\n\n private _showCopied(): void {\n const btn = this.shadowRoot?.querySelector('.copy-button');\n if (!btn) return;\n btn.innerHTML = `${CHECK_ICON} Copied`;\n setTimeout(() => {\n btn.innerHTML = `${COPY_ICON} Copy`;\n }, 2000);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.shadowRoot?.addEventListener('click', (e) => {\n if ((e.target as Element)?.closest('.copy-button')) {\n this._handleCopy();\n }\n });\n }\n\n private _renderHeader(): string {\n const hasHeader = this.title || this.language || this.copyable;\n if (!hasHeader) return '';\n return `\n <div class=\"code-header\" part=\"header\">\n ${this.title ? `<span class=\"code-title\">${this.title}</span>` : ''}\n ${this.language ? `<span class=\"code-language\">${this.language}</span>` : ''}\n ${this.copyable ? `<button class=\"copy-button\" type=\"button\" aria-label=\"Copy code\">${COPY_ICON} Copy</button>` : ''}\n </div>\n `;\n }\n\n render(): string {\n const classes = ['code-block'];\n if (this.compact) classes.push('code-block-compact');\n if (this.borderless) classes.push('code-block-borderless');\n\n return `\n <div class=\"${classes.join(' ')}\" part=\"container\">\n ${this._renderHeader()}\n <div class=\"code-content\" part=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n",
6
6
  "import { ElDmCodeBlock } from './el-dm-code-block.js';\n\nexport { ElDmCodeBlock };\n\nexport function register(): void {\n if (!customElements.get('el-dm-code-block')) {\n customElements.define('el-dm-code-block', ElDmCodeBlock);\n }\n}\n",
7
7
  "import { register } from './index.js';\n\nregister();\n"
8
8
  ],
9
- "mappings": ";AAuBA;AACA,gBAAS;AAET,IAAM,aAAa,aAAa,QAAQ,4BAA4B,EAAE,EAAE,QAAQ,UAAU,EAAE;AAE5F,IAAM,YAAY;AAElB,IAAM,aAAa;AAAA;AAEZ,MAAM,sBAAsB,YAAY;AAAA,SACtC,aAAa;AAAA,IAClB,UAAU,EAAE,MAAM,QAAQ,SAAS,KAAK;AAAA,IACxC,OAAO,EAAE,MAAM,QAAQ,SAAS,KAAK;AAAA,IACrC,UAAU,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,IACzC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,IACxC,YAAY,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,EAC7C;AAAA,EAQA,WAAW,GAAG;AAAA,IACZ,MAAM;AAAA,IACN,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAYH;AAAA;AAAA,EAGK,eAAe,GAAW;AAAA,IAChC,MAAM,OAAO,KAAK,YAAY,cAAc,kBAAkB;AAAA,IAC9D,IAAI,CAAC;AAAA,MAAM,OAAO;AAAA,IAClB,OAAO,KACJ,cAAc,EAAE,SAAS,KAAK,CAAC,EAC/B,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,EAC9B,KAAK,EAAE;AAAA;AAAA,OAGE,YAAW,GAAkB;AAAA,IACzC,MAAM,OAAO,KAAK,gBAAgB;AAAA,IAClC,IAAI;AAAA,MACF,MAAM,UAAU,UAAU,UAAU,IAAI;AAAA,MACxC,KAAK,KAAK,QAAQ,EAAE,KAAK,CAAC;AAAA,MAC1B,KAAK,YAAY;AAAA,MACjB,MAAM;AAAA;AAAA,EAKF,WAAW,GAAS;AAAA,IAC1B,MAAM,MAAM,KAAK,YAAY,cAAc,cAAc;AAAA,IACzD,IAAI,CAAC;AAAA,MAAK;AAAA,IACV,IAAI,YAAY,GAAG;AAAA,IACnB,WAAW,MAAM;AAAA,MACf,IAAI,YAAY,GAAG;AAAA,OAClB,IAAI;AAAA;AAAA,EAGT,iBAAiB,GAAS;AAAA,IACxB,MAAM,kBAAkB;AAAA,IACxB,KAAK,YAAY,iBAAiB,SAAS,CAAC,MAAM;AAAA,MAChD,IAAK,EAAE,QAAoB,QAAQ,cAAc,GAAG;AAAA,QAClD,KAAK,YAAY;AAAA,MACnB;AAAA,KACD;AAAA;AAAA,EAGK,aAAa,GAAW;AAAA,IAC9B,MAAM,YAAY,KAAK,SAAS,KAAK,YAAY,KAAK;AAAA,IACtD,IAAI,CAAC;AAAA,MAAW,OAAO;AAAA,IACvB,OAAO;AAAA;AAAA,UAED,KAAK,QAAQ,4BAA4B,KAAK,iBAAiB;AAAA,UAC/D,KAAK,WAAW,+BAA+B,KAAK,oBAAoB;AAAA,UACxE,KAAK,WAAW,oEAAoE,4BAA4B;AAAA;AAAA;AAAA;AAAA,EAKxH,MAAM,GAAW;AAAA,IACf,MAAM,UAAU,CAAC,YAAY;AAAA,IAC7B,IAAI,KAAK;AAAA,MAAS,QAAQ,KAAK,oBAAoB;AAAA,IACnD,IAAI,KAAK;AAAA,MAAY,QAAQ,KAAK,uBAAuB;AAAA,IAEzD,OAAO;AAAA,oBACS,QAAQ,KAAK,GAAG;AAAA,UAC1B,KAAK,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAO7B;;;ACnIO,SAAS,QAAQ,GAAS;AAAA,EAC/B,IAAI,CAAC,eAAe,IAAI,kBAAkB,GAAG;AAAA,IAC3C,eAAe,OAAO,oBAAoB,aAAa;AAAA,EACzD;AAAA;;;ACLF,SAAS;",
10
- "debugId": "312581E0EB6264A864756E2164756E21",
9
+ "mappings": "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",
10
+ "debugId": "C22AD66D2A46864864756E2164756E21",
11
11
  "names": []
12
12
  }
@@ -1 +1 @@
1
- {"fileNames":["../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/duskmoon-core.d.ts","../../../packages/base/dist/types/base-element.d.ts","../../../packages/base/dist/types/styles.d.ts","../../../packages/base/dist/types/animations.d.ts","../../../packages/base/dist/types/themes.d.ts","../../../packages/base/dist/types/mixins.d.ts","../../../packages/base/dist/types/types.d.ts","../../../packages/base/dist/types/validation.d.ts","../../../packages/base/dist/types/performance.d.ts","../../../packages/base/dist/types/index.d.ts","../src/el-dm-code-block.ts","../src/index.ts","../src/register.ts"],"fileIdsList":[[60,69],[70],[71],[61,62,63,64,65,66,67,68],[61],[66]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},"46c828d99adadb86f230de09257dfbd70011bbeea0d1613d243836e52680affd","42526b6de804c10fd86f1cf55a6c660a74ee448e381f0f78356f223b75982280","28914adcfb92fa94199e1c887da7d67a7d9d736d9571627d6b02e55ff82f577b","b0a69607a92876948c2a42e3aa6703b0d724699468ed7e3c6e2a237d119a9db9","cdacb8e4ac607a46494d1187e073382c43e7269e8bf698502a285a8ccb470925","f5091ebbd718ea236a7f503df569deb07aff0621aa8f73ed90e419de88f006aa","d3a328c0eccf652bc8b6c14515a8b848a558b9d684e15a7c0c2e15de5016df57","1b5193795ee478857bf1115fed004151284dd4da883a5a4f22e62631c3b414ad","3be01044afc63501423c361deb531d3e95f5c2677f1f7a628802bd346988d62c","78d8d1ca7d54a437702c8a8c08764b6a49f2cf2ca357d0e459bfe89a06abf50a",{"version":"6fa0f7824fbf068f72e369bd8672c1fbad1061ebe505ef17d02d409e6404bb64","signature":"529dbe348fb7a1095ad66af5022030e3a80ca054910326ab9655e96327127d76"},{"version":"6f696d865e14a50d59cd66529f3d99d07b2974db0f5cf01e4b8976eeb322b13a","signature":"016e23a28ad6427edb1e7274dd2eb8ec8d24504049a9f96bb2280ccfee65dddb"},{"version":"e0a32396c971f440a5871afb0cc7947f33b4854a30f95b8e90e0a9aa0dd3f6bd","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[60,[70,72]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":99,"outDir":"./types","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[70,1],[71,2],[72,3],[69,4],[65,5],[67,6]],"latestChangedDtsFile":"./types/register.d.ts","version":"6.0.2"}
1
+ {"fileNames":["../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.bun/typescript@6.0.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../packages/base/dist/types/base-element.d.ts","../../../packages/base/dist/types/styles.d.ts","../../../packages/base/dist/types/animations.d.ts","../../../packages/base/dist/types/themes.d.ts","../../../packages/base/dist/types/mixins.d.ts","../../../packages/base/dist/types/types.d.ts","../../../packages/base/dist/types/validation.d.ts","../../../packages/base/dist/types/performance.d.ts","../../../packages/base/dist/types/index.d.ts","../src/el-dm-code-block.ts","../src/index.ts","../src/register.ts"],"fileIdsList":[[68],[69],[70],[60,61,62,63,64,65,66,67],[60],[65]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},"42526b6de804c10fd86f1cf55a6c660a74ee448e381f0f78356f223b75982280","28914adcfb92fa94199e1c887da7d67a7d9d736d9571627d6b02e55ff82f577b","b0a69607a92876948c2a42e3aa6703b0d724699468ed7e3c6e2a237d119a9db9","cdacb8e4ac607a46494d1187e073382c43e7269e8bf698502a285a8ccb470925","f5091ebbd718ea236a7f503df569deb07aff0621aa8f73ed90e419de88f006aa","d3a328c0eccf652bc8b6c14515a8b848a558b9d684e15a7c0c2e15de5016df57","1b5193795ee478857bf1115fed004151284dd4da883a5a4f22e62631c3b414ad","3be01044afc63501423c361deb531d3e95f5c2677f1f7a628802bd346988d62c","78d8d1ca7d54a437702c8a8c08764b6a49f2cf2ca357d0e459bfe89a06abf50a",{"version":"a4e3754ec223ddb1ce834408b94801fa7feec943110046ea7e590110b1763503","signature":"a3a496e169ec57ceafa9f2c3d5f62d591ae57122f5e7ed46cfd5b5c3cea30c96"},{"version":"6f696d865e14a50d59cd66529f3d99d07b2974db0f5cf01e4b8976eeb322b13a","signature":"016e23a28ad6427edb1e7274dd2eb8ec8d24504049a9f96bb2280ccfee65dddb"},{"version":"e0a32396c971f440a5871afb0cc7947f33b4854a30f95b8e90e0a9aa0dd3f6bd","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[[69,71]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":99,"outDir":"./types","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[69,1],[70,2],[71,3],[68,4],[64,5],[66,6]],"latestChangedDtsFile":"./types/register.d.ts","version":"6.0.2"}
@@ -2,7 +2,6 @@
2
2
  * DuskMoon Code Block Element
3
3
  *
4
4
  * A styled container for displaying code with optional header, language badge, and copy button.
5
- * Uses styles from @duskmoon-dev/core for consistent theming.
6
5
  *
7
6
  * @element el-dm-code-block
8
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"el-dm-code-block.d.ts","sourceRoot":"","sources":["../../src/el-dm-code-block.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,WAAW,EAAO,MAAM,uBAAuB,CAAC;AASzD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;MAMf;IAEM,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;;IA0B5B,OAAO,CAAC,eAAe;YAST,WAAW;IAWzB,OAAO,CAAC,WAAW;IASnB,iBAAiB,IAAI,IAAI;IASzB,OAAO,CAAC,aAAa;IAYrB,MAAM,IAAI,MAAM;CAcjB"}
1
+ {"version":3,"file":"el-dm-code-block.d.ts","sourceRoot":"","sources":["../../src/el-dm-code-block.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAO,MAAM,uBAAuB,CAAC;AAgHzD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;MAMf;IAEM,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;;IAO5B,OAAO,CAAC,eAAe;YAST,WAAW;IAWzB,OAAO,CAAC,WAAW;IASnB,iBAAiB,IAAI,IAAI;IASzB,OAAO,CAAC,aAAa;IAYrB,MAAM,IAAI,MAAM;CAcjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duskmoon-dev/el-code-block",
3
- "version": "0.12.0",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -23,8 +23,8 @@
23
23
  "scripts": {
24
24
  "prebuild": "bun run clean",
25
25
  "build": "bun run build:esm && bun run build:cjs && bun run build:types",
26
- "build:esm": "bun build ./src/index.ts ./src/register.ts --outdir ./dist/esm --format esm --sourcemap --external @duskmoon-dev/el-base --external @duskmoon-dev/core",
27
- "build:cjs": "bun build ./src/index.ts ./src/register.ts --outdir ./dist/cjs --format cjs --sourcemap --external @duskmoon-dev/el-base --external @duskmoon-dev/core",
26
+ "build:esm": "bun build ./src/index.ts ./src/register.ts --outdir ./dist/esm --format esm --sourcemap --external @duskmoon-dev/el-base",
27
+ "build:cjs": "bun build ./src/index.ts ./src/register.ts --outdir ./dist/cjs --format cjs --sourcemap --external @duskmoon-dev/el-base",
28
28
  "build:types": "tsc --emitDeclarationOnly --outDir ./dist/types",
29
29
  "dev": "bun build ./src/index.ts --outdir ./dist/esm --format esm --sourcemap --external @duskmoon-dev/el-base --watch",
30
30
  "clean": "del-cli dist",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@duskmoon-dev/el-base": "0.11.2",
43
- "@duskmoon-dev/core": "^1.14.2"
43
+ "@duskmoon-dev/core": "^1.16.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "typescript": "^6.0.2"