@mhmo91/schmancy 0.9.19 → 0.9.21
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/agent/{flow-CaPi2G8y.js.map → flow-CvG1fLW5.js.map} +1 -1
- package/dist/agent/{rolldown-runtime-DsMetpgY.js → rolldown-runtime-BIIoCavz.js} +9 -2
- package/dist/agent/schmancy.agent.js +3348 -3332
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/{vendor-highlight-CHJZQQB7.js → vendor-highlight-Dow87ZL_.js} +90 -85
- package/dist/agent/{vendor-highlight-CHJZQQB7.js.map → vendor-highlight-Dow87ZL_.js.map} +1 -1
- package/dist/agent/{vendor-jsqr-r7GNh4P3.js → vendor-jsqr-Bl4iAtKC.js} +1 -1
- package/dist/agent/{vendor-jsqr-r7GNh4P3.js.map → vendor-jsqr-Bl4iAtKC.js.map} +1 -1
- package/dist/agent/{vendor-material-color-Be96dpGE.js.map → vendor-material-color-DcL7ZPxx.js.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{code-highlight-zSYcSfCz.cjs → code-highlight-B_l8vDzn.cjs} +11 -11
- package/dist/code-highlight-B_l8vDzn.cjs.map +1 -0
- package/dist/{code-highlight-BgExKEto.js → code-highlight-CI_gqXYX.js} +30 -22
- package/dist/code-highlight-CI_gqXYX.js.map +1 -0
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -2
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/qr-scanner.cjs +5 -5
- package/dist/qr-scanner.cjs.map +1 -1
- package/dist/qr-scanner.js +10 -6
- package/dist/qr-scanner.js.map +1 -1
- package/dist/{src-BGj6ufWS.js → src-Dw-PjtMH.js} +1 -1
- package/dist/{src-BGj6ufWS.js.map → src-Dw-PjtMH.js.map} +1 -1
- package/dist/{src-BPKGdQdp.cjs → src-sG7Ihf0e.cjs} +1 -1
- package/dist/{src-BPKGdQdp.cjs.map → src-sG7Ihf0e.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/package.json +1 -1
- package/src/code-highlight/code-highlight.ts +56 -24
- package/src/qr-scanner/qr-scanner.ts +27 -2
- package/types/src/code-highlight/code-highlight.d.ts +8 -1
- package/dist/code-highlight-BgExKEto.js.map +0 -1
- package/dist/code-highlight-zSYcSfCz.cjs.map +0 -1
- /package/dist/agent/{flow-CaPi2G8y.js → flow-CvG1fLW5.js} +0 -0
- /package/dist/agent/{vendor-material-color-Be96dpGE.js → vendor-material-color-DcL7ZPxx.js} +0 -0
package/dist/badge.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-sG7Ihf0e.cjs`);Object.defineProperty(exports,`ScBadgeV2`,{enumerable:!0,get:function(){return e.T}}),Object.defineProperty(exports,`SchmancyBadgeV2`,{enumerable:!0,get:function(){return e.E}});
|
package/dist/badge.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { E as e, T as t } from "./src-
|
|
1
|
+
import { E as e, T as t } from "./src-Dw-PjtMH.js";
|
|
2
2
|
export { t as ScBadgeV2, e as SchmancyBadgeV2 };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
require(`./chunk-CncqDLb2.cjs`);const e=require(`./tailwind.mixin-Bh58QnlW.cjs`),t=require(`./decorate-F9CuyeHg.cjs`);require(`./mixins.cjs`);let n=require(`rxjs`),r=require(`rxjs/operators`),i=require(`lit/decorators.js`),a=require(`lit`),o=require(`lit/directives/unsafe-html.js`);var s=null,c=class extends e.t(a.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
width: 100%;
|
|
@@ -118,8 +118,8 @@ const e=require(`./chunk-CncqDLb2.cjs`),t=require(`./tailwind.mixin-Bh58QnlW.cjs
|
|
|
118
118
|
user-select: none;
|
|
119
119
|
font-size: inherit;
|
|
120
120
|
}
|
|
121
|
-
`){constructor(...e){super(...e),this.language=`javascript`,this.code=``,this.lineNumbers=!1,this.copyButton=!0,this.copied=!1}
|
|
122
|
-
`),n=this.getHighlightedLines();return t.map((e,t)=>{let r=t+1,i=n.has(r)?`code-line highlighted`:`code-line`,a=``;return this.lineNumbers&&(a+=`<span class="line-number">${r}</span>`),a+=e,`<div class="${i}">${a}</div>`}).join(``)}async copyCode(){try{await navigator.clipboard.writeText(this.code),this.copied=!0,setTimeout(()=>{this.copied=!1},2e3)}catch{}}getLanguageLabel(){return this.filename?this.filename:{javascript:`JavaScript`,typescript:`TypeScript`,html:`HTML`,markdown:`Markdown`,bash:`Bash`}[this.language.toLowerCase()]||this.language.toUpperCase()}render(){let e=this.lineNumbers||this.highlightLines?`code-with-lines`:`hljs`;return
|
|
121
|
+
`){constructor(...e){super(...e),this.language=`javascript`,this.code=``,this.lineNumbers=!1,this.copyButton=!0,this.copied=!1,this._highlightedCode=``}updated(e){super.updated?.(e),(e.has(`code`)||e.has(`language`)||e.has(`lineNumbers`)||e.has(`highlightLines`))&&this._rehighlight()}async _rehighlight(){if(!this.code)return void(this._highlightedCode=``);let e=await(s||=Promise.all([import(`highlight.js/lib/core`),import(`highlight.js/lib/languages/bash`),import(`highlight.js/lib/languages/javascript`),import(`highlight.js/lib/languages/markdown`),import(`highlight.js/lib/languages/typescript`),import(`highlight.js/lib/languages/xml`)]).then(([e,t,n,r,i,a])=>{let o=e.default;return o.registerLanguage(`javascript`,n.default),o.registerLanguage(`typescript`,i.default),o.registerLanguage(`html`,a.default),o.registerLanguage(`xml`,a.default),o.registerLanguage(`markdown`,r.default),o.registerLanguage(`bash`,t.default),o}));if(!this.isConnected)return;let t=``;try{t=e.highlight(this.code.trim(),{language:this.language}).value}catch{try{t=e.highlightAuto(this.code.trim()).value}catch{t=this.escapeHtml(this.code.trim())}}this.lineNumbers||this.highlightLines?this._highlightedCode=this.addLineFeatures(t):this._highlightedCode=t}escapeHtml(e){let t=document.createElement(`div`);return t.textContent=e,t.innerHTML}getHighlightedLines(){let e=new Set;if(!this.highlightLines)return e;let t=this.highlightLines.split(`,`);for(let n of t){let t=n.trim();if(t.includes(`-`)){let[n,r]=t.split(`-`).map(e=>parseInt(e.trim()));if(!isNaN(n)&&!isNaN(r))for(let t=n;t<=r;t++)e.add(t)}else{let n=parseInt(t);isNaN(n)||e.add(n)}}return e}addLineFeatures(e){let t=e.split(`
|
|
122
|
+
`),n=this.getHighlightedLines();return t.map((e,t)=>{let r=t+1,i=n.has(r)?`code-line highlighted`:`code-line`,a=``;return this.lineNumbers&&(a+=`<span class="line-number">${r}</span>`),a+=e,`<div class="${i}">${a}</div>`}).join(``)}async copyCode(){try{await navigator.clipboard.writeText(this.code),this.copied=!0,setTimeout(()=>{this.copied=!1},2e3)}catch{}}getLanguageLabel(){return this.filename?this.filename:{javascript:`JavaScript`,typescript:`TypeScript`,html:`HTML`,markdown:`Markdown`,bash:`Bash`}[this.language.toLowerCase()]||this.language.toUpperCase()}render(){let e=this.lineNumbers||this.highlightLines?`code-with-lines`:`hljs`;return a.html`
|
|
123
123
|
<schmancy-details class="bg-surface-default">
|
|
124
124
|
<section slot="summary">
|
|
125
125
|
<!-- Header -->
|
|
@@ -135,7 +135,7 @@ const e=require(`./chunk-CncqDLb2.cjs`),t=require(`./tailwind.mixin-Bh58QnlW.cjs
|
|
|
135
135
|
${this.getLanguageLabel()}
|
|
136
136
|
</span>
|
|
137
137
|
</div>
|
|
138
|
-
${this.copyButton?
|
|
138
|
+
${this.copyButton?a.html`
|
|
139
139
|
<schmancy-button
|
|
140
140
|
.variant="${this.copied?`filled tonal`:`text`}"
|
|
141
141
|
@click=${this.copyCode}
|
|
@@ -149,17 +149,17 @@ const e=require(`./chunk-CncqDLb2.cjs`),t=require(`./tailwind.mixin-Bh58QnlW.cjs
|
|
|
149
149
|
</section>
|
|
150
150
|
<!-- Code -->
|
|
151
151
|
<div class="overflow-auto" style="${this.maxHeight?`max-height: ${this.maxHeight}`:``}">
|
|
152
|
-
<pre class="m-0"><code class="${e}">${(0,
|
|
152
|
+
<pre class="m-0"><code class="${e}">${(0,o.unsafeHTML)(this._highlightedCode)}</code></pre>
|
|
153
153
|
</div>
|
|
154
154
|
</schmancy-details>
|
|
155
|
-
`}};
|
|
155
|
+
`}};t.t([(0,i.property)({type:String})],c.prototype,`language`,void 0),t.t([(0,i.property)({type:String})],c.prototype,`code`,void 0),t.t([(0,i.property)({type:String})],c.prototype,`filename`,void 0),t.t([(0,i.property)({type:Boolean})],c.prototype,`lineNumbers`,void 0),t.t([(0,i.property)({type:Boolean})],c.prototype,`copyButton`,void 0),t.t([(0,i.property)({type:String})],c.prototype,`highlightLines`,void 0),t.t([(0,i.property)({type:String})],c.prototype,`maxHeight`,void 0),t.t([(0,i.state)()],c.prototype,`copied`,void 0),t.t([(0,i.state)()],c.prototype,`_highlightedCode`,void 0),c=t.t([(0,i.customElement)(`schmancy-code`)],c);var l=class extends e.t(a.css`:host{
|
|
156
156
|
display:block;
|
|
157
157
|
overflow:hidden;
|
|
158
158
|
position:relative;
|
|
159
159
|
inset:0;
|
|
160
|
-
}`){constructor(...e){super(...e),this.language=`html`,this.layout=`vertical`,this.preview=!0,this.slotContent=``}connectedCallback(){super.connectedCallback(),(0,
|
|
160
|
+
}`){constructor(...e){super(...e),this.language=`html`,this.layout=`vertical`,this.preview=!0,this.slotContent=``}connectedCallback(){super.connectedCallback(),(0,n.timer)(0).pipe((0,r.take)(1)).subscribe(()=>{let e=this.shadowRoot?.querySelector(`slot`);if(e){let t=e.assignedNodes({flatten:!0}).map(e=>e.nodeType===Node.ELEMENT_NODE?e.outerHTML:e.nodeType===Node.TEXT_NODE&&e.textContent||``).join(``).split(`
|
|
161
161
|
`),n=t.filter(e=>e.trim().length>0).reduce((e,t)=>{let n=t.match(/^(\s*)/)?.[1].length||0;return Math.min(e,n)},1/0);this.slotContent=t.map(e=>e.slice(n)).join(`
|
|
162
|
-
`).trim()}})}render(){let e=this.layout===`horizontal`?`grid grid-cols-1 lg:grid-cols-2 gap-0`:`flex flex-col`,t=this.preview&&this.language.toLowerCase()===`html`;return
|
|
162
|
+
`).trim()}})}render(){let e=this.layout===`horizontal`?`grid grid-cols-1 lg:grid-cols-2 gap-0`:`flex flex-col`,t=this.preview&&this.language.toLowerCase()===`html`;return a.html`
|
|
163
163
|
<schmancy-surface class="rounded-lg overflow-hidden">
|
|
164
164
|
<div class="${t?e:``}">
|
|
165
165
|
<!-- Code section with proper overflow handling -->
|
|
@@ -173,13 +173,13 @@ const e=require(`./chunk-CncqDLb2.cjs`),t=require(`./tailwind.mixin-Bh58QnlW.cjs
|
|
|
173
173
|
</div>
|
|
174
174
|
|
|
175
175
|
<!-- Preview section (only visible for HTML and when preview is enabled) -->
|
|
176
|
-
${t?
|
|
176
|
+
${t?a.html`
|
|
177
177
|
<div class="min-w-0 overflow-auto">
|
|
178
178
|
<schmancy-surface type="solid" class="p-2 h-full">
|
|
179
179
|
<slot></slot>
|
|
180
180
|
</schmancy-surface>
|
|
181
181
|
</div>
|
|
182
|
-
`:
|
|
182
|
+
`:a.html`
|
|
183
183
|
<!-- Hidden slot to capture content -->
|
|
184
184
|
<div class="hidden">
|
|
185
185
|
<slot></slot>
|
|
@@ -187,4 +187,4 @@ const e=require(`./chunk-CncqDLb2.cjs`),t=require(`./tailwind.mixin-Bh58QnlW.cjs
|
|
|
187
187
|
`}
|
|
188
188
|
</div>
|
|
189
189
|
</schmancy-surface>
|
|
190
|
-
`}};
|
|
190
|
+
`}};t.t([(0,i.property)({type:String})],l.prototype,`language`,void 0),t.t([(0,i.property)({type:String})],l.prototype,`layout`,void 0),t.t([(0,i.property)({type:Boolean})],l.prototype,`preview`,void 0),t.t([(0,i.state)()],l.prototype,`slotContent`,void 0),l=t.t([(0,i.customElement)(`schmancy-code-preview`)],l),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return l}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-highlight-B_l8vDzn.cjs","names":[],"sources":["../src/code-highlight/code-highlight.ts","../src/code-highlight/code-preview.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js'\n\n// highlight.js + all 6 language grammars are loaded lazily on first render.\n// Static imports were previously responsible for ~15 KB gzipped (vendor-\n// highlight chunk) being eagerly fetched on every agent-bundle first paint,\n// even for pages that never rendered <schmancy-code>. See ADR 0014 in the\n// parent monorepo.\ntype Hljs = typeof import('highlight.js/lib/core').default\n\nlet hljsPromise: Promise<Hljs> | null = null\nfunction loadHljs(): Promise<Hljs> {\n\tif (hljsPromise) return hljsPromise\n\thljsPromise = Promise.all([\n\t\timport('highlight.js/lib/core'),\n\t\timport('highlight.js/lib/languages/bash'),\n\t\timport('highlight.js/lib/languages/javascript'),\n\t\timport('highlight.js/lib/languages/markdown'),\n\t\timport('highlight.js/lib/languages/typescript'),\n\t\timport('highlight.js/lib/languages/xml'),\n\t]).then(([core, bash, javascript, markdown, typescript, xml]) => {\n\t\tconst hljs = core.default\n\t\thljs.registerLanguage('javascript', javascript.default)\n\t\thljs.registerLanguage('typescript', typescript.default)\n\t\thljs.registerLanguage('html', xml.default)\n\t\thljs.registerLanguage('xml', xml.default)\n\t\thljs.registerLanguage('markdown', markdown.default)\n\t\thljs.registerLanguage('bash', bash.default)\n\t\treturn hljs\n\t})\n\treturn hljsPromise\n}\n\n/**\n * @element schmancy-code\n * Code highlighting component using highlight.js with schmancy theming support\n */\n@customElement('schmancy-code')\nexport class SchmancyCode extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\toverflow: hidden;\n\t}\n\n\t/* Code block styling using schmancy color system */\n\t.hljs {\n\t\tdisplay: block;\n\t\toverflow-x: auto;\n\t\tpadding: 0.5em;\n\t\tcolor: var(--md-sys-color-on-surface-variant);\n\t\tbackground: var(--md-sys-color-surface-container-lowest);\n\t\tfont-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n\t}\n\n\t/* Comments and documentation */\n\t.hljs-comment,\n\t.hljs-quote {\n\t\tcolor: var(--md-sys-color-outline);\n\t\tfont-style: italic;\n\t}\n\n\t/* Keywords, doctags, formulas */\n\t.hljs-doctag,\n\t.hljs-keyword,\n\t.hljs-formula {\n\t\tcolor: var(--md-sys-color-primary);\n\t}\n\n\t/* Tags, sections, names, deletions */\n\t.hljs-section,\n\t.hljs-name,\n\t.hljs-selector-tag,\n\t.hljs-deletion,\n\t.hljs-subst {\n\t\tcolor: var(--md-sys-color-error);\n\t}\n\n\t/* Literals */\n\t.hljs-literal {\n\t\tcolor: var(--md-sys-color-tertiary);\n\t}\n\n\t/* Strings, regex, additions */\n\t.hljs-string,\n\t.hljs-regexp,\n\t.hljs-addition,\n\t.hljs-attribute,\n\t.hljs-meta-string {\n\t\tcolor: var(--md-sys-color-secondary);\n\t}\n\n\t/* Built-ins and class titles */\n\t.hljs-built_in,\n\t.hljs-class .hljs-title {\n\t\tcolor: var(--md-sys-color-tertiary);\n\t}\n\n\t/* Variables, attributes, types */\n\t.hljs-attr,\n\t.hljs-variable,\n\t.hljs-template-variable,\n\t.hljs-type,\n\t.hljs-selector-class,\n\t.hljs-selector-attr,\n\t.hljs-selector-pseudo,\n\t.hljs-number {\n\t\tcolor: var(--md-sys-color-on-surface);\n\t}\n\n\t/* Symbols, bullets, links, meta */\n\t.hljs-symbol,\n\t.hljs-bullet,\n\t.hljs-link,\n\t.hljs-meta,\n\t.hljs-selector-id,\n\t.hljs-title {\n\t\tcolor: var(--md-sys-color-secondary);\n\t}\n\n\t.hljs-emphasis {\n\t\tfont-style: italic;\n\t}\n\n\t.hljs-strong {\n\t\tfont-weight: bold;\n\t}\n\n\t.hljs-link {\n\t\ttext-decoration: underline;\n\t}\n\n\t/* Line features styling */\n\t.code-with-lines {\n\t\tbackground: transparent;\n\t\tpadding: 0;\n\t}\n\n\t.code-line {\n\t\tdisplay: block;\n\t\tpadding-left: 0;\n\t\ttransition: background-color 0.2s ease;\n\t}\n\n\t.code-line.highlighted {\n\t\tbackground-color: var(--md-sys-color-primary-container);\n\t\topacity: 0.2;\n\t}\n\n\t.line-number {\n\t\tdisplay: inline-block;\n\t\twidth: 3rem;\n\t\tpadding-right: 1rem;\n\t\ttext-align: right;\n\t\tcolor: var(--md-sys-color-outline);\n\t\tuser-select: none;\n\t\tfont-size: inherit;\n\t}\n`) {\n\t/**\n\t * Programming language for syntax highlighting\n\t */\n\t@property({ type: String })\n\tlanguage: string = 'javascript'\n\n\t/**\n\t * Code content to highlight\n\t */\n\t@property({ type: String })\n\tcode: string = ''\n\n\t/**\n\t * Optional filename or title to display in header\n\t */\n\t@property({ type: String })\n\tfilename?: string\n\n\t/**\n\t * Show line numbers\n\t */\n\t@property({ type: Boolean })\n\tlineNumbers: boolean = false\n\n\t/**\n\t * Show copy button\n\t */\n\t@property({ type: Boolean })\n\tcopyButton: boolean = true\n\n\t/**\n\t * Highlighted line numbers (comma-separated or ranges like \"1-3,5,7-9\")\n\t */\n\t@property({ type: String })\n\thighlightLines?: string\n\n\t/**\n\t * Maximum height before scrolling\n\t */\n\t@property({ type: String })\n\tmaxHeight?: string\n\n\t@state()\n\tprivate copied: boolean = false\n\n\t/**\n\t * Fully-rendered highlighted HTML — populated asynchronously after\n\t * `loadHljs()` resolves. Empty on first render (one microtask) for a\n\t * cold component; non-empty from then on.\n\t */\n\t@state()\n\tprivate _highlightedCode: string = ''\n\n\tprotected override updated(changed: Map<string, unknown>): void {\n\t\tsuper.updated?.(changed)\n\t\tif (changed.has('code') || changed.has('language') || changed.has('lineNumbers') || changed.has('highlightLines')) {\n\t\t\tvoid this._rehighlight()\n\t\t}\n\t}\n\n\tprivate async _rehighlight(): Promise<void> {\n\t\tif (!this.code) {\n\t\t\tthis._highlightedCode = ''\n\t\t\treturn\n\t\t}\n\t\tconst hljs = await loadHljs()\n\t\t// Guard against unmount + racing property changes.\n\t\tif (!this.isConnected) return\n\n\t\tlet highlightedHtml = ''\n\t\ttry {\n\t\t\tconst result = hljs.highlight(this.code.trim(), { language: this.language })\n\t\t\thighlightedHtml = result.value\n\t\t} catch {\n\t\t\ttry {\n\t\t\t\tconst result = hljs.highlightAuto(this.code.trim())\n\t\t\t\thighlightedHtml = result.value\n\t\t\t} catch {\n\t\t\t\thighlightedHtml = this.escapeHtml(this.code.trim())\n\t\t\t}\n\t\t}\n\n\t\tif (this.lineNumbers || this.highlightLines) {\n\t\t\tthis._highlightedCode = this.addLineFeatures(highlightedHtml)\n\t\t} else {\n\t\t\tthis._highlightedCode = highlightedHtml\n\t\t}\n\t}\n\n\tprivate escapeHtml(text: string): string {\n\t\tconst div = document.createElement('div')\n\t\tdiv.textContent = text\n\t\treturn div.innerHTML\n\t}\n\n\tprivate getHighlightedLines(): Set<number> {\n\t\tconst lines = new Set<number>()\n\t\tif (!this.highlightLines) return lines\n\n\t\tconst parts = this.highlightLines.split(',')\n\t\tfor (const part of parts) {\n\t\t\tconst trimmed = part.trim()\n\t\t\tif (trimmed.includes('-')) {\n\t\t\t\tconst [start, end] = trimmed.split('-').map(n => parseInt(n.trim()))\n\t\t\t\tif (!isNaN(start) && !isNaN(end)) {\n\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\tlines.add(i)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst lineNum = parseInt(trimmed)\n\t\t\t\tif (!isNaN(lineNum)) {\n\t\t\t\t\tlines.add(lineNum)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn lines\n\t}\n\n\tprivate addLineFeatures(highlightedHtml: string): string {\n\t\tconst lines = highlightedHtml.split('\\n')\n\t\tconst highlightedLines = this.getHighlightedLines()\n\n\t\treturn lines\n\t\t\t.map((line, index) => {\n\t\t\t\tconst lineNumber = index + 1\n\t\t\t\tconst isHighlighted = highlightedLines.has(lineNumber)\n\t\t\t\tconst lineClass = isHighlighted ? 'code-line highlighted' : 'code-line'\n\n\t\t\t\tlet content = ''\n\t\t\t\tif (this.lineNumbers) {\n\t\t\t\t\tcontent += `<span class=\"line-number\">${lineNumber}</span>`\n\t\t\t\t}\n\t\t\t\tcontent += line\n\n\t\t\t\treturn `<div class=\"${lineClass}\">${content}</div>`\n\t\t\t})\n\t\t\t.join('')\n\t}\n\n\tprivate async copyCode() {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(this.code)\n\t\t\tthis.copied = true\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.copied = false\n\t\t\t}, 2000)\n\t\t} catch (err) {\n\t\t\tconsole.error('Failed to copy code:', err)\n\t\t}\n\t}\n\n\tprivate getLanguageLabel(): string {\n\t\tconst languageMap: Record<string, string> = {\n\t\t\tjavascript: 'JavaScript',\n\t\t\ttypescript: 'TypeScript',\n\t\t\thtml: 'HTML',\n\t\t\tmarkdown: 'Markdown',\n\t\t\tbash: 'Bash',\n\t\t}\n\n\t\tif (this.filename) {\n\t\t\treturn this.filename\n\t\t}\n\n\t\treturn languageMap[this.language.toLowerCase()] || this.language.toUpperCase()\n\t}\n\n\trender() {\n\t\tconst codeClass = this.lineNumbers || this.highlightLines ? 'code-with-lines' : 'hljs'\n\n\t\treturn html`\n\t\t\t<schmancy-details class=\"bg-surface-default\">\n\t\t\t\t<section slot=\"summary\">\n\t\t\t\t\t<!-- Header -->\n\t\t\t\t\t<div class=\"flex items-center justify-between\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t<div class=\"flex gap-1.5\">\n\t\t\t\t\t\t\t\t<div class=\"w-3 h-3 rounded-full opacity-60\" style=\"background-color: var(--md-sys-color-error);\"></div>\n\t\t\t\t\t\t\t\t<div class=\"w-3 h-3 rounded-full opacity-60\" style=\"background-color: var(--md-sys-color-tertiary);\"></div>\n\t\t\t\t\t\t\t\t<div class=\"w-3 h-3 rounded-full opacity-60\" style=\"background-color: var(--md-sys-color-secondary);\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class=\"text-xs font-medium opacity-70 ml-2\" style=\"color: var(--md-sys-color-on-surface-variant);\">\n\t\t\t\t\t\t\t\t${this.getLanguageLabel()}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t${this.copyButton\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\t.variant=\"${this.copied ? 'filled tonal' : 'text'}\"\n\t\t\t\t\t\t\t\t\t\t@click=${this.copyCode}\n\t\t\t\t\t\t\t\t\t\tclass=\"transition-all\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<schmancy-icon > ${this.copied ? 'check' : 'content_copy'} </schmancy-icon>\n\t\t\t\t\t\t\t\t\t\t<span class=\"ml-1\">${this.copied ? 'Copied!' : 'Copy'}</span>\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\t\t\t\t<!-- Code -->\n\t\t\t\t<div class=\"overflow-auto\" style=\"${this.maxHeight ? `max-height: ${this.maxHeight}` : ''}\">\n\t\t\t\t\t<pre class=\"m-0\"><code class=\"${codeClass}\">${unsafeHTML(this._highlightedCode)}</code></pre>\n\t\t\t\t</div>\n\t\t\t</schmancy-details>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-code': SchmancyCode\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { timer } from 'rxjs'\nimport { take } from 'rxjs/operators'\n\n/**\n * @element schmancy-code-preview\n * A component that shows code and its rendered preview side by side\n * Takes the content as a slot and displays both the source and rendered result\n */\n@customElement('schmancy-code-preview')\nexport class SchmancyCodePreview extends TailwindElement(\n\tcss`:host{\n\t\tdisplay:block;\n\t\toverflow:hidden;\n\t\tposition:relative;\n\t\tinset:0;\n\t}`\n) {\n\t/**\n\t * Programming language for syntax highlighting\n\t */\n\t@property({ type: String })\n\tlanguage: string = 'html'\n\n\t/**\n\t * Show code on top or side-by-side\n\t */\n\t@property({ type: String })\n\tlayout: 'vertical' | 'horizontal' = 'vertical'\n\n\t/**\n\t * Whether to render/execute the code in preview section\n\t * When false, only shows the code without rendering\n\t */\n\t@property({ type: Boolean })\n\tpreview: boolean = true\n\n\t@state()\n\tprivate slotContent: string = ''\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\t// Capture the slot content as HTML string\n\t\ttimer(0).pipe(take(1)).subscribe(() => {\n\t\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\t\tif (slot) {\n\t\t\t\tconst nodes = slot.assignedNodes({ flatten: true })\n\t\t\t\tconst htmlStrings = nodes.map(node => {\n\t\t\t\t\tif (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\t\t\treturn (node as HTMLElement).outerHTML\n\t\t\t\t\t} else if (node.nodeType === Node.TEXT_NODE) {\n\t\t\t\t\t\treturn node.textContent || ''\n\t\t\t\t\t}\n\t\t\t\t\treturn ''\n\t\t\t\t})\n\t\t\t\t\n\t\t\t\t// Clean up the HTML string\n\t\t\t\tconst rawContent = htmlStrings.join('')\n\t\t\t\t\n\t\t\t\t// Find the minimum indentation (excluding empty lines)\n\t\t\t\tconst lines = rawContent.split('\\n')\n\t\t\t\tconst minIndent = lines\n\t\t\t\t\t.filter(line => line.trim().length > 0)\n\t\t\t\t\t.reduce((min, line) => {\n\t\t\t\t\t\tconst indent = line.match(/^(\\s*)/)?.[1].length || 0\n\t\t\t\t\t\treturn Math.min(min, indent)\n\t\t\t\t\t}, Infinity)\n\t\t\t\t\n\t\t\t\t// Remove the minimum indentation from all lines\n\t\t\t\tthis.slotContent = lines\n\t\t\t\t\t.map(line => line.slice(minIndent))\n\t\t\t\t\t.join('\\n')\n\t\t\t\t\t.trim()\n\t\t\t}\n\t\t})\n\t}\n\n\trender() {\n\t\tconst containerClass = this.layout === 'horizontal' \n\t\t\t? 'grid grid-cols-1 lg:grid-cols-2 gap-0' \n\t\t\t: 'flex flex-col'\n\n\t\tconst showPreview = this.preview && this.language.toLowerCase() === 'html'\n\t\t\n\t\treturn html`\n\t\t\t<schmancy-surface class=\"rounded-lg overflow-hidden\">\n\t\t\t\t<div class=\"${showPreview ? containerClass : ''}\">\n\t\t\t\t\t<!-- Code section with proper overflow handling -->\n\t\t\t\t\t<div class=\"min-w-0 overflow-hidden\">\n\t\t\t\t\t\t<schmancy-code\n\t\t\t\t\t\t\tlanguage=\"${this.language}\"\n\t\t\t\t\t\t\t.code=\"${this.slotContent}\"\n\t\t\t\t\t\t\t?copyButton=\"${true}\"\n\t\t\t\t\t\t\tclass=\"block w-full\"\n\t\t\t\t\t\t></schmancy-code>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<!-- Preview section (only visible for HTML and when preview is enabled) -->\n\t\t\t\t\t${showPreview ? html`\n\t\t\t\t\t\t<div class=\"min-w-0 overflow-auto\">\n\t\t\t\t\t\t\t<schmancy-surface type=\"solid\" class=\"p-2 h-full\">\n\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t</schmancy-surface>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t` : html`\n\t\t\t\t\t\t<!-- Hidden slot to capture content -->\n\t\t\t\t\t\t<div class=\"hidden\">\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}\n\t\t\t\t</div>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-code-preview': SchmancyCodePreview\n\t}\n}"],"mappings":"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"}
|
|
@@ -5,15 +5,8 @@ import { timer as n } from "rxjs";
|
|
|
5
5
|
import { take as r } from "rxjs/operators";
|
|
6
6
|
import { customElement as i, property as a, state as o } from "lit/decorators.js";
|
|
7
7
|
import { css as s, html as c } from "lit";
|
|
8
|
-
import l from "
|
|
9
|
-
|
|
10
|
-
import d from "highlight.js/lib/languages/javascript";
|
|
11
|
-
import f from "highlight.js/lib/languages/markdown";
|
|
12
|
-
import p from "highlight.js/lib/languages/typescript";
|
|
13
|
-
import m from "highlight.js/lib/languages/xml";
|
|
14
|
-
import { unsafeHTML as h } from "lit/directives/unsafe-html.js";
|
|
15
|
-
l.registerLanguage("javascript", d), l.registerLanguage("typescript", p), l.registerLanguage("html", m), l.registerLanguage("xml", m), l.registerLanguage("markdown", f), l.registerLanguage("bash", u);
|
|
16
|
-
var g = class extends e(s`
|
|
8
|
+
import { unsafeHTML as l } from "lit/directives/unsafe-html.js";
|
|
9
|
+
var u = null, d = class extends e(s`
|
|
17
10
|
:host {
|
|
18
11
|
display: block;
|
|
19
12
|
width: 100%;
|
|
@@ -135,21 +128,36 @@ var g = class extends e(s`
|
|
|
135
128
|
}
|
|
136
129
|
`) {
|
|
137
130
|
constructor(...e) {
|
|
138
|
-
super(...e), this.language = "javascript", this.code = "", this.lineNumbers = !1, this.copyButton = !0, this.copied = !1;
|
|
131
|
+
super(...e), this.language = "javascript", this.code = "", this.lineNumbers = !1, this.copyButton = !0, this.copied = !1, this._highlightedCode = "";
|
|
139
132
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
133
|
+
updated(e) {
|
|
134
|
+
super.updated?.(e), (e.has("code") || e.has("language") || e.has("lineNumbers") || e.has("highlightLines")) && this._rehighlight();
|
|
135
|
+
}
|
|
136
|
+
async _rehighlight() {
|
|
137
|
+
if (!this.code) return void (this._highlightedCode = "");
|
|
138
|
+
let e = await (u ||= Promise.all([
|
|
139
|
+
import("highlight.js/lib/core"),
|
|
140
|
+
import("highlight.js/lib/languages/bash"),
|
|
141
|
+
import("highlight.js/lib/languages/javascript"),
|
|
142
|
+
import("highlight.js/lib/languages/markdown"),
|
|
143
|
+
import("highlight.js/lib/languages/typescript"),
|
|
144
|
+
import("highlight.js/lib/languages/xml")
|
|
145
|
+
]).then(([e, t, n, r, i, a]) => {
|
|
146
|
+
let o = e.default;
|
|
147
|
+
return o.registerLanguage("javascript", n.default), o.registerLanguage("typescript", i.default), o.registerLanguage("html", a.default), o.registerLanguage("xml", a.default), o.registerLanguage("markdown", r.default), o.registerLanguage("bash", t.default), o;
|
|
148
|
+
}));
|
|
149
|
+
if (!this.isConnected) return;
|
|
150
|
+
let t = "";
|
|
143
151
|
try {
|
|
144
|
-
|
|
152
|
+
t = e.highlight(this.code.trim(), { language: this.language }).value;
|
|
145
153
|
} catch {
|
|
146
154
|
try {
|
|
147
|
-
|
|
155
|
+
t = e.highlightAuto(this.code.trim()).value;
|
|
148
156
|
} catch {
|
|
149
|
-
|
|
157
|
+
t = this.escapeHtml(this.code.trim());
|
|
150
158
|
}
|
|
151
159
|
}
|
|
152
|
-
|
|
160
|
+
this.lineNumbers || this.highlightLines ? this._highlightedCode = this.addLineFeatures(t) : this._highlightedCode = t;
|
|
153
161
|
}
|
|
154
162
|
escapeHtml(e) {
|
|
155
163
|
let t = document.createElement("div");
|
|
@@ -226,14 +234,14 @@ var g = class extends e(s`
|
|
|
226
234
|
</section>
|
|
227
235
|
<!-- Code -->
|
|
228
236
|
<div class="overflow-auto" style="${this.maxHeight ? `max-height: ${this.maxHeight}` : ""}">
|
|
229
|
-
<pre class="m-0"><code class="${e}">${
|
|
237
|
+
<pre class="m-0"><code class="${e}">${l(this._highlightedCode)}</code></pre>
|
|
230
238
|
</div>
|
|
231
239
|
</schmancy-details>
|
|
232
240
|
`;
|
|
233
241
|
}
|
|
234
242
|
};
|
|
235
|
-
t([a({ type: String })],
|
|
236
|
-
var
|
|
243
|
+
t([a({ type: String })], d.prototype, "language", void 0), t([a({ type: String })], d.prototype, "code", void 0), t([a({ type: String })], d.prototype, "filename", void 0), t([a({ type: Boolean })], d.prototype, "lineNumbers", void 0), t([a({ type: Boolean })], d.prototype, "copyButton", void 0), t([a({ type: String })], d.prototype, "highlightLines", void 0), t([a({ type: String })], d.prototype, "maxHeight", void 0), t([o()], d.prototype, "copied", void 0), t([o()], d.prototype, "_highlightedCode", void 0), d = t([i("schmancy-code")], d);
|
|
244
|
+
var f = class extends e(s`:host{
|
|
237
245
|
display:block;
|
|
238
246
|
overflow:hidden;
|
|
239
247
|
position:relative;
|
|
@@ -287,5 +295,5 @@ var _ = class extends e(s`:host{
|
|
|
287
295
|
`;
|
|
288
296
|
}
|
|
289
297
|
};
|
|
290
|
-
t([a({ type: String })],
|
|
291
|
-
export {
|
|
298
|
+
t([a({ type: String })], f.prototype, "language", void 0), t([a({ type: String })], f.prototype, "layout", void 0), t([a({ type: Boolean })], f.prototype, "preview", void 0), t([o()], f.prototype, "slotContent", void 0), f = t([i("schmancy-code-preview")], f);
|
|
299
|
+
export { d as n, f as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-highlight-CI_gqXYX.js","names":[],"sources":["../src/code-highlight/code-highlight.ts","../src/code-highlight/code-preview.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js'\n\n// highlight.js + all 6 language grammars are loaded lazily on first render.\n// Static imports were previously responsible for ~15 KB gzipped (vendor-\n// highlight chunk) being eagerly fetched on every agent-bundle first paint,\n// even for pages that never rendered <schmancy-code>. See ADR 0014 in the\n// parent monorepo.\ntype Hljs = typeof import('highlight.js/lib/core').default\n\nlet hljsPromise: Promise<Hljs> | null = null\nfunction loadHljs(): Promise<Hljs> {\n\tif (hljsPromise) return hljsPromise\n\thljsPromise = Promise.all([\n\t\timport('highlight.js/lib/core'),\n\t\timport('highlight.js/lib/languages/bash'),\n\t\timport('highlight.js/lib/languages/javascript'),\n\t\timport('highlight.js/lib/languages/markdown'),\n\t\timport('highlight.js/lib/languages/typescript'),\n\t\timport('highlight.js/lib/languages/xml'),\n\t]).then(([core, bash, javascript, markdown, typescript, xml]) => {\n\t\tconst hljs = core.default\n\t\thljs.registerLanguage('javascript', javascript.default)\n\t\thljs.registerLanguage('typescript', typescript.default)\n\t\thljs.registerLanguage('html', xml.default)\n\t\thljs.registerLanguage('xml', xml.default)\n\t\thljs.registerLanguage('markdown', markdown.default)\n\t\thljs.registerLanguage('bash', bash.default)\n\t\treturn hljs\n\t})\n\treturn hljsPromise\n}\n\n/**\n * @element schmancy-code\n * Code highlighting component using highlight.js with schmancy theming support\n */\n@customElement('schmancy-code')\nexport class SchmancyCode extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\toverflow: hidden;\n\t}\n\n\t/* Code block styling using schmancy color system */\n\t.hljs {\n\t\tdisplay: block;\n\t\toverflow-x: auto;\n\t\tpadding: 0.5em;\n\t\tcolor: var(--md-sys-color-on-surface-variant);\n\t\tbackground: var(--md-sys-color-surface-container-lowest);\n\t\tfont-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n\t}\n\n\t/* Comments and documentation */\n\t.hljs-comment,\n\t.hljs-quote {\n\t\tcolor: var(--md-sys-color-outline);\n\t\tfont-style: italic;\n\t}\n\n\t/* Keywords, doctags, formulas */\n\t.hljs-doctag,\n\t.hljs-keyword,\n\t.hljs-formula {\n\t\tcolor: var(--md-sys-color-primary);\n\t}\n\n\t/* Tags, sections, names, deletions */\n\t.hljs-section,\n\t.hljs-name,\n\t.hljs-selector-tag,\n\t.hljs-deletion,\n\t.hljs-subst {\n\t\tcolor: var(--md-sys-color-error);\n\t}\n\n\t/* Literals */\n\t.hljs-literal {\n\t\tcolor: var(--md-sys-color-tertiary);\n\t}\n\n\t/* Strings, regex, additions */\n\t.hljs-string,\n\t.hljs-regexp,\n\t.hljs-addition,\n\t.hljs-attribute,\n\t.hljs-meta-string {\n\t\tcolor: var(--md-sys-color-secondary);\n\t}\n\n\t/* Built-ins and class titles */\n\t.hljs-built_in,\n\t.hljs-class .hljs-title {\n\t\tcolor: var(--md-sys-color-tertiary);\n\t}\n\n\t/* Variables, attributes, types */\n\t.hljs-attr,\n\t.hljs-variable,\n\t.hljs-template-variable,\n\t.hljs-type,\n\t.hljs-selector-class,\n\t.hljs-selector-attr,\n\t.hljs-selector-pseudo,\n\t.hljs-number {\n\t\tcolor: var(--md-sys-color-on-surface);\n\t}\n\n\t/* Symbols, bullets, links, meta */\n\t.hljs-symbol,\n\t.hljs-bullet,\n\t.hljs-link,\n\t.hljs-meta,\n\t.hljs-selector-id,\n\t.hljs-title {\n\t\tcolor: var(--md-sys-color-secondary);\n\t}\n\n\t.hljs-emphasis {\n\t\tfont-style: italic;\n\t}\n\n\t.hljs-strong {\n\t\tfont-weight: bold;\n\t}\n\n\t.hljs-link {\n\t\ttext-decoration: underline;\n\t}\n\n\t/* Line features styling */\n\t.code-with-lines {\n\t\tbackground: transparent;\n\t\tpadding: 0;\n\t}\n\n\t.code-line {\n\t\tdisplay: block;\n\t\tpadding-left: 0;\n\t\ttransition: background-color 0.2s ease;\n\t}\n\n\t.code-line.highlighted {\n\t\tbackground-color: var(--md-sys-color-primary-container);\n\t\topacity: 0.2;\n\t}\n\n\t.line-number {\n\t\tdisplay: inline-block;\n\t\twidth: 3rem;\n\t\tpadding-right: 1rem;\n\t\ttext-align: right;\n\t\tcolor: var(--md-sys-color-outline);\n\t\tuser-select: none;\n\t\tfont-size: inherit;\n\t}\n`) {\n\t/**\n\t * Programming language for syntax highlighting\n\t */\n\t@property({ type: String })\n\tlanguage: string = 'javascript'\n\n\t/**\n\t * Code content to highlight\n\t */\n\t@property({ type: String })\n\tcode: string = ''\n\n\t/**\n\t * Optional filename or title to display in header\n\t */\n\t@property({ type: String })\n\tfilename?: string\n\n\t/**\n\t * Show line numbers\n\t */\n\t@property({ type: Boolean })\n\tlineNumbers: boolean = false\n\n\t/**\n\t * Show copy button\n\t */\n\t@property({ type: Boolean })\n\tcopyButton: boolean = true\n\n\t/**\n\t * Highlighted line numbers (comma-separated or ranges like \"1-3,5,7-9\")\n\t */\n\t@property({ type: String })\n\thighlightLines?: string\n\n\t/**\n\t * Maximum height before scrolling\n\t */\n\t@property({ type: String })\n\tmaxHeight?: string\n\n\t@state()\n\tprivate copied: boolean = false\n\n\t/**\n\t * Fully-rendered highlighted HTML — populated asynchronously after\n\t * `loadHljs()` resolves. Empty on first render (one microtask) for a\n\t * cold component; non-empty from then on.\n\t */\n\t@state()\n\tprivate _highlightedCode: string = ''\n\n\tprotected override updated(changed: Map<string, unknown>): void {\n\t\tsuper.updated?.(changed)\n\t\tif (changed.has('code') || changed.has('language') || changed.has('lineNumbers') || changed.has('highlightLines')) {\n\t\t\tvoid this._rehighlight()\n\t\t}\n\t}\n\n\tprivate async _rehighlight(): Promise<void> {\n\t\tif (!this.code) {\n\t\t\tthis._highlightedCode = ''\n\t\t\treturn\n\t\t}\n\t\tconst hljs = await loadHljs()\n\t\t// Guard against unmount + racing property changes.\n\t\tif (!this.isConnected) return\n\n\t\tlet highlightedHtml = ''\n\t\ttry {\n\t\t\tconst result = hljs.highlight(this.code.trim(), { language: this.language })\n\t\t\thighlightedHtml = result.value\n\t\t} catch {\n\t\t\ttry {\n\t\t\t\tconst result = hljs.highlightAuto(this.code.trim())\n\t\t\t\thighlightedHtml = result.value\n\t\t\t} catch {\n\t\t\t\thighlightedHtml = this.escapeHtml(this.code.trim())\n\t\t\t}\n\t\t}\n\n\t\tif (this.lineNumbers || this.highlightLines) {\n\t\t\tthis._highlightedCode = this.addLineFeatures(highlightedHtml)\n\t\t} else {\n\t\t\tthis._highlightedCode = highlightedHtml\n\t\t}\n\t}\n\n\tprivate escapeHtml(text: string): string {\n\t\tconst div = document.createElement('div')\n\t\tdiv.textContent = text\n\t\treturn div.innerHTML\n\t}\n\n\tprivate getHighlightedLines(): Set<number> {\n\t\tconst lines = new Set<number>()\n\t\tif (!this.highlightLines) return lines\n\n\t\tconst parts = this.highlightLines.split(',')\n\t\tfor (const part of parts) {\n\t\t\tconst trimmed = part.trim()\n\t\t\tif (trimmed.includes('-')) {\n\t\t\t\tconst [start, end] = trimmed.split('-').map(n => parseInt(n.trim()))\n\t\t\t\tif (!isNaN(start) && !isNaN(end)) {\n\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\tlines.add(i)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst lineNum = parseInt(trimmed)\n\t\t\t\tif (!isNaN(lineNum)) {\n\t\t\t\t\tlines.add(lineNum)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn lines\n\t}\n\n\tprivate addLineFeatures(highlightedHtml: string): string {\n\t\tconst lines = highlightedHtml.split('\\n')\n\t\tconst highlightedLines = this.getHighlightedLines()\n\n\t\treturn lines\n\t\t\t.map((line, index) => {\n\t\t\t\tconst lineNumber = index + 1\n\t\t\t\tconst isHighlighted = highlightedLines.has(lineNumber)\n\t\t\t\tconst lineClass = isHighlighted ? 'code-line highlighted' : 'code-line'\n\n\t\t\t\tlet content = ''\n\t\t\t\tif (this.lineNumbers) {\n\t\t\t\t\tcontent += `<span class=\"line-number\">${lineNumber}</span>`\n\t\t\t\t}\n\t\t\t\tcontent += line\n\n\t\t\t\treturn `<div class=\"${lineClass}\">${content}</div>`\n\t\t\t})\n\t\t\t.join('')\n\t}\n\n\tprivate async copyCode() {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(this.code)\n\t\t\tthis.copied = true\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.copied = false\n\t\t\t}, 2000)\n\t\t} catch (err) {\n\t\t\tconsole.error('Failed to copy code:', err)\n\t\t}\n\t}\n\n\tprivate getLanguageLabel(): string {\n\t\tconst languageMap: Record<string, string> = {\n\t\t\tjavascript: 'JavaScript',\n\t\t\ttypescript: 'TypeScript',\n\t\t\thtml: 'HTML',\n\t\t\tmarkdown: 'Markdown',\n\t\t\tbash: 'Bash',\n\t\t}\n\n\t\tif (this.filename) {\n\t\t\treturn this.filename\n\t\t}\n\n\t\treturn languageMap[this.language.toLowerCase()] || this.language.toUpperCase()\n\t}\n\n\trender() {\n\t\tconst codeClass = this.lineNumbers || this.highlightLines ? 'code-with-lines' : 'hljs'\n\n\t\treturn html`\n\t\t\t<schmancy-details class=\"bg-surface-default\">\n\t\t\t\t<section slot=\"summary\">\n\t\t\t\t\t<!-- Header -->\n\t\t\t\t\t<div class=\"flex items-center justify-between\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t<div class=\"flex gap-1.5\">\n\t\t\t\t\t\t\t\t<div class=\"w-3 h-3 rounded-full opacity-60\" style=\"background-color: var(--md-sys-color-error);\"></div>\n\t\t\t\t\t\t\t\t<div class=\"w-3 h-3 rounded-full opacity-60\" style=\"background-color: var(--md-sys-color-tertiary);\"></div>\n\t\t\t\t\t\t\t\t<div class=\"w-3 h-3 rounded-full opacity-60\" style=\"background-color: var(--md-sys-color-secondary);\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class=\"text-xs font-medium opacity-70 ml-2\" style=\"color: var(--md-sys-color-on-surface-variant);\">\n\t\t\t\t\t\t\t\t${this.getLanguageLabel()}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t${this.copyButton\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\t.variant=\"${this.copied ? 'filled tonal' : 'text'}\"\n\t\t\t\t\t\t\t\t\t\t@click=${this.copyCode}\n\t\t\t\t\t\t\t\t\t\tclass=\"transition-all\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<schmancy-icon > ${this.copied ? 'check' : 'content_copy'} </schmancy-icon>\n\t\t\t\t\t\t\t\t\t\t<span class=\"ml-1\">${this.copied ? 'Copied!' : 'Copy'}</span>\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\t\t\t\t<!-- Code -->\n\t\t\t\t<div class=\"overflow-auto\" style=\"${this.maxHeight ? `max-height: ${this.maxHeight}` : ''}\">\n\t\t\t\t\t<pre class=\"m-0\"><code class=\"${codeClass}\">${unsafeHTML(this._highlightedCode)}</code></pre>\n\t\t\t\t</div>\n\t\t\t</schmancy-details>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-code': SchmancyCode\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { timer } from 'rxjs'\nimport { take } from 'rxjs/operators'\n\n/**\n * @element schmancy-code-preview\n * A component that shows code and its rendered preview side by side\n * Takes the content as a slot and displays both the source and rendered result\n */\n@customElement('schmancy-code-preview')\nexport class SchmancyCodePreview extends TailwindElement(\n\tcss`:host{\n\t\tdisplay:block;\n\t\toverflow:hidden;\n\t\tposition:relative;\n\t\tinset:0;\n\t}`\n) {\n\t/**\n\t * Programming language for syntax highlighting\n\t */\n\t@property({ type: String })\n\tlanguage: string = 'html'\n\n\t/**\n\t * Show code on top or side-by-side\n\t */\n\t@property({ type: String })\n\tlayout: 'vertical' | 'horizontal' = 'vertical'\n\n\t/**\n\t * Whether to render/execute the code in preview section\n\t * When false, only shows the code without rendering\n\t */\n\t@property({ type: Boolean })\n\tpreview: boolean = true\n\n\t@state()\n\tprivate slotContent: string = ''\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\t// Capture the slot content as HTML string\n\t\ttimer(0).pipe(take(1)).subscribe(() => {\n\t\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\t\tif (slot) {\n\t\t\t\tconst nodes = slot.assignedNodes({ flatten: true })\n\t\t\t\tconst htmlStrings = nodes.map(node => {\n\t\t\t\t\tif (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\t\t\treturn (node as HTMLElement).outerHTML\n\t\t\t\t\t} else if (node.nodeType === Node.TEXT_NODE) {\n\t\t\t\t\t\treturn node.textContent || ''\n\t\t\t\t\t}\n\t\t\t\t\treturn ''\n\t\t\t\t})\n\t\t\t\t\n\t\t\t\t// Clean up the HTML string\n\t\t\t\tconst rawContent = htmlStrings.join('')\n\t\t\t\t\n\t\t\t\t// Find the minimum indentation (excluding empty lines)\n\t\t\t\tconst lines = rawContent.split('\\n')\n\t\t\t\tconst minIndent = lines\n\t\t\t\t\t.filter(line => line.trim().length > 0)\n\t\t\t\t\t.reduce((min, line) => {\n\t\t\t\t\t\tconst indent = line.match(/^(\\s*)/)?.[1].length || 0\n\t\t\t\t\t\treturn Math.min(min, indent)\n\t\t\t\t\t}, Infinity)\n\t\t\t\t\n\t\t\t\t// Remove the minimum indentation from all lines\n\t\t\t\tthis.slotContent = lines\n\t\t\t\t\t.map(line => line.slice(minIndent))\n\t\t\t\t\t.join('\\n')\n\t\t\t\t\t.trim()\n\t\t\t}\n\t\t})\n\t}\n\n\trender() {\n\t\tconst containerClass = this.layout === 'horizontal' \n\t\t\t? 'grid grid-cols-1 lg:grid-cols-2 gap-0' \n\t\t\t: 'flex flex-col'\n\n\t\tconst showPreview = this.preview && this.language.toLowerCase() === 'html'\n\t\t\n\t\treturn html`\n\t\t\t<schmancy-surface class=\"rounded-lg overflow-hidden\">\n\t\t\t\t<div class=\"${showPreview ? containerClass : ''}\">\n\t\t\t\t\t<!-- Code section with proper overflow handling -->\n\t\t\t\t\t<div class=\"min-w-0 overflow-hidden\">\n\t\t\t\t\t\t<schmancy-code\n\t\t\t\t\t\t\tlanguage=\"${this.language}\"\n\t\t\t\t\t\t\t.code=\"${this.slotContent}\"\n\t\t\t\t\t\t\t?copyButton=\"${true}\"\n\t\t\t\t\t\t\tclass=\"block w-full\"\n\t\t\t\t\t\t></schmancy-code>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<!-- Preview section (only visible for HTML and when preview is enabled) -->\n\t\t\t\t\t${showPreview ? html`\n\t\t\t\t\t\t<div class=\"min-w-0 overflow-auto\">\n\t\t\t\t\t\t\t<schmancy-surface type=\"solid\" class=\"p-2 h-full\">\n\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t</schmancy-surface>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t` : html`\n\t\t\t\t\t\t<!-- Hidden slot to capture content -->\n\t\t\t\t\t\t<div class=\"hidden\">\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}\n\t\t\t\t</div>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-code-preview': SchmancyCodePreview\n\t}\n}"],"mappings":";;;;;;;;AAYA,IAAI,IAAoC,MA4BjC,IAAA,cAA2B,EAAgB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA6HjC,cAAA,KAAA,OAMJ,IAAA,KAAA,cAAA,CAYQ,GAAA,KAAA,aAAA,CAMD,GAAA,KAAA,SAAA,CAeI,GAAA,KAAA,mBAQS;;CAEnC,QAA2B,GAAA;AAC1B,QAAM,UAAU,EAAA,GACZ,EAAQ,IAAI,OAAA,IAAW,EAAQ,IAAI,WAAA,IAAe,EAAQ,IAAI,cAAA,IAAkB,EAAQ,IAAI,iBAAA,KAC1F,KAAK,cAAA;;CAIZ,MAAA,eAAc;AACb,MAAA,CAAK,KAAK,KAET,QAAA,MADA,KAAK,mBAAmB;EAGzB,IAAM,IAAA,OApNH,AACJ,MAAc,QAAQ,IAAI;GACzB,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GAAA,CAAA,CACL,MAAA,CAAO,GAAM,GAAM,GAAY,GAAU,GAAY,OAAA;GACvD,IAAM,IAAO,EAAK;AAOlB,UANA,EAAK,iBAAiB,cAAc,EAAW,QAAA,EAC/C,EAAK,iBAAiB,cAAc,EAAW,QAAA,EAC/C,EAAK,iBAAiB,QAAQ,EAAI,QAAA,EAClC,EAAK,iBAAiB,OAAO,EAAI,QAAA,EACjC,EAAK,iBAAiB,YAAY,EAAS,QAAA,EAC3C,EAAK,iBAAiB,QAAQ,EAAK,QAAA,EAC5B;IAAA;AAsMP,MAAA,CAAK,KAAK,YAAa;EAEvB,IAAI,IAAkB;AACtB,MAAA;AAEC,OADe,EAAK,UAAU,KAAK,KAAK,MAAA,EAAQ,EAAE,UAAU,KAAK,UAAA,CAAA,CACxC;UAAA;AAEzB,OAAA;AAEC,QADe,EAAK,cAAc,KAAK,KAAK,MAAA,CAAA,CACnB;WAAA;AAEzB,QAAkB,KAAK,WAAW,KAAK,KAAK,MAAA,CAAA;;;AAI1C,OAAK,eAAe,KAAK,iBAC5B,KAAK,mBAAmB,KAAK,gBAAgB,EAAA,GAE7C,KAAK,mBAAmB;;CAI1B,WAAmB,GAAA;EAClB,IAAM,IAAM,SAAS,cAAc,MAAA;AAEnC,SADA,EAAI,cAAc,GACX,EAAI;;CAGZ,sBAAA;EACC,IAAM,oBAAQ,IAAI,KAAA;AAClB,MAAA,CAAK,KAAK,eAAgB,QAAO;EAEjC,IAAM,IAAQ,KAAK,eAAe,MAAM,IAAA;AACxC,OAAK,IAAM,KAAQ,GAAO;GACzB,IAAM,IAAU,EAAK,MAAA;AACrB,OAAI,EAAQ,SAAS,IAAA,EAAM;IAC1B,IAAA,CAAO,GAAO,KAAO,EAAQ,MAAM,IAAA,CAAK,KAAI,MAAK,SAAS,EAAE,MAAA,CAAA,CAAA;AAC5D,QAAA,CAAK,MAAM,EAAA,IAAA,CAAW,MAAM,EAAA,CAC3B,MAAK,IAAI,IAAI,GAAO,KAAK,GAAK,IAC7B,GAAM,IAAI,EAAA;UAGN;IACN,IAAM,IAAU,SAAS,EAAA;AACpB,UAAM,EAAA,IACV,EAAM,IAAI,EAAA;;;AAIb,SAAO;;CAGR,gBAAwB,GAAA;EACvB,IAAM,IAAQ,EAAgB,MAAM,KAAA,EAC9B,IAAmB,KAAK,qBAAA;AAE9B,SAAO,EACL,KAAK,GAAM,MAAA;GACX,IAAM,IAAa,IAAQ,GAErB,IADgB,EAAiB,IAAI,EAAA,GACT,0BAA0B,aAExD,IAAU;AAMd,UALI,KAAK,gBACR,KAAW,6BAA6B,EAAA,WAEzC,KAAW,GAEJ,eAAe,EAAA,IAAc,EAAA;IAAA,CAEpC,KAAK,GAAA;;CAGR,MAAA,WAAc;AACb,MAAA;AAAA,SACO,UAAU,UAAU,UAAU,KAAK,KAAA,EACzC,KAAK,SAAA,CAAS,GACd,iBAAA;AACC,SAAK,SAAA,CAAS;MACZ,IAAA;UACK;;CAKV,mBAAA;AASC,SAAI,KAAK,WACD,KAAK,WAT+B;GAC3C,YAAY;GACZ,YAAY;GACZ,MAAM;GACN,UAAU;GACV,MAAM;GAAA,CAOY,KAAK,SAAS,aAAA,KAAkB,KAAK,SAAS,aAAA;;CAGlE,SAAA;EACC,IAAM,IAAY,KAAK,eAAe,KAAK,iBAAiB,oBAAoB;AAEhF,SAAO,CAAI;;;;;;;;;;;;;UAaH,KAAK,kBAAA,CAAA;;;QAGP,KAAK,aACJ,CAAI;;sBAES,KAAK,SAAS,iBAAiB,OAAA;mBAClC,KAAK,SAAA;;;6BAGK,KAAK,SAAS,UAAU,eAAA;+BACtB,KAAK,SAAS,YAAY,OAAA;;YAGhD,GAAA;;;;wCAI+B,KAAK,YAAY,eAAe,KAAK,cAAc,GAAA;qCACtD,EAAA,IAAc,EAAW,KAAK,iBAAA,CAAA;;;;;;GAxMjE,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,eAAA,KAAA,EAAA,EAAA,EAAA,CAM3B,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,cAAA,KAAA,EAAA,EAAA,EAAA,CAM3B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,kBAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,aAAA,KAAA,EAAA,EAAA,EAAA,CAG1B,GAAA,CAAA,EAAO,EAAA,WAAA,UAAA,KAAA,EAAA,EAAA,EAAA,CAQP,GAAA,CAAA,EAAO,EAAA,WAAA,oBAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CA5KR,EAAc,gBAAA,CAAA,EAAgB,EAAA;AC3BxB,IAAA,IAAA,cAAkC,EACxC,CAAG;;;;;;;+BAWgB,QAAA,KAAA,SAMiB,YAAA,KAAA,UAAA,CAOjB,GAAA,KAAA,cAGW;;CAE9B,oBAAA;AACC,QAAM,mBAAA,EAEN,EAAM,EAAA,CAAG,KAAK,EAAK,EAAA,CAAA,CAAI,gBAAA;GACtB,IAAM,IAAO,KAAK,YAAY,cAAc,OAAA;AAC5C,OAAI,GAAM;IAeT,IAAM,IAdQ,EAAK,cAAc,EAAE,SAAA,CAAS,GAAA,CAAA,CAClB,KAAI,MACzB,EAAK,aAAa,KAAK,eAClB,EAAqB,YACnB,EAAK,aAAa,KAAK,aAC1B,EAAK,eAEN,GAAA,CAIuB,KAAK,GAAA,CAGX,MAAM,KAAA,EACzB,IAAY,EAChB,QAAO,MAAQ,EAAK,MAAA,CAAO,SAAS,EAAA,CACpC,QAAQ,GAAK,MAAA;KACb,IAAM,IAAS,EAAK,MAAM,SAAA,GAAY,GAAG,UAAU;AACnD,YAAO,KAAK,IAAI,GAAK,EAAA;OACnB,SAAA;AAGJ,SAAK,cAAc,EACjB,KAAI,MAAQ,EAAK,MAAM,EAAA,CAAA,CACvB,KAAK,KAAA,CACL,MAAA;;IAAA;;CAKL,SAAA;EACC,IAAM,IAAiB,KAAK,WAAW,eACpC,0CACA,iBAEG,IAAc,KAAK,WAAW,KAAK,SAAS,aAAA,KAAkB;AAEpE,SAAO,CAAI;;kBAEK,IAAc,IAAiB,GAAA;;;;mBAI9B,KAAK,SAAA;gBACR,KAAK,YAAA;uBACC,EAAA;;;;;;OAMf,IAAc,CAAI;;;;;;SAMhB,CAAI;;;;;;;;;;;GAnFX,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,UAAA,KAAA,EAAA,EAAA,EAAA,CAO1B,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAG3B,GAAA,CAAA,EAAO,EAAA,WAAA,eAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CA5BR,EAAc,wBAAA,CAAA,EAAwB,EAAA;AAAA,SAAA,KAAA,GAAA,KAAA"}
|
package/dist/code-highlight.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./code-highlight-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./code-highlight-B_l8vDzn.cjs`);Object.defineProperty(exports,`SchmancyCode`,{enumerable:!0,get:function(){return e.n}}),Object.defineProperty(exports,`SchmancyCodeHighlight`,{enumerable:!0,get:function(){return e.n}}),Object.defineProperty(exports,`SchmancyCodePreview`,{enumerable:!0,get:function(){return e.t}});
|
package/dist/code-highlight.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./code-highlight-
|
|
1
|
+
import { n as e, t } from "./code-highlight-CI_gqXYX.js";
|
|
2
2
|
export { e as SchmancyCode, e as SchmancyCodeHighlight, t as SchmancyCodePreview };
|
package/dist/content-drawer.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-sG7Ihf0e.cjs`);Object.defineProperty(exports,`SchmancyContentDrawer`,{enumerable:!0,get:function(){return e.v}}),exports.SchmancyContentDrawerID=e.y,Object.defineProperty(exports,`SchmancyContentDrawerMain`,{enumerable:!0,get:function(){return e._}}),exports.SchmancyContentDrawerMaxHeight=e.b,exports.SchmancyContentDrawerMinWidth=e.x,Object.defineProperty(exports,`SchmancyContentDrawerSheet`,{enumerable:!0,get:function(){return e.g}}),exports.SchmancyContentDrawerSheetMode=e.S,exports.SchmancyContentDrawerSheetState=e.C,exports.schmancyContentDrawer=e.w;
|
package/dist/content-drawer.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as e, S as t, _ as n, b as r, g as i, v as a, w as o, x as s, y as c } from "./src-
|
|
1
|
+
import { C as e, S as t, _ as n, b as r, g as i, v as a, w as o, x as s, y as c } from "./src-Dw-PjtMH.js";
|
|
2
2
|
export { a as SchmancyContentDrawer, c as SchmancyContentDrawerID, n as SchmancyContentDrawerMain, r as SchmancyContentDrawerMaxHeight, s as SchmancyContentDrawerMinWidth, i as SchmancyContentDrawerSheet, t as SchmancyContentDrawerSheetMode, e as SchmancyContentDrawerSheetState, o as schmancyContentDrawer };
|
|
@@ -203,7 +203,7 @@ The manifest already has everything needed; the package is just the JSON-RPC wra
|
|
|
203
203
|
|
|
204
204
|
**Problem.** `handover/agent-runtime-v1.md` had `<PENDING>` placeholders that we manually replaced with `0.9.13` after the first publish. Future handover docs will have the same issue.
|
|
205
205
|
|
|
206
|
-
**Fix.** A build step that substitutes `0.9.
|
|
206
|
+
**Fix.** A build step that substitutes `0.9.21` in `handover/**/*.md` against `package.json`'s `version` field on every build. `dist/handover/**/*.md` gets the rendered version; the source stays templated.
|
|
207
207
|
|
|
208
208
|
**Effort:** ~30 min (one sed step or a tiny script).
|
|
209
209
|
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
## The URLs you asked for
|
|
8
8
|
|
|
9
9
|
```
|
|
10
|
-
https://esm.sh/@mhmo91/schmancy/agent@0.9.
|
|
11
|
-
https://esm.sh/@mhmo91/schmancy/agent/manifest@0.9.
|
|
10
|
+
https://esm.sh/@mhmo91/schmancy/agent@0.9.21
|
|
11
|
+
https://esm.sh/@mhmo91/schmancy/agent/manifest@0.9.21
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
`0.9.13` is the first release containing `/agent`; every subsequent publish serves the same subpath. `npm view @mhmo91/schmancy version` always returns the current pin if you want to float forward.
|
|
@@ -20,7 +20,7 @@ One script tag. No bundler, no bare specifiers, no npm install.
|
|
|
20
20
|
```html
|
|
21
21
|
<!doctype html>
|
|
22
22
|
<script type="module">
|
|
23
|
-
import { $dialog, theme } from 'https://esm.sh/@mhmo91/schmancy/agent@0.9.
|
|
23
|
+
import { $dialog, theme } from 'https://esm.sh/@mhmo91/schmancy/agent@0.9.21';
|
|
24
24
|
</script>
|
|
25
25
|
<schmancy-theme root scheme="dark">
|
|
26
26
|
<schmancy-surface type="solid" fill="all">
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const ee=require(`./tailwind.mixin-Bh58QnlW.cjs`),e=require(`./area-DBjAhgjP.cjs`),te=require(`./lazy-BDNnH_r7.cjs`),t=require(`./store-CjFHCSDb.cjs`),n=require(`./sound.service-BEN6Xjy_.cjs`),r=require(`./audio-Dvr-RBzE.cjs`),i=require(`./search-CwMav5QB.cjs`),a=require(`./input-chip-p24lkYtY.cjs`),o=require(`./animation-CQRdLgzX.cjs`),ne=require(`./reduced-motion-9RjNnhIg.cjs`),s=require(`./cursor-glow-Duw9jHmh.cjs`),c=require(`./theme.events-DakXxZeP.cjs`),l=require(`./theme.service-DxJPUGlu.cjs`),u=require(`./layout-CTfRXQoz.cjs`),re=require(`./magnetic-CVXEkYTA.cjs`),d=require(`./directives.cjs`),f=require(`./src-BPKGdQdp.cjs`),p=require(`./boat-BjYJI1HS.cjs`),m=require(`./button.cjs`),h=require(`./charts.cjs`),g=require(`./checkbox-DtcFMgZL.cjs`),_=require(`./chips-DoCu5YQb.cjs`),v=require(`./code-highlight-zSYcSfCz.cjs`),ie=require(`./components-TJT8-tva.cjs`),ae=require(`./connectivity.cjs`),y=require(`./date-range-CIWYm3eS.cjs`),b=require(`./overlay-stack-7bs4ZNnh.cjs`),x=require(`./dialog-service-CzDO08Gy.cjs`),S=require(`./sheet.service-BfNDB0K0.cjs`),C=require(`./date-range-inline-B9Dp2z6C.cjs`),w=require(`./delay-Bu4WMQlV.cjs`),T=require(`./details-B8p62xmR.cjs`),E=require(`./dialog.cjs`),D=require(`./discovery.cjs`),O=require(`./dropdown.cjs`),k=require(`./surface-B6DA01kL.cjs`),A=require(`./expand-BmwIPNjq.cjs`),j=require(`./window-Cjv2GqSN.cjs`),oe=require(`./float-BQwhfibw.cjs`),M=require(`./extra-BUgyMgjl.cjs`),N=require(`./form-wI58M85H.cjs`),P=require(`./iframe-C7sHg7RC.cjs`),F=require(`./input-BGNZlfL8.cjs`),I=require(`./notification-DPUkuifB.cjs`),L=require(`./json.cjs`),R=require(`./layout-B0_IXfov.cjs`),z=require(`./scroll-V1rAZ9fK.cjs`),B=require(`./lightbox-BWKTzA03.cjs`),V=require(`./list-CMWHu6cV.cjs`),H=require(`./mailbox-Tg1CROVz.cjs`),U=require(`./map-Z_dsu-dv.cjs`),W=require(`./navigation-rail.cjs`),G=require(`./page.cjs`),K=require(`./qr-scanner.cjs`),q=require(`./radio-group-B7DuNxUq.cjs`),se=require(`./range.cjs`),ce=require(`./rxjs-utils-DJbZRjp3.cjs`),le=require(`./theme.interface-DTwkuAKJ.cjs`),ue=require(`./select-DFxoBgEf.cjs`),J=require(`./slider.cjs`),Y=require(`./steps.cjs`),X=require(`./table-DFlJhG5E.cjs`),Z=require(`./theme-DU5yXaV-.cjs`),de=require(`./tooltip.cjs`),fe=require(`./tree.cjs`),pe=require(`./types.cjs`),me=require(`./intersection-DqBqnpgh.cjs`),Q=require(`./typewriter.cjs`),he=require(`./typography.cjs`),ge=require(`./utils-CBPQvxNW.cjs`),$=require(`./breadcrumb.cjs`),_e=require(`./kbd.cjs`),ve=require(`./skeleton.cjs`),ye=require(`./switch.cjs`),be=require(`./visually-hidden.cjs`);exports.$dialog=x.t,exports.$drawer=f.m,exports.$notify=I.r,exports.$sounds=r.t,exports.ANIMATION_CSS_VARS=o.t,exports.BLACKBIRD_EASING=o.n,exports.BaseStore=t.I,Object.defineProperty(exports,`ConfirmDialog`,{enumerable:!0,get:function(){return E.ConfirmDialog}}),Object.defineProperty(exports,`SchmancyDialog`,{enumerable:!0,get:function(){return E.ConfirmDialog}}),exports.DISCOVER_EVENT=D.DISCOVER_EVENT,exports.DISCOVER_RESPONSE_EVENT=D.DISCOVER_RESPONSE_EVENT,exports.DURATION_BACKDROP=o.r,exports.DURATION_ENTER=o.i,exports.DURATION_EXIT=o.a,exports.DialogBase=E.DialogBase,exports.DialogService=x.n,exports.DragDirective=d.DragDirective,exports.DropDirective=d.DropDirective,exports.EASE_IN=o.o,exports.EASE_OUT=o.s,exports.EmotionalSoundGenerator=r.n,exports.FINDING_MORTIES=e.b,exports.GRID_ANIMATION_CSS=o.c,exports.HERE_RICKY=e.x,exports.HISTORY_STRATEGY=e.v,exports.HereMorty=f.r,exports.IndexedDBStorageManager=t.L,Object.defineProperty(exports,`List`,{enumerable:!0,get:function(){return V.t}}),exports.LocalStorageManager=t.R,exports.MemoryStorageManager=t.z,exports.Numbers=ge.t,Object.defineProperty(exports,`RadioButton`,{enumerable:!0,get:function(){return q.t}}),Object.defineProperty(exports,`RadioGroup`,{enumerable:!0,get:function(){return q.n}}),exports.SCHMANCY_EXPAND_REQUEST_CLOSE=A.t,exports.SPRING_BOUNCY=o.l,exports.SPRING_GENTLE=o.u,exports.SPRING_SMOOTH=o.d,exports.SPRING_SNAPPY=o.f,Object.defineProperty(exports,`ScBadgeV2`,{enumerable:!0,get:function(){return f.T}}),Object.defineProperty(exports,`SchmancyArea`,{enumerable:!0,get:function(){return e._}}),Object.defineProperty(exports,`SchmancyAreaChart`,{enumerable:!0,get:function(){return h.SchmancyAreaChart}}),exports.SchmancyArrayStore=t.F,Object.defineProperty(exports,`SchmancyAssistChip`,{enumerable:!0,get:function(){return _.r}}),Object.defineProperty(exports,`SchmancyAvatar`,{enumerable:!0,get:function(){return f.t}}),Object.defineProperty(exports,`SchmancyBadgeV2`,{enumerable:!0,get:function(){return f.E}}),exports.SchmancyBoat=p.t,Object.defineProperty(exports,`SchmancyBreadcrumb`,{enumerable:!0,get:function(){return $.SchmancyBreadcrumb}}),Object.defineProperty(exports,`SchmancyBreadcrumbItem`,{enumerable:!0,get:function(){return $.SchmancyBreadcrumbItem}}),Object.defineProperty(exports,`SchmancyButton`,{enumerable:!0,get:function(){return m.SchmancyButton}}),Object.defineProperty(exports,`SchmancyCheckbox`,{enumerable:!0,get:function(){return g.t}}),exports.SchmancyChip=_.n,exports.SchmancyFilterChip=_.n,Object.defineProperty(exports,`SchmancyCode`,{enumerable:!0,get:function(){return v.n}}),Object.defineProperty(exports,`SchmancyCodeHighlight`,{enumerable:!0,get:function(){return v.n}}),Object.defineProperty(exports,`SchmancyCodePreview`,{enumerable:!0,get:function(){return v.t}}),Object.defineProperty(exports,`SchmancyConnectivityStatus`,{enumerable:!0,get:function(){return ae.SchmancyConnectivityStatus}}),Object.defineProperty(exports,`SchmancyContentDrawer`,{enumerable:!0,get:function(){return f.v}}),exports.SchmancyContentDrawerID=f.y,Object.defineProperty(exports,`SchmancyContentDrawerMain`,{enumerable:!0,get:function(){return f._}}),exports.SchmancyContentDrawerMaxHeight=f.b,exports.SchmancyContentDrawerMinWidth=f.x,Object.defineProperty(exports,`SchmancyContentDrawerSheet`,{enumerable:!0,get:function(){return f.g}}),exports.SchmancyContentDrawerSheetMode=f.S,exports.SchmancyContentDrawerSheetState=f.C,Object.defineProperty(exports,`SchmancyCountriesSelect`,{enumerable:!0,get:function(){return M.n}}),Object.defineProperty(exports,`SchmancyDataTable`,{enumerable:!0,get:function(){return X.t}}),Object.defineProperty(exports,`SchmancyDateRange`,{enumerable:!0,get:function(){return y.t}}),exports.SchmancyDateRangeInline=C.t,Object.defineProperty(exports,`SchmancyDelay`,{enumerable:!0,get:function(){return w.t}}),exports.SchmancyDetails=T.t,Object.defineProperty(exports,`SchmancyDrawerAppbar`,{enumerable:!0,get:function(){return f.p}}),exports.SchmancyDrawerNavbarMode=f.u,exports.SchmancyDrawerNavbarState=f.d,Object.defineProperty(exports,`SchmancyDropdown`,{enumerable:!0,get:function(){return O.SchmancyDropdown}}),Object.defineProperty(exports,`SchmancyDropdownContent`,{enumerable:!0,get:function(){return O.SchmancyDropdownContent}}),Object.defineProperty(exports,`SchmancyEmailEditor`,{enumerable:!0,get:function(){return H.r}}),Object.defineProperty(exports,`SchmancyEmailLayoutSelector`,{enumerable:!0,get:function(){return H.i}}),Object.defineProperty(exports,`SchmancyEmailRecipients`,{enumerable:!0,get:function(){return H.t}}),Object.defineProperty(exports,`SchmancyEmailViewer`,{enumerable:!0,get:function(){return H.n}}),exports.SchmancyEvents=pe.SchmancyEvents,Object.defineProperty(exports,`SchmancyExpandRoot`,{enumerable:!0,get:function(){return A.n}}),Object.defineProperty(exports,`SchmancyFlex`,{enumerable:!0,get:function(){return R.r}}),Object.defineProperty(exports,`SchmancyFlexV2`,{enumerable:!0,get:function(){return R.t}}),exports.SchmancyFloat=oe.t,exports.SchmancyForm=N.t,exports.SchmancyGenerateMoodAudioEvent=Z.n,Object.defineProperty(exports,`SchmancyGrid`,{enumerable:!0,get:function(){return R.n}}),exports.SchmancyIframe=P.t,exports.SchmancyInput=F.n,Object.defineProperty(exports,`SchmancyInputChip`,{enumerable:!0,get:function(){return a.t}}),Object.defineProperty(exports,`SchmancyInputCompat`,{enumerable:!0,get:function(){return F.t}}),Object.defineProperty(exports,`SchmancyJson`,{enumerable:!0,get:function(){return L.SchmancyJson}}),Object.defineProperty(exports,`SchmancyKbd`,{enumerable:!0,get:function(){return _e.SchmancyKbd}}),Object.defineProperty(exports,`SchmancyLightbox`,{enumerable:!0,get:function(){return B.i}}),Object.defineProperty(exports,`SchmancyListItem`,{enumerable:!0,get:function(){return V.n}}),exports.SchmancyListTypeContext=V.r,Object.defineProperty(exports,`SchmancyMailbox`,{enumerable:!0,get:function(){return H.a}}),exports.SchmancyMap=U.t,Object.defineProperty(exports,`SchmancyNavigationBar`,{enumerable:!0,get:function(){return f.o}}),Object.defineProperty(exports,`SchmancyNavigationBarItem`,{enumerable:!0,get:function(){return f.s}}),Object.defineProperty(exports,`SchmancyNavigationDrawer`,{enumerable:!0,get:function(){return f.l}}),Object.defineProperty(exports,`SchmancyNavigationDrawerContent`,{enumerable:!0,get:function(){return f.f}}),Object.defineProperty(exports,`SchmancyNavigationDrawerSidebar`,{enumerable:!0,get:function(){return f.c}}),Object.defineProperty(exports,`SchmancyNavigationRail`,{enumerable:!0,get:function(){return W.SchmancyNavigationRail}}),Object.defineProperty(exports,`SchmancyNavigationRailItem`,{enumerable:!0,get:function(){return W.SchmancyNavigationRailItem}}),exports.SchmancyNotification=I.i,Object.defineProperty(exports,`SchmancyPage`,{enumerable:!0,get:function(){return G.SchmancyPage}}),Object.defineProperty(exports,`SchmancyPaymentCardForm`,{enumerable:!0,get:function(){return ie.t}}),Object.defineProperty(exports,`SchmancyPills`,{enumerable:!0,get:function(){return h.SchmancyPills}}),Object.defineProperty(exports,`SchmancyQRScanner`,{enumerable:!0,get:function(){return K.SchmancyQRScanner}}),Object.defineProperty(exports,`SchmancyRange`,{enumerable:!0,get:function(){return se.SchmancyRange}}),Object.defineProperty(exports,`SchmancyRoute`,{enumerable:!0,get:function(){return e.y}}),Object.defineProperty(exports,`SchmancyScroll`,{enumerable:!0,get:function(){return z.t}}),Object.defineProperty(exports,`SchmancySelect`,{enumerable:!0,get:function(){return ue.t}}),exports.SchmancySheetPosition=S.t,Object.defineProperty(exports,`SchmancySkeleton`,{enumerable:!0,get:function(){return ve.SchmancySkeleton}}),Object.defineProperty(exports,`SchmancySlide`,{enumerable:!0,get:function(){return J.SchmancySlide}}),Object.defineProperty(exports,`SchmancySlider`,{enumerable:!0,get:function(){return J.SchmancySlider}}),Object.defineProperty(exports,`SchmancyStep`,{enumerable:!0,get:function(){return Y.SchmancyStep}}),Object.defineProperty(exports,`SchmancyStepsContainer`,{enumerable:!0,get:function(){return Y.SchmancyStepsContainer}}),exports.SchmancyStoreObject=t.P,Object.defineProperty(exports,`SchmancySuggestionChip`,{enumerable:!0,get:function(){return _.t}}),Object.defineProperty(exports,`SchmancySurface`,{enumerable:!0,get:function(){return k.t}}),exports.SchmancySurfaceTypeContext=k.n,Object.defineProperty(exports,`SchmancySwitch`,{enumerable:!0,get:function(){return ye.SchmancySwitch}}),Object.defineProperty(exports,`SchmancyTableRow`,{enumerable:!0,get:function(){return X.n}}),Object.defineProperty(exports,`SchmancyTeleportation`,{enumerable:!0,get:function(){return f.n}}),exports.SchmancyTheme=le.t,Object.defineProperty(exports,`SchmancyThemeAudioPlayer`,{enumerable:!0,get:function(){return Z.r}}),Object.defineProperty(exports,`SchmancyThemeComponent`,{enumerable:!0,get:function(){return Z.a}}),Object.defineProperty(exports,`SchmancyThemeController`,{enumerable:!0,get:function(){return Z.i}}),Object.defineProperty(exports,`SchmancyThemeControllerBoat`,{enumerable:!0,get:function(){return Z.t}}),Object.defineProperty(exports,`SchmancyTimezonesSelect`,{enumerable:!0,get:function(){return M.t}}),Object.defineProperty(exports,`SchmancyTree`,{enumerable:!0,get:function(){return fe.SchmancyTree}}),Object.defineProperty(exports,`SchmancyTypography`,{enumerable:!0,get:function(){return he.SchmancyTypography}}),Object.defineProperty(exports,`SchmancyVisuallyHidden`,{enumerable:!0,get:function(){return be.SchmancyVisuallyHidden}}),exports.SchmancyWindow=j.t,Object.defineProperty(exports,`SchmnacyIconButton`,{enumerable:!0,get:function(){return m.SchmnacyIconButton}}),exports.SessionStorageManager=t.B,exports.StepsController=Y.StepsController,exports.StoreError=t.H,exports.ThemeHereIAm=c.t,exports.ThemeWhereAreYou=c.n,Object.defineProperty(exports,`TypewriterElement`,{enumerable:!0,get:function(){return Q.TypewriterElement}}),exports.WhereAreYouRicky=f.i,exports.animateText=d.animateText,exports.area=e.S,exports.buildQueryString=e.t,exports.catmullRomSpline=h.catmullRomSpline,exports.color=d.color,exports.compareActiveRoutes=e.n,exports.compareCustomElementConstructors=e.r,exports.compareRouteActions=e.i,exports.compareValues=t.g,exports.confirmClick=d.confirmClick,exports.createAnimation=o.p,exports.createArrayContext=t.j,exports.createCollectionSelector=t.r,exports.createCompoundSelector=t.i,exports.createContext=t.M,exports.createCountSelector=t.a,exports.createDarkTonalPaletteFromBaseColor=Z.s,exports.createDismissAnimation=o.m,exports.createEntriesSelector=t.o,exports.createFilterSelector=t.s,exports.createFindSelector=t.c,exports.createItemSelector=t.l,exports.createItemsSelector=t.u,exports.createKeysSelector=t.d,exports.createLightTonalPaletteFromBaseColor=Z.c,exports.createMapSelector=t.f,exports.createOptimizedSelector=t.p,exports.createRevealAnimation=o.h,exports.createRouteCacheKey=e.a,exports.createScaleAnimation=o.g,exports.createSelector=t.m,exports.createSortSelector=t.h,exports.createStorageManager=t.V,exports.createTestArrayContext=t.N,exports.cursorGlow=s.t,exports.cycleText=d.cycleText,exports.debounce=e.o,exports.decodeData=e.h,exports.decodeRouteState=e.s,exports.deepMerge=e.c,exports.delayContext=w.n,exports.depthOfField=d.depthOfField,exports.discover=D.discover,exports.discoverAllElements=D.discoverAllElements,exports.discoverAnyComponent=D.discoverAnyComponent,exports.discoverComponent=D.discoverComponent,exports.discoverElement=D.discoverElement,exports.drag=d.drag,exports.drop=d.drop,exports.easeOutCubic=h.easeOutCubic,exports.encodeData=e.g,exports.encodeRouteState=e.l,exports.extractQueryParams=e.u,exports.filterArray=t._,exports.filterArrayItems=t.v,exports.filterMap=t.y,exports.filterMapItems=t.b,exports.flip=B.r,exports.formatTheme=Z.l,exports.fromResizeObserver=u.t,exports.fullHeight=u.n,exports.fullWidth=u.r,exports.getEasing=o._,exports.getFieldValue=t.x,exports.getTagName=e.d,exports.gravity=d.gravity,exports.hexToRgba=h.hexToRgba,exports.intersect=d.intersect,exports.intersection$=me.t,exports.isArray=t.S,exports.isDate=t.C,exports.isIterable=t.w,exports.isMap=t.T,exports.isNil=t.E,exports.isNumber=t.D,exports.isObject=e.f,exports.isPlainObject=t.O,exports.isSet=t.k,exports.isString=t.A,exports.lazy=te.t,exports.lightbox=B.t,exports.lightboxDirective=B.n,exports.liquid=d.liquid,exports.livingBorder=d.livingBorder,exports.longPress=d.longPress,exports.magnetic=re.t,exports.mutationObserver=ce.t,exports.nebula=d.nebula,exports.normalizeTagName=e.p,exports.notify=I.t,exports.notifyProgress=I.n,exports.overlayStack=b.t,exports.prefersReducedMotion=o.v,exports.reducedMotion$=ne.t,exports.reveal=d.reveal,exports.ripple=d.ripple,exports.routerHistory=e.C,exports.sanitizeRouteState=e.m,exports.schmancyContentDrawer=f.w,exports.schmancyNavDrawer=f.h,exports.schmancySound=n.t,exports.schmancyTheme=l.t,exports.select=t.t,exports.selectItem=t.n,exports.sheet=S.n,exports.similarity=i.t,exports.sound=n.n,exports.stepsContext=Y.stepsContext,exports.tailwindAnimations=o.y,exports.tailwindStyles=Z.o,exports.teleport=f.a,exports.theme=l.n,exports.themeContext=ee.i,exports.tooltip=de.tooltip,exports.typewriter=d.typewriter,exports.validateInitialDateRange=y.n,exports.windowManager=j.n;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const ee=require(`./tailwind.mixin-Bh58QnlW.cjs`),e=require(`./area-DBjAhgjP.cjs`),te=require(`./lazy-BDNnH_r7.cjs`),t=require(`./store-CjFHCSDb.cjs`),n=require(`./sound.service-BEN6Xjy_.cjs`),r=require(`./audio-Dvr-RBzE.cjs`),i=require(`./search-CwMav5QB.cjs`),a=require(`./input-chip-p24lkYtY.cjs`),o=require(`./animation-CQRdLgzX.cjs`),ne=require(`./reduced-motion-9RjNnhIg.cjs`),s=require(`./cursor-glow-Duw9jHmh.cjs`),c=require(`./theme.events-DakXxZeP.cjs`),l=require(`./theme.service-DxJPUGlu.cjs`),u=require(`./layout-CTfRXQoz.cjs`),re=require(`./magnetic-CVXEkYTA.cjs`),d=require(`./directives.cjs`),f=require(`./src-sG7Ihf0e.cjs`),p=require(`./boat-BjYJI1HS.cjs`),m=require(`./button.cjs`),h=require(`./charts.cjs`),g=require(`./checkbox-DtcFMgZL.cjs`),_=require(`./chips-DoCu5YQb.cjs`),v=require(`./code-highlight-B_l8vDzn.cjs`),ie=require(`./components-TJT8-tva.cjs`),ae=require(`./connectivity.cjs`),y=require(`./date-range-CIWYm3eS.cjs`),b=require(`./overlay-stack-7bs4ZNnh.cjs`),x=require(`./dialog-service-CzDO08Gy.cjs`),S=require(`./sheet.service-BfNDB0K0.cjs`),C=require(`./date-range-inline-B9Dp2z6C.cjs`),w=require(`./delay-Bu4WMQlV.cjs`),T=require(`./details-B8p62xmR.cjs`),E=require(`./dialog.cjs`),D=require(`./discovery.cjs`),O=require(`./dropdown.cjs`),k=require(`./surface-B6DA01kL.cjs`),A=require(`./expand-BmwIPNjq.cjs`),j=require(`./window-Cjv2GqSN.cjs`),oe=require(`./float-BQwhfibw.cjs`),M=require(`./extra-BUgyMgjl.cjs`),N=require(`./form-wI58M85H.cjs`),P=require(`./iframe-C7sHg7RC.cjs`),F=require(`./input-BGNZlfL8.cjs`),I=require(`./notification-DPUkuifB.cjs`),L=require(`./json.cjs`),R=require(`./layout-B0_IXfov.cjs`),z=require(`./scroll-V1rAZ9fK.cjs`),B=require(`./lightbox-BWKTzA03.cjs`),V=require(`./list-CMWHu6cV.cjs`),H=require(`./mailbox-Tg1CROVz.cjs`),U=require(`./map-Z_dsu-dv.cjs`),W=require(`./navigation-rail.cjs`),G=require(`./page.cjs`),K=require(`./qr-scanner.cjs`),q=require(`./radio-group-B7DuNxUq.cjs`),se=require(`./range.cjs`),ce=require(`./rxjs-utils-DJbZRjp3.cjs`),le=require(`./theme.interface-DTwkuAKJ.cjs`),ue=require(`./select-DFxoBgEf.cjs`),J=require(`./slider.cjs`),Y=require(`./steps.cjs`),X=require(`./table-DFlJhG5E.cjs`),Z=require(`./theme-DU5yXaV-.cjs`),de=require(`./tooltip.cjs`),fe=require(`./tree.cjs`),pe=require(`./types.cjs`),me=require(`./intersection-DqBqnpgh.cjs`),Q=require(`./typewriter.cjs`),he=require(`./typography.cjs`),ge=require(`./utils-CBPQvxNW.cjs`),$=require(`./breadcrumb.cjs`),_e=require(`./kbd.cjs`),ve=require(`./skeleton.cjs`),ye=require(`./switch.cjs`),be=require(`./visually-hidden.cjs`);exports.$dialog=x.t,exports.$drawer=f.m,exports.$notify=I.r,exports.$sounds=r.t,exports.ANIMATION_CSS_VARS=o.t,exports.BLACKBIRD_EASING=o.n,exports.BaseStore=t.I,Object.defineProperty(exports,`ConfirmDialog`,{enumerable:!0,get:function(){return E.ConfirmDialog}}),Object.defineProperty(exports,`SchmancyDialog`,{enumerable:!0,get:function(){return E.ConfirmDialog}}),exports.DISCOVER_EVENT=D.DISCOVER_EVENT,exports.DISCOVER_RESPONSE_EVENT=D.DISCOVER_RESPONSE_EVENT,exports.DURATION_BACKDROP=o.r,exports.DURATION_ENTER=o.i,exports.DURATION_EXIT=o.a,exports.DialogBase=E.DialogBase,exports.DialogService=x.n,exports.DragDirective=d.DragDirective,exports.DropDirective=d.DropDirective,exports.EASE_IN=o.o,exports.EASE_OUT=o.s,exports.EmotionalSoundGenerator=r.n,exports.FINDING_MORTIES=e.b,exports.GRID_ANIMATION_CSS=o.c,exports.HERE_RICKY=e.x,exports.HISTORY_STRATEGY=e.v,exports.HereMorty=f.r,exports.IndexedDBStorageManager=t.L,Object.defineProperty(exports,`List`,{enumerable:!0,get:function(){return V.t}}),exports.LocalStorageManager=t.R,exports.MemoryStorageManager=t.z,exports.Numbers=ge.t,Object.defineProperty(exports,`RadioButton`,{enumerable:!0,get:function(){return q.t}}),Object.defineProperty(exports,`RadioGroup`,{enumerable:!0,get:function(){return q.n}}),exports.SCHMANCY_EXPAND_REQUEST_CLOSE=A.t,exports.SPRING_BOUNCY=o.l,exports.SPRING_GENTLE=o.u,exports.SPRING_SMOOTH=o.d,exports.SPRING_SNAPPY=o.f,Object.defineProperty(exports,`ScBadgeV2`,{enumerable:!0,get:function(){return f.T}}),Object.defineProperty(exports,`SchmancyArea`,{enumerable:!0,get:function(){return e._}}),Object.defineProperty(exports,`SchmancyAreaChart`,{enumerable:!0,get:function(){return h.SchmancyAreaChart}}),exports.SchmancyArrayStore=t.F,Object.defineProperty(exports,`SchmancyAssistChip`,{enumerable:!0,get:function(){return _.r}}),Object.defineProperty(exports,`SchmancyAvatar`,{enumerable:!0,get:function(){return f.t}}),Object.defineProperty(exports,`SchmancyBadgeV2`,{enumerable:!0,get:function(){return f.E}}),exports.SchmancyBoat=p.t,Object.defineProperty(exports,`SchmancyBreadcrumb`,{enumerable:!0,get:function(){return $.SchmancyBreadcrumb}}),Object.defineProperty(exports,`SchmancyBreadcrumbItem`,{enumerable:!0,get:function(){return $.SchmancyBreadcrumbItem}}),Object.defineProperty(exports,`SchmancyButton`,{enumerable:!0,get:function(){return m.SchmancyButton}}),Object.defineProperty(exports,`SchmancyCheckbox`,{enumerable:!0,get:function(){return g.t}}),exports.SchmancyChip=_.n,exports.SchmancyFilterChip=_.n,Object.defineProperty(exports,`SchmancyCode`,{enumerable:!0,get:function(){return v.n}}),Object.defineProperty(exports,`SchmancyCodeHighlight`,{enumerable:!0,get:function(){return v.n}}),Object.defineProperty(exports,`SchmancyCodePreview`,{enumerable:!0,get:function(){return v.t}}),Object.defineProperty(exports,`SchmancyConnectivityStatus`,{enumerable:!0,get:function(){return ae.SchmancyConnectivityStatus}}),Object.defineProperty(exports,`SchmancyContentDrawer`,{enumerable:!0,get:function(){return f.v}}),exports.SchmancyContentDrawerID=f.y,Object.defineProperty(exports,`SchmancyContentDrawerMain`,{enumerable:!0,get:function(){return f._}}),exports.SchmancyContentDrawerMaxHeight=f.b,exports.SchmancyContentDrawerMinWidth=f.x,Object.defineProperty(exports,`SchmancyContentDrawerSheet`,{enumerable:!0,get:function(){return f.g}}),exports.SchmancyContentDrawerSheetMode=f.S,exports.SchmancyContentDrawerSheetState=f.C,Object.defineProperty(exports,`SchmancyCountriesSelect`,{enumerable:!0,get:function(){return M.n}}),Object.defineProperty(exports,`SchmancyDataTable`,{enumerable:!0,get:function(){return X.t}}),Object.defineProperty(exports,`SchmancyDateRange`,{enumerable:!0,get:function(){return y.t}}),exports.SchmancyDateRangeInline=C.t,Object.defineProperty(exports,`SchmancyDelay`,{enumerable:!0,get:function(){return w.t}}),exports.SchmancyDetails=T.t,Object.defineProperty(exports,`SchmancyDrawerAppbar`,{enumerable:!0,get:function(){return f.p}}),exports.SchmancyDrawerNavbarMode=f.u,exports.SchmancyDrawerNavbarState=f.d,Object.defineProperty(exports,`SchmancyDropdown`,{enumerable:!0,get:function(){return O.SchmancyDropdown}}),Object.defineProperty(exports,`SchmancyDropdownContent`,{enumerable:!0,get:function(){return O.SchmancyDropdownContent}}),Object.defineProperty(exports,`SchmancyEmailEditor`,{enumerable:!0,get:function(){return H.r}}),Object.defineProperty(exports,`SchmancyEmailLayoutSelector`,{enumerable:!0,get:function(){return H.i}}),Object.defineProperty(exports,`SchmancyEmailRecipients`,{enumerable:!0,get:function(){return H.t}}),Object.defineProperty(exports,`SchmancyEmailViewer`,{enumerable:!0,get:function(){return H.n}}),exports.SchmancyEvents=pe.SchmancyEvents,Object.defineProperty(exports,`SchmancyExpandRoot`,{enumerable:!0,get:function(){return A.n}}),Object.defineProperty(exports,`SchmancyFlex`,{enumerable:!0,get:function(){return R.r}}),Object.defineProperty(exports,`SchmancyFlexV2`,{enumerable:!0,get:function(){return R.t}}),exports.SchmancyFloat=oe.t,exports.SchmancyForm=N.t,exports.SchmancyGenerateMoodAudioEvent=Z.n,Object.defineProperty(exports,`SchmancyGrid`,{enumerable:!0,get:function(){return R.n}}),exports.SchmancyIframe=P.t,exports.SchmancyInput=F.n,Object.defineProperty(exports,`SchmancyInputChip`,{enumerable:!0,get:function(){return a.t}}),Object.defineProperty(exports,`SchmancyInputCompat`,{enumerable:!0,get:function(){return F.t}}),Object.defineProperty(exports,`SchmancyJson`,{enumerable:!0,get:function(){return L.SchmancyJson}}),Object.defineProperty(exports,`SchmancyKbd`,{enumerable:!0,get:function(){return _e.SchmancyKbd}}),Object.defineProperty(exports,`SchmancyLightbox`,{enumerable:!0,get:function(){return B.i}}),Object.defineProperty(exports,`SchmancyListItem`,{enumerable:!0,get:function(){return V.n}}),exports.SchmancyListTypeContext=V.r,Object.defineProperty(exports,`SchmancyMailbox`,{enumerable:!0,get:function(){return H.a}}),exports.SchmancyMap=U.t,Object.defineProperty(exports,`SchmancyNavigationBar`,{enumerable:!0,get:function(){return f.o}}),Object.defineProperty(exports,`SchmancyNavigationBarItem`,{enumerable:!0,get:function(){return f.s}}),Object.defineProperty(exports,`SchmancyNavigationDrawer`,{enumerable:!0,get:function(){return f.l}}),Object.defineProperty(exports,`SchmancyNavigationDrawerContent`,{enumerable:!0,get:function(){return f.f}}),Object.defineProperty(exports,`SchmancyNavigationDrawerSidebar`,{enumerable:!0,get:function(){return f.c}}),Object.defineProperty(exports,`SchmancyNavigationRail`,{enumerable:!0,get:function(){return W.SchmancyNavigationRail}}),Object.defineProperty(exports,`SchmancyNavigationRailItem`,{enumerable:!0,get:function(){return W.SchmancyNavigationRailItem}}),exports.SchmancyNotification=I.i,Object.defineProperty(exports,`SchmancyPage`,{enumerable:!0,get:function(){return G.SchmancyPage}}),Object.defineProperty(exports,`SchmancyPaymentCardForm`,{enumerable:!0,get:function(){return ie.t}}),Object.defineProperty(exports,`SchmancyPills`,{enumerable:!0,get:function(){return h.SchmancyPills}}),Object.defineProperty(exports,`SchmancyQRScanner`,{enumerable:!0,get:function(){return K.SchmancyQRScanner}}),Object.defineProperty(exports,`SchmancyRange`,{enumerable:!0,get:function(){return se.SchmancyRange}}),Object.defineProperty(exports,`SchmancyRoute`,{enumerable:!0,get:function(){return e.y}}),Object.defineProperty(exports,`SchmancyScroll`,{enumerable:!0,get:function(){return z.t}}),Object.defineProperty(exports,`SchmancySelect`,{enumerable:!0,get:function(){return ue.t}}),exports.SchmancySheetPosition=S.t,Object.defineProperty(exports,`SchmancySkeleton`,{enumerable:!0,get:function(){return ve.SchmancySkeleton}}),Object.defineProperty(exports,`SchmancySlide`,{enumerable:!0,get:function(){return J.SchmancySlide}}),Object.defineProperty(exports,`SchmancySlider`,{enumerable:!0,get:function(){return J.SchmancySlider}}),Object.defineProperty(exports,`SchmancyStep`,{enumerable:!0,get:function(){return Y.SchmancyStep}}),Object.defineProperty(exports,`SchmancyStepsContainer`,{enumerable:!0,get:function(){return Y.SchmancyStepsContainer}}),exports.SchmancyStoreObject=t.P,Object.defineProperty(exports,`SchmancySuggestionChip`,{enumerable:!0,get:function(){return _.t}}),Object.defineProperty(exports,`SchmancySurface`,{enumerable:!0,get:function(){return k.t}}),exports.SchmancySurfaceTypeContext=k.n,Object.defineProperty(exports,`SchmancySwitch`,{enumerable:!0,get:function(){return ye.SchmancySwitch}}),Object.defineProperty(exports,`SchmancyTableRow`,{enumerable:!0,get:function(){return X.n}}),Object.defineProperty(exports,`SchmancyTeleportation`,{enumerable:!0,get:function(){return f.n}}),exports.SchmancyTheme=le.t,Object.defineProperty(exports,`SchmancyThemeAudioPlayer`,{enumerable:!0,get:function(){return Z.r}}),Object.defineProperty(exports,`SchmancyThemeComponent`,{enumerable:!0,get:function(){return Z.a}}),Object.defineProperty(exports,`SchmancyThemeController`,{enumerable:!0,get:function(){return Z.i}}),Object.defineProperty(exports,`SchmancyThemeControllerBoat`,{enumerable:!0,get:function(){return Z.t}}),Object.defineProperty(exports,`SchmancyTimezonesSelect`,{enumerable:!0,get:function(){return M.t}}),Object.defineProperty(exports,`SchmancyTree`,{enumerable:!0,get:function(){return fe.SchmancyTree}}),Object.defineProperty(exports,`SchmancyTypography`,{enumerable:!0,get:function(){return he.SchmancyTypography}}),Object.defineProperty(exports,`SchmancyVisuallyHidden`,{enumerable:!0,get:function(){return be.SchmancyVisuallyHidden}}),exports.SchmancyWindow=j.t,Object.defineProperty(exports,`SchmnacyIconButton`,{enumerable:!0,get:function(){return m.SchmnacyIconButton}}),exports.SessionStorageManager=t.B,exports.StepsController=Y.StepsController,exports.StoreError=t.H,exports.ThemeHereIAm=c.t,exports.ThemeWhereAreYou=c.n,Object.defineProperty(exports,`TypewriterElement`,{enumerable:!0,get:function(){return Q.TypewriterElement}}),exports.WhereAreYouRicky=f.i,exports.animateText=d.animateText,exports.area=e.S,exports.buildQueryString=e.t,exports.catmullRomSpline=h.catmullRomSpline,exports.color=d.color,exports.compareActiveRoutes=e.n,exports.compareCustomElementConstructors=e.r,exports.compareRouteActions=e.i,exports.compareValues=t.g,exports.confirmClick=d.confirmClick,exports.createAnimation=o.p,exports.createArrayContext=t.j,exports.createCollectionSelector=t.r,exports.createCompoundSelector=t.i,exports.createContext=t.M,exports.createCountSelector=t.a,exports.createDarkTonalPaletteFromBaseColor=Z.s,exports.createDismissAnimation=o.m,exports.createEntriesSelector=t.o,exports.createFilterSelector=t.s,exports.createFindSelector=t.c,exports.createItemSelector=t.l,exports.createItemsSelector=t.u,exports.createKeysSelector=t.d,exports.createLightTonalPaletteFromBaseColor=Z.c,exports.createMapSelector=t.f,exports.createOptimizedSelector=t.p,exports.createRevealAnimation=o.h,exports.createRouteCacheKey=e.a,exports.createScaleAnimation=o.g,exports.createSelector=t.m,exports.createSortSelector=t.h,exports.createStorageManager=t.V,exports.createTestArrayContext=t.N,exports.cursorGlow=s.t,exports.cycleText=d.cycleText,exports.debounce=e.o,exports.decodeData=e.h,exports.decodeRouteState=e.s,exports.deepMerge=e.c,exports.delayContext=w.n,exports.depthOfField=d.depthOfField,exports.discover=D.discover,exports.discoverAllElements=D.discoverAllElements,exports.discoverAnyComponent=D.discoverAnyComponent,exports.discoverComponent=D.discoverComponent,exports.discoverElement=D.discoverElement,exports.drag=d.drag,exports.drop=d.drop,exports.easeOutCubic=h.easeOutCubic,exports.encodeData=e.g,exports.encodeRouteState=e.l,exports.extractQueryParams=e.u,exports.filterArray=t._,exports.filterArrayItems=t.v,exports.filterMap=t.y,exports.filterMapItems=t.b,exports.flip=B.r,exports.formatTheme=Z.l,exports.fromResizeObserver=u.t,exports.fullHeight=u.n,exports.fullWidth=u.r,exports.getEasing=o._,exports.getFieldValue=t.x,exports.getTagName=e.d,exports.gravity=d.gravity,exports.hexToRgba=h.hexToRgba,exports.intersect=d.intersect,exports.intersection$=me.t,exports.isArray=t.S,exports.isDate=t.C,exports.isIterable=t.w,exports.isMap=t.T,exports.isNil=t.E,exports.isNumber=t.D,exports.isObject=e.f,exports.isPlainObject=t.O,exports.isSet=t.k,exports.isString=t.A,exports.lazy=te.t,exports.lightbox=B.t,exports.lightboxDirective=B.n,exports.liquid=d.liquid,exports.livingBorder=d.livingBorder,exports.longPress=d.longPress,exports.magnetic=re.t,exports.mutationObserver=ce.t,exports.nebula=d.nebula,exports.normalizeTagName=e.p,exports.notify=I.t,exports.notifyProgress=I.n,exports.overlayStack=b.t,exports.prefersReducedMotion=o.v,exports.reducedMotion$=ne.t,exports.reveal=d.reveal,exports.ripple=d.ripple,exports.routerHistory=e.C,exports.sanitizeRouteState=e.m,exports.schmancyContentDrawer=f.w,exports.schmancyNavDrawer=f.h,exports.schmancySound=n.t,exports.schmancyTheme=l.t,exports.select=t.t,exports.selectItem=t.n,exports.sheet=S.n,exports.similarity=i.t,exports.sound=n.n,exports.stepsContext=Y.stepsContext,exports.tailwindAnimations=o.y,exports.tailwindStyles=Z.o,exports.teleport=f.a,exports.theme=l.n,exports.themeContext=ee.i,exports.tooltip=de.tooltip,exports.typewriter=d.typewriter,exports.validateInitialDateRange=y.n,exports.windowManager=j.n;
|
package/dist/index.js
CHANGED
|
@@ -14,13 +14,13 @@ import { n as Ke, t as qe } from "./theme.service-cOfPrtfe.js";
|
|
|
14
14
|
import { n as Je, r as Ye, t as Xe } from "./layout-fjM1DWlF.js";
|
|
15
15
|
import { t as Ze } from "./magnetic-BhXebqF3.js";
|
|
16
16
|
import { DragDirective as Qe, DropDirective as $e, animateText as et, color as tt, confirmClick as nt, cycleText as rt, depthOfField as it, drag as at, drop as ot, gravity as st, intersect as ct, liquid as lt, livingBorder as ut, longPress as dt, nebula as ft, reveal as pt, ripple as mt, typewriter as ht } from "./directives.js";
|
|
17
|
-
import { C as gt, E as _t, S as vt, T as yt, _ as bt, a as xt, b as St, c as Ct, d as wt, f as Tt, g as Et, h as Dt, i as Ot, l as kt, m as At, n as jt, o as Mt, p as Nt, r as Pt, s as Ft, t as It, u as Lt, v as Rt, w as zt, x as X, y as Bt } from "./src-
|
|
17
|
+
import { C as gt, E as _t, S as vt, T as yt, _ as bt, a as xt, b as St, c as Ct, d as wt, f as Tt, g as Et, h as Dt, i as Ot, l as kt, m as At, n as jt, o as Mt, p as Nt, r as Pt, s as Ft, t as It, u as Lt, v as Rt, w as zt, x as X, y as Bt } from "./src-Dw-PjtMH.js";
|
|
18
18
|
import { t as Vt } from "./boat-Dw8TmOzN.js";
|
|
19
19
|
import { SchmancyButton as Ht, SchmnacyIconButton as Ut } from "./button.js";
|
|
20
20
|
import { SchmancyAreaChart as Wt, SchmancyPills as Gt, catmullRomSpline as Kt, easeOutCubic as qt, hexToRgba as Jt } from "./charts.js";
|
|
21
21
|
import { t as Yt } from "./checkbox-Br84TiCs.js";
|
|
22
22
|
import { n as Z, r as Xt, t as Zt } from "./chips-BNYOweGm.js";
|
|
23
|
-
import { n as Q, t as Qt } from "./code-highlight-
|
|
23
|
+
import { n as Q, t as Qt } from "./code-highlight-CI_gqXYX.js";
|
|
24
24
|
import { t as $t } from "./components-DjKNS9R_.js";
|
|
25
25
|
import { SchmancyConnectivityStatus as en } from "./connectivity.js";
|
|
26
26
|
import { n as tn, t as nn } from "./date-range-sGkC0KF3.js";
|
package/dist/nav-drawer.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-sG7Ihf0e.cjs`);exports.$drawer=e.m,Object.defineProperty(exports,`SchmancyDrawerAppbar`,{enumerable:!0,get:function(){return e.p}}),exports.SchmancyDrawerNavbarMode=e.u,exports.SchmancyDrawerNavbarState=e.d,Object.defineProperty(exports,`SchmancyNavigationDrawer`,{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(exports,`SchmancyNavigationDrawerContent`,{enumerable:!0,get:function(){return e.f}}),Object.defineProperty(exports,`SchmancyNavigationDrawerSidebar`,{enumerable:!0,get:function(){return e.c}}),exports.schmancyNavDrawer=e.h;
|
package/dist/nav-drawer.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { c as e, d as t, f as n, h as r, l as i, m as a, p as o, u as s } from "./src-
|
|
1
|
+
import { c as e, d as t, f as n, h as r, l as i, m as a, p as o, u as s } from "./src-Dw-PjtMH.js";
|
|
2
2
|
export { a as $drawer, o as SchmancyDrawerAppbar, s as SchmancyDrawerNavbarMode, t as SchmancyDrawerNavbarState, i as SchmancyNavigationDrawer, n as SchmancyNavigationDrawerContent, e as SchmancyNavigationDrawerSidebar, r as schmancyNavDrawer };
|
package/dist/navigation-bar.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-sG7Ihf0e.cjs`);Object.defineProperty(exports,`SchmancyNavigationBar`,{enumerable:!0,get:function(){return e.o}}),Object.defineProperty(exports,`SchmancyNavigationBarItem`,{enumerable:!0,get:function(){return e.s}});
|
package/dist/navigation-bar.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { o as e, s as t } from "./src-
|
|
1
|
+
import { o as e, s as t } from "./src-Dw-PjtMH.js";
|
|
2
2
|
export { e as SchmancyNavigationBar, t as SchmancyNavigationBarItem };
|
package/dist/qr-scanner.cjs
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`})
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./decorate-F9CuyeHg.cjs`),t=require(`./litElement.mixin-CtQOmwq6.cjs`);let n=require(`rxjs`),r=require(`rxjs/operators`),i=require(`lit/decorators.js`),a=require(`lit`),o=require(`lit/directives/when.js`);var s=null,c=null,l=class extends t.t(a.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
width: 100%;
|
|
5
5
|
height: 100%;
|
|
6
6
|
min-height: 300px;
|
|
7
7
|
}
|
|
8
|
-
`){constructor(...e){super(...e),this.continuous=!0,this.hasPermission=!1,this.error=``,this.showSuccess=!1,this.stream=null,this.destroy$=new
|
|
8
|
+
`){constructor(...e){super(...e),this.continuous=!0,this.hasPermission=!1,this.error=``,this.showSuccess=!1,this.stream=null,this.destroy$=new n.Subject,this.videoElement=null}connectedCallback(){super.connectedCallback(),this.startCamera()}async startCamera(){try{let e={video:{facingMode:`environment`,width:{ideal:1280},height:{ideal:720}}};if(this.stream=await navigator.mediaDevices.getUserMedia(e),this.hasPermission=!0,this.error=``,await this.updateComplete,this.videoElement=this.shadowRoot?.querySelector(`#video`),this.videoElement){if(this.videoElement.srcObject=this.stream,await this.videoElement.play(),await(c||=import(`jsqr`).then(e=>(s=e.default,e.default))),!this.isConnected)return;this.startScanning()}}catch{this.hasPermission=!1,this.error=`Camera access is required to scan QR codes. Please allow camera access and try again.`}}stopCamera(){this.destroy$.next(),this.stream&&=(this.stream.getTracks().forEach(e=>e.stop()),null),this.videoElement&&=(this.videoElement.srcObject=null,null),this.hasPermission=!1,this.error=``,this.showSuccess=!1}startScanning(){this.videoElement&&this.hasPermission&&(0,n.animationFrames)().pipe((0,r.map)(()=>this.scanFrame()),(0,r.filter)(e=>e!==null),(0,r.distinctUntilChanged)((e,t)=>e.data===t.data&&t.timestamp-e.timestamp<2e3),(0,r.throttleTime)(500),(0,r.takeUntil)(this.destroy$)).subscribe({next:e=>this.handleScanResult(e),error:e=>{}})}scanFrame(){if(!this.videoElement||this.videoElement.readyState!==HTMLMediaElement.HAVE_ENOUGH_DATA)return null;try{let e=document.createElement(`canvas`);e.width=this.videoElement.videoWidth,e.height=this.videoElement.videoHeight;let t=e.getContext(`2d`);if(!t)return null;t.drawImage(this.videoElement,0,0);let n=t.getImageData(0,0,e.width,e.height);if(!s)return null;let r=s(n.data,n.width,n.height);if(r&&r.data)return{data:r.data,timestamp:Date.now()}}catch{}return null}handleScanResult(e){this.showSuccessFlash(),navigator.vibrate&&navigator.vibrate([100,50,100]),this.playSuccessSound(),this.dispatchEvent(new CustomEvent(`scan-result`,{detail:{data:e.data,timestamp:e.timestamp},bubbles:!0,composed:!0}))}showSuccessFlash(){this.showSuccess=!0,(0,n.timer)(500).pipe((0,r.takeUntil)(this.destroy$)).subscribe(()=>{this.showSuccess=!1})}playSuccessSound(){try{let e=new(window.AudioContext||window.webkitAudioContext),t=e.createOscillator(),n=e.createGain();t.connect(n),n.connect(e.destination),t.frequency.setValueAtTime(800,e.currentTime),t.frequency.setValueAtTime(1e3,e.currentTime+.1),n.gain.setValueAtTime(.3,e.currentTime),n.gain.exponentialRampToValueAtTime(.01,e.currentTime+.2),t.start(e.currentTime),t.stop(e.currentTime+.2)}catch{}}disconnectedCallback(){super.disconnectedCallback(),this.stopCamera(),this.destroy$.complete()}render(){return this.error?a.html`
|
|
9
9
|
<div class="w-full h-full flex flex-col items-center justify-center bg-black text-white text-center p-5">
|
|
10
10
|
<schmancy-icon size="64" class="mb-4">camera_alt</schmancy-icon>
|
|
11
11
|
<schmancy-typography type="headline" token="md" class="mb-4">Camera Permission Required</schmancy-typography>
|
|
12
12
|
<schmancy-typography type="body" token="md" class="mb-6 max-w-sm">${this.error}</schmancy-typography>
|
|
13
13
|
<schmancy-button variant="filled" @click=${()=>window.location.reload()}>Retry</schmancy-button>
|
|
14
14
|
</div>
|
|
15
|
-
`:
|
|
15
|
+
`:a.html`
|
|
16
16
|
<div class="relative w-full h-full bg-black overflow-hidden rounded-xl">
|
|
17
17
|
<!-- Video Stream -->
|
|
18
18
|
<video id="video" class="absolute inset-0 w-full h-full object-cover" autoplay muted playsinline></video>
|
|
19
19
|
|
|
20
20
|
<!-- Success Flash -->
|
|
21
|
-
${(0,
|
|
21
|
+
${(0,o.when)(this.showSuccess,()=>a.html`<div class="absolute inset-0 bg-green-400/30 pointer-events-none"></div>`)}
|
|
22
22
|
|
|
23
23
|
<!-- Minimal corner brackets - Apple style -->
|
|
24
24
|
<div class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[250px] h-[250px] pointer-events-none animate-pulse">
|
|
@@ -32,4 +32,4 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
|
|
|
32
32
|
<div class="absolute bottom-0 right-0 w-12 h-12 border-b-4 border-r-4 border-white rounded-br-2xl"></div>
|
|
33
33
|
</div>
|
|
34
34
|
</div>
|
|
35
|
-
`}};
|
|
35
|
+
`}};e.t([(0,i.property)({type:Boolean})],l.prototype,`continuous`,void 0),e.t([(0,i.state)()],l.prototype,`hasPermission`,void 0),e.t([(0,i.state)()],l.prototype,`error`,void 0),e.t([(0,i.state)()],l.prototype,`showSuccess`,void 0),l=e.t([(0,i.customElement)(`schmancy-qr-scanner`)],l),Object.defineProperty(exports,`SchmancyQRScanner`,{enumerable:!0,get:function(){return l}});
|
package/dist/qr-scanner.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qr-scanner.cjs","names":[],"sources":["../src/qr-scanner/qr-scanner.ts"],"sourcesContent":["import { $LitElement } from '@mixins/litElement.mixin'\nimport jsQR from 'jsqr'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { animationFrames, Subject, timer } from 'rxjs'\nimport { distinctUntilChanged, filter, map, takeUntil, throttleTime } from 'rxjs/operators'\n\ninterface QRScanResult {\n\tdata: string\n\ttimestamp: number\n}\n\n@customElement('schmancy-qr-scanner')\nexport class SchmancyQRScanner extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmin-height: 300px;\n\t}\n`) {\n\t@property({ type: Boolean }) continuous = true\n\n\t@state() private hasPermission = false\n\t@state() private error = ''\n\t@state() private showSuccess = false\n\n\tprivate stream: MediaStream | null = null\n\tprivate destroy$ = new Subject<void>()\n\tprivate videoElement: HTMLVideoElement | null = null\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.startCamera()\n\t}\n\n\tprivate async startCamera(): Promise<void> {\n\t\ttry {\n\t\t\tconst constraints: MediaStreamConstraints = {\n\t\t\t\tvideo: {\n\t\t\t\t\tfacingMode: 'environment',\n\t\t\t\t\twidth: { ideal: 1280 },\n\t\t\t\t\theight: { ideal: 720 },\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tthis.stream = await navigator.mediaDevices.getUserMedia(constraints)\n\t\t\tthis.hasPermission = true\n\t\t\tthis.error = ''\n\n\t\t\tawait this.updateComplete\n\n\t\t\tthis.videoElement = this.shadowRoot?.querySelector('#video') as HTMLVideoElement\n\t\t\tif (this.videoElement) {\n\t\t\t\tthis.videoElement.srcObject = this.stream\n\t\t\t\tawait this.videoElement.play()\n\t\t\t\tthis.startScanning()\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('Camera access denied:', error)\n\t\t\tthis.hasPermission = false\n\t\t\tthis.error = 'Camera access is required to scan QR codes. Please allow camera access and try again.'\n\t\t}\n\t}\n\n\tprivate stopCamera(): void {\n\t\tthis.destroy$.next()\n\n\t\tif (this.stream) {\n\t\t\tthis.stream.getTracks().forEach(track => track.stop())\n\t\t\tthis.stream = null\n\t\t}\n\n\t\tif (this.videoElement) {\n\t\t\tthis.videoElement.srcObject = null\n\t\t\tthis.videoElement = null\n\t\t}\n\n\t\tthis.hasPermission = false\n\t\tthis.error = ''\n\t\tthis.showSuccess = false\n\t}\n\n\tprivate startScanning(): void {\n\t\tif (!this.videoElement || !this.hasPermission) {\n\t\t\treturn\n\t\t}\n\n\t\tanimationFrames()\n\t\t\t.pipe(\n\t\t\t\tmap(() => this.scanFrame()),\n\t\t\t\tfilter((result): result is QRScanResult => result !== null),\n\t\t\t\tdistinctUntilChanged((prev, curr) => {\n\t\t\t\t\tif (prev.data !== curr.data) return false\n\t\t\t\t\treturn curr.timestamp - prev.timestamp < 2000\n\t\t\t\t}),\n\t\t\t\tthrottleTime(500),\n\t\t\t\ttakeUntil(this.destroy$),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: result => this.handleScanResult(result),\n\t\t\t\terror: error => {\n\t\t\t\t\tconsole.error('Scanning error:', error)\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tprivate scanFrame(): QRScanResult | null {\n\t\tif (!this.videoElement || this.videoElement.readyState !== HTMLMediaElement.HAVE_ENOUGH_DATA) {\n\t\t\treturn null\n\t\t}\n\n\t\ttry {\n\t\t\tconst canvas = document.createElement('canvas')\n\t\t\tcanvas.width = this.videoElement.videoWidth\n\t\t\tcanvas.height = this.videoElement.videoHeight\n\n\t\t\tconst ctx = canvas.getContext('2d')\n\t\t\tif (!ctx) return null\n\n\t\t\tctx.drawImage(this.videoElement, 0, 0)\n\t\t\tconst imageData = ctx.getImageData(0, 0, canvas.width, canvas.height)\n\n\t\t\tconst code = jsQR(imageData.data, imageData.width, imageData.height)\n\n\t\t\tif (code && code.data) {\n\t\t\t\treturn {\n\t\t\t\t\tdata: code.data,\n\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('Frame scan error:', error)\n\t\t}\n\n\t\treturn null\n\t}\n\n\tprivate handleScanResult(result: QRScanResult): void {\n\t\tthis.showSuccessFlash()\n\n\t\t// Haptic feedback if available\n\t\tif (navigator.vibrate) {\n\t\t\tnavigator.vibrate([100, 50, 100])\n\t\t}\n\n\t\t// Audio feedback\n\t\tthis.playSuccessSound()\n\n\t\t// Dispatch scan result\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('scan-result', {\n\t\t\t\tdetail: { data: result.data, timestamp: result.timestamp },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\n\t}\n\n\tprivate showSuccessFlash(): void {\n\t\tthis.showSuccess = true\n\t\ttimer(500)\n\t\t\t.pipe(takeUntil(this.destroy$))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showSuccess = false\n\t\t\t})\n\t}\n\n\tprivate playSuccessSound(): void {\n\t\ttry {\n\t\t\tconst AudioContextClass = window.AudioContext || (window as unknown as { webkitAudioContext: typeof AudioContext }).webkitAudioContext\n\t\t\tconst audioContext = new AudioContextClass()\n\t\t\tconst oscillator = audioContext.createOscillator()\n\t\t\tconst gainNode = audioContext.createGain()\n\n\t\t\toscillator.connect(gainNode)\n\t\t\tgainNode.connect(audioContext.destination)\n\n\t\t\toscillator.frequency.setValueAtTime(800, audioContext.currentTime)\n\t\t\toscillator.frequency.setValueAtTime(1000, audioContext.currentTime + 0.1)\n\n\t\t\tgainNode.gain.setValueAtTime(0.3, audioContext.currentTime)\n\t\t\tgainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.2)\n\n\t\t\toscillator.start(audioContext.currentTime)\n\t\t\toscillator.stop(audioContext.currentTime + 0.2)\n\t\t} catch {\n\t\t\t// Audio feedback failed silently\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.stopCamera()\n\t\tthis.destroy$.complete()\n\t}\n\n\trender() {\n\t\tif (this.error) {\n\t\t\treturn html`\n\t\t\t\t<div class=\"w-full h-full flex flex-col items-center justify-center bg-black text-white text-center p-5\">\n\t\t\t\t\t<schmancy-icon size=\"64\" class=\"mb-4\">camera_alt</schmancy-icon>\n\t\t\t\t\t<schmancy-typography type=\"headline\" token=\"md\" class=\"mb-4\">Camera Permission Required</schmancy-typography>\n\t\t\t\t\t<schmancy-typography type=\"body\" token=\"md\" class=\"mb-6 max-w-sm\">${this.error}</schmancy-typography>\n\t\t\t\t\t<schmancy-button variant=\"filled\" @click=${() => window.location.reload()}>Retry</schmancy-button>\n\t\t\t\t</div>\n\t\t\t`\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"relative w-full h-full bg-black overflow-hidden rounded-xl\">\n\t\t\t\t<!-- Video Stream -->\n\t\t\t\t<video id=\"video\" class=\"absolute inset-0 w-full h-full object-cover\" autoplay muted playsinline></video>\n\n\t\t\t\t<!-- Success Flash -->\n\t\t\t\t${when(this.showSuccess, () => html`<div class=\"absolute inset-0 bg-green-400/30 pointer-events-none\"></div>`)}\n\n\t\t\t\t<!-- Minimal corner brackets - Apple style -->\n\t\t\t\t<div class=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[250px] h-[250px] pointer-events-none animate-pulse\">\n\t\t\t\t\t<!-- Top-left corner -->\n\t\t\t\t\t<div class=\"absolute top-0 left-0 w-12 h-12 border-t-4 border-l-4 border-white rounded-tl-2xl\"></div>\n\t\t\t\t\t<!-- Top-right corner -->\n\t\t\t\t\t<div class=\"absolute top-0 right-0 w-12 h-12 border-t-4 border-r-4 border-white rounded-tr-2xl\"></div>\n\t\t\t\t\t<!-- Bottom-left corner -->\n\t\t\t\t\t<div class=\"absolute bottom-0 left-0 w-12 h-12 border-b-4 border-l-4 border-white rounded-bl-2xl\"></div>\n\t\t\t\t\t<!-- Bottom-right corner -->\n\t\t\t\t\t<div class=\"absolute bottom-0 right-0 w-12 h-12 border-b-4 border-r-4 border-white rounded-br-2xl\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-qr-scanner': SchmancyQRScanner\n\t}\n}\n"],"mappings":"gWAcO,IAAA,EAAA,cAAgC,EAAA,EAAY,EAAA,GAAG;;;;;;;kDAQX,EAAA,KAAA,cAAA,CAET,EAAA,KAAA,MACR,GAAA,KAAA,YAAA,CACM,EAAA,KAAA,OAEM,KAAA,KAAA,SAClB,IAAI,EAAA,QAAA,KAAA,aACyB,KAEhD,mBAAA,CACC,MAAM,mBAAA,CACN,KAAK,aAAA,CAGN,MAAA,aAAc,CACb,GAAA,CACC,IAAM,EAAsC,CAC3C,MAAO,CACN,WAAY,cACZ,MAAO,CAAE,MAAO,KAAA,CAChB,OAAQ,CAAE,MAAO,IAAA,CAAA,CAAA,CAInB,KAAK,OAAA,MAAe,UAAU,aAAa,aAAa,EAAA,CACxD,KAAK,cAAA,CAAgB,EACrB,KAAK,MAAQ,GAAA,MAEP,KAAK,eAEX,KAAK,aAAe,KAAK,YAAY,cAAc,SAAA,CAC/C,KAAK,eACR,KAAK,aAAa,UAAY,KAAK,OAAA,MAC7B,KAAK,aAAa,MAAA,CACxB,KAAK,eAAA,OAEE,CAER,KAAK,cAAA,CAAgB,EACrB,KAAK,MAAQ,yFAIf,YAAA,CACC,KAAK,SAAS,MAAA,CAEV,AAEH,KAAK,UADL,KAAK,OAAO,WAAA,CAAY,QAAQ,GAAS,EAAM,MAAA,CAAA,CACjC,MAGX,AAEH,KAAK,gBADL,KAAK,aAAa,UAAY,KACV,MAGrB,KAAK,cAAA,CAAgB,EACrB,KAAK,MAAQ,GACb,KAAK,YAAA,CAAc,EAGpB,eAAA,CACM,KAAK,cAAiB,KAAK,gBAIhC,EAAA,EAAA,kBAAA,CACE,MAAA,EAAA,EAAA,SACU,KAAK,WAAA,CAAA,EAAY,EAAA,EAAA,QACnB,GAAmC,IAAW,KAAX,EAAgB,EAAA,EAAA,uBACrC,EAAM,IACvB,EAAK,OAAS,EAAK,MAChB,EAAK,UAAY,EAAK,UAAY,IAAA,EACxC,EAAA,EAAA,cACW,IAAA,EAAI,EAAA,EAAA,WACP,KAAK,SAAA,CAAA,CAEf,UAAU,CACV,KAAM,GAAU,KAAK,iBAAiB,EAAA,CACtC,MAAO,GAAA,GAAA,CAAA,CAMV,WAAA,CACC,GAAA,CAAK,KAAK,cAAgB,KAAK,aAAa,aAAe,iBAAiB,iBAC3E,OAAO,KAGR,GAAA,CACC,IAAM,EAAS,SAAS,cAAc,SAAA,CACtC,EAAO,MAAQ,KAAK,aAAa,WACjC,EAAO,OAAS,KAAK,aAAa,YAElC,IAAM,EAAM,EAAO,WAAW,KAAA,CAC9B,GAAA,CAAK,EAAK,OAAO,KAEjB,EAAI,UAAU,KAAK,aAAc,EAAG,EAAA,CACpC,IAAM,EAAY,EAAI,aAAa,EAAG,EAAG,EAAO,MAAO,EAAO,OAAA,CAExD,GAAA,EAAA,EAAA,SAAY,EAAU,KAAM,EAAU,MAAO,EAAU,OAAA,CAE7D,GAAI,GAAQ,EAAK,KAChB,MAAO,CACN,KAAM,EAAK,KACX,UAAW,KAAK,KAAA,CAAA,MAGV,EAIT,OAAO,KAGR,iBAAyB,EAAA,CACxB,KAAK,kBAAA,CAGD,UAAU,SACb,UAAU,QAAQ,CAAC,IAAK,GAAI,IAAA,CAAA,CAI7B,KAAK,kBAAA,CAGL,KAAK,cACJ,IAAI,YAAY,cAAe,CAC9B,OAAQ,CAAE,KAAM,EAAO,KAAM,UAAW,EAAO,UAAA,CAC/C,QAAA,CAAS,EACT,SAAA,CAAU,EAAA,CAAA,CAAA,CAMb,kBAAA,CACC,KAAK,YAAA,CAAc,GACnB,EAAA,EAAA,OAAM,IAAA,CACJ,MAAA,EAAA,EAAA,WAAe,KAAK,SAAA,CAAA,CACpB,cAAA,CACA,KAAK,YAAA,CAAc,GAAA,CAItB,kBAAA,CACC,GAAA,CAEC,IAAM,EAAe,IADK,OAAO,cAAiB,OAAkE,oBAE9G,EAAa,EAAa,kBAAA,CAC1B,EAAW,EAAa,YAAA,CAE9B,EAAW,QAAQ,EAAA,CACnB,EAAS,QAAQ,EAAa,YAAA,CAE9B,EAAW,UAAU,eAAe,IAAK,EAAa,YAAA,CACtD,EAAW,UAAU,eAAe,IAAM,EAAa,YAAc,GAAA,CAErE,EAAS,KAAK,eAAe,GAAK,EAAa,YAAA,CAC/C,EAAS,KAAK,6BAA6B,IAAM,EAAa,YAAc,GAAA,CAE5E,EAAW,MAAM,EAAa,YAAA,CAC9B,EAAW,KAAK,EAAa,YAAc,GAAA,MAAA,GAM7C,sBAAA,CACC,MAAM,sBAAA,CACN,KAAK,YAAA,CACL,KAAK,SAAS,UAAA,CAGf,QAAA,CACC,OAAI,KAAK,MACD,EAAA,IAAI;;;;yEAI2D,KAAK,MAAA;oDACxB,OAAO,SAAS,QAAA,CAAA;;KAK7D,EAAA,IAAI;;;;;;iBAMF,KAAK,gBAAmB,EAAA,IAAI,2EAAA,CAAA;;;;;;;;;;;;;;0BAnM5B,CAAE,KAAM,QAAA,CAAA,CAAA,CAAU,EAAA,UAAA,aAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,CAAA,CAEpB,EAAA,UAAA,gBAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,CAAA,CACA,EAAA,UAAA,QAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,CAAA,CACA,EAAA,UAAA,cAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eAbM,sBAAA,CAAA,CAAsB,EAAA,CAAA,OAAA,eAAA,QAAA,oBAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"qr-scanner.cjs","names":[],"sources":["../src/qr-scanner/qr-scanner.ts"],"sourcesContent":["import { $LitElement } from '@mixins/litElement.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { animationFrames, Subject, timer } from 'rxjs'\nimport { distinctUntilChanged, filter, map, takeUntil, throttleTime } from 'rxjs/operators'\n\n// jsQR (~53 KB gzipped) is loaded lazily the first time a camera stream\n// is attached — see ADR 0014. Until this resolves, scanFrame() returns\n// null and no decode happens, so the animationFrames loop spins harmlessly.\ntype JsQR = typeof import('jsqr').default\nlet jsQRFn: JsQR | null = null\nlet jsQRPromise: Promise<JsQR> | null = null\nfunction loadJsQR(): Promise<JsQR> {\n\tif (jsQRPromise) return jsQRPromise\n\tjsQRPromise = import('jsqr').then(m => {\n\t\tjsQRFn = m.default\n\t\treturn m.default\n\t})\n\treturn jsQRPromise\n}\n\ninterface QRScanResult {\n\tdata: string\n\ttimestamp: number\n}\n\n@customElement('schmancy-qr-scanner')\nexport class SchmancyQRScanner extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmin-height: 300px;\n\t}\n`) {\n\t@property({ type: Boolean }) continuous = true\n\n\t@state() private hasPermission = false\n\t@state() private error = ''\n\t@state() private showSuccess = false\n\n\tprivate stream: MediaStream | null = null\n\tprivate destroy$ = new Subject<void>()\n\tprivate videoElement: HTMLVideoElement | null = null\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.startCamera()\n\t}\n\n\tprivate async startCamera(): Promise<void> {\n\t\ttry {\n\t\t\tconst constraints: MediaStreamConstraints = {\n\t\t\t\tvideo: {\n\t\t\t\t\tfacingMode: 'environment',\n\t\t\t\t\twidth: { ideal: 1280 },\n\t\t\t\t\theight: { ideal: 720 },\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tthis.stream = await navigator.mediaDevices.getUserMedia(constraints)\n\t\t\tthis.hasPermission = true\n\t\t\tthis.error = ''\n\n\t\t\tawait this.updateComplete\n\n\t\t\tthis.videoElement = this.shadowRoot?.querySelector('#video') as HTMLVideoElement\n\t\t\tif (this.videoElement) {\n\t\t\t\tthis.videoElement.srcObject = this.stream\n\t\t\t\tawait this.videoElement.play()\n\t\t\t\t// Preload jsQR before starting the animationFrames loop so the\n\t\t\t\t// first few frames have the decoder available. If the fetch\n\t\t\t\t// hasn't finished by the time a frame fires, scanFrame() just\n\t\t\t\t// returns null for that tick — no decode, no error.\n\t\t\t\tawait loadJsQR()\n\t\t\t\tif (!this.isConnected) return\n\t\t\t\tthis.startScanning()\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('Camera access denied:', error)\n\t\t\tthis.hasPermission = false\n\t\t\tthis.error = 'Camera access is required to scan QR codes. Please allow camera access and try again.'\n\t\t}\n\t}\n\n\tprivate stopCamera(): void {\n\t\tthis.destroy$.next()\n\n\t\tif (this.stream) {\n\t\t\tthis.stream.getTracks().forEach(track => track.stop())\n\t\t\tthis.stream = null\n\t\t}\n\n\t\tif (this.videoElement) {\n\t\t\tthis.videoElement.srcObject = null\n\t\t\tthis.videoElement = null\n\t\t}\n\n\t\tthis.hasPermission = false\n\t\tthis.error = ''\n\t\tthis.showSuccess = false\n\t}\n\n\tprivate startScanning(): void {\n\t\tif (!this.videoElement || !this.hasPermission) {\n\t\t\treturn\n\t\t}\n\n\t\tanimationFrames()\n\t\t\t.pipe(\n\t\t\t\tmap(() => this.scanFrame()),\n\t\t\t\tfilter((result): result is QRScanResult => result !== null),\n\t\t\t\tdistinctUntilChanged((prev, curr) => {\n\t\t\t\t\tif (prev.data !== curr.data) return false\n\t\t\t\t\treturn curr.timestamp - prev.timestamp < 2000\n\t\t\t\t}),\n\t\t\t\tthrottleTime(500),\n\t\t\t\ttakeUntil(this.destroy$),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: result => this.handleScanResult(result),\n\t\t\t\terror: error => {\n\t\t\t\t\tconsole.error('Scanning error:', error)\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tprivate scanFrame(): QRScanResult | null {\n\t\tif (!this.videoElement || this.videoElement.readyState !== HTMLMediaElement.HAVE_ENOUGH_DATA) {\n\t\t\treturn null\n\t\t}\n\n\t\ttry {\n\t\t\tconst canvas = document.createElement('canvas')\n\t\t\tcanvas.width = this.videoElement.videoWidth\n\t\t\tcanvas.height = this.videoElement.videoHeight\n\n\t\t\tconst ctx = canvas.getContext('2d')\n\t\t\tif (!ctx) return null\n\n\t\t\tctx.drawImage(this.videoElement, 0, 0)\n\t\t\tconst imageData = ctx.getImageData(0, 0, canvas.width, canvas.height)\n\n\t\t\t// Skip this frame if jsQR hasn't resolved yet — startCamera awaits\n\t\t\t// loadJsQR() before this path runs, so in practice jsQRFn is\n\t\t\t// always set here. Keeping the guard for safety during racy\n\t\t\t// disconnects.\n\t\t\tif (!jsQRFn) return null\n\t\t\tconst code = jsQRFn(imageData.data, imageData.width, imageData.height)\n\n\t\t\tif (code && code.data) {\n\t\t\t\treturn {\n\t\t\t\t\tdata: code.data,\n\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('Frame scan error:', error)\n\t\t}\n\n\t\treturn null\n\t}\n\n\tprivate handleScanResult(result: QRScanResult): void {\n\t\tthis.showSuccessFlash()\n\n\t\t// Haptic feedback if available\n\t\tif (navigator.vibrate) {\n\t\t\tnavigator.vibrate([100, 50, 100])\n\t\t}\n\n\t\t// Audio feedback\n\t\tthis.playSuccessSound()\n\n\t\t// Dispatch scan result\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('scan-result', {\n\t\t\t\tdetail: { data: result.data, timestamp: result.timestamp },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\n\t}\n\n\tprivate showSuccessFlash(): void {\n\t\tthis.showSuccess = true\n\t\ttimer(500)\n\t\t\t.pipe(takeUntil(this.destroy$))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showSuccess = false\n\t\t\t})\n\t}\n\n\tprivate playSuccessSound(): void {\n\t\ttry {\n\t\t\tconst AudioContextClass = window.AudioContext || (window as unknown as { webkitAudioContext: typeof AudioContext }).webkitAudioContext\n\t\t\tconst audioContext = new AudioContextClass()\n\t\t\tconst oscillator = audioContext.createOscillator()\n\t\t\tconst gainNode = audioContext.createGain()\n\n\t\t\toscillator.connect(gainNode)\n\t\t\tgainNode.connect(audioContext.destination)\n\n\t\t\toscillator.frequency.setValueAtTime(800, audioContext.currentTime)\n\t\t\toscillator.frequency.setValueAtTime(1000, audioContext.currentTime + 0.1)\n\n\t\t\tgainNode.gain.setValueAtTime(0.3, audioContext.currentTime)\n\t\t\tgainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.2)\n\n\t\t\toscillator.start(audioContext.currentTime)\n\t\t\toscillator.stop(audioContext.currentTime + 0.2)\n\t\t} catch {\n\t\t\t// Audio feedback failed silently\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.stopCamera()\n\t\tthis.destroy$.complete()\n\t}\n\n\trender() {\n\t\tif (this.error) {\n\t\t\treturn html`\n\t\t\t\t<div class=\"w-full h-full flex flex-col items-center justify-center bg-black text-white text-center p-5\">\n\t\t\t\t\t<schmancy-icon size=\"64\" class=\"mb-4\">camera_alt</schmancy-icon>\n\t\t\t\t\t<schmancy-typography type=\"headline\" token=\"md\" class=\"mb-4\">Camera Permission Required</schmancy-typography>\n\t\t\t\t\t<schmancy-typography type=\"body\" token=\"md\" class=\"mb-6 max-w-sm\">${this.error}</schmancy-typography>\n\t\t\t\t\t<schmancy-button variant=\"filled\" @click=${() => window.location.reload()}>Retry</schmancy-button>\n\t\t\t\t</div>\n\t\t\t`\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"relative w-full h-full bg-black overflow-hidden rounded-xl\">\n\t\t\t\t<!-- Video Stream -->\n\t\t\t\t<video id=\"video\" class=\"absolute inset-0 w-full h-full object-cover\" autoplay muted playsinline></video>\n\n\t\t\t\t<!-- Success Flash -->\n\t\t\t\t${when(this.showSuccess, () => html`<div class=\"absolute inset-0 bg-green-400/30 pointer-events-none\"></div>`)}\n\n\t\t\t\t<!-- Minimal corner brackets - Apple style -->\n\t\t\t\t<div class=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[250px] h-[250px] pointer-events-none animate-pulse\">\n\t\t\t\t\t<!-- Top-left corner -->\n\t\t\t\t\t<div class=\"absolute top-0 left-0 w-12 h-12 border-t-4 border-l-4 border-white rounded-tl-2xl\"></div>\n\t\t\t\t\t<!-- Top-right corner -->\n\t\t\t\t\t<div class=\"absolute top-0 right-0 w-12 h-12 border-t-4 border-r-4 border-white rounded-tr-2xl\"></div>\n\t\t\t\t\t<!-- Bottom-left corner -->\n\t\t\t\t\t<div class=\"absolute bottom-0 left-0 w-12 h-12 border-b-4 border-l-4 border-white rounded-bl-2xl\"></div>\n\t\t\t\t\t<!-- Bottom-right corner -->\n\t\t\t\t\t<div class=\"absolute bottom-0 right-0 w-12 h-12 border-b-4 border-r-4 border-white rounded-br-2xl\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-qr-scanner': SchmancyQRScanner\n\t}\n}\n"],"mappings":"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"}
|