@mhmo91/schmancy 0.2.117 → 0.2.118

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"sheet-CrlIJTBl.cjs","sources":["../src/sheet/header.ts","../src/sheet/sheet.service.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]\">&#8592; </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 {\n\tdefaultIfEmpty,\n\tdelay,\n\tfilter,\n\tforkJoin,\n\tfromEvent,\n\tmap,\n\tmergeMap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttakeUntil,\n\ttap,\n\ttimer,\n} from 'rxjs'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n\t/**\n\t * @deprecated use bottom instead\n\t */\n\tBottomCenter = 'bottom-center',\n\t/**\n\t * @deprecated use side instead\n\t */\n\tTopRight = 'top-right',\n\t/**\n\t * @deprecated use side instead\n\t */\n\tBottomRight = 'bottom-right',\n}\n\ntype BottomSheeetTarget = {\n\tcomponent: HTMLElement\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tallowOverlyDismiss?: boolean\n\ttitle?: string\n\theader?: 'hidden' | 'visible'\n\t/**\n\t * If true, add a history entry when opening the sheet\n\t * so back button will close the sheet\n\t * @default true\n\t */\n\thandleHistory?: boolean\n}\n\n// Events for communication between bottom-sheet component and bottom-sheet.service\nexport type SheetWhereAreYouRickyEvent = CustomEvent<{\n\tuid: string\n}>\nexport const SheetWhereAreYouRicky = 'are-you-there-sheet'\n\nexport type SheetHereMortyEvent = CustomEvent<{\n\tsheet: SchmancySheet\n}>\nexport const SheetHereMorty = 'yes-here'\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t$dismiss = new Subject<string>()\n\t// Track currently open sheets by uid\n\tprivate activeSheets = new Set<string>()\n\t// To track if we've set up the popstate listener\n\tprivate popStateListenerActive = false\n\n\tconstructor() {\n\t\tthis.setupSheetOpeningLogic()\n\t\tthis.setupSheetDismissLogic()\n\t\tthis.setupPopStateListener()\n\t}\n\n\t/**\n\t * Sets up the main sheet opening logic\n\t */\n\tprivate setupSheetOpeningLogic() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<SheetHereMortyEvent>(window, SheetHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)),\n\t\t\t\t\t\t\tmap(e => e.detail.sheet),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(target).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(SheetWhereAreYouRicky, {\n\t\t\t\t\t\t\t\t\t\tdetail: { uid: target.uid ?? target.component.tagName },\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]),\n\t\t\t\t),\n\t\t\t\tmap(([sheet, target]) => {\n\t\t\t\t\tconsole.log(sheet, target)\n\t\t\t\t\tif (!sheet) {\n\t\t\t\t\t\t// if sheet is not found, create it\n\t\t\t\t\t\tsheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\tdocument.body.appendChild(sheet)\n\t\t\t\t\t}\n\t\t\t\t\tsheet.setAttribute('uid', target.uid ?? target.component.tagName)\n\n\t\t\t\t\t// Use the dynamic position function here\n\t\t\t\t\tconst position = target.position || getPosition() // Use target.position if it's set, otherwise determine based on screen size\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\tsheet.setAttribute('allowOverlyDismiss', target.allowOverlyDismiss === false ? 'false' : 'true')\n\t\t\t\t\ttarget.title && sheet.setAttribute('title', target.title)\n\t\t\t\t\ttarget.persist && sheet.setAttribute('persist', target.persist.toString())\n\t\t\t\t\ttarget.header && sheet.setAttribute('header', target.header)\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\n\t\t\t\t\treturn { target, sheet }\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\tfilter(({ target, sheet }) => {\n\t\t\t\t\t// if the sheet has already the component, just show it\n\t\t\t\t\tif (\n\t\t\t\t\t\ttarget.persist &&\n\t\t\t\t\t\tsheet?.shadowRoot\n\t\t\t\t\t\t\t?.querySelector('slot')\n\t\t\t\t\t\t\t?.assignedElements()\n\t\t\t\t\t\t\t.find(e => e.tagName === target.component.tagName)\n\t\t\t\t\t) {\n\t\t\t\t\t\tsheet?.setAttribute('open', 'true')\n\t\t\t\t\t\treturn false\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true // if the sheet does not have the component, continue to the next step\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\tsheet?.appendChild(target.component)\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\tsheet?.setAttribute('open', 'true')\n\n\t\t\t\t\t// Add to active sheets tracking\n\t\t\t\t\tconst uid = target.uid ?? target.component.tagName\n\t\t\t\t\tthis.activeSheets.add(uid)\n\n\t\t\t\t\t// Handle history integration - default to true if not specified\n\t\t\t\t\tconst shouldHandleHistory = target.handleHistory !== false\n\n\t\t\t\t\tif (shouldHandleHistory) {\n\t\t\t\t\t\t// Use history state to track this specific sheet\n\t\t\t\t\t\tconst historyState = {\n\t\t\t\t\t\t\tschmancySheet: true,\n\t\t\t\t\t\t\tuid: uid,\n\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Push a new history state\n\t\t\t\t\t\thistory.pushState(historyState, '', window.location.href)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttap(({ sheet }) => {\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1))\n\t\t\t\t\t\t.pipe(delay(300))\n\t\t\t\t\t\t.subscribe(e => {\n\t\t\t\t\t\t\tconst target = e.target as SchmancySheet\n\t\t\t\t\t\t\tconsole.log(target)\n\n\t\t\t\t\t\t\t// Remove from active sheets tracking\n\t\t\t\t\t\t\tconst uid = target.getAttribute('uid')\n\t\t\t\t\t\t\tif (uid) {\n\t\t\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!target?.persist) target?.remove()\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the sheet closing/dismissal logic\n\t */\n\tprivate setupSheetDismissLogic() {\n\t\tthis.$dismiss\n\t\t\t.pipe(\n\t\t\t\tmergeMap(uid =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<SheetHereMortyEvent>(window, SheetHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)),\n\t\t\t\t\t\t\tmap(e => e.detail.sheet),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(uid).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(new CustomEvent(SheetWhereAreYouRicky, { detail: { uid } }))\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\ttap(([sheet, uid]) => {\n\t\t\t\t\tif (sheet) {\n\t\t\t\t\t\tsheet.closeSheet()\n\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the popstate listener to handle browser back button\n\t */\n\tprivate setupPopStateListener() {\n\t\tif (this.popStateListenerActive) return\n\n\t\tfromEvent<PopStateEvent>(window, 'popstate').subscribe(event => {\n\t\t\t// If we have active sheets, close the most recently opened one\n\t\t\tif (this.activeSheets.size > 0) {\n\t\t\t\tconst lastSheet = Array.from(this.activeSheets).pop()\n\t\t\t\tif (lastSheet) {\n\t\t\t\t\tthis.dismiss(lastSheet)\n\n\t\t\t\t\t// Prevent default navigation behavior by pushing a new state\n\t\t\t\t\t// This effectively cancels out the back navigation\n\t\t\t\t\tif (event.state && event.state.schmancySheet) {\n\t\t\t\t\t\thistory.pushState({}, '', window.location.href)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis.popStateListenerActive = true\n\t}\n\n\t/**\n\t * Dismiss a sheet by uid\n\t */\n\tdismiss(uid: string) {\n\t\tthis.$dismiss.next(uid)\n\t}\n\n\t/**\n\t * Open a sheet with the given target configuration\n\t */\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Check if a sheet is currently open by uid\n\t */\n\tisOpen(uid: string): boolean {\n\t\treturn this.activeSheets.has(uid)\n\t}\n\n\t/**\n\t * Close all open sheets\n\t */\n\tcloseAll() {\n\t\tArray.from(this.activeSheets).forEach(uid => {\n\t\t\tthis.dismiss(uid)\n\t\t})\n\t}\n}\nexport const sheet = new BottomSheetService()\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { fromEvent, merge, 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 }) allowOverlayDismiss = true\n\t@property({ type: String, reflect: true }) title = ''\n\n\t@query('.sheet') private sheet!: HTMLElement\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\tthis.addFocusTrap()\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.removeFocusTrap()\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 ESC key\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(window, 'keyup').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.sheetContainsFocus()) {\n\t\t\t\t\tif (this.uid) {\n\t\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t\t}\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(keyUp$, rickyComm$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tprivate sheetContainsFocus(): boolean {\n\t\treturn this.sheet?.contains(document.activeElement) ?? false\n\t}\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 addFocusTrap() {\n\t\tdocument.addEventListener('focusin', this.handleFocusIn)\n\t}\n\n\tprivate removeFocusTrap() {\n\t\tdocument.removeEventListener('focusin', this.handleFocusIn)\n\t}\n\n\tprivate handleFocusIn = (e: Event) => {\n\t\tif (!this.sheet?.contains(e.target as Node)) {\n\t\t\tthis.focus()\n\t\t}\n\t}\n\n\tsetIsSheetShown(isShown: boolean) {\n\t\tthis.sheet?.setAttribute('aria-hidden', String(!isShown))\n\t\tthis.sheet?.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\tthis.getFocusElement()?.focus()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"sheet\" role=\"dialog\" aria-labelledby=\"sheet-title\" aria-hidden=${!this.open} aria-modal=${this.open}>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"overlay\"\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tif (this.allowOverlayDismiss) sheet.dismiss(this.uid)\n\t\t\t\t\t}}\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${when(\n\t\t\t\t\t\tthis.header !== 'hidden',\n\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\thtml`<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=${(e: CustomEvent) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tid=\"sheet-title\"\n\t\t\t\t\t\t\t\ttitle=${this.title}\n\t\t\t\t\t\t\t></schmancy-sheet-header>`,\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","html","this","dispatchEvent","CustomEvent","bubbles","composed","customElement","SchmancySheetPosition","SheetWhereAreYouRicky","SheetHereMorty","sheet","bottomSheet","Subject","$dismiss","activeSheets","Set","popStateListenerActive","setupSheetOpeningLogic","setupSheetDismissLogic","setupPopStateListener","pipe","switchMap","forkJoin","fromEvent","window","takeUntil","timer","map","e","detail","defaultIfEmpty","of","target","tap","uid","component","tagName","document","createElement","body","appendChild","setAttribute","position","innerWidth","allowOverlyDismiss","title","persist","toString","header","style","overflow","delay","filter","shadowRoot","querySelector","assignedElements","find","add","handleHistory","historyState","schmancySheet","timestamp","Date","now","history","pushState","location","href","take","subscribe","getAttribute","delete","remove","mergeMap","closeSheet","event","size","lastSheet","Array","from","pop","dismiss","state","next","has","forEach","SchmancySheet","$LitElement","super","arguments","open","Side","allowOverlayDismiss","focusAttribute","lastFocusedElement","handleFocusIn","contains","focus","_oldValue","newValue","activeElement","addFocusTrap","removeFocusTrap","connectedCallback","setupEventListeners","disconnectedCallback","disconnecting","keyUp$","key","sheetContainsFocus","rickyComm$","announcePresence","merge","addEventListener","removeEventListener","isShown","String","selector","el","matches","getFocusElement","render","stopPropagation","when","propName","options","__decorateClass","property","type","reflect","prototype","Boolean","query","queryAssignedElements","flatten","protoOrDescriptor","name","willUpdate","Object","assign","waitUntilFirstUpdate","changedProps","call","oldValue","get","hasUpdated"],"mappings":"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"}