@mhmo91/schmancy 0.4.43 → 0.4.44
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/{avatar-B_cWIpIJ.js → avatar-DbQohKTF.js} +2 -2
- package/dist/{avatar-B_cWIpIJ.js.map → avatar-DbQohKTF.js.map} +1 -1
- package/dist/{avatar-DMqFLv9E.cjs → avatar-N8UvQjsm.cjs} +2 -2
- package/dist/{avatar-DMqFLv9E.cjs.map → avatar-N8UvQjsm.cjs.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.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 +2 -2
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/{sheet-B4qnUK5b.js → sheet-BY3YdE4E.js} +2 -2
- package/dist/{sheet-B4qnUK5b.js.map → sheet-BY3YdE4E.js.map} +1 -1
- package/dist/{sheet-Cn9heAk0.cjs → sheet-BY85jX0R.cjs} +2 -2
- package/dist/{sheet-Cn9heAk0.cjs.map → sheet-BY85jX0R.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/package.json +1 -1
|
@@ -49,7 +49,7 @@ var H = Object.defineProperty, R = Object.getOwnPropertyDescriptor, a = (t, e, s
|
|
|
49
49
|
for (var r, o = i > 1 ? void 0 : i ? R(e, s) : e, h = t.length - 1; h >= 0; h--) (r = t[h]) && (o = (i ? r(e, s, o) : r(o)) || o);
|
|
50
50
|
return i && o && H(e, s, o), o;
|
|
51
51
|
};
|
|
52
|
-
let n = class extends A(":host{--overlay-color: var(--schmancy-sys-color-surface-dim);--transition-timing: cubic-bezier(.16, 1, .3, 1);--transition-duration: .25s;--sheet-radius: 0;--max-height: 100vh}.sheet{position:fixed;inset:0;z-index:
|
|
52
|
+
let n = class extends A(":host{--overlay-color: var(--schmancy-sys-color-surface-dim);--transition-timing: cubic-bezier(.16, 1, .3, 1);--transition-duration: .25s;--sheet-radius: 0;--max-height: 100vh}.sheet{position:fixed;inset:0;z-index:999;display:flex;visibility:visible;transition:visibility var(--transition-duration) var(--transition-timing)}.sheet[aria-hidden=true]{visibility:hidden;pointer-events:none}.sheet[aria-hidden=true] .content{transform:translateY(100%)}.sheet[aria-hidden=true] .content[data-position=side]{transform:translate(100%)}.sheet[aria-hidden=true] .overlay{opacity:0}.overlay{position:absolute;inset:0;background:var(--overlay-color);opacity:.8;transition:opacity var(--transition-duration) var(--transition-timing)}.content{z-index:1;transition:transform var(--transition-duration) var(--transition-timing);overflow:hidden}.content[data-position=side]{height:100vh;height:100%;min-width:320px;max-width:90vw;width:fit-content;margin-left:auto}.content[data-position=side] #body{max-height:100vh}.content[data-position=bottom]{width:100%;margin-top:auto;border-radius:16px 16px 0 0;max-height:90vh}.content[data-position=bottom] #body{max-height:90vh}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}") {
|
|
53
53
|
constructor() {
|
|
54
54
|
super(...arguments), this.open = !1, this.header = "visible", this.position = P.Side, this.persist = !1, this.lock = !1, this.handleHistory = !0, this.title = "", this.sheetRef = B(), this.focusAttribute = "autofocus", this.lastFocusedElement = null, this.handleOverlayClick = (t) => {
|
|
55
55
|
t.stopPropagation(), this.lock || m.dismiss(this.uid);
|
|
@@ -146,4 +146,4 @@ a([c({ type: String, reflect: !0 })], n.prototype, "uid", 2), a([c({ type: Boole
|
|
|
146
146
|
}
|
|
147
147
|
};
|
|
148
148
|
})], n.prototype, "onOpenChange", 1), n = a([g("schmancy-sheet")], n);
|
|
149
|
-
//# sourceMappingURL=sheet-
|
|
149
|
+
//# sourceMappingURL=sheet-BY3YdE4E.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet-B4qnUK5b.js","sources":["../src/sheet/header.ts","../src/sheet/sheet.ts","../src/sheet/hook.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-sheet-header')\nexport default class SchmancySheetHeader extends TailwindElement(css``) {\n\trender() {\n\t\treturn html`\n\t\t\t<sch-flex class=\"absolute top-0 left-0 md:left-[unset] md:right-0\">\n\t\t\t\t<div class=\"block md:hidden flex-1 justify-start items-start\">\n\t\t\t\t\t<slot name=\"back\">\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\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}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"text-[24px]\">← </span>\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"hidden md:block flex-1 justify-end items-end\">\n\t\t\t\t\t<slot name=\"actions\">\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\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}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tclose\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t</sch-flex>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet-header': SchmancySheetHeader\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { fromEvent, merge, of, take, takeUntil, tap } from 'rxjs'\nimport { on } from './hook'\nimport style from './sheet.scss?inline'\nimport {\n\tSchmancySheetPosition,\n\tSheetHereMorty,\n\tSheetWhereAreYouRicky,\n\tSheetWhereAreYouRickyEvent,\n\tsheet,\n} from './sheet.service'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends $LitElement(style) {\n\t@property({ type: String, reflect: true }) uid!: string\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) header: 'hidden' | 'visible' = 'visible'\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\t@property({ type: String, reflect: true }) title = ''\n\n\t// Use ref directive instead of @query\n\tprivate sheetRef = createRef<HTMLDivElement>()\n\t@queryAssignedElements({ flatten: true }) private assignedElements!: HTMLElement[]\n\n\t@property() focusAttribute = 'autofocus'\n\tprivate lastFocusedElement: HTMLElement | null = null\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\t// Use native inert attribute to prevent focus outside sheet\n\t\t\tthis.setBackgroundInert(true)\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.setBackgroundInert(false)\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button - only if handleHistory is true\n\t\tconst popState$ = this.handleHistory\n\t\t\t? fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\t\ttap(e => {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.closeSheet()\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t: of(null).pipe(take(0)) // Empty observable if handleHistory is false\n\n\t\t// Handle ESC key - listen on the sheet element for better event capture\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.lock && this.open) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle inter-component communication\n\t\tconst rickyComm$ = fromEvent<SheetWhereAreYouRickyEvent>(window, SheetWhereAreYouRicky).pipe(\n\t\t\ttap(e => {\n\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, rickyComm$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\n\tprivate announcePresence() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(SheetHereMorty, {\n\t\t\t\tdetail: { sheet: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate setBackgroundInert(inert: boolean) {\n\t\t// Get all sibling elements and make them inert\n\t\tconst parent = this.parentElement\n\t\tif (parent) {\n\t\t\tArray.from(parent.children).forEach(child => {\n\t\t\t\tif (child !== this && child instanceof HTMLElement) {\n\t\t\t\t\tif (inert) {\n\t\t\t\t\t\tchild.setAttribute('inert', '')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchild.removeAttribute('inert')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\t\n\t\t// Also handle body's direct children if sheet is attached to body\n\t\tif (this.parentElement === document.body) {\n\t\t\tArray.from(document.body.children).forEach(child => {\n\t\t\t\tif (child !== this && child !== parent && child instanceof HTMLElement) {\n\t\t\t\t\tif (inert) {\n\t\t\t\t\t\tchild.setAttribute('inert', '')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchild.removeAttribute('inert')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tsetIsSheetShown(isShown: boolean) {\n\t\tthis.sheetRef.value?.setAttribute('aria-hidden', String(!isShown))\n\t\tthis.sheetRef.value?.setAttribute('aria-modal', String(isShown))\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\tprivate getFocusElement(): HTMLElement | null {\n\t\tconst selector = `[${this.focusAttribute}]`\n\t\treturn (this.assignedElements.find(el => el.matches(selector) || el.querySelector(selector)) as HTMLElement) ?? null\n\t}\n\n\toverride focus() {\n\t\t// First try native autofocus attribute\n\t\tconst autofocusElement = this.querySelector('[autofocus]') as HTMLElement\n\t\tif (autofocusElement) {\n\t\t\tautofocusElement.focus()\n\t\t\treturn\n\t\t}\n\t\t\n\t\t// Fallback to custom focus attribute\n\t\tthis.getFocusElement()?.focus()\n\t}\n\n\tprivate handleOverlayClick = (e: Event) => {\n\t\te.stopPropagation()\n\t\tif (!this.lock) {\n\t\t\tsheet.dismiss(this.uid)\n\t\t}\n\t}\n\n\tprivate handleHeaderDismiss = (e: CustomEvent) => {\n\t\te.stopPropagation()\n\t\tsheet.dismiss(this.uid)\n\t}\n\n\trender() {\n\t\tconst sheetClasses = {\n\t\t\t'sheet': true,\n\t\t\t'sheet--open': this.open,\n\t\t\t'sheet--locked': this.lock,\n\t\t}\n\n\t\tconst overlayClasses = {\n\t\t\t'overlay': true,\n\t\t\t'overlay--interactive': !this.lock,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div \n\t\t\t\tclass=${classMap(sheetClasses)}\n\t\t\t\trole=\"dialog\" \n\t\t\t\taria-labelledby=${ifDefined(this.header !== 'hidden' ? 'sheet-title' : undefined)}\n\t\t\t\taria-hidden=${!this.open} \n\t\t\t\taria-modal=${this.open}\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t${ref(this.sheetRef)}>\n\t\t\t\t<div\n\t\t\t\t\tclass=${classMap(overlayClasses)}\n\t\t\t\t\t@click=${this.lock ? undefined : this.handleOverlayClick}\n\t\t\t\t></div>\n\t\t\t\t<schmancy-grid\n\t\t\t\t\trows=${this.header === 'hidden' ? '1fr' : 'auto 1fr'}\n\t\t\t\t\tclass=\"content w-full\"\n\t\t\t\t\tdata-position=${this.position}\n\t\t\t\t>\n\t\t\t\t\t${cache(\n\t\t\t\t\t\tthis.header !== 'hidden'\n\t\t\t\t\t\t\t? html`<schmancy-sheet-header\n\t\t\t\t\t\t\t\tclass=\"sticky top-0 z-50 w-full\"\n\t\t\t\t\t\t\t\t@dismiss=${this.handleHeaderDismiss}\n\t\t\t\t\t\t\t\tid=\"sheet-title\"\n\t\t\t\t\t\t\t\ttitle=${ifDefined(this.title || undefined)}\n\t\t\t\t\t\t\t></schmancy-sheet-header>`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t)}\n\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=\"overflow-auto\" type=\"surface\">\n\t\t\t\t\t\t<schmancy-scroll> <slot></slot></schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</schmancy-grid>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n","// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name].call(this, oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["SchmancySheetHeader","TailwindElement","css","render","html","this","dispatchEvent","CustomEvent","bubbles","composed","customElement","SchmancySheet","$LitElement","constructor","super","arguments","open","header","position","SchmancySheetPosition","Side","persist","lock","handleHistory","title","sheetRef","createRef","focusAttribute","lastFocusedElement","handleOverlayClick","e","stopPropagation","sheet","dismiss","uid","handleHeaderDismiss","_oldValue","newValue","document","activeElement","setBackgroundInert","focus","connectedCallback","setupEventListeners","disconnectedCallback","disconnecting","next","popState$","fromEvent","window","pipe","tap","preventDefault","closeSheet","of","take","keyUp$","event","key","rickyComm$","SheetWhereAreYouRicky","detail","announcePresence","merge","takeUntil","subscribe","SheetHereMorty","inert","parent","parentElement","Array","from","children","forEach","child","HTMLElement","setAttribute","removeAttribute","body","isShown","value","String","getFocusElement","selector","assignedElements","find","el","matches","querySelector","autofocusElement","sheetClasses","overlayClasses","overlay","classMap","ifDefined","ref","cache","propName","options","__decorateClass","property","type","reflect","prototype","Boolean","queryAssignedElements","flatten","protoOrDescriptor","name","willUpdate","Object","assign","waitUntilFirstUpdate","changedProps","call","has","oldValue","get","hasUpdated"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sheet-BY3YdE4E.js","sources":["../src/sheet/header.ts","../src/sheet/sheet.ts","../src/sheet/hook.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-sheet-header')\nexport default class SchmancySheetHeader extends TailwindElement(css``) {\n\trender() {\n\t\treturn html`\n\t\t\t<sch-flex class=\"absolute top-0 left-0 md:left-[unset] md:right-0\">\n\t\t\t\t<div class=\"block md:hidden flex-1 justify-start items-start\">\n\t\t\t\t\t<slot name=\"back\">\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\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}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"text-[24px]\">← </span>\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"hidden md:block flex-1 justify-end items-end\">\n\t\t\t\t\t<slot name=\"actions\">\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\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}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tclose\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t</sch-flex>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet-header': SchmancySheetHeader\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { fromEvent, merge, of, take, takeUntil, tap } from 'rxjs'\nimport { on } from './hook'\nimport style from './sheet.scss?inline'\nimport {\n\tSchmancySheetPosition,\n\tSheetHereMorty,\n\tSheetWhereAreYouRicky,\n\tSheetWhereAreYouRickyEvent,\n\tsheet,\n} from './sheet.service'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends $LitElement(style) {\n\t@property({ type: String, reflect: true }) uid!: string\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) header: 'hidden' | 'visible' = 'visible'\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\t@property({ type: String, reflect: true }) title = ''\n\n\t// Use ref directive instead of @query\n\tprivate sheetRef = createRef<HTMLDivElement>()\n\t@queryAssignedElements({ flatten: true }) private assignedElements!: HTMLElement[]\n\n\t@property() focusAttribute = 'autofocus'\n\tprivate lastFocusedElement: HTMLElement | null = null\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\t// Use native inert attribute to prevent focus outside sheet\n\t\t\tthis.setBackgroundInert(true)\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.setBackgroundInert(false)\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button - only if handleHistory is true\n\t\tconst popState$ = this.handleHistory\n\t\t\t? fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\t\ttap(e => {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.closeSheet()\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t: of(null).pipe(take(0)) // Empty observable if handleHistory is false\n\n\t\t// Handle ESC key - listen on the sheet element for better event capture\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.lock && this.open) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle inter-component communication\n\t\tconst rickyComm$ = fromEvent<SheetWhereAreYouRickyEvent>(window, SheetWhereAreYouRicky).pipe(\n\t\t\ttap(e => {\n\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, rickyComm$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\n\tprivate announcePresence() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(SheetHereMorty, {\n\t\t\t\tdetail: { sheet: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate setBackgroundInert(inert: boolean) {\n\t\t// Get all sibling elements and make them inert\n\t\tconst parent = this.parentElement\n\t\tif (parent) {\n\t\t\tArray.from(parent.children).forEach(child => {\n\t\t\t\tif (child !== this && child instanceof HTMLElement) {\n\t\t\t\t\tif (inert) {\n\t\t\t\t\t\tchild.setAttribute('inert', '')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchild.removeAttribute('inert')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\t\n\t\t// Also handle body's direct children if sheet is attached to body\n\t\tif (this.parentElement === document.body) {\n\t\t\tArray.from(document.body.children).forEach(child => {\n\t\t\t\tif (child !== this && child !== parent && child instanceof HTMLElement) {\n\t\t\t\t\tif (inert) {\n\t\t\t\t\t\tchild.setAttribute('inert', '')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchild.removeAttribute('inert')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tsetIsSheetShown(isShown: boolean) {\n\t\tthis.sheetRef.value?.setAttribute('aria-hidden', String(!isShown))\n\t\tthis.sheetRef.value?.setAttribute('aria-modal', String(isShown))\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\tprivate getFocusElement(): HTMLElement | null {\n\t\tconst selector = `[${this.focusAttribute}]`\n\t\treturn (this.assignedElements.find(el => el.matches(selector) || el.querySelector(selector)) as HTMLElement) ?? null\n\t}\n\n\toverride focus() {\n\t\t// First try native autofocus attribute\n\t\tconst autofocusElement = this.querySelector('[autofocus]') as HTMLElement\n\t\tif (autofocusElement) {\n\t\t\tautofocusElement.focus()\n\t\t\treturn\n\t\t}\n\t\t\n\t\t// Fallback to custom focus attribute\n\t\tthis.getFocusElement()?.focus()\n\t}\n\n\tprivate handleOverlayClick = (e: Event) => {\n\t\te.stopPropagation()\n\t\tif (!this.lock) {\n\t\t\tsheet.dismiss(this.uid)\n\t\t}\n\t}\n\n\tprivate handleHeaderDismiss = (e: CustomEvent) => {\n\t\te.stopPropagation()\n\t\tsheet.dismiss(this.uid)\n\t}\n\n\trender() {\n\t\tconst sheetClasses = {\n\t\t\t'sheet': true,\n\t\t\t'sheet--open': this.open,\n\t\t\t'sheet--locked': this.lock,\n\t\t}\n\n\t\tconst overlayClasses = {\n\t\t\t'overlay': true,\n\t\t\t'overlay--interactive': !this.lock,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div \n\t\t\t\tclass=${classMap(sheetClasses)}\n\t\t\t\trole=\"dialog\" \n\t\t\t\taria-labelledby=${ifDefined(this.header !== 'hidden' ? 'sheet-title' : undefined)}\n\t\t\t\taria-hidden=${!this.open} \n\t\t\t\taria-modal=${this.open}\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t${ref(this.sheetRef)}>\n\t\t\t\t<div\n\t\t\t\t\tclass=${classMap(overlayClasses)}\n\t\t\t\t\t@click=${this.lock ? undefined : this.handleOverlayClick}\n\t\t\t\t></div>\n\t\t\t\t<schmancy-grid\n\t\t\t\t\trows=${this.header === 'hidden' ? '1fr' : 'auto 1fr'}\n\t\t\t\t\tclass=\"content w-full\"\n\t\t\t\t\tdata-position=${this.position}\n\t\t\t\t>\n\t\t\t\t\t${cache(\n\t\t\t\t\t\tthis.header !== 'hidden'\n\t\t\t\t\t\t\t? html`<schmancy-sheet-header\n\t\t\t\t\t\t\t\tclass=\"sticky top-0 z-50 w-full\"\n\t\t\t\t\t\t\t\t@dismiss=${this.handleHeaderDismiss}\n\t\t\t\t\t\t\t\tid=\"sheet-title\"\n\t\t\t\t\t\t\t\ttitle=${ifDefined(this.title || undefined)}\n\t\t\t\t\t\t\t></schmancy-sheet-header>`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t)}\n\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=\"overflow-auto\" type=\"surface\">\n\t\t\t\t\t\t<schmancy-scroll> <slot></slot></schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</schmancy-grid>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n","// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name].call(this, oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["SchmancySheetHeader","TailwindElement","css","render","html","this","dispatchEvent","CustomEvent","bubbles","composed","customElement","SchmancySheet","$LitElement","constructor","super","arguments","open","header","position","SchmancySheetPosition","Side","persist","lock","handleHistory","title","sheetRef","createRef","focusAttribute","lastFocusedElement","handleOverlayClick","e","stopPropagation","sheet","dismiss","uid","handleHeaderDismiss","_oldValue","newValue","document","activeElement","setBackgroundInert","focus","connectedCallback","setupEventListeners","disconnectedCallback","disconnecting","next","popState$","fromEvent","window","pipe","tap","preventDefault","closeSheet","of","take","keyUp$","event","key","rickyComm$","SheetWhereAreYouRicky","detail","announcePresence","merge","takeUntil","subscribe","SheetHereMorty","inert","parent","parentElement","Array","from","children","forEach","child","HTMLElement","setAttribute","removeAttribute","body","isShown","value","String","getFocusElement","selector","assignedElements","find","el","matches","querySelector","autofocusElement","sheetClasses","overlayClasses","overlay","classMap","ifDefined","ref","cache","propName","options","__decorateClass","property","type","reflect","prototype","Boolean","queryAssignedElements","flatten","protoOrDescriptor","name","willUpdate","Object","assign","waitUntilFirstUpdate","changedProps","call","has","oldValue","get","hasUpdated"],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
</slot>
|
|
21
21
|
</div>
|
|
22
22
|
</sch-flex>
|
|
23
|
-
`}};b=((t,e,i,s)=>{for(var h,n=s>1?void 0:s?k(e,i):e,l=t.length-1;l>=0;l--)(h=t[l])&&(n=h(n)||n);return n})([a.customElement("schmancy-sheet-header")],b);var x=Object.defineProperty,S=Object.getOwnPropertyDescriptor,r=(t,e,i,s)=>{for(var h,n=s>1?void 0:s?S(e,i):e,l=t.length-1;l>=0;l--)(h=t[l])&&(n=(s?h(e,i,n):h(n))||n);return s&&n&&x(e,i,n),n};let o=class extends E.$LitElement(":host{--overlay-color: var(--schmancy-sys-color-surface-dim);--transition-timing: cubic-bezier(.16, 1, .3, 1);--transition-duration: .25s;--sheet-radius: 0;--max-height: 100vh}.sheet{position:fixed;inset:0;z-index:
|
|
23
|
+
`}};b=((t,e,i,s)=>{for(var h,n=s>1?void 0:s?k(e,i):e,l=t.length-1;l>=0;l--)(h=t[l])&&(n=h(n)||n);return n})([a.customElement("schmancy-sheet-header")],b);var x=Object.defineProperty,S=Object.getOwnPropertyDescriptor,r=(t,e,i,s)=>{for(var h,n=s>1?void 0:s?S(e,i):e,l=t.length-1;l>=0;l--)(h=t[l])&&(n=(s?h(e,i,n):h(n))||n);return s&&n&&x(e,i,n),n};let o=class extends E.$LitElement(":host{--overlay-color: var(--schmancy-sys-color-surface-dim);--transition-timing: cubic-bezier(.16, 1, .3, 1);--transition-duration: .25s;--sheet-radius: 0;--max-height: 100vh}.sheet{position:fixed;inset:0;z-index:999;display:flex;visibility:visible;transition:visibility var(--transition-duration) var(--transition-timing)}.sheet[aria-hidden=true]{visibility:hidden;pointer-events:none}.sheet[aria-hidden=true] .content{transform:translateY(100%)}.sheet[aria-hidden=true] .content[data-position=side]{transform:translate(100%)}.sheet[aria-hidden=true] .overlay{opacity:0}.overlay{position:absolute;inset:0;background:var(--overlay-color);opacity:.8;transition:opacity var(--transition-duration) var(--transition-timing)}.content{z-index:1;transition:transform var(--transition-duration) var(--transition-timing);overflow:hidden}.content[data-position=side]{height:100vh;height:100%;min-width:320px;max-width:90vw;width:fit-content;margin-left:auto}.content[data-position=side] #body{max-height:100vh}.content[data-position=bottom]{width:100%;margin-top:auto;border-radius:16px 16px 0 0;max-height:90vh}.content[data-position=bottom] #body{max-height:90vh}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}"){constructor(){super(...arguments),this.open=!1,this.header="visible",this.position=d.SchmancySheetPosition.Side,this.persist=!1,this.lock=!1,this.handleHistory=!0,this.title="",this.sheetRef=v.createRef(),this.focusAttribute="autofocus",this.lastFocusedElement=null,this.handleOverlayClick=t=>{t.stopPropagation(),this.lock||d.sheet.dismiss(this.uid)},this.handleHeaderDismiss=t=>{t.stopPropagation(),d.sheet.dismiss(this.uid)}}onOpenChange(t,e){e?(this.lastFocusedElement=document.activeElement,this.setBackgroundInert(!0),this.focus()):(this.setBackgroundInert(!1),this.lastFocusedElement?.focus(),this.lastFocusedElement=null)}connectedCallback(){super.connectedCallback(),this.setupEventListeners()}disconnectedCallback(){super.disconnectedCallback(),this.disconnecting.next(!0)}setupEventListeners(){const t=this.handleHistory?c.fromEvent(window,"popstate").pipe(c.tap(s=>{s.preventDefault(),this.closeSheet()})):c.of(null).pipe(c.take(0)),e=c.fromEvent(this,"keydown").pipe(c.tap(s=>{s.key==="Escape"&&!this.lock&&this.open&&(s.preventDefault(),s.stopPropagation(),d.sheet.dismiss(this.uid))})),i=c.fromEvent(window,d.SheetWhereAreYouRicky).pipe(c.tap(s=>{s.detail.uid===this.uid&&this.announcePresence()}));c.merge(t,e,i).pipe(c.takeUntil(this.disconnecting)).subscribe()}announcePresence(){this.dispatchEvent(new CustomEvent(d.SheetHereMorty,{detail:{sheet:this},bubbles:!0,composed:!0}))}setBackgroundInert(t){const e=this.parentElement;e&&Array.from(e.children).forEach(i=>{i!==this&&i instanceof HTMLElement&&(t?i.setAttribute("inert",""):i.removeAttribute("inert"))}),this.parentElement===document.body&&Array.from(document.body.children).forEach(i=>{i!==this&&i!==e&&i instanceof HTMLElement&&(t?i.setAttribute("inert",""):i.removeAttribute("inert"))})}setIsSheetShown(t){this.sheetRef.value?.setAttribute("aria-hidden",String(!t)),this.sheetRef.value?.setAttribute("aria-modal",String(t))}closeSheet(){this.open=!1,this.dispatchEvent(new CustomEvent("close"))}getFocusElement(){const t=`[${this.focusAttribute}]`;return this.assignedElements.find(e=>e.matches(t)||e.querySelector(t))??null}focus(){const t=this.querySelector("[autofocus]");t?t.focus():this.getFocusElement()?.focus()}render(){const t={sheet:!0,"sheet--open":this.open,"sheet--locked":this.lock},e={overlay:!0,"overlay--interactive":!this.lock};return u.html`
|
|
24
24
|
<div
|
|
25
25
|
class=${y.classMap(t)}
|
|
26
26
|
role="dialog"
|
|
@@ -51,4 +51,4 @@
|
|
|
51
51
|
</schmancy-grid>
|
|
52
52
|
</div>
|
|
53
53
|
`}};var p,m;r([a.property({type:String,reflect:!0})],o.prototype,"uid",2),r([a.property({type:Boolean,reflect:!0})],o.prototype,"open",2),r([a.property({type:String,reflect:!0})],o.prototype,"header",2),r([a.property({type:String,reflect:!0})],o.prototype,"position",2),r([a.property({type:Boolean,reflect:!0})],o.prototype,"persist",2),r([a.property({type:Boolean,reflect:!0})],o.prototype,"lock",2),r([a.property({type:Boolean,reflect:!0})],o.prototype,"handleHistory",2),r([a.property({type:String,reflect:!0})],o.prototype,"title",2),r([a.queryAssignedElements({flatten:!0})],o.prototype,"assignedElements",2),r([a.property()],o.prototype,"focusAttribute",2),r([(p="open",(t,e)=>{const{willUpdate:i}=t;m=Object.assign({waitUntilFirstUpdate:!1},m),t.willUpdate=function(s){if(i.call(this,s),s.has(p)){const h=s.get(p),n=this[p];h!==n&&(m?.waitUntilFirstUpdate&&!this.hasUpdated||this[e].call(this,h,n))}}})],o.prototype,"onOpenChange",1),o=r([a.customElement("schmancy-sheet")],o);
|
|
54
|
-
//# sourceMappingURL=sheet-
|
|
54
|
+
//# sourceMappingURL=sheet-BY85jX0R.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet-Cn9heAk0.cjs","sources":["../src/sheet/header.ts","../src/sheet/sheet.ts","../src/sheet/hook.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-sheet-header')\nexport default class SchmancySheetHeader extends TailwindElement(css``) {\n\trender() {\n\t\treturn html`\n\t\t\t<sch-flex class=\"absolute top-0 left-0 md:left-[unset] md:right-0\">\n\t\t\t\t<div class=\"block md:hidden flex-1 justify-start items-start\">\n\t\t\t\t\t<slot name=\"back\">\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\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}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"text-[24px]\">← </span>\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"hidden md:block flex-1 justify-end items-end\">\n\t\t\t\t\t<slot name=\"actions\">\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\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}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tclose\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t</sch-flex>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet-header': SchmancySheetHeader\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { fromEvent, merge, of, take, takeUntil, tap } from 'rxjs'\nimport { on } from './hook'\nimport style from './sheet.scss?inline'\nimport {\n\tSchmancySheetPosition,\n\tSheetHereMorty,\n\tSheetWhereAreYouRicky,\n\tSheetWhereAreYouRickyEvent,\n\tsheet,\n} from './sheet.service'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends $LitElement(style) {\n\t@property({ type: String, reflect: true }) uid!: string\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) header: 'hidden' | 'visible' = 'visible'\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\t@property({ type: String, reflect: true }) title = ''\n\n\t// Use ref directive instead of @query\n\tprivate sheetRef = createRef<HTMLDivElement>()\n\t@queryAssignedElements({ flatten: true }) private assignedElements!: HTMLElement[]\n\n\t@property() focusAttribute = 'autofocus'\n\tprivate lastFocusedElement: HTMLElement | null = null\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\t// Use native inert attribute to prevent focus outside sheet\n\t\t\tthis.setBackgroundInert(true)\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.setBackgroundInert(false)\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button - only if handleHistory is true\n\t\tconst popState$ = this.handleHistory\n\t\t\t? fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\t\ttap(e => {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.closeSheet()\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t: of(null).pipe(take(0)) // Empty observable if handleHistory is false\n\n\t\t// Handle ESC key - listen on the sheet element for better event capture\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.lock && this.open) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle inter-component communication\n\t\tconst rickyComm$ = fromEvent<SheetWhereAreYouRickyEvent>(window, SheetWhereAreYouRicky).pipe(\n\t\t\ttap(e => {\n\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, rickyComm$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\n\tprivate announcePresence() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(SheetHereMorty, {\n\t\t\t\tdetail: { sheet: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate setBackgroundInert(inert: boolean) {\n\t\t// Get all sibling elements and make them inert\n\t\tconst parent = this.parentElement\n\t\tif (parent) {\n\t\t\tArray.from(parent.children).forEach(child => {\n\t\t\t\tif (child !== this && child instanceof HTMLElement) {\n\t\t\t\t\tif (inert) {\n\t\t\t\t\t\tchild.setAttribute('inert', '')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchild.removeAttribute('inert')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\t\n\t\t// Also handle body's direct children if sheet is attached to body\n\t\tif (this.parentElement === document.body) {\n\t\t\tArray.from(document.body.children).forEach(child => {\n\t\t\t\tif (child !== this && child !== parent && child instanceof HTMLElement) {\n\t\t\t\t\tif (inert) {\n\t\t\t\t\t\tchild.setAttribute('inert', '')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchild.removeAttribute('inert')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tsetIsSheetShown(isShown: boolean) {\n\t\tthis.sheetRef.value?.setAttribute('aria-hidden', String(!isShown))\n\t\tthis.sheetRef.value?.setAttribute('aria-modal', String(isShown))\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\tprivate getFocusElement(): HTMLElement | null {\n\t\tconst selector = `[${this.focusAttribute}]`\n\t\treturn (this.assignedElements.find(el => el.matches(selector) || el.querySelector(selector)) as HTMLElement) ?? null\n\t}\n\n\toverride focus() {\n\t\t// First try native autofocus attribute\n\t\tconst autofocusElement = this.querySelector('[autofocus]') as HTMLElement\n\t\tif (autofocusElement) {\n\t\t\tautofocusElement.focus()\n\t\t\treturn\n\t\t}\n\t\t\n\t\t// Fallback to custom focus attribute\n\t\tthis.getFocusElement()?.focus()\n\t}\n\n\tprivate handleOverlayClick = (e: Event) => {\n\t\te.stopPropagation()\n\t\tif (!this.lock) {\n\t\t\tsheet.dismiss(this.uid)\n\t\t}\n\t}\n\n\tprivate handleHeaderDismiss = (e: CustomEvent) => {\n\t\te.stopPropagation()\n\t\tsheet.dismiss(this.uid)\n\t}\n\n\trender() {\n\t\tconst sheetClasses = {\n\t\t\t'sheet': true,\n\t\t\t'sheet--open': this.open,\n\t\t\t'sheet--locked': this.lock,\n\t\t}\n\n\t\tconst overlayClasses = {\n\t\t\t'overlay': true,\n\t\t\t'overlay--interactive': !this.lock,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div \n\t\t\t\tclass=${classMap(sheetClasses)}\n\t\t\t\trole=\"dialog\" \n\t\t\t\taria-labelledby=${ifDefined(this.header !== 'hidden' ? 'sheet-title' : undefined)}\n\t\t\t\taria-hidden=${!this.open} \n\t\t\t\taria-modal=${this.open}\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t${ref(this.sheetRef)}>\n\t\t\t\t<div\n\t\t\t\t\tclass=${classMap(overlayClasses)}\n\t\t\t\t\t@click=${this.lock ? undefined : this.handleOverlayClick}\n\t\t\t\t></div>\n\t\t\t\t<schmancy-grid\n\t\t\t\t\trows=${this.header === 'hidden' ? '1fr' : 'auto 1fr'}\n\t\t\t\t\tclass=\"content w-full\"\n\t\t\t\t\tdata-position=${this.position}\n\t\t\t\t>\n\t\t\t\t\t${cache(\n\t\t\t\t\t\tthis.header !== 'hidden'\n\t\t\t\t\t\t\t? html`<schmancy-sheet-header\n\t\t\t\t\t\t\t\tclass=\"sticky top-0 z-50 w-full\"\n\t\t\t\t\t\t\t\t@dismiss=${this.handleHeaderDismiss}\n\t\t\t\t\t\t\t\tid=\"sheet-title\"\n\t\t\t\t\t\t\t\ttitle=${ifDefined(this.title || undefined)}\n\t\t\t\t\t\t\t></schmancy-sheet-header>`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t)}\n\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=\"overflow-auto\" type=\"surface\">\n\t\t\t\t\t\t<schmancy-scroll> <slot></slot></schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</schmancy-grid>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n","// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name].call(this, oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["SchmancySheetHeader","TailwindElement","css","render","html","this","dispatchEvent","CustomEvent","bubbles","composed","customElement","SchmancySheet","$LitElement","constructor","super","arguments","open","header","position","SchmancySheetPosition","Side","persist","lock","handleHistory","title","sheetRef","createRef","focusAttribute","lastFocusedElement","handleOverlayClick","e","stopPropagation","sheet","dismiss","uid","handleHeaderDismiss","_oldValue","newValue","document","activeElement","setBackgroundInert","focus","connectedCallback","setupEventListeners","disconnectedCallback","disconnecting","next","popState$","fromEvent","window","pipe","tap","preventDefault","closeSheet","of","take","keyUp$","event","key","rickyComm$","SheetWhereAreYouRicky","detail","announcePresence","merge","takeUntil","subscribe","SheetHereMorty","inert","parent","parentElement","Array","from","children","forEach","child","HTMLElement","setAttribute","removeAttribute","body","isShown","value","String","getFocusElement","selector","assignedElements","find","el","matches","querySelector","autofocusElement","sheetClasses","overlayClasses","overlay","classMap","ifDefined","ref","cache","propName","options","__decorateClass","property","type","reflect","prototype","Boolean","queryAssignedElements","flatten","protoOrDescriptor","name","willUpdate","Object","assign","waitUntilFirstUpdate","changedProps","call","has","oldValue","get","hasUpdated"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sheet-BY85jX0R.cjs","sources":["../src/sheet/header.ts","../src/sheet/sheet.ts","../src/sheet/hook.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-sheet-header')\nexport default class SchmancySheetHeader extends TailwindElement(css``) {\n\trender() {\n\t\treturn html`\n\t\t\t<sch-flex class=\"absolute top-0 left-0 md:left-[unset] md:right-0\">\n\t\t\t\t<div class=\"block md:hidden flex-1 justify-start items-start\">\n\t\t\t\t\t<slot name=\"back\">\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\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}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"text-[24px]\">← </span>\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"hidden md:block flex-1 justify-end items-end\">\n\t\t\t\t\t<slot name=\"actions\">\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\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}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tclose\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t</sch-flex>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet-header': SchmancySheetHeader\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { fromEvent, merge, of, take, takeUntil, tap } from 'rxjs'\nimport { on } from './hook'\nimport style from './sheet.scss?inline'\nimport {\n\tSchmancySheetPosition,\n\tSheetHereMorty,\n\tSheetWhereAreYouRicky,\n\tSheetWhereAreYouRickyEvent,\n\tsheet,\n} from './sheet.service'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends $LitElement(style) {\n\t@property({ type: String, reflect: true }) uid!: string\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) header: 'hidden' | 'visible' = 'visible'\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\t@property({ type: String, reflect: true }) title = ''\n\n\t// Use ref directive instead of @query\n\tprivate sheetRef = createRef<HTMLDivElement>()\n\t@queryAssignedElements({ flatten: true }) private assignedElements!: HTMLElement[]\n\n\t@property() focusAttribute = 'autofocus'\n\tprivate lastFocusedElement: HTMLElement | null = null\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\t// Use native inert attribute to prevent focus outside sheet\n\t\t\tthis.setBackgroundInert(true)\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.setBackgroundInert(false)\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button - only if handleHistory is true\n\t\tconst popState$ = this.handleHistory\n\t\t\t? fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\t\ttap(e => {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.closeSheet()\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t: of(null).pipe(take(0)) // Empty observable if handleHistory is false\n\n\t\t// Handle ESC key - listen on the sheet element for better event capture\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.lock && this.open) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle inter-component communication\n\t\tconst rickyComm$ = fromEvent<SheetWhereAreYouRickyEvent>(window, SheetWhereAreYouRicky).pipe(\n\t\t\ttap(e => {\n\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, rickyComm$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\n\tprivate announcePresence() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(SheetHereMorty, {\n\t\t\t\tdetail: { sheet: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate setBackgroundInert(inert: boolean) {\n\t\t// Get all sibling elements and make them inert\n\t\tconst parent = this.parentElement\n\t\tif (parent) {\n\t\t\tArray.from(parent.children).forEach(child => {\n\t\t\t\tif (child !== this && child instanceof HTMLElement) {\n\t\t\t\t\tif (inert) {\n\t\t\t\t\t\tchild.setAttribute('inert', '')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchild.removeAttribute('inert')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\t\n\t\t// Also handle body's direct children if sheet is attached to body\n\t\tif (this.parentElement === document.body) {\n\t\t\tArray.from(document.body.children).forEach(child => {\n\t\t\t\tif (child !== this && child !== parent && child instanceof HTMLElement) {\n\t\t\t\t\tif (inert) {\n\t\t\t\t\t\tchild.setAttribute('inert', '')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchild.removeAttribute('inert')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tsetIsSheetShown(isShown: boolean) {\n\t\tthis.sheetRef.value?.setAttribute('aria-hidden', String(!isShown))\n\t\tthis.sheetRef.value?.setAttribute('aria-modal', String(isShown))\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\tprivate getFocusElement(): HTMLElement | null {\n\t\tconst selector = `[${this.focusAttribute}]`\n\t\treturn (this.assignedElements.find(el => el.matches(selector) || el.querySelector(selector)) as HTMLElement) ?? null\n\t}\n\n\toverride focus() {\n\t\t// First try native autofocus attribute\n\t\tconst autofocusElement = this.querySelector('[autofocus]') as HTMLElement\n\t\tif (autofocusElement) {\n\t\t\tautofocusElement.focus()\n\t\t\treturn\n\t\t}\n\t\t\n\t\t// Fallback to custom focus attribute\n\t\tthis.getFocusElement()?.focus()\n\t}\n\n\tprivate handleOverlayClick = (e: Event) => {\n\t\te.stopPropagation()\n\t\tif (!this.lock) {\n\t\t\tsheet.dismiss(this.uid)\n\t\t}\n\t}\n\n\tprivate handleHeaderDismiss = (e: CustomEvent) => {\n\t\te.stopPropagation()\n\t\tsheet.dismiss(this.uid)\n\t}\n\n\trender() {\n\t\tconst sheetClasses = {\n\t\t\t'sheet': true,\n\t\t\t'sheet--open': this.open,\n\t\t\t'sheet--locked': this.lock,\n\t\t}\n\n\t\tconst overlayClasses = {\n\t\t\t'overlay': true,\n\t\t\t'overlay--interactive': !this.lock,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div \n\t\t\t\tclass=${classMap(sheetClasses)}\n\t\t\t\trole=\"dialog\" \n\t\t\t\taria-labelledby=${ifDefined(this.header !== 'hidden' ? 'sheet-title' : undefined)}\n\t\t\t\taria-hidden=${!this.open} \n\t\t\t\taria-modal=${this.open}\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t${ref(this.sheetRef)}>\n\t\t\t\t<div\n\t\t\t\t\tclass=${classMap(overlayClasses)}\n\t\t\t\t\t@click=${this.lock ? undefined : this.handleOverlayClick}\n\t\t\t\t></div>\n\t\t\t\t<schmancy-grid\n\t\t\t\t\trows=${this.header === 'hidden' ? '1fr' : 'auto 1fr'}\n\t\t\t\t\tclass=\"content w-full\"\n\t\t\t\t\tdata-position=${this.position}\n\t\t\t\t>\n\t\t\t\t\t${cache(\n\t\t\t\t\t\tthis.header !== 'hidden'\n\t\t\t\t\t\t\t? html`<schmancy-sheet-header\n\t\t\t\t\t\t\t\tclass=\"sticky top-0 z-50 w-full\"\n\t\t\t\t\t\t\t\t@dismiss=${this.handleHeaderDismiss}\n\t\t\t\t\t\t\t\tid=\"sheet-title\"\n\t\t\t\t\t\t\t\ttitle=${ifDefined(this.title || undefined)}\n\t\t\t\t\t\t\t></schmancy-sheet-header>`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t)}\n\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=\"overflow-auto\" type=\"surface\">\n\t\t\t\t\t\t<schmancy-scroll> <slot></slot></schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</schmancy-grid>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n","// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name].call(this, oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["SchmancySheetHeader","TailwindElement","css","render","html","this","dispatchEvent","CustomEvent","bubbles","composed","customElement","SchmancySheet","$LitElement","constructor","super","arguments","open","header","position","SchmancySheetPosition","Side","persist","lock","handleHistory","title","sheetRef","createRef","focusAttribute","lastFocusedElement","handleOverlayClick","e","stopPropagation","sheet","dismiss","uid","handleHeaderDismiss","_oldValue","newValue","document","activeElement","setBackgroundInert","focus","connectedCallback","setupEventListeners","disconnectedCallback","disconnecting","next","popState$","fromEvent","window","pipe","tap","preventDefault","closeSheet","of","take","keyUp$","event","key","rickyComm$","SheetWhereAreYouRicky","detail","announcePresence","merge","takeUntil","subscribe","SheetHereMorty","inert","parent","parentElement","Array","from","children","forEach","child","HTMLElement","setAttribute","removeAttribute","body","isShown","value","String","getFocusElement","selector","assignedElements","find","el","matches","querySelector","autofocusElement","sheetClasses","overlayClasses","overlay","classMap","ifDefined","ref","cache","propName","options","__decorateClass","property","type","reflect","prototype","Boolean","queryAssignedElements","flatten","protoOrDescriptor","name","willUpdate","Object","assign","waitUntilFirstUpdate","changedProps","call","has","oldValue","get","hasUpdated"],"mappings":"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"}
|
package/dist/sheet.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),require("./sheet-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),require("./sheet-BY85jX0R.cjs");const e=require("./sheet.service-CNz7lXHC.cjs");exports.SchmancySheetPosition=e.SchmancySheetPosition,exports.SheetHereMorty=e.SheetHereMorty,exports.SheetWhereAreYouRicky=e.SheetWhereAreYouRicky,exports.sheet=e.sheet;
|
|
2
2
|
//# sourceMappingURL=sheet.cjs.map
|
package/dist/sheet.js
CHANGED
package/dist/teleport.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./avatar-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./avatar-N8UvQjsm.cjs");exports.HereMorty=e.HereMorty,Object.defineProperty(exports,"SchmancyTeleportation",{enumerable:!0,get:()=>e.SchmancyTeleportation}),exports.WhereAreYouRicky=e.WhereAreYouRicky,exports.teleport=e.teleport;
|
|
2
2
|
//# sourceMappingURL=teleport.cjs.map
|
package/dist/teleport.js
CHANGED