@mhmo91/schmancy 0.2.124 → 0.2.126
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/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +3 -3
- package/dist/{input-zurP-q79.cjs → input-BDvmjqzB.cjs} +2 -2
- package/dist/input-BDvmjqzB.cjs.map +1 -0
- package/dist/{input-D_AQKXGk.js → input-BwUKlNLv.js} +2 -2
- package/dist/input-BwUKlNLv.js.map +1 -0
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/{select-CGse8Q3B.js → select-BqN9V7cw.js} +2 -2
- package/dist/select-BqN9V7cw.js.map +1 -0
- package/dist/{select-dLquQtbc.cjs → select-DUqzjckq.cjs} +2 -2
- package/dist/select-DUqzjckq.cjs.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/{teleport.component-C_knyoRs.cjs → teleport.component-Cmbvbylw.cjs} +2 -2
- package/dist/{teleport.component-C_knyoRs.cjs.map → teleport.component-Cmbvbylw.cjs.map} +1 -1
- package/dist/{teleport.component-2l2kxZdX.js → teleport.component-CrOAEYhZ.js} +3 -3
- package/dist/{teleport.component-2l2kxZdX.js.map → teleport.component-CrOAEYhZ.js.map} +1 -1
- package/dist/teleport.js +1 -1
- package/package.json +1 -1
- package/dist/input-D_AQKXGk.js.map +0 -1
- package/dist/input-zurP-q79.cjs.map +0 -1
- package/dist/select-CGse8Q3B.js.map +0 -1
- package/dist/select-dLquQtbc.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teleport.component-2l2kxZdX.js","sources":["../src/card/actions.ts","../src/card/card.ts","../src/card/content.ts","../src/card/media.ts","../src/content-drawer/$sheet.ts","../src/content-drawer/context.ts","../src/content-drawer/drawer.ts","../src/content-drawer/main.ts","../src/content-drawer/sheet.ts","../src/nav-drawer/$navbar.ts","../src/nav-drawer/context.ts","../src/nav-drawer/appbar.ts","../src/nav-drawer/content.ts","../src/nav-drawer/drawer.ts","../src/nav-drawer/navbar.ts","../src/teleport/teleport.service.ts","../src/teleport/watcher.ts","../src/teleport/teleport.component.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n/**\n * @element schmancy-card-action\n * @slot - The content of the action\n */\n@customElement('schmancy-card-action')\nexport default class SchmancyCardMedia extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\tprotected render(): unknown {\n\t\treturn html` <section class=\"pb-4 px-4\"><slot> </slot></section> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card-action': SchmancyCardMedia\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('schmancy-card')\nexport default class SchmancyCard extends TailwindElement() {\n\t@property() type: 'elevated' | 'filled' | 'outlined' = 'elevated'\n\t@property({ type: Number }) elevation: 0 | 1 | 2 | 3 | 4 | 5 = 0\n\tprotected render(): unknown {\n\t\tconst classes = {\n\t\t\t'rounded-md': true,\n\t\t\t'shadow-xs': this.elevation === 1,\n\t\t\t'shadow-sm': this.elevation === 2,\n\t\t\t'shadow-md': this.elevation === 3,\n\t\t\t'shadow-lg': this.elevation === 4,\n\t\t\t'shadow-5': this.elevation === 5,\n\t\t\t'hover:shadow-xs': ['outlined', 'filled'].includes(this.type),\n\t\t\t'bg-surface-low shadow-xs hover:shadow-sm': this.type === 'elevated',\n\t\t\t'bg-surface-highest': this.type === 'filled',\n\t\t\t'bg-surface-default border border-solid border-1 border-outlineVariant': this.type === 'outlined',\n\t\t}\n\t\treturn html`<div class=\"${this.classMap(classes)}\">\n\t\t\t<slot> </slot>\n\t\t</div>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card': SchmancyCard\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { color } from '..'\n\n/**\n * @element schmancy-card-content\n * @slot headline\n * @slot subhead\n * @slot default - The content of the card\n */\n@customElement('schmancy-card-content')\nexport default class SchmancyCardContent extends TailwindElement() {\n\tprotected render(): unknown {\n\t\tconst classes = {\n\t\t\t'px-[16px] py-[24px]': true,\n\t\t}\n\t\tconst onSurface = SchmancyTheme.sys.color.surface.on\n\t\tconst onSurfaceVariant = SchmancyTheme.sys.color.surface.onVariant\n\t\treturn html`<schmancy-grid gap=\"md\" class=\"${this.classMap(classes)}\">\n\t\t\t<schmancy-grid gap=\"xs\">\n\t\t\t\t<schmancy-typography\n\t\t\t\t\t${color({\n\t\t\t\t\t\tcolor: onSurface,\n\t\t\t\t\t})}\n\t\t\t\t\ttype=\"body\"\n\t\t\t\t\ttoken=\"lg\"\n\t\t\t\t\t><slot name=\"headline\"> </slot\n\t\t\t\t></schmancy-typography>\n\t\t\t\t<schmancy-typography\n\t\t\t\t\t${color({\n\t\t\t\t\t\tcolor: onSurfaceVariant,\n\t\t\t\t\t})}\n\t\t\t\t\ttype=\"body\"\n\t\t\t\t\t><slot name=\"subhead\"></slot>\n\t\t\t\t</schmancy-typography>\n\t\t\t</schmancy-grid>\n\t\t\t<schmancy-typography\n\t\t\t\ttype=\"body\"\n\t\t\t\t${color({\n\t\t\t\t\tcolor: onSurfaceVariant,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-typography>\n\t\t</schmancy-grid>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card-content': SchmancyCardContent\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n/**\n * @element schmancy-card-media\n */\n@customElement('schmancy-card-media')\nexport default class SchmancyCardMedia extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\t@property({ type: String, reflect: true })\n\tsrc: string = ''\n\n\t@property({ type: String })\n\tfit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down' = 'contain'\n\n\tprotected render(): unknown {\n\t\tconst styles = {\n\t\t\theight: '200px',\n\t\t}\n\t\tconst classes = {\n\t\t\t'object-center': true,\n\t\t\t'object-contain': this.fit === 'contain',\n\t\t\t'object-cover w-full': this.fit === 'cover',\n\t\t\t'object-fill': this.fit === 'fill',\n\t\t\t'object-none': this.fit === 'none',\n\t\t\t'object-scale-down': this.fit === 'scale-down',\n\t\t}\n\t\treturn html`<schmancy-grid align=\"stretch\" justify=\"stretch\" gap=\"md\">\n\t\t\t<img src=\"${this.src}\" style=${this.styleMap(styles)} class=\"${this.classMap(classes)}\" />\n\t\t</schmancy-grid>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card-media': SchmancyCardMedia\n\t}\n}\n","import { SchmancyEvents } from '@schmancy/types/events'\nimport { Subject } from 'rxjs'\n\ntype DrawerAction = 'dismiss' | 'render'\ntype TRef = Element | Window\ntype TRenderRequest = HTMLElement\nexport type TRenderCustomEvent = CustomEvent<{\n\tcomponent: TRenderRequest\n\ttitle?: string\n}>\nclass Drawer {\n\tprivate $drawer = new Subject<{\n\t\tref: TRef\n\t\taction: DrawerAction\n\t\tcomponent?: TRenderRequest\n\t\ttitle?: string\n\t}>()\n\tconstructor() {\n\t\tthis.$drawer.pipe().subscribe(data => {\n\t\t\tif (data.action === 'dismiss') {\n\t\t\t\tdata.ref.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.ContentDrawerToggle, {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tstate: 'close',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t} else if (data.action === 'render') {\n\t\t\t\tdata.ref.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.ContentDrawerToggle, {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tstate: 'open',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\tdata.ref.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('schmancy-content-drawer-render', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tcomponent: data.component,\n\t\t\t\t\t\t\ttitle: data.title,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n\n\tdimiss(ref: TRef) {\n\t\tthis.$drawer.next({\n\t\t\taction: 'dismiss',\n\t\t\tref: ref,\n\t\t})\n\t}\n\n\trender(ref: TRef, component: TRenderRequest, title?: string) {\n\t\tref.dispatchEvent(new CustomEvent('custom-event'))\n\t\tthis.$drawer.next({\n\t\t\taction: 'render',\n\t\t\tref: ref,\n\t\t\tcomponent: component,\n\t\t\ttitle,\n\t\t})\n\t}\n}\n\nexport const schmancyContentDrawer = new Drawer()\n","import { createContext } from '@lit/context'\nexport type TSchmancyContentDrawerSheetMode = 'push' | 'overlay'\nexport const SchmancyContentDrawerSheetMode = createContext<TSchmancyContentDrawerSheetMode>('push')\n\nexport type TSchmancyContentDrawerSheetState = 'open' | 'close'\nexport const SchmancyContentDrawerSheetState = createContext<TSchmancyContentDrawerSheetState>('close')\n\nexport const SchmancyContentDrawerID = createContext<string>(Math.floor(Math.random() * Date.now()).toString())\nexport const SchmancyContentDrawerMaxHeight = createContext<string>('100%')\nexport const SchmancyContentDrawerMinWidth = createContext<{\n\tmain: number\n\tsheet: number\n}>({})\n","import { provide } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js'\nimport { debounceTime, distinctUntilChanged, fromEvent, map, merge, startWith, takeUntil, tap } from 'rxjs'\nimport { SchmancyEvents, TRenderCustomEvent, area, sheet } from '..'\nimport {\n\tSchmancyContentDrawerID,\n\tSchmancyContentDrawerMaxHeight,\n\tSchmancyContentDrawerMinWidth,\n\tSchmancyContentDrawerSheetMode,\n\tSchmancyContentDrawerSheetState,\n\tTSchmancyContentDrawerSheetMode,\n\tTSchmancyContentDrawerSheetState,\n} from './context'\n\n/**\n * @element schmancy-content-drawer\n * @slot appbar - The appbar slot\n * @slot - The content slot\n */\n@customElement('schmancy-content-drawer')\nexport class SchmancyContentDrawer extends $LitElement(css`\n\t:host {\n\t\tposition: relative;\n\t\tinset: 0;\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\n`) {\n\t/**\n\t * The minimum width of the sheet\n\t * @attr\tminWidth\n\t * @type {number}\n\t * @memberof SchmancyContentDrawer\n\t */\n\n\t@provide({ context: SchmancyContentDrawerMinWidth })\n\tminWidth: typeof SchmancyContentDrawerMinWidth.__context__ = {\n\t\tmain: 360,\n\t\tsheet: 576,\n\t}\n\n\t/**\n\t * The state of the sheet\n\t * @attr open\n\t * @type {TSchmancyContentDrawerSheetState}\n\t */\n\t@provide({ context: SchmancyContentDrawerSheetState })\n\t@property()\n\topen: TSchmancyContentDrawerSheetState\n\n\t/**\n\t * The mode of the sheet\n\t * @type {TSchmancyContentDrawerSheetMode}\n\t * @memberof SchmancyContentDrawer\n\t * @protected\n\t */\n\t@provide({ context: SchmancyContentDrawerSheetMode })\n\t@state()\n\tmode: TSchmancyContentDrawerSheetMode\n\n\t@provide({ context: SchmancyContentDrawerID })\n\tschmancyContentDrawerID = Math.floor(Math.random() * Date.now()).toString()\n\n\t@provide({ context: SchmancyContentDrawerMaxHeight })\n\tmaxHeight = '100%'\n\n\t@queryAssignedElements({ flatten: true })\n\tassignedElements!: HTMLElement[]\n\tfirstUpdated(): void {\n\t\tmerge(fromEvent<CustomEvent>(window, 'resize'), fromEvent<CustomEvent>(window, SchmancyEvents.ContentDrawerResize))\n\t\t\t.pipe(\n\t\t\t\tstartWith(true),\n\t\t\t\ttap(() => console.log(this.minWidth)),\n\t\t\t\tmap(() => (this.clientWidth ? this.clientWidth : window.innerWidth)),\n\t\t\t\tmap(width => width >= this.minWidth.main + this.minWidth.sheet),\n\t\t\t\tdebounceTime(100),\n\t\t\t\ttap(() => {\n\t\t\t\t\tthis.maxHeight = `${window.innerHeight - this.getOffsetTop(this) - 32}px`\n\t\t\t\t\tthis.style.setProperty('max-height', this.maxHeight)\n\t\t\t\t}),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(lgScreen => {\n\t\t\t\tif (lgScreen) {\n\t\t\t\t\tthis.mode = 'push'\n\t\t\t\t\tthis.open = 'open'\n\t\t\t\t} else {\n\t\t\t\t\tthis.mode = 'overlay'\n\t\t\t\t\tthis.open = 'close'\n\t\t\t\t}\n\t\t\t})\n\n\t\t/*\n\t\t * Listen to the toggle event\n\t\t */\n\t\tfromEvent<CustomEvent>(window, SchmancyEvents.ContentDrawerToggle)\n\t\t\t.pipe(\n\t\t\t\ttap(event => {\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap(event => event.detail.state),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(state => {\n\t\t\t\tthis.open = state\n\t\t\t})\n\n\t\tfromEvent<TRenderCustomEvent>(window, 'schmancy-content-drawer-render')\n\t\t\t.pipe(\n\t\t\t\ttap(event => {\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap(event => event.detail),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(({ component, title }) => {\n\t\t\t\tif (this.mode === 'push') {\n\t\t\t\t\t// TODO: Fix the router to render if constructor has different arguments\n\t\t\t\t\tarea.push({\n\t\t\t\t\t\tarea: this.schmancyContentDrawerID,\n\t\t\t\t\t\tcomponent: 'empty',\n\t\t\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\t\t})\n\t\t\t\t\tarea.push({\n\t\t\t\t\t\tarea: this.schmancyContentDrawerID,\n\t\t\t\t\t\tcomponent: component,\n\t\t\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\t\t})\n\t\t\t\t} else if ((this.mode = 'overlay')) {\n\t\t\t\t\tsheet.open({ component: component, uid: this.schmancyContentDrawerID, title })\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\tgetOffsetTop(element) {\n\t\tlet offsetTop = 0\n\t\twhile (element) {\n\t\t\toffsetTop += element.offsetTop\n\t\t\telement = element.offsetParent\n\t\t}\n\t\treturn offsetTop\n\t}\n\n\tprotected render() {\n\t\tif (!this.mode || !this.open) return nothing\n\t\treturn html`\n\t\t\t<schmancy-grid\n\t\t\t\tcols=${this.mode === 'overlay' ? '1fr' : 'auto 1fr'}\n\t\t\t\trows=\"1fr\"\n\t\t\t\tflow=\"col\"\n\t\t\t\tjustify=\"stretch\"\n\t\t\t\talign=\"stretch\"\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-grid>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-content-drawer': SchmancyContentDrawer\n\t}\n}\n","import { consume } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { PropertyValueMap, css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { SchmancyEvents } from '..'\nimport {\n\tSchmancyContentDrawerMaxHeight,\n\tSchmancyContentDrawerMinWidth,\n\tSchmancyContentDrawerSheetMode,\n\tTSchmancyContentDrawerSheetMode,\n} from './context'\nimport { when } from 'lit/directives/when.js'\n\n@customElement('schmancy-content-drawer-main')\nexport class SchmancyContentDrawerMain extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\n`) {\n\t@property({ type: Number })\n\tminWidth\n\n\t@consume({ context: SchmancyContentDrawerMinWidth, subscribe: true })\n\tdrawerMinWidth: typeof SchmancyContentDrawerMinWidth.__context__\n\n\t@consume({ context: SchmancyContentDrawerSheetMode, subscribe: true })\n\t@state()\n\tmode: TSchmancyContentDrawerSheetMode\n\n\t@consume({ context: SchmancyContentDrawerMaxHeight, subscribe: true })\n\t@state()\n\tmaxHeight\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tif (this.minWidth) this.drawerMinWidth.main = this.minWidth\n\t\telse this.minWidth = this.drawerMinWidth.main\n\t}\n\n\tprotected update(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\n\t\tsuper.update(changedProperties)\n\t\tif (changedProperties.has('minWidth') && this.minWidth) {\n\t\t\tthis.drawerMinWidth.main = this.minWidth\n\t\t\tthis.dispatchEvent(new CustomEvent(SchmancyEvents.ContentDrawerResize, { bubbles: true, composed: true }))\n\t\t}\n\t}\n\n\trender() {\n\t\tconst styles = {\n\t\t\tminWidth: `${this.minWidth}px`,\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\t\treturn html`\n\t\t\t<section class=\"relative inset-0 h-full\">\n\t\t\t\t<schmancy-grid\n\t\t\t\t\tclass=\"h-full relative overflow-scroll\"\n\t\t\t\t\tcols=\"${this.mode === 'push' ? 'auto 1fr' : '1fr'}\"\n\t\t\t\t\trows=\"1fr\"\n\t\t\t\t\tflow=\"col\"\n\t\t\t\t\talign=\"stretch\"\n\t\t\t\t\tjustify=\"stretch\"\n\t\t\t\t>\n\t\t\t\t\t<section style=${this.styleMap(styles)}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</section>\n\t\t\t\t</schmancy-grid>\n\t\t\t\t${when(\n\t\t\t\t\tthis.mode === 'push',\n\t\t\t\t\t() => html` <schmancy-divider class=\"absolute right-0 top-0\" orientation=\"vertical\"></schmancy-divider>`,\n\t\t\t\t)}\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-content-drawer-main': SchmancyContentDrawerMain\n\t}\n}\n","import { consume } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { from, merge, Observable, of, takeUntil, tap } from 'rxjs'\nimport { SchmancyEvents, sheet } from '..'\nimport {\n\tSchmancyContentDrawerID,\n\tSchmancyContentDrawerMaxHeight,\n\tSchmancyContentDrawerMinWidth,\n\tSchmancyContentDrawerSheetMode,\n\tSchmancyContentDrawerSheetState,\n\tTSchmancyContentDrawerSheetMode,\n\tTSchmancyContentDrawerSheetState,\n} from './context'\n\n// --- 1) Removed the custom animate import\n// import { animate } from '@packages/anime-beta-master'\n\n@customElement('schmancy-content-drawer-sheet')\nexport class SchmancyContentDrawerSheet extends $LitElement(css`\n\t:host {\n\t\toverflow: scroll;\n\t}\n`) {\n\t@property({ type: Number })\n\tminWidth\n\n\t@consume({ context: SchmancyContentDrawerSheetMode, subscribe: true })\n\t@state()\n\tmode: TSchmancyContentDrawerSheetMode\n\n\t@consume({ context: SchmancyContentDrawerSheetState, subscribe: true })\n\t@state()\n\tstate: TSchmancyContentDrawerSheetState\n\n\t@consume({ context: SchmancyContentDrawerID })\n\tschmancyContentDrawerID\n\n\t@query('#sheet') sheet!: HTMLElement\n\t@queryAssignedElements({ flatten: true, slot: undefined }) defaultSlot!: HTMLElement[]\n\n\t@consume({ context: SchmancyContentDrawerMinWidth, subscribe: true })\n\tdrawerMinWidth: typeof SchmancyContentDrawerMinWidth.__context__\n\n\t@consume({ context: SchmancyContentDrawerMaxHeight, subscribe: true })\n\t@state()\n\tmaxHeight\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tif (this.minWidth) {\n\t\t\tthis.drawerMinWidth.sheet = this.minWidth\n\t\t} else {\n\t\t\tthis.minWidth = this.drawerMinWidth.sheet\n\t\t}\n\t}\n\n\tupdated(changedProperties: Map<string, any>) {\n\t\tsuper.updated(changedProperties)\n\t\tif (changedProperties.has('minWidth') && this.minWidth) {\n\t\t\t// If the 'minWidth' property changed\n\t\t\tthis.drawerMinWidth.sheet = this.minWidth\n\t\t\tthis.dispatchEvent(new CustomEvent(SchmancyEvents.ContentDrawerResize, { bubbles: true, composed: true }))\n\t\t} else if (changedProperties.has('state') || changedProperties.has('mode')) {\n\t\t\tif (this.mode === 'overlay') {\n\t\t\t\tif (this.state === 'close') {\n\t\t\t\t\tthis.closeAll()\n\t\t\t\t} else if (this.state === 'open') {\n\t\t\t\t\t// Overlay open logic if needed\n\t\t\t\t\t// this.open()\n\t\t\t\t}\n\t\t\t} else if (this.mode === 'push') {\n\t\t\t\tsheet.dismiss(this.schmancyContentDrawerID)\n\t\t\t\tif (this.state === 'close') {\n\t\t\t\t\tthis.closeAll()\n\t\t\t\t} else if (this.state === 'open') {\n\t\t\t\t\tthis.open()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Open the sheet by sliding it into view.\n\t */\n\topen() {\n\t\t// \"onBegin\" logic from the old `animate(...)`\n\t\tif (this.mode === 'overlay') {\n\t\t\tthis.sheet.style.position = 'fixed'\n\t\t} else {\n\t\t\tthis.sheet.style.position = 'relative'\n\t\t}\n\t\tthis.sheet.style.display = 'block'\n\n\t\t// --- 2) Use native Web Animations API ---\n\t\tthis.sheet.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 0, transform: 'translateX(100%)' },\n\t\t\t\t{ opacity: 1, transform: 'translateX(0%)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 500,\n\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t},\n\t\t)\n\t\t// No return is needed if you don't rely on the result\n\t}\n\n\t/**\n\t * Close everything (modal sheet + the sheet itself).\n\t */\n\tcloseAll() {\n\t\t// Merge them into a single subscription,\n\t\t// so that everything closes in parallel.\n\t\tmerge(from(this.closeModalSheet()), from(this.closeSheet())).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\t/**\n\t * Dismiss the \"modal sheet.\"\n\t * This just returns an Observable that completes immediately.\n\t */\n\tcloseModalSheet() {\n\t\treturn of(true).pipe(tap(() => sheet.dismiss(this.schmancyContentDrawerID)))\n\t}\n\n\t/**\n\t * Slide the sheet out of view + hide it.\n\t * Return an Observable so we can merge it with other close operations.\n\t */\n\tcloseSheet() {\n\t\t// --- 2) Use native Web Animations API and wrap in an Observable ---\n\t\treturn new Observable<void>(observer => {\n\t\t\tconst animation = this.sheet.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 1, transform: 'translateX(0%)' },\n\t\t\t\t\t{ opacity: 1, transform: 'translateX(100%)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 500,\n\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tanimation.onfinish = () => {\n\t\t\t\t// \"onComplete\" logic\n\t\t\t\tthis.sheet.style.display = 'none'\n\t\t\t\tobserver.next()\n\t\t\t\tobserver.complete()\n\t\t\t}\n\t\t})\n\t}\n\n\tprotected render() {\n\t\tconst sheetClasses = {\n\t\t\tblock: this.mode === 'push',\n\t\t\t'absolute z-50': this.mode === 'overlay',\n\t\t\t'opacity-1': this.mode === 'overlay' && this.state === 'open',\n\t\t}\n\n\t\tconst styles = {\n\t\t\tminWidth: `${this.minWidth}px`,\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\n\t\treturn html`\n\t\t\t<section id=\"sheet\" class=\"${this.classMap(sheetClasses)}\" style=${this.styleMap(styles)}>\n\t\t\t\t<schmancy-area name=\"${this.schmancyContentDrawerID}\">\n\t\t\t\t\t<slot name=\"placeholder\"></slot>\n\t\t\t\t</schmancy-area>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-content-drawer-sheet': SchmancyContentDrawerSheet\n\t}\n}\n","import { SchmancyEvents } from '@schmancy/types/events'\nimport { debounceTime, Subject } from 'rxjs'\n\nclass Drawer {\n\tprivate $drawer = new Subject<{\n\t\tself: HTMLElement\n\t\tstate: boolean\n\t}>()\n\tconstructor() {\n\t\tthis.$drawer.pipe(debounceTime(10)).subscribe(data => {\n\t\t\tif (data.state) {\n\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tstate: 'open',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tstate: 'close',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n\topen(self?: HTMLElement) {\n\t\tthis.$drawer.next({\n\t\t\tself,\n\t\t\tstate: true,\n\t\t})\n\t}\n\tclose(self?: HTMLElement) {\n\t\tthis.$drawer.next({\n\t\t\tself,\n\t\t\tstate: false,\n\t\t})\n\t}\n}\n\nexport const schmancyNavDrawer = new Drawer()\nconst $drawer = schmancyNavDrawer\n\nexport { $drawer }\n","import { createContext } from '@lit/context'\nexport type TSchmancyDrawerNavbarMode = 'push' | 'overlay' | undefined\nexport const SchmancyDrawerNavbarMode = createContext<TSchmancyDrawerNavbarMode>('push')\n\nexport type TSchmancyDrawerNavbarState = 'open' | 'close' | undefined\nexport const SchmancyDrawerNavbarState = createContext<TSchmancyDrawerNavbarState>('close')\n","import { consume } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport {\n\tSchmancyDrawerNavbarMode,\n\tSchmancyDrawerNavbarState,\n\tTSchmancyDrawerNavbarMode,\n} from '@schmancy/nav-drawer/context'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { SchmancyEvents } from '..'\n\n/**\n * @element schmancy-nav-drawer-appbar\n * @slot toggler - The toggler slot\n * @slot - The default slot\n */\n@customElement('schmancy-nav-drawer-appbar')\nexport class SchmancyDrawerAppbar extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\t@consume({ context: SchmancyDrawerNavbarMode, subscribe: true })\n\t@state()\n\tsidebarMode: TSchmancyDrawerNavbarMode\n\n\t@consume({ context: SchmancyDrawerNavbarState, subscribe: true })\n\t@state()\n\tsidebarOpen\n\n\t@property({ type: Boolean }) toggler = true\n\n\trender() {\n\t\tconst appbarClasses = {\n\t\t\t'block z-50': true,\n\t\t}\n\t\tconst sidebarToggler = {\n\t\t\t'block left-3 z-50': this.sidebarMode === 'overlay',\n\t\t\thidden: this.sidebarMode === 'push',\n\t\t}\n\t\treturn html`\n\t\t\t<schmancy-grid\n\t\t\t\tcols=${this.sidebarMode === 'overlay' && this.toggler ? 'auto 1fr' : '1fr'}\n\t\t\t\tflow=\"col\"\n\t\t\t\tclass=${this.classMap(appbarClasses)}\n\t\t\t\tgap=\"sm\"\n\t\t\t\talign=\"center\"\n\t\t\t>\n\t\t\t\t${when(\n\t\t\t\t\tthis.sidebarMode === 'overlay' && this.toggler,\n\t\t\t\t\t() =>\n\t\t\t\t\t\thtml`<slot name=\"toggler\">\n\t\t\t\t\t\t\t<div class=\"${this.classMap(sidebarToggler)}\">\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\t\t\t\t\t\t\t\tdetail: { state: this.sidebarOpen === 'open' ? 'close' : 'open' },\n\t\t\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\t\tthis.sidebarOpen === 'close',\n\t\t\t\t\t\t\t\t\t\t() => html`menu`,\n\t\t\t\t\t\t\t\t\t\t() => html`menu_open`,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</slot>`,\n\t\t\t\t)}\n\n\t\t\t\t<slot> </slot>\n\t\t\t</schmancy-grid>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer-appbar': SchmancyDrawerAppbar\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { fromEvent, takeUntil } from 'rxjs'\n\n@customElement('schmancy-nav-drawer-content')\nexport class SchmancyNavigationDrawerContent extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tinset: 0;\n\t\toverflow-y: auto;\n\t}\n`) {\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tfromEvent(this, 'scroll')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\tthis.parentElement.dispatchEvent(new CustomEvent('scroll', { detail: e, bubbles: true, composed: true }))\n\t\t\t})\n\t}\n\trender() {\n\t\treturn html` <slot></slot> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer-content': SchmancyNavigationDrawerContent\n\t}\n}\n","import { provide } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { debounceTime, distinctUntilChanged, fromEvent, map, takeUntil, tap } from 'rxjs'\nimport { SchmancyEvents } from '..'\nimport { fullHeight } from './../directives/height'\nimport {\n\tSchmancyDrawerNavbarMode,\n\tSchmancyDrawerNavbarState,\n\tTSchmancyDrawerNavbarMode,\n\tTSchmancyDrawerNavbarState,\n} from './context'\n\n/**\n * @element schmancy-nav-drawer\n * @slot appbar - The appbar slot\n * @slot - The content slot\n */\n@customElement('schmancy-nav-drawer')\nexport class SchmancyNavigationDrawer extends $LitElement(css`\n\t:host {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\toverflow: hidden;\n\t\t/* Initially hide the component until it’s ready */\n\t\tvisibility: hidden;\n\t}\n\t/* Once the component is ready, remove the hidden style */\n\t:host([data-ready]) {\n\t\tvisibility: visible;\n\t}\n`) {\n\t// fullscreen property\n\t@property({ type: Boolean })\n\tfullscreen: boolean = false\n\n\t/**\n\t * The breakpoint for the sidebar based on Tailwind CSS breakpoints.\n\t * Accepts: \"sm\", \"md\", \"lg\", or \"xl\".\n\t *\n\t * The following default values are used:\n\t * - sm: 640px\n\t * - md: 768px (default)\n\t * - lg: 1024px\n\t * - xl: 1280px\n\t *\n\t * @attr breakpoint\n\t * @type {\"sm\" | \"md\" | \"lg\" | \"xl\"}\n\t */\n\t@property({ type: String, attribute: 'breakpoint' })\n\tbreakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\t/**\n\t * Mapping of Tailwind breakpoint tokens to their numeric pixel values.\n\t */\n\tprivate static BREAKPOINTS: Record<'sm' | 'md' | 'lg' | 'xl', number> = {\n\t\tsm: 640,\n\t\tmd: 768,\n\t\tlg: 1024,\n\t\txl: 1280,\n\t}\n\n\t/**\n\t * The mode of the sidebar.\n\t */\n\t@provide({ context: SchmancyDrawerNavbarMode })\n\t@state()\n\tmode: TSchmancyDrawerNavbarMode\n\n\t/**\n\t * The open/close state of the sidebar.\n\t */\n\t@provide({ context: SchmancyDrawerNavbarState })\n\t@property()\n\topen: TSchmancyDrawerNavbarState\n\n\t/**\n\t * A flag indicating that the initial state has been set.\n\t */\n\t@state()\n\tprivate _initialized = false\n\n\t/**\n\t * In firstUpdated, we can safely read attribute-set properties.\n\t * We also initialize our state and subscribe to events.\n\t */\n\tfirstUpdated() {\n\t\t// Set the initial state based on the current window width.\n\t\tthis.updateState(window.innerWidth)\n\t\t// Mark the component as ready\n\t\tthis._initialized = true\n\t\tthis.setAttribute('data-ready', '')\n\n\t\t// Subscribe to window resize events.\n\t\tfromEvent(window, 'resize')\n\t\t\t.pipe(\n\t\t\t\t// Extract the inner width.\n\t\t\t\tmap(event => (event.target as Window).innerWidth),\n\t\t\t\t// Determine if we're above the breakpoint.\n\t\t\t\tmap(width => width >= SchmancyNavigationDrawer.BREAKPOINTS[this.breakpoint]),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tdebounceTime(100),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(isLargeScreen => {\n\t\t\t\tif (isLargeScreen) {\n\t\t\t\t\tthis.mode = 'push'\n\t\t\t\t\tthis.open = 'open'\n\t\t\t\t} else {\n\t\t\t\t\tthis.mode = 'overlay'\n\t\t\t\t\tthis.open = 'close'\n\t\t\t\t}\n\t\t\t})\n\n\t\t// Listen to the custom toggle event.\n\t\tfromEvent(window, SchmancyEvents.NavDrawer_toggle)\n\t\t\t.pipe(\n\t\t\t\ttap((event: CustomEvent) => {\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap((event: CustomEvent) => event.detail.state),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdebounceTime(10),\n\t\t\t)\n\t\t\t.subscribe(state => {\n\t\t\t\tconsole.log('Received toggle event:', state)\n\t\t\t\t// When in push mode, ignore a request to close the sidebar.\n\t\t\t\tif (this.mode === 'push' && state === 'close') return\n\t\t\t\tthis.open = state\n\t\t\t})\n\t}\n\n\t/**\n\t * Helper method to update state based on a given width.\n\t */\n\tprivate updateState(width: number) {\n\t\tconst isLargeScreen = width >= SchmancyNavigationDrawer.BREAKPOINTS[this.breakpoint]\n\t\tthis.mode = isLargeScreen ? 'push' : 'overlay'\n\t\tthis.open = isLargeScreen ? 'open' : 'close'\n\t}\n\n\tprotected render() {\n\t\t// Optionally, you can check _initialized here,\n\t\t// but the CSS will already hide the component until it's ready.\n\t\tif (!this._initialized) return nothing\n\n\t\treturn html`\n\t\t\t<schmancy-grid\n\t\t\t\tcols=${this.fullscreen ? '1fr' : 'auto 1fr'}\n\t\t\t\trows=\"1fr\"\n\t\t\t\tflow=\"col\"\n\t\t\t\tjustify=\"stretch\"\n\t\t\t\talign=\"stretch\"\n\t\t\t\t${fullHeight()}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-grid>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer': SchmancyNavigationDrawer\n\t}\n}\n","import { consume } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { SchmancyEvents, SchmancyTheme, color } from '..'\nimport {\n\tSchmancyDrawerNavbarMode,\n\tSchmancyDrawerNavbarState,\n\tTSchmancyDrawerNavbarMode,\n\tTSchmancyDrawerNavbarState,\n} from './context'\n\n// Animation configuration constants.\nconst ANIMATION_EASING = 'cubic-bezier(0.5, 0.01, 0.25, 1)'\nconst OVERLAY_ANIM_DURATION_OPEN = 200\nconst OVERLAY_ANIM_DURATION_CLOSE = 150\nconst NAV_ANIM_DURATION = 200\n\n@customElement('schmancy-nav-drawer-navbar')\nexport class SchmancyNavigationDrawerSidebar extends $LitElement() {\n\t// Consume context values. Renamed from \"state\" to \"drawerState\" to avoid confusion.\n\t@consume({ context: SchmancyDrawerNavbarMode, subscribe: true })\n\t@state()\n\tmode!: TSchmancyDrawerNavbarMode\n\n\t@consume({ context: SchmancyDrawerNavbarState, subscribe: true })\n\t@state()\n\tdrawerState!: TSchmancyDrawerNavbarState\n\n\t@query('#overlay') overlay!: HTMLElement\n\t@query('nav') nav!: HTMLElement\n\n\t@property({ type: String }) width = '320px'\n\t@state() private _initialized = false\n\n\t/**\n\t * firstUpdated()\n\t * Set initial styles based on the current mode and consumed state.\n\t */\n\tfirstUpdated() {\n\t\tif (this.mode === 'overlay') {\n\t\t\tif (this.drawerState === 'close') {\n\t\t\t\tthis.nav.style.transform = 'translateX(-100%)'\n\t\t\t\tthis.overlay.style.display = 'none'\n\t\t\t} else if (this.drawerState === 'open') {\n\t\t\t\tthis.nav.style.transform = 'translateX(0)'\n\t\t\t\tthis.overlay.style.display = 'block'\n\t\t\t\tthis.overlay.style.opacity = '0.4'\n\t\t\t}\n\t\t} else if (this.mode === 'push') {\n\t\t\t// In push mode, the nav is always visible and the overlay hidden.\n\t\t\tthis.nav.style.transform = 'translateX(0)'\n\t\t\tthis.overlay.style.display = 'none'\n\t\t}\n\t\tthis._initialized = true\n\t}\n\n\t/**\n\t * updated()\n\t * Trigger animations when either the consumed mode or state changes.\n\t */\n\tupdated(changedProperties: Map<string, any>) {\n\t\tconsole.log(this._initialized, changedProperties)\n\t\tif (!this._initialized) return\n\n\t\tif (changedProperties.has('drawerState') || changedProperties.has('mode')) {\n\t\t\tconsole.log('State updated:', this.drawerState, this.mode)\n\t\t\tif (this.mode === 'overlay') {\n\t\t\t\tif (this.drawerState === 'open') {\n\t\t\t\t\t// Animate only if the nav isn’t already open.\n\t\t\t\t\tif (this.nav.style.transform !== 'translateX(0)') {\n\t\t\t\t\t\tthis.openOverlay()\n\t\t\t\t\t\tthis.showNavDrawer()\n\t\t\t\t\t}\n\t\t\t\t} else if (this.drawerState === 'close') {\n\t\t\t\t\tconsole.log(this.nav.style.transform)\n\t\t\t\t\tif (this.nav.style.transform !== 'translateX(-100%)') {\n\t\t\t\t\t\tthis.hideNavDrawer()\n\t\t\t\t\t\tthis.closeOverlay()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this.mode === 'push') {\n\t\t\t\tif (this.nav.style.transform !== 'translateX(0)') {\n\t\t\t\t\tthis.showNavDrawer()\n\t\t\t\t}\n\t\t\t\tif (this.overlay.style.display !== 'none') {\n\t\t\t\t\tthis.closeOverlay()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Animate the overlay to fade in.\n\t */\n\topenOverlay() {\n\t\tthis.overlay.style.display = 'block'\n\t\tthis.overlay.animate([{ opacity: 0 }, { opacity: 0.4 }], {\n\t\t\tduration: OVERLAY_ANIM_DURATION_OPEN,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\t/**\n\t * Animate the overlay to fade out, then hide it.\n\t */\n\tcloseOverlay() {\n\t\tconst animation = this.overlay.animate([{ opacity: 0.4 }, { opacity: 0 }], {\n\t\t\tduration: OVERLAY_ANIM_DURATION_CLOSE,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tanimation.onfinish = () => {\n\t\t\tthis.overlay.style.display = 'none'\n\t\t}\n\t}\n\tshowNavDrawer() {\n\t\t// Use computed style if needed, but here we directly update inline style after animation.\n\t\tconst animation = this.nav.animate([{ transform: 'translateX(-100%)' }, { transform: 'translateX(0)' }], {\n\t\t\tduration: NAV_ANIM_DURATION,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tanimation.onfinish = () => {\n\t\t\tthis.nav.style.transform = 'translateX(0)'\n\t\t}\n\t}\n\n\thideNavDrawer() {\n\t\tconst animation = this.nav.animate([{ transform: 'translateX(0)' }, { transform: 'translateX(-100%)' }], {\n\t\t\tduration: NAV_ANIM_DURATION,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tanimation.onfinish = () => {\n\t\t\tthis.nav.style.transform = 'translateX(-100%)'\n\t\t}\n\t}\n\n\t/**\n\t * Handle overlay click events by dispatching a custom event\n\t * to close the navigation drawer.\n\t */\n\tprivate handleOverlayClick() {\n\t\twindow.dispatchEvent(\n\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\tdetail: { state: 'close' },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprotected render() {\n\t\tconst sidebarClasses = {\n\t\t\t'p-[16px] max-w-[360px] w-fit h-full overflow-auto': true,\n\t\t\tblock: this.mode === 'push',\n\t\t\t'fixed inset-0 z-50': this.mode === 'overlay',\n\t\t}\n\t\tconst overlayClass = {\n\t\t\t'fixed inset-0 z-49 hidden': true,\n\t\t}\n\t\tconst styleMap = {\n\t\t\twidth: this.width,\n\t\t}\n\n\t\treturn html`\n\t\t\t<nav\n\t\t\t\tstyle=${this.styleMap(styleMap)}\n\t\t\t\tclass=\"${this.classMap({ ...sidebarClasses })}\"\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</nav>\n\t\t\t<div\n\t\t\t\tid=\"overlay\"\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.scrim,\n\t\t\t\t})}\n\t\t\t\t@click=${this.handleOverlayClick}\n\t\t\t\tclass=\"${this.classMap({ ...overlayClass })}\"\n\t\t\t></div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer-navbar': SchmancyNavigationDrawerSidebar\n\t}\n}\n","import { bufferTime, concatMap, filter, fromEvent, map, of, Subject, take, tap, timeout, zip } from 'rxjs'\nimport { SchmancyTeleportation } from './teleport.component'\n\nexport type WhereAreYouRickyEvent = CustomEvent<{\n\tid: string\n\tcallerID: number\n}>\n\nexport const WhereAreYouRicky = 'whereAreYouRicky'\n\nexport type HereMortyEvent = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\n\nexport type FLIP_REQUEST = {\n\tfrom: {\n\t\trect: DOMRect\n\t\telement?: HTMLElement\n\t}\n\tto: {\n\t\trect: DOMRect\n\t\telement: HTMLElement\n\t}\n\tstagger?: number\n\thost: HTMLElement\n}\nexport const HereMorty = 'hereMorty'\n\nclass Teleportation {\n\tactiveTeleportations = new Map<string, DOMRect>()\n\tflipRequests = new Subject<FLIP_REQUEST>()\n\n\tconstructor() {\n\t\tthis.flipRequests\n\t\t\t.pipe(\n\t\t\t\tbufferTime(1),\n\t\t\t\tmap(requests =>\n\t\t\t\t\trequests.map(({ from, to, host }, i) => ({\n\t\t\t\t\t\tfrom,\n\t\t\t\t\t\tto,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\ti,\n\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t\tconcatMap(requests => zip(requests.map(request => of(this.flip(request))))),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tfind = (component: SchmancyTeleportation) => {\n\t\treturn zip([\n\t\t\tfromEvent<HereMortyEvent>(window, HereMorty).pipe(\n\t\t\t\tfilter(\n\t\t\t\t\te =>\n\t\t\t\t\t\t!!e.detail.component.uuid &&\n\t\t\t\t\t\t!!component.id &&\n\t\t\t\t\t\te.detail.component.id === component.id &&\n\t\t\t\t\t\te.detail.component.uuid !== component.uuid,\n\t\t\t\t),\n\t\t\t\tmap(e => e.detail.component),\n\t\t\t\ttake(1),\n\t\t\t),\n\t\t\tof(component).pipe(\n\t\t\t\ttap(() => {\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent<WhereAreYouRickyEvent['detail']>(WhereAreYouRicky, {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\tid: component.id,\n\t\t\t\t\t\t\t\tcallerID: component.uuid,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t),\n\t\t]).pipe(\n\t\t\tmap(([component]) => component),\n\t\t\ttimeout(0),\n\t\t)\n\t}\n\n\tflip = (request: {\n\t\tfrom: {\n\t\t\trect: DOMRect\n\t\t}\n\t\tto: {\n\t\t\telement: HTMLElement\n\t\t\trect: DOMRect\n\t\t}\n\t\thost: HTMLElement\n\t\ti: number\n\t}) => {\n\t\tconst { from, to } = request\n\n\t\t// Prepare the element for animation\n\t\tconst originalZIndex = to.element.style.zIndex\n\t\tto.element.style.transformOrigin = 'top left'\n\t\tto.element.style.setProperty('visibility', 'visible')\n\t\tto.element.style.zIndex = '1000'\n\n\t\t// \"onBegin\" logic goes here (since Web Animations doesn't have onBegin).\n\t\t// If you had more logic, place it here:\n\t\t// e.g., console.log('Starting FLIP animation...');\n\n\t\t// Calculate starting and ending transforms\n\t\tconst startX = from.rect.left - to.rect.left\n\t\tconst startY = from.rect.top - to.rect.top\n\t\tconst startScaleX = from.rect.width / to.rect.width\n\t\tconst startScaleY = from.rect.height / to.rect.height\n\n\t\t// Create keyframes\n\t\tconst keyframes: Keyframe[] = [\n\t\t\t{\n\t\t\t\ttransform: `translate(${startX}px, ${startY}px) scale(${startScaleX}, ${startScaleY})`,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttransform: 'translate(0, 0) scale(1, 1)',\n\t\t\t},\n\t\t]\n\n\t\t// Use native Web Animations API\n\t\tconst animation = to.element.animate(keyframes, {\n\t\t\tduration: 250,\n\t\t\tdelay: 10, // if desired\n\t\t\t// Approximate 'inOutQuad' via a cubic-bezier easing.\n\t\t\t// You can adjust these values to taste, or use a standard one:\n\t\t\teasing: 'cubic-bezier(0.455, 0.03, 0.515, 0.955)',\n\t\t\t// or simply 'ease-in-out'\n\t\t})\n\n\t\t// \"onComplete\" logic goes here\n\t\tanimation.onfinish = () => {\n\t\t\tto.element.style.zIndex = originalZIndex\n\t\t\tto.element.style.transformOrigin = ''\n\t\t\t// If you have additional cleanup, place it here\n\t\t\t// e.g., console.log('FLIP animation completed!');\n\t\t}\n\t}\n}\n\nexport const teleport = new Teleportation()\nexport default teleport\n","import { Observable, interval } from 'rxjs'\nimport { distinctUntilChanged, map, take } from 'rxjs/operators'\n\n// Function to monitor element's bounding client rect\nexport function watchElementRect(element: Element): Observable<DOMRectReadOnly> {\n\treturn interval(50).pipe(\n\t\t// startWith(true),\n\t\tmap(() => element.getBoundingClientRect()),\n\t\tdistinctUntilChanged(\n\t\t\t(prev, curr) =>\n\t\t\t\tprev.width === curr.width &&\n\t\t\t\tprev.height === curr.height &&\n\t\t\t\tprev.top === curr.top &&\n\t\t\t\tprev.right === curr.right &&\n\t\t\t\tprev.bottom === curr.bottom &&\n\t\t\t\tprev.left === curr.left,\n\t\t),\n\t\ttake(1),\n\t)\n}\n","import { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { filter, fromEvent, merge, of, takeUntil, tap, throwIfEmpty } from 'rxjs'\nimport { FINDING_MORTIES, FINDING_MORTIES_EVENT, HERE_RICKY, HERE_RICKY_EVENT } from '..'\nimport {\n\tHereMorty,\n\tHereMortyEvent,\n\tWhereAreYouRicky,\n\tWhereAreYouRickyEvent,\n\tdefault as teleport,\n\tdefault as teleportationService,\n} from './teleport.service'\nimport { watchElementRect } from './watcher'\nimport { $LitElement } from '@mixins/index'\n@customElement('schmancy-teleport')\nexport class SchmancyTeleportation extends $LitElement(css``) {\n\t/**\n\t * @attr {string} uuid - The component tag to teleport\n\t * @readonly\n\t */\n\t@property({ type: Number, reflect: true }) uuid = Math.floor(Math.random() * Date.now())\n\n\t/**\n\t * @attr {string} id - The component tag to teleport\n\t * @required\n\t */\n\t@property({ type: String }) id!: string\n\n\t@property({ type: Number }) delay = 0\n\n\tdebugging = import.meta.env.DEV ? true : false\n\n\tget _slottedChildren() {\n\t\tconst slot = this.shadowRoot.querySelector('slot')\n\t\treturn slot.assignedElements({ flatten: true })\n\t}\n\n\tconnectedCallback(): void {\n\t\tif (this.id === undefined) throw new Error('id is required')\n\t\tsuper.connectedCallback()\n\t\tmerge(\n\t\t\tfromEvent<FINDING_MORTIES_EVENT>(window, FINDING_MORTIES).pipe(\n\t\t\t\ttap({\n\t\t\t\t\tnext: () => {\n\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\tnew CustomEvent<HERE_RICKY_EVENT['detail']>(HERE_RICKY, {\n\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\tcomponent: this,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t\tfromEvent<WhereAreYouRickyEvent>(window, WhereAreYouRicky).pipe(\n\t\t\t\ttap({\n\t\t\t\t\tnext: e => {\n\t\t\t\t\t\tif (e.detail.id === this.id && this.uuid && e.detail.callerID !== this.uuid) {\n\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent<HereMortyEvent['detail']>(HereMorty, {\n\t\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\t\tcomponent: this,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe()\n\t}\n\n\tasync firstUpdated() {\n\t\tof(teleportationService.activeTeleportations.get(this.id))\n\t\t\t.pipe(\n\t\t\t\tfilter(a => !!a),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tthrowIfEmpty(),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: domRect => {\n\t\t\t\t\tconsole.count('teleport')\n\t\t\t\t\tthis.style.setProperty('visibility', 'hidden')\n\t\t\t\t\t// teleport.flipRequests.next({ from: component, to: this, stagger: 0 })\n\t\t\t\t\twatchElementRect(this)\n\t\t\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t\t\t.subscribe({\n\t\t\t\t\t\t\tnext: e => {\n\t\t\t\t\t\t\t\t// console.log(e)\n\t\t\t\t\t\t\t\tteleportationService.activeTeleportations.set(this.id, e)\n\t\t\t\t\t\t\t\tteleport.flipRequests.next({\n\t\t\t\t\t\t\t\t\tfrom: {\n\t\t\t\t\t\t\t\t\t\trect: domRect,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tto: {\n\t\t\t\t\t\t\t\t\t\trect: e,\n\t\t\t\t\t\t\t\t\t\telement: this._slottedChildren[0] as HTMLElement,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\thost: this,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\terror: () => {\n\t\t\t\t\tthis.style.setProperty('visibility', 'visible')\n\t\t\t\t\twatchElementRect(this)\n\t\t\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t\t\t.subscribe({\n\t\t\t\t\t\t\tnext: e => {\n\t\t\t\t\t\t\t\tconsole.log(e)\n\t\t\t\t\t\t\t\tteleportationService.activeTeleportations.set(this.id, e)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tcomplete: () => {},\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-teleport': SchmancyTeleportation\n\t}\n}\n"],"names":["SchmancyCardMedia","TailwindElement","css","html","customElement","SchmancyCard","constructor","super","arguments","this","type","elevation","classes","includes","classMap","__decorateClass","property","prototype","Number","SchmancyCardContent","render","onSurface","SchmancyTheme","sys","color","surface","on","onSurfaceVariant","onVariant","src","fit","styleMap","height","String","reflect","schmancyContentDrawer","$drawer","Subject","pipe","subscribe","data","action","ref","dispatchEvent","CustomEvent","SchmancyEvents","ContentDrawerToggle","detail","state","bubbles","composed","component","title","next","e","SchmancyContentDrawerSheetMode","createContext","SchmancyContentDrawerSheetState","SchmancyContentDrawerID","Math","floor","random","Date","now","toString","SchmancyContentDrawerMaxHeight","SchmancyContentDrawerMinWidth","SchmancyContentDrawer","$LitElement","minWidth","main","sheet","schmancyContentDrawerID","maxHeight","merge","fromEvent","window","ContentDrawerResize","startWith","tap","map","clientWidth","innerWidth","width","debounceTime","innerHeight","getOffsetTop","style","setProperty","distinctUntilChanged","takeUntil","disconnecting","lgScreen","mode","open","event","stopPropagation","area","push","historyStrategy","uid","element","offsetTop","offsetParent","nothing","provide","context","queryAssignedElements","flatten","SchmancyContentDrawerMain","connectedCallback","drawerMinWidth","changedProperties","update","has","styles","when","consume","SchmancyContentDrawerSheet","updated","closeAll","dismiss","position","display","animate","opacity","transform","duration","easing","from","closeModalSheet","closeSheet","of","Observable","observer","onfinish","complete","sheetClasses","block","query","slot","schmancyNavDrawer","NavDrawer_toggle","self","SchmancyDrawerNavbarMode","SchmancyDrawerNavbarState","SchmancyDrawerAppbar","toggler","sidebarToggler","sidebarMode","hidden","sidebarOpen","Boolean","SchmancyNavigationDrawerContent","parentElement","SchmancyNavigationDrawer","fullscreen","breakpoint","_initialized","firstUpdated","updateState","setAttribute","target","BREAKPOINTS","isLargeScreen","fullHeight","sm","md","lg","xl","attribute","ANIMATION_EASING","SchmancyNavigationDrawerSidebar","drawerState","nav","overlay","openOverlay","showNavDrawer","hideNavDrawer","closeOverlay","fill","handleOverlayClick","sidebarClasses","bgColor","container","scrim","WhereAreYouRicky","HereMorty","teleport","activeTeleportations","Map","flipRequests","find","zip","filter","uuid","id","take","callerID","timeout","flip","request","to","originalZIndex","zIndex","transformOrigin","keyframes","rect","left","top","delay","bufferTime","requests","host","i","concatMap","watchElementRect","interval","getBoundingClientRect","prev","curr","right","bottom","SchmancyTeleportation","debugging","shadowRoot","querySelector","assignedElements","Error","FINDING_MORTIES","HERE_RICKY","teleportationService","get","a","throwIfEmpty","domRect","set","_slottedChildren","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"teleport.component-CrOAEYhZ.js","sources":["../src/card/actions.ts","../src/card/card.ts","../src/card/content.ts","../src/card/media.ts","../src/content-drawer/$sheet.ts","../src/content-drawer/context.ts","../src/content-drawer/drawer.ts","../src/content-drawer/main.ts","../src/content-drawer/sheet.ts","../src/nav-drawer/$navbar.ts","../src/nav-drawer/context.ts","../src/nav-drawer/appbar.ts","../src/nav-drawer/content.ts","../src/nav-drawer/drawer.ts","../src/nav-drawer/navbar.ts","../src/teleport/teleport.service.ts","../src/teleport/watcher.ts","../src/teleport/teleport.component.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n/**\n * @element schmancy-card-action\n * @slot - The content of the action\n */\n@customElement('schmancy-card-action')\nexport default class SchmancyCardMedia extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\tprotected render(): unknown {\n\t\treturn html` <section class=\"pb-4 px-4\"><slot> </slot></section> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card-action': SchmancyCardMedia\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('schmancy-card')\nexport default class SchmancyCard extends TailwindElement() {\n\t@property() type: 'elevated' | 'filled' | 'outlined' = 'elevated'\n\t@property({ type: Number }) elevation: 0 | 1 | 2 | 3 | 4 | 5 = 0\n\tprotected render(): unknown {\n\t\tconst classes = {\n\t\t\t'rounded-md': true,\n\t\t\t'shadow-xs': this.elevation === 1,\n\t\t\t'shadow-sm': this.elevation === 2,\n\t\t\t'shadow-md': this.elevation === 3,\n\t\t\t'shadow-lg': this.elevation === 4,\n\t\t\t'shadow-5': this.elevation === 5,\n\t\t\t'hover:shadow-xs': ['outlined', 'filled'].includes(this.type),\n\t\t\t'bg-surface-low shadow-xs hover:shadow-sm': this.type === 'elevated',\n\t\t\t'bg-surface-highest': this.type === 'filled',\n\t\t\t'bg-surface-default border border-solid border-1 border-outlineVariant': this.type === 'outlined',\n\t\t}\n\t\treturn html`<div class=\"${this.classMap(classes)}\">\n\t\t\t<slot> </slot>\n\t\t</div>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card': SchmancyCard\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { color } from '..'\n\n/**\n * @element schmancy-card-content\n * @slot headline\n * @slot subhead\n * @slot default - The content of the card\n */\n@customElement('schmancy-card-content')\nexport default class SchmancyCardContent extends TailwindElement() {\n\tprotected render(): unknown {\n\t\tconst classes = {\n\t\t\t'px-[16px] py-[24px]': true,\n\t\t}\n\t\tconst onSurface = SchmancyTheme.sys.color.surface.on\n\t\tconst onSurfaceVariant = SchmancyTheme.sys.color.surface.onVariant\n\t\treturn html`<schmancy-grid gap=\"md\" class=\"${this.classMap(classes)}\">\n\t\t\t<schmancy-grid gap=\"xs\">\n\t\t\t\t<schmancy-typography\n\t\t\t\t\t${color({\n\t\t\t\t\t\tcolor: onSurface,\n\t\t\t\t\t})}\n\t\t\t\t\ttype=\"body\"\n\t\t\t\t\ttoken=\"lg\"\n\t\t\t\t\t><slot name=\"headline\"> </slot\n\t\t\t\t></schmancy-typography>\n\t\t\t\t<schmancy-typography\n\t\t\t\t\t${color({\n\t\t\t\t\t\tcolor: onSurfaceVariant,\n\t\t\t\t\t})}\n\t\t\t\t\ttype=\"body\"\n\t\t\t\t\t><slot name=\"subhead\"></slot>\n\t\t\t\t</schmancy-typography>\n\t\t\t</schmancy-grid>\n\t\t\t<schmancy-typography\n\t\t\t\ttype=\"body\"\n\t\t\t\t${color({\n\t\t\t\t\tcolor: onSurfaceVariant,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-typography>\n\t\t</schmancy-grid>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card-content': SchmancyCardContent\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n/**\n * @element schmancy-card-media\n */\n@customElement('schmancy-card-media')\nexport default class SchmancyCardMedia extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\t@property({ type: String, reflect: true })\n\tsrc: string = ''\n\n\t@property({ type: String })\n\tfit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down' = 'contain'\n\n\tprotected render(): unknown {\n\t\tconst styles = {\n\t\t\theight: '200px',\n\t\t}\n\t\tconst classes = {\n\t\t\t'object-center': true,\n\t\t\t'object-contain': this.fit === 'contain',\n\t\t\t'object-cover w-full': this.fit === 'cover',\n\t\t\t'object-fill': this.fit === 'fill',\n\t\t\t'object-none': this.fit === 'none',\n\t\t\t'object-scale-down': this.fit === 'scale-down',\n\t\t}\n\t\treturn html`<schmancy-grid align=\"stretch\" justify=\"stretch\" gap=\"md\">\n\t\t\t<img src=\"${this.src}\" style=${this.styleMap(styles)} class=\"${this.classMap(classes)}\" />\n\t\t</schmancy-grid>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card-media': SchmancyCardMedia\n\t}\n}\n","import { SchmancyEvents } from '@schmancy/types/events'\nimport { Subject } from 'rxjs'\n\ntype DrawerAction = 'dismiss' | 'render'\ntype TRef = Element | Window\ntype TRenderRequest = HTMLElement\nexport type TRenderCustomEvent = CustomEvent<{\n\tcomponent: TRenderRequest\n\ttitle?: string\n}>\nclass Drawer {\n\tprivate $drawer = new Subject<{\n\t\tref: TRef\n\t\taction: DrawerAction\n\t\tcomponent?: TRenderRequest\n\t\ttitle?: string\n\t}>()\n\tconstructor() {\n\t\tthis.$drawer.pipe().subscribe(data => {\n\t\t\tif (data.action === 'dismiss') {\n\t\t\t\tdata.ref.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.ContentDrawerToggle, {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tstate: 'close',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t} else if (data.action === 'render') {\n\t\t\t\tdata.ref.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.ContentDrawerToggle, {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tstate: 'open',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\tdata.ref.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('schmancy-content-drawer-render', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tcomponent: data.component,\n\t\t\t\t\t\t\ttitle: data.title,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n\n\tdimiss(ref: TRef) {\n\t\tthis.$drawer.next({\n\t\t\taction: 'dismiss',\n\t\t\tref: ref,\n\t\t})\n\t}\n\n\trender(ref: TRef, component: TRenderRequest, title?: string) {\n\t\tref.dispatchEvent(new CustomEvent('custom-event'))\n\t\tthis.$drawer.next({\n\t\t\taction: 'render',\n\t\t\tref: ref,\n\t\t\tcomponent: component,\n\t\t\ttitle,\n\t\t})\n\t}\n}\n\nexport const schmancyContentDrawer = new Drawer()\n","import { createContext } from '@lit/context'\nexport type TSchmancyContentDrawerSheetMode = 'push' | 'overlay'\nexport const SchmancyContentDrawerSheetMode = createContext<TSchmancyContentDrawerSheetMode>('push')\n\nexport type TSchmancyContentDrawerSheetState = 'open' | 'close'\nexport const SchmancyContentDrawerSheetState = createContext<TSchmancyContentDrawerSheetState>('close')\n\nexport const SchmancyContentDrawerID = createContext<string>(Math.floor(Math.random() * Date.now()).toString())\nexport const SchmancyContentDrawerMaxHeight = createContext<string>('100%')\nexport const SchmancyContentDrawerMinWidth = createContext<{\n\tmain: number\n\tsheet: number\n}>({})\n","import { provide } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js'\nimport { debounceTime, distinctUntilChanged, fromEvent, map, merge, startWith, takeUntil, tap } from 'rxjs'\nimport { SchmancyEvents, TRenderCustomEvent, area, sheet } from '..'\nimport {\n\tSchmancyContentDrawerID,\n\tSchmancyContentDrawerMaxHeight,\n\tSchmancyContentDrawerMinWidth,\n\tSchmancyContentDrawerSheetMode,\n\tSchmancyContentDrawerSheetState,\n\tTSchmancyContentDrawerSheetMode,\n\tTSchmancyContentDrawerSheetState,\n} from './context'\n\n/**\n * @element schmancy-content-drawer\n * @slot appbar - The appbar slot\n * @slot - The content slot\n */\n@customElement('schmancy-content-drawer')\nexport class SchmancyContentDrawer extends $LitElement(css`\n\t:host {\n\t\tposition: relative;\n\t\tinset: 0;\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\n`) {\n\t/**\n\t * The minimum width of the sheet\n\t * @attr\tminWidth\n\t * @type {number}\n\t * @memberof SchmancyContentDrawer\n\t */\n\n\t@provide({ context: SchmancyContentDrawerMinWidth })\n\tminWidth: typeof SchmancyContentDrawerMinWidth.__context__ = {\n\t\tmain: 360,\n\t\tsheet: 576,\n\t}\n\n\t/**\n\t * The state of the sheet\n\t * @attr open\n\t * @type {TSchmancyContentDrawerSheetState}\n\t */\n\t@provide({ context: SchmancyContentDrawerSheetState })\n\t@property()\n\topen: TSchmancyContentDrawerSheetState\n\n\t/**\n\t * The mode of the sheet\n\t * @type {TSchmancyContentDrawerSheetMode}\n\t * @memberof SchmancyContentDrawer\n\t * @protected\n\t */\n\t@provide({ context: SchmancyContentDrawerSheetMode })\n\t@state()\n\tmode: TSchmancyContentDrawerSheetMode\n\n\t@provide({ context: SchmancyContentDrawerID })\n\tschmancyContentDrawerID = Math.floor(Math.random() * Date.now()).toString()\n\n\t@provide({ context: SchmancyContentDrawerMaxHeight })\n\tmaxHeight = '100%'\n\n\t@queryAssignedElements({ flatten: true })\n\tassignedElements!: HTMLElement[]\n\tfirstUpdated(): void {\n\t\tmerge(fromEvent<CustomEvent>(window, 'resize'), fromEvent<CustomEvent>(window, SchmancyEvents.ContentDrawerResize))\n\t\t\t.pipe(\n\t\t\t\tstartWith(true),\n\t\t\t\ttap(() => console.log(this.minWidth)),\n\t\t\t\tmap(() => (this.clientWidth ? this.clientWidth : window.innerWidth)),\n\t\t\t\tmap(width => width >= this.minWidth.main + this.minWidth.sheet),\n\t\t\t\tdebounceTime(100),\n\t\t\t\ttap(() => {\n\t\t\t\t\tthis.maxHeight = `${window.innerHeight - this.getOffsetTop(this) - 32}px`\n\t\t\t\t\tthis.style.setProperty('max-height', this.maxHeight)\n\t\t\t\t}),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(lgScreen => {\n\t\t\t\tif (lgScreen) {\n\t\t\t\t\tthis.mode = 'push'\n\t\t\t\t\tthis.open = 'open'\n\t\t\t\t} else {\n\t\t\t\t\tthis.mode = 'overlay'\n\t\t\t\t\tthis.open = 'close'\n\t\t\t\t}\n\t\t\t})\n\n\t\t/*\n\t\t * Listen to the toggle event\n\t\t */\n\t\tfromEvent<CustomEvent>(window, SchmancyEvents.ContentDrawerToggle)\n\t\t\t.pipe(\n\t\t\t\ttap(event => {\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap(event => event.detail.state),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(state => {\n\t\t\t\tthis.open = state\n\t\t\t})\n\n\t\tfromEvent<TRenderCustomEvent>(window, 'schmancy-content-drawer-render')\n\t\t\t.pipe(\n\t\t\t\ttap(event => {\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap(event => event.detail),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(({ component, title }) => {\n\t\t\t\tif (this.mode === 'push') {\n\t\t\t\t\t// TODO: Fix the router to render if constructor has different arguments\n\t\t\t\t\tarea.push({\n\t\t\t\t\t\tarea: this.schmancyContentDrawerID,\n\t\t\t\t\t\tcomponent: 'empty',\n\t\t\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\t\t})\n\t\t\t\t\tarea.push({\n\t\t\t\t\t\tarea: this.schmancyContentDrawerID,\n\t\t\t\t\t\tcomponent: component,\n\t\t\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\t\t})\n\t\t\t\t} else if ((this.mode = 'overlay')) {\n\t\t\t\t\tsheet.open({ component: component, uid: this.schmancyContentDrawerID, title })\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\tgetOffsetTop(element) {\n\t\tlet offsetTop = 0\n\t\twhile (element) {\n\t\t\toffsetTop += element.offsetTop\n\t\t\telement = element.offsetParent\n\t\t}\n\t\treturn offsetTop\n\t}\n\n\tprotected render() {\n\t\tif (!this.mode || !this.open) return nothing\n\t\treturn html`\n\t\t\t<schmancy-grid\n\t\t\t\tcols=${this.mode === 'overlay' ? '1fr' : 'auto 1fr'}\n\t\t\t\trows=\"1fr\"\n\t\t\t\tflow=\"col\"\n\t\t\t\tjustify=\"stretch\"\n\t\t\t\talign=\"stretch\"\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-grid>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-content-drawer': SchmancyContentDrawer\n\t}\n}\n","import { consume } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { PropertyValueMap, css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { SchmancyEvents } from '..'\nimport {\n\tSchmancyContentDrawerMaxHeight,\n\tSchmancyContentDrawerMinWidth,\n\tSchmancyContentDrawerSheetMode,\n\tTSchmancyContentDrawerSheetMode,\n} from './context'\nimport { when } from 'lit/directives/when.js'\n\n@customElement('schmancy-content-drawer-main')\nexport class SchmancyContentDrawerMain extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\n`) {\n\t@property({ type: Number })\n\tminWidth\n\n\t@consume({ context: SchmancyContentDrawerMinWidth, subscribe: true })\n\tdrawerMinWidth: typeof SchmancyContentDrawerMinWidth.__context__\n\n\t@consume({ context: SchmancyContentDrawerSheetMode, subscribe: true })\n\t@state()\n\tmode: TSchmancyContentDrawerSheetMode\n\n\t@consume({ context: SchmancyContentDrawerMaxHeight, subscribe: true })\n\t@state()\n\tmaxHeight\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tif (this.minWidth) this.drawerMinWidth.main = this.minWidth\n\t\telse this.minWidth = this.drawerMinWidth.main\n\t}\n\n\tprotected update(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\n\t\tsuper.update(changedProperties)\n\t\tif (changedProperties.has('minWidth') && this.minWidth) {\n\t\t\tthis.drawerMinWidth.main = this.minWidth\n\t\t\tthis.dispatchEvent(new CustomEvent(SchmancyEvents.ContentDrawerResize, { bubbles: true, composed: true }))\n\t\t}\n\t}\n\n\trender() {\n\t\tconst styles = {\n\t\t\tminWidth: `${this.minWidth}px`,\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\t\treturn html`\n\t\t\t<section class=\"relative inset-0 h-full\">\n\t\t\t\t<schmancy-grid\n\t\t\t\t\tclass=\"h-full relative overflow-scroll\"\n\t\t\t\t\tcols=\"${this.mode === 'push' ? 'auto 1fr' : '1fr'}\"\n\t\t\t\t\trows=\"1fr\"\n\t\t\t\t\tflow=\"col\"\n\t\t\t\t\talign=\"stretch\"\n\t\t\t\t\tjustify=\"stretch\"\n\t\t\t\t>\n\t\t\t\t\t<section style=${this.styleMap(styles)}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</section>\n\t\t\t\t</schmancy-grid>\n\t\t\t\t${when(\n\t\t\t\t\tthis.mode === 'push',\n\t\t\t\t\t() => html` <schmancy-divider class=\"absolute right-0 top-0\" orientation=\"vertical\"></schmancy-divider>`,\n\t\t\t\t)}\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-content-drawer-main': SchmancyContentDrawerMain\n\t}\n}\n","import { consume } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { from, merge, Observable, of, takeUntil, tap } from 'rxjs'\nimport { SchmancyEvents, sheet } from '..'\nimport {\n\tSchmancyContentDrawerID,\n\tSchmancyContentDrawerMaxHeight,\n\tSchmancyContentDrawerMinWidth,\n\tSchmancyContentDrawerSheetMode,\n\tSchmancyContentDrawerSheetState,\n\tTSchmancyContentDrawerSheetMode,\n\tTSchmancyContentDrawerSheetState,\n} from './context'\n\n// --- 1) Removed the custom animate import\n// import { animate } from '@packages/anime-beta-master'\n\n@customElement('schmancy-content-drawer-sheet')\nexport class SchmancyContentDrawerSheet extends $LitElement(css`\n\t:host {\n\t\toverflow: scroll;\n\t}\n`) {\n\t@property({ type: Number })\n\tminWidth\n\n\t@consume({ context: SchmancyContentDrawerSheetMode, subscribe: true })\n\t@state()\n\tmode: TSchmancyContentDrawerSheetMode\n\n\t@consume({ context: SchmancyContentDrawerSheetState, subscribe: true })\n\t@state()\n\tstate: TSchmancyContentDrawerSheetState\n\n\t@consume({ context: SchmancyContentDrawerID })\n\tschmancyContentDrawerID\n\n\t@query('#sheet') sheet!: HTMLElement\n\t@queryAssignedElements({ flatten: true, slot: undefined }) defaultSlot!: HTMLElement[]\n\n\t@consume({ context: SchmancyContentDrawerMinWidth, subscribe: true })\n\tdrawerMinWidth: typeof SchmancyContentDrawerMinWidth.__context__\n\n\t@consume({ context: SchmancyContentDrawerMaxHeight, subscribe: true })\n\t@state()\n\tmaxHeight\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tif (this.minWidth) {\n\t\t\tthis.drawerMinWidth.sheet = this.minWidth\n\t\t} else {\n\t\t\tthis.minWidth = this.drawerMinWidth.sheet\n\t\t}\n\t}\n\n\tupdated(changedProperties: Map<string, any>) {\n\t\tsuper.updated(changedProperties)\n\t\tif (changedProperties.has('minWidth') && this.minWidth) {\n\t\t\t// If the 'minWidth' property changed\n\t\t\tthis.drawerMinWidth.sheet = this.minWidth\n\t\t\tthis.dispatchEvent(new CustomEvent(SchmancyEvents.ContentDrawerResize, { bubbles: true, composed: true }))\n\t\t} else if (changedProperties.has('state') || changedProperties.has('mode')) {\n\t\t\tif (this.mode === 'overlay') {\n\t\t\t\tif (this.state === 'close') {\n\t\t\t\t\tthis.closeAll()\n\t\t\t\t} else if (this.state === 'open') {\n\t\t\t\t\t// Overlay open logic if needed\n\t\t\t\t\t// this.open()\n\t\t\t\t}\n\t\t\t} else if (this.mode === 'push') {\n\t\t\t\tsheet.dismiss(this.schmancyContentDrawerID)\n\t\t\t\tif (this.state === 'close') {\n\t\t\t\t\tthis.closeAll()\n\t\t\t\t} else if (this.state === 'open') {\n\t\t\t\t\tthis.open()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Open the sheet by sliding it into view.\n\t */\n\topen() {\n\t\t// \"onBegin\" logic from the old `animate(...)`\n\t\tif (this.mode === 'overlay') {\n\t\t\tthis.sheet.style.position = 'fixed'\n\t\t} else {\n\t\t\tthis.sheet.style.position = 'relative'\n\t\t}\n\t\tthis.sheet.style.display = 'block'\n\n\t\t// --- 2) Use native Web Animations API ---\n\t\tthis.sheet.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 0, transform: 'translateX(100%)' },\n\t\t\t\t{ opacity: 1, transform: 'translateX(0%)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 500,\n\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t},\n\t\t)\n\t\t// No return is needed if you don't rely on the result\n\t}\n\n\t/**\n\t * Close everything (modal sheet + the sheet itself).\n\t */\n\tcloseAll() {\n\t\t// Merge them into a single subscription,\n\t\t// so that everything closes in parallel.\n\t\tmerge(from(this.closeModalSheet()), from(this.closeSheet())).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\t/**\n\t * Dismiss the \"modal sheet.\"\n\t * This just returns an Observable that completes immediately.\n\t */\n\tcloseModalSheet() {\n\t\treturn of(true).pipe(tap(() => sheet.dismiss(this.schmancyContentDrawerID)))\n\t}\n\n\t/**\n\t * Slide the sheet out of view + hide it.\n\t * Return an Observable so we can merge it with other close operations.\n\t */\n\tcloseSheet() {\n\t\t// --- 2) Use native Web Animations API and wrap in an Observable ---\n\t\treturn new Observable<void>(observer => {\n\t\t\tconst animation = this.sheet.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 1, transform: 'translateX(0%)' },\n\t\t\t\t\t{ opacity: 1, transform: 'translateX(100%)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 500,\n\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tanimation.onfinish = () => {\n\t\t\t\t// \"onComplete\" logic\n\t\t\t\tthis.sheet.style.display = 'none'\n\t\t\t\tobserver.next()\n\t\t\t\tobserver.complete()\n\t\t\t}\n\t\t})\n\t}\n\n\tprotected render() {\n\t\tconst sheetClasses = {\n\t\t\tblock: this.mode === 'push',\n\t\t\t'absolute z-50': this.mode === 'overlay',\n\t\t\t'opacity-1': this.mode === 'overlay' && this.state === 'open',\n\t\t}\n\n\t\tconst styles = {\n\t\t\tminWidth: `${this.minWidth}px`,\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\n\t\treturn html`\n\t\t\t<section id=\"sheet\" class=\"${this.classMap(sheetClasses)}\" style=${this.styleMap(styles)}>\n\t\t\t\t<schmancy-area name=\"${this.schmancyContentDrawerID}\">\n\t\t\t\t\t<slot name=\"placeholder\"></slot>\n\t\t\t\t</schmancy-area>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-content-drawer-sheet': SchmancyContentDrawerSheet\n\t}\n}\n","import { SchmancyEvents } from '@schmancy/types/events'\nimport { debounceTime, Subject } from 'rxjs'\n\nclass Drawer {\n\tprivate $drawer = new Subject<{\n\t\tself: HTMLElement\n\t\tstate: boolean\n\t}>()\n\tconstructor() {\n\t\tthis.$drawer.pipe(debounceTime(10)).subscribe(data => {\n\t\t\tif (data.state) {\n\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tstate: 'open',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tstate: 'close',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n\topen(self?: HTMLElement) {\n\t\tthis.$drawer.next({\n\t\t\tself,\n\t\t\tstate: true,\n\t\t})\n\t}\n\tclose(self?: HTMLElement) {\n\t\tthis.$drawer.next({\n\t\t\tself,\n\t\t\tstate: false,\n\t\t})\n\t}\n}\n\nexport const schmancyNavDrawer = new Drawer()\nconst $drawer = schmancyNavDrawer\n\nexport { $drawer }\n","import { createContext } from '@lit/context'\nexport type TSchmancyDrawerNavbarMode = 'push' | 'overlay' | undefined\nexport const SchmancyDrawerNavbarMode = createContext<TSchmancyDrawerNavbarMode>('push')\n\nexport type TSchmancyDrawerNavbarState = 'open' | 'close' | undefined\nexport const SchmancyDrawerNavbarState = createContext<TSchmancyDrawerNavbarState>('close')\n","import { consume } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport {\n\tSchmancyDrawerNavbarMode,\n\tSchmancyDrawerNavbarState,\n\tTSchmancyDrawerNavbarMode,\n} from '@schmancy/nav-drawer/context'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { SchmancyEvents } from '..'\n\n/**\n * @element schmancy-nav-drawer-appbar\n * @slot toggler - The toggler slot\n * @slot - The default slot\n */\n@customElement('schmancy-nav-drawer-appbar')\nexport class SchmancyDrawerAppbar extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\t@consume({ context: SchmancyDrawerNavbarMode, subscribe: true })\n\t@state()\n\tsidebarMode: TSchmancyDrawerNavbarMode\n\n\t@consume({ context: SchmancyDrawerNavbarState, subscribe: true })\n\t@state()\n\tsidebarOpen\n\n\t@property({ type: Boolean }) toggler = true\n\n\trender() {\n\t\tconst appbarClasses = {\n\t\t\t'block z-50': true,\n\t\t}\n\t\tconst sidebarToggler = {\n\t\t\t'block left-3 z-50': this.sidebarMode === 'overlay',\n\t\t\thidden: this.sidebarMode === 'push',\n\t\t}\n\t\treturn html`\n\t\t\t<schmancy-grid\n\t\t\t\tcols=${this.sidebarMode === 'overlay' && this.toggler ? 'auto 1fr' : '1fr'}\n\t\t\t\tflow=\"col\"\n\t\t\t\tclass=${this.classMap(appbarClasses)}\n\t\t\t\tgap=\"sm\"\n\t\t\t\talign=\"center\"\n\t\t\t>\n\t\t\t\t${when(\n\t\t\t\t\tthis.sidebarMode === 'overlay' && this.toggler,\n\t\t\t\t\t() =>\n\t\t\t\t\t\thtml`<slot name=\"toggler\">\n\t\t\t\t\t\t\t<div class=\"${this.classMap(sidebarToggler)}\">\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\t\t\t\t\t\t\t\tdetail: { state: this.sidebarOpen === 'open' ? 'close' : 'open' },\n\t\t\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\t\tthis.sidebarOpen === 'close',\n\t\t\t\t\t\t\t\t\t\t() => html`menu`,\n\t\t\t\t\t\t\t\t\t\t() => html`menu_open`,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</slot>`,\n\t\t\t\t)}\n\n\t\t\t\t<slot> </slot>\n\t\t\t</schmancy-grid>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer-appbar': SchmancyDrawerAppbar\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { fromEvent, takeUntil } from 'rxjs'\n\n@customElement('schmancy-nav-drawer-content')\nexport class SchmancyNavigationDrawerContent extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tinset: 0;\n\t\toverflow-y: auto;\n\t}\n`) {\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tfromEvent(this, 'scroll')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\tthis.parentElement.dispatchEvent(new CustomEvent('scroll', { detail: e, bubbles: true, composed: true }))\n\t\t\t})\n\t}\n\trender() {\n\t\treturn html` <slot></slot> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer-content': SchmancyNavigationDrawerContent\n\t}\n}\n","import { provide } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { debounceTime, distinctUntilChanged, fromEvent, map, takeUntil, tap } from 'rxjs'\nimport { SchmancyEvents } from '..'\nimport { fullHeight } from './../directives/height'\nimport {\n\tSchmancyDrawerNavbarMode,\n\tSchmancyDrawerNavbarState,\n\tTSchmancyDrawerNavbarMode,\n\tTSchmancyDrawerNavbarState,\n} from './context'\n\n/**\n * @element schmancy-nav-drawer\n * @slot appbar - The appbar slot\n * @slot - The content slot\n */\n@customElement('schmancy-nav-drawer')\nexport class SchmancyNavigationDrawer extends $LitElement(css`\n\t:host {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\toverflow: hidden;\n\t\t/* Initially hide the component until it’s ready */\n\t\tvisibility: hidden;\n\t}\n\t/* Once the component is ready, remove the hidden style */\n\t:host([data-ready]) {\n\t\tvisibility: visible;\n\t}\n`) {\n\t// fullscreen property\n\t@property({ type: Boolean })\n\tfullscreen: boolean = false\n\n\t/**\n\t * The breakpoint for the sidebar based on Tailwind CSS breakpoints.\n\t * Accepts: \"sm\", \"md\", \"lg\", or \"xl\".\n\t *\n\t * The following default values are used:\n\t * - sm: 640px\n\t * - md: 768px (default)\n\t * - lg: 1024px\n\t * - xl: 1280px\n\t *\n\t * @attr breakpoint\n\t * @type {\"sm\" | \"md\" | \"lg\" | \"xl\"}\n\t */\n\t@property({ type: String, attribute: 'breakpoint' })\n\tbreakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\t/**\n\t * Mapping of Tailwind breakpoint tokens to their numeric pixel values.\n\t */\n\tprivate static BREAKPOINTS: Record<'sm' | 'md' | 'lg' | 'xl', number> = {\n\t\tsm: 640,\n\t\tmd: 768,\n\t\tlg: 1024,\n\t\txl: 1280,\n\t}\n\n\t/**\n\t * The mode of the sidebar.\n\t */\n\t@provide({ context: SchmancyDrawerNavbarMode })\n\t@state()\n\tmode: TSchmancyDrawerNavbarMode\n\n\t/**\n\t * The open/close state of the sidebar.\n\t */\n\t@provide({ context: SchmancyDrawerNavbarState })\n\t@property()\n\topen: TSchmancyDrawerNavbarState\n\n\t/**\n\t * A flag indicating that the initial state has been set.\n\t */\n\t@state()\n\tprivate _initialized = false\n\n\t/**\n\t * In firstUpdated, we can safely read attribute-set properties.\n\t * We also initialize our state and subscribe to events.\n\t */\n\tfirstUpdated() {\n\t\t// Set the initial state based on the current window width.\n\t\tthis.updateState(window.innerWidth)\n\t\t// Mark the component as ready\n\t\tthis._initialized = true\n\t\tthis.setAttribute('data-ready', '')\n\n\t\t// Subscribe to window resize events.\n\t\tfromEvent(window, 'resize')\n\t\t\t.pipe(\n\t\t\t\t// Extract the inner width.\n\t\t\t\tmap(event => (event.target as Window).innerWidth),\n\t\t\t\t// Determine if we're above the breakpoint.\n\t\t\t\tmap(width => width >= SchmancyNavigationDrawer.BREAKPOINTS[this.breakpoint]),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tdebounceTime(100),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(isLargeScreen => {\n\t\t\t\tif (isLargeScreen) {\n\t\t\t\t\tthis.mode = 'push'\n\t\t\t\t\tthis.open = 'open'\n\t\t\t\t} else {\n\t\t\t\t\tthis.mode = 'overlay'\n\t\t\t\t\tthis.open = 'close'\n\t\t\t\t}\n\t\t\t})\n\n\t\t// Listen to the custom toggle event.\n\t\tfromEvent(window, SchmancyEvents.NavDrawer_toggle)\n\t\t\t.pipe(\n\t\t\t\ttap((event: CustomEvent) => {\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap((event: CustomEvent) => event.detail.state),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdebounceTime(10),\n\t\t\t)\n\t\t\t.subscribe(state => {\n\t\t\t\tconsole.log('Received toggle event:', state)\n\t\t\t\t// When in push mode, ignore a request to close the sidebar.\n\t\t\t\tif (this.mode === 'push' && state === 'close') return\n\t\t\t\tthis.open = state\n\t\t\t})\n\t}\n\n\t/**\n\t * Helper method to update state based on a given width.\n\t */\n\tprivate updateState(width: number) {\n\t\tconst isLargeScreen = width >= SchmancyNavigationDrawer.BREAKPOINTS[this.breakpoint]\n\t\tthis.mode = isLargeScreen ? 'push' : 'overlay'\n\t\tthis.open = isLargeScreen ? 'open' : 'close'\n\t}\n\n\tprotected render() {\n\t\t// Optionally, you can check _initialized here,\n\t\t// but the CSS will already hide the component until it's ready.\n\t\tif (!this._initialized) return nothing\n\n\t\treturn html`\n\t\t\t<schmancy-grid\n\t\t\t\tcols=${this.fullscreen ? '1fr' : 'auto 1fr'}\n\t\t\t\trows=\"1fr\"\n\t\t\t\tflow=\"col\"\n\t\t\t\tjustify=\"stretch\"\n\t\t\t\talign=\"stretch\"\n\t\t\t\t${fullHeight()}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-grid>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer': SchmancyNavigationDrawer\n\t}\n}\n","import { consume } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { SchmancyEvents, SchmancyTheme, color } from '..'\nimport {\n\tSchmancyDrawerNavbarMode,\n\tSchmancyDrawerNavbarState,\n\tTSchmancyDrawerNavbarMode,\n\tTSchmancyDrawerNavbarState,\n} from './context'\n\n// Animation configuration constants.\nconst ANIMATION_EASING = 'cubic-bezier(0.5, 0.01, 0.25, 1)'\nconst OVERLAY_ANIM_DURATION_OPEN = 200\nconst OVERLAY_ANIM_DURATION_CLOSE = 150\nconst NAV_ANIM_DURATION = 200\n\n@customElement('schmancy-nav-drawer-navbar')\nexport class SchmancyNavigationDrawerSidebar extends $LitElement() {\n\t// Consume context values. Renamed from \"state\" to \"drawerState\" to avoid confusion.\n\t@consume({ context: SchmancyDrawerNavbarMode, subscribe: true })\n\t@state()\n\tmode!: TSchmancyDrawerNavbarMode\n\n\t@consume({ context: SchmancyDrawerNavbarState, subscribe: true })\n\t@state()\n\tdrawerState!: TSchmancyDrawerNavbarState\n\n\t@query('#overlay') overlay!: HTMLElement\n\t@query('nav') nav!: HTMLElement\n\n\t@property({ type: String }) width = '320px'\n\t@state() private _initialized = false\n\n\t/**\n\t * firstUpdated()\n\t * Set initial styles based on the current mode and consumed state.\n\t */\n\tfirstUpdated() {\n\t\tif (this.mode === 'overlay') {\n\t\t\tif (this.drawerState === 'close') {\n\t\t\t\tthis.nav.style.transform = 'translateX(-100%)'\n\t\t\t\tthis.overlay.style.display = 'none'\n\t\t\t} else if (this.drawerState === 'open') {\n\t\t\t\tthis.nav.style.transform = 'translateX(0)'\n\t\t\t\tthis.overlay.style.display = 'block'\n\t\t\t\tthis.overlay.style.opacity = '0.4'\n\t\t\t}\n\t\t} else if (this.mode === 'push') {\n\t\t\t// In push mode, the nav is always visible and the overlay hidden.\n\t\t\tthis.nav.style.transform = 'translateX(0)'\n\t\t\tthis.overlay.style.display = 'none'\n\t\t}\n\t\tthis._initialized = true\n\t}\n\n\t/**\n\t * updated()\n\t * Trigger animations when either the consumed mode or state changes.\n\t */\n\tupdated(changedProperties: Map<string, any>) {\n\t\tconsole.log(this._initialized, changedProperties)\n\t\tif (!this._initialized) return\n\n\t\tif (changedProperties.has('drawerState') || changedProperties.has('mode')) {\n\t\t\tconsole.log('State updated:', this.drawerState, this.mode)\n\t\t\tif (this.mode === 'overlay') {\n\t\t\t\tif (this.drawerState === 'open') {\n\t\t\t\t\t// Animate only if the nav isn’t already open.\n\t\t\t\t\tif (this.nav.style.transform !== 'translateX(0)') {\n\t\t\t\t\t\tthis.openOverlay()\n\t\t\t\t\t\tthis.showNavDrawer()\n\t\t\t\t\t}\n\t\t\t\t} else if (this.drawerState === 'close') {\n\t\t\t\t\tconsole.log(this.nav.style.transform)\n\t\t\t\t\tif (this.nav.style.transform !== 'translateX(-100%)') {\n\t\t\t\t\t\tthis.hideNavDrawer()\n\t\t\t\t\t\tthis.closeOverlay()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this.mode === 'push') {\n\t\t\t\tif (this.nav.style.transform !== 'translateX(0)') {\n\t\t\t\t\tthis.showNavDrawer()\n\t\t\t\t}\n\t\t\t\tif (this.overlay.style.display !== 'none') {\n\t\t\t\t\tthis.closeOverlay()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Animate the overlay to fade in.\n\t */\n\topenOverlay() {\n\t\tthis.overlay.style.display = 'block'\n\t\tthis.overlay.animate([{ opacity: 0 }, { opacity: 0.4 }], {\n\t\t\tduration: OVERLAY_ANIM_DURATION_OPEN,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\t/**\n\t * Animate the overlay to fade out, then hide it.\n\t */\n\tcloseOverlay() {\n\t\tconst animation = this.overlay.animate([{ opacity: 0.4 }, { opacity: 0 }], {\n\t\t\tduration: OVERLAY_ANIM_DURATION_CLOSE,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tanimation.onfinish = () => {\n\t\t\tthis.overlay.style.display = 'none'\n\t\t}\n\t}\n\tshowNavDrawer() {\n\t\t// Use computed style if needed, but here we directly update inline style after animation.\n\t\tconst animation = this.nav.animate([{ transform: 'translateX(-100%)' }, { transform: 'translateX(0)' }], {\n\t\t\tduration: NAV_ANIM_DURATION,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tanimation.onfinish = () => {\n\t\t\tthis.nav.style.transform = 'translateX(0)'\n\t\t}\n\t}\n\n\thideNavDrawer() {\n\t\tconst animation = this.nav.animate([{ transform: 'translateX(0)' }, { transform: 'translateX(-100%)' }], {\n\t\t\tduration: NAV_ANIM_DURATION,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tanimation.onfinish = () => {\n\t\t\tthis.nav.style.transform = 'translateX(-100%)'\n\t\t}\n\t}\n\n\t/**\n\t * Handle overlay click events by dispatching a custom event\n\t * to close the navigation drawer.\n\t */\n\tprivate handleOverlayClick() {\n\t\twindow.dispatchEvent(\n\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\tdetail: { state: 'close' },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprotected render() {\n\t\tconst sidebarClasses = {\n\t\t\t'p-[16px] max-w-[360px] w-fit h-full overflow-auto': true,\n\t\t\tblock: this.mode === 'push',\n\t\t\t'fixed inset-0 z-50': this.mode === 'overlay',\n\t\t}\n\t\tconst overlayClass = {\n\t\t\t'fixed inset-0 z-49 hidden': true,\n\t\t}\n\t\tconst styleMap = {\n\t\t\twidth: this.width,\n\t\t}\n\n\t\treturn html`\n\t\t\t<nav\n\t\t\t\tstyle=${this.styleMap(styleMap)}\n\t\t\t\tclass=\"${this.classMap({ ...sidebarClasses })}\"\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</nav>\n\t\t\t<div\n\t\t\t\tid=\"overlay\"\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.scrim,\n\t\t\t\t})}\n\t\t\t\t@click=${this.handleOverlayClick}\n\t\t\t\tclass=\"${this.classMap({ ...overlayClass })}\"\n\t\t\t></div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer-navbar': SchmancyNavigationDrawerSidebar\n\t}\n}\n","import { bufferTime, concatMap, filter, fromEvent, map, of, Subject, take, tap, timeout, zip } from 'rxjs'\nimport { SchmancyTeleportation } from './teleport.component'\n\nexport type WhereAreYouRickyEvent = CustomEvent<{\n\tid: string\n\tcallerID: number\n}>\n\nexport const WhereAreYouRicky = 'whereAreYouRicky'\n\nexport type HereMortyEvent = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\n\nexport type FLIP_REQUEST = {\n\tfrom: {\n\t\trect: DOMRect\n\t\telement?: HTMLElement\n\t}\n\tto: {\n\t\trect: DOMRect\n\t\telement: HTMLElement\n\t}\n\tstagger?: number\n\thost: HTMLElement\n}\nexport const HereMorty = 'hereMorty'\n\nclass Teleportation {\n\tactiveTeleportations = new Map<string, DOMRect>()\n\tflipRequests = new Subject<FLIP_REQUEST>()\n\n\tconstructor() {\n\t\tthis.flipRequests\n\t\t\t.pipe(\n\t\t\t\tbufferTime(1),\n\t\t\t\tmap(requests =>\n\t\t\t\t\trequests.map(({ from, to, host }, i) => ({\n\t\t\t\t\t\tfrom,\n\t\t\t\t\t\tto,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\ti,\n\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t\tconcatMap(requests => zip(requests.map(request => of(this.flip(request))))),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tfind = (component: SchmancyTeleportation) => {\n\t\treturn zip([\n\t\t\tfromEvent<HereMortyEvent>(window, HereMorty).pipe(\n\t\t\t\tfilter(\n\t\t\t\t\te =>\n\t\t\t\t\t\t!!e.detail.component.uuid &&\n\t\t\t\t\t\t!!component.id &&\n\t\t\t\t\t\te.detail.component.id === component.id &&\n\t\t\t\t\t\te.detail.component.uuid !== component.uuid,\n\t\t\t\t),\n\t\t\t\tmap(e => e.detail.component),\n\t\t\t\ttake(1),\n\t\t\t),\n\t\t\tof(component).pipe(\n\t\t\t\ttap(() => {\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent<WhereAreYouRickyEvent['detail']>(WhereAreYouRicky, {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\tid: component.id,\n\t\t\t\t\t\t\t\tcallerID: component.uuid,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t),\n\t\t]).pipe(\n\t\t\tmap(([component]) => component),\n\t\t\ttimeout(0),\n\t\t)\n\t}\n\n\tflip = (request: {\n\t\tfrom: {\n\t\t\trect: DOMRect\n\t\t}\n\t\tto: {\n\t\t\telement: HTMLElement\n\t\t\trect: DOMRect\n\t\t}\n\t\thost: HTMLElement\n\t\ti: number\n\t}) => {\n\t\tconst { from, to } = request\n\n\t\t// Prepare the element for animation\n\t\tconst originalZIndex = to.element.style.zIndex\n\t\tto.element.style.transformOrigin = 'top left'\n\t\tto.element.style.setProperty('visibility', 'visible')\n\t\tto.element.style.zIndex = '1000'\n\n\t\t// \"onBegin\" logic goes here (since Web Animations doesn't have onBegin).\n\t\t// If you had more logic, place it here:\n\t\t// e.g., console.log('Starting FLIP animation...');\n\n\t\t// Calculate starting and ending transforms\n\t\tconst startX = from.rect.left - to.rect.left\n\t\tconst startY = from.rect.top - to.rect.top\n\t\tconst startScaleX = from.rect.width / to.rect.width\n\t\tconst startScaleY = from.rect.height / to.rect.height\n\n\t\t// Create keyframes\n\t\tconst keyframes: Keyframe[] = [\n\t\t\t{\n\t\t\t\ttransform: `translate(${startX}px, ${startY}px) scale(${startScaleX}, ${startScaleY})`,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttransform: 'translate(0, 0) scale(1, 1)',\n\t\t\t},\n\t\t]\n\n\t\t// Use native Web Animations API\n\t\tconst animation = to.element.animate(keyframes, {\n\t\t\tduration: 250,\n\t\t\tdelay: 10, // if desired\n\t\t\t// Approximate 'inOutQuad' via a cubic-bezier easing.\n\t\t\t// You can adjust these values to taste, or use a standard one:\n\t\t\teasing: 'cubic-bezier(0.455, 0.03, 0.515, 0.955)',\n\t\t\t// or simply 'ease-in-out'\n\t\t})\n\n\t\t// \"onComplete\" logic goes here\n\t\tanimation.onfinish = () => {\n\t\t\tto.element.style.zIndex = originalZIndex\n\t\t\tto.element.style.transformOrigin = ''\n\t\t\t// If you have additional cleanup, place it here\n\t\t\t// e.g., console.log('FLIP animation completed!');\n\t\t}\n\t}\n}\n\nexport const teleport = new Teleportation()\nexport default teleport\n","import { Observable, interval } from 'rxjs'\nimport { distinctUntilChanged, map, take } from 'rxjs/operators'\n\n// Function to monitor element's bounding client rect\nexport function watchElementRect(element: Element): Observable<DOMRectReadOnly> {\n\treturn interval(50).pipe(\n\t\t// startWith(true),\n\t\tmap(() => element.getBoundingClientRect()),\n\t\tdistinctUntilChanged(\n\t\t\t(prev, curr) =>\n\t\t\t\tprev.width === curr.width &&\n\t\t\t\tprev.height === curr.height &&\n\t\t\t\tprev.top === curr.top &&\n\t\t\t\tprev.right === curr.right &&\n\t\t\t\tprev.bottom === curr.bottom &&\n\t\t\t\tprev.left === curr.left,\n\t\t),\n\t\ttake(1),\n\t)\n}\n","import { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { filter, fromEvent, merge, of, takeUntil, tap, throwIfEmpty } from 'rxjs'\nimport { FINDING_MORTIES, FINDING_MORTIES_EVENT, HERE_RICKY, HERE_RICKY_EVENT } from '..'\nimport {\n\tHereMorty,\n\tHereMortyEvent,\n\tWhereAreYouRicky,\n\tWhereAreYouRickyEvent,\n\tdefault as teleport,\n\tdefault as teleportationService,\n} from './teleport.service'\nimport { watchElementRect } from './watcher'\nimport { $LitElement } from '@mixins/index'\n@customElement('schmancy-teleport')\nexport class SchmancyTeleportation extends $LitElement(css``) {\n\t/**\n\t * @attr {string} uuid - The component tag to teleport\n\t * @readonly\n\t */\n\t@property({ type: Number, reflect: true }) uuid = Math.floor(Math.random() * Date.now())\n\n\t/**\n\t * @attr {string} id - The component tag to teleport\n\t * @required\n\t */\n\t@property({ type: String }) id!: string\n\n\t@property({ type: Number }) delay = 0\n\n\tdebugging = import.meta.env.DEV ? true : false\n\n\tget _slottedChildren() {\n\t\tconst slot = this.shadowRoot.querySelector('slot')\n\t\treturn slot.assignedElements({ flatten: true })\n\t}\n\n\tconnectedCallback(): void {\n\t\tif (this.id === undefined) throw new Error('id is required')\n\t\tsuper.connectedCallback()\n\t\tmerge(\n\t\t\tfromEvent<FINDING_MORTIES_EVENT>(window, FINDING_MORTIES).pipe(\n\t\t\t\ttap({\n\t\t\t\t\tnext: () => {\n\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\tnew CustomEvent<HERE_RICKY_EVENT['detail']>(HERE_RICKY, {\n\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\tcomponent: this,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t\tfromEvent<WhereAreYouRickyEvent>(window, WhereAreYouRicky).pipe(\n\t\t\t\ttap({\n\t\t\t\t\tnext: e => {\n\t\t\t\t\t\tif (e.detail.id === this.id && this.uuid && e.detail.callerID !== this.uuid) {\n\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent<HereMortyEvent['detail']>(HereMorty, {\n\t\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\t\tcomponent: this,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe()\n\t}\n\n\tasync firstUpdated() {\n\t\tof(teleportationService.activeTeleportations.get(this.id))\n\t\t\t.pipe(\n\t\t\t\tfilter(a => !!a),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tthrowIfEmpty(),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: domRect => {\n\t\t\t\t\tconsole.count('teleport')\n\t\t\t\t\tthis.style.setProperty('visibility', 'hidden')\n\t\t\t\t\t// teleport.flipRequests.next({ from: component, to: this, stagger: 0 })\n\t\t\t\t\twatchElementRect(this)\n\t\t\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t\t\t.subscribe({\n\t\t\t\t\t\t\tnext: e => {\n\t\t\t\t\t\t\t\t// console.log(e)\n\t\t\t\t\t\t\t\tteleportationService.activeTeleportations.set(this.id, e)\n\t\t\t\t\t\t\t\tteleport.flipRequests.next({\n\t\t\t\t\t\t\t\t\tfrom: {\n\t\t\t\t\t\t\t\t\t\trect: domRect,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tto: {\n\t\t\t\t\t\t\t\t\t\trect: e,\n\t\t\t\t\t\t\t\t\t\telement: this._slottedChildren[0] as HTMLElement,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\thost: this,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\terror: () => {\n\t\t\t\t\tthis.style.setProperty('visibility', 'visible')\n\t\t\t\t\twatchElementRect(this)\n\t\t\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t\t\t.subscribe({\n\t\t\t\t\t\t\tnext: e => {\n\t\t\t\t\t\t\t\tconsole.log(e)\n\t\t\t\t\t\t\t\tteleportationService.activeTeleportations.set(this.id, e)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tcomplete: () => {},\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-teleport': SchmancyTeleportation\n\t}\n}\n"],"names":["SchmancyCardMedia","TailwindElement","css","html","customElement","SchmancyCard","constructor","super","arguments","this","type","elevation","classes","includes","classMap","__decorateClass","property","prototype","Number","SchmancyCardContent","render","onSurface","SchmancyTheme","sys","color","surface","on","onSurfaceVariant","onVariant","src","fit","styleMap","height","String","reflect","schmancyContentDrawer","$drawer","Subject","pipe","subscribe","data","action","ref","dispatchEvent","CustomEvent","SchmancyEvents","ContentDrawerToggle","detail","state","bubbles","composed","component","title","next","e","SchmancyContentDrawerSheetMode","createContext","SchmancyContentDrawerSheetState","SchmancyContentDrawerID","Math","floor","random","Date","now","toString","SchmancyContentDrawerMaxHeight","SchmancyContentDrawerMinWidth","SchmancyContentDrawer","$LitElement","minWidth","main","sheet","schmancyContentDrawerID","maxHeight","merge","fromEvent","window","ContentDrawerResize","startWith","tap","map","clientWidth","innerWidth","width","debounceTime","innerHeight","getOffsetTop","style","setProperty","distinctUntilChanged","takeUntil","disconnecting","lgScreen","mode","open","event","stopPropagation","area","push","historyStrategy","uid","element","offsetTop","offsetParent","nothing","provide","context","queryAssignedElements","flatten","SchmancyContentDrawerMain","connectedCallback","drawerMinWidth","changedProperties","update","has","styles","when","consume","SchmancyContentDrawerSheet","updated","closeAll","dismiss","position","display","animate","opacity","transform","duration","easing","from","closeModalSheet","closeSheet","of","Observable","observer","onfinish","complete","sheetClasses","block","query","slot","schmancyNavDrawer","NavDrawer_toggle","self","SchmancyDrawerNavbarMode","SchmancyDrawerNavbarState","SchmancyDrawerAppbar","toggler","sidebarToggler","sidebarMode","hidden","sidebarOpen","Boolean","SchmancyNavigationDrawerContent","parentElement","SchmancyNavigationDrawer","fullscreen","breakpoint","_initialized","firstUpdated","updateState","setAttribute","target","BREAKPOINTS","isLargeScreen","fullHeight","sm","md","lg","xl","attribute","ANIMATION_EASING","SchmancyNavigationDrawerSidebar","drawerState","nav","overlay","openOverlay","showNavDrawer","hideNavDrawer","closeOverlay","fill","handleOverlayClick","sidebarClasses","bgColor","container","scrim","WhereAreYouRicky","HereMorty","teleport","activeTeleportations","Map","flipRequests","find","zip","filter","uuid","id","take","callerID","timeout","flip","request","to","originalZIndex","zIndex","transformOrigin","keyframes","rect","left","top","delay","bufferTime","requests","host","i","concatMap","watchElementRect","interval","getBoundingClientRect","prev","curr","right","bottom","SchmancyTeleportation","debugging","shadowRoot","querySelector","assignedElements","Error","FINDING_MORTIES","HERE_RICKY","teleportationService","get","a","throwIfEmpty","domRect","set","_slottedChildren","error"],"mappings":"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"}
|
package/dist/teleport.js
CHANGED
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-D_AQKXGk.js","sources":["../src/input/input-v2.ts","../src/input/input.ts"],"sourcesContent":["import { html, LitElement, nothing, PropertyValueMap } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { distinctUntilChanged, filter, fromEvent, map, takeUntil } from 'rxjs'\n\nimport { TailwindElement } from '@mixins/index'\n\n// color directive + theme interface\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport style from './input.scss?inline'\n\n// If you want to be form-associated, define the type on `ElementInternals`.\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sch-input': SchmancyInputV2\n\t}\n}\n\ntype EventDetails = {\n\tvalue: string\n}\n\n/**\n * Custom events the component may emit:\n * - 'input': on every keystroke\n * - 'change': on native blur/change\n * - 'enter': specifically when user presses Enter\n */\nexport type SchmancyInputInputEventV2 = CustomEvent<EventDetails>\nexport type SchmancyInputChangeEventV2 = CustomEvent<EventDetails>\nexport type SchmancyInputEnterEventV2 = CustomEvent<EventDetails>\n\n/**\n * Size variants for the input.\n * - sm: Small, compact input (40px height)\n * - md: Medium input (50px height, default)\n * - lg: Large, spacious input (60px height)\n */\nexport type InputSize = 'sm' | 'md' | 'lg'\n\n/**\n * Enhanced version of the SchmancyInput component with improved form integration\n * and compatibility with legacy API.\n *\n * This component uses the native form association API and maintains parity with\n * native input behaviors while providing a stylish, accessible interface.\n */\n@customElement('sch-input')\nexport default class SchmancyInputV2 extends TailwindElement(style) {\n\t// ----------------------------\n\t// A) Public properties\n\t// ----------------------------\n\n\t/** Auto-incrementing counter for generating unique IDs */\n\tstatic _idCounter = 0\n\n\t@property({ reflect: true })\n\tpublic override id = ''\n\n\t/**\n\t * The label for the control. If populated, we render a `<label for=\"...\">`.\n\t * If empty, we add an `aria-label` to the <input> for better screenreader support.\n\t */\n\t@property({ type: String }) label = ''\n\n\t/**\n\t * The type of input. (e.g. 'text', 'password', 'email', etc.)\n\t */\n\t@property({ reflect: true })\n\tpublic type: HTMLInputElement['type'] = 'text'\n\n\t/**\n\t * Name attribute (for form submissions). By default, a unique fallback.\n\t */\n\t@property()\n\tpublic name = `name_${Date.now()}`\n\n\t@property()\n\tpublic placeholder = ''\n\n\t/** Current value of the input. */\n\t@property({ type: String, reflect: true })\n\tpublic value = ''\n\n\t/** Pattern validation attribute. */\n\t@property({ type: String, reflect: true })\n\tpublic pattern?: string\n\n\t/** Whether the control is required for form validation. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic required = false\n\n\t/** Whether the control is disabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\t/** Whether the input is read-only. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic readonly = false\n\n\t/** If true, we visually show a pointer cursor even if readOnly. */\n\t@property({ type: Boolean, reflect: true }) public clickable = false\n\n\t/** Whether browser spellcheck is enabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic spellcheck = false\n\n\t/**\n\t * Text alignment within the input.\n\t * - 'left' | 'center' | 'right'\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic align: 'left' | 'center' | 'right' = 'left'\n\n\t/** inputmode attribute (affects on-screen keyboards in mobile). */\n\t@property()\n\tpublic inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n\n\t@property({ type: Number, reflect: true })\n\tpublic minlength?: number\n\n\t@property({ type: Number })\n\tpublic maxlength?: number\n\n\t@property()\n\tpublic min?: string\n\n\t@property()\n\tpublic max?: string\n\n\t@property({ type: Number, reflect: true })\n\tpublic step?: number\n\n\t/** If true, auto-focus this input on first render. */\n\t@property({ type: Boolean })\n\tpublic autofocus = false\n\n\t/** Autocomplete/autofill hints. */\n\t@property({ type: String, reflect: true })\n\tpublic autocomplete: AutoFill = 'on'\n\n\t/**\n\t * tabIndex for focusing by tab key. Typically 0 or -1.\n\t */\n\t@property({ type: Number, reflect: true })\n\tpublic override tabIndex = 0\n\n\t/**\n\t * A small hint text or error message to display under the input.\n\t */\n\t@property()\n\tpublic hint?: string\n\n\t/**\n\t * If true, we style the input as an error state, and possibly display\n\t * the hint as an error message.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic error = false\n\n\t/**\n\t * The size of the input.\n\t * - 'sm': Small, compact size\n\t * - 'md': Medium size (default)\n\t * - 'lg': Large size\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic size: InputSize = 'md'\n\n\t/**\n\t * Controls when validation should show.\n\t * - 'always' - Always show validation\n\t * - 'touched' - Only show after field has been focused and then blurred\n\t * - 'dirty' - Only show after value has changed\n\t * - 'submitted' - Only show after form submission\n\t */\n\t@property({ type: String })\n\tpublic validateOn: 'always' | 'touched' | 'dirty' | 'submitted' = 'touched'\n\n\t/**\n\t * For datalist support\n\t */\n\t@property({ type: String })\n\tpublic list?: string\n\n\t/**\n\t * The validation message to display (mimics native input.validationMessage)\n\t */\n\t@property({ type: String })\n\tpublic validationMessage = ''\n\n\t// ----------------------------\n\t// B) Queries & Refs\n\t// ----------------------------\n\t@query('input') private inputElement!: HTMLInputElement\n\tprivate inputRef = createRef<HTMLInputElement>()\n\n\t// ----------------------------\n\t// C) Internal States\n\t// ----------------------------\n\n\t/**\n\t * For integration with browser's autofill support\n\t */\n\t@state()\n\tprivate isAutofilled = false\n\n\t/**\n\t * Track user interaction state for validation\n\t */\n\t@state()\n\tprivate touched = false\n\n\t@state()\n\tprivate dirty = false\n\n\t@state()\n\tprivate submitted = false\n\n\t/**\n\t * Store the default value for reset behavior\n\t */\n\t@state()\n\tprivate defaultValue = ''\n\n\t// ----------------------------\n\t// D) Form-associated logic\n\t// ----------------------------\n\tstatic formAssociated = true\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true, // so focus() goes to <input>\n\t}\n\n\tprivate internals?: ElementInternals\n\tprivate formResetObserver?: MutationObserver\n\n\tconstructor() {\n\t\tsuper()\n\t\tif ('attachInternals' in this) {\n\t\t\ttry {\n\t\t\t\tthis.internals = this.attachInternals()\n\t\t\t} catch {\n\t\t\t\t// no-op for older browsers / polyfills\n\t\t\t\tthis.internals = undefined\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * If user did not provide an ID, auto-generate one so <label for=\"...\">\n\t * and various aria-* attributes can reference it.\n\t */\n\tprotected override willUpdate(changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>) {\n\t\tif (!this.id) {\n\t\t\tthis.id = `sch-input-${SchmancyInputV2._idCounter++}`\n\t\t}\n\t\tsuper.willUpdate(changedProps)\n\t}\n\n\t/** The form this element is associated with, if any. */\n\tget form() {\n\t\treturn this.internals?.form ?? null\n\t}\n\n\tprotected override updated(changedProps: Map<string, unknown>) {\n\t\tsuper.updated(changedProps)\n\n\t\t// Handle value changes\n\t\tif (changedProps.has('value')) {\n\t\t\t// If value changes from original default, mark as dirty\n\t\t\tif (this.value !== this.defaultValue) {\n\t\t\t\tthis.dirty = true\n\t\t\t}\n\n\t\t\t// Reflect the current value to the form internals, so it's submitted.\n\t\t\tthis.internals?.setFormValue(this.value)\n\n\t\t\t// Update validation state when value changes\n\t\t\tthis.validateInput()\n\t\t}\n\n\t\t// Handle error state changes\n\t\tif (changedProps.has('error')) {\n\t\t\tthis.updateValidityState()\n\t\t}\n\n\t\t// Store default value if this is the first update\n\t\tif (!this.hasUpdated && changedProps.has('value')) {\n\t\t\tthis.defaultValue = this.value\n\t\t}\n\t}\n\n\t/**\n\t * Connect to the closest form element and set up form integration\n\t */\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Store initial default value for form reset\n\t\tthis.defaultValue = this.value\n\n\t\t// Set up form integration\n\t\tthis.setupFormIntegration()\n\n\t\t// Setup for external label association\n\t\tthis.setupExternalLabelAssociation()\n\t}\n\n\t/**\n\t * Set up form integration with ElementInternals\n\t */\n\tprivate setupFormIntegration() {\n\t\tif (this.internals?.form) {\n\t\t\t// Listen for form reset events\n\t\t\tthis.formResetObserver = new MutationObserver(mutations => {\n\t\t\t\tfor (const mutation of mutations) {\n\t\t\t\t\tif (mutation.type === 'attributes' && mutation.attributeName === 'reset') {\n\t\t\t\t\t\tthis.resetToDefault()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// Observe the form for reset events\n\t\t\tthis.formResetObserver.observe(this.internals.form, {\n\t\t\t\tattributes: true,\n\t\t\t\tchildList: false,\n\t\t\t\tsubtree: false,\n\t\t\t})\n\n\t\t\t// Also directly listen for the reset event\n\t\t\tthis.internals.form.addEventListener('reset', () => {\n\t\t\t\tthis.resetToDefault()\n\t\t\t})\n\n\t\t\t// Listen for form submit events to mark field as submitted\n\t\t\tthis.internals.form.addEventListener('submit', () => {\n\t\t\t\tthis.submitted = true\n\t\t\t\t// Validate on form submission\n\t\t\t\tthis.validateInput(true)\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Set up external label association for native HTML label support\n\t */\n\tprivate setupExternalLabelAssociation() {\n\t\tif (this.id) {\n\t\t\tconst setupLabelClickListener = () => {\n\t\t\t\tconst labels = document.querySelectorAll(`label[for=\"${this.id}\"]`)\n\t\t\t\tlabels.forEach(label => {\n\t\t\t\t\tlabel.addEventListener('click', () => {\n\t\t\t\t\t\tthis.focus()\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// Initialize after DOM is ready\n\t\t\tif (document.readyState === 'complete') {\n\t\t\t\tsetupLabelClickListener()\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener('DOMContentLoaded', setupLabelClickListener)\n\t\t\t}\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\n\t\t// Clean up the form observer\n\t\tif (this.formResetObserver) {\n\t\t\tthis.formResetObserver.disconnect()\n\t\t}\n\n\t\t// Clean up external label click listeners\n\t\tif (this.id) {\n\t\t\tconst labels = document.querySelectorAll(`label[for=\"${this.id}\"]`)\n\t\t\tlabels.forEach(label => {\n\t\t\t\tlabel.removeEventListener('click', () => {\n\t\t\t\t\tthis.focus()\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Reset the input to its default state\n\t */\n\tprivate resetToDefault() {\n\t\tthis.value = this.defaultValue\n\t\tthis.touched = false\n\t\tthis.dirty = false\n\t\tthis.submitted = false\n\t\tthis.error = false\n\t\tthis.validationMessage = ''\n\t\tthis.dispatchEvent(new CustomEvent('reset', { bubbles: true }))\n\t}\n\n\t/**\n\t * Determines if validation errors should be shown based on current state\n\t * and validation strategy\n\t */\n\tprivate shouldShowValidation(forceValidation = false): boolean {\n\t\tif (forceValidation) return true\n\n\t\tswitch (this.validateOn) {\n\t\t\tcase 'always':\n\t\t\t\treturn true\n\t\t\tcase 'touched':\n\t\t\t\treturn this.touched\n\t\t\tcase 'dirty':\n\t\t\t\treturn this.dirty\n\t\t\tcase 'submitted':\n\t\t\t\treturn this.submitted\n\t\t\tdefault:\n\t\t\t\treturn this.touched\n\t\t}\n\t}\n\n\t/**\n\t * Update validity state based on current error state\n\t */\n\tprivate updateValidityState() {\n\t\tif (this.error) {\n\t\t\t// Only set custom validity if validationMessage is provided\n\t\t\tif (this.validationMessage) {\n\t\t\t\tthis.internals?.setValidity({ customError: true }, this.validationMessage, this.inputElement)\n\t\t\t} else {\n\t\t\t\tthis.internals?.setValidity({ customError: true }, 'Invalid input', this.inputElement)\n\t\t\t}\n\t\t} else {\n\t\t\tthis.internals?.setValidity({})\n\t\t}\n\t}\n\n\t/**\n\t * Validate input based on required, pattern, etc.\n\t * This mimics native validation behavior\n\t */\n\tprivate validateInput(forceValidation = false) {\n\t\t// Skip validation for disabled inputs\n\t\tif (this.disabled) return\n\n\t\t// Only show validation errors if we should based on the validation strategy\n\t\tconst shouldValidate = this.shouldShowValidation(forceValidation)\n\n\t\t// Get validity state from internal input if available\n\t\tconst validity: ValidityState = this.inputElement?.validity ?? {\n\t\t\tbadInput: false,\n\t\t\tcustomError: false,\n\t\t\tpatternMismatch: false,\n\t\t\trangeOverflow: false,\n\t\t\trangeUnderflow: false,\n\t\t\tstepMismatch: false,\n\t\t\ttooLong: false,\n\t\t\ttooShort: false,\n\t\t\ttypeMismatch: false,\n\t\t\tvalid: true,\n\t\t\tvalueMissing: false,\n\t\t}\n\n\t\t// Check if the input has an actual validation error (not a custom error)\n\t\tconst hasError = !validity.valid && !validity.customError\n\n\t\tif (shouldValidate && hasError) {\n\t\t\t// There's an error and we should show it\n\t\t\tthis.error = true\n\t\t\tthis.validationMessage = this.inputElement?.validationMessage || ''\n\t\t} else if (validity.valid) {\n\t\t\t// Input is valid, so clear the error state\n\t\t\tthis.error = false\n\n\t\t\t// Only clear validation message if there's no custom error\n\t\t\tif (!validity.customError) {\n\t\t\t\tthis.validationMessage = ''\n\t\t\t}\n\t\t} else if (!shouldValidate) {\n\t\t\t// We shouldn't show validation yet, so clear visual error state\n\t\t\tthis.error = false\n\t\t}\n\n\t\t// Always update internals with current validity state\n\t\tthis.updateValidityState()\n\t}\n\n\t/**\n\t * Check validity without showing validation UI\n\t */\n\tpublic checkValidity() {\n\t\t// Check internal input first\n\t\tconst inputValid = this.inputRef.value?.checkValidity() ?? true\n\n\t\t// Also synchronize with internals API for better form integration\n\t\tif (this.internals && !inputValid) {\n\t\t\tthis.internals.checkValidity()\n\t\t\treturn false\n\t\t}\n\n\t\treturn inputValid\n\t}\n\n\t/**\n\t * Show validation UI and check validity\n\t */\n\tpublic reportValidity() {\n\t\t// Mark as touched and submitted to show validation\n\t\tthis.touched = true\n\t\tthis.submitted = true\n\n\t\t// First check using native input\n\t\tconst inputValid = this.inputRef.value?.reportValidity() ?? true\n\n\t\t// Update our component's validation state with force=true\n\t\tthis.validateInput(true)\n\n\t\t// Also report to internals API for better form integration\n\t\tif (this.internals && !inputValid) {\n\t\t\tthis.internals.reportValidity()\n\t\t\treturn false\n\t\t}\n\n\t\treturn inputValid\n\t}\n\n\t/**\n\t * Set a custom validation error message\n\t */\n\tpublic setCustomValidity(message: string) {\n\t\t// Set on the native input\n\t\tif (this.inputRef.value) {\n\t\t\tthis.inputRef.value.setCustomValidity(message)\n\t\t}\n\n\t\t// Also update our component state\n\t\tthis.validationMessage = message\n\t\tthis.error = message !== '' && this.shouldShowValidation()\n\n\t\t// And update internals\n\t\tif (this.internals) {\n\t\t\tif (message) {\n\t\t\t\tthis.internals.setValidity({ customError: true }, message, this.inputElement)\n\t\t\t} else {\n\t\t\t\tthis.internals.setValidity({})\n\t\t\t}\n\t\t}\n\t}\n\n\t// ----------------------------\n\t// E) Lifecycle Hooks & Event Handlers\n\t// ----------------------------\n\tfirstUpdated() {\n\t\t// Autofocus if desired\n\t\tif (this.autofocus) {\n\t\t\t// Use setTimeout to match browser behavior - autofocus happens after initial rendering\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.focus()\n\t\t\t}, 0)\n\t\t}\n\n\t\t// Subscribe to input events\n\t\tthis.setupInputEvents()\n\t\tthis.setupFocusBlurEvents()\n\t\tthis.setupAutofillDetection()\n\t\tthis.setupEnterKeyEvents()\n\t}\n\n\t/**\n\t * Set up input event handling for value changes\n\t */\n\tprivate setupInputEvents() {\n\t\tfromEvent<InputEvent>(this.inputElement, 'input')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => {\n\t\t\t\t\t// Capture all input event properties for complete event forwarding\n\t\t\t\t\tconst inputEvent = ev as InputEvent\n\t\t\t\t\tconst target = ev.target as HTMLInputElement\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue: target.value,\n\t\t\t\t\t\tinputType: inputEvent.inputType,\n\t\t\t\t\t\tdata: inputEvent.data,\n\t\t\t\t\t\tisComposing: inputEvent.isComposing,\n\t\t\t\t\t\toriginalEvent: ev,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(eventData => {\n\t\t\t\t// Update component value\n\t\t\t\tthis.value = eventData.value\n\n\t\t\t\t// Mark as dirty when user types\n\t\t\t\tthis.dirty = this.value !== this.defaultValue\n\n\t\t\t\t// Fire custom 'input' event with extended details\n\t\t\t\tconst customEvent = new CustomEvent<EventDetails>('input', {\n\t\t\t\t\tdetail: { value: eventData.value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t})\n\n\t\t\t\t// Add additional properties to match native events more closely\n\t\t\t\tObject.defineProperties(customEvent, {\n\t\t\t\t\tinputType: { value: eventData.inputType },\n\t\t\t\t\tdata: { value: eventData.data },\n\t\t\t\t\tisComposing: { value: eventData.isComposing },\n\t\t\t\t})\n\n\t\t\t\tthis.dispatchEvent(customEvent)\n\n\t\t\t\t// Also fire change event like original input component\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value: eventData.value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\n\t\t\t\t// Run validation like native inputs do on input, but respect the validation strategy\n\t\t\t\tthis.validateInput()\n\t\t\t})\n\n\t\t// Subscribe to native change events (usually on blur)\n\t\tfromEvent<Event>(this.inputElement, 'change')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dirty = this.value !== this.defaultValue\n\n\t\t\t\t// Fire regular change event with bubbling\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\n\t\t\t\t// Run validation on change like native inputs\n\t\t\t\tthis.validateInput()\n\t\t\t})\n\t}\n\n\t/**\n\t * Set up focus/blur event handling\n\t */\n\tprivate setupFocusBlurEvents() {\n\t\tfromEvent<FocusEvent>(this.inputElement, 'focus')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(ev => {\n\t\t\t\t// Create a custom focus event that includes standard props\n\t\t\t\tconst focusEvent = new CustomEvent('focus', {\n\t\t\t\t\tbubbles: ev.bubbles,\n\t\t\t\t\tcancelable: ev.cancelable,\n\t\t\t\t\tcomposed: ev.composed,\n\t\t\t\t})\n\n\t\t\t\t// Add focus-specific properties\n\t\t\t\tObject.defineProperties(focusEvent, {\n\t\t\t\t\trelatedTarget: { value: ev.relatedTarget },\n\t\t\t\t})\n\n\t\t\t\tthis.dispatchEvent(focusEvent)\n\t\t\t})\n\n\t\tfromEvent<FocusEvent>(this.inputElement, 'blur')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(ev => {\n\t\t\t\t// Mark as touched when field loses focus\n\t\t\t\tthis.touched = true\n\n\t\t\t\t// Run validation on blur like native inputs, respecting validation strategy\n\t\t\t\tif (!this.disabled) {\n\t\t\t\t\tthis.validateInput()\n\t\t\t\t}\n\n\t\t\t\t// Create a custom blur event that includes standard props\n\t\t\t\tconst blurEvent = new CustomEvent('blur', {\n\t\t\t\t\tbubbles: ev.bubbles,\n\t\t\t\t\tcancelable: ev.cancelable,\n\t\t\t\t\tcomposed: ev.composed,\n\t\t\t\t})\n\n\t\t\t\t// Add blur-specific properties\n\t\t\t\tObject.defineProperties(blurEvent, {\n\t\t\t\t\trelatedTarget: { value: ev.relatedTarget },\n\t\t\t\t})\n\n\t\t\t\tthis.dispatchEvent(blurEvent)\n\t\t\t})\n\t}\n\n\t/**\n\t * Set up autofill detection\n\t */\n\tprivate setupAutofillDetection() {\n\t\t// Detect autofill animation (Chrome, etc.)\n\t\tfromEvent<AnimationEvent>(this.inputElement, 'animationstart')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.animationName === 'onAutoFillStart'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.isAutofilled = true\n\t\t\t\tthis.dirty = this.value !== this.defaultValue\n\n\t\t\t\t// Dispatch autofill event for integration with autofill systems\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('autofill', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\n\t\t\t\t// Also propagate as a change event like browsers do\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// Detect end of autofill (Chrome)\n\t\tfromEvent<AnimationEvent>(this.inputElement, 'animationstart')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.animationName === 'onAutoFillCancel'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.isAutofilled = false\n\t\t\t})\n\t}\n\n\t/**\n\t * Set up enter key event handling\n\t */\n\tprivate setupEnterKeyEvents() {\n\t\t// Emit a custom 'enter' event when user presses Enter\n\t\tfromEvent<KeyboardEvent>(this.inputElement, 'keyup')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.key === 'Enter'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dirty = this.value !== this.defaultValue\n\n\t\t\t\t// Dispatch enhanced enter event\n\t\t\t\tconst enterEvent = new CustomEvent<EventDetails>('enter', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t})\n\n\t\t\t\t// Add extra keyboard event props\n\t\t\t\tObject.defineProperties(enterEvent, {\n\t\t\t\t\tkey: { value: 'Enter' },\n\t\t\t\t\tcode: { value: 'Enter' },\n\t\t\t\t\tkeyCode: { value: 13 },\n\t\t\t\t\twhich: { value: 13 },\n\t\t\t\t})\n\n\t\t\t\tthis.dispatchEvent(enterEvent)\n\t\t\t})\n\t}\n\n\t// ----------------------------\n\t// F) Utility Methods\n\t// ----------------------------\n\t/** Selects all text within the input. */\n\tpublic select() {\n\t\treturn this.inputRef.value?.select()\n\t}\n\n\t/** Returns the native validity state of the inner <input>. */\n\tpublic getValidity(): ValidityState | undefined {\n\t\treturn this.inputRef.value?.validity\n\t}\n\n\t/**\n\t * Sets the selection range. Mirrors native input.setSelectionRange\n\t */\n\tpublic setSelectionRange(start: number, end: number, direction?: 'forward' | 'backward' | 'none') {\n\t\tthis.inputRef.value?.setSelectionRange(start, end, direction)\n\t}\n\n\t/**\n\t * Returns the selected text within the input (start position)\n\t */\n\tpublic get selectionStart(): number | null {\n\t\treturn this.inputRef.value?.selectionStart ?? null\n\t}\n\n\t/**\n\t * Returns the selected text within the input (end position)\n\t */\n\tpublic get selectionEnd(): number | null {\n\t\treturn this.inputRef.value?.selectionEnd ?? null\n\t}\n\n\t/**\n\t * Returns the direction of selection\n\t */\n\tpublic get selectionDirection(): 'forward' | 'backward' | 'none' | null {\n\t\treturn this.inputRef.value?.selectionDirection ?? null\n\t}\n\n\t/**\n\t * Sets the range of text to be selected.\n\t */\n\tpublic setRangeText(\n\t\treplacement: string,\n\t\tstart?: number,\n\t\tend?: number,\n\t\tselectMode?: 'select' | 'start' | 'end' | 'preserve',\n\t) {\n\t\tif (start !== undefined && end !== undefined) {\n\t\t\tthis.inputRef.value?.setRangeText(replacement, start, end, selectMode)\n\t\t} else {\n\t\t\tthis.inputRef.value?.setRangeText(replacement)\n\t\t}\n\t}\n\n\t/**\n\t * Override to forward focus to the internal <input>.\n\t * Also dispatch a 'focus' event for external listeners.\n\t */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.inputRef.value?.focus(options)\n\t\tthis.dispatchEvent(new Event('focus'))\n\t}\n\n\t/**\n\t * Override to forward clicks to the internal <input>.\n\t * Also dispatch a 'click' event for external listeners.\n\t */\n\tpublic override click() {\n\t\tthis.inputRef.value?.click()\n\t\tthis.dispatchEvent(new Event('click'))\n\t}\n\n\t/** Forward blur to the internal <input>. */\n\tpublic override blur() {\n\t\tthis.inputRef.value?.blur()\n\t\tthis.dispatchEvent(new Event('blur'))\n\t}\n\n\t// ----------------------------\n\t// G) Rendering\n\t// ----------------------------\n\tprotected override render() {\n\t\t// Determine height and padding based on size\n\t\tconst getHeightAndPadding = () => {\n\t\t\tswitch (this.size) {\n\t\t\t\tcase 'sm':\n\t\t\t\t\treturn {\n\t\t\t\t\t\theight: '40px',\n\t\t\t\t\t\tpadding: '0 8px',\n\t\t\t\t\t\tfontSize: '0.875rem', // 14px\n\t\t\t\t\t}\n\t\t\t\tcase 'lg':\n\t\t\t\t\treturn {\n\t\t\t\t\t\theight: '60px',\n\t\t\t\t\t\tpadding: '0 20px',\n\t\t\t\t\t\tfontSize: '1.125rem', // 18px\n\t\t\t\t\t}\n\t\t\t\tcase 'md':\n\t\t\t\tdefault:\n\t\t\t\t\treturn {\n\t\t\t\t\t\theight: '50px',\n\t\t\t\t\t\tpadding: '0 16px',\n\t\t\t\t\t\tfontSize: '1rem', // 16px\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst { height, padding, fontSize } = getHeightAndPadding()\n\n\t\tconst inputClasses = {\n\t\t\t'w-full flex-1 rounded-[8px] border-0 bg-surface-highest text-surface-on': true,\n\t\t\t'outline-secondary-default focus:outline-1 ': true,\n\t\t\t'outline-secondary-default focus:outline-1': true,\n\t\t\t'disabled:opacity-40 disabled:cursor-not-allowed': true,\n\t\t\t'placeholder:text-muted': true,\n\t\t\t'ring-0 ring-inset focus:ring-1 focus:ring-inset': true,\n\t\t\t// If not in error state, use standard ring color:\n\t\t\t'ring-secondary-default ring-outline focus:ring-secondary-default': !this.error,\n\t\t\t// Error ring override:\n\t\t\t'ring-error-default focus:ring-error-default': this.error,\n\t\t\t// If read-only but \"clickable\" is true, show pointer. Otherwise normal text cursor.\n\t\t\t'caret-transparent focus:outline-hidden cursor-pointer text-select-none': this.readonly,\n\t\t\t'cursor-pointer': this.clickable,\n\t\t\t// Alignment classes:\n\t\t\t'text-center': this.align === 'center',\n\t\t\t'text-right': this.align === 'right',\n\t\t\t// Autofill class\n\t\t\tautofilled: this.isAutofilled,\n\t\t}\n\n\t\tconst labelClasses = {\n\t\t\t'opacity-40': this.disabled,\n\t\t\t'block mb-[4px]': true,\n\t\t\t'text-sm': this.size === 'sm',\n\t\t\t'text-base': this.size === 'md',\n\t\t\t'text-lg': this.size === 'lg',\n\t\t}\n\n\t\tconst styles = {\n\t\t\theight,\n\t\t\tpadding,\n\t\t\tfontSize,\n\t\t}\n\n\t\t/**\n\t\t * - If `this.label` is present, we render a proper `<label for=\"${this.id}\">`.\n\t\t * - If not, we add an aria-label to the <input> for better accessibility.\n\t\t * - If there's a `hint`, we reference it via aria-describedby.\n\t\t * - If there's an error, we set aria-invalid and could set aria-errormessage.\n\t\t */\n\t\treturn html`\n\t\t\t${when(\n\t\t\t\tthis.label,\n\t\t\t\t() => html`\n\t\t\t\t\t<label\n\t\t\t\t\t\tfor=${this.id}\n\t\t\t\t\t\tid=\"label-${this.id}\"\n\t\t\t\t\t\tclass=${this.classMap(labelClasses)}\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography type=\"label\" token=${this.size === 'sm' ? 'sm' : this.size === 'lg' ? 'lg' : 'md'}>\n\t\t\t\t\t\t\t${this.label}\n\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t</label>\n\t\t\t\t`,\n\t\t\t)}\n\n\t\t\t<input\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.highest,\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t})}\n\t\t\t\t${ref(this.inputRef)}\n\t\t\t\tid=${this.id}\n\t\t\t\tname=${this.name}\n\t\t\t\tclass=${this.classMap(inputClasses)}\n\t\t\t\tstyle=${this.styleMap(styles)}\n\t\t\t\t.value=${this.value}\n\t\t\t\t.type=${this.type}\n\t\t\t\t.autocomplete=${this.autocomplete}\n\t\t\t\t.spellcheck=${this.spellcheck}\n\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\tinputmode=${ifDefined(this.inputmode)}\n\t\t\t\tpattern=${ifDefined(this.pattern)}\n\t\t\t\tstep=${ifDefined(this.step)}\n\t\t\t\tminlength=${ifDefined(this.minlength)}\n\t\t\t\tmaxlength=${ifDefined(this.maxlength)}\n\t\t\t\tmin=${ifDefined(this.min)}\n\t\t\t\tmax=${ifDefined(this.max)}\n\t\t\t\tlist=${ifDefined(this.list)}\n\t\t\t\t?required=${this.required}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t?readonly=${this.readonly}\n\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\taria-labelledby=${this.label ? `label-${this.id}` : nothing}\n\t\t\t\taria-describedby=${this.hint ? `hint-${this.id}` : nothing}\n\t\t\t\taria-label=${ifDefined(!this.label ? this.placeholder || 'Input' : undefined)}\n\t\t\t\taria-autocomplete=${this.list ? 'list' : 'none'}\n\t\t\t/>\n\n\t\t\t${when(\n\t\t\t\tthis.hint,\n\t\t\t\t() => html`\n\t\t\t\t\t<div\n\t\t\t\t\t\tid=\"hint-${this.id}\"\n\t\t\t\t\t\tclass=\"${this.size === 'sm'\n\t\t\t\t\t\t\t? 'pt-[1px] text-xs'\n\t\t\t\t\t\t\t: this.size === 'lg'\n\t\t\t\t\t\t\t\t? 'pt-[3px] text-base'\n\t\t\t\t\t\t\t\t: 'pt-[2px] text-sm'}\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography\n\t\t\t\t\t\t\talign=\"left\"\n\t\t\t\t\t\t\ttype=\"label\"\n\t\t\t\t\t\t\ttoken=${this.size === 'sm' ? 'sm' : this.size === 'lg' ? 'lg' : 'md'}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${this.hint}\n\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t)}\n\t\t`\n\t}\n}\n","import { html, LitElement, nothing, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { distinctUntilChanged, filter, fromEvent, map, takeUntil } from 'rxjs'\n\nimport { TailwindElement } from '@mixins/index'\n\n// color directive + theme interface\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport style from './input.scss?inline'\n// If you want to be form-associated, define the type on `ElementInternals`.\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-input': SchmancyInput\n\t}\n}\n\ntype EventDetails = {\n\tvalue: string\n}\n\n/**\n * Custom events the component may emit:\n * - 'input': on every keystroke\n * - 'change': on native blur/change\n * - 'enter': specifically when user presses Enter\n */\nexport type SchmancyInputInputEvent = CustomEvent<EventDetails>\nexport type SchmancyInputChangeEvent = CustomEvent<EventDetails>\nexport type SchmancyInputEnterEvent = CustomEvent<EventDetails>\n\n@customElement('schmancy-input')\nexport default class SchmancyInput extends TailwindElement(style) {\n\t// ----------------------------\n\t// A) Public properties\n\t// ----------------------------\n\n\t/** If user does NOT set `id`, we'll autogenerate one. */\n\tstatic _idCounter = 0\n\n\t@property({ reflect: true })\n\tpublic override id = ''\n\n\t/**\n\t * The label for the control. If populated, we render a `<label for=\"...\">`.\n\t * If empty, we add an `aria-label` to the <input> for better screenreader support.\n\t */\n\t@property({ type: String }) label = ''\n\n\t/**\n\t * The type of input. (e.g. 'text', 'password', 'email', etc.)\n\t */\n\t@property({ reflect: true })\n\tpublic type: HTMLInputElement['type'] = 'text'\n\n\t/**\n\t * Name attribute (for form submissions). By default, a unique fallback.\n\t */\n\t@property()\n\tpublic name = `name_${Date.now()}`\n\n\t@property()\n\tpublic placeholder = ''\n\n\t/** Current value of the input. */\n\t@property({ type: String, reflect: true })\n\tpublic value = ''\n\n\t/** Pattern validation attribute. */\n\t@property({ type: String, reflect: true })\n\tpublic pattern?: string\n\n\t/** Whether the control is required for form validation. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic required = false\n\n\t/** Whether the control is disabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\t/** Whether the input is read-only. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic readonly = false\n\n\t/** If true, we visually show a pointer cursor even if readOnly. */\n\t@property({ type: Boolean, reflect: true }) public clickable = false\n\n\t/** Whether browser spellcheck is enabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic spellcheck = false\n\n\t/**\n\t * Text alignment within the input.\n\t * - 'left' | 'center' | 'right'\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic align: 'left' | 'center' | 'right' = 'left'\n\n\t/** inputmode attribute (affects on-screen keyboards in mobile). */\n\t@property()\n\tpublic inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n\n\t@property({ type: Number })\n\tpublic minlength?: number\n\n\t@property({ type: Number })\n\tpublic maxlength?: number\n\n\t@property()\n\tpublic min?: string\n\n\t@property()\n\tpublic max?: string\n\n\t@property({ type: Number, reflect: true })\n\tpublic step?: number\n\n\t/** If true, auto-focus this input on first render. */\n\t@property({ type: Boolean })\n\tpublic autofocus = false\n\n\t/** Autocomplete/autofill hints. */\n\t@property({ type: String, reflect: true })\n\tpublic autocomplete: AutoFill = 'on'\n\n\t/**\n\t * tabIndex for focusing by tab key. Typically 0 or -1.\n\t */\n\t@property({ type: Number, reflect: true })\n\tpublic tabIndex = 0\n\n\t/**\n\t * A small hint text or error message to display under the input.\n\t */\n\t@property()\n\tpublic hint?: string\n\n\t/**\n\t * If true, we style the input as an error state, and possibly display\n\t * the hint as an error message.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic error = false\n\n\t// ----------------------------\n\t// B) Queries & Refs\n\t// ----------------------------\n\t@query('input') private inputElement!: HTMLInputElement\n\tprivate inputRef = createRef<HTMLInputElement>()\n\n\t// ----------------------------\n\t// C) Form-associated logic\n\t// ----------------------------\n\tstatic formAssociated = true\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true, // so focus() goes to <input>\n\t}\n\n\tprivate internals?: ElementInternals\n\n\tconstructor() {\n\t\tsuper()\n\t\tif ('attachInternals' in this) {\n\t\t\ttry {\n\t\t\t\tthis.internals = this.attachInternals()\n\t\t\t} catch {\n\t\t\t\t// no-op for older browsers / polyfills\n\t\t\t\tthis.internals = undefined\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * If user did not provide an ID, auto-generate one so <label for=\"...\">\n\t * and various aria-* attributes can reference it.\n\t */\n\tprotected override willUpdate(changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>) {\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-input-${SchmancyInput._idCounter++}`\n\t\t}\n\t\tsuper.willUpdate(changedProps)\n\t}\n\n\t/** The form this element is associated with, if any. */\n\tget form() {\n\t\treturn this.internals?.form ?? null\n\t}\n\n\tprotected override updated(changedProps: Map<string, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\t// Reflect the current value to the form internals, so it’s submitted.\n\t\t\tthis.internals?.setFormValue(this.value)\n\t\t}\n\n\t\tif (changedProps.has('error')) {\n\t\t\t// If we have an error state, we can set custom error validity, or none if resolved.\n\t\t\tif (this.error) {\n\t\t\t\tthis.internals?.setValidity({ customError: true }, 'Invalid input', this.inputElement)\n\t\t\t} else {\n\t\t\t\tthis.internals?.setValidity({})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Native form methods:\n\t * - checkValidity()\n\t * - reportValidity()\n\t * - setCustomValidity()\n\t */\n\tpublic checkValidity() {\n\t\treturn this.inputRef.value?.checkValidity() ?? true\n\t}\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity() ?? true\n\t}\n\tpublic setCustomValidity(message: string) {\n\t\tthis.inputRef.value?.setCustomValidity(message)\n\t}\n\n\t// ----------------------------\n\t// D) Lifecycle Hooks\n\t// ----------------------------\n\tfirstUpdated() {\n\t\t// Autofocus if desired\n\t\tif (this.autofocus) {\n\t\t\tthis.focus()\n\t\t}\n\n\t\t// 1) Subscribe to 'input' events (every keystroke)\n\t\tfromEvent<InputEvent>(this.inputElement, 'input')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\t// Fire custom 'input' event with details\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('input', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t// dispatch change event\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 2) Subscribe to 'change' events (native behavior, usually on blur)\n\t\tfromEvent<Event>(this.inputElement, 'change')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 3) Emit a custom 'enter' event when user presses Enter\n\t\tfromEvent<KeyboardEvent>(this.inputElement, 'keyup')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.key === 'Enter'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('enter', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 4) Detect autofill animation (Chrome, etc.)\n\t\tfromEvent<AnimationEvent>(this.inputElement, 'animationstart')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.animationName === 'onAutoFillStart'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\n\t// ----------------------------\n\t// E) Utility Methods\n\t// ----------------------------\n\t/** Selects all text within the input. */\n\tpublic select() {\n\t\treturn this.inputRef.value?.select()\n\t}\n\n\t/** Returns the native validity state of the inner <input>. */\n\tpublic getValidity(): ValidityState | undefined {\n\t\treturn this.inputRef.value?.validity\n\t}\n\n\t/**\n\t * Override to forward focus to the internal <input>.\n\t * Also dispatch a 'focus' event for external listeners.\n\t */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.inputRef.value?.focus(options)\n\t\tthis.dispatchEvent(new Event('focus'))\n\t}\n\n\t/**\n\t * Override to forward clicks to the internal <input>.\n\t * Also dispatch a 'click' event for external listeners.\n\t */\n\tpublic override click() {\n\t\tthis.inputRef.value?.click()\n\t\tthis.dispatchEvent(new Event('click'))\n\t}\n\n\t/** Forward blur to the internal <input>. */\n\tpublic override blur() {\n\t\tthis.inputRef.value?.blur()\n\t\tthis.dispatchEvent(new Event('blur'))\n\t}\n\n\t// ----------------------------\n\t// F) Rendering\n\t// ----------------------------\n\tprotected override render() {\n\t\tconst inputClasses = {\n\t\t\t'w-full flex-1 h-[50px] rounded-[8px] border-0 px-[8px] sm:px-[12px] md:px-[16px]': true,\n\t\t\t'outline-secondary-default focus:outline-1 ': true,\n\t\t\t'disabled:opacity-40 disabled:cursor-not-allowed': true,\n\t\t\t'placeholder:text-muted': true,\n\t\t\t'ring-0 ring-inset focus:ring-1 focus:ring-inset': true,\n\t\t\t// If not in error state, use standard ring color:\n\t\t\t'ring-secondary-default ring-outline focus:ring-secondary-default': !this.error,\n\t\t\t// Error ring override:\n\t\t\t'ring-error-default focus:ring-error-default': this.error,\n\t\t\t// If read-only but \"clickable\" is true, show pointer. Otherwise normal text cursor.\n\t\t\t'caret-transparent focus:outline-hidden cursor-pointer text-select-none': this.readonly,\n\t\t\t'cursor-pointer': this.clickable,\n\t\t\t// Alignment classes:\n\t\t\t'text-center': this.align === 'center',\n\t\t\t'text-right': this.align === 'right',\n\t\t}\n\n\t\tconst labelClasses = {\n\t\t\t'opacity-40': this.disabled,\n\t\t\t'block mb-[4px]': true,\n\t\t}\n\n\t\t/**\n\t\t * - If `this.label` is present, we render a proper `<label for=\"${this.id}\">`.\n\t\t * - If not, we add an aria-label to the <input> for better accessibility.\n\t\t * - If there's a `hint`, we reference it via aria-describedby.\n\t\t * - If there's an error, we set aria-invalid and could set aria-errormessage.\n\t\t */\n\t\treturn html`\n\t\t\t${when(\n\t\t\t\tthis.label,\n\t\t\t\t() => html`\n\t\t\t\t\t<label\n\t\t\t\t\t\tfor=${this.id}\n\t\t\t\t\t\tid=\"label-${this.id}\"\n\t\t\t\t\t\tclass=${this.classMap(labelClasses)}\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"lg\">${this.label}</schmancy-typography>\n\t\t\t\t\t</label>\n\t\t\t\t`,\n\t\t\t)}\n\n\t\t\t<input\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.highest,\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t})}\n\t\t\t\t${ref(this.inputRef)}\n\t\t\t\tid=${this.id}\n\t\t\t\tname=${this.name}\n\t\t\t\tclass=${this.classMap(inputClasses)}\n\t\t\t\t.value=${this.value}\n\t\t\t\t.type=${this.type}\n\t\t\t\t.autocomplete=${this.autocomplete}\n\t\t\t\t.spellcheck=${this.spellcheck}\n\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\tinputmode=${ifDefined(this.inputmode)}\n\t\t\t\tpattern=${ifDefined(this.pattern)}\n\t\t\t\tstep=${ifDefined(this.step)}\n\t\t\t\tminlength=${ifDefined(this.minlength)}\n\t\t\t\tmaxlength=${ifDefined(this.maxlength)}\n\t\t\t\tmin=${ifDefined(this.min)}\n\t\t\t\tmax=${ifDefined(this.max)}\n\t\t\t\t?required=${this.required}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t?readonly=${this.readonly}\n\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\taria-labelledby=${this.label ? `label-${this.id}` : nothing}\n\t\t\t\taria-describedby=${this.hint ? `hint-${this.id}` : nothing}\n\t\t\t\taria-label=${ifDefined(!this.label ? this.placeholder || 'Input' : undefined)}\n\t\t\t/>\n\n\t\t\t${when(\n\t\t\t\tthis.hint,\n\t\t\t\t() => html`\n\t\t\t\t\t<div\n\t\t\t\t\t\tid=\"hint-${this.id}\"\n\t\t\t\t\t\tclass=\"pt-[2px]\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography align=\"left\" type=\"label\"> ${this.hint} </schmancy-typography>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t)}\n\t\t`\n\t}\n}\n"],"names":["SchmancyInputV2","TailwindElement","style","super","this","id","label","type","name","Date","now","placeholder","value","required","disabled","readonly","clickable","spellcheck","align","autofocus","autocomplete","tabIndex","error","size","validateOn","validationMessage","inputRef","createRef","isAutofilled","touched","dirty","submitted","defaultValue","internals","attachInternals","changedProps","_idCounter","willUpdate","form","updated","has","setFormValue","validateInput","updateValidityState","hasUpdated","connectedCallback","setupFormIntegration","setupExternalLabelAssociation","formResetObserver","MutationObserver","mutations","mutation","attributeName","resetToDefault","observe","attributes","childList","subtree","addEventListener","setupLabelClickListener","document","querySelectorAll","forEach","focus","readyState","disconnectedCallback","disconnect","removeEventListener","dispatchEvent","CustomEvent","bubbles","forceValidation","setValidity","customError","inputElement","shouldValidate","shouldShowValidation","validity","valid","hasError","checkValidity","inputValid","reportValidity","message","setCustomValidity","setTimeout","setupInputEvents","setupFocusBlurEvents","setupAutofillDetection","setupEnterKeyEvents","fromEvent","pipe","map","ev","inputEvent","target","inputType","data","isComposing","originalEvent","takeUntil","disconnecting","subscribe","eventData","customEvent","detail","composed","Object","defineProperties","distinctUntilChanged","focusEvent","cancelable","relatedTarget","blurEvent","filter","animationName","key","enterEvent","code","keyCode","which","select","start","end","direction","setSelectionRange","selectionStart","selectionEnd","selectionDirection","replacement","selectMode","setRangeText","options","Event","click","blur","render","height","padding","fontSize","getHeightAndPadding","inputClasses","autofilled","labelClasses","styles","html","when","classMap","color","SchmancyTheme","sys","default","primary","bgColor","surface","highest","on","ref","styleMap","ifDefined","inputmode","pattern","step","minlength","maxlength","min","max","list","nothing","hint","formAssociated","shadowRootOptions","LitElement","delegatesFocus","__decorateClass","property","reflect","prototype","String","Boolean","Number","query","state","customElement","SchmancyInput"],"mappings":"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"}
|