@pacem/pacem-ui 2.0.0-jacobi → 2.0.0-kepler
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/browser/pacem-ui.js +5 -1
- package/dist/browser/pacem-ui.js.map +1 -1
- package/dist/browser/pacem-ui.min.js +2 -2
- package/dist/bundle/pacem-ui.min.mjs +2 -2
- package/dist/bundle/pacem-ui.mjs +2 -1
- package/dist/bundle/pacem-ui.mjs.map +2 -2
- package/dist/esm/adapter.js +1 -1
- package/dist/esm/anchor.js +1 -1
- package/dist/esm/balloon.js +5 -1
- package/dist/esm/binder.js +1 -1
- package/dist/esm/blade.js +1 -1
- package/dist/esm/bottom-sheet.js +1 -1
- package/dist/esm/button.js +1 -1
- package/dist/esm/buttonset.js +1 -1
- package/dist/esm/calendar.js +1 -1
- package/dist/esm/collapse.js +1 -1
- package/dist/esm/dialog-abstractions.js +1 -1
- package/dist/esm/dialog.js +1 -1
- package/dist/esm/divider.js +1 -1
- package/dist/esm/icon.js +1 -1
- package/dist/esm/image.js +1 -1
- package/dist/esm/index-components-ui.js +1 -1
- package/dist/esm/index-components.js +1 -1
- package/dist/esm/index-iife.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/infinite-scroller.js +1 -1
- package/dist/esm/iterative.js +1 -1
- package/dist/esm/lightbox-abstractions.js +1 -1
- package/dist/esm/lightbox.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/markdown-svc.js +1 -1
- package/dist/esm/markdown.js +1 -1
- package/dist/esm/marquee.js +1 -1
- package/dist/esm/media-query.js +1 -1
- package/dist/esm/menu.js +1 -1
- package/dist/esm/pager.js +1 -1
- package/dist/esm/picture.js +1 -1
- package/dist/esm/progressbar.js +1 -1
- package/dist/esm/sidebar.js +1 -1
- package/dist/esm/slideshow.js +1 -1
- package/dist/esm/social-twitter.js +1 -1
- package/dist/esm/sticky-header.js +1 -1
- package/dist/esm/tabs.js +1 -1
- package/dist/esm/ticker.js +1 -1
- package/dist/esm/toast.js +1 -1
- package/dist/esm/toc.js +1 -1
- package/dist/esm/tuner.js +1 -1
- package/dist/esm/types.js +1 -1
- package/dist/esm/vibration.js +1 -1
- package/dist/esm/view.js +1 -1
- package/dist/esm/window.js +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../esm/index-components.js", "../esm/index-components-ui.js", "../esm/adapter.js", "../esm/anchor.js", "../esm/balloon.js", "../esm/types.js", "../esm/binder.js", "../esm/blade.js", "../esm/bottom-sheet.js", "../esm/lightbox-abstractions.js", "../esm/button.js", "../esm/buttonset.js", "../esm/calendar.js", "../esm/collapse.js", "../esm/dialog-abstractions.js", "../esm/dialog.js", "../esm/divider.js", "../esm/icon.js", "../esm/image.js", "../esm/infinite-scroller.js", "../esm/iterative.js", "../esm/lightbox.js", "../esm/loader.js", "../esm/markdown.js", "../esm/markdown-svc.js", "../esm/marquee.js", "../esm/media-query.js", "../esm/menu.js", "../esm/pager.js", "../esm/picture.js", "../esm/progressbar.js", "../esm/sidebar.js", "../esm/slideshow.js", "../esm/social-twitter.js", "../esm/sticky-header.js", "../esm/tabs.js", "../esm/ticker.js", "../esm/toast.js", "../esm/toc.js", "../esm/tuner.js", "../esm/vibration.js", "../esm/view.js", "../esm/window.js"],
|
|
4
|
-
"sourcesContent": ["import * as UI from './index-components-ui';\nexport { UI };\n", "export * from './adapter';\nexport * from './anchor';\nexport * from './balloon';\nexport * from './binder';\nexport * from './blade';\nexport * from './bottom-sheet';\nexport * from './button';\nexport * from './buttonset';\nexport * from './calendar';\nexport * from './collapse';\nexport * from './dialog-abstractions';\nexport * from './dialog';\nexport * from './divider';\nexport * from './icon';\nexport * from './image';\nexport * from './infinite-scroller';\nexport * from './iterative';\nexport * from './lightbox-abstractions';\nexport * from './lightbox';\nexport * from './loader';\nexport * from './markdown';\nexport * from './markdown-svc';\nexport * from './marquee';\nexport * from './media-query';\nexport * from './menu';\nexport * from './pager';\nexport * from './picture';\nexport * from './progressbar';\nexport * from './sidebar';\nexport * from './slideshow';\nexport * from './social-twitter';\nexport * from './sticky-header';\nexport * from './tabs';\nexport * from './ticker';\nexport * from './toast';\nexport * from './toc';\nexport * from './tuner';\nexport * from './types';\nexport * from './vibration';\nexport * from './view';\nexport * from './window';\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, Defaults, CustomElement, ViewChild, Watch, Utils, PropertyConverters, Debounce, avoidHandler, Throttle, CustomElementUtils } from '@pacem/pacem-core';\nimport { Components, UI } from '@pacem/pacem-core';\nconst { PacemElement, RepeaterItemCreateEventName, ItemRegisterEventName, ItemUnregisterEventName } = Components;\n//namespace Pacem.Components.UI {\n/** Orientation used by a {@link PacemAdapterElement} to interpret arrow-key navigation. */\nexport var AdapterOrientation;\n(function (AdapterOrientation) {\n AdapterOrientation[\"Vertical\"] = \"vertical\";\n AdapterOrientation[\"Horizontal\"] = \"horizontal\";\n})(AdapterOrientation || (AdapterOrientation = {}));\nexport const AdapterPageButtonRefreshEventName = 'pagerefresh';\n/** Event dispatched by {@link PacemAdapterElement} whenever a page/dashboard button needs to (re)compute its visible state or content. */\nexport class AdapterPageButtonRefreshEvent extends CustomEvent {\n constructor(args) {\n super(AdapterPageButtonRefreshEventName, { detail: args, bubbles: false, cancelable: false });\n }\n}\n/** Renders a dashboard of prev/next buttons and page indicators driving a {@link Components.PacemAdapter} (e.g. a `<pacem-slideshow>` master). */\nlet PacemAdapterElement = class PacemAdapterElement extends Components.PacemAdapter {\n constructor() {\n super(...arguments);\n this._itemCreatedHandler = (evt) => {\n const index = evt.detail.index;\n this._pageMap.set(index, evt.detail.dom[0].firstElementChild);\n this._fireAdapterPageRefreshCallback(index, evt.detail.item);\n };\n this._pageMap = new Map();\n /** Gets or sets whether the dashboard responds to user interaction (keyboard, click, swipe). */\n this.interactive = true;\n /** Gets or sets whether swipe gesture is enabled for navigation (also depends on the 'interactive' flag being set to 'true') */\n this.swipeEnabled = true;\n /** Gets or sets whether navigating past the last (or before the first) item wraps around. */\n this.loop = true;\n /** Gets or sets the callback computing a page button's caption for a given item/index (defaults to the 1-based index). */\n this.labelCallback = (item, index) => (index + 1).toString();\n this._itemRegisterHandler = (evt) => {\n let item = evt.detail;\n if (!Utils.isNull(this._swiper) && item instanceof PacemElement && item.behaviors.indexOf(this._swiper) == -1)\n item.behaviors.push(this._swiper);\n };\n this._itemUnregisterHandler = (evt) => {\n let item = evt.detail, index;\n if (!Utils.isNull(this._swiper) && item instanceof PacemElement && (index = item.behaviors.indexOf(this._swiper)) >= 0)\n item.behaviors.splice(index, 1);\n };\n this._keydownHandler = (evt) => {\n if (!this.interactive) {\n return;\n }\n switch (this.orientation) {\n case AdapterOrientation.Vertical:\n switch (evt.keyCode) {\n case 40: // down\n this._next(evt);\n break;\n case 38: // up\n this._previous(evt);\n break;\n }\n break;\n default:\n // horizontal\n switch (evt.keyCode) {\n case 39: // right\n this._next(evt);\n break;\n case 37: // left\n this._previous(evt);\n break;\n }\n break;\n }\n };\n }\n masterPropertyChangedCallback(name, old, val, first) {\n super.masterPropertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'items':\n this._syncViewWithItems();\n break;\n case 'index':\n this._index = val;\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._repeater.addEventListener(RepeaterItemCreateEventName, this._itemCreatedHandler, false);\n this._syncViewWithItems();\n }\n disconnectedCallback() {\n if (this._repeater) {\n this._repeater.removeEventListener(RepeaterItemCreateEventName, this._itemCreatedHandler, false);\n }\n super.disconnectedCallback();\n }\n initializeCallback() {\n super.initializeCallback();\n this.addEventListener('keydown', this._keydownHandler, false);\n const el = this.master;\n //\n if (!Utils.isNull(el)) {\n const tab = this._previousTabIndex = el.tabIndex;\n if (!tab || tab < 0)\n el.tabIndex = 0;\n el.addEventListener('keydown', this._keydownHandler, false);\n el.addEventListener(ItemRegisterEventName, this._itemRegisterHandler, false);\n el.addEventListener(ItemUnregisterEventName, this._itemUnregisterHandler, false);\n }\n //\n this._syncViewWithItems();\n }\n destroyCallback() {\n this.removeEventListener('keydown', this._keydownHandler, false);\n const el = this.master;\n if (!Utils.isNull(el)) {\n el.removeEventListener('keydown', this._keydownHandler, false);\n el.removeEventListener(ItemRegisterEventName, this._itemRegisterHandler, false);\n el.removeEventListener(ItemUnregisterEventName, this._itemUnregisterHandler, false);\n if (!Utils.isNullOrEmpty(el.items)) {\n for (let item of el.items) {\n const behaviors = item.behaviors, ndx = behaviors.indexOf(this._swiper);\n if (ndx >= 0) {\n behaviors.splice(ndx, 1);\n }\n }\n }\n el.tabIndex = this._previousTabIndex;\n }\n super.destroyCallback();\n }\n itemPropertyChangedCallback(index, name, old, val, first) {\n super.itemPropertyChangedCallback(index, name, old, val, first);\n // tick overall version\n this._tickVersion();\n this._fireAdapterPageRefreshCallback(index);\n }\n _fireAdapterPageRefreshCallback(index, item) {\n item = item || this.master.items[index];\n var hide = item.hide || false, disable = item.disabled || false, caption = this._labelCallback(item, index);\n const evt = new AdapterPageButtonRefreshEvent({ index: index, hide: hide, disabled: disable, content: caption });\n this.dispatchEvent(evt);\n // receive/accept changes\n hide = this._isHidden(item, index, evt.detail.hide);\n disable = this._isDisabled(item, index, evt.detail.disabled);\n caption = evt.detail.content;\n // pick target button\n const pagers = this._pageMap;\n if (pagers.has(index)) {\n const pager = pagers.get(index), span = pager.firstElementChild;\n const fn = () => {\n pager.hide = hide;\n pager.disabled = disable;\n span.content = caption;\n };\n // *careful here*: TODO: TO BE STUDIED\n // if setting the property before it's connected\n // the @Watch configuration and the get+set injection gets lost!\n CustomElementUtils.whenReady(pager, fn);\n }\n }\n _tickVersion() {\n this._v = Date.now();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'interval':\n this._resetTimer(val);\n break;\n case 'swipeEnabled':\n this._swiper.disabled = !val || !this.interactive;\n break;\n case 'interactive':\n this.hidden = !val;\n this._swiper.disabled = !val || !this.swipeEnabled;\n break;\n case 'pausable':\n if (val == true)\n this._liPause.removeAttribute('hidden');\n else\n this._liPause.setAttribute('hidden', 'hidden');\n break;\n }\n }\n _syncViewWithItems() {\n if (!this.isReady\n || Utils.isNull(this.master)\n || Utils.isNull(this._prevBtn)\n || Utils.isNull(this._nextBtn)\n || Utils.isNull(this._repeater))\n return;\n var val = this.master.items;\n this._prevBtn.hide = this._nextBtn.hide = this._panel.hide = !(val && val.length > 1);\n this._panel.hide = Utils.isNullOrEmpty(val);\n this._repeater.datasource = val;\n this._index = this.master.index;\n if (!Utils.isNullOrEmpty(val)) {\n for (let item of val) {\n if (item instanceof PacemElement && item.behaviors.indexOf(this._swiper) == -1)\n item.behaviors.push(this._swiper);\n }\n }\n }\n _toggle(evt) {\n const p = this._paused = !this._paused;\n if (p) {\n avoidHandler(evt);\n this._resetTimer(0);\n }\n else {\n this._next(evt);\n }\n }\n _resetTimer(val) {\n clearInterval(this._handle);\n if (val > 0)\n this._handle = window.setInterval(() => {\n super.next();\n }, val);\n }\n _next(evt) {\n if (evt.type !== UI.SwipeEventType.SwipeLeft)\n avoidHandler(evt);\n this._resetTimer(this.interval);\n super.next(this.loop);\n }\n _previous(evt) {\n if (evt.type !== UI.SwipeEventType.SwipeRight)\n avoidHandler(evt);\n this._resetTimer(this.interval);\n super.previous(this.loop);\n }\n _select(ndx, evt) {\n avoidHandler(evt);\n this._resetTimer(this.interval);\n if (!this.deselectable || ndx !== this._index) {\n super.select(ndx);\n }\n else {\n this.master.index = this._index = -1;\n }\n }\n _isDisabled(item, index, disabled, v) {\n return this._disableOrHide(item, index, disabled);\n }\n _isHidden(item, index, hide, v) {\n return this._disableOrHide(item, index, hide);\n }\n _disableOrHide(item, index, disabledOrHidden) {\n const retval = item instanceof PacemElement && disabledOrHidden === true;\n if ((this._index === -1 && retval === false) || (retval === true && index === this._index)) {\n if (this.deselectable) {\n this.master.index = this._index = -1;\n }\n else {\n super.select(index);\n }\n }\n return retval;\n }\n _labelCallback(item, index, v) {\n return this.labelCallback(item, index);\n }\n};\n__decorate([\n ViewChild(P + '-repeater')\n], PacemAdapterElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-button.' + PCSS + '-adapter-previous')\n], PacemAdapterElement.prototype, \"_prevBtn\", void 0);\n__decorate([\n ViewChild(P + '-button.' + PCSS + '-adapter-next')\n], PacemAdapterElement.prototype, \"_nextBtn\", void 0);\n__decorate([\n ViewChild(P + '-panel')\n], PacemAdapterElement.prototype, \"_panel\", void 0);\n__decorate([\n ViewChild(P + '-swipe')\n], PacemAdapterElement.prototype, \"_swiper\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-adapter-dashboard > li[pacem]')\n], PacemAdapterElement.prototype, \"_liPause\", void 0);\n__decorate([\n Debounce()\n], PacemAdapterElement.prototype, \"_tickVersion\", null);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemAdapterElement.prototype, \"pausable\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemAdapterElement.prototype, \"interval\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAdapterElement.prototype, \"orientation\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemAdapterElement.prototype, \"interactive\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemAdapterElement.prototype, \"swipeEnabled\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemAdapterElement.prototype, \"deselectable\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemAdapterElement.prototype, \"loop\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemAdapterElement.prototype, \"labelCallback\", void 0);\n__decorate([\n Watch()\n], PacemAdapterElement.prototype, \"_index\", void 0);\n__decorate([\n Watch()\n], PacemAdapterElement.prototype, \"_paused\", void 0);\n__decorate([\n Watch()\n], PacemAdapterElement.prototype, \"_v\", void 0);\n__decorate([\n Throttle(333)\n], PacemAdapterElement.prototype, \"_next\", null);\n__decorate([\n Throttle(333)\n], PacemAdapterElement.prototype, \"_previous\", null);\nPacemAdapterElement = __decorate([\n CustomElement({\n tagName: P + '-adapter', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-button class=\"${PCSS}-adapter-previous\" on-click=\":host._previous($event)\"><</${P}-button>\r\n <${P}-button class=\"${PCSS}-adapter-next\" on-click=\":host._next($event)\">></${P}-button>\r\n <${P}-swipe on-swipeleft=\":host._next($event)\" on-swiperight=\":host._previous($event)\"></${P}-swipe>\r\n <${P}-panel tabindex=\"0\">\r\n <${P}-repeater>\r\n <ol class=\"${PCSS}-adapter-dashboard\">\r\n <li pacem hidden>\r\n <${P}-button class=\"${PCSS}-play-pause\"\r\n css-class=\"{{ {'paused' : :host._paused, 'playing': !:host._paused } }}\" \r\n disabled=\"{{ !:host.pausable }}\" on-click=\":host._toggle($event)\"></${P}-button>\r\n </li>\r\n <template>\r\n <li>\r\n <${P}-button on-click=\":host._select(^index, $event)\" class=\"${PCSS}-adapter-page\" css-class=\"{{ { '${PCSS}-adapter-active': ^index === :host._index } }}\">\r\n <${P}-span></${P}-span>\r\n </${P}-button>\r\n </li>\r\n </template>\r\n </ol></${P}-repeater></${P}-panel>`\n })\n], PacemAdapterElement);\nexport { PacemAdapterElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, PropertyChangeEvent } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n// TODO: shadow-ize and reuse native <a> element.\n/** Anchor-like custom element, supporting routed navigation (via a {@link Components.PacemRouterElement}), OAuth-authenticated downloads and keyboard activation. */\nlet PacemAnchorElement = class PacemAnchorElement extends Components.PacemElement {\n constructor() {\n super('link');\n this._fetching = false;\n }\n /** @readonly Gets whether a `download` fetch is currently in progress. */\n get fetching() {\n return this._fetching;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute('tab-order')) {\n this.tabOrder = 0;\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'target':\n (Utils.isNullOrEmpty(val) ? Utils.removeClass : Utils.addClass)(this, 'a-target');\n break;\n case 'href':\n (Utils.isNull(val) ? Utils.removeClass : Utils.addClass)(this, 'a-url');\n break;\n case 'download':\n (Utils.isNullOrEmpty(val) ? Utils.removeClass : Utils.addClass)(this, 'a-download');\n break;\n }\n }\n emit(evt) {\n super.emit(evt);\n if (this.disabled) {\n return;\n }\n switch (evt.type) {\n case 'mousedown':\n Utils.addClass(this, PCSS + '-active');\n break;\n case 'keydown':\n if (evt.key === 'Enter') {\n evt.preventDefault();\n Utils.addClass(this, PCSS + '-active');\n }\n break;\n case 'blur':\n case 'mouseup':\n Utils.removeClass(this, PCSS + '-active');\n break;\n case 'keyup':\n if (evt.key === 'Enter') {\n this.click();\n Utils.removeClass(this, PCSS + '-active');\n }\n break;\n }\n const href = this.href, target = this.target, router = this.router, filename = this.download;\n const url = () => {\n return Utils.isNull(router) ? href : Utils.URIs.format(href, router.state);\n };\n if (!Utils.isNull(href) && !evt.defaultPrevented) {\n if ((evt.type === 'click' && evt.ctrlKey) || (evt.type === 'mousedown' && evt.button === 1)) {\n // 1. middle-click or ctrl+click\n window.open(url(), '_blank');\n }\n else if (evt.type === 'click') {\n // 2. download\n if (filename === true) {\n this._download(url());\n }\n else if (typeof filename === 'string' && !Utils.isNullOrEmpty(filename)) {\n this._download(url(), filename);\n }\n // 3. targeting other window\n else if (!Utils.isNullOrEmpty(target)) {\n window.open(url(), target);\n }\n // 4. routed navigation\n else if (!Utils.isNull(router)) {\n // old implementation memento: Pacem.preventDefaultHandler(evt);\n // trigger router `navigate()`\n router.path = href;\n }\n // 5. standard behavior\n else {\n location.assign(href);\n }\n }\n }\n }\n async _download(url, filename) {\n this.dispatchEvent(new PropertyChangeEvent({\n propertyName: 'fetching', oldValue: this._fetching, currentValue: this._fetching = true\n }));\n try {\n await Utils.download(url, { credentials: this.fetchCredentials, headers: this.fetchHeaders, filename: filename });\n }\n finally {\n this.dispatchEvent(new PropertyChangeEvent({\n propertyName: 'fetching', oldValue: this._fetching, currentValue: this._fetching = false\n }));\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAnchorElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAnchorElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemAnchorElement.prototype, \"href\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemAnchorElement.prototype, \"target\", void 0);\n__decorate([\n Watch({\n reflectBack: false, converter: {\n convert: (attr) => {\n switch (attr) {\n case 'true':\n return true;\n case 'false':\n return false;\n default:\n return attr;\n }\n }, convertBack: (prop) => prop\n }\n })\n], PacemAnchorElement.prototype, \"download\", void 0);\n__decorate([\n Watch({ reflectBack: false, converter: PropertyConverters.Element })\n], PacemAnchorElement.prototype, \"router\", void 0);\nPacemAnchorElement = __decorate([\n CustomElement({\n tagName: P + '-a',\n modifiers: ['hoverable', 'focusable', 'pressable']\n })\n], PacemAnchorElement);\nexport { PacemAnchorElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, PropertyChangeEvent, ViewChild, stopPropagationHandler, preventDefaultHandler } from '@pacem/pacem-core';\nimport { ElementOrPointPropertyConverter } from './types';\n//namespace Pacem.Components.UI {\n/** How a {@link PacemBalloonElement} behaves once popped up: a dismissible menu, a tooltip, or non-interactive. */\nexport var BalloonBehavior;\n(function (BalloonBehavior) {\n BalloonBehavior[\"Menu\"] = \"menu\";\n BalloonBehavior[\"Tooltip\"] = \"tooltip\";\n BalloonBehavior[\"Inert\"] = \"inert\";\n})(BalloonBehavior || (BalloonBehavior = {}));\n/** The user interaction on `target` that pops a {@link PacemBalloonElement} up. */\nexport var BalloonTrigger;\n(function (BalloonTrigger) {\n BalloonTrigger[\"Hover\"] = \"hover\";\n BalloonTrigger[\"Click\"] = \"click\";\n BalloonTrigger[\"ContextMenu\"] = \"contextmenu\";\n BalloonTrigger[\"Focus\"] = \"focus\";\n})(BalloonTrigger || (BalloonTrigger = {}));\n/** Cross-axis alignment of a {@link PacemBalloonElement} relative to its `target`. */\nexport var BalloonAlignment;\n(function (BalloonAlignment) {\n BalloonAlignment[\"Start\"] = \"start\";\n BalloonAlignment[\"Center\"] = \"center\";\n BalloonAlignment[\"End\"] = \"end\";\n BalloonAlignment[\"Auto\"] = \"auto\";\n})(BalloonAlignment || (BalloonAlignment = {}));\n/** A side of `target` a {@link PacemBalloonElement} can sit on. */\nexport const BalloonPlacement = {\n Top: 'top',\n Left: 'left',\n Bottom: 'bottom',\n Right: 'right',\n};\n/** The automatic placements of a {@link PacemBalloonElement}: the side with the most room, on both axes or on one. */\nconst BalloonPlacementOption = {\n Auto: 'auto',\n HorizontalAuto: 'x',\n VerticalAuto: 'y'\n};\n/** Side of `target` a {@link PacemBalloonElement} is anchored to (with automatic variants that pick the side with the most room). */\nexport const BalloonPosition = {\n ...BalloonPlacement,\n ...BalloonPlacementOption\n};\n/** Whether a {@link PacemBalloonElement} sizes itself freely or matches its `target`'s size along the anchored axis. */\nexport var BalloonSizing;\n(function (BalloonSizing) {\n BalloonSizing[\"Auto\"] = \"auto\";\n BalloonSizing[\"Match\"] = \"match\";\n})(BalloonSizing || (BalloonSizing = {}));\n/** Event name fired by {@link PacemBalloonElement} once it has finished popping up (after the show transition). */\nexport const BalloonPopupEventName = 'popup';\n/** Event name fired by {@link PacemBalloonElement} once it has finished popping out (after the hide transition). */\nexport const BalloonPopoutEventName = 'popout';\nconst BalloonConsts = {\n Defaults: {\n 'trigger': BalloonTrigger.Hover,\n 'position': BalloonPosition.Auto,\n 'size': BalloonSizing.Auto,\n 'behavior': BalloonBehavior.Menu,\n 'verticalOffset': 0,\n 'horizontalOffset': 0,\n 'hoverDelay': 250,\n 'hoverTimeout': 500,\n 'align': BalloonAlignment.Center,\n 'track': true\n }\n};\n/**\n * CSS custom property a balloon publishes on itself when placed: the room left (px) on its side of the target, within\n * the viewport, so that its contents can fit (e.g. `max-height: var(--pacem-balloon-available-height)` on a scrolling\n * list). Updated whenever the balloon repositions (scroll, resize, when tracking).\n */\nexport const AVAILABLE_HEIGHT_VAR = '--pacem-balloon-available-height';\n/** Breathing room (px) kept between a balloon and the viewport's edge when computing {@link AVAILABLE_HEIGHT_VAR}. */\nconst AVAILABLE_HEIGHT_GUTTER = 8;\nconst positioningStyles = 'balloon-right balloon-left balloon-bottom balloon-top balloon-start balloon-center balloon-end';\nconst allStyles = PCSS + '-balloon ' + positioningStyles + ' balloon-out balloon-in balloon-on';\n/** Positions its content as a floating popup (menu or tooltip) anchored to a `target` element or point; see {@link BalloonOptions}. */\n// (the content's `<p-resize>` is `display: block` inline: in the shadow root the theme's `pacem-resize { display: block }`\n// does not apply, and an inline element never reports a resize, i.e. the balloon would not reposition when its content\n// grows or shrinks, e.g. a filtered list above its target)\nlet PacemBalloonElement = class PacemBalloonElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._options = BalloonConsts.Defaults;\n this._originalNeighborhood = null;\n this._popoutDelegate = (_) => {\n this.popout();\n };\n this._hoverDelegate = (evt) => {\n // window.clearTimeout(this._timer);\n if (!this.disabled) {\n this.popup(this._options.hoverDelay);\n // this._timer = window.setTimeout(this._popupDelegate, this._options.hoverDelay);\n }\n };\n this._outConditionalDelegate = (evt) => {\n if ((evt.srcElement || evt.target) != this) {\n this._outDelegate(evt);\n }\n };\n this._mousedownConditionalDelegate = (evt) => {\n preventDefaultHandler(evt);\n if (this._visible) {\n stopPropagationHandler(evt);\n }\n };\n this._outDelegate = (_) => {\n this.popout(this._options.hoverTimeout);\n };\n this._toggleDelegate = (evt) => {\n evt.preventDefault();\n if (this._visible) {\n this._outDelegate(evt);\n }\n else {\n this._hoverDelegate(evt);\n }\n };\n //#endregion\n }\n /** Gets whether the balloon is open and visible. */\n get visible() {\n return this._visible;\n }\n // #region LIFECYCLE\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'target') {\n if (old instanceof Element) {\n this._removeHandlers(old);\n }\n if (!(val instanceof Element)) {\n this._adjust();\n }\n }\n else if (name === 'options') {\n if (this.target instanceof Element) {\n this._removeHandlers(this.target);\n }\n this._options = Utils.extend({}, Utils.clone(BalloonConsts.Defaults), val);\n this._synchronizeOptions();\n }\n else if (name === 'disabled') {\n //this.container.style.visibility = val ? 'hidden' : 'visible';\n if (val) {\n this.popout();\n }\n }\n if (this.target instanceof Element && name !== 'disabled') {\n this._setHandlers(this.target);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._ensurePopup();\n this.target = this.target || this.parentElement;\n this._synchronizeOptions();\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this._destroyPopup();\n if (this.target instanceof Element) {\n this._removeHandlers(this.target);\n }\n }\n // #endregion\n //#region METHODS\n _synchronizeOptions() {\n const popup = this, options = popup.options || {};\n // moveToRoot\n if (!!options.moveToRoot && Utils.isNull(this._originalNeighborhood)) {\n this._originalNeighborhood = { parent: popup.parentElement, nextSibling: popup.nextElementSibling };\n document.body.appendChild(popup);\n }\n else if (!options.moveToRoot && !Utils.isNull(this._originalNeighborhood)) {\n const parent = this._originalNeighborhood.parent;\n // has something changed in the neighborhood?...\n if (!Utils.isNull(parent)) {\n parent.appendChild(popup);\n }\n this._originalNeighborhood = null;\n }\n }\n _ensurePopup() {\n const popup = this, container = popup._container;\n //\n if (popup && container && !Utils.hasClass(popup, PCSS + '-balloon')) {\n Utils.addClass(popup, PCSS + '-balloon');\n popup.style.position = 'absolute';\n container.style.position = 'relative';\n container.style.zIndex = '1';\n popup.style.visibility = 'hidden';\n }\n return popup;\n }\n _destroyPopup() {\n var popup = this, container = popup._container;\n Utils.removeClass(popup, allStyles);\n popup.style.position = '';\n if (!Utils.isNull(container)) {\n container.style.position = '';\n container.style.zIndex = '';\n }\n }\n _registerEvents() {\n const popup = this._ensurePopup(), options = this._options;\n switch (options.behavior) {\n case BalloonBehavior.Menu:\n switch (options.trigger) {\n case BalloonTrigger.Focus:\n popup.addEventListener('mousedown', stopPropagationHandler, false);\n popup.addEventListener('focus', this._hoverDelegate, false);\n // do nothing else: only the blur event will pop the balloon out\n break;\n case BalloonTrigger.Click:\n case BalloonTrigger.ContextMenu:\n popup.addEventListener('mousedown', stopPropagationHandler, false);\n window.document.body.addEventListener('mousedown', this._outConditionalDelegate, false);\n break;\n default:\n popup.addEventListener('mouseenter', this._hoverDelegate, false);\n popup.addEventListener('mouseleave', this._outDelegate, false);\n break;\n }\n break;\n case BalloonBehavior.Tooltip:\n switch (options.trigger) {\n case BalloonTrigger.Focus:\n case BalloonTrigger.Click:\n case BalloonTrigger.ContextMenu:\n window.document.body.addEventListener('mousedown', this._outConditionalDelegate, false);\n break;\n default:\n break;\n }\n break;\n }\n }\n _unregisterEvents() {\n var popup = this._ensurePopup();\n var opts = this._options;\n switch (opts.behavior) {\n case BalloonBehavior.Menu:\n switch (opts.trigger) {\n case BalloonTrigger.Focus:\n popup.removeEventListener('mousedown', stopPropagationHandler, false);\n popup.removeEventListener('focus', this._hoverDelegate, false);\n // do nothing else: only the blur event will pop the balloon out\n break;\n case BalloonTrigger.Click:\n case BalloonTrigger.ContextMenu:\n popup.removeEventListener('mousedown', stopPropagationHandler, false);\n window.document.body.removeEventListener('mousedown', this._outConditionalDelegate, false);\n break;\n default:\n popup.removeEventListener('mouseenter', this._hoverDelegate, false);\n popup.removeEventListener('mouseleave', this._outDelegate, false);\n break;\n }\n break;\n case BalloonBehavior.Tooltip:\n switch (opts.trigger) {\n case BalloonTrigger.Click:\n case BalloonTrigger.ContextMenu:\n window.document.body.removeEventListener('mousedown', this._outConditionalDelegate, false);\n break;\n }\n break;\n }\n }\n _onLayoutChange(evt) {\n if (this._visible) {\n this._adjust();\n }\n }\n /**\n * The side {@link BalloonOptions.prefer} asks for, when the balloon fits there (its natural size, on that side of the\n * target, within the viewport); `null` otherwise, or when nothing is preferred.\n * @param room The room around the target, per side.\n */\n _preferredSide(opts, room) {\n const prefer = opts.prefer;\n if (Utils.isNull(prefer) || !(prefer in room)) {\n return null;\n }\n const isVertical = prefer === BalloonPlacement.Top || prefer === BalloonPlacement.Bottom;\n const size = isVertical ? this.offsetHeight : this.offsetWidth;\n const fits = size + AVAILABLE_HEIGHT_GUTTER <= room[prefer];\n return fits ? prefer : null;\n }\n /** The room left on a side of the target (the whole viewport height for a side that is not above or below). */\n _availableHeight(position, offsetTop, offsetBottom, viewportHeight) {\n switch (position) {\n case BalloonPosition.Top:\n return Math.max(offsetTop - AVAILABLE_HEIGHT_GUTTER, 0);\n case BalloonPosition.Bottom:\n return Math.max(offsetBottom - AVAILABLE_HEIGHT_GUTTER, 0);\n default:\n return viewportHeight;\n }\n }\n _adjust() {\n const popup = this, el = popup.target;\n if (Utils.isNull(el)) {\n return;\n }\n const coords = el instanceof Element ? Utils.offset(el) : { top: el.y, left: el.x, width: 0, height: 0 };\n const vieportSize = Utils.windowSize;\n var opts = this._options;\n var chosenPosition = opts.position, chosenAlignment = opts.align;\n // room around the target, in the viewport\n const viewportHeight = vieportSize.height;\n const viewportWidth = vieportSize.width;\n const offsetLeft = coords.left - Utils.scrollLeft;\n const offsetTop = coords.top - Utils.scrollTop;\n const offsetBottom = viewportHeight - (offsetTop + coords.height);\n const offsetRight = viewportWidth - (offsetLeft + coords.width);\n // (the natural size, uncapped: see AVAILABLE_HEIGHT_VAR below)\n popup.style.removeProperty(AVAILABLE_HEIGHT_VAR);\n if (chosenPosition != BalloonPosition.Top &&\n chosenPosition != BalloonPosition.Bottom && chosenPosition != BalloonPosition.Left && chosenPosition != BalloonPosition.Right) {\n // an automatic position: the preferred side wins, whenever the balloon fits there (on either axis)...\n const room = { top: offsetTop, bottom: offsetBottom, left: offsetLeft, right: offsetRight };\n const preferred = this._preferredSide(opts, room);\n if (!Utils.isNull(preferred)) {\n chosenPosition = preferred;\n }\n else {\n // ...otherwise the larger side\n switch (chosenPosition) {\n case BalloonPosition.HorizontalAuto:\n chosenPosition = offsetLeft > offsetRight ? BalloonPosition.Left : BalloonPosition.Right;\n break;\n default:\n // (!) exclude 'left' and 'right' also when position is simply set to 'auto'\n chosenPosition = offsetTop > offsetBottom ? BalloonPosition.Top : BalloonPosition.Bottom;\n break;\n }\n }\n }\n // the room left on the chosen side, for contents that must fit in the viewport (e.g. a scrolling list)\n const availableHeight = this._availableHeight(chosenPosition, offsetTop, offsetBottom, viewportHeight);\n popup.style.setProperty(AVAILABLE_HEIGHT_VAR, `${availableHeight}px`);\n if (opts.size === BalloonSizing.Match) {\n switch (chosenPosition) {\n case BalloonPosition.Bottom:\n case BalloonPosition.Top:\n popup.style.minWidth = coords.width + 'px';\n popup.style.minHeight = '';\n break;\n case BalloonPosition.Left:\n case BalloonPosition.Right:\n popup.style.minHeight = coords.height + 'px';\n popup.style.minWidth = '';\n break;\n }\n }\n else {\n popup.style.minWidth = popup.style.minHeight = '';\n }\n const popupSize = { width: popup.offsetWidth, height: popup.offsetHeight };\n const fullOffsetWidth = coords.width - popupSize.width, halfOffsetWidth = fullOffsetWidth * .5, fullOffsetHeight = coords.height - popupSize.height, halfOffsetHeight = fullOffsetHeight * .5;\n switch (chosenAlignment) {\n case BalloonAlignment.Center:\n case BalloonAlignment.Start:\n case BalloonAlignment.End:\n break;\n case BalloonAlignment.Auto:\n chosenAlignment = BalloonAlignment.Center;\n switch (chosenPosition) {\n case BalloonPosition.Right:\n case BalloonPosition.Left:\n const halfHeight = Utils.scrollTop + vieportSize.height / 2;\n if /* completely inside the first half of the screen */ ((coords.top + coords.height) < halfHeight) {\n chosenAlignment = BalloonAlignment.Start;\n }\n else if /* completely beyond the half line of the screen */ (coords.top > halfHeight) {\n chosenAlignment = BalloonAlignment.End;\n }\n break;\n case BalloonPosition.Top:\n case BalloonPosition.Bottom:\n const halfWidth = Utils.scrollLeft + vieportSize.width / 2;\n if /* completely inside the first half of the screen */ ((coords.left + coords.width) < halfWidth) {\n chosenAlignment = BalloonAlignment.Start;\n }\n else if /* completely beyond the half line of the screen */ (coords.left > halfWidth) {\n chosenAlignment = BalloonAlignment.End;\n }\n break;\n }\n break;\n default:\n chosenAlignment = BalloonConsts.Defaults.align;\n break;\n }\n Utils.removeClass(popup, positioningStyles);\n Utils.addClass(popup, 'balloon-' + chosenPosition);\n Utils.addClass(popup, 'balloon-' + chosenAlignment);\n const tailSize = Utils.Css.getVariableValue(`--${PCSS}-balloon-tail-size`), tailInset = Utils.Css.getVariableValue(`--${PCSS}-balloon-tail-inset`);\n const inset = parseInt(tailInset) + .5 * parseInt(tailSize);\n const threshold = { width: coords.width / 2, height: coords.height / 2 };\n const adjustX = opts.autoAdjust && inset > threshold.width;\n const adjustY = opts.autoAdjust && inset > threshold.height;\n switch (chosenPosition) {\n case BalloonPosition.Top:\n coords.top -= popupSize.height;\n switch (chosenAlignment) {\n case BalloonAlignment.Center:\n coords.left += halfOffsetWidth;\n break;\n case BalloonAlignment.End:\n coords.left += fullOffsetWidth;\n if (adjustX) {\n coords.left += (inset - threshold.width);\n }\n break;\n case BalloonAlignment.Start:\n if (adjustX) {\n coords.left -= (inset - threshold.width);\n }\n break;\n }\n break;\n case BalloonPosition.Left:\n coords.left -= popupSize.width;\n switch (chosenAlignment) {\n case BalloonAlignment.Center:\n coords.top += halfOffsetHeight;\n break;\n case BalloonAlignment.End:\n coords.top += fullOffsetHeight;\n if (adjustY) {\n coords.top += (inset - threshold.height);\n }\n break;\n case BalloonAlignment.Start:\n if (adjustY) {\n coords.top -= (inset - threshold.height);\n }\n break;\n }\n break;\n case BalloonPosition.Right:\n coords.left += coords.width;\n switch (chosenAlignment) {\n case BalloonAlignment.Center:\n coords.top += halfOffsetHeight;\n break;\n case BalloonAlignment.End:\n coords.top += fullOffsetHeight;\n if (adjustY) {\n coords.top += (inset - threshold.height);\n }\n break;\n case BalloonAlignment.Start:\n if (adjustY) {\n coords.top -= (inset - threshold.height);\n }\n break;\n }\n break;\n default:\n // bottom\n coords.top += coords.height;\n switch (chosenAlignment) {\n case BalloonAlignment.Center:\n coords.left += halfOffsetWidth;\n break;\n case BalloonAlignment.End:\n coords.left += fullOffsetWidth;\n if (adjustX) {\n coords.left += (inset - threshold.width);\n }\n break;\n case BalloonAlignment.Start:\n if (adjustX) {\n coords.left -= (inset - threshold.width);\n }\n break;\n }\n break;\n }\n coords.left = Math.min(vieportSize.width - popupSize.width, Math.max(0, coords.left));\n //coords.top = Math.max(0, coords.top);\n // coords for balloon positioning\n coords.top += opts.verticalOffset;\n coords.left += opts.horizontalOffset;\n popup.style.top = Math.round(coords.top) + 'px';\n popup.style.left = Math.round(coords.left) + 'px';\n // popup.style.transform = `translateX(${Math.round(coords.left)}px) translateY(${Math.round(coords.top)}px) translateZ(0)`;\n //popup.style.visibility = 'visible';\n }\n _adjustWatchers(visible) {\n const options = this.options || {};\n if (!Utils.isNull(this._resize)) {\n // track position and size\n this._resize.disabled = !visible;\n this._position.disabled = !visible || !(options.track || options.trackPosition);\n }\n }\n /**\n * Shows the balloon, if hidden.\n */\n popup(delay = 0) {\n clearTimeout(this._timer);\n if (delay > 0) {\n this._timer = setTimeout(() => this.popup(), delay);\n return;\n }\n const popup = this, isVisible = Utils.isVisible(popup), \n // (popping out: still visible, but leaving; popping up again cancels that)\n isLeaving = Utils.hasClass(popup, 'balloon-out');\n this._adjustWatchers(true);\n if ((isVisible && !isLeaving) || this.disabled) {\n return;\n }\n Utils.removeClass(popup, 'balloon-out');\n // attach closured behavior to popup\n //if (!sameTrigger) {\n this._registerEvents(); // $popup.on('mouseenter', obj.methods.hover).on('mouseleave', obj.methods.out).data(vars.TRIGGER, obj);\n //}\n //\n popup.style.pointerEvents = 'none';\n this._visible = true;\n popup.style.visibility = 'visible';\n this._adjust();\n //requestAnimationFrame(() => {\n Utils.addClass(popup, 'balloon-in');\n Utils.addAnimationEndCallback(popup, () => {\n Utils.addClass(popup, 'balloon-on');\n popup.dispatchEvent(new PropertyChangeEvent({ propertyName: 'visible', oldValue: false, currentValue: true }));\n popup.dispatchEvent(new Event(BalloonPopupEventName));\n popup.style.pointerEvents = 'auto';\n }, 500);\n //});\n }\n /**\n * Hides the balloon, if visible.\n */\n popout(delay = 0) {\n clearTimeout(this._timer);\n if (delay > 0) {\n this._timer = setTimeout(() => this.popout(), delay);\n return;\n }\n var popup = this;\n const isVisible = Utils.isVisible(popup);\n this._adjustWatchers(false);\n if (!isVisible) {\n return;\n }\n // detach closured behavior from popup\n this._unregisterEvents();\n //\n popup.style.pointerEvents = 'none';\n Utils.removeClass(popup, 'balloon-in balloon-on');\n Utils.addClass(popup, 'balloon-out');\n Utils.addAnimationEndCallback(popup, () => {\n // (popped up again meanwhile: stays)\n if (!Utils.hasClass(popup, 'balloon-out')) {\n return;\n }\n popup.style.visibility = 'hidden';\n this._visible = false;\n Utils.removeClass(popup, allStyles);\n popup.dispatchEvent(new Event(BalloonPopoutEventName));\n popup.dispatchEvent(new PropertyChangeEvent({ propertyName: 'visible', oldValue: true, currentValue: false }));\n }, 500);\n }\n /**\n * Shows the balloon, if hidden. Otherwise hides it.\n */\n toggle(delay = 0) {\n if (!Utils.isVisible(this) && !this.disabled) {\n this.popup(delay);\n }\n else {\n this.popout(delay);\n }\n }\n _removeHandlers(el) {\n if (Utils.isNull(el)) {\n return;\n }\n el.removeEventListener('mouseenter', this._hoverDelegate, false);\n el.removeEventListener('mouseleave', this._outDelegate, false);\n el.removeEventListener('mousedown', this._popoutDelegate, false);\n el.removeEventListener('mousedown', this._mousedownConditionalDelegate, false);\n el.removeEventListener('click', this._toggleDelegate, false);\n el.removeEventListener('focus', this._hoverDelegate, false);\n el.removeEventListener('blur', this._outDelegate, false);\n el.removeEventListener('contextmenu', this._toggleDelegate, false);\n }\n _setHandlers(el) {\n this.popout();\n // regenerate opts popup\n var opts = this._options;\n if (opts.behavior == BalloonBehavior.Inert) {\n return;\n }\n switch (opts.trigger) {\n case BalloonTrigger.Hover:\n el.addEventListener('mouseenter', this._hoverDelegate, false);\n el.addEventListener('mouseleave', this._outDelegate, false);\n el.addEventListener('mousedown', this._popoutDelegate, false);\n break;\n case BalloonTrigger.Focus:\n el.addEventListener('focus', this._hoverDelegate, false);\n el.addEventListener('blur', this._outDelegate, false);\n break;\n case BalloonTrigger.Click:\n opts.hoverDelay = opts.hoverTimeout = 0;\n el.addEventListener('mousedown', this._mousedownConditionalDelegate, false);\n el.addEventListener('click', this._toggleDelegate, false) /*.blur(obj.methods.out)*/;\n break;\n case BalloonTrigger.ContextMenu:\n opts.hoverDelay = opts.hoverTimeout = 0;\n el.addEventListener('contextmenu', this._toggleDelegate, false);\n break;\n }\n }\n};\n__decorate([\n ViewChild(`.${PCSS}-balloon-face`, true, false)\n], PacemBalloonElement.prototype, \"_face\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-balloon`)\n], PacemBalloonElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(P + '-resize[content]')\n], PacemBalloonElement.prototype, \"_resize\", void 0);\n__decorate([\n ViewChild(P + '-resize[watch-position=true]')\n], PacemBalloonElement.prototype, \"_position\", void 0);\n__decorate([\n Watch({ converter: ElementOrPointPropertyConverter })\n], PacemBalloonElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemBalloonElement.prototype, \"options\", void 0);\nPacemBalloonElement = __decorate([\n CustomElement({\n tagName: P + '-balloon',\n shadow: true,\n template: `<${P}-resize target=\"{{ :host.target }}\" disabled=\"true\" watch-position=\"true\" on-${Components.ResizeEventName}=\":host._onLayoutChange($event)\"></${P}-resize>\r\n<div class=\"${PCSS}-balloon-face\"></div>\r\n<div class=\"${PCSS}-balloon\"><${P}-resize on-${Components.ResizeEventName}=\":host._onLayoutChange($event)\" disabled=\"true\" content style=\"display: block\"><slot></slot></${P}-resize></div>\r\n<div class=\"corner top-left\" part=\"corner-topleft\"></div><div class=\"corner bottom-left\" part=\"corner-bottomleft\"></div><div class=\"corner top-right\" part=\"corner-topright\"></div><div class=\"corner bottom-right\" part=\"corner-bottomright\"></div>`\n })\n], PacemBalloonElement);\nexport { PacemBalloonElement };\n//}\n", "/** Converts an attribute value into an `Element` (resolved via `querySelector`) or, failing that, a parsed `Point`/JSON value. */\nexport const ElementOrPointPropertyConverter = {\n convert: (attr) => {\n let el = document.querySelector(attr);\n return el ?? JSON.parse(attr);\n }\n};\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, CustomUIEvent, CustomElementUtils } from '@pacem/pacem-core';\nimport { Point } from '@pacem/pacem-foundation';\nimport { ElementOrPointPropertyConverter } from './types';\n// namespace Pacem.Components.UI {\n/** Edge (or center) of an element a {@link PacemBinderElement} curve attaches to. */\nexport var BinderAnchor;\n(function (BinderAnchor) {\n BinderAnchor[\"Auto\"] = \"auto\";\n BinderAnchor[\"Left\"] = \"left\";\n BinderAnchor[\"Top\"] = \"top\";\n BinderAnchor[\"Right\"] = \"right\";\n BinderAnchor[\"Bottom\"] = \"bottom\";\n BinderAnchor[\"Center\"] = \"center\";\n})(BinderAnchor || (BinderAnchor = {}));\n/** Decoration drawn at either end of a {@link PacemBinderElement} curve. */\nexport var BinderEnd;\n(function (BinderEnd) {\n BinderEnd[\"Default\"] = \"default\";\n BinderEnd[\"Arrow\"] = \"arrow\";\n BinderEnd[\"FatArrow\"] = \"fatarrow\";\n BinderEnd[\"None\"] = \"none\";\n})(BinderEnd || (BinderEnd = {}));\n/** How a {@link PacemBinderElement} computes its Bezier control points: from the elements' mass (size) or from the path direction. */\nexport var BinderTension;\n(function (BinderTension) {\n BinderTension[\"Mass\"] = \"mass\";\n BinderTension[\"Path\"] = \"path\";\n})(BinderTension || (BinderTension = {}));\n/** Event name fired by a {@link PacemBinderElement} when its connecting path is interacted with (click, hover, etc.). */\nexport const BinderInteractionEventName = 'interact';\n/** Event dispatched by a {@link PacemBinderElement} wrapping the original user-interaction event on its path. */\nexport class BinderInteractionEvent extends CustomUIEvent {\n constructor(orig) {\n super(BinderInteractionEventName, null, orig);\n }\n}\nconst UI_BINDERS = 'pacem:components:ui:binders';\n/** Tracks the {@link PacemBinderElement} instances bound to a single endpoint element, refreshing them all on that element's resize/reposition (or as soon as it stops animating). */\nclass BindersCollector {\n constructor(element) {\n this.binders = [];\n /** Refreshes the bound binders against the target's latest known size. */\n this.refresh = () => {\n for (var binder of this.binders) {\n binder.refresh(this.resize.target, this.resize.currentSize);\n }\n };\n this.fire = (evt) => {\n for (var binder of this.binders) {\n binder.refresh(this.resize.target, evt.detail);\n }\n };\n const watcher = this.resize = new Components.PacemResizeElement();\n watcher.target = element;\n watcher.watchPosition = true;\n document.body.appendChild(watcher);\n // an element might turn visible leaving its size and position untouched - e.g. while fading in -\n // and binders skip invisible endpoints (see `_draw`): they need a nudge once the animation is over.\n if (element instanceof HTMLElement || element instanceof SVGElement) {\n Utils.addAnimationEndCallback(element, this.refresh);\n }\n }\n dispose() {\n this.resize.remove();\n }\n}\n/** Static registry pairing endpoint elements with their {@link BindersCollector}, plus a page-wide resize listener keeping every registered {@link PacemBinderElement} in sync. */\nclass BinderUtils {\n static { this._pageBinders = []; }\n static _updateResizeListener() {\n const binders = this._pageBinders;\n if (Utils.isNull(this._bodyResizeListener)) {\n const resize = this._bodyResizeListener = new Components.PacemResizeElement();\n resize.target = document.body;\n document.body.appendChild(resize);\n document.addEventListener(Components.ResizeEventName, () => {\n for (let binder of binders) {\n binder.invalidateSize();\n }\n }, false);\n }\n this._bodyResizeListener.disabled = binders.length === 0;\n }\n static register(element, binder) {\n var collector = CustomElementUtils.getAttachedPropertyValue(element, UI_BINDERS), binders = this._pageBinders;\n if (Utils.isNull(collector)) {\n collector = new BindersCollector(element);\n CustomElementUtils.setAttachedPropertyValue(element, UI_BINDERS, collector);\n }\n if (collector.binders.indexOf(binder) == -1) {\n if (collector.binders.length === 0) {\n collector.resize.addEventListener(Components.ResizeEventName, collector.fire, false);\n } //else {\n binder.refresh(element, collector.resize.currentSize);\n //}\n collector.binders.push(binder);\n }\n if (binders.indexOf(binder) === -1) {\n binders.push(binder);\n this._updateResizeListener();\n }\n }\n static unregister(element, binder) {\n var collector = CustomElementUtils.getAttachedPropertyValue(element, UI_BINDERS), ndx, binders = this._pageBinders, ndx2;\n if (!Utils.isNull(collector) && (ndx = collector.binders.indexOf(binder)) > -1) {\n collector.binders.splice(ndx, 1);\n if (collector.binders.length === 0) {\n collector.resize.removeEventListener(Components.ResizeEventName, collector.fire, false);\n collector.dispose();\n CustomElementUtils.deleteAttachedPropertyValue(element, UI_BINDERS);\n }\n }\n if ((ndx2 = binders.indexOf(binder)) >= 0) {\n binders.splice(ndx2, 1);\n this._updateResizeListener();\n }\n }\n}\nconst STD_EVENTS = ['click', 'dblclick', 'mouseover', 'mouseout', 'mouseenter', 'mouseleave', 'mousedown', 'mouseup', 'mousemove', 'contextmenu'];\n/** Draws an SVG Bezier curve connecting two elements (or points), following them as they move/resize; e.g. wires or diagram connectors. */\nlet PacemBinderElement = class PacemBinderElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._broadcastHandler = (evt) => {\n var ui = new BinderInteractionEvent(evt);\n this.dispatchEvent(ui);\n };\n this._state = {};\n }\n connectedCallback() {\n super.connectedCallback();\n this._ensurePath();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (this.from instanceof Element)\n BinderUtils.register(this.from, this);\n if (this.to instanceof Element)\n BinderUtils.register(this.to, this);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'from':\n case 'to':\n if (old instanceof Element) {\n BinderUtils.unregister(old, this);\n }\n if (val instanceof Element) {\n // `BinderUtils.register` eventually calls `.refresh`\n BinderUtils.register(val, this);\n }\n else {\n this.refresh(val);\n }\n break;\n case 'fromLimit':\n case 'toLimit':\n case 'fromEnd':\n case 'toEnd':\n case 'tension':\n this._draw();\n break;\n case 'fromAnchor':\n this.refresh(this.from);\n break;\n case 'toAnchor':\n this.refresh(this.to);\n break;\n case 'cssClass':\n if (!Utils.isNull(this._svg)) {\n this._svg.setAttribute('class', PCSS + '-binder ' + this.className);\n }\n break;\n case 'hide':\n if (!first) {\n this._setPathVisibility();\n }\n break;\n case 'layer':\n this._hostSvg();\n this._draw();\n break;\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._path)) {\n STD_EVENTS.forEach(e => {\n this._path.removeEventListener(e, this._broadcastHandler, false);\n });\n this._svg.remove();\n this._path = undefined;\n }\n if (this.from instanceof Element)\n BinderUtils.unregister(this.from, this);\n if (this.to instanceof Element)\n BinderUtils.unregister(this.to, this);\n super.disconnectedCallback();\n }\n _setPathVisibility(path = this._path, hide = this.hide, interactive = this.interactive) {\n if (!Utils.isNull(path)) {\n if (hide) {\n path.setAttribute('display', 'none');\n }\n else {\n path.removeAttribute('display');\n }\n if (interactive) {\n path.setAttribute('pointer-events', 'visibleStroke');\n path.tabIndex = 0;\n }\n else {\n path.removeAttribute('pointer-events');\n path.tabIndex = -1;\n }\n }\n }\n _ensurePath() {\n if (Utils.isNull(this._path)) {\n let svg = this._svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.style.position = 'absolute';\n Utils.addClass(svg, PCSS + '-binder ' + this.className);\n svg.style.top = '0';\n svg.style.left = '0';\n svg.style.pointerEvents = 'none';\n const path = this._path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('fill', 'none');\n path.setAttribute('display', 'none');\n this._setPathVisibility();\n svg.appendChild(path);\n this._hostSvg();\n STD_EVENTS.forEach(e => {\n path.addEventListener(e, this._broadcastHandler, false);\n });\n }\n }\n /** Whether the SVG lives in a custom {@link layer} rather than in the full-page overlay. */\n get _layered() {\n const layer = this.layer;\n return !Utils.isNull(layer) && layer !== document.body;\n }\n /** Appends the SVG to its host ({@link layer} or `document.body`), adapting its overflow and size accordingly. */\n _hostSvg() {\n const svg = this._svg;\n if (Utils.isNull(svg)) {\n return;\n }\n const layered = this._layered;\n // a full-page overlay must not grow the document, a layer must not crop the curve\n svg.style.overflow = layered ? 'visible' : 'hidden';\n this.invalidateSize();\n const host = layered ? this.layer : document.body;\n if (svg.parentNode !== host) {\n host.appendChild(svg);\n }\n }\n /** Resizes the shared full-page SVG overlay to match the current document size; call after layout changes that may affect `document.body`'s scroll size. A {@link layer}-hosted SVG just fills its host. */\n invalidateSize() {\n const svg = this._svg;\n if (Utils.isNull(svg)) {\n return;\n }\n if (this._layered) {\n svg.setAttribute('width', '100%');\n svg.setAttribute('height', '100%');\n return;\n }\n svg.setAttribute('width', document.body.scrollWidth.toString());\n svg.setAttribute('height', document.body.scrollHeight.toString());\n }\n /** Page coordinates of the origin the curve is drawn against: the {@link layer}'s (scrolled) padding box, or the page itself. */\n _getOrigin() {\n if (!this._layered) {\n return { x: 0, y: 0 };\n }\n const layer = this.layer;\n const offset = Utils.offset(layer);\n return {\n x: offset.left + layer.clientLeft - layer.scrollLeft,\n y: offset.top + layer.clientTop - layer.scrollTop\n };\n }\n /** Translates a page-based layout into the coordinates of the drawing origin. */\n _toLocal(size, origin) {\n return { ...size, left: size.left - origin.x, top: size.top - origin.y };\n }\n _computeAnchorPoints(target, anchor, end, ref, refAnchor, refEnd, tension) {\n var p1, p2, c1, c2;\n const top = target.top, left = target.left, w = target.width, h = target.height, w2 = w / 2, h2 = h / 2;\n const r_top = ref.top, r_left = ref.left, r_w = ref.width, r_h = ref.height, r_w2 = r_w / 2, r_h2 = r_h / 2;\n const p1_center = { x: left + w2, y: top + h2 };\n const p2_center = { x: r_left + r_w2, y: r_top + r_h2 };\n const p1_top = { x: left + w2, y: top };\n const p1_bottom = { x: left + w2, y: top + h };\n const p1_left = { x: left, y: top + h2 };\n const p1_right = { x: left + w, y: top + h2 };\n const p2_top = { x: r_left + r_w2, y: r_top };\n const p2_bottom = { x: r_left + r_w2, y: r_top + r_h };\n const p2_left = { x: r_left, y: r_top + r_h2 };\n const p2_right = { x: r_left + r_w, y: r_top + r_h2 };\n const points = {\n 'p1_top': p1_top,\n 'p1_bottom': p1_bottom,\n 'p1_left': p1_left,\n 'p1_right': p1_right,\n 'p2_top': p2_top,\n 'p2_bottom': p2_bottom,\n 'p2_left': p2_left,\n 'p2_right': p2_right,\n };\n var distance_memoizer = {};\n function getDistance(suffix1, suffix2) {\n const key = suffix1 + '_' + suffix2;\n return distance_memoizer[key] = distance_memoizer[key] || Point.distance(points['p1_' + suffix1], points['p2_' + suffix2]);\n }\n if (anchor == BinderAnchor.Auto || refAnchor == BinderAnchor.Auto) {\n //if (anchor == BinderAnchor.Auto && refAnchor == BinderAnchor.Auto) {\n // algorithm for finding the closest edges (1 atan + 4 distances)\n // 1. compute atan of the segment joining the two centers\n const a = { x: p1_center.x, y: -p1_center.y }, b = { x: p2_center.x, y: -p2_center.y };\n const slope = Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI;\n switch (slope) {\n case 0:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Right;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Left;\n break;\n case 90:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Top;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Bottom;\n break;\n case 180:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Left;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Right;\n break;\n case -90:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Bottom;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Top;\n break;\n default:\n // 2. compute distances combining the 4 points (compare 4 distances)\n if (slope < 90 && slope > 0) {\n // right | top vs left | bottom\n let top_2_left = getDistance('top', 'left'), right_2_left = getDistance('right', 'left'), right_2_bottom = getDistance('right', 'bottom'), top_2_bottom = getDistance('top', 'bottom');\n var d = Math.min(top_2_left, right_2_left, right_2_bottom, top_2_bottom);\n switch (d) {\n case top_2_left:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Top;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Left;\n break;\n case top_2_bottom:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Top;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Bottom;\n break;\n case right_2_bottom:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Right;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Bottom;\n break;\n default:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Right;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Left;\n break;\n }\n }\n else if (slope < 180 && slope > 90) {\n // left | top vs right | bottom\n let top_2_right = getDistance('top', 'right'), left_2_right = getDistance('left', 'right'), left_2_bottom = getDistance('left', 'bottom'), top_2_bottom = getDistance('top', 'bottom');\n var d = Math.min(top_2_right, left_2_right, left_2_bottom, top_2_bottom);\n switch (d) {\n case top_2_right:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Top;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Right;\n break;\n case left_2_right:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Left;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Right;\n break;\n case left_2_bottom:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Left;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Bottom;\n break;\n default:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Top;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Bottom;\n break;\n }\n }\n else if (slope < -90) {\n // left | bottom vs right | top\n let bottom_2_right = getDistance('bottom', 'right'), left_2_right = getDistance('left', 'right'), left_2_top = getDistance('left', 'top'), bottom_2_top = getDistance('bottom', 'top');\n var d = Math.min(bottom_2_right, left_2_right, left_2_top, bottom_2_top);\n switch (d) {\n case bottom_2_right:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Bottom;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Right;\n break;\n case left_2_right:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Left;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Right;\n break;\n case left_2_top:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Left;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Top;\n break;\n default:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Bottom;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Top;\n break;\n }\n }\n else {\n // right | bottom vs left | top\n let bottom_2_left = getDistance('bottom', 'left'), right_2_left = getDistance('right', 'left'), right_2_top = getDistance('right', 'top'), bottom_2_top = getDistance('bottom', 'top');\n var d = Math.min(bottom_2_left, right_2_left, right_2_top, bottom_2_top);\n switch (d) {\n case bottom_2_left:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Bottom;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Left;\n break;\n case right_2_left:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Right;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Left;\n break;\n case right_2_top:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Right;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Top;\n break;\n default:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Bottom;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Top;\n break;\n }\n }\n break;\n }\n //}\n }\n function computeF(e) {\n switch (e) {\n case BinderEnd.Arrow:\n case BinderEnd.FatArrow:\n return 2.0;\n default:\n return 1.0;\n }\n }\n const f = computeF(end), refF = computeF(refEnd);\n // anchor points calc\n switch (anchor) {\n case BinderAnchor.Bottom:\n p1 = p1_bottom;\n break;\n case BinderAnchor.Center:\n p1 = { x: left + w2, y: top + h2 };\n c1 = p1;\n break;\n case BinderAnchor.Left:\n p1 = p1_left;\n break;\n case BinderAnchor.Right:\n p1 = p1_right;\n break;\n case BinderAnchor.Top:\n p1 = p1_top;\n break;\n }\n switch (refAnchor) {\n case BinderAnchor.Bottom:\n p2 = p2_bottom;\n break;\n case BinderAnchor.Center:\n p2 = { x: r_left + r_w2, y: r_top + r_h2 };\n c2 = p2;\n break;\n case BinderAnchor.Left:\n p2 = p2_left;\n break;\n case BinderAnchor.Right:\n p2 = p2_right;\n break;\n case BinderAnchor.Top:\n p2 = p2_top;\n break;\n }\n // control points calc\n switch (tension) {\n case BinderTension.Path:\n // adjust the control points based on the path (not on the masses of the element ends)\n const t = .333; // < tension (fraction of the distance)\n switch (anchor) {\n case BinderAnchor.Bottom:\n c1 = { x: p1.x, y: p1.y + Math.abs(f * t * (p2.y - p1.y)) };\n break;\n case BinderAnchor.Left:\n c1 = { x: p1.x - Math.abs(f * t * (p2.x - p1.x)), y: p1.y };\n break;\n case BinderAnchor.Right:\n c1 = { x: p1.x + Math.abs(f * t * (p2.x - p1.x)), y: p1.y };\n break;\n case BinderAnchor.Top:\n c1 = { x: p1.x, y: p1.y - Math.abs(f * t * (p1.y - p2.y)) };\n break;\n }\n switch (refAnchor) {\n case BinderAnchor.Bottom:\n c2 = { x: p2.x, y: p2.y + Math.abs(refF * t * (p2.y - p1.y)) };\n break;\n case BinderAnchor.Left:\n c2 = { x: p2.x - Math.abs(refF * t * (p2.x - p1.x)), y: p2.y };\n break;\n case BinderAnchor.Right:\n c2 = { x: p2.x + Math.abs(refF * t * (p2.x - p1.x)), y: p2.y };\n break;\n case BinderAnchor.Top:\n c2 = { x: p2.x, y: p2.y - Math.abs(refF * t * (p2.y - p1.y)) };\n break;\n }\n break;\n default:\n // control points computed based on the mass (size) of the element ends\n switch (anchor) {\n case BinderAnchor.Bottom:\n c1 = { x: p1.x, y: p1.y + Math.abs(f * (p1_bottom.y - p1_center.y)) };\n break;\n case BinderAnchor.Left:\n c1 = { x: p1.x - Math.abs(f * (p1_center.x - p1_left.x)), y: p1.y };\n break;\n case BinderAnchor.Right:\n c1 = { x: p1.x + Math.abs(f * (p1_right.x - p1_center.x)), y: p1.y };\n break;\n case BinderAnchor.Top:\n c1 = { x: p1.x, y: p1.y - Math.abs(f * (p1_top.y - p1_center.y)) };\n break;\n }\n switch (refAnchor) {\n case BinderAnchor.Bottom:\n c2 = { x: p2.x, y: p2.y + Math.abs(refF * (p2_bottom.y - p2_center.y)) };\n break;\n case BinderAnchor.Left:\n c2 = { x: p2.x - Math.abs(refF * (p2_center.x - p2_left.x)), y: p2.y };\n break;\n case BinderAnchor.Right:\n c2 = { x: p2.x + Math.abs(refF * (p2_right.x - p2_center.x)), y: p2.y };\n break;\n case BinderAnchor.Top:\n c2 = { x: p2.x, y: p2.y - Math.abs(refF * (p2_top.y - p2_center.y)) };\n break;\n }\n }\n return { points: [p1, c1, p2, c2], anchors: [anchor, refAnchor] };\n }\n /** Updates the cached position/size for the given endpoint (`from` or `to`) and redraws the curve if both ends are known. @param args Pre-computed layout, or omitted to reuse the last known/cached value. */\n refresh(element, args) {\n var path;\n if (Utils.isNull(element) || Utils.isNull(path = this._path)) {\n return;\n }\n const draw = !Utils.isNull(this.from) && !Utils.isNull(this.to);\n const leave = Utils.isNull(this.from) && Utils.isNull(this.to);\n if (this.disabled || !draw) {\n path.removeAttribute('d');\n if (leave) {\n return;\n }\n }\n // compute anchor points\n const key = element === this.from ? 'from' : 'to';\n var anchor = (key === 'from' ? this.fromAnchor : this.toAnchor) || BinderAnchor.Auto;\n if (Utils.isNull(args)) {\n if (!(element instanceof Element)) {\n args = { height: 0, width: 0, left: element.x, top: element.y };\n anchor = BinderAnchor.Center;\n }\n else if (key in this._state) {\n args = this._state[key].size;\n }\n }\n if (Utils.isNull(args)) {\n return;\n }\n this._state[key] = { size: args, anchor };\n if (draw) {\n this._draw();\n }\n }\n //@Debounce()\n _draw() {\n var state1 = this._state['from'], state2 = this._state['to'], path = this._path;\n if (Utils.isNull(path)) {\n return;\n }\n if (Utils.isNullOrEmpty(state1)\n || Utils.isNullOrEmpty(state2)\n || (this.from instanceof HTMLElement && !Utils.isVisible(this.from))\n || (this.to instanceof HTMLElement && !Utils.isVisible(this.to))) {\n path.setAttribute('d', '');\n return;\n }\n const origin = this._getOrigin(), size1 = this._toLocal(state1.size, origin), size2 = this._toLocal(state2.size, origin);\n const { points, anchors } = this._computeAnchorPoints(size1, state1.anchor, this.fromEnd, size2, state2.anchor, this.toEnd, this.tension), p0 = points[0], c0 = points[1], p1 = points[2], c1 = points[3], anchor0 = anchors[0], anchor1 = anchors[1];\n const x0 = p0.x;\n const y0 = p0.y;\n const cx0 = c0.x;\n const cy0 = c0.y;\n const x1 = p1.x;\n const y1 = p1.y;\n const cx1 = c1.x;\n const cy1 = c1.y;\n let dStart = this._getDefaultEndingPath(x0, y0);\n switch (this.fromEnd) {\n case BinderEnd.Arrow:\n dStart = this._getArrowEndingPath(x0, y0, anchor0);\n break;\n case BinderEnd.FatArrow:\n dStart = this._getFatArrowEndingPath(x0, y0, anchor0);\n break;\n case BinderEnd.None:\n dStart = '';\n break;\n }\n let dEnd = this._getDefaultEndingPath(x1, y1);\n switch (this.toEnd) {\n case BinderEnd.Arrow:\n dEnd = this._getArrowEndingPath(x1, y1, anchor1);\n break;\n case BinderEnd.FatArrow:\n dEnd = this._getFatArrowEndingPath(x1, y1, anchor1);\n break;\n case BinderEnd.None:\n dEnd = '';\n break;\n }\n const d = dStart + `M${x0},${y0} C${cx0},${cy0} ${cx1},${cy1} ${x1},${y1}` + dEnd;\n if (d.indexOf('NaN') === -1) {\n path.setAttribute('d', d);\n }\n if (!Utils.isNullOrEmpty(this.color))\n path.style.stroke = this.color;\n }\n _getDefaultEndingPath(x, y) {\n return `M${x - 2},${y - 2} h4 v4 h-4 z`;\n }\n _getArrowEndingPath(x, y, anchor) {\n switch (anchor) {\n case BinderAnchor.Bottom:\n return `M${x - 4},${y + 4} l4,-4 l4,4`;\n case BinderAnchor.Top:\n return `M${x - 4},${y - 4} l4,4 l4,-4`;\n case BinderAnchor.Left:\n return `M${x - 4},${y - 4} l4,4 l-4,4`;\n case BinderAnchor.Right:\n return `M${x + 4},${y - 4} l-4,4 l4,4`;\n default:\n return '';\n }\n }\n _getFatArrowEndingPath(x, y, anchor) {\n switch (anchor) {\n case BinderAnchor.Bottom:\n case BinderAnchor.Top:\n case BinderAnchor.Left:\n case BinderAnchor.Right:\n return this._getArrowEndingPath(x, y, anchor) + ' z';\n default:\n return '';\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: ElementOrPointPropertyConverter })\n], PacemBinderElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ emit: false, converter: ElementOrPointPropertyConverter })\n], PacemBinderElement.prototype, \"to\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinderElement.prototype, \"fromAnchor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinderElement.prototype, \"toAnchor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinderElement.prototype, \"fromEnd\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinderElement.prototype, \"toEnd\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinderElement.prototype, \"tension\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinderElement.prototype, \"color\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemBinderElement.prototype, \"interactive\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemBinderElement.prototype, \"layer\", void 0);\nPacemBinderElement = __decorate([\n CustomElement({ tagName: P + '-binder' })\n], PacemBinderElement);\nexport { PacemBinderElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, Utils, PropertyConverters, Components } from '@pacem/pacem-core';\n// namespace Pacem.Components.UI {\nconst OPEN_CSSCLASS = 'blade-open';\n/** Slide-in panel toggled via its `open` property, dispatching `open`/`close` events as it transitions. */\nlet PacemBladeElement = class PacemBladeElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'open') {\n this._toggle(val);\n }\n }\n _toggle(open = this.open) {\n const fn = open ? Utils.addClass : Utils.removeClass;\n fn(this, OPEN_CSSCLASS);\n const eventName = open ? 'open' : 'close';\n this.dispatchEvent(new Event(eventName));\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemBladeElement.prototype, \"open\", void 0);\nPacemBladeElement = __decorate([\n CustomElement({ tagName: P + '-blade', shadow: true })\n], PacemBladeElement);\nexport { PacemBladeElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, preventDefaultHandler, ViewChild, CustomElementUtils, UI, stopPropagationHandler, avoidHandler } from '@pacem/pacem-core';\nimport { LightboxBehavior } from './lightbox-abstractions';\n// namespace Pacem.Components.UI {\nconst OPEN_CSSCLASS = 'bottom-sheet-open';\n/** Drag handle for an ancestor {@link PacemBottomSheetElement}: renders a small grip icon, toggles the sheet on click and drives its swipe-to-drag behavior. */\nlet PacemBottomSheetHandleElement = class PacemBottomSheetHandleElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._clickHandler = (evt) => {\n const bs = this.#bottomSheet;\n bs.open = !bs.open;\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setIcon();\n this._toggleHandle();\n this.#bottomSheet = CustomElementUtils.findAncestorOfType(this, PacemBottomSheetElement);\n this._bindToBottomSheet();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'iconGlyph':\n this._setIcon(val);\n break;\n case 'disabled':\n this._toggleHandle(val);\n break;\n }\n }\n disconnectedCallback() {\n this.removeEventListener('click', this._clickHandler);\n const bs = this.#bottomSheet;\n if (!Utils.isNull(bs) && bs.isReady) {\n bs._setHandle(null);\n }\n this.#bottomSheet = null;\n super.disconnectedCallback();\n }\n #bottomSheet;\n _bindToBottomSheet() {\n const bs = this.#bottomSheet;\n if (Utils.isNull(bs)) {\n return;\n }\n if (Utils.isNullOrEmpty(this.id)) {\n this.id = ('handle_' + Utils.uniqueCode());\n }\n CustomElementUtils.whenReady(bs, () => {\n bs._setHandle(this);\n this.addEventListener('click', this._clickHandler, false);\n });\n }\n _toggleHandle(disabled = this.disabled) {\n this.style.pointerEvents = disabled ? 'none' : '';\n }\n _setIcon(icon = this.iconGlyph) {\n const ic = this._icon;\n if (!Utils.isNull(ic)) {\n ic.icon = icon ?? 'horizontal_rule';\n }\n }\n};\n__decorate([\n ViewChild(P + '-icon')\n], PacemBottomSheetHandleElement.prototype, \"_icon\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBottomSheetHandleElement.prototype, \"iconGlyph\", void 0);\nPacemBottomSheetHandleElement = __decorate([\n CustomElement({\n tagName: P + '-bottom-sheet-handle', shadow: false, template: `<div class=\"bottom-sheet-handle\">\r\n <${P}-icon class=\"icon-size icon-size-6\"></${P}-icon>\r\n </div>`\n })\n], PacemBottomSheetHandleElement);\nexport { PacemBottomSheetHandleElement };\n/** Mobile-style panel anchored to the bottom of the viewport, draggable (via its {@link PacemBottomSheetHandleElement}) and swipeable open/closed. */\nlet PacemBottomSheetElement = class PacemBottomSheetElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._resizeHandler = (evt) => {\n this._rebuildSwiperSnaps();\n this._setPosition();\n };\n this._panHandler = (e) => {\n const snap = this._swiper.snaps.find(s => s != 0);\n const { delta } = e.detail;\n let pct = (snap < 0 ? delta.clamp(snap, 0) : delta.clamp(0, snap)) / snap;\n if (snap > 0) {\n pct = 1 - pct;\n }\n // console.log(`snap ${snap} - delta ${delta} - pct: ${pct * 100}%`);\n const sqr = 6 * (pct ** 2);\n this.style.backdropFilter = `blur(${sqr.toFixed(2)}px)`;\n };\n this._swipeHandler = (e) => {\n preventDefaultHandler(e);\n switch (e.type) {\n case UI.SwipeEventType.SwipeAnimationEnd:\n this.style.backdropFilter = '';\n return;\n case UI.SwipeEventType.SwipeUpAnimationEnd:\n this.open = true;\n break;\n case UI.SwipeEventType.SwipeDownAnimationEnd:\n this.open = false;\n break;\n }\n this._setPosition();\n };\n this._softReleaseHandler = (e) => {\n avoidHandler(e);\n if (this.behavior !== LightboxBehavior.ExplicitClose) {\n this.open = false;\n }\n };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'open':\n this._toggle(val);\n this._rebuildSwiperSnaps(val);\n break;\n case 'logger':\n this._assignLogger(val);\n break;\n case 'disabled':\n this._toggleSwiper(val);\n break;\n }\n }\n _toggleSwiper(disabled = this.disabled) {\n const swiper = this._swiper;\n if (!Utils.isNull(swiper)) {\n swiper.disabled = disabled;\n }\n }\n /** @internal Wires (or clears) the swiper's drag handle selector to the given {@link PacemBottomSheetHandleElement}. */\n _setHandle(handle) {\n if (Utils.isNull(handle)) {\n this._swiper.handleSelector = null;\n }\n else {\n this._swiper.handleSelector = `#${handle.id}`;\n }\n this._handleResizer.target = handle;\n }\n _assignLogger(v = this.logger) {\n this._swiper.logger = v;\n }\n _rebuildSwiperSnaps(open = this.open) {\n const swiper = this._swiper;\n const snap = this._getSnap(open);\n swiper.snaps = [0, snap].sort();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._assignLogger();\n this._resizer.addEventListener(Components.ResizeEventName, this._resizeHandler);\n this._handleResizer.addEventListener(Components.ResizeEventName, this._resizeHandler);\n const swiper = this._swiper;\n swiper.addEventListener(UI.SwipeEventType.Pan, this._panHandler, false);\n swiper.addEventListener(UI.SwipeEventType.SwipeAnimationEnd, this._swipeHandler, false);\n swiper.addEventListener(UI.SwipeEventType.SwipeUpAnimationEnd, this._swipeHandler, false);\n swiper.addEventListener(UI.SwipeEventType.SwipeDownAnimationEnd, this._swipeHandler, false);\n this._toggle();\n this._rebuildSwiperSnaps();\n this._toggleSwiper();\n this._sheet.addEventListener('pointerdown', stopPropagationHandler, false);\n this.addEventListener('pointerdown', this._softReleaseHandler, false);\n }\n disconnectedCallback() {\n const resizer = this._resizer;\n if (!Utils.isNull(resizer)) {\n resizer.removeEventListener(Components.ResizeEventName, this._resizeHandler);\n }\n const handleResizer = this._handleResizer;\n if (!Utils.isNull(resizer)) {\n handleResizer.removeEventListener(Components.ResizeEventName, this._resizeHandler);\n }\n const swiper = this._swiper;\n if (!Utils.isNull(swiper)) {\n swiper.removeEventListener(UI.SwipeEventType.Pan, this._panHandler);\n swiper.removeEventListener(UI.SwipeEventType.SwipeAnimationEnd, this._swipeHandler);\n swiper.removeEventListener(UI.SwipeEventType.SwipeUpAnimationEnd, this._swipeHandler);\n swiper.removeEventListener(UI.SwipeEventType.SwipeDownAnimationEnd, this._swipeHandler);\n }\n const sheet = this._sheet;\n if (!Utils.isNull(sheet)) {\n sheet.removeEventListener('pointerdown', stopPropagationHandler);\n }\n this.removeEventListener('pointerdown', this._softReleaseHandler);\n super.disconnectedCallback();\n }\n /**\n * Snap (other than 0 := current position) given the current state.\n * Anchor point for sheet is the top of the page, so snap is computed accordingly.\n * @param ope\n * @returns\n */\n _getSnap(open = this.open) {\n const resizer = this._resizer;\n const handleResizer = this._handleResizer;\n if (Utils.isNull(resizer) || Utils.isNull(handleResizer)) {\n return 0;\n }\n const { top: y } = Utils.naturalOffset(resizer.target), { top: hY } = Utils.naturalOffset(handleResizer.target);\n const { height } = resizer.currentSize;\n const { height: hHeight } = handleResizer.currentSize;\n const { height: wHeight } = Utils.windowSize;\n const openSnap /* target to open state */ = Math.max(parseInt(Utils.Css.getVariableValue(`--${PCSS}-layout-header-height`)), wHeight - (height ?? 0)), closedSnap /* target to closed state */ = (wHeight - ((y ?? 0) - (hY ?? 0) + (hHeight ?? 0)));\n const sign = open ? 1 : -1;\n return sign * Math.abs(openSnap - closedSnap);\n }\n /**\n * Css transform to be applied to the sheet in order to have UI consistent with open state.\n * Anchor point for sheet is the bottom of the page, so CSS transform is applied accordingly.\n * @param open\n * @returns\n */\n _getCssTransform(open = this.open) {\n const resizer = this._resizer;\n const handleResizer = this._handleResizer;\n if (Utils.isNull(resizer) || Utils.isNull(handleResizer)) {\n return '';\n }\n if (open) {\n const retval = `translate3d(0, max(var(--${PCSS}-layout-header-height), calc(100vh - 100%)), 0)`;\n return retval;\n }\n else {\n const { top: y } = Utils.naturalOffset(resizer.target), { top: hY, height: hHeight } = Utils.naturalOffset(handleResizer.target);\n const gap = (-(y ?? 0) + (hY ?? 0)) + (hHeight ?? 0);\n const retval = `translate3d(0, calc(100vh - ${gap}px), 0)`;\n // console.log(retval);\n return retval;\n }\n }\n _setPosition(open = this.open) {\n const sheet = this._sheet;\n const transform = this._getCssTransform(open);\n sheet.style.transform = transform;\n //this.style.setProperty(`--${PCSS}-bottom-sheet-transform`, transform);\n }\n _toggle(open = this.open) {\n const fn = open ? Utils.addClass : Utils.removeClass;\n fn(this, OPEN_CSSCLASS);\n //this._sheet.style.animation = '';\n this._sheet.style.transform = '';\n //this.style.setProperty(`--${PCSS}-bottom-sheet-transform`, '');\n const eventName = open ? 'open' : 'close';\n this.dispatchEvent(new Event(eventName));\n }\n};\n__decorate([\n ViewChild(P + '-swipe')\n], PacemBottomSheetElement.prototype, \"_swiper\", void 0);\n__decorate([\n ViewChild(P + '-resize')\n], PacemBottomSheetElement.prototype, \"_resizer\", void 0);\n__decorate([\n ViewChild(P + '-resize[handle]')\n], PacemBottomSheetElement.prototype, \"_handleResizer\", void 0);\n__decorate([\n ViewChild(P + '-panel.bottom-sheet', true)\n], PacemBottomSheetElement.prototype, \"_sheet\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemBottomSheetElement.prototype, \"open\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBottomSheetElement.prototype, \"behavior\", void 0);\nPacemBottomSheetElement = __decorate([\n CustomElement({\n tagName: P + '-bottom-sheet', shadow: false /* css priority would be a mess otherwise */, template: `\r\n <${P}-swipe direction=\"vertical\" options='{ \"bouncy\": false }'></${P}-swipe>\r\n <${P}-resize target=\"{{ ::_sheet }}\"></${P}-resize>\r\n <${P}-resize handle></${P}-resize>\r\n <${P}-panel class=\"bottom-sheet\" behaviors=\"{{ [::_swiper] }}\">\r\n <${P}-content></${P}-content>\r\n </${P}-panel>`\n })\n], PacemBottomSheetElement);\nexport { PacemBottomSheetElement };\n//}\n", "//namespace Pacem.Components.UI {\n/** How a {@link Lightbox} reacts to a click outside its content. */\nexport var LightboxBehavior;\n(function (LightboxBehavior) {\n LightboxBehavior[\"ClickOutsideClose\"] = \"clickOutsideClose\";\n LightboxBehavior[\"ExplicitClose\"] = \"explicitClose\";\n})(LightboxBehavior || (LightboxBehavior = {}));\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, CommandEvent } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Clickable button element with optional icon, command dispatching (via {@link CommandEvent}) and an optional confirmation dialog gate. */\nlet PacemButtonElement = class PacemButtonElement extends Components.PacemIterableElement {\n constructor() {\n super('button');\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute('tab-order')) {\n this.tabOrder = 0;\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'iconGlyph':\n // suppose ligatures enabled\n case 'iconUrl':\n // handle this via css attr(), considering that it's the proper way to access and modify pseudo::before content\n this.dataset[name] = val;\n break;\n }\n }\n emit(evt) {\n let fn = (ev) => {\n super.emit(ev);\n if (!ev.defaultPrevented) {\n if (ev.type === 'click' && !Utils.isNullOrEmpty(this.commandName)) {\n this.dispatchEvent(new CommandEvent({ commandName: this.commandName, commandArgument: this.commandArgument }));\n }\n /*\n TODO: make this component shadowed and include a real <button> as the part holding the actual content (<slot>).\n When events like 'mousedown', 'mouseup', get fired => check for the <button> element.matchs(':active') and apply relevant css\n\n Share the behavior with PacemAnchorElement.\n */\n switch (ev.type) {\n case 'mousedown':\n if (evt.button === 0) {\n Utils.addClass(this, PCSS + '-active');\n }\n break;\n case 'pointerdown':\n Utils.addClass(this, PCSS + '-active');\n break;\n case 'keydown':\n if (ev.keyCode === 32 || ev.keyCode === 13) {\n evt.preventDefault();\n Utils.addClass(this, PCSS + '-active');\n }\n break;\n case 'blur':\n case 'mouseup':\n case 'pointerup':\n case 'click':\n Utils.removeClass(this, PCSS + '-active');\n break;\n case 'keyup':\n if (ev.keyCode === 32 || ev.keyCode === 13) {\n this.click();\n Utils.removeClass(this, PCSS + '-active');\n }\n break;\n }\n }\n };\n if (!this.disabled && evt.type === 'click' && !Utils.isNull(this.confirmationDialog)) {\n this.confirmationDialog.open(this.confirmationMessage, true).then(r => {\n //if (r.button === DialogButton.Yes || r.button === DialogButton.Ok)\n fn(evt);\n });\n }\n else if (!(evt instanceof MouseEvent) || evt.button === 0) {\n fn(evt);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemButtonElement.prototype, \"iconGlyph\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemButtonElement.prototype, \"iconUrl\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemButtonElement.prototype, \"commandName\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemButtonElement.prototype, \"commandArgument\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemButtonElement.prototype, \"confirmationMessage\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemButtonElement.prototype, \"confirmationDialog\", void 0);\nPacemButtonElement = __decorate([\n CustomElement({\n tagName: P + '-button',\n modifiers: ['hoverable', 'focusable', 'clickable']\n })\n], PacemButtonElement);\nexport { PacemButtonElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Components } from '@pacem/pacem-core';\nimport { PacemButtonElement } from './button';\n//namespace Pacem.Components.UI {\n/** Groups {@link PacemButtonElement} children into a single iterable/selectable set, focusing the item matching `index`. */\nlet PacemButtonsetElement = class PacemButtonsetElement extends Components.PacemIterativeElement {\n connectedCallback() {\n super.connectedCallback();\n if (!('tabindex' in this.attributes))\n this.tabIndex = 0;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'index':\n let ndx = 0;\n for (var btn of this.items) {\n if (ndx == val) {\n btn.focus();\n break;\n }\n ndx++;\n }\n break;\n }\n }\n validate(item) {\n return item instanceof PacemButtonElement;\n }\n};\nPacemButtonsetElement = __decorate([\n CustomElement({\n tagName: P + '-buttonset'\n })\n], PacemButtonsetElement);\nexport { PacemButtonsetElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, ViewChild, Utils, PropertyConverters, Components, CustomTypedEvent, PropertyChangeEvent, Defaults, CustomElementUtils, Debounce, PropertyChangeEventName } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Granularity of a calendar/schedule/agenda view. */\nexport var CalendarZoom;\n(function (CalendarZoom) {\n CalendarZoom[\"Month\"] = \"month\";\n CalendarZoom[\"Week\"] = \"week\";\n CalendarZoom[\"Day\"] = \"day\";\n})(CalendarZoom || (CalendarZoom = {}));\n/** Event dispatched by a {@link PacemCalendarBaseElement} whenever its `viewDate` changes, carrying the new date. */\nexport class ViewDateChangeEvent extends CustomTypedEvent {\n constructor(date) {\n super('viewdatechange', date);\n }\n}\n/** Event dispatched (and bubbling) when a day is selected on a {@link PacemCalendarElement}, carrying the selected date. */\nexport class DateSelectEvent extends CustomTypedEvent {\n constructor(date) {\n super('dateselect', date, { bubbles: true });\n }\n}\n/** Event dispatched (and bubbling) when a time slot is selected on a {@link PacemAgendaElement}, carrying the selected date/time. */\nexport class TimeSelectEvent extends CustomTypedEvent {\n constructor(date) {\n super('timeselect', date, { bubbles: true });\n }\n}\nconst MSECS_PER_HOUR = 1000 * 60 * 60;\nconst MSECS_PER_DAY = MSECS_PER_HOUR * 24;\nconst DAY_HOURS = [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5,\n 12, 12.5, 13, 13.5, 14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18, 18.5, 19, 19.5, 20, 20.5, 21, 21.5, 22, 22.5, 23, 23.5];\nlet now = new Date();\nconst DUMMY_DATE = Utils.Dates.dateOnly(now).valueOf();\nconst DAYS_OF_WEEK = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n/** A single event/appointment item, meant as a child of a {@link PacemCalendarWithEventsBaseElement} (e.g. {@link PacemCalendarElement} or {@link PacemAgendaElement}). */\nlet PacemCalendarEventElement = class PacemCalendarEventElement extends Components.PacemItemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n let container = this.container;\n if (!Utils.isNull(container)) {\n // trigger propertychange for `items`\n container.dispatchEvent(new PropertyChangeEvent({ propertyName: 'items', oldValue: container.items, currentValue: container.items }));\n }\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemCalendarEventElement.prototype, \"start\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemCalendarEventElement.prototype, \"end\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarEventElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemCalendarEventElement.prototype, \"place\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemCalendarEventElement.prototype, \"allDay\", void 0);\nPacemCalendarEventElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-event'\n })\n], PacemCalendarEventElement);\nexport { PacemCalendarEventElement };\n/** Event dispatched when a {@link PacemCalendarEventElement} rendering gains focus/selection within its host calendar. */\nexport class CalendarEventSelectEvent extends CustomTypedEvent {\n constructor(args) {\n super(\"eventselect\", args, { bubbles: false, cancelable: true });\n }\n}\n/** Event dispatched when a {@link PacemCalendarEventElement} rendering loses focus/selection within its host calendar. */\nexport class CalendarEventUnselectEvent extends CustomTypedEvent {\n constructor(args) {\n super(\"eventunselect\", args, { bubbles: false, cancelable: true });\n }\n}\n/** Base class shared by the calendar-family elements ({@link PacemCalendarElement}, {@link PacemAgendaElement}, {@link PacemScheduleElement}): holds the current view date/zoom/week/month grids and the {@link PacemCalendarEventElement} items collection. */\nexport class PacemCalendarBaseElement extends Components.PacemItemsContainerElement {\n validate(item) {\n return item instanceof PacemCalendarEventElement;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'viewDate' || name === 'weekStart') {\n this._synchronizeWeek();\n }\n switch (name) {\n case 'viewDate':\n this.dispatchEvent(new ViewDateChangeEvent(val));\n Utils.removeClass(this, \"viewdate-next viewdate-previous\");\n requestAnimationFrame(() => {\n Utils.addClass(this, old > val ? \"viewdate-previous\" : \"viewdate-next\");\n });\n break;\n case 'zoom':\n Utils.removeClass(this, \"viewdate-next viewdate-previous\");\n break;\n }\n }\n // #region PROTECTED\n oneventselect(el, evt) {\n this.dispatchEvent(new CalendarEventSelectEvent({ element: el, event: evt }));\n }\n oneventunselect(el, evt) {\n this.dispatchEvent(new CalendarEventUnselectEvent({ element: el, event: evt }));\n }\n getHeaderLabel(d, f) {\n const options = f === CalendarZoom.Week ? { weekday: 'short', day: 'numeric', month: 'numeric' }\n : (f === CalendarZoom.Day ? { weekday: 'long' } : /* fallback: month */ { weekday: 'short' });\n return Utils.parseDate(d).toLocaleString(Utils.lang(this), options);\n }\n getDayLabel(d) {\n const options = d.getDate() == 1 ? { month: 'short', day: 'numeric' } : { day: 'numeric' };\n return Utils.parseDate(d).toLocaleString(Utils.lang(this), options);\n }\n getHourLabel(d) {\n const options = { hour: 'numeric' /*, minute: 'numeric'*/ };\n return Utils.parseDate(d).toLocaleString(Utils.lang(this), options);\n }\n getTimeLabel(d) {\n const options = { hour: 'numeric', minute: 'numeric' };\n return Utils.parseDate(d).toLocaleString(Utils.lang(this), options);\n }\n isNow(d, now) {\n const d0 = Utils.parseDate(d), v = Utils.parseDate(now || new Date());\n return d0.getHours() === v.getHours() && this.isToday(d, now);\n }\n isToday(d, now) {\n return this.isDate(d, now || new Date());\n }\n isViewDay(d, vd = this.viewDate) {\n return this.isDate(d, vd || this.viewDate || new Date());\n }\n isDate(expected, d) {\n if (!Utils.Dates.isDate(d) || !Utils.Dates.isDate(expected)) {\n return false;\n }\n const d0 = Utils.parseDate(expected), v = Utils.parseDate(d);\n return d0.getDate() === v.getDate() && d0.getMonth() == v.getMonth() && d0.getFullYear() === v.getFullYear();\n }\n isViewWeek(d) {\n const d0 = Utils.parseDate(d);\n return this.week && this.week.find(d1 => d1.getDate() == d0.getDate() && d1.getMonth() == d0.getMonth() && d1.getDate() == d0.getDate());\n }\n isViewMonth(d) {\n const d0 = Utils.parseDate(d), v = Utils.parseDate(this.viewDate || new Date());\n return d0.getMonth() == v.getMonth() && d0.getFullYear() === v.getFullYear();\n }\n isTimeSlotDisabled(ranges, d, h) {\n if (!Utils.isNullOrEmpty(ranges)) {\n h = h || 0;\n const slotDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), Math.floor(h), 60 * (h % 1)), tz = slotDate.getTimezoneOffset(), slot = slotDate.valueOf() - (tz * 60 * 1000);\n for (let range of ranges) {\n let from = Utils.Dates.parse(range.from), to = Utils.Dates.parse(range.to);\n if ((!from || (from && from.valueOf() <= slot))\n && (!to || (to && to.valueOf() > slot))\n && (to || from)) {\n return true;\n }\n }\n }\n return false;\n }\n // #endregion\n // #region PRIVATE\n _getWeekStart(day, weekstart) {\n let dow = day.getDay(), v = day.valueOf();\n const tget = (weekstart || 'm').toLowerCase().startsWith('m') ? 1 : 0;\n if (dow === tget) {\n return v;\n }\n if (dow === 0) {\n // damn 0-indexed sunday, skip to the previous one\n dow = 7;\n }\n return v + (tget - dow) * MSECS_PER_DAY;\n }\n _getDatasource(d, w = this.weekStart) {\n let day = Utils.Dates.dateOnly(Utils.parseDate(d));\n const ds = this.month;\n let _d0 = ds && ds.length && ds[0] && ds[0].length && ds[0][0];\n if (_d0 && _d0.getMonth() == day.getMonth() && _d0.getFullYear() == day.getFullYear()\n && ds.find(wk => !Utils.isNull(wk.find(dy => dy.valueOf() == day.valueOf())))) {\n // return the \"convenient\" datasource\n return ds;\n }\n //\n // month\n let d1 = new Date(day.getFullYear(), day.getMonth(), 1);\n let date1 = this._getWeekStart(d1, w);\n let month = [];\n let week = [];\n do {\n let date = Utils.Dates.dateOnly(new Date(date1));\n week.push(date);\n if (week.length == 7) {\n month.push(week.splice(0));\n }\n date1 = date.valueOf() + MSECS_PER_DAY + /* beware of day-light-saving occurrences */ MSECS_PER_HOUR;\n } while (month.length < 6);\n //\n return this.month = month;\n }\n _synchronizeWeek() {\n const viewDate = Utils.parseDate(this.viewDate);\n const vd = new Date(viewDate.getFullYear(), viewDate.getMonth(), 1);\n const ds = this._getDatasource(vd, this.weekStart);\n const week = ds.filter((w, j) => w.some(d => d.getDate() == viewDate.getDate() && d.getMonth() == viewDate.getMonth() && d.getFullYear() == viewDate.getFullYear()))[0];\n if (!(this.week && this.week.length) || this.week[0] !== week[0]) {\n this.week = week;\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemCalendarBaseElement.prototype, \"viewDate\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemCalendarBaseElement.prototype, \"now\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarBaseElement.prototype, \"zoom\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarBaseElement.prototype, \"weekStart\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemCalendarBaseElement.prototype, \"week\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemCalendarBaseElement.prototype, \"month\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemCalendarBaseElement.prototype, \"disabledRanges\", void 0);\n/** Base class for calendar-family elements that render their {@link PacemCalendarEventElement} items into a positioned grid (see {@link PacemCalendarElement}, {@link PacemAgendaElement}); subclasses supply the grid-building logic via `buildDataSource`. */\nexport class PacemCalendarWithEventsBaseElement extends PacemCalendarBaseElement {\n constructor() {\n super(...arguments);\n this._datasource = [];\n }\n /** @readonly Gets the computed, per-row (week or day) grid of positioned event items ready for rendering. */\n get datasource() {\n return this._datasource;\n }\n _getSortedItems(items) {\n return items.slice().sort((a, b) => {\n const a_start = a.start.valueOf(), b_start = b.start.valueOf();\n if (a_start != b_start) {\n return a_start < b_start ? -1 : 1;\n }\n const a_end = a.end.valueOf(), b_end = b.end.valueOf(), a_span = a_end - a_start, b_span = b_end - b_start;\n if (a_span != b_span) {\n return a_span > b_span ? -1 : 1;\n }\n return 0;\n });\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'month':\n case 'week':\n case 'items':\n case 'zoom':\n case 'viewDate':\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n let oldval = this._datasource;\n let newval = this._datasource = this.buildDataSource(this._getSortedItems(this.items || []));\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'datasource', oldValue: oldval, currentValue: newval }));\n });\n break;\n }\n }\n}\nfunction getWeeklyEventDataItems(items, week) {\n let lbound = week.length - 1, wstart = week[0].valueOf(), wend = week[lbound].valueOf();\n return items.filter(evt => {\n let startDate = Utils.Dates.dateOnly(evt.start);\n let endDate = Utils.Dates.dateOnly(evt.end);\n return startDate.valueOf() <= wend && endDate.valueOf() >= wstart;\n }).map(evt => {\n let startDate = Utils.Dates.dateOnly(evt.start), start = week.find(d => d.valueOf() == startDate.valueOf()), startIndex = week.indexOf(start);\n let endDate = Utils.Dates.dateOnly(evt.end), end = week.find(d => d.valueOf() == endDate.valueOf()), endIndex = week.indexOf(end);\n let ndx0 = startIndex == -1 ? 0 : startIndex, ndx1 = endIndex == -1 ? lbound : endIndex;\n return {\n start: evt.start, end: evt.end,\n allDay: true,\n // indexes\n day: ndx0,\n continuing: { start: startIndex == -1, end: endIndex == -1 },\n // span (may be column- or row-)\n span: ndx1 + 1 - ndx0,\n caption: evt.caption,\n event: evt\n };\n });\n}\n// #region AGENDA\nfunction buildAgendaGrid() {\n let grid = '';\n for (let day = 0; day < 7; day++) {\n if (day == 0) {\n grid += `<div class=\"agenda-left all-day\"></div>`;\n }\n grid += `<${P}-panel class=\"agenda-slot all-day day-${(day + 1)}\" css-class=\"{{ {'viewday': :host.isViewDay(:host.week[${day}], :host.viewDate), 'today': :host.isToday(:host.week[${day}], :host.now)} }}\"></${P}-panel>`;\n }\n for (let day = 0; day < 7; day++) {\n for (let hour of DAY_HOURS) {\n let whole = hour % 1 == 0;\n let css = `hour-${whole ? 'whole' : 'half'}`;\n if (day == 0 && whole) {\n grid += `<${P}-text class=\"agenda-left ${css} hour-${hour * 2 + 1}\"\" text=\"{{ :host.getHourLabel(${DUMMY_DATE + hour * MSECS_PER_HOUR}) }}\"></${P}-text>`;\n }\n grid += `<${P}-panel on-click=\":host.time = Pacem.Utils.Dates.parse(:host.week[${day}].valueOf() + ${(hour * MSECS_PER_HOUR)})\" disabled=\"{{ :host.isTimeSlotDisabled(:host.disabledRanges, :host.week[${day}], ${hour}) }}\" class=\"agenda-slot ${css} day-${(day + 1)} hour-${hour * 2 + 1}\" css-class=\"{{ {'viewday': :host.isViewDay(:host.week[${day}], :host.viewDate), 'today': :host.isToday(:host.week[${day}], :host.now)} }}\"></${P}-panel>`;\n }\n }\n return grid;\n}\n/** Renders a day/week hourly grid (\"agenda\" view) with an all-day row, placing {@link PacemCalendarEventElement} items on the timeline and dispatching {@link TimeSelectEvent} on slot click. */\nlet PacemAgendaElement = class PacemAgendaElement extends PacemCalendarWithEventsBaseElement {\n constructor() {\n super(...arguments);\n this._allDayDatasource = [];\n }\n buildDataSource(items) {\n var week = this.week;\n if (this.zoom === CalendarZoom.Day) {\n week = [Utils.Dates.dateOnly(this.viewDate)];\n }\n let ds = [];\n if (!Utils.isNull(week)) {\n // alldays\n this.dispatchEvent(new PropertyChangeEvent({\n propertyName: 'allDayDatasource',\n oldValue: this._allDayDatasource,\n currentValue: this._allDayDatasource = getWeeklyEventDataItems(items.filter(evt => {\n return (evt.end.valueOf() - evt.start.valueOf()) >= MSECS_PER_DAY;\n }), week)\n }));\n // hourlies\n for (let j = 0; j < week.length; j++) {\n let day = week[j], dayValue = day.valueOf(), \n // search for events in this week\n dayItems = items.filter(evt => {\n let startDate = Utils.Dates.dateOnly(evt.start);\n let endDate = Utils.Dates.dateOnly(evt.end);\n return startDate.valueOf() <= dayValue && endDate.valueOf() >= dayValue;\n }).map(evt => {\n let evtStart = evt.start.valueOf(), evtEnd = evt.end.valueOf();\n let retval = {\n allDay: evt.allDay || (evtEnd - evtStart) >= MSECS_PER_DAY,\n continuing: { start: evtStart < dayValue, end: evtEnd > (dayValue + MSECS_PER_DAY) },\n caption: evt.caption,\n hour: 0,\n span: DAY_HOURS.length - 1,\n offset: { start: \"0\", end: \"0\" },\n event: evt\n };\n let startHour = evt.start.getHours() + evt.start.getMinutes() / 60, startIndex = retval.continuing.start ? 0 : Math.floor(startHour * 2), endHour = evt.end.getHours() + evt.end.getMinutes() / 60, endIndex = -1 + (retval.continuing.end ? DAY_HOURS.length : Math.ceil(endHour * 2));\n let endNdx = endIndex + 1, end = endNdx >= DAY_HOURS.length ? 24 : DAY_HOURS[endNdx];\n let fullSpan = end - DAY_HOURS[startIndex];\n retval.hour = startIndex;\n retval.span = 1 + endIndex - startIndex;\n // offsets\n if (!retval.continuing.start) {\n // compute correct start offset\n retval.offset.start = (((startHour - DAY_HOURS[startIndex]) / fullSpan) * 100) + \"%\";\n }\n if (!retval.continuing.end) {\n // compute correct end offset\n retval.offset.end = (((end - endHour) / fullSpan) * 100) + \"%\";\n }\n return retval;\n });\n //\n ds.push(dayItems);\n }\n }\n return ds;\n }\n /** @readonly Gets the computed all-day row of positioned event items ready for rendering. */\n get allDayDatasource() {\n return this._allDayDatasource;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n const clock = this._clock;\n if (name === 'time') {\n this.dispatchEvent(new TimeSelectEvent(val));\n }\n else if (!Utils.isNull(clock)) {\n if (name === 'now') {\n clock.now = val;\n clock.className = `hour-${val.getHours()} minute-${val.getMinutes()}`;\n }\n if (name === 'now' || name === 'zoom' || name === 'viewDate') {\n const d = this.now, z = this.zoom;\n const showClock = d && z && ((this.isViewDay(d) && z === CalendarZoom.Day)\n || (this.isViewWeek(d) && z === CalendarZoom.Week));\n clock.hidden = !showClock;\n }\n }\n }\n};\n__decorate([\n ViewChild(P + '-clock')\n], PacemAgendaElement.prototype, \"_clock\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemAgendaElement.prototype, \"time\", void 0);\nPacemAgendaElement = __decorate([\n CustomElement({\n tagName: P + '-agenda', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater class=\"${PCSS}-agenda agenda-grid\" datasource=\"{{ :host.datasource }}\">${buildAgendaGrid()}<${P}-clock hidden></${P}-clock>\r\n <template>\r\n <${P}-repeater class=\"agenda-day\" datasource=\"{{ ^item }}\">\r\n <template>\r\n <${P}-panel class=\"agenda-event-wrapper\" \r\ncss-class=\"{{ ['hour-start-'+ (^item.hour + 1), 'hour-end-'+ (^item.hour + ^item.span +1), 'day-start-'+ (!^item.continuing.start), 'day-end-'+ (!^item.continuing.end)] }}\">\r\n <${P}-panel class=\"agenda-event\" css=\"{{ {'top': ^item.offset.start, 'bottom': ^item.offset.end} }}\" tab-order=\"{{ (^^index + 1) * 1000 + (^item.hour + 1) * 100 + ^index }}\"\r\n on-focus=\":host.oneventselect($this, ^item.event)\" on-blur=\":host.oneventunselect($this, ^item.event)\">\r\n <${P}-span class=\"event-caption\" text=\"{{ ^item.caption }}\"></${P}-span>\r\n </${P}-panel>\r\n </${P}-panel>\r\n </template>\r\n </${P}-repeater>\r\n </template>\r\n <${P}-repeater class=\"agenda-allday\" datasource=\"{{ :host.allDayDatasource }}\">\r\n <template>\r\n <${P}-panel class=\"agenda-event\" tab-order=\"{{ (^index + 1) * 500 + (^item.day + 1) * 50 + ^index }}\" css-class=\"{{ ['day-start-'+ (^item.day + 1), 'day-end-'+ (^item.day + ^item.span + 1)] }}\"\r\n on-focus=\":host.oneventselect($this, ^item.event)\" on-blur=\":host.oneventunselect($this, ^item.event)\">\r\n <${P}-text class=\"event-caption\" text=\"{{ ^item.caption }}\"></${P}-text>\r\n </${P}-panel>\r\n </template>\r\n </${P}-repeater>\r\n</${P}-repeater><${P}-content></${P}-content>`\n })\n], PacemAgendaElement);\nexport { PacemAgendaElement };\n// #endregion\n// #region CALENDAR\nfunction buildCalendarGrid() {\n let grid = '';\n for (let week = 0; week < 6; week++) {\n for (let day = 0; day < 7; day++) {\n let css = `class=\"calendar-day week-${week + 1} day-${day + 1}\"`;\n grid += `<${P}-panel disabled=\"{{ :host.isTimeSlotDisabled(:host.disabledRanges, :host.month[${week}][${day}]) }}\" on-click=\":host._setDate(:host.month[${week}][${day}])\" ${css} css-class=\"{{ {'viewmonth': :host.isViewMonth(:host.month[${week}][${day}]), 'viewday': :host.isViewDay(:host.month[${week}][${day}], :host.viewDate), 'today': :host.isToday(:host.month[${week}][${day}], :host.now), 'selected-date': :host.isDate(:host.month[${week}][${day}], :host.date)} }}\"><${P}-span culture=\"{{ :host.culture }}\" class=\"text-ellipsed\" text=\"{{ :host.getDayLabel(:host.month[${week}][${day}], :host._formatVersion) }}\"></${P}-span></${P}-panel>`;\n }\n }\n return grid;\n}\n/** Renders a classic month grid, placing {@link PacemCalendarEventElement} items on their spanning day cells and dispatching {@link DateSelectEvent} on day click. */\nlet PacemCalendarElement = class PacemCalendarElement extends PacemCalendarWithEventsBaseElement {\n buildDataSource(items) {\n const month = this.month;\n let ds = [];\n if (!Utils.isNull(month)) {\n for (let j = 0; j < month.length; j++) {\n let week = month[j], \n // search for events in this week\n weekItems = getWeeklyEventDataItems(items, week);\n //\n ds.push(weekItems);\n }\n }\n return ds;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n //case 'date':\n // this.dispatchEvent(new DateSelectEvent(val));\n // break;\n case 'dayLabelFormatter':\n this._formatVersion = Date.now();\n break;\n }\n }\n _setDate(d) {\n if (d?.valueOf() !== this.date?.valueOf()) {\n this.date = d;\n this.dispatchEvent(new DateSelectEvent(d));\n }\n }\n getDayLabel(d, _ = this._formatVersion) {\n const labeler = this.dayLabelFormatter;\n if (typeof labeler === 'function') {\n return labeler(d);\n }\n return super.getDayLabel(d);\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemCalendarElement.prototype, \"date\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemCalendarElement.prototype, \"dayLabelFormatter\", void 0);\n__decorate([\n Watch()\n], PacemCalendarElement.prototype, \"_formatVersion\", void 0);\nPacemCalendarElement = __decorate([\n CustomElement({\n tagName: P + '-calendar', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater class=\"${PCSS}-calendar calendar-grid\" datasource=\"{{ :host.datasource }}\">${buildCalendarGrid()}\r\n <template>\r\n <${P}-repeater class=\"calendar-week\" datasource=\"{{ ^item }}\">\r\n <template>\r\n <${P}-panel class=\"calendar-event\" tab-order=\"{{ (^^index + 1) * 1000 + (^item.day + 1) * 100 + ^index }}\" \r\n on-focus=\":host.oneventselect($this, ^item.event)\" on-blur=\":host.oneventunselect($this, ^item.event)\"\r\n css-class=\"{{ ['day-start-'+ (^item.day + 1), 'day-end-'+ (^item.day + ^item.span + 1)] }}\">\r\n <${P}-span class=\"event-startdate\" culture=\"{{ :host.culture }}\" hide=\"{{ ^item.continuing.start }}\" text=\"{{ :host.getTimeLabel(^item.event.start) }}\"></${P}-span>\r\n <${P}-span class=\"event-caption\" text=\"{{ ^item.caption }}\"></${P}-span>\r\n </${P}-panel>\r\n </template>\r\n </${P}-repeater>\r\n </template>\r\n</${P}-repeater><${P}-content></${P}-content>`\n })\n], PacemCalendarElement);\nexport { PacemCalendarElement };\n// #endregion\n// #region CLOCK (to be worked on: many possibilities ahead)\n/** Displays (and CSS-classes itself by) the current hour/minute; typically overlaid on a {@link PacemAgendaElement} to mark the current-time line. */\nlet PacemClockElement = class PacemClockElement extends Components.PacemElement {\n};\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemClockElement.prototype, \"now\", void 0);\nPacemClockElement = __decorate([\n CustomElement({ tagName: P + '-clock' })\n], PacemClockElement);\nexport { PacemClockElement };\n// #endregion\n// #region SCHEDULE\nfunction buildCalendarHeader() {\n let header = '';\n for (let day = 0; day < 7; day++) {\n header += `<${P}-span culture=\"{{ :host.culture }}\" css-class=\"{{ {'viewday': :host.isViewDay(:host.week[${day}], :host.viewDate)} }}\" class=\"schedule-heading day-${day + 1} text-ellipsed\" text=\"{{ :host.getHeaderLabel(:host.week[${day}], :host.zoom) }}\"></${P}-span>`;\n }\n const id = \"dock_\" + Utils.uniqueCode();\n return `<div class=\"schedule-header schedule-grid\"><div class=\"heading-left\"></div>${header}</div>`;\n}\n/** Combines a {@link PacemCalendarElement} (month view) and a {@link PacemAgendaElement} (day/week view) into a single scheduler, switching between them based on `zoom`. */\nlet PacemScheduleElement = class PacemScheduleElement extends PacemCalendarBaseElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._calendar.addEventListener('dateselect', this.emitHandler, false);\n this._agenda.addEventListener('timeselect', this.emitHandler, false);\n // bootstrap\n this.now = new Date();\n }\n disconnectedCallback() {\n if (this._calendar) {\n this._calendar.removeEventListener('dateselect', this.emitHandler, false);\n this._agenda.removeEventListener('timeselect', this.emitHandler, false);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild(P + '-calendar')\n], PacemScheduleElement.prototype, \"_calendar\", void 0);\n__decorate([\n ViewChild(P + '-agenda')\n], PacemScheduleElement.prototype, \"_agenda\", void 0);\nPacemScheduleElement = __decorate([\n CustomElement({\n tagName: P + '-schedule', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-schedule\" css-class=\"{{ ['schedule-'+ (:host.zoom || '${CalendarZoom.Month}')] }}\">\r\n <${P}-timer interval=\"10000\" on-tick=\":host.now = Pacem.Utils.parseDate(Date.now())\"></${P}-timer>\r\n ${buildCalendarHeader()}\r\n <${P}-agenda disabled-ranges=\"{{ :host.disabledRanges }}\" on-eventselect=\":host.handle($event)\" on-eventunselect=\":host.handle($event)\" now=\"{{ :host.now }}\" culture=\"{{ :host.culture }}\" view-date=\"{{ :host.viewDate }}\" zoom=\"{{ :host.zoom }}\" week-start=\"{{ :host.weekStart }}\" items=\"{{ :host.items }}\"></${P}-agenda>\r\n <${P}-calendar disabled-ranges=\"{{ :host.disabledRanges }}\" on-eventselect=\":host.handle($event)\" on-eventunselect=\":host.handle($event)\" now=\"{{ :host.now }}\" culture=\"{{ :host.culture }}\" view-date=\"{{ :host.viewDate }}\" zoom=\"{{ :host.zoom }}\" week-start=\"{{ :host.weekStart }}\" items=\"{{ :host.items }}\"></${P}-calendar>\r\n <${P}-content></${P}-content>\r\n</${P}-panel>`\n })\n], PacemScheduleElement);\nexport { PacemScheduleElement };\n// #endregion\n// #region RULES\n/** Base class for declarative rule elements that compute and inject {@link DateRange}s into an ancestor {@link PacemCalendarBaseElement}'s `disabledRanges` (e.g. {@link PacemCalendarDayOfWeekRuleElement}). */\nexport class PacemCalendarRuleBaseElement extends HTMLElement {\n constructor() {\n super(...arguments);\n this._disabledRanges = [];\n }\n viewActivatedCallback() {\n if (!Utils.isNull(this._target = CustomElementUtils.findAncestor(this, node => node instanceof PacemCalendarBaseElement))) {\n this.refreshDisabledRanges();\n }\n else {\n throw `Missing ancestor calendar element for ${this.constructor.name}.`;\n }\n }\n disconnectedCallback() {\n this._target = undefined;\n }\n /** @readonly Gets the ancestor calendar element this rule applies its disabled ranges to. */\n get target() {\n return this._target;\n }\n refreshDisabledRanges() {\n if (Utils.isNullOrEmpty(this._target)) {\n // TODO: throw\n return;\n }\n let actualRanges = this._target.disabledRanges || [];\n // cleanup old ones\n for (let range of this._disabledRanges) {\n let ndx = actualRanges.indexOf(range);\n if (ndx >= 0) {\n actualRanges.splice(ndx, 1);\n }\n }\n // add new ones\n this._disabledRanges = this.computeDisabledRanges() || [];\n for (let range of this._disabledRanges) {\n actualRanges.push(range);\n }\n this._target.disabledRanges = actualRanges;\n }\n}\n__decorate([\n Debounce(true)\n], PacemCalendarRuleBaseElement.prototype, \"refreshDisabledRanges\", null);\n/** Declarative {@link PacemCalendarRuleBaseElement} that disables every day of the ancestor calendar not listed in `days` (e.g. weekends). */\nlet PacemCalendarDayOfWeekRuleElement = class PacemCalendarDayOfWeekRuleElement extends PacemCalendarRuleBaseElement {\n constructor() {\n super(...arguments);\n this._daysOfWeek = [];\n this._calendarChangeHandler = (evt) => {\n if (evt.detail.propertyName == 'month') {\n this.refreshDisabledRanges();\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.target.addEventListener(PropertyChangeEventName, this._calendarChangeHandler, false);\n }\n propertyChangedCallback(name, old, val, first) {\n if (name === 'days') {\n this._daysOfWeek = (val || []).map(i => DAYS_OF_WEEK.indexOf(i)).filter(i => i >= 0);\n this.refreshDisabledRanges();\n }\n }\n computeDisabledRanges() {\n let retval = [];\n for (let week of this.target.month) {\n for (let day of week) {\n if (this._daysOfWeek.indexOf(day.getDay()) == -1) {\n let from = Utils.Dates.dateOnly(day), to = Utils.Dates.dateOnly(new Date(from.valueOf() + MSECS_PER_DAY + /* get rid of daylight saving switches */ MSECS_PER_HOUR));\n retval.push({ from: from, to: to });\n }\n }\n }\n return retval;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.StringArray })\n], PacemCalendarDayOfWeekRuleElement.prototype, \"days\", void 0);\nPacemCalendarDayOfWeekRuleElement = __decorate([\n CustomElement({ tagName: P + '-calendar-daysofweek-rule' })\n], PacemCalendarDayOfWeekRuleElement);\nexport { PacemCalendarDayOfWeekRuleElement };\n// #endregion\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, ViewChild, Utils, PropertyConverters, PacemEventTarget, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Animates its content's height (or width, if `horizontal`) between 0 and its natural size, toggled via the `collapse` property. */\nlet PacemCollapseElement = class PacemCollapseElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._resizeHandler = (evt) => {\n this.#state = evt.detail;\n this._toggle();\n };\n }\n #state;\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'collapse':\n this._toggle();\n case 'disabled':\n if (!Utils.isNull(this._resizer)) {\n this._resizer.disabled = this.disabled || this.collapse;\n }\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const r = this._resizer;\n this.#state = r.currentSize;\n this._toggle();\n }\n _toggle() {\n const div = this, collapse = this.collapse, state = this.#state;\n if (this.disabled || Utils.isNull(div))\n return;\n //\n if (this.horizontal) {\n Utils.addClass(div, PCSS + '-horizontal');\n div.style.height = state && (state.height + 'px') || '';\n div.style.width = collapse ? '0' : (state && state.width + 'px') || '';\n }\n else {\n Utils.removeClass(div, PCSS + '-horizontal');\n div.style.height = collapse ? '0' : (state && state.height + 'px') || '';\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemCollapseElement.prototype, \"collapse\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemCollapseElement.prototype, \"horizontal\", void 0);\n__decorate([\n ViewChild(P + '-resize')\n], PacemCollapseElement.prototype, \"_resizer\", void 0);\n__decorate([\n ViewChild(`[part=content]`)\n], PacemCollapseElement.prototype, \"_container\", void 0);\nPacemCollapseElement = __decorate([\n CustomElement({\n tagName: P + '-collapse', shadow: true,\n template: `<${P}-resize on-${Components.ResizeEventName}=\":host._resizeHandler($event)\" target=\"{{ ::_container }}\"></${P}-resize><div part=\"container\"><div part=\"content\"><slot></slot></div></div>`\n })\n], PacemCollapseElement);\nexport { PacemCollapseElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Watch, Utils, Components, CustomTypedEvent, Logging, avoidHandler } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Set of buttons shown by a dialog (e.g. {@link PacemDialogBase}), controlling which {@link DialogButton}s are visible. */\nexport var DialogButtons;\n(function (DialogButtons) {\n DialogButtons[\"YesNo\"] = \"yesno\";\n DialogButtons[\"YesNoCancel\"] = \"yesnocancel\";\n DialogButtons[\"Ok\"] = \"ok\";\n DialogButtons[\"OkCancel\"] = \"okcancel\";\n})(DialogButtons || (DialogButtons = {}));\n/** Single button a dialog can be committed/closed with. */\nexport var DialogButton;\n(function (DialogButton) {\n DialogButton[\"Yes\"] = \"yes\";\n DialogButton[\"No\"] = \"no\";\n DialogButton[\"Cancel\"] = \"cancel\";\n DialogButton[\"Ok\"] = \"ok\";\n})(DialogButton || (DialogButton = {}));\n/** Event name dispatched by a {@link PacemDialogBase} when it is committed/closed via one of its buttons. */\nexport const DialogResultEventName = 'commit';\n/** Event dispatched by a {@link PacemDialogBase} when it is committed/closed via one of its buttons; also the resolution value of `open()`'s promise. */\nexport class DialogResultEvent extends CustomTypedEvent {\n constructor(args) {\n super(DialogResultEventName, args);\n }\n}\n/** Base class for modal dialog elements (see {@link PacemDialogElement}): wraps a {@link Lightbox} with an open/commit lifecycle resolved through a promise. */\nexport class PacemDialogBase extends Components.PacemElement {\n #deferred;\n /** Opens the dialog, optionally seeding its `state`. @returns A promise resolved with the {@link DialogResultEventArgs} once the dialog is committed. */\n open(state, rejectOnDeny = false) {\n const lb = this.lightbox;\n if (!Utils.isNull(this.#deferred)) {\n throw `Dialog already open.`;\n }\n const deferred = (this.#deferred = { promise: Promise.withResolvers(), rejectOnDeny }).promise;\n if (this.hide || this.disabled) {\n this.log(Logging.LogLevel.Warn, 'Dialog hidden or disabled, opening forbidden.');\n deferred.reject();\n }\n else {\n this.dispatchEvent(new Event('open'));\n lb.show = true;\n this.state = state;\n }\n return deferred.promise;\n }\n /** Closes the dialog with the given button outcome, resolving the pending `open()` promise and dispatching a {@link DialogResultEvent}. */\n commit(btn, evt) {\n avoidHandler(evt);\n this.log(Logging.LogLevel.Debug, `Committing dialog by clicking '${btn}'.`);\n const state = this.state;\n var drevt = new DialogResultEvent({ button: btn, state });\n this.lightbox.show = false;\n const { promise, rejectOnDeny } = this.#deferred;\n if (rejectOnDeny) {\n switch (btn) {\n case DialogButton.Cancel:\n case DialogButton.No:\n promise.reject(drevt.detail);\n default:\n promise.resolve(drevt.detail);\n }\n }\n else {\n promise.resolve(drevt.detail);\n }\n this.#deferred = null;\n this.dispatchEvent(drevt);\n }\n}\n__decorate([\n Watch()\n], PacemDialogBase.prototype, \"state\", void 0);\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, Defaults, CustomElement, ViewChild, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemDialogBase, DialogButtons } from './dialog-abstractions';\n//namespace Pacem.Components.UI {\n/** Modal dialog built on top of a {@link PacemLightboxElement}, with a configurable Ok/Yes/No/Cancel button set (see {@link DialogButtons}). */\nlet PacemDialogElement = class PacemDialogElement extends PacemDialogBase {\n constructor() {\n super(...arguments);\n /** Gets or sets which button set is shown (Ok, OkCancel, YesNo, YesNoCancel). */\n this.buttons = DialogButtons.Ok;\n /** Gets or sets the caption of the Ok button. */\n this.okCaption = 'OK';\n /** Gets or sets the caption of the Yes button. */\n this.yesCaption = 'Yes';\n /** Gets or sets the caption of the No button. */\n this.noCaption = 'No';\n /** Gets or sets the caption of the Cancel button. */\n this.cancelCaption = 'Cancel';\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'buttons':\n //\n break;\n }\n }\n open(state) {\n const retval = super.open(state);\n switch (this.buttons) {\n case DialogButtons.Ok:\n case DialogButtons.OkCancel:\n this.dialogButtons.ok.focus();\n break;\n default:\n this.dialogButtons.yes.focus();\n break;\n }\n return retval;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n // HACK: move the buttons outside the .pacem-scrollable element in the lightbox\n //requestAnimationFrame(() => {\n // const elFrom = this.lightbox && this.lightbox.container;\n // if (!Utils.isNull(elFrom)) {\n // elFrom.appendChild(this._buttons);\n // this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'dialogButtons', currentValue: this.dialogButtons }));\n // } else {\n // this.log(Logging.LogLevel.Warn, `Could not find the lightbox container as expected.`);\n // }\n //});\n }\n /** @readonly Gets the 'ok', 'yes', 'no' and 'cancel' dialog buttons. */\n get dialogButtons() {\n const btns = this._buttons;\n return {\n ok: btns && btns.firstElementChild.firstElementChild,\n yes: btns && btns.firstElementChild.children.item(1),\n no: btns && btns.firstElementChild.children.item(2),\n cancel: btns && btns.firstElementChild.lastElementChild\n };\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDialogElement.prototype, \"buttons\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemDialogElement.prototype, \"okCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemDialogElement.prototype, \"yesCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemDialogElement.prototype, \"noCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemDialogElement.prototype, \"cancelCaption\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-dialog-buttons`)\n], PacemDialogElement.prototype, \"_buttons\", void 0);\n__decorate([\n ViewChild(P + '-lightbox')\n], PacemDialogElement.prototype, \"lightbox\", void 0);\nPacemDialogElement = __decorate([\n CustomElement({\n tagName: P + '-dialog', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-lightbox modal=\"true\" logger=\"{{ :host.logger }}\">\r\n <${P}-content></${P}-content>\r\n <div class=\"${PCSS}-dialog-buttons ${PCSS}-buttonset buttons\" part=\"dialog-buttons\" slot=\"bottom\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button class=\"button button-size size-small primary dialog-ok\" css-class=\"{{ {'buttonset-last': :host.buttons === 'ok'} }}\" on-click=\":host.commit('ok', $event)\" disabled=\"{{ :host.disabled || this.hide }}\" hide=\"{{ :host.buttons !== 'ok' && :host.buttons !== 'okcancel' }}\"><${P}-text text=\"{{ :host.okCaption }}\"></${P}-text></${P}-button>\r\n <${P}-button class=\"button button-size size-small primary dialog-yes\" css-class=\"{{ {'buttonset-first': :host.buttons !== 'ok' || :host.buttons !== 'okcancel'} }}\" on-click=\":host.commit('yes', $event)\" disabled=\"{{ :host.disabled || this.hide }}\" hide=\"{{ :host.buttons === 'ok' || :host.buttons === 'okcancel' }}\"><${P}-text text=\"{{ :host.yesCaption }}\"></${P}-text></${P}-button>\r\n <${P}-button class=\"button button-size size-small dialog-no\" css-class=\"{{ {'buttonset-last': :host.buttons === 'yesno'} }}\" on-click=\":host.commit('no', $event)\" disabled=\"{{ :host.disabled || this.hide }}\" hide=\"{{ :host.buttons !== 'yesno' && :host.buttons !== 'yesnocancel' }}\"><${P}-text text=\"{{ :host.noCaption }}\"></${P}-text></${P}-button>\r\n <${P}-button class=\"button button-size size-small dialog-cancel\" on-click=\":host.commit('cancel', $event)\" disabled=\"{{ :host.disabled || this.hide }}\" hide=\"{{ :host.buttons !== 'yesnocancel' && :host.buttons !== 'okcancel' }}\"><${P}-text text=\"{{ :host.cancelCaption }}\"></${P}-text></${P}-button>\r\n </div>\r\n </div>\r\n</${P}-lightbox>`\n })\n], PacemDialogElement);\nexport { PacemDialogElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, Utils, PropertyConverters, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** ARIA-`separator` element drawing a horizontal or vertical divider line, with optional `prepend`/`append` slotted content. */\nlet PacemDividerElement = class PacemDividerElement extends Components.PacemElement {\n constructor() {\n super('separator');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && name === 'orientation') {\n this._syncOrientation(val);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._syncOrientation();\n }\n _syncOrientation(orientation = this.orientation) {\n if (orientation !== 'vertical') {\n // exclude invalid runtime values\n orientation = 'horizontal';\n }\n super.aria.attributes.set('orientation', orientation);\n switch (orientation) {\n case 'vertical':\n Utils.addClass(this, 'divider-vertical');\n break;\n default:\n Utils.removeClass(this, 'divider-vertical');\n break;\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String, emit: false })\n], PacemDividerElement.prototype, \"orientation\", void 0);\nPacemDividerElement = __decorate([\n CustomElement({\n tagName: P + '-divider', shadow: true,\n template: `<div part=\"divider\"><div part=\"prepend\"></div><slot part=\"content\"></slot><div part=\"append\"></div></div>`\n })\n], PacemDividerElement);\nexport { PacemDividerElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, CustomElementUtils } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\nconst SVG = /^\\s*<svg\\s/;\nconst FA = /^fa(b|r|s|l|d|t|-brands|-solid|-regular|-light|-thin|-duotone)?\\s+fa-/;\nconst FA_CDN = { url: \"https://kit.fontawesome.com/4922589c3c.js\", crossOrigin: true };\nconst LNI = /^lni\\s+lni-/;\nconst LNI_CDN = \"https://cdn.lineicons.com/2.0/LineIcons.css\";\nconst COREUI = /^ci[dlsbf]-/;\nconst COREUI_CDN = \"https://unpkg.com/@coreui/icons/css/all.min.css\";\nconst MATERIAL = /^material-icons?\\s+([\\w]+)/;\n//const MATERIAL_CDN = \"https://fonts.googleapis.com/icon?family=Material+Icons\";\nconst MATERIAL_SYMBOLS = /^material(-symbols?)?\\s+([\\w]+)/;\n// TODO: put this url in a css variable and use it across the site (eventually)\nconst MATERIAL_SYMBOLS_CDN = \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200\";\nconst URL = /^(https?:\\/\\/|\\/\\/)?.+\\.(webp|svg|gif|png|jpe?g)$/;\nconst iconImportMemoizer = [];\nfunction importConditionally(cssClassName, url, sha, crossOrigin, js) {\n if (iconImportMemoizer.indexOf(cssClassName) >= 0) {\n return Promise.resolve();\n }\n iconImportMemoizer.push(cssClassName);\n // this is the heavy part, be sure to call it just once (thus the memoizer)\n if (Utils.Css.isClassDefined(cssClassName)) {\n return Promise.resolve();\n }\n return js ? CustomElementUtils.importjs(url, sha, crossOrigin) : CustomElementUtils.importcss(url, sha, crossOrigin);\n}\nfunction getIconMarkup(icon) {\n return new Promise((resolve, reject) => {\n // null or empty\n if (Utils.isNullOrEmpty(icon)) {\n reject('No icon provided');\n }\n // svg?\n else if (SVG.test(icon)) {\n resolve(icon);\n }\n // font-awesome?\n else if (FA.test(icon)) {\n importConditionally(\"fa\", FA_CDN.url, undefined, FA_CDN.crossOrigin, true).then(_ => {\n resolve(`<i class=\"${icon}\"></i>`);\n }, e => reject(e));\n }\n // explicit material symbols?\n else if (MATERIAL_SYMBOLS.test(icon)) {\n importConditionally(\"material-symbols\", MATERIAL_SYMBOLS_CDN).then(_ => {\n const regExcArray = MATERIAL_SYMBOLS.exec(icon), ligature = regExcArray[2], rest = icon.substring(regExcArray[0].length);\n resolve(`<i class=\"material-symbols-outlined${rest}\">${ligature}</i>`);\n }, e => reject(e));\n }\n // explicit material icons? (switch to the new material-symbols anyway)\n else if (MATERIAL.test(icon)) {\n importConditionally(\"material-icons\", MATERIAL_SYMBOLS_CDN).then(_ => {\n const regExcArray = MATERIAL.exec(icon), ligature = regExcArray[1], rest = icon.substring(regExcArray[0].length);\n resolve(`<i class=\"material-icons${rest}\">${ligature}</i>`);\n }, e => reject(e));\n }\n // line-icons?\n else if (LNI.test(icon)) {\n importConditionally('lni', LNI_CDN).then(_ => {\n resolve(`<i class=\"${icon}\"></i>`);\n }, e => reject(e));\n }\n // coreui icons?\n else if (COREUI.test(icon)) {\n importConditionally('clb', COREUI_CDN).then(_ => {\n resolve(`<i class=\"${icon}\"></i>`);\n }, e => reject(e));\n }\n // image url?\n else if (URL.test(icon)) {\n resolve(`<img src=\"${icon}\" />`);\n }\n else {\n // assume material icon as default\n const parts = icon.trim().split(' ');\n const ligature = parts[0];\n const css = parts.length > 1 ? ' ' + parts.slice(1).join(' ') : '';\n resolve(`<i class=\"${PCSS}-icon${css}\">${ligature}</i>`);\n }\n });\n}\n/** Renders an icon from a wide range of notations (inline SVG, Font Awesome, Material Symbols/Icons, LineIcons, CoreUI, or a plain image URL), lazily importing the matching stylesheet/script on demand. */\nlet PacemIconElement = class PacemIconElement extends Components.PacemElement {\n constructor() {\n super('', { hidden: 'true' });\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'icon':\n this._setIcon();\n break;\n case 'hide':\n if (!val) {\n // overrides the default `PacemElement` behavior:\n // keep aria-hidden=true (to prevent screen readers from reading the ligatures)\n this.aria.attributes.set('hidden', 'true');\n }\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setIcon();\n }\n _setIcon(icon = this.icon) {\n getIconMarkup(icon).then(markup => {\n this.innerHTML = markup;\n }, _ => {\n this.innerHTML = '';\n });\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemIconElement.prototype, \"icon\", void 0);\nPacemIconElement = __decorate([\n CustomElement({\n tagName: P + '-icon', modifiers: ['face', 'content']\n })\n], PacemIconElement);\nexport { PacemIconElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, Utils, PropertyConverters, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Renders an image as a CSS background (rather than an `<img>` src), enabling `cover`/`contain`/`auto` fitting and reporting its natural/decoded size. */\nlet PacemImageElement = class PacemImageElement extends Components.PacemElement {\n constructor() {\n super('img');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'src':\n case 'disabled':\n this._setSource();\n break;\n case 'size':\n case 'adapt':\n this._setLayout();\n break;\n case 'loading':\n (!val ? Utils.addClass : Utils.removeClass)(this, 'img-ready');\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setLayout();\n this._setSource();\n }\n _setLayout() {\n const sizeDeclared = !Utils.isNullOrEmpty(this.size);\n const bgsize = this.adapt || 'auto';\n const size = this.size || this.#naturalSize || { width: '0', height: '0' };\n this.style.backgroundSize = bgsize;\n const adapt = bgsize === 'auto', w = size.width, h = size.height;\n if (adapt || sizeDeclared) {\n this.style.width = w || '';\n this.style.height = h || '';\n }\n }\n #naturalSize;\n async _setSource() {\n if (this.disabled || !this.isReady) {\n return;\n }\n //\n const src = this.src;\n this.style.backgroundImage = '';\n if (!Utils.isNullOrEmpty(src)) {\n this.loading = true;\n try {\n const img = await Utils.loadImage(src);\n let weight, entries, entry;\n if (window.performance\n && (entries = performance.getEntriesByName(img.src))\n && (entry = entries[0])) {\n weight = entry.decodedBodySize;\n }\n this.#naturalSize = {\n width: img.naturalWidth + 'px',\n height: img.naturalHeight + 'px',\n weight: weight\n };\n this._setLayout();\n this.style.backgroundImage = `url(\"${img.src}\")`;\n }\n catch (e) {\n // 404, whatever...\n }\n finally {\n this.loading = false;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemImageElement.prototype, \"adapt\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemImageElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ emit: false,\n converter: {\n convert: (attr, el) => {\n // parse strings like \"20,20\" \".5 , 1vh\" \"15\" and returns respectively [\"20px\", \"20px\"], [\".5px\", \"1vh\"] and [\"15px\", \"15px\"]\n const regex = /^\\s*([\\d.]+)(px|em|rem|vw|vh)?\\s*(?:,\\s*([\\d.]+)(px|em|rem|vw|vh)?)?\\s*$/i;\n const match = regex.exec(attr);\n const width = match ? match[1] + (match[2] || 'px') : '0', height = match ? (match[3] ? match[3] + (match[4] || 'px') : width) : '0';\n return { width, height };\n },\n convertBack: (prop, el) => `${prop?.width},${prop?.height}`\n }, reflectBack: true })\n], PacemImageElement.prototype, \"size\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemImageElement.prototype, \"loading\", void 0);\nPacemImageElement = __decorate([\n CustomElement({\n tagName: P + '-img'\n })\n], PacemImageElement);\nexport { PacemImageElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, Debounce, CustomElement, Watch, Utils, PropertyConverters, PacemEventTarget } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Watches a scrollable `container` and dispatches a `fetchmore` event whenever the user scrolls within `threshold` pixels of the bottom. */\nlet PacemInfiniteScrollerElement = class PacemInfiniteScrollerElement extends PacemEventTarget {\n constructor() {\n super();\n this._scrollDelegate = () => this._doScroll();\n this._enabled = true;\n this._viewportHeight = 0;\n this._innerHeight = 0;\n this._isDocument = false;\n this._container = null;\n this._viewport = null;\n this._scroller = null;\n this._bottomGap = 10;\n this._container = this;\n this._viewport = this;\n this._scroller = this;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.setInfiniteScrollContainer(this._container);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._scroller))\n this._scroller.removeEventListener('scroll', this._scrollDelegate, false);\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'container':\n this.setInfiniteScrollContainer(val);\n break;\n case 'disabled':\n if (this._enabled = !val)\n this._doScroll();\n break;\n case 'threshold':\n this._bottomGap = val || 0;\n break;\n }\n }\n /** Re-targets the watched scroll container/viewport/scroll-event-source. @param v An element, a CSS selector, or `'$document'` for the whole page. */\n setInfiniteScrollContainer(v = '$document') {\n var cont = v;\n var isDoc = this._isDocument = cont === '$document' || cont === document.body || cont === document.documentElement;\n this._container = isDoc ? (document.body || document.documentElement) : ((typeof v === 'string') ?\n document.querySelector(cont)\n :\n cont);\n this._viewport = isDoc ? window : this._container;\n if (this._scroller)\n this._scroller.removeEventListener('scroll', this._scrollDelegate, false);\n this._scroller = isDoc ? window.document : this._container;\n this._scroller.addEventListener('scroll', this._scrollDelegate, false);\n if (this._enabled)\n this._doScroll();\n }\n //ngOnChanges(changes: SimpleChanges) {\n //}\n _emitFetchMore() {\n /**\n * on-fetchmore => must toggle `enabled` while fetching...\n */\n var evt = new CustomEvent('fetchmore');\n this.dispatchEvent(evt);\n }\n _doScroll() {\n if (!this._enabled)\n return;\n if (!this._computeHeight()) {\n var scrollTop = this._scroller instanceof Document ? window.pageYOffset : this._scroller.scrollTop;\n var viewportHeight = this._viewportHeight, innerHeight = this._innerHeight;\n var threshold = innerHeight - (scrollTop + viewportHeight);\n if (threshold < this._bottomGap /* pixels */\n || innerHeight <= viewportHeight) {\n // fire fetchMore() \n this._emitFetchMore();\n window.requestAnimationFrame(() => {\n if (this._enabled)\n this._doScroll();\n });\n } //else computeHeight();\n }\n else\n this._doScroll();\n }\n _computeHeight() {\n if (!this._container)\n return;\n var cont = this._container;\n var topOffset = Number.MAX_VALUE, bottomOffset = 0, totalHeight = 0, _innerHeight;\n if (this._isDocument) {\n var d = cont;\n _innerHeight = Math.max(d.scrollHeight, d.offsetHeight, d.clientHeight);\n }\n else {\n for (var i = 0; i < cont.children.length; i++) {\n var e = cont.children.item(i);\n var eTopOffset = e.offsetTop, eHeight = e.offsetHeight, eBottomOffset = eTopOffset + eHeight;\n totalHeight += eHeight;\n if (eTopOffset < topOffset) {\n topOffset = eTopOffset;\n }\n if (eBottomOffset > bottomOffset) {\n bottomOffset = eBottomOffset;\n }\n }\n _innerHeight = Math.round(bottomOffset - topOffset);\n }\n var _viewportHeight = this._viewport instanceof Window ? Utils.windowSize.height : this._viewport.offsetHeight;\n if (_innerHeight != this._innerHeight || _viewportHeight != this._viewportHeight) {\n this._innerHeight = _innerHeight;\n this._viewportHeight = _viewportHeight;\n return true;\n }\n return false;\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemInfiniteScrollerElement.prototype, \"container\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Number })\n], PacemInfiniteScrollerElement.prototype, \"threshold\", void 0);\n__decorate([\n Debounce(100)\n], PacemInfiniteScrollerElement.prototype, \"_doScroll\", null);\nPacemInfiniteScrollerElement = __decorate([\n CustomElement({ tagName: P + '-infinite-scroller' })\n], PacemInfiniteScrollerElement);\nexport { PacemInfiniteScrollerElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Watch, Utils, PropertyConverters, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Base class for elements iterating a `datasource` under the control of a {@link PacemAdapterElement} (e.g. a slideshow), exposing `index`-relative helpers (`isPrevious`, `isNext`, `isCloseTo`). */\nexport class PacemAdaptedIterativeElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n /** Gets or sets the currently focused item's index within `datasource`. */\n this.index = 0;\n }\n /** Gets whether `ndx` is the focused item itself, or immediately adjacent (previous/next, wrapping around) to `focusndx`. */\n isCloseTo(ndx, focusndx) {\n if (Utils.isNull(this.datasource) || this.datasource.length == 0)\n return false;\n return /*this.adapter.isClose(ndx) ||*/ this._isCloseToCore(ndx, focusndx, this.datasource.length);\n }\n /** Gets whether `ndx` is the item immediately preceding `focusndx` (wrapping around the datasource). */\n isPrevious(ndx, focusndx) {\n if (Utils.isNull(this.datasource) || this.datasource.length == 0)\n return false;\n return /*this.adapter.isPrevious(ndx) ||*/ this._isPreviousCore(ndx, focusndx, this.datasource.length);\n }\n /** Gets whether `ndx` is the item immediately following `focusndx` (wrapping around the datasource). */\n isNext(ndx, focusndx) {\n if (Utils.isNull(this.datasource) || this.datasource.length == 0)\n return false;\n return /*this.adapter.isNext(ndx) ||*/ this._isNextCore(ndx, focusndx, this.datasource.length);\n }\n _isNextCore(ndx, focusndx, count) {\n return ((focusndx + 1) % count) === ndx;\n }\n _isPreviousCore(ndx, focusndx, count) {\n return ((focusndx - 1 + count) % count) === ndx;\n }\n _isCloseToCore(ndx, focusndx, count) {\n return (((focusndx + count) % count) == ((ndx + count) % count))\n || this._isNextCore(ndx, focusndx, count) || this._isPreviousCore(ndx, focusndx, count);\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemAdaptedIterativeElement.prototype, \"index\", void 0);\n__decorate([\n Watch()\n], PacemAdaptedIterativeElement.prototype, \"datasource\", void 0);\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, stopPropagationHandler, ViewChild, avoidHandler } from '@pacem/pacem-core';\nimport { LightboxBehavior } from './lightbox-abstractions';\nimport { PacemButtonElement } from './button';\n//namespace Pacem.Components.UI {\n// TODO: shadow-ize lightbox (slots, parts, ...) in the next version 0.5x.x.\n/** Full-viewport overlay (\"lightbox\") element showing its slotted content above a backdrop, with an auto-injected close button and optional modal (non-dismissible) behavior. */\nlet PacemLightboxElement = class PacemLightboxElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._keyupHandler = (evt) => {\n if (evt.keyCode === 27 /* ESC */ && this.show && !this.modal) {\n this.show = false;\n }\n };\n this._wrapperMousedownHandler = (evt) => {\n if (this.modal || this.behavior === LightboxBehavior.ExplicitClose) {\n stopPropagationHandler(evt);\n }\n else {\n this.show = false;\n }\n };\n this._slotchangeHandler = (evt) => {\n this._resetLayout();\n };\n this._closeHandler = (evt) => {\n this._close(evt);\n };\n }\n _resetLayout() {\n this._disposeButton();\n const btn = this._ensureButton();\n if (!Utils.isNull(btn)) {\n btn.addEventListener('click', this._closeHandler, false);\n }\n }\n _toggleCloseVisibility() {\n const closer = this._closeWrapper;\n if (!Utils.isNull(closer)) {\n closer.hidden = this.modal;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._toggleCloseVisibility();\n var wrapper = this._wrapperElement;\n var container = this._container;\n wrapper.addEventListener('mousedown', this._wrapperMousedownHandler, false);\n container.addEventListener('mousedown', stopPropagationHandler, false);\n document.body.removeEventListener('scroll', avoidHandler, true);\n window.addEventListener('keyup', this._keyupHandler, false);\n this._resetLayout();\n this._slot.addEventListener('slotchange', this._slotchangeHandler, false);\n if (this.show) {\n this._toggle(true);\n }\n }\n _toggle(val) {\n const wrap = this._wrapperElement;\n const container = this._container;\n if (!!val) {\n this.inert = false;\n this.dispatchEvent(new Event('open', { bubbles: true, cancelable: false }));\n wrap.style.display = '';\n wrap.hidden = false;\n window.requestAnimationFrame(() => {\n Utils.addPart(wrap, 'lightbox-wrapper-shown');\n Utils.addPart(container, 'lightbox-shown');\n });\n var scroller = this.querySelector('.' + PCSS + '-scrollable');\n if (scroller) {\n window.requestAnimationFrame(() => scroller.scrollTop = 0);\n }\n }\n else {\n this.inert = true;\n this.dispatchEvent(new Event('close', { bubbles: true, cancelable: false }));\n //\n Utils.removePart(wrap, 'lightbox-wrapper-shown');\n Utils.removePart(container, 'lightbox-shown');\n Utils.addAnimationEndCallback(wrap, (e) => {\n e.hidden = true;\n e.style.display = 'none';\n }, 500);\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'show':\n if (!!val) {\n this._toggle(true);\n }\n else if (!!old) {\n this._toggle(false);\n }\n break;\n case 'modal':\n this._toggleCloseVisibility();\n break;\n }\n }\n disconnectedCallback() {\n if (this.show) {\n this._close();\n }\n var wrapper = this._wrapperElement;\n var container = this._container;\n document.body.removeEventListener('scroll', avoidHandler, true);\n if (!Utils.isNull(wrapper)) {\n wrapper.removeEventListener('mousedown', this._wrapperMousedownHandler, false);\n }\n if (!Utils.isNull(container)) {\n container.removeEventListener('mousedown', stopPropagationHandler, false);\n }\n window.removeEventListener('keyup', this._keyupHandler, false);\n this._disposeButton();\n this._disposeSlot();\n super.disconnectedCallback();\n }\n _disposeButton() {\n this.#btn?.removeEventListener('click', this._closeHandler);\n this.#btn = null;\n }\n _disposeSlot() {\n this._slot?.removeEventListener('slotchange', this._slotchangeHandler, false);\n }\n _close(evt) {\n if (!Utils.isNull(evt)) {\n avoidHandler(evt);\n }\n this.show = false;\n }\n #btn;\n _ensureButton() {\n if (!Utils.isNull(this.#btn)) {\n return this.#btn;\n }\n const btnSlot = this._slot;\n if (Utils.isNull(btnSlot)) {\n return null;\n }\n const found = this._lookForAButton();\n if (!Utils.isNull(found)) {\n return this.#btn = found;\n }\n const retval = new PacemButtonElement();\n retval.setAttribute('slot', 'close');\n retval.className = `${PCSS}-margin margin-0 ${PCSS}-rise rise--2 button-circle circle-smaller`;\n retval.iconGlyph = 'close';\n this.appendChild(retval);\n return this.#btn = retval;\n }\n _lookForAButton() {\n const btnSlot = this._slot;\n if (Utils.isNull(btnSlot)) {\n return null;\n }\n const buttons = btnSlot.assignedElements({ flatten: true });\n if (Utils.isNullOrEmpty(buttons)) {\n return null;\n }\n return buttons[0];\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemLightboxElement.prototype, \"show\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemLightboxElement.prototype, \"modal\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemLightboxElement.prototype, \"behavior\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-lightbox-wrapper')\n], PacemLightboxElement.prototype, \"_wrapperElement\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-lightbox', true)\n], PacemLightboxElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild('slot[name=close]')\n], PacemLightboxElement.prototype, \"_slot\", void 0);\n__decorate([\n ViewChild('div[part=close]')\n], PacemLightboxElement.prototype, \"_closeWrapper\", void 0);\nPacemLightboxElement = __decorate([\n CustomElement({\n tagName: P + '-lightbox',\n shadow: true,\n template: `<div class=\"${PCSS}-lightbox-wrapper\" part=\"lightbox-wrapper\" hidden>\r\n <div class=\"${PCSS}-lightbox\" part=\"lightbox\">\r\n <div part=\"top\"><slot name=\"top\"></slot></div>\r\n <div class=\"${PCSS}-scrollable\" part=\"scrollable\">\r\n <slot></slot>\r\n </div>\r\n <div part=\"bottom\"><slot name=\"bottom\"></slot></div>\r\n <div part=\"close\">\r\n <slot name=\"close\"></slot>\r\n </div>\r\n </div>\r\n</div>`\n })\n], PacemLightboxElement);\nexport { PacemLightboxElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, ViewChild, Utils, PropertyConverters, Components, Defaults } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Visual style of a {@link PacemLoaderElement}'s spinner. */\nexport var LoaderType;\n(function (LoaderType) {\n LoaderType[\"Spinner\"] = \"spin\";\n LoaderType[\"Pacem\"] = \"pacem\";\n LoaderType[\"Custom\"] = \"custom\";\n})(LoaderType || (LoaderType = {}));\n;\n/** Shows a spinner (plain CSS or the branded Pacem gear/SVG animation) while `active`, typically overlaid on content being loaded. */\nlet PacemLoaderElement = class PacemLoaderElement extends Components.PacemElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n var id = '_' + Utils.uniqueCode();\n this._svgSpinner.innerHTML = `<defs>\r\n <mask id=\"hole${id}\">\r\n <rect width=\"100%\" height=\"100%\" fill=\"white\" />\r\n <circle cx=\"36\" cy=\"36\" r=\"12\"></circle>\r\n <path d=\"M18,0 L32,16 H40 L54,0 Z\" fill=\"#000\"></path>\r\n <g transform=\"rotate(120,36,36)\">\r\n <path d=\"M18,0 L32,16 H40 L54,0 Z\" fill=\"#000\"></path>\r\n </g>\r\n </mask>\r\n </defs>\r\n\r\n <circle class=\"circle1\" cx=\"36\" cy=\"36\" r=\"34\" stroke-width=\"4\" fill=\"none\"></circle>\r\n <g class=\"gear\">\r\n <circle cx=\"36\" cy=\"36\" r=\"25\" mask=\"url(#hole${id})\"></circle>\r\n </g>\r\n <circle class=\"circle2\" cx=\"36\" cy=\"36\" r=\"8\" stroke-width=\"2\" fill=\"none\"></circle>\r\n\r\n <g class=\"bounds\">\r\n <path d=\"M8,0 H0 V8 M64,0 H71 V8 M71,63 V71 H64 M8,71 H0 V63\" stroke-width=\"2\"></path>\r\n </g>`;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!Utils.isNull(this._container)) {\n switch (name) {\n case 'active':\n case 'disabled':\n if (this.active === true && !this.disabled) {\n Utils.addClass(this._container, 'active');\n }\n else {\n Utils.removeClass(this._container, 'active');\n }\n break;\n case 'type':\n this._svgSpinner.setAttribute('hidden', 'hidden');\n this._spinner.setAttribute('hidden', 'hidden');\n switch (val) {\n case LoaderType.Pacem:\n this._svgSpinner.removeAttribute('hidden');\n break;\n default:\n this._spinner.removeAttribute('hidden');\n break;\n }\n break;\n }\n }\n }\n};\n__decorate([\n ViewChild('div.' + PCSS + '-spinner', true)\n], PacemLoaderElement.prototype, \"_spinner\", void 0);\n__decorate([\n ViewChild('div.' + PCSS + '-loader')\n], PacemLoaderElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild('svg')\n], PacemLoaderElement.prototype, \"_svgSpinner\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemLoaderElement.prototype, \"active\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemLoaderElement.prototype, \"type\", void 0);\nPacemLoaderElement = __decorate([\n CustomElement({\n tagName: P + '-loader', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-loader\" pacem>\r\n <div class=\"${PCSS}-spinner\" pacem>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n <svg class=\"${PCSS}-spinner\" pacem hidden xmlns=\"http://www.w3.org/2000/svg\" \r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"-18,-18,108,108\" preserveAspectRatio=\"xMidYMid\">\r\n </svg>\r\n </div>`\n })\n], PacemLoaderElement);\nexport { PacemLoaderElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, PropertyConverters, Components } from '@pacem/pacem-core';\nimport { MarkdownService } from './markdown-svc';\n//namespace Pacem.Components.UI {\n/** Renders its `value` property, interpreted as Markdown, as this element's inner HTML. */\nlet PacemMarkdownElement = class PacemMarkdownElement extends Components.PacemElement {\n constructor(_md = new MarkdownService()) {\n super();\n this._md = _md;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'value') {\n this.innerHTML = this.html();\n }\n }\n // IDEA: allow extensible parsing (grammar components?...)\n /** Tokenizes the given (or current `value`) Markdown source. */\n tokens(md = this.value) {\n return this._md.tokenize(md);\n }\n /** Converts the given (or current `value`) Markdown source to an HTML string. */\n html(md = this.value) {\n return this._md.toHtml(md);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMarkdownElement.prototype, \"value\", void 0);\nPacemMarkdownElement = __decorate([\n CustomElement({ tagName: P + '-markdown' })\n], PacemMarkdownElement);\nexport { PacemMarkdownElement };\n", "import { Compile } from '@pacem/pacem-foundation';\nimport { P } from '@pacem/pacem-core';\n//namespace Pacem {\nconst TWITTER_RULE = {\n rule: {\n exec: (input) => {\n const arr = /\\{tweet\\}\\(([^\\)]+)\\)/.exec(input);\n if (arr && arr.length > 1) {\n return [{\n type: 'tweet', raw: arr[0], text: arr[1], index: arr.index\n }];\n }\n return null;\n }\n },\n type: 'inline'\n};\nconst YOUTUBE_RULE = {\n rule: {\n exec: (input) => {\n const arr = /\\{yt([\\d]+x[\\d]+)?\\}\\(([^\\)]+)\\)/.exec(input);\n if (arr && arr.length > 2) {\n const m0 = arr[1] || '560x315';\n const size = m0.split('x'), w = size[0], h = size[1];\n return [{\n type: 'youtube', raw: arr[0], text: arr[2], index: arr.index, width: w, height: h\n }];\n }\n return null;\n }\n },\n type: 'inline'\n};\n// routed link: {route}(#router0:/{culture}/pages/next \"Next Page\"), the router's selector, then the href (formatted by\n// the router's state), then the optional text (the href when missing)\nconst ANCHOR_RULE = {\n rule: {\n exec: (input) => {\n const arr = /\\{route\\}\\(([^:\\s)]+):([^\\s\")]+)(?:\\s+\"([^\"]*)\")?\\)/.exec(input);\n if (arr && arr.length > 2) {\n return [{\n type: 'route', raw: arr[0], text: arr[3] || arr[2], index: arr.index, router: arr[1], href: arr[2]\n }];\n }\n return null;\n }\n },\n type: 'inline'\n};\nconst RULES_TO_HTML = (token) => {\n switch (token.type) {\n case 'youtube':\n return `<!-- youtube embed -->\r\n<iframe width=\"${token['width']}\" height=\"${token['height']}\" src=\"https://www.youtube-nocookie.com/embed/${token.text}\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe>`;\n case 'tweet':\n return `<!-- twitter embed -->\r\n<${P}-tweetembed tweetid=\"${token.text}\"></${P}-tweetembed>`;\n case 'route':\n return `<${P}-a href=\"${token['href']}\" router=\"${token['router']}\">${token.text}</${P}-a>`;\n }\n};\n/**\n * Parses Markdown into HTML, extended with Pacem-specific inline embeds (`{tweet}(id)`, `{yt}(id)`) and routed links\n * (`{route}(#router0:/path \"text\")`).\n * Fenced code blocks are highlighted by the language-agnostic `Compile.Scanner`, for every language registered in\n * `Compile.Syntaxes` (built-in: javascript/typescript, html/xml, c#, c/c++, json; more can be registered at runtime).\n */\nexport class MarkdownService {\n #grammar = [\n TWITTER_RULE,\n YOUTUBE_RULE,\n ANCHOR_RULE\n ];\n #md = new Compile.Markdown.Parser();\n _escape(md) {\n // no html allowed\n return (md ?? '').replace(/</g, '<');\n }\n /** Converts the given Markdown source into an HTML string. */\n toHtml(md) {\n const escaped = this._escape(md);\n return this.#md.toHtml(escaped, this.#grammar, RULES_TO_HTML);\n }\n /** Tokenizes the given Markdown source, without rendering it to HTML. */\n tokenize(md) {\n const escaped = this._escape(md);\n return this.#md.tokenize(escaped, this.#grammar);\n }\n}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, Utils, CustomElement, Watch, ViewChild, PropertyConverters, Components, Defaults } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Continuously scrolls its content horizontally in a loop, like a classic marquee. */\nlet PacemMarqueeElement = class PacemMarqueeElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._state = { overlap: 0, content: 0 };\n }\n // TODO: reuse css animation injection\n connectedCallback() {\n super.connectedCallback();\n const css = this._css = document.createElement('style');\n document.head.appendChild(css);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'speed') {\n this._adjust();\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._adjust();\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._css))\n this._css.remove();\n super.disconnectedCallback();\n }\n _overlapResize(evt) {\n this._state.overlap = evt.detail.width;\n this._adjust();\n }\n _contentResize(evt) {\n this._state.content = evt.detail.width;\n this._adjust();\n }\n _adjust() {\n const state = this._state;\n if (state.content > 0 && state.overlap > 0) {\n const m = this._marquee;\n const id = 'marquee-' + Utils.uniqueCode(), // rename the animation every time (Edge bug)\n from = Math.round(state.overlap), to = -Math.round(state.content);\n this._css.innerHTML = `@keyframes ${id} {\r\n 0% {\r\n transform: translateX(${from}px);\r\n }\r\n\r\n 100% {\r\n transform: translateX(${to}px);\r\n }\r\n}`;\n const speed = this.speed || 20;\n const time = Math.max(speed, Math.round(speed * Math.abs(from - to) / 1920));\n m.style.animationName = id;\n m.style.animationDuration = time + 's';\n m.style.animationIterationCount = 'infinite';\n m.style.animationTimingFunction = 'linear';\n }\n }\n};\n__decorate([\n ViewChild(`.${PCSS}-marquee`)\n], PacemMarqueeElement.prototype, \"_marquee\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-marquee-overlap`)\n], PacemMarqueeElement.prototype, \"_overlap\", void 0);\n__decorate([\n ViewChild(P + \"-resize\")\n], PacemMarqueeElement.prototype, \"_resizer\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemMarqueeElement.prototype, \"speed\", void 0);\nPacemMarqueeElement = __decorate([\n CustomElement({\n tagName: P + '-marquee', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-marquee\"><${P}-content></${P}-content></div><div class=\"${PCSS}-marquee-overlap\"></div>\r\n<${P}-resize target=\"{{ :host._overlap }}\" on-${Components.ResizeEventName}=\":host._overlapResize($event)\"></${P}-resize>\r\n<${P}-resize target=\"{{ :host._marquee }}\" on-${Components.ResizeEventName}=\":host._contentResize($event)\"></${P}-resize>`\n })\n], PacemMarqueeElement);\nexport { PacemMarqueeElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, Utils, CustomElement, Watch, PropertyConverters, PacemEventTarget } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\nconst THRESHOLD_SM = 768;\nconst THRESHOLD_MD = 992;\nconst THRESHOLD_LG = 1200;\nconst THRESHOLD_XL = 1824;\nconst THRESHOLD_HD = 1920;\nconst THRESHOLD_2K = 2048;\nconst THRESHOLD_4K = 3840;\nexport const MEDIAQUERY_XS = `(max-width: ${(THRESHOLD_SM - 1)}px)`;\nexport const MEDIAQUERY_SM = `(min-width: ${THRESHOLD_SM}px)`;\nexport const MEDIAQUERY_MD = `(min-width: ${THRESHOLD_MD}px)`;\nexport const MEDIAQUERY_LG = `(min-width: ${THRESHOLD_LG}px)`;\nexport const MEDIAQUERY_XL = `(min-width: ${THRESHOLD_XL}px)`;\nexport const MEDIAQUERY_HD = `(min-width: ${THRESHOLD_HD}px)`;\nexport const MEDIAQUERY_2K = `(min-width: ${THRESHOLD_2K}px)`;\nexport const MEDIAQUERY_4K = `(min-width: ${THRESHOLD_4K}px)`;\nexport const MEDIAQUERY_PORTRAIT = `(orientation: portrait)`;\nexport const MEDIAQUERY_LANDSCAPE = `(orientation: landscape)`;\nexport const MEDIAQUERY_PREFERS_LIGHT = `(prefers-color-scheme: light)`;\nexport const MEDIAQUERY_PREFERS_DARK = `(prefers-color-scheme: dark)`;\n/** Evaluates a CSS media query and reflects its match state, dispatching `change`/`match`/`unmatch` events as it changes. */\nlet PacemMediaQueryElement = class PacemMediaQueryElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._changeHandler = (evt) => {\n this.isMatch = evt.matches;\n };\n }\n #mql;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._init();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'query':\n if (!first) {\n this._init();\n }\n break;\n case 'isMatch':\n // dedicated change events\n this._broadcastChange(val);\n break;\n }\n }\n disconnectedCallback() {\n this._init('');\n super.disconnectedCallback();\n }\n _broadcastChange(val = this.isMatch) {\n this.dispatchEvent(new Event('change'));\n this.dispatchEvent(new Event(val ? 'match' : 'unmatch'));\n }\n _init(q = this.query) {\n const old = this.#mql;\n if (!Utils.isNull(old)) {\n old.removeEventListener('change', this._changeHandler);\n }\n if (!Utils.isNullOrEmpty(q)) {\n const val = this.#mql = window.matchMedia(q);\n val.addEventListener('change', this._changeHandler);\n this.isMatch = val.matches;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMediaQueryElement.prototype, \"query\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemMediaQueryElement.prototype, \"isMatch\", void 0);\nPacemMediaQueryElement = __decorate([\n CustomElement({\n tagName: P + '-media-query'\n })\n], PacemMediaQueryElement);\nexport { PacemMediaQueryElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemMenuCursorElement_1;\nimport { P, PCSS, Utils, CustomElement, Watch, ViewChild, PropertyConverters, Components, Defaults, avoidHandler, stopPropagationHandler, CustomElementUtils, Logging } from '@pacem/pacem-core';\n//namespace Components.UI {\n/** Collapsible off-canvas/hamburger navigation menu, optionally synchronized with the enclosing shell's CSS classes. */\nlet PacemMenuElement = class PacemMenuElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n /** Gets or sets whether the open/close and outset state toggle CSS classes on the ancestor shell. */\n this.synchronizeShell = true;\n this._stopPropagationHandlerConditional = (_) => {\n if (!Utils.isNull(this._container) && !Utils.isNull(this._backdrop)) {\n const offsetNav = Utils.offset(this._container);\n const offsetBase = Utils.offset(this._backdrop);\n // TODO: consider height as well for different skins, but DO manage edge cases...\n if (offsetNav.width < offsetBase.width) {\n this.open = false;\n }\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._container.addEventListener('click', stopPropagationHandler, false);\n this._container.addEventListener(\"scroll\", stopPropagationHandler, false);\n this._sync();\n }\n disconnectedCallback() {\n window.removeEventListener('navigate', this._stopPropagationHandlerConditional, false);\n if (!Utils.isNull(this._container)) {\n this._container.removeEventListener('click', stopPropagationHandler, false);\n this._container.removeEventListener(\"scroll\", stopPropagationHandler, false);\n }\n this._sync(false);\n super.disconnectedCallback();\n }\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('navigate', this._stopPropagationHandlerConditional, false);\n this._shell = CustomElementUtils.findAncestorShell(this);\n }\n _toggle(evt) {\n avoidHandler(evt);\n this.open = !this.open;\n this.dispatchEvent(new Event('toggle'));\n }\n _sync(val = this.open) {\n if (this.synchronizeShell) {\n Utils.addClass(this, 'menu-sync');\n Utils.addClass(this._shell, PCSS + (val === true ? '-menu-open' : '-menu-close'));\n Utils.removeClass(this._shell, PCSS + (val === true ? '-menu-close' : '-menu-open'));\n }\n else {\n Utils.removeClass(this, 'menu-sync');\n Utils.removeClass(this._shell, PCSS + '-menu-close ' + PCSS + '-menu-open');\n }\n if (this.outset) {\n Utils.addClass(this, 'menu-outset');\n }\n else {\n Utils.removeClass(this, 'menu-outset');\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'open' || name === 'synchronizeShell' || name === 'outset') {\n this._sync();\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemMenuElement.prototype, \"open\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemMenuElement.prototype, \"hideHamburgerButton\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemMenuElement.prototype, \"hideBackButton\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemMenuElement.prototype, \"outset\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemMenuElement.prototype, \"synchronizeShell\", void 0);\n__decorate([\n ViewChild('nav', true)\n], PacemMenuElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-menu`)\n], PacemMenuElement.prototype, \"_backdrop\", void 0);\nPacemMenuElement = __decorate([\n CustomElement({\n tagName: P + '-menu', template: `<${P}-panel class=\"${PCSS}-menu\" css-class=\"{{ {'menu-close': !:host.open, 'menu-open': :host.open} }}\" on-click=\":host._toggle($event)\"> \r\n <nav><${P}-content></${P}-content></nav>\r\n</${P}-panel>\r\n<${P}-shell-proxy>\r\n<${P}-button hide=\"{{ :host.hideBackButton }}\" class=\"${PCSS}-back ${PCSS}-menu button-flat\" css-class=\"{{ {'menu-close': !:host.open, 'menu-open': :host.open} }}\" on-click=\":host._toggle($event)\">BACK</${P}-button>\r\n<${P}-button hide=\"{{ :host.hideHamburgerButton }}\" class=\"${PCSS}-hamburger ${PCSS}-menu button-flat\" css-class=\"{{ {'menu-close': :host.open, 'menu-open': !:host.open} }}\" on-click=\":host._toggle($event)\">MENU</${P}-button></${P}-shell-proxy>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemMenuElement);\nexport { PacemMenuElement };\n/** Animated cursor/indicator that tracks the anchor matching the current path within an ancestor `PacemMenuElement`. */\nlet PacemMenuCursorElement = PacemMenuCursorElement_1 = class PacemMenuCursorElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._onPathChange = (evt) => {\n const path = evt?.detail.path;\n this._findAnchorAndScrollItIntoView(path);\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._menu = CustomElementUtils.findAncestorOfType(this, PacemMenuElement);\n this._findAnchorAndScrollItIntoView();\n }\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('navigate', this._onPathChange, false);\n }\n disconnectedCallback() {\n this._menu = null;\n window.removeEventListener('navigate', this._onPathChange, false);\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'disabled':\n this._findAnchorAndScrollItIntoView();\n break;\n }\n }\n _findAnchorAndScrollItIntoView(path = window.location.pathname) {\n if (this.disabled) {\n return;\n }\n const menu = this._menu;\n if (Utils.isNull(menu)) {\n this.log(Logging.LogLevel.Warn, `Couldn't find a ${PacemMenuElement} ancestor for this ${PacemMenuCursorElement_1}.`);\n return;\n }\n // 1. try to find a matching PacemAnchorElement\n const anchors = menu.querySelectorAll(P + '-a');\n let tget = null;\n for (let j = 0; j < anchors.length; j++) {\n const a = anchors.item(j);\n const router = a.router;\n let href = Utils.isNull(router)\n ? a.href\n : /* build fully formatted href, it might contain placeholders */ Utils.URIs.format(a.href, router.state);\n if (href === path) {\n tget = a;\n break;\n }\n }\n if (Utils.isNull(tget)) {\n // 2. try with real HTMLAnchorElement\n tget = menu.querySelector(`a[href='${path}']`);\n }\n // finally, scroll if any matching anchor was found\n if (!Utils.isNull(tget)) {\n tget.scrollIntoView({ behavior: 'smooth' });\n }\n }\n};\nPacemMenuCursorElement = PacemMenuCursorElement_1 = __decorate([\n CustomElement({\n tagName: P + '-menu-cursor'\n })\n], PacemMenuCursorElement);\nexport { PacemMenuCursorElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, Utils, CustomElement, Watch, ViewChild, PropertyConverters, Components, Defaults, Debounce } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Renders pagination buttons (first/previous/numbers/next/last, or a numeric-only strip) for a paged collection. */\nlet PacemPagerElement = class PacemPagerElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'index':\n case 'total':\n case 'pages':\n case 'size':\n case 'mode':\n this._databind();\n break;\n }\n }\n _databind() {\n const repeater = this._repeater;\n if (Utils.isNull(repeater))\n return;\n //\n var datasource = [];\n const size = this.size ?? 10, pages = this.pages ?? 5, total = this.total ?? 0, index = this.index ?? 0, mode = this.mode ?? 'standard';\n if (total > 0) {\n let totpages = Math.ceil(total / size);\n let pageindex = Math.floor(index / size);\n let startpageindex = Math.max(0, Math.ceil(pageindex - pages / 2));\n let endpageindex = Math.min(totpages - 1, startpageindex + pages - 1);\n while (startpageindex > 0 && (1 + endpageindex - startpageindex) < pages) {\n startpageindex--;\n }\n if (mode === 'numeric-only') {\n if (startpageindex > 0) {\n datasource.push({ caption: (1).toLocaleString(Utils.lang(this)), index: 0, /*first: true,*/ disabled: !( /*start*/pageindex > 0) });\n }\n }\n else {\n // |<\n datasource.push({ caption: '«', index: 0, first: true, disabled: !( /*start*/pageindex > 0) });\n // <\n datasource.push({ caption: '<', index: size * (pageindex - 1), previous: true, disabled: !(pageindex > 0) });\n }\n // ...\n if (startpageindex > 0 && mode !== 'numeric-only' || startpageindex > 1 && mode === 'numeric-only') {\n datasource.push({ caption: '…', index: size * (startpageindex - 1) });\n }\n // #\n for (let j = startpageindex; j <= endpageindex; j++) {\n datasource.push({ caption: (j + 1).toLocaleString(Utils.lang(this)), index: j * size });\n }\n // ...\n if (endpageindex < (totpages - 1) && mode !== 'numeric-only' || endpageindex < (totpages - 2) && mode === 'numeric-only') {\n datasource.push({ caption: '…', index: size * (endpageindex + 1) });\n }\n if (mode === 'numeric-only') {\n if (endpageindex < (totpages - 1)) {\n datasource.push({ caption: totpages.toLocaleString(Utils.lang(this)), index: size * (totpages - 1), /*last: true,*/ disabled: !( /*end*/pageindex < (totpages - 1)) });\n }\n }\n else {\n // >\n datasource.push({ caption: '>', index: size * (pageindex + 1), next: true, disabled: !(pageindex < (totpages - 1)) });\n // >|\n datasource.push({ caption: '»', index: size * (totpages - 1), last: true, disabled: !( /*end*/pageindex < (totpages - 1)) });\n }\n // \n this.index = pageindex * size;\n }\n repeater.datasource = datasource;\n }\n};\n__decorate([\n ViewChild(P + '-repeater')\n], PacemPagerElement.prototype, \"_repeater\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemPagerElement.prototype, \"index\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number, emit: false })\n], PacemPagerElement.prototype, \"total\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number, emit: false })\n], PacemPagerElement.prototype, \"pages\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number, emit: false })\n], PacemPagerElement.prototype, \"size\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String, emit: false })\n], PacemPagerElement.prototype, \"mode\", void 0);\n__decorate([\n Debounce(true)\n], PacemPagerElement.prototype, \"_databind\", null);\nPacemPagerElement = __decorate([\n CustomElement({\n tagName: P + '-pager', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater class=\"${PCSS}-pager\"><div class=\"${PCSS}-buttonset\">\r\n<div class=\"pager-buttons\">\r\n <template>\r\n <${P}-button class=\"${PCSS}-page button\" on-click=\":host.index = ^item.index\" disabled=\"{{ ^item.disabled }}\"\r\n css-class=\"{{ { 'currentpage': ^item.index === :host.index, 'firstpage buttonset-first': ^item.first, 'previouspage': ^item.previous, 'nextpage': ^item.next, 'lastpage buttonset-last': ^item.last } }}\"><${P}-span content=\"{{ ^item.caption }}\"></${P}-span></${P}-button>\r\n </template>\r\n</div>\r\n</div></${P}-repeater>`\n })\n], PacemPagerElement);\nexport { PacemPagerElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, Utils, CustomElement, Watch, ViewChild, PropertyConverters, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Declares a single `<source>` candidate (srcset/media/type) for an ancestor `PacemPictureElement`. */\nlet PacemPictureSourceElement = class PacemPictureSourceElement extends Components.PacemItemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n const picture = this.container;\n if (picture instanceof PacemPictureElement && ['srcset', 'media', 'type', 'disabled'].indexOf(name) >= 0) {\n picture.refreshSources();\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemPictureSourceElement.prototype, \"srcset\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemPictureSourceElement.prototype, \"media\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemPictureSourceElement.prototype, \"type\", void 0);\nPacemPictureSourceElement = __decorate([\n CustomElement({\n tagName: P + '-picture-source'\n })\n], PacemPictureSourceElement);\nexport { PacemPictureSourceElement };\n/** Responsive `<picture>` wrapper that builds its `<source>` elements from child `PacemPictureSourceElement` items. */\nlet PacemPictureElement = class PacemPictureElement extends Components.PacemItemsContainerElement {\n constructor() {\n super('img', { 'label': 'picture' });\n this._updateCurrentSrcHandler = (evt) => {\n this.currentSrc = this._img.currentSrc;\n };\n }\n validate(item) {\n return item instanceof PacemPictureSourceElement;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'src':\n this._setSource();\n break;\n case 'items':\n this._setSources();\n break;\n case 'tooltip':\n this._setAltText();\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._img.addEventListener('load', this._updateCurrentSrcHandler, false);\n this._setSource();\n this._setAltText();\n this._setSources();\n }\n disconnectedCallback() {\n const img = this._img;\n if (!Utils.isNull(img)) {\n img.removeEventListener('load', this._updateCurrentSrcHandler, false);\n }\n super.disconnectedCallback();\n }\n /** Rebuilds the `<source>` elements from the current child `PacemPictureSourceElement` items. */\n refreshSources() {\n this._setSources();\n }\n _setSources(items = this.items) {\n const picture = this._picture, img = this._img;\n if (!Utils.isNull(picture) && !Utils.isNull(img)) {\n const sources = picture.querySelectorAll('source'), itemCount = items?.length ?? 0;\n // populate\n for (let i = 0; i < itemCount; i++) {\n const item = this.items[i];\n let source;\n if (sources.length <= i) {\n source = document.createElement('source');\n source.setAttribute('part', 'source');\n picture.insertBefore(source, img);\n }\n else {\n source = sources.item(i);\n }\n if (item.disabled || Utils.isNullOrEmpty(item.srcset)) {\n source.removeAttribute('srcset');\n }\n else {\n source.srcset = item.srcset;\n }\n if (Utils.isNullOrEmpty(item.media)) {\n source.removeAttribute('media');\n }\n else {\n source.media = item.media;\n }\n if (Utils.isNullOrEmpty(item.type)) {\n source.removeAttribute('type');\n }\n else {\n source.type = item.type;\n }\n }\n // cleanup\n for (let i = sources.length - 1; i >= itemCount; i--) {\n let source = sources.item(i);\n source.remove();\n }\n }\n }\n _setSource(src = this.src) {\n const img = this._img;\n if (!Utils.isNull(img)) {\n if (Utils.isNullOrEmpty(src)) {\n img.removeAttribute('src');\n }\n else {\n img.src = src;\n }\n }\n }\n _setAltText(tip = this.tooltip) {\n const img = this._img;\n if (!Utils.isNull(img)) {\n if (Utils.isNullOrEmpty(tip)) {\n img.alt = this.aria.attributes.toObject()['label'];\n }\n else {\n img.alt = tip;\n }\n }\n }\n};\n__decorate([\n ViewChild('picture')\n], PacemPictureElement.prototype, \"_picture\", void 0);\n__decorate([\n ViewChild('img')\n], PacemPictureElement.prototype, \"_img\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemPictureElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemPictureElement.prototype, \"currentSrc\", void 0);\nPacemPictureElement = __decorate([\n CustomElement({\n tagName: P + '-picture', shadow: true,\n template: `<picture part=\"picture\"><img loading=\"lazy\" part=\"img\" /></picture><slot></slot>`\n })\n], PacemPictureElement);\nexport { PacemPictureElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, Utils, CustomElement, Watch, ViewChild, PropertyConverters, Components, Defaults } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Horizontal progress bar with an optional textual caption. */\nlet PacemProgressbarElement = class PacemProgressbarElement extends Components.PacemElement {\n constructor() {\n super('progressbar', { 'valuemin': '0%', 'valuemax': '100%', 'valuenow': '0%' });\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'percentage':\n this._bar.style.transform = `translateX(${(-100 + (val || 0))}%)`;\n this._glow.style.transform = `scaleX(${((val || 0) * .01)})`;\n let perc = Utils.leftPad(Math.floor(val), 2, '0') + '%';\n this.aria.attributes.set('valuenow', perc);\n if (Utils.isNullOrEmpty(this.caption)) {\n this.aria.attributes.set('valuetext', this._caption.textContent = perc);\n }\n break;\n case 'caption':\n this.aria.attributes.set('valuetext', this._caption.textContent = val);\n break;\n }\n }\n};\n__decorate([\n ViewChild('.progressbar-track', true, false)\n], PacemProgressbarElement.prototype, \"_face\", void 0);\n__decorate([\n ViewChild('.progressbar-bar', false, true)\n], PacemProgressbarElement.prototype, \"_bar\", void 0);\n__decorate([\n ViewChild('.progressbar-glow')\n], PacemProgressbarElement.prototype, \"_glow\", void 0);\n__decorate([\n ViewChild('.progressbar-caption')\n], PacemProgressbarElement.prototype, \"_caption\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemProgressbarElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemProgressbarElement.prototype, \"percentage\", void 0);\nPacemProgressbarElement = __decorate([\n CustomElement({\n tagName: P + '-progressbar', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"progressbar-glow\"></div>\r\n <div class=\"progressbar-track\"><div class=\"progressbar-bar\"></div></div>\r\n <label class=\"progressbar-caption\"></label>`\n })\n], PacemProgressbarElement);\nexport { PacemProgressbarElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, Utils, CustomElement, Watch, ViewChild, PropertyConverters, Components, CustomElementUtils } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Collapsible off-canvas drawer/sidebar, optionally synchronized with the enclosing shell's CSS classes. */\nlet PacemSidebarElement = class PacemSidebarElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n /** Gets or sets whether the sidebar is open. */\n this.open = false;\n /** Gets or sets whether the open/close state toggles CSS classes on the ancestor shell. */\n this.synchronizeShell = true;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'open':\n case 'synchronizeShell':\n this._sync();\n break;\n }\n }\n disconnectedCallback() {\n this._sync(false);\n super.disconnectedCallback();\n }\n _sync(val = this.open) {\n const shell = this.#shell;\n if (this.synchronizeShell) {\n Utils.addClass(this, 'sidebar-sync');\n Utils.addClass(shell, PCSS + (val === true ? '-sidebar-open' : '-sidebar-close'));\n Utils.removeClass(shell, PCSS + (val === true ? '-sidebar-close' : '-sidebar-open'));\n }\n else {\n Utils.removeClass(this, 'sidebar-sync');\n Utils.removeClass(shell, PCSS + '-sidebar-close ' + PCSS + '-sidebar-open');\n }\n }\n #shell;\n connectedCallback() {\n super.connectedCallback();\n this.#shell = CustomElementUtils.findAncestorShell(this);\n }\n};\n__decorate([\n ViewChild('.sidebar-drawer', true)\n], PacemSidebarElement.prototype, \"_drawer\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemSidebarElement.prototype, \"open\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSidebarElement.prototype, \"synchronizeShell\", void 0);\nPacemSidebarElement = __decorate([\n CustomElement({\n tagName: P + '-sidebar', template: `<${P}-panel class=\"sidebar-drawer\" part=\"drawer\" css-part=\"{{ { 'open': :host.open } }}\" css-class=\"{{ {'open': :host.open } }}\">\r\n <slot></slot>\r\n</${P}-panel>`,\n shadow: true\n })\n], PacemSidebarElement);\nexport { PacemSidebarElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Single slide item hosted within a `PacemSlideshowElement`. */\nlet PacemSlideElement = class PacemSlideElement extends Components.PacemIterableElement {\n};\nPacemSlideElement = __decorate([\n CustomElement({\n tagName: P + '-slide'\n })\n], PacemSlideElement);\nexport { PacemSlideElement };\n/** Iterates over `PacemSlideElement` children, exposing them as a navigable slideshow. */\nlet PacemSlideshowElement = class PacemSlideshowElement extends Components.PacemIterativeElement {\n validate(item) {\n return item instanceof PacemSlideElement;\n }\n};\nPacemSlideshowElement = __decorate([\n CustomElement({\n tagName: P + '-slideshow'\n })\n], PacemSlideshowElement);\nexport { PacemSlideshowElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElementUtils, CustomElement, Watch, PropertyConverters, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI.Social {\n/** Embeds a tweet, given its id, via Twitter's `widgets.js`. */\nlet PacemTweetEmbedElement = class PacemTweetEmbedElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._scriptsLoaded = false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'tweetid' && this._scriptsLoaded)\n this._render();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n CustomElementUtils.importjs('https://platform.twitter.com/widgets.js').then(() => {\n this._scriptsLoaded = true;\n this._render();\n });\n }\n _render() {\n if (this.tweetid && this._scriptsLoaded) {\n twttr.ready(tw => tw.widgets.createTweet(this.tweetid, this));\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTweetEmbedElement.prototype, \"tweetid\", void 0);\nPacemTweetEmbedElement = __decorate([\n CustomElement({ tagName: P + '-tweetembed' })\n], PacemTweetEmbedElement);\nexport { PacemTweetEmbedElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElementUtils, CustomElement, Watch, PropertyConverters, PacemEventTarget, Components, Utils, Logging } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Determines how a `PacemStickyHeaderElement` behaves once the scroll offset passes its `threshold`. */\nexport var StickyHeaderVisibility;\n(function (StickyHeaderVisibility) {\n /** Stays pinned/visible once past the threshold. */\n StickyHeaderVisibility[\"Persistent\"] = \"persistent\";\n /** Hides while scrolling down and reappears while scrolling up. */\n StickyHeaderVisibility[\"QuickReturn\"] = \"quickreturn\";\n})(StickyHeaderVisibility || (StickyHeaderVisibility = {}));\n/** Header that reacts to page scroll, either staying pinned to the top of the shell or hiding/showing on scroll direction. */\nlet PacemStickyHeaderElement = class PacemStickyHeaderElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.#previousOffset = { left: 0, top: 0 };\n this._scrollHandler = (evt) => {\n this.offset = evt.detail;\n };\n }\n #scroller;\n #previousOffset;\n #id;\n #shell;\n _ensureScrollAwareElement() {\n if (Utils.isNull(this.#scroller)) {\n const scroller = this.#scroller = new Components.PacemScrollAwareElement();\n this.log(Logging.LogLevel.Debug, 'creating scroll aware ' + this.#id);\n const shell = this.#shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(scroller);\n scroller.dataset[\"target\"] = this.#id;\n scroller.addEventListener(Components.ScrollEventName, this._scrollHandler, false);\n }\n this.#scroller.disabled = this.disabled;\n }\n _manageOffsetChange(offset = this.offset) {\n if (this.disabled) {\n return;\n }\n const visibility = this.visibility || StickyHeaderVisibility.Persistent, lastTop = this.#previousOffset.top, top = offset.top, threshold = this.threshold || 0, shell = this.#shell;\n if (lastTop <= threshold && top > threshold) {\n Utils.removeClass(shell, 'sticky-header-top');\n Utils.addClass(shell, 'sticky-header-scroll');\n // get into wavy behavior and aspect\n if (visibility === StickyHeaderVisibility.QuickReturn) {\n Utils.addClass(shell, 'sticky-header-fade');\n this.visible = false;\n }\n }\n else if (lastTop > threshold && top <= threshold) {\n // back to steady form\n Utils.removeClass(shell, 'sticky-header-fade');\n Utils.removeClass(shell, 'sticky-header-scroll');\n Utils.addClass(shell, 'sticky-header-top');\n }\n else if (lastTop > threshold && top > threshold && lastTop > top) {\n // scrolling up, show\n this.visible = true;\n Utils.removeClass(shell, 'sticky-header-fade');\n }\n else if (lastTop > threshold && top > threshold && lastTop < top && visibility == StickyHeaderVisibility.QuickReturn) {\n // keep scrolling down with quick return, hide\n Utils.addClass(shell, 'sticky-header-fade');\n }\n this.#previousOffset = offset;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'offset':\n this._manageOffsetChange(val);\n break;\n case 'disabled':\n this._ensureScrollAwareElement();\n break;\n }\n }\n connectedCallback() {\n super.connectedCallback();\n this.#id = this.id || 'sticky-' + Utils.uniqueCode();\n this._ensureScrollAwareElement();\n }\n disconnectedCallback() {\n const scroller = this.#scroller, shell = this.#shell;\n if (!Utils.isNull(scroller)) {\n this.log(Logging.LogLevel.Debug, 'disposing scroll aware ' + this.#id);\n scroller.removeEventListener(Components.ScrollEventName, this._scrollHandler, false);\n scroller.remove();\n this.#scroller = undefined;\n Utils.removeClass(shell, 'sticky-header-fade');\n Utils.removeClass(shell, 'sticky-header-top');\n Utils.removeClass(shell, 'sticky-header-scroll');\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Number, emit: false })\n], PacemStickyHeaderElement.prototype, \"threshold\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Point })\n], PacemStickyHeaderElement.prototype, \"offset\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemStickyHeaderElement.prototype, \"visible\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String, emit: false })\n], PacemStickyHeaderElement.prototype, \"visibility\", void 0);\nPacemStickyHeaderElement = __decorate([\n CustomElement({ tagName: P + '-sticky-header' })\n], PacemStickyHeaderElement);\nexport { PacemStickyHeaderElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, ViewChild, PropertyConverters, Components, Utils, PropertyChangeEvent, Animations } from '@pacem/pacem-core';\nimport { AdapterOrientation } from './adapter';\n//namespace Pacem.Components.UI {\nconst PACEM_TAB_FOCUS_CSS = 'tab-focus';\nconst StringOrNodePropertyConverter = {\n convert: (attr, e) => {\n return attr.startsWith('#') ? PropertyConverters.Element.convert(attr, e) : PropertyConverters.String.convert(attr, e);\n },\n convertBack: (prop, e) => {\n return (prop instanceof Node) ? PropertyConverters.Element.convertBack(prop, e) : PropertyConverters.String.convertBack(prop, e);\n },\n retryConversionWhenReady: true\n};\n/** Single tab item, pairing a `label` with its content, hosted within a `PacemTabsElement`. */\nlet PacemTabElement = class PacemTabElement extends Components.PacemIterableElement {\n constructor() {\n super('tab');\n this._slotChangeHandler = (_) => {\n const old = this.#content;\n const val = this.#content = this.content;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'content', currentValue: val, oldValue: old }));\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._slotLabel.addEventListener('slotchange', this._slotChangeHandler, false);\n }\n disconnectedCallback() {\n const lbl = this._slotLabel;\n if (!Utils.isNull(lbl)) {\n lbl.removeEventListener('slotchange', this._slotChangeHandler, false);\n }\n super.disconnectedCallback();\n }\n #content;\n /** @readonly Gets the nodes assigned to the `label` slot. */\n get content() {\n return this.querySelectorAll('*[slot=label]');\n }\n};\n__decorate([\n ViewChild('slot[name=label]')\n], PacemTabElement.prototype, \"_slotLabel\", void 0);\n__decorate([\n Watch({ converter: StringOrNodePropertyConverter })\n], PacemTabElement.prototype, \"label\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTabElement.prototype, \"key\", void 0);\nPacemTabElement = __decorate([\n CustomElement({\n tagName: P + '-tab', shadow: true, template: `<slot name=\"label\" part=\"label\"></slot><slot></slot>`\n })\n], PacemTabElement);\nexport { PacemTabElement };\n/** Iterates over `PacemTabElement` children, rendering a tab strip (via an adapter) and animating the transition between the active tab's content. */\nlet PacemTabsElement = class PacemTabsElement extends Components.PacemIterativeElement {\n constructor(_tweener = new Animations.TweenService()) {\n super(\"tablist\");\n this._tweener = _tweener;\n }\n _labelCallback(item, index) {\n const content = item.content;\n if (content.length > 0) {\n let assembled = '';\n content.forEach((node) => {\n assembled += node.outerHTML;\n });\n return assembled;\n }\n if (item.label instanceof Node) {\n return item.label;\n }\n return `<span class=\"${(item.key || 'tab')}\">${item.label}</span>`;\n }\n _syncOrientation(val = this.orientation) {\n if (!Utils.isNull(this._defaultTabAdapter)) {\n this._defaultTabAdapter.orientation = val;\n }\n if (!Utils.isNull(this._tabs)) {\n const fn = val === AdapterOrientation.Vertical ? Utils.addClass : Utils.removeClass;\n fn(this._tabs, 'tabs-vertical');\n }\n }\n _syncVisibility(val = this.index, old = -1) {\n const timeout = 500;\n // lock height\n const container = this._container, height = container.clientHeight;\n const style = getComputedStyle(container), padding = style.boxSizing === 'border-box' ? 0 : parseInt(style.paddingTop) + parseInt(style.paddingBottom);\n container.style.height = (height - padding) + 'px';\n let ndx = 0;\n for (let tab of this.items || []) {\n if (ndx === val) {\n Utils.addClass(tab, 'tab-in');\n requestAnimationFrame(() => {\n // wait for visibility digestion\n Utils.addClass(tab, PACEM_TAB_FOCUS_CSS);\n Utils.removeClass(tab, 'tab-in');\n Utils.addAnimationEndCallback(tab, (t) => {\n Utils.removeClass(t, 'tab-previous tab-next');\n const tgetH = Utils.offset(t).height /* + padding*/;\n this._tweener.run(parseInt(container.style.height), tgetH, 100, 0, Animations.Easings.sineOut, (_, v) => {\n container.style.height = Math.round(v) + 'px';\n })\n .then(_ => {\n // unlock height\n container.style.height = '';\n });\n }, timeout);\n });\n tab.aria.attributes.set('selected', 'true');\n }\n else {\n Utils.removeClass(tab, 'tab-previous tab-next');\n Utils.addClass(tab, ndx < val ? 'tab-previous' : 'tab-next');\n if (ndx === old) {\n Utils.addClass(tab, 'tab-out');\n Utils.removeClass(tab, PACEM_TAB_FOCUS_CSS);\n Utils.addAnimationEndCallback(tab, (t) => {\n Utils.removeClass(t, 'tab-out');\n }, timeout);\n tab.aria.attributes.set('selected', 'false');\n }\n }\n ndx++;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n //this._defaultTabAdapter.labelCallback = this._labelCallback;\n if (Utils.isNull(this.adapter)) {\n this._syncOrientation();\n this._syncVisibility();\n this.adapter = this._defaultTabAdapter;\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'adapter':\n if (Utils.isNull(val)) {\n this.adapter = this._defaultTabAdapter;\n }\n this._isUsingDefaultTabAdapter = this.adapter === this._defaultTabAdapter;\n break;\n case 'index':\n this._syncVisibility(val, old);\n break;\n case 'orientation':\n this._syncOrientation(val);\n break;\n }\n }\n validate(item) {\n return item instanceof PacemTabElement;\n }\n};\n__decorate([\n ViewChild(P + '-adapter')\n], PacemTabsElement.prototype, \"_defaultTabAdapter\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-tabs')\n], PacemTabsElement.prototype, \"_tabs\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-tabs-content')\n], PacemTabsElement.prototype, \"_container\", void 0);\n__decorate([\n Watch()\n], PacemTabsElement.prototype, \"_isUsingDefaultTabAdapter\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTabsElement.prototype, \"orientation\", void 0);\nPacemTabsElement = __decorate([\n CustomElement({\n tagName: P + '-tabs', shadow: false,\n template: `<div class=\"${PCSS}-tabs\">\r\n <${P}-adapter class=\"${PCSS}-tabs-adapter\" swipe-enabled=\"false\" hide=\"{{ !:host._isUsingDefaultTabAdapter }}\" label-callback=\"{{ :host._labelCallback }}\"></${P}-adapter>\r\n <div class=\"${PCSS}-tabs-content\">\r\n <${P}-content></${P}-content>\r\n </div>\r\n</div>`\n })\n], PacemTabsElement);\nexport { PacemTabsElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, ViewChild, Components, Utils } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Displays scrolling/ticking content, animating the swap whenever its `content` changes. */\nlet PacemTickerElement = class PacemTickerElement extends Components.PacemSafeContentElement {\n constructor() {\n super(...arguments);\n this._contentChangeHandler = (evt) => {\n this._incoming.replaceChildren(...this.#newContent);\n Utils.addClass(this, 'ticking');\n Utils.addAnimationEndCallback(this._incoming, element => {\n Utils.removeClass(this, 'ticking');\n // swap content\n this._outgoing.replaceChildren(...this.#newContent);\n //this.#newContent = null;\n });\n };\n }\n #newContent;\n _tickContent(content = this.content) {\n if (typeof content === 'number') {\n content = content.toLocaleString();\n }\n if (typeof content === 'string') {\n // (sanitizing a string parses it: a fragment comes back)\n const safeContent = this.sanitize(content);\n this.#newContent = typeof safeContent === 'string'\n ? this._buildMarkupNode(safeContent)\n : Array.from(safeContent.childNodes);\n }\n else if (content instanceof Node) {\n const safeContent = this.sanitize(content);\n this.replaceChildren(...(this.#newContent = [safeContent]));\n }\n else {\n const safeContent = content.map(a => this.sanitize(a));\n this.replaceChildren(...(this.#newContent = safeContent));\n }\n }\n _buildMarkupNode(html) {\n const tmpl = document.createElement('template');\n tmpl.innerHTML = html;\n return Array.from(tmpl.content.childNodes);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'content' && !first) {\n this._tickContent(val);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._slot.addEventListener('slotchange', this._contentChangeHandler, false);\n const content = this.content ?? this._slot.assignedNodes();\n this._tickContent(content);\n }\n disconnectedCallback() {\n const slot = this._slot;\n if (!Utils.isNull(slot)) {\n slot.removeEventListener('slotchange', this._contentChangeHandler);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild('slot')\n], PacemTickerElement.prototype, \"_slot\", void 0);\n__decorate([\n ViewChild('div[part=ticker-outgoing]')\n], PacemTickerElement.prototype, \"_outgoing\", void 0);\n__decorate([\n ViewChild('div[part=ticker-incoming]')\n], PacemTickerElement.prototype, \"_incoming\", void 0);\nPacemTickerElement = __decorate([\n CustomElement({ tagName: P + '-ticker', shadow: true, template: `<div part=\"ticker-outgoing\"></div><div part=\"ticker-incoming\"></div><slot hidden></slot>` })\n], PacemTickerElement);\nexport { PacemTickerElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemToastElement_1;\nimport { P, PCSS, CustomElement, Watch, Components, Utils, PropertyConverters, CustomElementUtils, Transformer } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\nconst PACEM_TOAST_POPS = \"pacem:toast:pops\";\n/** Dismissible toast/snackbar notification, with optional autohide. */\nlet PacemToastElement = PacemToastElement_1 = class PacemToastElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n /** Gets or sets whether the toast automatically hides itself after `timeout` milliseconds. */\n this.autohide = true;\n /** Gets or sets the autohide delay, in milliseconds. */\n this.timeout = 3000;\n this._doHide = (evt) => {\n window.clearTimeout(this._handle);\n this.show = false;\n };\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('click', this._doHide, false);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'show') {\n if (val !== true) {\n Utils.removeClass(this, 'toast-show');\n Utils.addClass(this, 'toast-hide');\n this.dispatchEvent(new CustomEvent('close'));\n Utils.waitForAnimationEnd(this, 1000).then(() => {\n Utils.removeClass(this, 'toast-hide');\n });\n }\n else {\n let order = CustomElementUtils.getAttachedPropertyValue(PacemToastElement_1, PACEM_TOAST_POPS, 0) - 1;\n CustomElementUtils.setAttachedPropertyValue(PacemToastElement_1, PACEM_TOAST_POPS, order);\n this.style.order = '' + order;\n Utils.addClass(this, 'toast-show');\n this._show();\n }\n }\n }\n disconnectedCallback() {\n this.removeEventListener('click', this._doHide, false);\n super.disconnectedCallback();\n }\n _show() {\n window.clearTimeout(this._handle);\n if (this.disabled) {\n return;\n }\n if (this.autohide) {\n this._handle = window.setTimeout(() => { this.show = false; }, this.timeout);\n }\n }\n /** Shows the toast, (re)starting the autohide timer if applicable. */\n popup() {\n if (this.show) {\n this._show();\n }\n else {\n this.show = true;\n }\n }\n /**\n * Opinionated shortcut/utility for toast spinning.\n * @param toaster Toast container\n * @param level Message criticity level\n * @param message The message\n * @param options Further options object\n */\n static toast(toaster, level, message, options) {\n var toast = new PacemToastElement_1();\n if (!Utils.isNullOrEmpty(options?.cssClass)) {\n const cssClass = Utils.isArray(options.cssClass) ? options.cssClass.join(' ') : options.cssClass;\n Utils.addClass(toast, cssClass);\n }\n else {\n toast.className = 'toast-' + level;\n }\n if (!Utils.isNull(options?.autohide)) {\n toast.autohide = options.autohide;\n }\n if (options?.timeout > 0) {\n toast.timeout = options.timeout;\n }\n // icon\n const icon = document.createElement('i');\n icon.className = PCSS + '-icon text-bigger-steady ' + PCSS + '-margin margin-right-1 flex-auto';\n var ligature = 'info';\n switch (level) {\n case 'danger':\n case 'error':\n ligature = 'error';\n break;\n case 'warning':\n ligature = 'warning';\n break;\n case 'success':\n ligature = 'check_circle';\n break;\n }\n icon.textContent = ligature;\n const container = document.createElement('div');\n Utils.addClass(container, 'display-flex flex-stretch flex-start flex-nowrap');\n container.appendChild(icon);\n // caption\n const caption = document.createElement('span');\n Utils.addClass(caption, 'text-small text-pre');\n if (typeof message === 'string') {\n caption.innerHTML = message;\n }\n else {\n caption.appendChild(message);\n }\n container.appendChild(caption);\n toast.appendChild(container);\n toaster.appendChild(toast);\n // promise\n return new Promise((resolve, _) => {\n window.setTimeout(() => {\n toast.popup();\n }, // needs some time to digest\n // state and transition\n 100);\n const callback = () => {\n toast.removeEventListener('close', callback, false);\n resolve();\n Utils.waitForAnimationEnd(toast, 1000).then(_ => {\n toast.remove();\n });\n };\n toast.addEventListener('close', callback, false);\n });\n }\n /**\n * Like `toast`, but renders the message inside a filled/bordered container for extra emphasis.\n * @param toaster Toast container\n * @param level Message criticity level\n * @param message The message\n * @param options Further options object\n */\n static toast2(toaster, level, message, options) {\n let cssClass = options?.cssClass;\n let cssArray = ['fill-' + level + '-container', 'fill-glass', 'border-solid', 'border-size--2', 'border-round', 'border-radius--6'];\n if (!Utils.isNullOrEmpty(cssClass)) {\n if (Utils.isArray(cssClass)) {\n Array.prototype.push.apply(cssArray, cssClass);\n }\n else {\n Array.prototype.push.apply(cssArray, cssClass.split(' '));\n }\n }\n return PacemToastElement_1.toast(toaster, level, message, Utils.extend({}, options ?? {}, { cssClass: cssArray }));\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemToastElement.prototype, \"autohide\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemToastElement.prototype, \"timeout\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemToastElement.prototype, \"show\", void 0);\n__decorate([\n Transformer(\"poptoast\")\n], PacemToastElement, \"toast\", null);\n__decorate([\n Transformer(\"poptoastcontainer\")\n], PacemToastElement, \"toast2\", null);\nPacemToastElement = PacemToastElement_1 = __decorate([\n CustomElement({\n tagName: P + '-toast',\n modifiers: ['clickable']\n })\n], PacemToastElement);\nexport { PacemToastElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, ViewChild, Components, Utils, PropertyConverters, Defaults, Animations, Debounce, avoidHandler } from '@pacem/pacem-core';\n//namespace Components.UI {\n/** Table-of-contents that lists the headings/elements matched by `selector`, highlighting and scrolling to the currently focused one. */\nlet PacemTocElement = class PacemTocElement extends Components.PacemElement {\n constructor(_tweener = new Animations.TweenService()) {\n super();\n this._tweener = _tweener;\n this._items = [];\n this._scrollToSelf = (evt) => {\n this._scrollTo('#' + evt.target.id);\n };\n this._hashChange = (evt) => {\n evt.preventDefault();\n this._scrollTo(window.location.hash, false);\n };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n // url\n switch (name) {\n case 'target':\n if (!Utils.isNull(this._observer))\n this._observe();\n break;\n case 'selector':\n this.refresh();\n break;\n }\n }\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('hashchange', this._hashChange, false);\n }\n disconnectedCallback() {\n window.removeEventListener('hashchange', this._hashChange, false);\n if (!Utils.isNull(this._observer))\n this._observer.disconnect();\n super.disconnectedCallback();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._observer = new MutationObserver((e) => { this.refresh(); });\n this._observe();\n }\n _onScroll(evt) {\n this._update(Utils.scrollTop);\n }\n _observe() {\n this._observer.observe(this.target || document.body, { subtree: true, childList: true });\n }\n _getTop(dom) {\n return Utils.offset(dom).top;\n }\n _scrollTo(selector, tween = true) {\n if (/^#[^&=]+$/.test(selector)) {\n const dom = !Utils.isNullOrEmpty(selector) && document.querySelector(selector), item = !Utils.isNull(dom) && this._items.find(i => i.dom === dom);\n if (item && !Utils.isNull(item.dom)) {\n const tget = this._getTop(item.dom) - (this.offset || 0);\n if (tween) {\n let from = Utils.scrollTop;\n window.location.hash = item.dom.id;\n this._tweener.run(from, tget, 500, 0, Animations.Easings.sineInOut, (t, v) => {\n window.scrollTo(0, v);\n });\n }\n else {\n window.scrollTo(0, tget);\n }\n }\n }\n }\n _startScrollTo(item, evt) {\n avoidHandler(evt);\n this._scrollTo(item.url);\n }\n _update(top) {\n // pick focused item (fallback: first item)\n const zero = top + (this.offset || 0);\n var current = this._items && this._items.length > 0 && this._items[0];\n for (var item of this._items) {\n if (Utils.offset(item.dom).top <= zero)\n current = item;\n else\n break;\n }\n // update css\n const datasource = [];\n for (var item of this._items) {\n if (Utils.isNullOrEmpty(item.dom.id)) {\n item.dom.id = item.dom.innerText.trim().replace(/[^a-zA-Z0-9]/g, '-').replace(/-*$/, '').replace(/^-*/, '').toLowerCase();\n }\n datasource.push({ focus: item === current, label: item.dom.innerText, url: '#' + item.dom.id });\n }\n if (!Utils.isNull(this._repeater))\n this._repeater.datasource = datasource;\n }\n /** DOM might change while interacting with the page, this method allows extemporary resets. */\n refresh() {\n // reset items\n for (let item of this._items) {\n item.dom.removeEventListener('click', this._scrollToSelf, false);\n Utils.removeClass(item.dom, PCSS + '-toc-item');\n }\n //\n const selector = this.selector;\n if (Utils.isNullOrEmpty(selector)) {\n this._repeater && (this._repeater.datasource = []);\n this.hasContent = false;\n return;\n }\n const items = (this.target || document).querySelectorAll(selector), elements = [];\n for (let j = 0; j < items.length; j++) {\n const dom = items.item(j);\n dom.addEventListener('click', this._scrollToSelf, false);\n Utils.addClass(dom, PCSS + '-toc-item');\n elements.push({ dom: dom, top: this._getTop(dom) });\n }\n // bootstrap TOC\n this._items = elements;\n this._update(Utils.scrollTop);\n this.hasContent = !Utils.isNullOrEmpty(elements);\n // initial state\n let initialTarget = window.location.hash;\n if (!Utils.isNullOrEmpty(initialTarget)) {\n // in case of hash\n setTimeout(() => {\n this._scrollTo(initialTarget, true);\n }, 1000);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTocElement.prototype, \"selector\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTocElement.prototype, \"offset\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemTocElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemTocElement.prototype, \"router\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemTocElement.prototype, \"hasContent\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemTocElement.prototype, \"_repeater\", void 0);\n__decorate([\n Debounce(100)\n], PacemTocElement.prototype, \"_onScroll\", null);\n__decorate([\n Debounce(250)\n /** DOM might change while interacting with the page, this method allows extemporary resets. */\n], PacemTocElement.prototype, \"refresh\", null);\nPacemTocElement = __decorate([\n CustomElement({\n tagName: P + '-toc', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-scroll-aware on-${Components.ScrollEventName}=\":host._onScroll($event)\" url=\"{{ :host.url }}\"></${P}-scroll-aware>\r\n<${P}-repeater><nav class=\"${PCSS}-toc\"><template>\r\n <${P}-a on-click=\":host._startScrollTo(^item, $event)\" router=\"{{ :host.router }}\" css-class=\"{{ {'toc-focus': ^item.focus} }}\" href=\"{{ ^item.url }}\"><${P}-text text=\"{{ ^item.label }}\"></${P}-text></${P}-a>\r\n</template></nav></${P}-repeater>`\n })\n], PacemTocElement);\nexport { PacemTocElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, ViewChild, Components, Utils, PropertyConverters, UI, Animations } from '@pacem/pacem-core';\nimport { Angle } from '@pacem/pacem-foundation';\n//namespace Pacem.Components.UI {\nconst TWO_PI = Math.PI * 2;\nfunction cartesian(cx, cy, r, theta) {\n return {\n x: cx + (r * Math.cos(theta)),\n y: cy + (r * Math.sin(theta))\n };\n}\n/** Circular dial/knob control for picking a numeric value between `min` and `max` by rotating a handle. */\nlet PacemTunerElement = class PacemTunerElement extends Components.PacemElement {\n constructor() {\n super();\n //#region INTERACTIVE\n /** Gets or sets the minimum selectable value. */\n this.min = 0.0;\n /** Gets or sets the maximum selectable value. */\n this.max = 100.0;\n this._rotateStartHandler = (evt) => {\n const angle = this.#angle = this._getAngle(evt);\n const r = this._rotate;\n r.minRotation = 0 - angle;\n r.maxRotation = TWO_PI - angle;\n this._setValue(angle);\n };\n this._rotateEndHandler = (evt) => {\n //this.#angle += evt.detail.rotation;\n };\n this._rotateHandler = (evt) => {\n evt.preventDefault();\n const angle = evt.detail.rotation + this.#angle;\n this._setValue(angle);\n };\n }\n #angle;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const rotate = this._rotate, tween = this._tween;\n rotate.addEventListener(UI.RotateEventType.Start, this._rotateStartHandler, false);\n rotate.addEventListener(UI.RotateEventType.Rotate, this._rotateHandler, false);\n rotate.addEventListener(UI.RotateEventType.End, this._rotateEndHandler, false);\n rotate.register(this._canvas);\n this._toggleRotate();\n //\n requestAnimationFrame(() => this._draw(this.min));\n //\n tween.easing = Animations.Easings.sineInOut;\n tween.delay = 500 + (Math.random() * 100 - 100);\n tween.start = this.value > this.min;\n }\n disconnectedCallback() {\n const rotate = this._rotate, canvas = this._canvas;\n if (!Utils.isNull(rotate)) {\n rotate.removeEventListener(UI.RotateEventType.Rotate, this._rotateHandler, false);\n if (!Utils.isNull(canvas)) {\n rotate.unregister(canvas);\n }\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'interactive':\n this._toggleRotate(val);\n if (!val)\n Utils.removeClass(this, 'tuner-interactive');\n else\n Utils.addClass(this, 'tuner-interactive');\n break;\n case 'round':\n if (Math.round(val) != val || val < 0)\n throw `${this.constructor.name}: round value must be an integer greater or equal to zero.`;\n break;\n default:\n // in any other case:\n this._draw();\n break;\n }\n }\n _toggleRotate(interactive = this.interactive) {\n const r = this._rotate;\n if (!Utils.isNull(r)) {\n r.disabled = !interactive;\n }\n }\n _angleToValue(angle) {\n const round = Math.pow(10, this.round || 0);\n const angleValue = this.min + angle * (this.max - this.min) / TWO_PI;\n return Math.round(round * angleValue) / round;\n }\n _valueToAngle(v = this.value ?? this.min) {\n return TWO_PI * (v - this.min) / (this.max - this.min);\n }\n _setValue(angle) {\n const value = this._angleToValue(angle).clamp(this.min, this.max);\n if (value != this.value) {\n this.value = value;\n this.dispatchEvent(new Event(\"change\"));\n }\n }\n /**\n * Returns the angle between the vertical line through 'center' and the line through 'center' and 'currentPosition'.\n * @param evt\n * @returns\n */\n _getAngle(evt) {\n const angle = {\n vertex: evt.detail.center,\n end: evt.detail.currentPosition,\n start: { x: evt.detail.center.x, y: evt.detail.center.y - 1 }\n };\n const alpha = Angle.value(angle);\n if (alpha > 0) {\n return TWO_PI - alpha;\n }\n else {\n return -alpha;\n }\n }\n //#endregion\n _draw(value = this.value) {\n if (this.disabled || Utils.isNull(this._rail)) {\n return;\n }\n value = (isNaN(value) ? this.min : value).clamp(this.min, this.max);\n const rail = this._rail;\n const counterRail = this._counterRail;\n const isMin = value === this.min, isMax = value === this.max;\n if (isMin || isMax) {\n const d = `M 50 50 m -50,0 a 50,50 0 1,1 100,0 a 50,50 0 1,1 -100,0`;\n rail.setAttribute('d', isMin ? '' : d);\n counterRail.setAttribute('d', isMax ? '' : d);\n }\n else {\n const mathPI2 = Math.PI * .5;\n // rail\n const from = cartesian(50, 50, 50, -mathPI2);\n const angle /* fraction of the round angle */ = this._valueToAngle(value);\n const to = cartesian(50, 50, 50, -mathPI2 + angle);\n const large = angle > Math.PI ? 1 : 0;\n const d = `M ${to.x} ${to.y} A 50 50 0 ${large} 0 ${from.x} ${from.y}`;\n rail.setAttribute('d', d);\n // counter rail\n const counterFrom = to;\n const counterTo = cartesian(50, 50, 50, 3 * mathPI2);\n const counterAngle /* fraction of the round angle */ = this._valueToAngle(this.max - value);\n const counterLarge = counterAngle > Math.PI ? 1 : 0;\n const counterD = `M ${counterTo.x} ${counterTo.y} A 50 50 0 ${counterLarge} 0 ${counterFrom.x} ${counterFrom.y}`;\n counterRail.setAttribute('d', counterD);\n }\n }\n};\n__decorate([\n ViewChild('svg')\n], PacemTunerElement.prototype, \"_canvas\", void 0);\n__decorate([\n ViewChild('path[part=rail]')\n], PacemTunerElement.prototype, \"_rail\", void 0);\n__decorate([\n ViewChild('path[part=complementary-rail]')\n], PacemTunerElement.prototype, \"_counterRail\", void 0);\n__decorate([\n ViewChild(P + '-tween')\n], PacemTunerElement.prototype, \"_tween\", void 0);\n__decorate([\n ViewChild(P + '-rotate')\n], PacemTunerElement.prototype, \"_rotate\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTunerElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTunerElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTunerElement.prototype, \"max\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemTunerElement.prototype, \"interactive\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTunerElement.prototype, \"round\", void 0);\nPacemTunerElement = __decorate([\n CustomElement({\n tagName: P + '-tuner', shadow: true,\n template: `<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"${PCSS}-tuner\" part=\"tuner\" viewBox=\"0 0 100 100\">\r\n <circle part=\"track\" cx=\"50\" cy=\"50\" r=\"50\" />\r\n <path part=\"rail\" />\r\n <path part=\"complementary-rail\" />\r\n </svg><div class=\"${PCSS}-content\" part=\"content\"><slot></slot></div>\r\n <${P}-rotate></${P}-rotate>\r\n<${P}-tween on-step=\":host._draw($event.detail.value)\" on-end=\"this.disabled = true\" duration=\"500\" to=\"{{ :host.value }}\" from=\"{{ :host.min }}\"></${P}-tween>`\n })\n], PacemTunerElement);\nexport { PacemTunerElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, PacemEventTarget, Utils } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Triggers the device's vibration hardware (via the Vibration API) with a configurable pattern. */\nlet PacemVibrateElement = class PacemVibrateElement extends PacemEventTarget {\n /** Triggers a vibration using the current `pattern`, if supported by the browser and not disabled. */\n vibrate() {\n if (this.disabled) {\n return;\n }\n const pattern = this.pattern;\n if (!Utils.isNullOrEmpty(pattern)) {\n if (typeof navigator.vibrate === 'function') {\n navigator.vibrate(pattern);\n }\n }\n }\n};\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => attr?.split(/[ ,]+/).map(i => parseInt(i)),\n convertBack: (prop) => prop?.join(' ')\n }\n })\n], PacemVibrateElement.prototype, \"pattern\", void 0);\nPacemVibrateElement = __decorate([\n CustomElement({ tagName: P + '-vibrate' })\n], PacemVibrateElement);\nexport { PacemVibrateElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, PacemEventTarget, Components, Utils, PropertyConverters, Logging, CustomElementUtils } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\nconst ANIM_TIMEOUT = 500;\nconst ElementOrStringPropertyConverter = {\n convert: (attr, element) => {\n try {\n return document.querySelector(attr) ?? (element.isConnected ? attr : null);\n }\n catch {\n return attr;\n }\n },\n convertBack: (prop) => (prop instanceof Element && prop.id) ? ('#' + prop.id) : prop,\n retryConversionWhenReady: true\n};\n/** Fetches and renders remote HTML (or a local `<template>`'s content) as its own inner content, dispatching `prerender`/`render` lifecycle events. */\nlet PacemViewElement = class PacemViewElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Bumped by every new content: a pending `render` dispatch from superseded content is dropped. */\n this.#renderVersion = 0;\n this._templateChangeHandler = (evt) => {\n const tmplProxy = evt.target;\n this._setTmpl(tmplProxy.target);\n };\n this._debounceDispatchHandler = (e) => {\n clearTimeout(this.#resizeHandle);\n this.#resizeHandle = setTimeout(() => {\n if (e) {\n const resizer = e.srcElement;\n resizer.removeEventListener(Components.ResizeEventName, this._debounceDispatchHandler);\n resizer.remove();\n }\n //\n this.dispatchEvent(new CustomEvent(\"render\"));\n }, 100 /* tenth of a second limit */);\n };\n }\n /** Bumped by every new content: a pending `render` dispatch from superseded content is dropped. */\n #renderVersion;\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n // url\n if (name === 'url' || name === 'disabled') {\n this._dispose(old);\n this._manage();\n }\n else if (name === 'fetching') {\n (val ? Utils.addClass : Utils.removeClass)(this, 'view-fetching');\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const url = this.url;\n if (this._isReference(url) && !this.disabled) {\n this._manageRef();\n }\n }\n _isReference(url) {\n return url instanceof HTMLElement || (typeof url === 'string' && url.trim().startsWith('#'));\n }\n _dispose(url) {\n if (url instanceof Components.PacemTemplateProxyElement) {\n url.removeEventListener('templatechange', this._templateChangeHandler);\n }\n }\n _manage() {\n if (this.disabled) {\n return;\n }\n const debounce = this.debounce || 0, url = this.url;\n ;\n if (this._isReference(url)) {\n // <template>-based\n clearTimeout(this._fetchHandle);\n this._fetchHandle = setTimeout((() => this._manageRef()), debounce);\n }\n else if (typeof url === 'string' && !Utils.isNullOrEmpty(url)) {\n // url-based\n this.fetching = true;\n clearTimeout(this._fetchHandle);\n this._fetchHandle = setTimeout((() => this._manageUrl(url)), debounce);\n }\n else /* might be a reset */ {\n this.innerHTML = '';\n }\n }\n _manageRef() {\n const url = this.url, tmpl = url instanceof HTMLElement ? url : document.querySelector('template' + url);\n if (tmpl instanceof Components.PacemTemplateProxyElement) {\n tmpl.addEventListener('templatechange', this._templateChangeHandler, false);\n this._setTmpl(tmpl.target);\n }\n else if (tmpl instanceof HTMLTemplateElement) {\n this._setTmpl(tmpl);\n }\n else if (!Utils.isNull(tmpl)) {\n this.log(Logging.LogLevel.Error, `Invalid '${tmpl.constructor.name}' element, HTMLTemplate expected.`);\n }\n else {\n this.log(Logging.LogLevel.Error, `Template element not found.`);\n }\n }\n _setTmpl(tmpl) {\n cancelAnimationFrame(this._renderHandle);\n this.#renderVersion++;\n // this way, `this._container.innerHTML = ''` instruction will eventually let the page \"scroll up\"...\n this.innerHTML = '';\n this._dispatchPrerender();\n this._renderHandle = requestAnimationFrame(() => {\n if (Utils.isNull(tmpl)) {\n this.log(Logging.LogLevel.Error, `Template element not found.`);\n return;\n }\n this.appendChild(tmpl.cloneNode(true).content);\n this._dispatchRender();\n });\n }\n #aborter;\n _manageUrl(url) {\n if (this.#aborter) {\n this.#aborter.abort();\n }\n const { signal } = this.#aborter = new AbortController();\n fetch(url, { credentials: 'same-origin', signal }).then(async (r) => {\n // inline function\n const manageYield = (r, htmlPromise) => {\n if ((r.status === 301 || r.status === 302) && this.followRedirects) {\n this._manageUrl(r.headers.get(\"Location\"));\n }\n else if (r.ok || this.renderErrors) {\n htmlPromise.then((html) => Utils.addAnimationEndCallback(this, () => this._manageResult(html), ANIM_TIMEOUT));\n }\n // fallback to empty content.\n else\n this._manageResult('');\n };\n const contentLength = +r.headers.get('Content-Length');\n if (contentLength > 0) {\n this.progress = 0;\n let received = 0;\n const chunks = [];\n // progress available\n const reader = r.body.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n this.progress = (received += value.length) / contentLength;\n chunks.push(value);\n }\n manageYield(r, new Promise((resolve, reject) => {\n try {\n let allChunks = new Uint8Array(received);\n let position = 0;\n for (let chunk of chunks) {\n allChunks.set(chunk, position);\n position += chunk.length;\n }\n const html = new TextDecoder(\"utf-8\").decode(allChunks);\n resolve(html);\n }\n catch (e) {\n reject(e);\n }\n }));\n }\n else {\n manageYield(r, r.text());\n }\n }, _ => {\n // do nothing on fail\n });\n }\n _manageResult(result) {\n // this way, `this._container.innerHTML = ''` instruction will eventually let the page \"scroll up\"...\n cancelAnimationFrame(this._renderHandle);\n const version = ++this.#renderVersion;\n this.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n this.innerHTML = '';\n this._dispatchPrerender();\n this._renderHandle = requestAnimationFrame(() => {\n this.innerHTML = result;\n this.fetching = false;\n this.progress = Number.NaN;\n // setting fetching to `false` triggers a css class change that could/should cause a css transition to happen\n // TODO: manage to switch to native in a near future (https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API or https://youtu.be/oDcb3fvtETs)\n Utils.addAnimationEndCallback(this, () => {\n if (version !== this.#renderVersion) {\n return;\n }\n this._dispatchRender();\n }, ANIM_TIMEOUT);\n });\n }\n #resizeHandle;\n _dispatchRender() {\n // the view might have been removed meanwhile (e.g. a nested view whose container got re-rendered):\n // no shell to host the resizer, nothing to notify.\n if (!this.isConnected) {\n return;\n }\n const resizer = new Components.PacemResizeElement();\n resizer.target = this;\n resizer.addEventListener(Components.ResizeEventName, this._debounceDispatchHandler);\n CustomElementUtils.findAncestorShell(this).appendChild(resizer);\n this._debounceDispatchHandler();\n }\n _dispatchPrerender() {\n this.dispatchEvent(new CustomEvent(\"prerender\"));\n }\n};\n__decorate([\n Watch({ reflectBack: true, converter: ElementOrStringPropertyConverter })\n], PacemViewElement.prototype, \"url\", void 0);\n__decorate([\n Watch()\n], PacemViewElement.prototype, \"fetching\", void 0);\n__decorate([\n Watch()\n], PacemViewElement.prototype, \"progress\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemViewElement.prototype, \"renderErrors\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemViewElement.prototype, \"followRedirects\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemViewElement.prototype, \"debounce\", void 0);\nPacemViewElement = __decorate([\n CustomElement({\n tagName: P + '-view'\n })\n], PacemViewElement);\nexport { PacemViewElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Components, UI, Utils, PropertyConverters, Defaults, CustomElementUtils, PropertyChangeEventName } from '@pacem/pacem-core';\nimport { AdapterPageButtonRefreshEventName } from './adapter';\n//namespace Pacem.Components.UI {\nconst HANDLE_CSS = 'window-title';\n/** Container that arranges `PacemWindowElement` children as draggable/resizable floating windows, or docks them one at a time via an adapter. */\nlet PacemWindowAreaElement = class PacemWindowAreaElement extends Components.PacemIterativeElement {\n constructor() {\n super(...arguments);\n this._zIndex = 1;\n this._startHandler = (evt) => {\n this._incrementZIndex(evt.detail.element);\n Utils.addClass(evt.detail.element, 'window-rescaling');\n };\n this._blurHandler = (evt) => {\n Utils.removeClass(evt.detail.element, 'window-rescaling');\n };\n this._focusHandler = (evt) => {\n this._incrementZIndex(evt.currentTarget);\n };\n this._itemPropertyChangeHandler = (evt) => {\n if (evt.detail.propertyName === 'floating' && evt.detail.currentValue === false) {\n const item = evt.currentTarget, ndx = this.items.indexOf(item);\n Utils.addClass(item, 'docking-in');\n this.adapter.select(ndx);\n Utils.addAnimationEndCallback(item, (e) => {\n Utils.removeClass(e, 'docking-in');\n }, 150);\n }\n };\n this._adapterPagerCallback = (evt) => {\n const index = evt.detail.index, item = this.items[index];\n evt.detail.hide = item.hide || item.floating;\n };\n }\n validate(item) {\n return item instanceof PacemWindowElement;\n }\n _incrementZIndex(target) {\n if (this._zIndex != parseInt(target.style.zIndex)) {\n target.style.zIndex = '' + (++this._zIndex);\n }\n }\n connectedCallback() {\n super.connectedCallback();\n let shell = CustomElementUtils.findAncestorShell(this);\n this._behaviors = [\n shell.appendChild(this._dragDrop = document.createElement(P + '-drag-drop')),\n shell.appendChild(this._rescale = document.createElement(P + '-rescale'))\n ];\n this._dragDrop.handleSelector = '.' + HANDLE_CSS;\n //this._dragDrop.addEventListener(DragDropEventType.Init, this._focusHandler, false);\n this._rescale.addEventListener(UI.RescaleEventType.Start, this._startHandler, false);\n this._rescale.addEventListener(UI.RescaleEventType.End, this._blurHandler, false);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n // adapter (reuse)\n if (Utils.isNull(this.adapter)) {\n const adapter = this.adapter = this.appendChild(document.createElement(P + '-adapter'));\n Utils.addClass(adapter, 'windows-adapter');\n adapter.labelCallback = (item, _) => {\n return item.caption;\n };\n adapter.swipeEnabled = false;\n adapter.deselectable = true;\n adapter.initialize(this);\n }\n this.adapter.addEventListener(AdapterPageButtonRefreshEventName, this._adapterPagerCallback, false);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this.adapter)) {\n this.adapter.removeEventListener(AdapterPageButtonRefreshEventName, this._adapterPagerCallback, false);\n this.adapter.remove();\n this.adapter = null;\n }\n //this._dragDrop.removeEventListener(DragDropEventType.Init, this._focusHandler, false);\n this._rescale.removeEventListener(UI.RescaleEventType.End, this._blurHandler, false);\n this._rescale.removeEventListener(UI.RescaleEventType.Start, this._startHandler, false);\n for (let b of this._behaviors) {\n b.remove();\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'index') {\n this._syncVisibility();\n }\n }\n /** Registers a window item, wiring drag/resize behaviors and focus tracking; returns whether it was newly added. */\n register(item) {\n const retval = super.register(item);\n if (retval) {\n item.addEventListener(PropertyChangeEventName, this._itemPropertyChangeHandler, false);\n item.addEventListener('mousedown', this._focusHandler, false);\n for (let b of this._behaviors) {\n const ndx = item.behaviors.indexOf(b);\n if (ndx === -1) {\n item.behaviors.push(b);\n }\n }\n }\n return retval;\n }\n /** Unregisters a window item, tearing down its drag/resize behaviors; returns whether it was found and removed. */\n unregister(item) {\n const retval = super.unregister(item);\n if (retval) {\n item.removeEventListener(PropertyChangeEventName, this._itemPropertyChangeHandler, false);\n item.removeEventListener('mousedown', this._focusHandler, false);\n for (let b of this._behaviors) {\n const ndx = item.behaviors.indexOf(b);\n if (ndx >= 0) {\n item.behaviors.splice(ndx, 1);\n }\n }\n }\n return retval;\n }\n _syncVisibility() {\n let ndx = 0;\n const items = this.items ?? [];\n for (let item of items) {\n if (ndx === this.index) {\n Utils.addClass(item, 'dock-open');\n }\n else {\n Utils.removeClass(item, 'dock-open');\n }\n ndx++;\n }\n }\n};\nPacemWindowAreaElement = __decorate([\n CustomElement({\n tagName: P + '-window-area'\n })\n], PacemWindowAreaElement);\nexport { PacemWindowAreaElement };\n/** Single draggable, resizable, and dockable window pane hosted within a `PacemWindowAreaElement`. */\nlet PacemWindowElement = class PacemWindowElement extends Components.PacemIterableElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'minimized' || name === 'floating') {\n this._syncLayout();\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._syncLayout();\n }\n _syncLayout() {\n (this.minimized ? Utils.addClass : Utils.removeClass).apply(this, [this, 'window-min']);\n (this.floating ? Utils.removeClass : Utils.addClass).apply(this, [this, 'window-dock']);\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemWindowElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemWindowElement.prototype, \"minimized\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemWindowElement.prototype, \"floating\", void 0);\nPacemWindowElement = __decorate([\n CustomElement({\n tagName: P + '-window', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${HANDLE_CSS}\">\r\n <${P}-text text=\"{{ :host.caption || 'Window' }}\"></${P}-text>\r\n</div>\r\n<div class=\"window-buttons ${PCSS}-buttonset\"><div class=\"buttonset-right\">\r\n <${P}-button class=\"button\" on-click=\":host.minimized = !:host.minimized\" icon-glyph=\"{{ :host.minimized ? 'maximize' : 'minimize' }}\" hide=\"{{ !:host.floating }}\"></${P}-button>\r\n <${P}-button class=\"button\" on-click=\":host.floating = !:host.floating\" css-class=\"{{ {'buttonset-first': !:host.floating} }}\" icon-glyph=\"{{ :host.floating? 'lock_open' : 'lock' }}\"></${P}-button>\r\n</div></div>\r\n<div class=\"window-content\"><${P}-content></${P}-content></div>`\n })\n], PacemWindowElement);\nexport { PacemWindowElement };\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import * as UI from './index-components-ui';\nexport { UI };\n", "export * from './adapter';\nexport * from './anchor';\nexport * from './balloon';\nexport * from './binder';\nexport * from './blade';\nexport * from './bottom-sheet';\nexport * from './button';\nexport * from './buttonset';\nexport * from './calendar';\nexport * from './collapse';\nexport * from './dialog-abstractions';\nexport * from './dialog';\nexport * from './divider';\nexport * from './icon';\nexport * from './image';\nexport * from './infinite-scroller';\nexport * from './iterative';\nexport * from './lightbox-abstractions';\nexport * from './lightbox';\nexport * from './loader';\nexport * from './markdown';\nexport * from './markdown-svc';\nexport * from './marquee';\nexport * from './media-query';\nexport * from './menu';\nexport * from './pager';\nexport * from './picture';\nexport * from './progressbar';\nexport * from './sidebar';\nexport * from './slideshow';\nexport * from './social-twitter';\nexport * from './sticky-header';\nexport * from './tabs';\nexport * from './ticker';\nexport * from './toast';\nexport * from './toc';\nexport * from './tuner';\nexport * from './types';\nexport * from './vibration';\nexport * from './view';\nexport * from './window';\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, Defaults, CustomElement, ViewChild, Watch, Utils, PropertyConverters, Debounce, avoidHandler, Throttle, CustomElementUtils } from '@pacem/pacem-core';\nimport { Components, UI } from '@pacem/pacem-core';\nconst { PacemElement, RepeaterItemCreateEventName, ItemRegisterEventName, ItemUnregisterEventName } = Components;\n//namespace Pacem.Components.UI {\n/** Orientation used by a {@link PacemAdapterElement} to interpret arrow-key navigation. */\nexport var AdapterOrientation;\n(function (AdapterOrientation) {\n AdapterOrientation[\"Vertical\"] = \"vertical\";\n AdapterOrientation[\"Horizontal\"] = \"horizontal\";\n})(AdapterOrientation || (AdapterOrientation = {}));\nexport const AdapterPageButtonRefreshEventName = 'pagerefresh';\n/** Event dispatched by {@link PacemAdapterElement} whenever a page/dashboard button needs to (re)compute its visible state or content. */\nexport class AdapterPageButtonRefreshEvent extends CustomEvent {\n constructor(args) {\n super(AdapterPageButtonRefreshEventName, { detail: args, bubbles: false, cancelable: false });\n }\n}\n/** Renders a dashboard of prev/next buttons and page indicators driving a {@link Components.PacemAdapter} (e.g. a `<pacem-slideshow>` master). */\nlet PacemAdapterElement = class PacemAdapterElement extends Components.PacemAdapter {\n constructor() {\n super(...arguments);\n this._itemCreatedHandler = (evt) => {\n const index = evt.detail.index;\n this._pageMap.set(index, evt.detail.dom[0].firstElementChild);\n this._fireAdapterPageRefreshCallback(index, evt.detail.item);\n };\n this._pageMap = new Map();\n /** Gets or sets whether the dashboard responds to user interaction (keyboard, click, swipe). */\n this.interactive = true;\n /** Gets or sets whether swipe gesture is enabled for navigation (also depends on the 'interactive' flag being set to 'true') */\n this.swipeEnabled = true;\n /** Gets or sets whether navigating past the last (or before the first) item wraps around. */\n this.loop = true;\n /** Gets or sets the callback computing a page button's caption for a given item/index (defaults to the 1-based index). */\n this.labelCallback = (item, index) => (index + 1).toString();\n this._itemRegisterHandler = (evt) => {\n let item = evt.detail;\n if (!Utils.isNull(this._swiper) && item instanceof PacemElement && item.behaviors.indexOf(this._swiper) == -1)\n item.behaviors.push(this._swiper);\n };\n this._itemUnregisterHandler = (evt) => {\n let item = evt.detail, index;\n if (!Utils.isNull(this._swiper) && item instanceof PacemElement && (index = item.behaviors.indexOf(this._swiper)) >= 0)\n item.behaviors.splice(index, 1);\n };\n this._keydownHandler = (evt) => {\n if (!this.interactive) {\n return;\n }\n switch (this.orientation) {\n case AdapterOrientation.Vertical:\n switch (evt.keyCode) {\n case 40: // down\n this._next(evt);\n break;\n case 38: // up\n this._previous(evt);\n break;\n }\n break;\n default:\n // horizontal\n switch (evt.keyCode) {\n case 39: // right\n this._next(evt);\n break;\n case 37: // left\n this._previous(evt);\n break;\n }\n break;\n }\n };\n }\n masterPropertyChangedCallback(name, old, val, first) {\n super.masterPropertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'items':\n this._syncViewWithItems();\n break;\n case 'index':\n this._index = val;\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._repeater.addEventListener(RepeaterItemCreateEventName, this._itemCreatedHandler, false);\n this._syncViewWithItems();\n }\n disconnectedCallback() {\n if (this._repeater) {\n this._repeater.removeEventListener(RepeaterItemCreateEventName, this._itemCreatedHandler, false);\n }\n super.disconnectedCallback();\n }\n initializeCallback() {\n super.initializeCallback();\n this.addEventListener('keydown', this._keydownHandler, false);\n const el = this.master;\n //\n if (!Utils.isNull(el)) {\n const tab = this._previousTabIndex = el.tabIndex;\n if (!tab || tab < 0)\n el.tabIndex = 0;\n el.addEventListener('keydown', this._keydownHandler, false);\n el.addEventListener(ItemRegisterEventName, this._itemRegisterHandler, false);\n el.addEventListener(ItemUnregisterEventName, this._itemUnregisterHandler, false);\n }\n //\n this._syncViewWithItems();\n }\n destroyCallback() {\n this.removeEventListener('keydown', this._keydownHandler, false);\n const el = this.master;\n if (!Utils.isNull(el)) {\n el.removeEventListener('keydown', this._keydownHandler, false);\n el.removeEventListener(ItemRegisterEventName, this._itemRegisterHandler, false);\n el.removeEventListener(ItemUnregisterEventName, this._itemUnregisterHandler, false);\n if (!Utils.isNullOrEmpty(el.items)) {\n for (let item of el.items) {\n const behaviors = item.behaviors, ndx = behaviors.indexOf(this._swiper);\n if (ndx >= 0) {\n behaviors.splice(ndx, 1);\n }\n }\n }\n el.tabIndex = this._previousTabIndex;\n }\n super.destroyCallback();\n }\n itemPropertyChangedCallback(index, name, old, val, first) {\n super.itemPropertyChangedCallback(index, name, old, val, first);\n // tick overall version\n this._tickVersion();\n this._fireAdapterPageRefreshCallback(index);\n }\n _fireAdapterPageRefreshCallback(index, item) {\n item = item || this.master.items[index];\n var hide = item.hide || false, disable = item.disabled || false, caption = this._labelCallback(item, index);\n const evt = new AdapterPageButtonRefreshEvent({ index: index, hide: hide, disabled: disable, content: caption });\n this.dispatchEvent(evt);\n // receive/accept changes\n hide = this._isHidden(item, index, evt.detail.hide);\n disable = this._isDisabled(item, index, evt.detail.disabled);\n caption = evt.detail.content;\n // pick target button\n const pagers = this._pageMap;\n if (pagers.has(index)) {\n const pager = pagers.get(index), span = pager.firstElementChild;\n const fn = () => {\n pager.hide = hide;\n pager.disabled = disable;\n span.content = caption;\n };\n // *careful here*: TODO: TO BE STUDIED\n // if setting the property before it's connected\n // the @Watch configuration and the get+set injection gets lost!\n CustomElementUtils.whenReady(pager, fn);\n }\n }\n _tickVersion() {\n this._v = Date.now();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'interval':\n this._resetTimer(val);\n break;\n case 'swipeEnabled':\n this._swiper.disabled = !val || !this.interactive;\n break;\n case 'interactive':\n this.hidden = !val;\n this._swiper.disabled = !val || !this.swipeEnabled;\n break;\n case 'pausable':\n if (val == true)\n this._liPause.removeAttribute('hidden');\n else\n this._liPause.setAttribute('hidden', 'hidden');\n break;\n }\n }\n _syncViewWithItems() {\n if (!this.isReady\n || Utils.isNull(this.master)\n || Utils.isNull(this._prevBtn)\n || Utils.isNull(this._nextBtn)\n || Utils.isNull(this._repeater))\n return;\n var val = this.master.items;\n this._prevBtn.hide = this._nextBtn.hide = this._panel.hide = !(val && val.length > 1);\n this._panel.hide = Utils.isNullOrEmpty(val);\n this._repeater.datasource = val;\n this._index = this.master.index;\n if (!Utils.isNullOrEmpty(val)) {\n for (let item of val) {\n if (item instanceof PacemElement && item.behaviors.indexOf(this._swiper) == -1)\n item.behaviors.push(this._swiper);\n }\n }\n }\n _toggle(evt) {\n const p = this._paused = !this._paused;\n if (p) {\n avoidHandler(evt);\n this._resetTimer(0);\n }\n else {\n this._next(evt);\n }\n }\n _resetTimer(val) {\n clearInterval(this._handle);\n if (val > 0)\n this._handle = window.setInterval(() => {\n super.next();\n }, val);\n }\n _next(evt) {\n if (evt.type !== UI.SwipeEventType.SwipeLeft)\n avoidHandler(evt);\n this._resetTimer(this.interval);\n super.next(this.loop);\n }\n _previous(evt) {\n if (evt.type !== UI.SwipeEventType.SwipeRight)\n avoidHandler(evt);\n this._resetTimer(this.interval);\n super.previous(this.loop);\n }\n _select(ndx, evt) {\n avoidHandler(evt);\n this._resetTimer(this.interval);\n if (!this.deselectable || ndx !== this._index) {\n super.select(ndx);\n }\n else {\n this.master.index = this._index = -1;\n }\n }\n _isDisabled(item, index, disabled, v) {\n return this._disableOrHide(item, index, disabled);\n }\n _isHidden(item, index, hide, v) {\n return this._disableOrHide(item, index, hide);\n }\n _disableOrHide(item, index, disabledOrHidden) {\n const retval = item instanceof PacemElement && disabledOrHidden === true;\n if ((this._index === -1 && retval === false) || (retval === true && index === this._index)) {\n if (this.deselectable) {\n this.master.index = this._index = -1;\n }\n else {\n super.select(index);\n }\n }\n return retval;\n }\n _labelCallback(item, index, v) {\n return this.labelCallback(item, index);\n }\n};\n__decorate([\n ViewChild(P + '-repeater')\n], PacemAdapterElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-button.' + PCSS + '-adapter-previous')\n], PacemAdapterElement.prototype, \"_prevBtn\", void 0);\n__decorate([\n ViewChild(P + '-button.' + PCSS + '-adapter-next')\n], PacemAdapterElement.prototype, \"_nextBtn\", void 0);\n__decorate([\n ViewChild(P + '-panel')\n], PacemAdapterElement.prototype, \"_panel\", void 0);\n__decorate([\n ViewChild(P + '-swipe')\n], PacemAdapterElement.prototype, \"_swiper\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-adapter-dashboard > li[pacem]')\n], PacemAdapterElement.prototype, \"_liPause\", void 0);\n__decorate([\n Debounce()\n], PacemAdapterElement.prototype, \"_tickVersion\", null);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemAdapterElement.prototype, \"pausable\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemAdapterElement.prototype, \"interval\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAdapterElement.prototype, \"orientation\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemAdapterElement.prototype, \"interactive\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemAdapterElement.prototype, \"swipeEnabled\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemAdapterElement.prototype, \"deselectable\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemAdapterElement.prototype, \"loop\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemAdapterElement.prototype, \"labelCallback\", void 0);\n__decorate([\n Watch()\n], PacemAdapterElement.prototype, \"_index\", void 0);\n__decorate([\n Watch()\n], PacemAdapterElement.prototype, \"_paused\", void 0);\n__decorate([\n Watch()\n], PacemAdapterElement.prototype, \"_v\", void 0);\n__decorate([\n Throttle(333)\n], PacemAdapterElement.prototype, \"_next\", null);\n__decorate([\n Throttle(333)\n], PacemAdapterElement.prototype, \"_previous\", null);\nPacemAdapterElement = __decorate([\n CustomElement({\n tagName: P + '-adapter', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-button class=\"${PCSS}-adapter-previous\" on-click=\":host._previous($event)\"><</${P}-button>\r\n <${P}-button class=\"${PCSS}-adapter-next\" on-click=\":host._next($event)\">></${P}-button>\r\n <${P}-swipe on-swipeleft=\":host._next($event)\" on-swiperight=\":host._previous($event)\"></${P}-swipe>\r\n <${P}-panel tabindex=\"0\">\r\n <${P}-repeater>\r\n <ol class=\"${PCSS}-adapter-dashboard\">\r\n <li pacem hidden>\r\n <${P}-button class=\"${PCSS}-play-pause\"\r\n css-class=\"{{ {'paused' : :host._paused, 'playing': !:host._paused } }}\" \r\n disabled=\"{{ !:host.pausable }}\" on-click=\":host._toggle($event)\"></${P}-button>\r\n </li>\r\n <template>\r\n <li>\r\n <${P}-button on-click=\":host._select(^index, $event)\" class=\"${PCSS}-adapter-page\" css-class=\"{{ { '${PCSS}-adapter-active': ^index === :host._index } }}\">\r\n <${P}-span></${P}-span>\r\n </${P}-button>\r\n </li>\r\n </template>\r\n </ol></${P}-repeater></${P}-panel>`\n })\n], PacemAdapterElement);\nexport { PacemAdapterElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, PropertyChangeEvent } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n// TODO: shadow-ize and reuse native <a> element.\n/** Anchor-like custom element, supporting routed navigation (via a {@link Components.PacemRouterElement}), OAuth-authenticated downloads and keyboard activation. */\nlet PacemAnchorElement = class PacemAnchorElement extends Components.PacemElement {\n constructor() {\n super('link');\n this._fetching = false;\n }\n /** @readonly Gets whether a `download` fetch is currently in progress. */\n get fetching() {\n return this._fetching;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute('tab-order')) {\n this.tabOrder = 0;\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'target':\n (Utils.isNullOrEmpty(val) ? Utils.removeClass : Utils.addClass)(this, 'a-target');\n break;\n case 'href':\n (Utils.isNull(val) ? Utils.removeClass : Utils.addClass)(this, 'a-url');\n break;\n case 'download':\n (Utils.isNullOrEmpty(val) ? Utils.removeClass : Utils.addClass)(this, 'a-download');\n break;\n }\n }\n emit(evt) {\n super.emit(evt);\n if (this.disabled) {\n return;\n }\n switch (evt.type) {\n case 'mousedown':\n Utils.addClass(this, PCSS + '-active');\n break;\n case 'keydown':\n if (evt.key === 'Enter') {\n evt.preventDefault();\n Utils.addClass(this, PCSS + '-active');\n }\n break;\n case 'blur':\n case 'mouseup':\n Utils.removeClass(this, PCSS + '-active');\n break;\n case 'keyup':\n if (evt.key === 'Enter') {\n this.click();\n Utils.removeClass(this, PCSS + '-active');\n }\n break;\n }\n const href = this.href, target = this.target, router = this.router, filename = this.download;\n const url = () => {\n return Utils.isNull(router) ? href : Utils.URIs.format(href, router.state);\n };\n if (!Utils.isNull(href) && !evt.defaultPrevented) {\n if ((evt.type === 'click' && evt.ctrlKey) || (evt.type === 'mousedown' && evt.button === 1)) {\n // 1. middle-click or ctrl+click\n window.open(url(), '_blank');\n }\n else if (evt.type === 'click') {\n // 2. download\n if (filename === true) {\n this._download(url());\n }\n else if (typeof filename === 'string' && !Utils.isNullOrEmpty(filename)) {\n this._download(url(), filename);\n }\n // 3. targeting other window\n else if (!Utils.isNullOrEmpty(target)) {\n window.open(url(), target);\n }\n // 4. routed navigation\n else if (!Utils.isNull(router)) {\n // old implementation memento: Pacem.preventDefaultHandler(evt);\n // trigger router `navigate()`\n router.path = href;\n }\n // 5. standard behavior\n else {\n location.assign(href);\n }\n }\n }\n }\n async _download(url, filename) {\n this.dispatchEvent(new PropertyChangeEvent({\n propertyName: 'fetching', oldValue: this._fetching, currentValue: this._fetching = true\n }));\n try {\n await Utils.download(url, { credentials: this.fetchCredentials, headers: this.fetchHeaders, filename: filename });\n }\n finally {\n this.dispatchEvent(new PropertyChangeEvent({\n propertyName: 'fetching', oldValue: this._fetching, currentValue: this._fetching = false\n }));\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAnchorElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAnchorElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemAnchorElement.prototype, \"href\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemAnchorElement.prototype, \"target\", void 0);\n__decorate([\n Watch({\n reflectBack: false, converter: {\n convert: (attr) => {\n switch (attr) {\n case 'true':\n return true;\n case 'false':\n return false;\n default:\n return attr;\n }\n }, convertBack: (prop) => prop\n }\n })\n], PacemAnchorElement.prototype, \"download\", void 0);\n__decorate([\n Watch({ reflectBack: false, converter: PropertyConverters.Element })\n], PacemAnchorElement.prototype, \"router\", void 0);\nPacemAnchorElement = __decorate([\n CustomElement({\n tagName: P + '-a',\n modifiers: ['hoverable', 'focusable', 'pressable']\n })\n], PacemAnchorElement);\nexport { PacemAnchorElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, PropertyChangeEvent, ViewChild, stopPropagationHandler, preventDefaultHandler } from '@pacem/pacem-core';\nimport { ElementOrPointPropertyConverter } from './types';\n//namespace Pacem.Components.UI {\n/** How a {@link PacemBalloonElement} behaves once popped up: a dismissible menu, a tooltip, or non-interactive. */\nexport var BalloonBehavior;\n(function (BalloonBehavior) {\n BalloonBehavior[\"Menu\"] = \"menu\";\n BalloonBehavior[\"Tooltip\"] = \"tooltip\";\n BalloonBehavior[\"Inert\"] = \"inert\";\n})(BalloonBehavior || (BalloonBehavior = {}));\n/** The user interaction on `target` that pops a {@link PacemBalloonElement} up. */\nexport var BalloonTrigger;\n(function (BalloonTrigger) {\n BalloonTrigger[\"Hover\"] = \"hover\";\n BalloonTrigger[\"Click\"] = \"click\";\n BalloonTrigger[\"ContextMenu\"] = \"contextmenu\";\n BalloonTrigger[\"Focus\"] = \"focus\";\n})(BalloonTrigger || (BalloonTrigger = {}));\n/** Cross-axis alignment of a {@link PacemBalloonElement} relative to its `target`. */\nexport var BalloonAlignment;\n(function (BalloonAlignment) {\n BalloonAlignment[\"Start\"] = \"start\";\n BalloonAlignment[\"Center\"] = \"center\";\n BalloonAlignment[\"End\"] = \"end\";\n BalloonAlignment[\"Auto\"] = \"auto\";\n})(BalloonAlignment || (BalloonAlignment = {}));\n/** A side of `target` a {@link PacemBalloonElement} can sit on. */\nexport const BalloonPlacement = {\n Top: 'top',\n Left: 'left',\n Bottom: 'bottom',\n Right: 'right',\n};\n/** The automatic placements of a {@link PacemBalloonElement}: the side with the most room, on both axes or on one. */\nconst BalloonPlacementOption = {\n Auto: 'auto',\n HorizontalAuto: 'x',\n VerticalAuto: 'y'\n};\n/** Side of `target` a {@link PacemBalloonElement} is anchored to (with automatic variants that pick the side with the most room). */\nexport const BalloonPosition = {\n ...BalloonPlacement,\n ...BalloonPlacementOption\n};\n/** Whether a {@link PacemBalloonElement} sizes itself freely or matches its `target`'s size along the anchored axis. */\nexport var BalloonSizing;\n(function (BalloonSizing) {\n BalloonSizing[\"Auto\"] = \"auto\";\n BalloonSizing[\"Match\"] = \"match\";\n})(BalloonSizing || (BalloonSizing = {}));\n/** Event name fired by {@link PacemBalloonElement} once it has finished popping up (after the show transition). */\nexport const BalloonPopupEventName = 'popup';\n/** Event name fired by {@link PacemBalloonElement} once it has finished popping out (after the hide transition). */\nexport const BalloonPopoutEventName = 'popout';\nconst BalloonConsts = {\n Defaults: {\n 'trigger': BalloonTrigger.Hover,\n 'position': BalloonPosition.Auto,\n 'size': BalloonSizing.Auto,\n 'behavior': BalloonBehavior.Menu,\n 'verticalOffset': 0,\n 'horizontalOffset': 0,\n 'hoverDelay': 250,\n 'hoverTimeout': 500,\n 'align': BalloonAlignment.Center,\n 'track': true\n }\n};\n/**\n * CSS custom property a balloon publishes on itself when placed: the room left (px) on its side of the target, within\n * the viewport, so that its contents can fit (e.g. `max-height: var(--pacem-balloon-available-height)` on a scrolling\n * list). Updated whenever the balloon repositions (scroll, resize, when tracking).\n */\nexport const AVAILABLE_HEIGHT_VAR = '--pacem-balloon-available-height';\n/** Breathing room (px) kept between a balloon and the viewport's edge when computing {@link AVAILABLE_HEIGHT_VAR}. */\nconst AVAILABLE_HEIGHT_GUTTER = 8;\nconst positioningStyles = 'balloon-right balloon-left balloon-bottom balloon-top balloon-start balloon-center balloon-end';\nconst allStyles = PCSS + '-balloon ' + positioningStyles + ' balloon-out balloon-in balloon-on';\n/** Positions its content as a floating popup (menu or tooltip) anchored to a `target` element or point; see {@link BalloonOptions}. */\n// (the content's `<p-resize>` is `display: block` inline: in the shadow root the theme's `pacem-resize { display: block }`\n// does not apply, and an inline element never reports a resize, i.e. the balloon would not reposition when its content\n// grows or shrinks, e.g. a filtered list above its target)\nlet PacemBalloonElement = class PacemBalloonElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._options = BalloonConsts.Defaults;\n this._originalNeighborhood = null;\n this._popoutDelegate = (_) => {\n this.popout();\n };\n this._hoverDelegate = (evt) => {\n // window.clearTimeout(this._timer);\n if (!this.disabled) {\n this.popup(this._options.hoverDelay);\n // this._timer = window.setTimeout(this._popupDelegate, this._options.hoverDelay);\n }\n };\n this._outConditionalDelegate = (evt) => {\n if ((evt.srcElement || evt.target) != this) {\n this._outDelegate(evt);\n }\n };\n this._mousedownConditionalDelegate = (evt) => {\n preventDefaultHandler(evt);\n if (this._visible) {\n stopPropagationHandler(evt);\n }\n };\n this._outDelegate = (_) => {\n this.popout(this._options.hoverTimeout);\n };\n this._toggleDelegate = (evt) => {\n evt.preventDefault();\n if (this._visible) {\n this._outDelegate(evt);\n }\n else {\n this._hoverDelegate(evt);\n }\n };\n //#endregion\n }\n /** Gets whether the balloon is open and visible. */\n get visible() {\n return this._visible;\n }\n // #region LIFECYCLE\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'target') {\n if (old instanceof Element) {\n this._removeHandlers(old);\n }\n if (!(val instanceof Element)) {\n this._adjust();\n }\n }\n else if (name === 'options') {\n if (this.target instanceof Element) {\n this._removeHandlers(this.target);\n }\n this._options = Utils.extend({}, Utils.clone(BalloonConsts.Defaults), val);\n this._synchronizeOptions();\n }\n else if (name === 'disabled') {\n //this.container.style.visibility = val ? 'hidden' : 'visible';\n if (val) {\n this.popout();\n }\n }\n if (this.target instanceof Element && name !== 'disabled') {\n this._setHandlers(this.target);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._ensurePopup();\n this.target = this.target || this.parentElement;\n this._synchronizeOptions();\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this._destroyPopup();\n if (this.target instanceof Element) {\n this._removeHandlers(this.target);\n }\n }\n // #endregion\n //#region METHODS\n _synchronizeOptions() {\n const popup = this, options = popup.options || {};\n // moveToRoot\n if (!!options.moveToRoot && Utils.isNull(this._originalNeighborhood)) {\n this._originalNeighborhood = { parent: popup.parentElement, nextSibling: popup.nextElementSibling };\n document.body.appendChild(popup);\n }\n else if (!options.moveToRoot && !Utils.isNull(this._originalNeighborhood)) {\n const parent = this._originalNeighborhood.parent;\n // has something changed in the neighborhood?...\n if (!Utils.isNull(parent)) {\n parent.appendChild(popup);\n }\n this._originalNeighborhood = null;\n }\n }\n _ensurePopup() {\n const popup = this, container = popup._container;\n //\n if (popup && container && !Utils.hasClass(popup, PCSS + '-balloon')) {\n Utils.addClass(popup, PCSS + '-balloon');\n popup.style.position = 'absolute';\n container.style.position = 'relative';\n container.style.zIndex = '1';\n popup.style.visibility = 'hidden';\n }\n return popup;\n }\n _destroyPopup() {\n var popup = this, container = popup._container;\n Utils.removeClass(popup, allStyles);\n popup.style.position = '';\n if (!Utils.isNull(container)) {\n container.style.position = '';\n container.style.zIndex = '';\n }\n }\n _registerEvents() {\n const popup = this._ensurePopup(), options = this._options;\n switch (options.behavior) {\n case BalloonBehavior.Menu:\n switch (options.trigger) {\n case BalloonTrigger.Focus:\n popup.addEventListener('mousedown', stopPropagationHandler, false);\n popup.addEventListener('focus', this._hoverDelegate, false);\n // do nothing else: only the blur event will pop the balloon out\n break;\n case BalloonTrigger.Click:\n case BalloonTrigger.ContextMenu:\n popup.addEventListener('mousedown', stopPropagationHandler, false);\n window.document.body.addEventListener('mousedown', this._outConditionalDelegate, false);\n break;\n default:\n popup.addEventListener('mouseenter', this._hoverDelegate, false);\n popup.addEventListener('mouseleave', this._outDelegate, false);\n break;\n }\n break;\n case BalloonBehavior.Tooltip:\n switch (options.trigger) {\n case BalloonTrigger.Focus:\n case BalloonTrigger.Click:\n case BalloonTrigger.ContextMenu:\n window.document.body.addEventListener('mousedown', this._outConditionalDelegate, false);\n break;\n default:\n break;\n }\n break;\n }\n }\n _unregisterEvents() {\n var popup = this._ensurePopup();\n var opts = this._options;\n switch (opts.behavior) {\n case BalloonBehavior.Menu:\n switch (opts.trigger) {\n case BalloonTrigger.Focus:\n popup.removeEventListener('mousedown', stopPropagationHandler, false);\n popup.removeEventListener('focus', this._hoverDelegate, false);\n // do nothing else: only the blur event will pop the balloon out\n break;\n case BalloonTrigger.Click:\n case BalloonTrigger.ContextMenu:\n popup.removeEventListener('mousedown', stopPropagationHandler, false);\n window.document.body.removeEventListener('mousedown', this._outConditionalDelegate, false);\n break;\n default:\n popup.removeEventListener('mouseenter', this._hoverDelegate, false);\n popup.removeEventListener('mouseleave', this._outDelegate, false);\n break;\n }\n break;\n case BalloonBehavior.Tooltip:\n switch (opts.trigger) {\n case BalloonTrigger.Click:\n case BalloonTrigger.ContextMenu:\n window.document.body.removeEventListener('mousedown', this._outConditionalDelegate, false);\n break;\n }\n break;\n }\n }\n _onLayoutChange(evt) {\n if (this._visible) {\n this._adjust();\n }\n }\n /**\n * The side {@link BalloonOptions.prefer} asks for, when the balloon fits there (its natural size, on that side of the\n * target, within the viewport); `null` otherwise, or when nothing is preferred.\n * @param room The room around the target, per side.\n */\n _preferredSide(opts, room) {\n const prefer = opts.prefer;\n if (Utils.isNull(prefer) || !(prefer in room)) {\n return null;\n }\n const isVertical = prefer === BalloonPlacement.Top || prefer === BalloonPlacement.Bottom;\n const size = isVertical ? this.offsetHeight : this.offsetWidth;\n const fits = size + AVAILABLE_HEIGHT_GUTTER <= room[prefer];\n return fits ? prefer : null;\n }\n /** The room left on a side of the target (the whole viewport height for a side that is not above or below). */\n _availableHeight(position, offsetTop, offsetBottom, viewportHeight) {\n switch (position) {\n case BalloonPosition.Top:\n return Math.max(offsetTop - AVAILABLE_HEIGHT_GUTTER, 0);\n case BalloonPosition.Bottom:\n return Math.max(offsetBottom - AVAILABLE_HEIGHT_GUTTER, 0);\n default:\n return viewportHeight;\n }\n }\n _adjust() {\n const popup = this, el = popup.target;\n if (Utils.isNull(el)) {\n return;\n }\n const coords = el instanceof Element ? Utils.offset(el) : { top: el.y, left: el.x, width: 0, height: 0 };\n const vieportSize = Utils.windowSize;\n var opts = this._options;\n var chosenPosition = opts.position, chosenAlignment = opts.align;\n // room around the target, in the viewport\n const viewportHeight = vieportSize.height;\n const viewportWidth = vieportSize.width;\n const offsetLeft = coords.left - Utils.scrollLeft;\n const offsetTop = coords.top - Utils.scrollTop;\n const offsetBottom = viewportHeight - (offsetTop + coords.height);\n const offsetRight = viewportWidth - (offsetLeft + coords.width);\n // (the natural size, uncapped: see AVAILABLE_HEIGHT_VAR below)\n popup.style.removeProperty(AVAILABLE_HEIGHT_VAR);\n if (chosenPosition != BalloonPosition.Top &&\n chosenPosition != BalloonPosition.Bottom && chosenPosition != BalloonPosition.Left && chosenPosition != BalloonPosition.Right) {\n // an automatic position: the preferred side wins, whenever the balloon fits there (on either axis)...\n const room = { top: offsetTop, bottom: offsetBottom, left: offsetLeft, right: offsetRight };\n const preferred = this._preferredSide(opts, room);\n if (!Utils.isNull(preferred)) {\n chosenPosition = preferred;\n }\n else {\n // ...otherwise the larger side\n switch (chosenPosition) {\n case BalloonPosition.HorizontalAuto:\n chosenPosition = offsetLeft > offsetRight ? BalloonPosition.Left : BalloonPosition.Right;\n break;\n default:\n // (!) exclude 'left' and 'right' also when position is simply set to 'auto'\n chosenPosition = offsetTop > offsetBottom ? BalloonPosition.Top : BalloonPosition.Bottom;\n break;\n }\n }\n }\n // the room left on the chosen side, for contents that must fit in the viewport (e.g. a scrolling list)\n const availableHeight = this._availableHeight(chosenPosition, offsetTop, offsetBottom, viewportHeight);\n popup.style.setProperty(AVAILABLE_HEIGHT_VAR, `${availableHeight}px`);\n if (opts.size === BalloonSizing.Match) {\n switch (chosenPosition) {\n case BalloonPosition.Bottom:\n case BalloonPosition.Top:\n popup.style.minWidth = coords.width + 'px';\n popup.style.minHeight = '';\n break;\n case BalloonPosition.Left:\n case BalloonPosition.Right:\n popup.style.minHeight = coords.height + 'px';\n popup.style.minWidth = '';\n break;\n }\n }\n else {\n popup.style.minWidth = popup.style.minHeight = '';\n }\n const popupSize = { width: popup.offsetWidth, height: popup.offsetHeight };\n const fullOffsetWidth = coords.width - popupSize.width, halfOffsetWidth = fullOffsetWidth * .5, fullOffsetHeight = coords.height - popupSize.height, halfOffsetHeight = fullOffsetHeight * .5;\n switch (chosenAlignment) {\n case BalloonAlignment.Center:\n case BalloonAlignment.Start:\n case BalloonAlignment.End:\n break;\n case BalloonAlignment.Auto:\n chosenAlignment = BalloonAlignment.Center;\n switch (chosenPosition) {\n case BalloonPosition.Right:\n case BalloonPosition.Left:\n const halfHeight = Utils.scrollTop + vieportSize.height / 2;\n if /* completely inside the first half of the screen */ ((coords.top + coords.height) < halfHeight) {\n chosenAlignment = BalloonAlignment.Start;\n }\n else if /* completely beyond the half line of the screen */ (coords.top > halfHeight) {\n chosenAlignment = BalloonAlignment.End;\n }\n break;\n case BalloonPosition.Top:\n case BalloonPosition.Bottom:\n const halfWidth = Utils.scrollLeft + vieportSize.width / 2;\n if /* completely inside the first half of the screen */ ((coords.left + coords.width) < halfWidth) {\n chosenAlignment = BalloonAlignment.Start;\n }\n else if /* completely beyond the half line of the screen */ (coords.left > halfWidth) {\n chosenAlignment = BalloonAlignment.End;\n }\n break;\n }\n break;\n default:\n chosenAlignment = BalloonConsts.Defaults.align;\n break;\n }\n Utils.removeClass(popup, positioningStyles);\n Utils.addClass(popup, 'balloon-' + chosenPosition);\n Utils.addClass(popup, 'balloon-' + chosenAlignment);\n const tailSize = Utils.Css.getVariableValue(`--${PCSS}-balloon-tail-size`), tailInset = Utils.Css.getVariableValue(`--${PCSS}-balloon-tail-inset`);\n const inset = parseInt(tailInset) + .5 * parseInt(tailSize);\n const threshold = { width: coords.width / 2, height: coords.height / 2 };\n const adjustX = opts.autoAdjust && inset > threshold.width;\n const adjustY = opts.autoAdjust && inset > threshold.height;\n switch (chosenPosition) {\n case BalloonPosition.Top:\n coords.top -= popupSize.height;\n switch (chosenAlignment) {\n case BalloonAlignment.Center:\n coords.left += halfOffsetWidth;\n break;\n case BalloonAlignment.End:\n coords.left += fullOffsetWidth;\n if (adjustX) {\n coords.left += (inset - threshold.width);\n }\n break;\n case BalloonAlignment.Start:\n if (adjustX) {\n coords.left -= (inset - threshold.width);\n }\n break;\n }\n break;\n case BalloonPosition.Left:\n coords.left -= popupSize.width;\n switch (chosenAlignment) {\n case BalloonAlignment.Center:\n coords.top += halfOffsetHeight;\n break;\n case BalloonAlignment.End:\n coords.top += fullOffsetHeight;\n if (adjustY) {\n coords.top += (inset - threshold.height);\n }\n break;\n case BalloonAlignment.Start:\n if (adjustY) {\n coords.top -= (inset - threshold.height);\n }\n break;\n }\n break;\n case BalloonPosition.Right:\n coords.left += coords.width;\n switch (chosenAlignment) {\n case BalloonAlignment.Center:\n coords.top += halfOffsetHeight;\n break;\n case BalloonAlignment.End:\n coords.top += fullOffsetHeight;\n if (adjustY) {\n coords.top += (inset - threshold.height);\n }\n break;\n case BalloonAlignment.Start:\n if (adjustY) {\n coords.top -= (inset - threshold.height);\n }\n break;\n }\n break;\n default:\n // bottom\n coords.top += coords.height;\n switch (chosenAlignment) {\n case BalloonAlignment.Center:\n coords.left += halfOffsetWidth;\n break;\n case BalloonAlignment.End:\n coords.left += fullOffsetWidth;\n if (adjustX) {\n coords.left += (inset - threshold.width);\n }\n break;\n case BalloonAlignment.Start:\n if (adjustX) {\n coords.left -= (inset - threshold.width);\n }\n break;\n }\n break;\n }\n coords.left = Math.min(vieportSize.width - popupSize.width, Math.max(0, coords.left));\n //coords.top = Math.max(0, coords.top);\n // coords for balloon positioning\n coords.top += opts.verticalOffset;\n coords.left += opts.horizontalOffset;\n popup.style.top = Math.round(coords.top) + 'px';\n popup.style.left = Math.round(coords.left) + 'px';\n // popup.style.transform = `translateX(${Math.round(coords.left)}px) translateY(${Math.round(coords.top)}px) translateZ(0)`;\n //popup.style.visibility = 'visible';\n }\n _adjustWatchers(visible) {\n const options = this.options || {};\n if (!Utils.isNull(this._resize)) {\n // track position and size\n this._resize.disabled = !visible;\n this._position.disabled = !visible || !(options.track || options.trackPosition);\n }\n }\n /**\n * Shows the balloon, if hidden.\n */\n popup(delay = 0) {\n clearTimeout(this._timer);\n if (delay > 0) {\n this._timer = setTimeout(() => this.popup(), delay);\n return;\n }\n const popup = this, isVisible = Utils.isVisible(popup), \n // (popping out: still visible, but leaving; popping up again cancels that)\n isLeaving = Utils.hasClass(popup, 'balloon-out');\n this._adjustWatchers(true);\n if ((isVisible && !isLeaving) || this.disabled) {\n return;\n }\n Utils.removeClass(popup, 'balloon-out');\n // attach closured behavior to popup\n //if (!sameTrigger) {\n this._registerEvents(); // $popup.on('mouseenter', obj.methods.hover).on('mouseleave', obj.methods.out).data(vars.TRIGGER, obj);\n //}\n //\n popup.style.pointerEvents = 'none';\n this._visible = true;\n popup.style.visibility = 'visible';\n this._adjust();\n //requestAnimationFrame(() => {\n Utils.addClass(popup, 'balloon-in');\n Utils.addAnimationEndCallback(popup, () => {\n Utils.addClass(popup, 'balloon-on');\n popup.dispatchEvent(new PropertyChangeEvent({ propertyName: 'visible', oldValue: false, currentValue: true }));\n popup.dispatchEvent(new Event(BalloonPopupEventName));\n popup.style.pointerEvents = 'auto';\n }, 500);\n //});\n }\n /**\n * Hides the balloon, if visible.\n */\n popout(delay = 0) {\n clearTimeout(this._timer);\n if (delay > 0) {\n this._timer = setTimeout(() => this.popout(), delay);\n return;\n }\n var popup = this;\n const isVisible = Utils.isVisible(popup);\n this._adjustWatchers(false);\n if (!isVisible) {\n return;\n }\n // detach closured behavior from popup\n this._unregisterEvents();\n //\n popup.style.pointerEvents = 'none';\n Utils.removeClass(popup, 'balloon-in balloon-on');\n Utils.addClass(popup, 'balloon-out');\n Utils.addAnimationEndCallback(popup, () => {\n // (popped up again meanwhile: stays)\n if (!Utils.hasClass(popup, 'balloon-out')) {\n return;\n }\n popup.style.visibility = 'hidden';\n // (a hidden, absolutely positioned balloon still extends the document's scrollable area: parked at the\n // origin, it no longer stretches a shorter page it is left on; the next popup positions it again)\n popup.style.top =\n popup.style.left = '0px';\n this._visible = false;\n Utils.removeClass(popup, allStyles);\n popup.dispatchEvent(new Event(BalloonPopoutEventName));\n popup.dispatchEvent(new PropertyChangeEvent({ propertyName: 'visible', oldValue: true, currentValue: false }));\n }, 500);\n }\n /**\n * Shows the balloon, if hidden. Otherwise hides it.\n */\n toggle(delay = 0) {\n if (!Utils.isVisible(this) && !this.disabled) {\n this.popup(delay);\n }\n else {\n this.popout(delay);\n }\n }\n _removeHandlers(el) {\n if (Utils.isNull(el)) {\n return;\n }\n el.removeEventListener('mouseenter', this._hoverDelegate, false);\n el.removeEventListener('mouseleave', this._outDelegate, false);\n el.removeEventListener('mousedown', this._popoutDelegate, false);\n el.removeEventListener('mousedown', this._mousedownConditionalDelegate, false);\n el.removeEventListener('click', this._toggleDelegate, false);\n el.removeEventListener('focus', this._hoverDelegate, false);\n el.removeEventListener('blur', this._outDelegate, false);\n el.removeEventListener('contextmenu', this._toggleDelegate, false);\n }\n _setHandlers(el) {\n this.popout();\n // regenerate opts popup\n var opts = this._options;\n if (opts.behavior == BalloonBehavior.Inert) {\n return;\n }\n switch (opts.trigger) {\n case BalloonTrigger.Hover:\n el.addEventListener('mouseenter', this._hoverDelegate, false);\n el.addEventListener('mouseleave', this._outDelegate, false);\n el.addEventListener('mousedown', this._popoutDelegate, false);\n break;\n case BalloonTrigger.Focus:\n el.addEventListener('focus', this._hoverDelegate, false);\n el.addEventListener('blur', this._outDelegate, false);\n break;\n case BalloonTrigger.Click:\n opts.hoverDelay = opts.hoverTimeout = 0;\n el.addEventListener('mousedown', this._mousedownConditionalDelegate, false);\n el.addEventListener('click', this._toggleDelegate, false) /*.blur(obj.methods.out)*/;\n break;\n case BalloonTrigger.ContextMenu:\n opts.hoverDelay = opts.hoverTimeout = 0;\n el.addEventListener('contextmenu', this._toggleDelegate, false);\n break;\n }\n }\n};\n__decorate([\n ViewChild(`.${PCSS}-balloon-face`, true, false)\n], PacemBalloonElement.prototype, \"_face\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-balloon`)\n], PacemBalloonElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(P + '-resize[content]')\n], PacemBalloonElement.prototype, \"_resize\", void 0);\n__decorate([\n ViewChild(P + '-resize[watch-position=true]')\n], PacemBalloonElement.prototype, \"_position\", void 0);\n__decorate([\n Watch({ converter: ElementOrPointPropertyConverter })\n], PacemBalloonElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemBalloonElement.prototype, \"options\", void 0);\nPacemBalloonElement = __decorate([\n CustomElement({\n tagName: P + '-balloon',\n shadow: true,\n template: `<${P}-resize target=\"{{ :host.target }}\" disabled=\"true\" watch-position=\"true\" on-${Components.ResizeEventName}=\":host._onLayoutChange($event)\"></${P}-resize>\r\n<div class=\"${PCSS}-balloon-face\"></div>\r\n<div class=\"${PCSS}-balloon\"><${P}-resize on-${Components.ResizeEventName}=\":host._onLayoutChange($event)\" disabled=\"true\" content style=\"display: block\"><slot></slot></${P}-resize></div>\r\n<div class=\"corner top-left\" part=\"corner-topleft\"></div><div class=\"corner bottom-left\" part=\"corner-bottomleft\"></div><div class=\"corner top-right\" part=\"corner-topright\"></div><div class=\"corner bottom-right\" part=\"corner-bottomright\"></div>`\n })\n], PacemBalloonElement);\nexport { PacemBalloonElement };\n//}\n", "/** Converts an attribute value into an `Element` (resolved via `querySelector`) or, failing that, a parsed `Point`/JSON value. */\nexport const ElementOrPointPropertyConverter = {\n convert: (attr) => {\n let el = document.querySelector(attr);\n return el ?? JSON.parse(attr);\n }\n};\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, CustomUIEvent, CustomElementUtils } from '@pacem/pacem-core';\nimport { Point } from '@pacem/pacem-foundation';\nimport { ElementOrPointPropertyConverter } from './types';\n// namespace Pacem.Components.UI {\n/** Edge (or center) of an element a {@link PacemBinderElement} curve attaches to. */\nexport var BinderAnchor;\n(function (BinderAnchor) {\n BinderAnchor[\"Auto\"] = \"auto\";\n BinderAnchor[\"Left\"] = \"left\";\n BinderAnchor[\"Top\"] = \"top\";\n BinderAnchor[\"Right\"] = \"right\";\n BinderAnchor[\"Bottom\"] = \"bottom\";\n BinderAnchor[\"Center\"] = \"center\";\n})(BinderAnchor || (BinderAnchor = {}));\n/** Decoration drawn at either end of a {@link PacemBinderElement} curve. */\nexport var BinderEnd;\n(function (BinderEnd) {\n BinderEnd[\"Default\"] = \"default\";\n BinderEnd[\"Arrow\"] = \"arrow\";\n BinderEnd[\"FatArrow\"] = \"fatarrow\";\n BinderEnd[\"None\"] = \"none\";\n})(BinderEnd || (BinderEnd = {}));\n/** How a {@link PacemBinderElement} computes its Bezier control points: from the elements' mass (size) or from the path direction. */\nexport var BinderTension;\n(function (BinderTension) {\n BinderTension[\"Mass\"] = \"mass\";\n BinderTension[\"Path\"] = \"path\";\n})(BinderTension || (BinderTension = {}));\n/** Event name fired by a {@link PacemBinderElement} when its connecting path is interacted with (click, hover, etc.). */\nexport const BinderInteractionEventName = 'interact';\n/** Event dispatched by a {@link PacemBinderElement} wrapping the original user-interaction event on its path. */\nexport class BinderInteractionEvent extends CustomUIEvent {\n constructor(orig) {\n super(BinderInteractionEventName, null, orig);\n }\n}\nconst UI_BINDERS = 'pacem:components:ui:binders';\n/** Tracks the {@link PacemBinderElement} instances bound to a single endpoint element, refreshing them all on that element's resize/reposition (or as soon as it stops animating). */\nclass BindersCollector {\n constructor(element) {\n this.binders = [];\n /** Refreshes the bound binders against the target's latest known size. */\n this.refresh = () => {\n for (var binder of this.binders) {\n binder.refresh(this.resize.target, this.resize.currentSize);\n }\n };\n this.fire = (evt) => {\n for (var binder of this.binders) {\n binder.refresh(this.resize.target, evt.detail);\n }\n };\n const watcher = this.resize = new Components.PacemResizeElement();\n watcher.target = element;\n watcher.watchPosition = true;\n document.body.appendChild(watcher);\n // an element might turn visible leaving its size and position untouched - e.g. while fading in -\n // and binders skip invisible endpoints (see `_draw`): they need a nudge once the animation is over.\n if (element instanceof HTMLElement || element instanceof SVGElement) {\n Utils.addAnimationEndCallback(element, this.refresh);\n }\n }\n dispose() {\n this.resize.remove();\n }\n}\n/** Static registry pairing endpoint elements with their {@link BindersCollector}, plus a page-wide resize listener keeping every registered {@link PacemBinderElement} in sync. */\nclass BinderUtils {\n static { this._pageBinders = []; }\n static _updateResizeListener() {\n const binders = this._pageBinders;\n if (Utils.isNull(this._bodyResizeListener)) {\n const resize = this._bodyResizeListener = new Components.PacemResizeElement();\n resize.target = document.body;\n document.body.appendChild(resize);\n document.addEventListener(Components.ResizeEventName, () => {\n for (let binder of binders) {\n binder.invalidateSize();\n }\n }, false);\n }\n this._bodyResizeListener.disabled = binders.length === 0;\n }\n static register(element, binder) {\n var collector = CustomElementUtils.getAttachedPropertyValue(element, UI_BINDERS), binders = this._pageBinders;\n if (Utils.isNull(collector)) {\n collector = new BindersCollector(element);\n CustomElementUtils.setAttachedPropertyValue(element, UI_BINDERS, collector);\n }\n if (collector.binders.indexOf(binder) == -1) {\n if (collector.binders.length === 0) {\n collector.resize.addEventListener(Components.ResizeEventName, collector.fire, false);\n } //else {\n binder.refresh(element, collector.resize.currentSize);\n //}\n collector.binders.push(binder);\n }\n if (binders.indexOf(binder) === -1) {\n binders.push(binder);\n this._updateResizeListener();\n }\n }\n static unregister(element, binder) {\n var collector = CustomElementUtils.getAttachedPropertyValue(element, UI_BINDERS), ndx, binders = this._pageBinders, ndx2;\n if (!Utils.isNull(collector) && (ndx = collector.binders.indexOf(binder)) > -1) {\n collector.binders.splice(ndx, 1);\n if (collector.binders.length === 0) {\n collector.resize.removeEventListener(Components.ResizeEventName, collector.fire, false);\n collector.dispose();\n CustomElementUtils.deleteAttachedPropertyValue(element, UI_BINDERS);\n }\n }\n if ((ndx2 = binders.indexOf(binder)) >= 0) {\n binders.splice(ndx2, 1);\n this._updateResizeListener();\n }\n }\n}\nconst STD_EVENTS = ['click', 'dblclick', 'mouseover', 'mouseout', 'mouseenter', 'mouseleave', 'mousedown', 'mouseup', 'mousemove', 'contextmenu'];\n/** Draws an SVG Bezier curve connecting two elements (or points), following them as they move/resize; e.g. wires or diagram connectors. */\nlet PacemBinderElement = class PacemBinderElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._broadcastHandler = (evt) => {\n var ui = new BinderInteractionEvent(evt);\n this.dispatchEvent(ui);\n };\n this._state = {};\n }\n connectedCallback() {\n super.connectedCallback();\n this._ensurePath();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (this.from instanceof Element)\n BinderUtils.register(this.from, this);\n if (this.to instanceof Element)\n BinderUtils.register(this.to, this);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'from':\n case 'to':\n if (old instanceof Element) {\n BinderUtils.unregister(old, this);\n }\n if (val instanceof Element) {\n // `BinderUtils.register` eventually calls `.refresh`\n BinderUtils.register(val, this);\n }\n else {\n this.refresh(val);\n }\n break;\n case 'fromLimit':\n case 'toLimit':\n case 'fromEnd':\n case 'toEnd':\n case 'tension':\n this._draw();\n break;\n case 'fromAnchor':\n this.refresh(this.from);\n break;\n case 'toAnchor':\n this.refresh(this.to);\n break;\n case 'cssClass':\n if (!Utils.isNull(this._svg)) {\n this._svg.setAttribute('class', PCSS + '-binder ' + this.className);\n }\n break;\n case 'hide':\n if (!first) {\n this._setPathVisibility();\n }\n break;\n case 'layer':\n this._hostSvg();\n this._draw();\n break;\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._path)) {\n STD_EVENTS.forEach(e => {\n this._path.removeEventListener(e, this._broadcastHandler, false);\n });\n this._svg.remove();\n this._path = undefined;\n }\n if (this.from instanceof Element)\n BinderUtils.unregister(this.from, this);\n if (this.to instanceof Element)\n BinderUtils.unregister(this.to, this);\n super.disconnectedCallback();\n }\n _setPathVisibility(path = this._path, hide = this.hide, interactive = this.interactive) {\n if (!Utils.isNull(path)) {\n if (hide) {\n path.setAttribute('display', 'none');\n }\n else {\n path.removeAttribute('display');\n }\n if (interactive) {\n path.setAttribute('pointer-events', 'visibleStroke');\n path.tabIndex = 0;\n }\n else {\n path.removeAttribute('pointer-events');\n path.tabIndex = -1;\n }\n }\n }\n _ensurePath() {\n if (Utils.isNull(this._path)) {\n let svg = this._svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.style.position = 'absolute';\n Utils.addClass(svg, PCSS + '-binder ' + this.className);\n svg.style.top = '0';\n svg.style.left = '0';\n svg.style.pointerEvents = 'none';\n const path = this._path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('fill', 'none');\n path.setAttribute('display', 'none');\n this._setPathVisibility();\n svg.appendChild(path);\n this._hostSvg();\n STD_EVENTS.forEach(e => {\n path.addEventListener(e, this._broadcastHandler, false);\n });\n }\n }\n /** Whether the SVG lives in a custom {@link layer} rather than in the full-page overlay. */\n get _layered() {\n const layer = this.layer;\n return !Utils.isNull(layer) && layer !== document.body;\n }\n /** Appends the SVG to its host ({@link layer} or `document.body`), adapting its overflow and size accordingly. */\n _hostSvg() {\n const svg = this._svg;\n if (Utils.isNull(svg)) {\n return;\n }\n const layered = this._layered;\n // a full-page overlay must not grow the document, a layer must not crop the curve\n svg.style.overflow = layered ? 'visible' : 'hidden';\n this.invalidateSize();\n const host = layered ? this.layer : document.body;\n if (svg.parentNode !== host) {\n host.appendChild(svg);\n }\n }\n /** Resizes the shared full-page SVG overlay to match the current document size; call after layout changes that may affect `document.body`'s scroll size. A {@link layer}-hosted SVG just fills its host. */\n invalidateSize() {\n const svg = this._svg;\n if (Utils.isNull(svg)) {\n return;\n }\n if (this._layered) {\n svg.setAttribute('width', '100%');\n svg.setAttribute('height', '100%');\n return;\n }\n svg.setAttribute('width', document.body.scrollWidth.toString());\n svg.setAttribute('height', document.body.scrollHeight.toString());\n }\n /** Page coordinates of the origin the curve is drawn against: the {@link layer}'s (scrolled) padding box, or the page itself. */\n _getOrigin() {\n if (!this._layered) {\n return { x: 0, y: 0 };\n }\n const layer = this.layer;\n const offset = Utils.offset(layer);\n return {\n x: offset.left + layer.clientLeft - layer.scrollLeft,\n y: offset.top + layer.clientTop - layer.scrollTop\n };\n }\n /** Translates a page-based layout into the coordinates of the drawing origin. */\n _toLocal(size, origin) {\n return { ...size, left: size.left - origin.x, top: size.top - origin.y };\n }\n _computeAnchorPoints(target, anchor, end, ref, refAnchor, refEnd, tension) {\n var p1, p2, c1, c2;\n const top = target.top, left = target.left, w = target.width, h = target.height, w2 = w / 2, h2 = h / 2;\n const r_top = ref.top, r_left = ref.left, r_w = ref.width, r_h = ref.height, r_w2 = r_w / 2, r_h2 = r_h / 2;\n const p1_center = { x: left + w2, y: top + h2 };\n const p2_center = { x: r_left + r_w2, y: r_top + r_h2 };\n const p1_top = { x: left + w2, y: top };\n const p1_bottom = { x: left + w2, y: top + h };\n const p1_left = { x: left, y: top + h2 };\n const p1_right = { x: left + w, y: top + h2 };\n const p2_top = { x: r_left + r_w2, y: r_top };\n const p2_bottom = { x: r_left + r_w2, y: r_top + r_h };\n const p2_left = { x: r_left, y: r_top + r_h2 };\n const p2_right = { x: r_left + r_w, y: r_top + r_h2 };\n const points = {\n 'p1_top': p1_top,\n 'p1_bottom': p1_bottom,\n 'p1_left': p1_left,\n 'p1_right': p1_right,\n 'p2_top': p2_top,\n 'p2_bottom': p2_bottom,\n 'p2_left': p2_left,\n 'p2_right': p2_right,\n };\n var distance_memoizer = {};\n function getDistance(suffix1, suffix2) {\n const key = suffix1 + '_' + suffix2;\n return distance_memoizer[key] = distance_memoizer[key] || Point.distance(points['p1_' + suffix1], points['p2_' + suffix2]);\n }\n if (anchor == BinderAnchor.Auto || refAnchor == BinderAnchor.Auto) {\n //if (anchor == BinderAnchor.Auto && refAnchor == BinderAnchor.Auto) {\n // algorithm for finding the closest edges (1 atan + 4 distances)\n // 1. compute atan of the segment joining the two centers\n const a = { x: p1_center.x, y: -p1_center.y }, b = { x: p2_center.x, y: -p2_center.y };\n const slope = Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI;\n switch (slope) {\n case 0:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Right;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Left;\n break;\n case 90:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Top;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Bottom;\n break;\n case 180:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Left;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Right;\n break;\n case -90:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Bottom;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Top;\n break;\n default:\n // 2. compute distances combining the 4 points (compare 4 distances)\n if (slope < 90 && slope > 0) {\n // right | top vs left | bottom\n let top_2_left = getDistance('top', 'left'), right_2_left = getDistance('right', 'left'), right_2_bottom = getDistance('right', 'bottom'), top_2_bottom = getDistance('top', 'bottom');\n var d = Math.min(top_2_left, right_2_left, right_2_bottom, top_2_bottom);\n switch (d) {\n case top_2_left:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Top;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Left;\n break;\n case top_2_bottom:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Top;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Bottom;\n break;\n case right_2_bottom:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Right;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Bottom;\n break;\n default:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Right;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Left;\n break;\n }\n }\n else if (slope < 180 && slope > 90) {\n // left | top vs right | bottom\n let top_2_right = getDistance('top', 'right'), left_2_right = getDistance('left', 'right'), left_2_bottom = getDistance('left', 'bottom'), top_2_bottom = getDistance('top', 'bottom');\n var d = Math.min(top_2_right, left_2_right, left_2_bottom, top_2_bottom);\n switch (d) {\n case top_2_right:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Top;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Right;\n break;\n case left_2_right:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Left;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Right;\n break;\n case left_2_bottom:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Left;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Bottom;\n break;\n default:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Top;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Bottom;\n break;\n }\n }\n else if (slope < -90) {\n // left | bottom vs right | top\n let bottom_2_right = getDistance('bottom', 'right'), left_2_right = getDistance('left', 'right'), left_2_top = getDistance('left', 'top'), bottom_2_top = getDistance('bottom', 'top');\n var d = Math.min(bottom_2_right, left_2_right, left_2_top, bottom_2_top);\n switch (d) {\n case bottom_2_right:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Bottom;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Right;\n break;\n case left_2_right:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Left;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Right;\n break;\n case left_2_top:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Left;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Top;\n break;\n default:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Bottom;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Top;\n break;\n }\n }\n else {\n // right | bottom vs left | top\n let bottom_2_left = getDistance('bottom', 'left'), right_2_left = getDistance('right', 'left'), right_2_top = getDistance('right', 'top'), bottom_2_top = getDistance('bottom', 'top');\n var d = Math.min(bottom_2_left, right_2_left, right_2_top, bottom_2_top);\n switch (d) {\n case bottom_2_left:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Bottom;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Left;\n break;\n case right_2_left:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Right;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Left;\n break;\n case right_2_top:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Right;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Top;\n break;\n default:\n if (anchor == BinderAnchor.Auto)\n anchor = BinderAnchor.Bottom;\n if (refAnchor == BinderAnchor.Auto)\n refAnchor = BinderAnchor.Top;\n break;\n }\n }\n break;\n }\n //}\n }\n function computeF(e) {\n switch (e) {\n case BinderEnd.Arrow:\n case BinderEnd.FatArrow:\n return 2.0;\n default:\n return 1.0;\n }\n }\n const f = computeF(end), refF = computeF(refEnd);\n // anchor points calc\n switch (anchor) {\n case BinderAnchor.Bottom:\n p1 = p1_bottom;\n break;\n case BinderAnchor.Center:\n p1 = { x: left + w2, y: top + h2 };\n c1 = p1;\n break;\n case BinderAnchor.Left:\n p1 = p1_left;\n break;\n case BinderAnchor.Right:\n p1 = p1_right;\n break;\n case BinderAnchor.Top:\n p1 = p1_top;\n break;\n }\n switch (refAnchor) {\n case BinderAnchor.Bottom:\n p2 = p2_bottom;\n break;\n case BinderAnchor.Center:\n p2 = { x: r_left + r_w2, y: r_top + r_h2 };\n c2 = p2;\n break;\n case BinderAnchor.Left:\n p2 = p2_left;\n break;\n case BinderAnchor.Right:\n p2 = p2_right;\n break;\n case BinderAnchor.Top:\n p2 = p2_top;\n break;\n }\n // control points calc\n switch (tension) {\n case BinderTension.Path:\n // adjust the control points based on the path (not on the masses of the element ends)\n const t = .333; // < tension (fraction of the distance)\n switch (anchor) {\n case BinderAnchor.Bottom:\n c1 = { x: p1.x, y: p1.y + Math.abs(f * t * (p2.y - p1.y)) };\n break;\n case BinderAnchor.Left:\n c1 = { x: p1.x - Math.abs(f * t * (p2.x - p1.x)), y: p1.y };\n break;\n case BinderAnchor.Right:\n c1 = { x: p1.x + Math.abs(f * t * (p2.x - p1.x)), y: p1.y };\n break;\n case BinderAnchor.Top:\n c1 = { x: p1.x, y: p1.y - Math.abs(f * t * (p1.y - p2.y)) };\n break;\n }\n switch (refAnchor) {\n case BinderAnchor.Bottom:\n c2 = { x: p2.x, y: p2.y + Math.abs(refF * t * (p2.y - p1.y)) };\n break;\n case BinderAnchor.Left:\n c2 = { x: p2.x - Math.abs(refF * t * (p2.x - p1.x)), y: p2.y };\n break;\n case BinderAnchor.Right:\n c2 = { x: p2.x + Math.abs(refF * t * (p2.x - p1.x)), y: p2.y };\n break;\n case BinderAnchor.Top:\n c2 = { x: p2.x, y: p2.y - Math.abs(refF * t * (p2.y - p1.y)) };\n break;\n }\n break;\n default:\n // control points computed based on the mass (size) of the element ends\n switch (anchor) {\n case BinderAnchor.Bottom:\n c1 = { x: p1.x, y: p1.y + Math.abs(f * (p1_bottom.y - p1_center.y)) };\n break;\n case BinderAnchor.Left:\n c1 = { x: p1.x - Math.abs(f * (p1_center.x - p1_left.x)), y: p1.y };\n break;\n case BinderAnchor.Right:\n c1 = { x: p1.x + Math.abs(f * (p1_right.x - p1_center.x)), y: p1.y };\n break;\n case BinderAnchor.Top:\n c1 = { x: p1.x, y: p1.y - Math.abs(f * (p1_top.y - p1_center.y)) };\n break;\n }\n switch (refAnchor) {\n case BinderAnchor.Bottom:\n c2 = { x: p2.x, y: p2.y + Math.abs(refF * (p2_bottom.y - p2_center.y)) };\n break;\n case BinderAnchor.Left:\n c2 = { x: p2.x - Math.abs(refF * (p2_center.x - p2_left.x)), y: p2.y };\n break;\n case BinderAnchor.Right:\n c2 = { x: p2.x + Math.abs(refF * (p2_right.x - p2_center.x)), y: p2.y };\n break;\n case BinderAnchor.Top:\n c2 = { x: p2.x, y: p2.y - Math.abs(refF * (p2_top.y - p2_center.y)) };\n break;\n }\n }\n return { points: [p1, c1, p2, c2], anchors: [anchor, refAnchor] };\n }\n /** Updates the cached position/size for the given endpoint (`from` or `to`) and redraws the curve if both ends are known. @param args Pre-computed layout, or omitted to reuse the last known/cached value. */\n refresh(element, args) {\n var path;\n if (Utils.isNull(element) || Utils.isNull(path = this._path)) {\n return;\n }\n const draw = !Utils.isNull(this.from) && !Utils.isNull(this.to);\n const leave = Utils.isNull(this.from) && Utils.isNull(this.to);\n if (this.disabled || !draw) {\n path.removeAttribute('d');\n if (leave) {\n return;\n }\n }\n // compute anchor points\n const key = element === this.from ? 'from' : 'to';\n var anchor = (key === 'from' ? this.fromAnchor : this.toAnchor) || BinderAnchor.Auto;\n if (Utils.isNull(args)) {\n if (!(element instanceof Element)) {\n args = { height: 0, width: 0, left: element.x, top: element.y };\n anchor = BinderAnchor.Center;\n }\n else if (key in this._state) {\n args = this._state[key].size;\n }\n }\n if (Utils.isNull(args)) {\n return;\n }\n this._state[key] = { size: args, anchor };\n if (draw) {\n this._draw();\n }\n }\n //@Debounce()\n _draw() {\n var state1 = this._state['from'], state2 = this._state['to'], path = this._path;\n if (Utils.isNull(path)) {\n return;\n }\n if (Utils.isNullOrEmpty(state1)\n || Utils.isNullOrEmpty(state2)\n || (this.from instanceof HTMLElement && !Utils.isVisible(this.from))\n || (this.to instanceof HTMLElement && !Utils.isVisible(this.to))) {\n path.setAttribute('d', '');\n return;\n }\n const origin = this._getOrigin(), size1 = this._toLocal(state1.size, origin), size2 = this._toLocal(state2.size, origin);\n const { points, anchors } = this._computeAnchorPoints(size1, state1.anchor, this.fromEnd, size2, state2.anchor, this.toEnd, this.tension), p0 = points[0], c0 = points[1], p1 = points[2], c1 = points[3], anchor0 = anchors[0], anchor1 = anchors[1];\n const x0 = p0.x;\n const y0 = p0.y;\n const cx0 = c0.x;\n const cy0 = c0.y;\n const x1 = p1.x;\n const y1 = p1.y;\n const cx1 = c1.x;\n const cy1 = c1.y;\n let dStart = this._getDefaultEndingPath(x0, y0);\n switch (this.fromEnd) {\n case BinderEnd.Arrow:\n dStart = this._getArrowEndingPath(x0, y0, anchor0);\n break;\n case BinderEnd.FatArrow:\n dStart = this._getFatArrowEndingPath(x0, y0, anchor0);\n break;\n case BinderEnd.None:\n dStart = '';\n break;\n }\n let dEnd = this._getDefaultEndingPath(x1, y1);\n switch (this.toEnd) {\n case BinderEnd.Arrow:\n dEnd = this._getArrowEndingPath(x1, y1, anchor1);\n break;\n case BinderEnd.FatArrow:\n dEnd = this._getFatArrowEndingPath(x1, y1, anchor1);\n break;\n case BinderEnd.None:\n dEnd = '';\n break;\n }\n const d = dStart + `M${x0},${y0} C${cx0},${cy0} ${cx1},${cy1} ${x1},${y1}` + dEnd;\n if (d.indexOf('NaN') === -1) {\n path.setAttribute('d', d);\n }\n if (!Utils.isNullOrEmpty(this.color))\n path.style.stroke = this.color;\n }\n _getDefaultEndingPath(x, y) {\n return `M${x - 2},${y - 2} h4 v4 h-4 z`;\n }\n _getArrowEndingPath(x, y, anchor) {\n switch (anchor) {\n case BinderAnchor.Bottom:\n return `M${x - 4},${y + 4} l4,-4 l4,4`;\n case BinderAnchor.Top:\n return `M${x - 4},${y - 4} l4,4 l4,-4`;\n case BinderAnchor.Left:\n return `M${x - 4},${y - 4} l4,4 l-4,4`;\n case BinderAnchor.Right:\n return `M${x + 4},${y - 4} l-4,4 l4,4`;\n default:\n return '';\n }\n }\n _getFatArrowEndingPath(x, y, anchor) {\n switch (anchor) {\n case BinderAnchor.Bottom:\n case BinderAnchor.Top:\n case BinderAnchor.Left:\n case BinderAnchor.Right:\n return this._getArrowEndingPath(x, y, anchor) + ' z';\n default:\n return '';\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: ElementOrPointPropertyConverter })\n], PacemBinderElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ emit: false, converter: ElementOrPointPropertyConverter })\n], PacemBinderElement.prototype, \"to\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinderElement.prototype, \"fromAnchor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinderElement.prototype, \"toAnchor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinderElement.prototype, \"fromEnd\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinderElement.prototype, \"toEnd\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinderElement.prototype, \"tension\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinderElement.prototype, \"color\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemBinderElement.prototype, \"interactive\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemBinderElement.prototype, \"layer\", void 0);\nPacemBinderElement = __decorate([\n CustomElement({ tagName: P + '-binder' })\n], PacemBinderElement);\nexport { PacemBinderElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, Utils, PropertyConverters, Components } from '@pacem/pacem-core';\n// namespace Pacem.Components.UI {\nconst OPEN_CSSCLASS = 'blade-open';\n/** Slide-in panel toggled via its `open` property, dispatching `open`/`close` events as it transitions. */\nlet PacemBladeElement = class PacemBladeElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'open') {\n this._toggle(val);\n }\n }\n _toggle(open = this.open) {\n const fn = open ? Utils.addClass : Utils.removeClass;\n fn(this, OPEN_CSSCLASS);\n const eventName = open ? 'open' : 'close';\n this.dispatchEvent(new Event(eventName));\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemBladeElement.prototype, \"open\", void 0);\nPacemBladeElement = __decorate([\n CustomElement({ tagName: P + '-blade', shadow: true })\n], PacemBladeElement);\nexport { PacemBladeElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, preventDefaultHandler, ViewChild, CustomElementUtils, UI, stopPropagationHandler, avoidHandler } from '@pacem/pacem-core';\nimport { LightboxBehavior } from './lightbox-abstractions';\n// namespace Pacem.Components.UI {\nconst OPEN_CSSCLASS = 'bottom-sheet-open';\n/** Drag handle for an ancestor {@link PacemBottomSheetElement}: renders a small grip icon, toggles the sheet on click and drives its swipe-to-drag behavior. */\nlet PacemBottomSheetHandleElement = class PacemBottomSheetHandleElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._clickHandler = (evt) => {\n const bs = this.#bottomSheet;\n bs.open = !bs.open;\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setIcon();\n this._toggleHandle();\n this.#bottomSheet = CustomElementUtils.findAncestorOfType(this, PacemBottomSheetElement);\n this._bindToBottomSheet();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'iconGlyph':\n this._setIcon(val);\n break;\n case 'disabled':\n this._toggleHandle(val);\n break;\n }\n }\n disconnectedCallback() {\n this.removeEventListener('click', this._clickHandler);\n const bs = this.#bottomSheet;\n if (!Utils.isNull(bs) && bs.isReady) {\n bs._setHandle(null);\n }\n this.#bottomSheet = null;\n super.disconnectedCallback();\n }\n #bottomSheet;\n _bindToBottomSheet() {\n const bs = this.#bottomSheet;\n if (Utils.isNull(bs)) {\n return;\n }\n if (Utils.isNullOrEmpty(this.id)) {\n this.id = ('handle_' + Utils.uniqueCode());\n }\n CustomElementUtils.whenReady(bs, () => {\n bs._setHandle(this);\n this.addEventListener('click', this._clickHandler, false);\n });\n }\n _toggleHandle(disabled = this.disabled) {\n this.style.pointerEvents = disabled ? 'none' : '';\n }\n _setIcon(icon = this.iconGlyph) {\n const ic = this._icon;\n if (!Utils.isNull(ic)) {\n ic.icon = icon ?? 'horizontal_rule';\n }\n }\n};\n__decorate([\n ViewChild(P + '-icon')\n], PacemBottomSheetHandleElement.prototype, \"_icon\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBottomSheetHandleElement.prototype, \"iconGlyph\", void 0);\nPacemBottomSheetHandleElement = __decorate([\n CustomElement({\n tagName: P + '-bottom-sheet-handle', shadow: false, template: `<div class=\"bottom-sheet-handle\">\r\n <${P}-icon class=\"icon-size icon-size-6\"></${P}-icon>\r\n </div>`\n })\n], PacemBottomSheetHandleElement);\nexport { PacemBottomSheetHandleElement };\n/** Mobile-style panel anchored to the bottom of the viewport, draggable (via its {@link PacemBottomSheetHandleElement}) and swipeable open/closed. */\nlet PacemBottomSheetElement = class PacemBottomSheetElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._resizeHandler = (evt) => {\n this._rebuildSwiperSnaps();\n this._setPosition();\n };\n this._panHandler = (e) => {\n const snap = this._swiper.snaps.find(s => s != 0);\n const { delta } = e.detail;\n let pct = (snap < 0 ? delta.clamp(snap, 0) : delta.clamp(0, snap)) / snap;\n if (snap > 0) {\n pct = 1 - pct;\n }\n // console.log(`snap ${snap} - delta ${delta} - pct: ${pct * 100}%`);\n const sqr = 6 * (pct ** 2);\n this.style.backdropFilter = `blur(${sqr.toFixed(2)}px)`;\n };\n this._swipeHandler = (e) => {\n preventDefaultHandler(e);\n switch (e.type) {\n case UI.SwipeEventType.SwipeAnimationEnd:\n this.style.backdropFilter = '';\n return;\n case UI.SwipeEventType.SwipeUpAnimationEnd:\n this.open = true;\n break;\n case UI.SwipeEventType.SwipeDownAnimationEnd:\n this.open = false;\n break;\n }\n this._setPosition();\n };\n this._softReleaseHandler = (e) => {\n avoidHandler(e);\n if (this.behavior !== LightboxBehavior.ExplicitClose) {\n this.open = false;\n }\n };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'open':\n this._toggle(val);\n this._rebuildSwiperSnaps(val);\n break;\n case 'logger':\n this._assignLogger(val);\n break;\n case 'disabled':\n this._toggleSwiper(val);\n break;\n }\n }\n _toggleSwiper(disabled = this.disabled) {\n const swiper = this._swiper;\n if (!Utils.isNull(swiper)) {\n swiper.disabled = disabled;\n }\n }\n /** @internal Wires (or clears) the swiper's drag handle selector to the given {@link PacemBottomSheetHandleElement}. */\n _setHandle(handle) {\n if (Utils.isNull(handle)) {\n this._swiper.handleSelector = null;\n }\n else {\n this._swiper.handleSelector = `#${handle.id}`;\n }\n this._handleResizer.target = handle;\n }\n _assignLogger(v = this.logger) {\n this._swiper.logger = v;\n }\n _rebuildSwiperSnaps(open = this.open) {\n const swiper = this._swiper;\n const snap = this._getSnap(open);\n swiper.snaps = [0, snap].sort();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._assignLogger();\n this._resizer.addEventListener(Components.ResizeEventName, this._resizeHandler);\n this._handleResizer.addEventListener(Components.ResizeEventName, this._resizeHandler);\n const swiper = this._swiper;\n swiper.addEventListener(UI.SwipeEventType.Pan, this._panHandler, false);\n swiper.addEventListener(UI.SwipeEventType.SwipeAnimationEnd, this._swipeHandler, false);\n swiper.addEventListener(UI.SwipeEventType.SwipeUpAnimationEnd, this._swipeHandler, false);\n swiper.addEventListener(UI.SwipeEventType.SwipeDownAnimationEnd, this._swipeHandler, false);\n this._toggle();\n this._rebuildSwiperSnaps();\n this._toggleSwiper();\n this._sheet.addEventListener('pointerdown', stopPropagationHandler, false);\n this.addEventListener('pointerdown', this._softReleaseHandler, false);\n }\n disconnectedCallback() {\n const resizer = this._resizer;\n if (!Utils.isNull(resizer)) {\n resizer.removeEventListener(Components.ResizeEventName, this._resizeHandler);\n }\n const handleResizer = this._handleResizer;\n if (!Utils.isNull(resizer)) {\n handleResizer.removeEventListener(Components.ResizeEventName, this._resizeHandler);\n }\n const swiper = this._swiper;\n if (!Utils.isNull(swiper)) {\n swiper.removeEventListener(UI.SwipeEventType.Pan, this._panHandler);\n swiper.removeEventListener(UI.SwipeEventType.SwipeAnimationEnd, this._swipeHandler);\n swiper.removeEventListener(UI.SwipeEventType.SwipeUpAnimationEnd, this._swipeHandler);\n swiper.removeEventListener(UI.SwipeEventType.SwipeDownAnimationEnd, this._swipeHandler);\n }\n const sheet = this._sheet;\n if (!Utils.isNull(sheet)) {\n sheet.removeEventListener('pointerdown', stopPropagationHandler);\n }\n this.removeEventListener('pointerdown', this._softReleaseHandler);\n super.disconnectedCallback();\n }\n /**\n * Snap (other than 0 := current position) given the current state.\n * Anchor point for sheet is the top of the page, so snap is computed accordingly.\n * @param ope\n * @returns\n */\n _getSnap(open = this.open) {\n const resizer = this._resizer;\n const handleResizer = this._handleResizer;\n if (Utils.isNull(resizer) || Utils.isNull(handleResizer)) {\n return 0;\n }\n const { top: y } = Utils.naturalOffset(resizer.target), { top: hY } = Utils.naturalOffset(handleResizer.target);\n const { height } = resizer.currentSize;\n const { height: hHeight } = handleResizer.currentSize;\n const { height: wHeight } = Utils.windowSize;\n const openSnap /* target to open state */ = Math.max(parseInt(Utils.Css.getVariableValue(`--${PCSS}-layout-header-height`)), wHeight - (height ?? 0)), closedSnap /* target to closed state */ = (wHeight - ((y ?? 0) - (hY ?? 0) + (hHeight ?? 0)));\n const sign = open ? 1 : -1;\n return sign * Math.abs(openSnap - closedSnap);\n }\n /**\n * Css transform to be applied to the sheet in order to have UI consistent with open state.\n * Anchor point for sheet is the bottom of the page, so CSS transform is applied accordingly.\n * @param open\n * @returns\n */\n _getCssTransform(open = this.open) {\n const resizer = this._resizer;\n const handleResizer = this._handleResizer;\n if (Utils.isNull(resizer) || Utils.isNull(handleResizer)) {\n return '';\n }\n if (open) {\n const retval = `translate3d(0, max(var(--${PCSS}-layout-header-height), calc(100vh - 100%)), 0)`;\n return retval;\n }\n else {\n const { top: y } = Utils.naturalOffset(resizer.target), { top: hY, height: hHeight } = Utils.naturalOffset(handleResizer.target);\n const gap = (-(y ?? 0) + (hY ?? 0)) + (hHeight ?? 0);\n const retval = `translate3d(0, calc(100vh - ${gap}px), 0)`;\n // console.log(retval);\n return retval;\n }\n }\n _setPosition(open = this.open) {\n const sheet = this._sheet;\n const transform = this._getCssTransform(open);\n sheet.style.transform = transform;\n //this.style.setProperty(`--${PCSS}-bottom-sheet-transform`, transform);\n }\n _toggle(open = this.open) {\n const fn = open ? Utils.addClass : Utils.removeClass;\n fn(this, OPEN_CSSCLASS);\n //this._sheet.style.animation = '';\n this._sheet.style.transform = '';\n //this.style.setProperty(`--${PCSS}-bottom-sheet-transform`, '');\n const eventName = open ? 'open' : 'close';\n this.dispatchEvent(new Event(eventName));\n }\n};\n__decorate([\n ViewChild(P + '-swipe')\n], PacemBottomSheetElement.prototype, \"_swiper\", void 0);\n__decorate([\n ViewChild(P + '-resize')\n], PacemBottomSheetElement.prototype, \"_resizer\", void 0);\n__decorate([\n ViewChild(P + '-resize[handle]')\n], PacemBottomSheetElement.prototype, \"_handleResizer\", void 0);\n__decorate([\n ViewChild(P + '-panel.bottom-sheet', true)\n], PacemBottomSheetElement.prototype, \"_sheet\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemBottomSheetElement.prototype, \"open\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBottomSheetElement.prototype, \"behavior\", void 0);\nPacemBottomSheetElement = __decorate([\n CustomElement({\n tagName: P + '-bottom-sheet', shadow: false /* css priority would be a mess otherwise */, template: `\r\n <${P}-swipe direction=\"vertical\" options='{ \"bouncy\": false }'></${P}-swipe>\r\n <${P}-resize target=\"{{ ::_sheet }}\"></${P}-resize>\r\n <${P}-resize handle></${P}-resize>\r\n <${P}-panel class=\"bottom-sheet\" behaviors=\"{{ [::_swiper] }}\">\r\n <${P}-content></${P}-content>\r\n </${P}-panel>`\n })\n], PacemBottomSheetElement);\nexport { PacemBottomSheetElement };\n//}\n", "//namespace Pacem.Components.UI {\n/** How a {@link Lightbox} reacts to a click outside its content. */\nexport var LightboxBehavior;\n(function (LightboxBehavior) {\n LightboxBehavior[\"ClickOutsideClose\"] = \"clickOutsideClose\";\n LightboxBehavior[\"ExplicitClose\"] = \"explicitClose\";\n})(LightboxBehavior || (LightboxBehavior = {}));\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, CommandEvent } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Clickable button element with optional icon, command dispatching (via {@link CommandEvent}) and an optional confirmation dialog gate. */\nlet PacemButtonElement = class PacemButtonElement extends Components.PacemIterableElement {\n constructor() {\n super('button');\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute('tab-order')) {\n this.tabOrder = 0;\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'iconGlyph':\n // suppose ligatures enabled\n case 'iconUrl':\n // handle this via css attr(), considering that it's the proper way to access and modify pseudo::before content\n this.dataset[name] = val;\n break;\n }\n }\n emit(evt) {\n let fn = (ev) => {\n super.emit(ev);\n if (!ev.defaultPrevented) {\n if (ev.type === 'click' && !Utils.isNullOrEmpty(this.commandName)) {\n this.dispatchEvent(new CommandEvent({ commandName: this.commandName, commandArgument: this.commandArgument }));\n }\n /*\n TODO: make this component shadowed and include a real <button> as the part holding the actual content (<slot>).\n When events like 'mousedown', 'mouseup', get fired => check for the <button> element.matchs(':active') and apply relevant css\n\n Share the behavior with PacemAnchorElement.\n */\n switch (ev.type) {\n case 'mousedown':\n if (evt.button === 0) {\n Utils.addClass(this, PCSS + '-active');\n }\n break;\n case 'pointerdown':\n Utils.addClass(this, PCSS + '-active');\n break;\n case 'keydown':\n if (ev.keyCode === 32 || ev.keyCode === 13) {\n evt.preventDefault();\n Utils.addClass(this, PCSS + '-active');\n }\n break;\n case 'blur':\n case 'mouseup':\n case 'pointerup':\n case 'click':\n Utils.removeClass(this, PCSS + '-active');\n break;\n case 'keyup':\n if (ev.keyCode === 32 || ev.keyCode === 13) {\n this.click();\n Utils.removeClass(this, PCSS + '-active');\n }\n break;\n }\n }\n };\n if (!this.disabled && evt.type === 'click' && !Utils.isNull(this.confirmationDialog)) {\n this.confirmationDialog.open(this.confirmationMessage, true).then(r => {\n //if (r.button === DialogButton.Yes || r.button === DialogButton.Ok)\n fn(evt);\n });\n }\n else if (!(evt instanceof MouseEvent) || evt.button === 0) {\n fn(evt);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemButtonElement.prototype, \"iconGlyph\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemButtonElement.prototype, \"iconUrl\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemButtonElement.prototype, \"commandName\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemButtonElement.prototype, \"commandArgument\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemButtonElement.prototype, \"confirmationMessage\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemButtonElement.prototype, \"confirmationDialog\", void 0);\nPacemButtonElement = __decorate([\n CustomElement({\n tagName: P + '-button',\n modifiers: ['hoverable', 'focusable', 'clickable']\n })\n], PacemButtonElement);\nexport { PacemButtonElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Components } from '@pacem/pacem-core';\nimport { PacemButtonElement } from './button';\n//namespace Pacem.Components.UI {\n/** Groups {@link PacemButtonElement} children into a single iterable/selectable set, focusing the item matching `index`. */\nlet PacemButtonsetElement = class PacemButtonsetElement extends Components.PacemIterativeElement {\n connectedCallback() {\n super.connectedCallback();\n if (!('tabindex' in this.attributes))\n this.tabIndex = 0;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'index':\n let ndx = 0;\n for (var btn of this.items) {\n if (ndx == val) {\n btn.focus();\n break;\n }\n ndx++;\n }\n break;\n }\n }\n validate(item) {\n return item instanceof PacemButtonElement;\n }\n};\nPacemButtonsetElement = __decorate([\n CustomElement({\n tagName: P + '-buttonset'\n })\n], PacemButtonsetElement);\nexport { PacemButtonsetElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, ViewChild, Utils, PropertyConverters, Components, CustomTypedEvent, PropertyChangeEvent, Defaults, CustomElementUtils, Debounce, PropertyChangeEventName } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Granularity of a calendar/schedule/agenda view. */\nexport var CalendarZoom;\n(function (CalendarZoom) {\n CalendarZoom[\"Month\"] = \"month\";\n CalendarZoom[\"Week\"] = \"week\";\n CalendarZoom[\"Day\"] = \"day\";\n})(CalendarZoom || (CalendarZoom = {}));\n/** Event dispatched by a {@link PacemCalendarBaseElement} whenever its `viewDate` changes, carrying the new date. */\nexport class ViewDateChangeEvent extends CustomTypedEvent {\n constructor(date) {\n super('viewdatechange', date);\n }\n}\n/** Event dispatched (and bubbling) when a day is selected on a {@link PacemCalendarElement}, carrying the selected date. */\nexport class DateSelectEvent extends CustomTypedEvent {\n constructor(date) {\n super('dateselect', date, { bubbles: true });\n }\n}\n/** Event dispatched (and bubbling) when a time slot is selected on a {@link PacemAgendaElement}, carrying the selected date/time. */\nexport class TimeSelectEvent extends CustomTypedEvent {\n constructor(date) {\n super('timeselect', date, { bubbles: true });\n }\n}\nconst MSECS_PER_HOUR = 1000 * 60 * 60;\nconst MSECS_PER_DAY = MSECS_PER_HOUR * 24;\nconst DAY_HOURS = [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5,\n 12, 12.5, 13, 13.5, 14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18, 18.5, 19, 19.5, 20, 20.5, 21, 21.5, 22, 22.5, 23, 23.5];\nlet now = new Date();\nconst DUMMY_DATE = Utils.Dates.dateOnly(now).valueOf();\nconst DAYS_OF_WEEK = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n/** A single event/appointment item, meant as a child of a {@link PacemCalendarWithEventsBaseElement} (e.g. {@link PacemCalendarElement} or {@link PacemAgendaElement}). */\nlet PacemCalendarEventElement = class PacemCalendarEventElement extends Components.PacemItemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n let container = this.container;\n if (!Utils.isNull(container)) {\n // trigger propertychange for `items`\n container.dispatchEvent(new PropertyChangeEvent({ propertyName: 'items', oldValue: container.items, currentValue: container.items }));\n }\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemCalendarEventElement.prototype, \"start\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemCalendarEventElement.prototype, \"end\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarEventElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemCalendarEventElement.prototype, \"place\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemCalendarEventElement.prototype, \"allDay\", void 0);\nPacemCalendarEventElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-event'\n })\n], PacemCalendarEventElement);\nexport { PacemCalendarEventElement };\n/** Event dispatched when a {@link PacemCalendarEventElement} rendering gains focus/selection within its host calendar. */\nexport class CalendarEventSelectEvent extends CustomTypedEvent {\n constructor(args) {\n super(\"eventselect\", args, { bubbles: false, cancelable: true });\n }\n}\n/** Event dispatched when a {@link PacemCalendarEventElement} rendering loses focus/selection within its host calendar. */\nexport class CalendarEventUnselectEvent extends CustomTypedEvent {\n constructor(args) {\n super(\"eventunselect\", args, { bubbles: false, cancelable: true });\n }\n}\n/** Base class shared by the calendar-family elements ({@link PacemCalendarElement}, {@link PacemAgendaElement}, {@link PacemScheduleElement}): holds the current view date/zoom/week/month grids and the {@link PacemCalendarEventElement} items collection. */\nexport class PacemCalendarBaseElement extends Components.PacemItemsContainerElement {\n validate(item) {\n return item instanceof PacemCalendarEventElement;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'viewDate' || name === 'weekStart') {\n this._synchronizeWeek();\n }\n switch (name) {\n case 'viewDate':\n this.dispatchEvent(new ViewDateChangeEvent(val));\n Utils.removeClass(this, \"viewdate-next viewdate-previous\");\n requestAnimationFrame(() => {\n Utils.addClass(this, old > val ? \"viewdate-previous\" : \"viewdate-next\");\n });\n break;\n case 'zoom':\n Utils.removeClass(this, \"viewdate-next viewdate-previous\");\n break;\n }\n }\n // #region PROTECTED\n oneventselect(el, evt) {\n this.dispatchEvent(new CalendarEventSelectEvent({ element: el, event: evt }));\n }\n oneventunselect(el, evt) {\n this.dispatchEvent(new CalendarEventUnselectEvent({ element: el, event: evt }));\n }\n getHeaderLabel(d, f) {\n const options = f === CalendarZoom.Week ? { weekday: 'short', day: 'numeric', month: 'numeric' }\n : (f === CalendarZoom.Day ? { weekday: 'long' } : /* fallback: month */ { weekday: 'short' });\n return Utils.parseDate(d).toLocaleString(Utils.lang(this), options);\n }\n getDayLabel(d) {\n const options = d.getDate() == 1 ? { month: 'short', day: 'numeric' } : { day: 'numeric' };\n return Utils.parseDate(d).toLocaleString(Utils.lang(this), options);\n }\n getHourLabel(d) {\n const options = { hour: 'numeric' /*, minute: 'numeric'*/ };\n return Utils.parseDate(d).toLocaleString(Utils.lang(this), options);\n }\n getTimeLabel(d) {\n const options = { hour: 'numeric', minute: 'numeric' };\n return Utils.parseDate(d).toLocaleString(Utils.lang(this), options);\n }\n isNow(d, now) {\n const d0 = Utils.parseDate(d), v = Utils.parseDate(now || new Date());\n return d0.getHours() === v.getHours() && this.isToday(d, now);\n }\n isToday(d, now) {\n return this.isDate(d, now || new Date());\n }\n isViewDay(d, vd = this.viewDate) {\n return this.isDate(d, vd || this.viewDate || new Date());\n }\n isDate(expected, d) {\n if (!Utils.Dates.isDate(d) || !Utils.Dates.isDate(expected)) {\n return false;\n }\n const d0 = Utils.parseDate(expected), v = Utils.parseDate(d);\n return d0.getDate() === v.getDate() && d0.getMonth() == v.getMonth() && d0.getFullYear() === v.getFullYear();\n }\n isViewWeek(d) {\n const d0 = Utils.parseDate(d);\n return this.week && this.week.find(d1 => d1.getDate() == d0.getDate() && d1.getMonth() == d0.getMonth() && d1.getDate() == d0.getDate());\n }\n isViewMonth(d) {\n const d0 = Utils.parseDate(d), v = Utils.parseDate(this.viewDate || new Date());\n return d0.getMonth() == v.getMonth() && d0.getFullYear() === v.getFullYear();\n }\n isTimeSlotDisabled(ranges, d, h) {\n if (!Utils.isNullOrEmpty(ranges)) {\n h = h || 0;\n const slotDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), Math.floor(h), 60 * (h % 1)), tz = slotDate.getTimezoneOffset(), slot = slotDate.valueOf() - (tz * 60 * 1000);\n for (let range of ranges) {\n let from = Utils.Dates.parse(range.from), to = Utils.Dates.parse(range.to);\n if ((!from || (from && from.valueOf() <= slot))\n && (!to || (to && to.valueOf() > slot))\n && (to || from)) {\n return true;\n }\n }\n }\n return false;\n }\n // #endregion\n // #region PRIVATE\n _getWeekStart(day, weekstart) {\n let dow = day.getDay(), v = day.valueOf();\n const tget = (weekstart || 'm').toLowerCase().startsWith('m') ? 1 : 0;\n if (dow === tget) {\n return v;\n }\n if (dow === 0) {\n // damn 0-indexed sunday, skip to the previous one\n dow = 7;\n }\n return v + (tget - dow) * MSECS_PER_DAY;\n }\n _getDatasource(d, w = this.weekStart) {\n let day = Utils.Dates.dateOnly(Utils.parseDate(d));\n const ds = this.month;\n let _d0 = ds && ds.length && ds[0] && ds[0].length && ds[0][0];\n if (_d0 && _d0.getMonth() == day.getMonth() && _d0.getFullYear() == day.getFullYear()\n && ds.find(wk => !Utils.isNull(wk.find(dy => dy.valueOf() == day.valueOf())))) {\n // return the \"convenient\" datasource\n return ds;\n }\n //\n // month\n let d1 = new Date(day.getFullYear(), day.getMonth(), 1);\n let date1 = this._getWeekStart(d1, w);\n let month = [];\n let week = [];\n do {\n let date = Utils.Dates.dateOnly(new Date(date1));\n week.push(date);\n if (week.length == 7) {\n month.push(week.splice(0));\n }\n date1 = date.valueOf() + MSECS_PER_DAY + /* beware of day-light-saving occurrences */ MSECS_PER_HOUR;\n } while (month.length < 6);\n //\n return this.month = month;\n }\n _synchronizeWeek() {\n const viewDate = Utils.parseDate(this.viewDate);\n const vd = new Date(viewDate.getFullYear(), viewDate.getMonth(), 1);\n const ds = this._getDatasource(vd, this.weekStart);\n const week = ds.filter((w, j) => w.some(d => d.getDate() == viewDate.getDate() && d.getMonth() == viewDate.getMonth() && d.getFullYear() == viewDate.getFullYear()))[0];\n if (!(this.week && this.week.length) || this.week[0] !== week[0]) {\n this.week = week;\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemCalendarBaseElement.prototype, \"viewDate\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemCalendarBaseElement.prototype, \"now\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarBaseElement.prototype, \"zoom\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarBaseElement.prototype, \"weekStart\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemCalendarBaseElement.prototype, \"week\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemCalendarBaseElement.prototype, \"month\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemCalendarBaseElement.prototype, \"disabledRanges\", void 0);\n/** Base class for calendar-family elements that render their {@link PacemCalendarEventElement} items into a positioned grid (see {@link PacemCalendarElement}, {@link PacemAgendaElement}); subclasses supply the grid-building logic via `buildDataSource`. */\nexport class PacemCalendarWithEventsBaseElement extends PacemCalendarBaseElement {\n constructor() {\n super(...arguments);\n this._datasource = [];\n }\n /** @readonly Gets the computed, per-row (week or day) grid of positioned event items ready for rendering. */\n get datasource() {\n return this._datasource;\n }\n _getSortedItems(items) {\n return items.slice().sort((a, b) => {\n const a_start = a.start.valueOf(), b_start = b.start.valueOf();\n if (a_start != b_start) {\n return a_start < b_start ? -1 : 1;\n }\n const a_end = a.end.valueOf(), b_end = b.end.valueOf(), a_span = a_end - a_start, b_span = b_end - b_start;\n if (a_span != b_span) {\n return a_span > b_span ? -1 : 1;\n }\n return 0;\n });\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'month':\n case 'week':\n case 'items':\n case 'zoom':\n case 'viewDate':\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n let oldval = this._datasource;\n let newval = this._datasource = this.buildDataSource(this._getSortedItems(this.items || []));\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'datasource', oldValue: oldval, currentValue: newval }));\n });\n break;\n }\n }\n}\nfunction getWeeklyEventDataItems(items, week) {\n let lbound = week.length - 1, wstart = week[0].valueOf(), wend = week[lbound].valueOf();\n return items.filter(evt => {\n let startDate = Utils.Dates.dateOnly(evt.start);\n let endDate = Utils.Dates.dateOnly(evt.end);\n return startDate.valueOf() <= wend && endDate.valueOf() >= wstart;\n }).map(evt => {\n let startDate = Utils.Dates.dateOnly(evt.start), start = week.find(d => d.valueOf() == startDate.valueOf()), startIndex = week.indexOf(start);\n let endDate = Utils.Dates.dateOnly(evt.end), end = week.find(d => d.valueOf() == endDate.valueOf()), endIndex = week.indexOf(end);\n let ndx0 = startIndex == -1 ? 0 : startIndex, ndx1 = endIndex == -1 ? lbound : endIndex;\n return {\n start: evt.start, end: evt.end,\n allDay: true,\n // indexes\n day: ndx0,\n continuing: { start: startIndex == -1, end: endIndex == -1 },\n // span (may be column- or row-)\n span: ndx1 + 1 - ndx0,\n caption: evt.caption,\n event: evt\n };\n });\n}\n// #region AGENDA\nfunction buildAgendaGrid() {\n let grid = '';\n for (let day = 0; day < 7; day++) {\n if (day == 0) {\n grid += `<div class=\"agenda-left all-day\"></div>`;\n }\n grid += `<${P}-panel class=\"agenda-slot all-day day-${(day + 1)}\" css-class=\"{{ {'viewday': :host.isViewDay(:host.week[${day}], :host.viewDate), 'today': :host.isToday(:host.week[${day}], :host.now)} }}\"></${P}-panel>`;\n }\n for (let day = 0; day < 7; day++) {\n for (let hour of DAY_HOURS) {\n let whole = hour % 1 == 0;\n let css = `hour-${whole ? 'whole' : 'half'}`;\n if (day == 0 && whole) {\n grid += `<${P}-text class=\"agenda-left ${css} hour-${hour * 2 + 1}\"\" text=\"{{ :host.getHourLabel(${DUMMY_DATE + hour * MSECS_PER_HOUR}) }}\"></${P}-text>`;\n }\n grid += `<${P}-panel on-click=\":host.time = Pacem.Utils.Dates.parse(:host.week[${day}].valueOf() + ${(hour * MSECS_PER_HOUR)})\" disabled=\"{{ :host.isTimeSlotDisabled(:host.disabledRanges, :host.week[${day}], ${hour}) }}\" class=\"agenda-slot ${css} day-${(day + 1)} hour-${hour * 2 + 1}\" css-class=\"{{ {'viewday': :host.isViewDay(:host.week[${day}], :host.viewDate), 'today': :host.isToday(:host.week[${day}], :host.now)} }}\"></${P}-panel>`;\n }\n }\n return grid;\n}\n/** Renders a day/week hourly grid (\"agenda\" view) with an all-day row, placing {@link PacemCalendarEventElement} items on the timeline and dispatching {@link TimeSelectEvent} on slot click. */\nlet PacemAgendaElement = class PacemAgendaElement extends PacemCalendarWithEventsBaseElement {\n constructor() {\n super(...arguments);\n this._allDayDatasource = [];\n }\n buildDataSource(items) {\n var week = this.week;\n if (this.zoom === CalendarZoom.Day) {\n week = [Utils.Dates.dateOnly(this.viewDate)];\n }\n let ds = [];\n if (!Utils.isNull(week)) {\n // alldays\n this.dispatchEvent(new PropertyChangeEvent({\n propertyName: 'allDayDatasource',\n oldValue: this._allDayDatasource,\n currentValue: this._allDayDatasource = getWeeklyEventDataItems(items.filter(evt => {\n return (evt.end.valueOf() - evt.start.valueOf()) >= MSECS_PER_DAY;\n }), week)\n }));\n // hourlies\n for (let j = 0; j < week.length; j++) {\n let day = week[j], dayValue = day.valueOf(), \n // search for events in this week\n dayItems = items.filter(evt => {\n let startDate = Utils.Dates.dateOnly(evt.start);\n let endDate = Utils.Dates.dateOnly(evt.end);\n return startDate.valueOf() <= dayValue && endDate.valueOf() >= dayValue;\n }).map(evt => {\n let evtStart = evt.start.valueOf(), evtEnd = evt.end.valueOf();\n let retval = {\n allDay: evt.allDay || (evtEnd - evtStart) >= MSECS_PER_DAY,\n continuing: { start: evtStart < dayValue, end: evtEnd > (dayValue + MSECS_PER_DAY) },\n caption: evt.caption,\n hour: 0,\n span: DAY_HOURS.length - 1,\n offset: { start: \"0\", end: \"0\" },\n event: evt\n };\n let startHour = evt.start.getHours() + evt.start.getMinutes() / 60, startIndex = retval.continuing.start ? 0 : Math.floor(startHour * 2), endHour = evt.end.getHours() + evt.end.getMinutes() / 60, endIndex = -1 + (retval.continuing.end ? DAY_HOURS.length : Math.ceil(endHour * 2));\n let endNdx = endIndex + 1, end = endNdx >= DAY_HOURS.length ? 24 : DAY_HOURS[endNdx];\n let fullSpan = end - DAY_HOURS[startIndex];\n retval.hour = startIndex;\n retval.span = 1 + endIndex - startIndex;\n // offsets\n if (!retval.continuing.start) {\n // compute correct start offset\n retval.offset.start = (((startHour - DAY_HOURS[startIndex]) / fullSpan) * 100) + \"%\";\n }\n if (!retval.continuing.end) {\n // compute correct end offset\n retval.offset.end = (((end - endHour) / fullSpan) * 100) + \"%\";\n }\n return retval;\n });\n //\n ds.push(dayItems);\n }\n }\n return ds;\n }\n /** @readonly Gets the computed all-day row of positioned event items ready for rendering. */\n get allDayDatasource() {\n return this._allDayDatasource;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n const clock = this._clock;\n if (name === 'time') {\n this.dispatchEvent(new TimeSelectEvent(val));\n }\n else if (!Utils.isNull(clock)) {\n if (name === 'now') {\n clock.now = val;\n clock.className = `hour-${val.getHours()} minute-${val.getMinutes()}`;\n }\n if (name === 'now' || name === 'zoom' || name === 'viewDate') {\n const d = this.now, z = this.zoom;\n const showClock = d && z && ((this.isViewDay(d) && z === CalendarZoom.Day)\n || (this.isViewWeek(d) && z === CalendarZoom.Week));\n clock.hidden = !showClock;\n }\n }\n }\n};\n__decorate([\n ViewChild(P + '-clock')\n], PacemAgendaElement.prototype, \"_clock\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemAgendaElement.prototype, \"time\", void 0);\nPacemAgendaElement = __decorate([\n CustomElement({\n tagName: P + '-agenda', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater class=\"${PCSS}-agenda agenda-grid\" datasource=\"{{ :host.datasource }}\">${buildAgendaGrid()}<${P}-clock hidden></${P}-clock>\r\n <template>\r\n <${P}-repeater class=\"agenda-day\" datasource=\"{{ ^item }}\">\r\n <template>\r\n <${P}-panel class=\"agenda-event-wrapper\" \r\ncss-class=\"{{ ['hour-start-'+ (^item.hour + 1), 'hour-end-'+ (^item.hour + ^item.span +1), 'day-start-'+ (!^item.continuing.start), 'day-end-'+ (!^item.continuing.end)] }}\">\r\n <${P}-panel class=\"agenda-event\" css=\"{{ {'top': ^item.offset.start, 'bottom': ^item.offset.end} }}\" tab-order=\"{{ (^^index + 1) * 1000 + (^item.hour + 1) * 100 + ^index }}\"\r\n on-focus=\":host.oneventselect($this, ^item.event)\" on-blur=\":host.oneventunselect($this, ^item.event)\">\r\n <${P}-span class=\"event-caption\" text=\"{{ ^item.caption }}\"></${P}-span>\r\n </${P}-panel>\r\n </${P}-panel>\r\n </template>\r\n </${P}-repeater>\r\n </template>\r\n <${P}-repeater class=\"agenda-allday\" datasource=\"{{ :host.allDayDatasource }}\">\r\n <template>\r\n <${P}-panel class=\"agenda-event\" tab-order=\"{{ (^index + 1) * 500 + (^item.day + 1) * 50 + ^index }}\" css-class=\"{{ ['day-start-'+ (^item.day + 1), 'day-end-'+ (^item.day + ^item.span + 1)] }}\"\r\n on-focus=\":host.oneventselect($this, ^item.event)\" on-blur=\":host.oneventunselect($this, ^item.event)\">\r\n <${P}-text class=\"event-caption\" text=\"{{ ^item.caption }}\"></${P}-text>\r\n </${P}-panel>\r\n </template>\r\n </${P}-repeater>\r\n</${P}-repeater><${P}-content></${P}-content>`\n })\n], PacemAgendaElement);\nexport { PacemAgendaElement };\n// #endregion\n// #region CALENDAR\nfunction buildCalendarGrid() {\n let grid = '';\n for (let week = 0; week < 6; week++) {\n for (let day = 0; day < 7; day++) {\n let css = `class=\"calendar-day week-${week + 1} day-${day + 1}\"`;\n grid += `<${P}-panel disabled=\"{{ :host.isTimeSlotDisabled(:host.disabledRanges, :host.month[${week}][${day}]) }}\" on-click=\":host._setDate(:host.month[${week}][${day}])\" ${css} css-class=\"{{ {'viewmonth': :host.isViewMonth(:host.month[${week}][${day}]), 'viewday': :host.isViewDay(:host.month[${week}][${day}], :host.viewDate), 'today': :host.isToday(:host.month[${week}][${day}], :host.now), 'selected-date': :host.isDate(:host.month[${week}][${day}], :host.date)} }}\"><${P}-span culture=\"{{ :host.culture }}\" class=\"text-ellipsed\" text=\"{{ :host.getDayLabel(:host.month[${week}][${day}], :host._formatVersion) }}\"></${P}-span></${P}-panel>`;\n }\n }\n return grid;\n}\n/** Renders a classic month grid, placing {@link PacemCalendarEventElement} items on their spanning day cells and dispatching {@link DateSelectEvent} on day click. */\nlet PacemCalendarElement = class PacemCalendarElement extends PacemCalendarWithEventsBaseElement {\n buildDataSource(items) {\n const month = this.month;\n let ds = [];\n if (!Utils.isNull(month)) {\n for (let j = 0; j < month.length; j++) {\n let week = month[j], \n // search for events in this week\n weekItems = getWeeklyEventDataItems(items, week);\n //\n ds.push(weekItems);\n }\n }\n return ds;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n //case 'date':\n // this.dispatchEvent(new DateSelectEvent(val));\n // break;\n case 'dayLabelFormatter':\n this._formatVersion = Date.now();\n break;\n }\n }\n _setDate(d) {\n if (d?.valueOf() !== this.date?.valueOf()) {\n this.date = d;\n this.dispatchEvent(new DateSelectEvent(d));\n }\n }\n getDayLabel(d, _ = this._formatVersion) {\n const labeler = this.dayLabelFormatter;\n if (typeof labeler === 'function') {\n return labeler(d);\n }\n return super.getDayLabel(d);\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemCalendarElement.prototype, \"date\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemCalendarElement.prototype, \"dayLabelFormatter\", void 0);\n__decorate([\n Watch()\n], PacemCalendarElement.prototype, \"_formatVersion\", void 0);\nPacemCalendarElement = __decorate([\n CustomElement({\n tagName: P + '-calendar', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater class=\"${PCSS}-calendar calendar-grid\" datasource=\"{{ :host.datasource }}\">${buildCalendarGrid()}\r\n <template>\r\n <${P}-repeater class=\"calendar-week\" datasource=\"{{ ^item }}\">\r\n <template>\r\n <${P}-panel class=\"calendar-event\" tab-order=\"{{ (^^index + 1) * 1000 + (^item.day + 1) * 100 + ^index }}\" \r\n on-focus=\":host.oneventselect($this, ^item.event)\" on-blur=\":host.oneventunselect($this, ^item.event)\"\r\n css-class=\"{{ ['day-start-'+ (^item.day + 1), 'day-end-'+ (^item.day + ^item.span + 1)] }}\">\r\n <${P}-span class=\"event-startdate\" culture=\"{{ :host.culture }}\" hide=\"{{ ^item.continuing.start }}\" text=\"{{ :host.getTimeLabel(^item.event.start) }}\"></${P}-span>\r\n <${P}-span class=\"event-caption\" text=\"{{ ^item.caption }}\"></${P}-span>\r\n </${P}-panel>\r\n </template>\r\n </${P}-repeater>\r\n </template>\r\n</${P}-repeater><${P}-content></${P}-content>`\n })\n], PacemCalendarElement);\nexport { PacemCalendarElement };\n// #endregion\n// #region CLOCK (to be worked on: many possibilities ahead)\n/** Displays (and CSS-classes itself by) the current hour/minute; typically overlaid on a {@link PacemAgendaElement} to mark the current-time line. */\nlet PacemClockElement = class PacemClockElement extends Components.PacemElement {\n};\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemClockElement.prototype, \"now\", void 0);\nPacemClockElement = __decorate([\n CustomElement({ tagName: P + '-clock' })\n], PacemClockElement);\nexport { PacemClockElement };\n// #endregion\n// #region SCHEDULE\nfunction buildCalendarHeader() {\n let header = '';\n for (let day = 0; day < 7; day++) {\n header += `<${P}-span culture=\"{{ :host.culture }}\" css-class=\"{{ {'viewday': :host.isViewDay(:host.week[${day}], :host.viewDate)} }}\" class=\"schedule-heading day-${day + 1} text-ellipsed\" text=\"{{ :host.getHeaderLabel(:host.week[${day}], :host.zoom) }}\"></${P}-span>`;\n }\n const id = \"dock_\" + Utils.uniqueCode();\n return `<div class=\"schedule-header schedule-grid\"><div class=\"heading-left\"></div>${header}</div>`;\n}\n/** Combines a {@link PacemCalendarElement} (month view) and a {@link PacemAgendaElement} (day/week view) into a single scheduler, switching between them based on `zoom`. */\nlet PacemScheduleElement = class PacemScheduleElement extends PacemCalendarBaseElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._calendar.addEventListener('dateselect', this.emitHandler, false);\n this._agenda.addEventListener('timeselect', this.emitHandler, false);\n // bootstrap\n this.now = new Date();\n }\n disconnectedCallback() {\n if (this._calendar) {\n this._calendar.removeEventListener('dateselect', this.emitHandler, false);\n this._agenda.removeEventListener('timeselect', this.emitHandler, false);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild(P + '-calendar')\n], PacemScheduleElement.prototype, \"_calendar\", void 0);\n__decorate([\n ViewChild(P + '-agenda')\n], PacemScheduleElement.prototype, \"_agenda\", void 0);\nPacemScheduleElement = __decorate([\n CustomElement({\n tagName: P + '-schedule', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-schedule\" css-class=\"{{ ['schedule-'+ (:host.zoom || '${CalendarZoom.Month}')] }}\">\r\n <${P}-timer interval=\"10000\" on-tick=\":host.now = Pacem.Utils.parseDate(Date.now())\"></${P}-timer>\r\n ${buildCalendarHeader()}\r\n <${P}-agenda disabled-ranges=\"{{ :host.disabledRanges }}\" on-eventselect=\":host.handle($event)\" on-eventunselect=\":host.handle($event)\" now=\"{{ :host.now }}\" culture=\"{{ :host.culture }}\" view-date=\"{{ :host.viewDate }}\" zoom=\"{{ :host.zoom }}\" week-start=\"{{ :host.weekStart }}\" items=\"{{ :host.items }}\"></${P}-agenda>\r\n <${P}-calendar disabled-ranges=\"{{ :host.disabledRanges }}\" on-eventselect=\":host.handle($event)\" on-eventunselect=\":host.handle($event)\" now=\"{{ :host.now }}\" culture=\"{{ :host.culture }}\" view-date=\"{{ :host.viewDate }}\" zoom=\"{{ :host.zoom }}\" week-start=\"{{ :host.weekStart }}\" items=\"{{ :host.items }}\"></${P}-calendar>\r\n <${P}-content></${P}-content>\r\n</${P}-panel>`\n })\n], PacemScheduleElement);\nexport { PacemScheduleElement };\n// #endregion\n// #region RULES\n/** Base class for declarative rule elements that compute and inject {@link DateRange}s into an ancestor {@link PacemCalendarBaseElement}'s `disabledRanges` (e.g. {@link PacemCalendarDayOfWeekRuleElement}). */\nexport class PacemCalendarRuleBaseElement extends HTMLElement {\n constructor() {\n super(...arguments);\n this._disabledRanges = [];\n }\n viewActivatedCallback() {\n if (!Utils.isNull(this._target = CustomElementUtils.findAncestor(this, node => node instanceof PacemCalendarBaseElement))) {\n this.refreshDisabledRanges();\n }\n else {\n throw `Missing ancestor calendar element for ${this.constructor.name}.`;\n }\n }\n disconnectedCallback() {\n this._target = undefined;\n }\n /** @readonly Gets the ancestor calendar element this rule applies its disabled ranges to. */\n get target() {\n return this._target;\n }\n refreshDisabledRanges() {\n if (Utils.isNullOrEmpty(this._target)) {\n // TODO: throw\n return;\n }\n let actualRanges = this._target.disabledRanges || [];\n // cleanup old ones\n for (let range of this._disabledRanges) {\n let ndx = actualRanges.indexOf(range);\n if (ndx >= 0) {\n actualRanges.splice(ndx, 1);\n }\n }\n // add new ones\n this._disabledRanges = this.computeDisabledRanges() || [];\n for (let range of this._disabledRanges) {\n actualRanges.push(range);\n }\n this._target.disabledRanges = actualRanges;\n }\n}\n__decorate([\n Debounce(true)\n], PacemCalendarRuleBaseElement.prototype, \"refreshDisabledRanges\", null);\n/** Declarative {@link PacemCalendarRuleBaseElement} that disables every day of the ancestor calendar not listed in `days` (e.g. weekends). */\nlet PacemCalendarDayOfWeekRuleElement = class PacemCalendarDayOfWeekRuleElement extends PacemCalendarRuleBaseElement {\n constructor() {\n super(...arguments);\n this._daysOfWeek = [];\n this._calendarChangeHandler = (evt) => {\n if (evt.detail.propertyName == 'month') {\n this.refreshDisabledRanges();\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.target.addEventListener(PropertyChangeEventName, this._calendarChangeHandler, false);\n }\n propertyChangedCallback(name, old, val, first) {\n if (name === 'days') {\n this._daysOfWeek = (val || []).map(i => DAYS_OF_WEEK.indexOf(i)).filter(i => i >= 0);\n this.refreshDisabledRanges();\n }\n }\n computeDisabledRanges() {\n let retval = [];\n for (let week of this.target.month) {\n for (let day of week) {\n if (this._daysOfWeek.indexOf(day.getDay()) == -1) {\n let from = Utils.Dates.dateOnly(day), to = Utils.Dates.dateOnly(new Date(from.valueOf() + MSECS_PER_DAY + /* get rid of daylight saving switches */ MSECS_PER_HOUR));\n retval.push({ from: from, to: to });\n }\n }\n }\n return retval;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.StringArray })\n], PacemCalendarDayOfWeekRuleElement.prototype, \"days\", void 0);\nPacemCalendarDayOfWeekRuleElement = __decorate([\n CustomElement({ tagName: P + '-calendar-daysofweek-rule' })\n], PacemCalendarDayOfWeekRuleElement);\nexport { PacemCalendarDayOfWeekRuleElement };\n// #endregion\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, ViewChild, Utils, PropertyConverters, PacemEventTarget, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Animates its content's height (or width, if `horizontal`) between 0 and its natural size, toggled via the `collapse` property. */\nlet PacemCollapseElement = class PacemCollapseElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._resizeHandler = (evt) => {\n this.#state = evt.detail;\n this._toggle();\n };\n }\n #state;\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'collapse':\n this._toggle();\n case 'disabled':\n if (!Utils.isNull(this._resizer)) {\n this._resizer.disabled = this.disabled || this.collapse;\n }\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const r = this._resizer;\n this.#state = r.currentSize;\n this._toggle();\n }\n _toggle() {\n const div = this, collapse = this.collapse, state = this.#state;\n if (this.disabled || Utils.isNull(div))\n return;\n //\n if (this.horizontal) {\n Utils.addClass(div, PCSS + '-horizontal');\n div.style.height = state && (state.height + 'px') || '';\n div.style.width = collapse ? '0' : (state && state.width + 'px') || '';\n }\n else {\n Utils.removeClass(div, PCSS + '-horizontal');\n div.style.height = collapse ? '0' : (state && state.height + 'px') || '';\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemCollapseElement.prototype, \"collapse\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemCollapseElement.prototype, \"horizontal\", void 0);\n__decorate([\n ViewChild(P + '-resize')\n], PacemCollapseElement.prototype, \"_resizer\", void 0);\n__decorate([\n ViewChild(`[part=content]`)\n], PacemCollapseElement.prototype, \"_container\", void 0);\nPacemCollapseElement = __decorate([\n CustomElement({\n tagName: P + '-collapse', shadow: true,\n template: `<${P}-resize on-${Components.ResizeEventName}=\":host._resizeHandler($event)\" target=\"{{ ::_container }}\"></${P}-resize><div part=\"container\"><div part=\"content\"><slot></slot></div></div>`\n })\n], PacemCollapseElement);\nexport { PacemCollapseElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Watch, Utils, Components, CustomTypedEvent, Logging, avoidHandler } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Set of buttons shown by a dialog (e.g. {@link PacemDialogBase}), controlling which {@link DialogButton}s are visible. */\nexport var DialogButtons;\n(function (DialogButtons) {\n DialogButtons[\"YesNo\"] = \"yesno\";\n DialogButtons[\"YesNoCancel\"] = \"yesnocancel\";\n DialogButtons[\"Ok\"] = \"ok\";\n DialogButtons[\"OkCancel\"] = \"okcancel\";\n})(DialogButtons || (DialogButtons = {}));\n/** Single button a dialog can be committed/closed with. */\nexport var DialogButton;\n(function (DialogButton) {\n DialogButton[\"Yes\"] = \"yes\";\n DialogButton[\"No\"] = \"no\";\n DialogButton[\"Cancel\"] = \"cancel\";\n DialogButton[\"Ok\"] = \"ok\";\n})(DialogButton || (DialogButton = {}));\n/** Event name dispatched by a {@link PacemDialogBase} when it is committed/closed via one of its buttons. */\nexport const DialogResultEventName = 'commit';\n/** Event dispatched by a {@link PacemDialogBase} when it is committed/closed via one of its buttons; also the resolution value of `open()`'s promise. */\nexport class DialogResultEvent extends CustomTypedEvent {\n constructor(args) {\n super(DialogResultEventName, args);\n }\n}\n/** Base class for modal dialog elements (see {@link PacemDialogElement}): wraps a {@link Lightbox} with an open/commit lifecycle resolved through a promise. */\nexport class PacemDialogBase extends Components.PacemElement {\n #deferred;\n /** Opens the dialog, optionally seeding its `state`. @returns A promise resolved with the {@link DialogResultEventArgs} once the dialog is committed. */\n open(state, rejectOnDeny = false) {\n const lb = this.lightbox;\n if (!Utils.isNull(this.#deferred)) {\n throw `Dialog already open.`;\n }\n const deferred = (this.#deferred = { promise: Promise.withResolvers(), rejectOnDeny }).promise;\n if (this.hide || this.disabled) {\n this.log(Logging.LogLevel.Warn, 'Dialog hidden or disabled, opening forbidden.');\n deferred.reject();\n }\n else {\n this.dispatchEvent(new Event('open'));\n lb.show = true;\n this.state = state;\n }\n return deferred.promise;\n }\n /** Closes the dialog with the given button outcome, resolving the pending `open()` promise and dispatching a {@link DialogResultEvent}. */\n commit(btn, evt) {\n avoidHandler(evt);\n this.log(Logging.LogLevel.Debug, `Committing dialog by clicking '${btn}'.`);\n const state = this.state;\n var drevt = new DialogResultEvent({ button: btn, state });\n this.lightbox.show = false;\n const { promise, rejectOnDeny } = this.#deferred;\n if (rejectOnDeny) {\n switch (btn) {\n case DialogButton.Cancel:\n case DialogButton.No:\n promise.reject(drevt.detail);\n default:\n promise.resolve(drevt.detail);\n }\n }\n else {\n promise.resolve(drevt.detail);\n }\n this.#deferred = null;\n this.dispatchEvent(drevt);\n }\n}\n__decorate([\n Watch()\n], PacemDialogBase.prototype, \"state\", void 0);\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, Defaults, CustomElement, ViewChild, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemDialogBase, DialogButtons } from './dialog-abstractions';\n//namespace Pacem.Components.UI {\n/** Modal dialog built on top of a {@link PacemLightboxElement}, with a configurable Ok/Yes/No/Cancel button set (see {@link DialogButtons}). */\nlet PacemDialogElement = class PacemDialogElement extends PacemDialogBase {\n constructor() {\n super(...arguments);\n /** Gets or sets which button set is shown (Ok, OkCancel, YesNo, YesNoCancel). */\n this.buttons = DialogButtons.Ok;\n /** Gets or sets the caption of the Ok button. */\n this.okCaption = 'OK';\n /** Gets or sets the caption of the Yes button. */\n this.yesCaption = 'Yes';\n /** Gets or sets the caption of the No button. */\n this.noCaption = 'No';\n /** Gets or sets the caption of the Cancel button. */\n this.cancelCaption = 'Cancel';\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'buttons':\n //\n break;\n }\n }\n open(state) {\n const retval = super.open(state);\n switch (this.buttons) {\n case DialogButtons.Ok:\n case DialogButtons.OkCancel:\n this.dialogButtons.ok.focus();\n break;\n default:\n this.dialogButtons.yes.focus();\n break;\n }\n return retval;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n // HACK: move the buttons outside the .pacem-scrollable element in the lightbox\n //requestAnimationFrame(() => {\n // const elFrom = this.lightbox && this.lightbox.container;\n // if (!Utils.isNull(elFrom)) {\n // elFrom.appendChild(this._buttons);\n // this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'dialogButtons', currentValue: this.dialogButtons }));\n // } else {\n // this.log(Logging.LogLevel.Warn, `Could not find the lightbox container as expected.`);\n // }\n //});\n }\n /** @readonly Gets the 'ok', 'yes', 'no' and 'cancel' dialog buttons. */\n get dialogButtons() {\n const btns = this._buttons;\n return {\n ok: btns && btns.firstElementChild.firstElementChild,\n yes: btns && btns.firstElementChild.children.item(1),\n no: btns && btns.firstElementChild.children.item(2),\n cancel: btns && btns.firstElementChild.lastElementChild\n };\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDialogElement.prototype, \"buttons\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemDialogElement.prototype, \"okCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemDialogElement.prototype, \"yesCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemDialogElement.prototype, \"noCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemDialogElement.prototype, \"cancelCaption\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-dialog-buttons`)\n], PacemDialogElement.prototype, \"_buttons\", void 0);\n__decorate([\n ViewChild(P + '-lightbox')\n], PacemDialogElement.prototype, \"lightbox\", void 0);\nPacemDialogElement = __decorate([\n CustomElement({\n tagName: P + '-dialog', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-lightbox modal=\"true\" logger=\"{{ :host.logger }}\">\r\n <${P}-content></${P}-content>\r\n <div class=\"${PCSS}-dialog-buttons ${PCSS}-buttonset buttons\" part=\"dialog-buttons\" slot=\"bottom\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button class=\"button button-size size-small primary dialog-ok\" css-class=\"{{ {'buttonset-last': :host.buttons === 'ok'} }}\" on-click=\":host.commit('ok', $event)\" disabled=\"{{ :host.disabled || this.hide }}\" hide=\"{{ :host.buttons !== 'ok' && :host.buttons !== 'okcancel' }}\"><${P}-text text=\"{{ :host.okCaption }}\"></${P}-text></${P}-button>\r\n <${P}-button class=\"button button-size size-small primary dialog-yes\" css-class=\"{{ {'buttonset-first': :host.buttons !== 'ok' || :host.buttons !== 'okcancel'} }}\" on-click=\":host.commit('yes', $event)\" disabled=\"{{ :host.disabled || this.hide }}\" hide=\"{{ :host.buttons === 'ok' || :host.buttons === 'okcancel' }}\"><${P}-text text=\"{{ :host.yesCaption }}\"></${P}-text></${P}-button>\r\n <${P}-button class=\"button button-size size-small dialog-no\" css-class=\"{{ {'buttonset-last': :host.buttons === 'yesno'} }}\" on-click=\":host.commit('no', $event)\" disabled=\"{{ :host.disabled || this.hide }}\" hide=\"{{ :host.buttons !== 'yesno' && :host.buttons !== 'yesnocancel' }}\"><${P}-text text=\"{{ :host.noCaption }}\"></${P}-text></${P}-button>\r\n <${P}-button class=\"button button-size size-small dialog-cancel\" on-click=\":host.commit('cancel', $event)\" disabled=\"{{ :host.disabled || this.hide }}\" hide=\"{{ :host.buttons !== 'yesnocancel' && :host.buttons !== 'okcancel' }}\"><${P}-text text=\"{{ :host.cancelCaption }}\"></${P}-text></${P}-button>\r\n </div>\r\n </div>\r\n</${P}-lightbox>`\n })\n], PacemDialogElement);\nexport { PacemDialogElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, Utils, PropertyConverters, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** ARIA-`separator` element drawing a horizontal or vertical divider line, with optional `prepend`/`append` slotted content. */\nlet PacemDividerElement = class PacemDividerElement extends Components.PacemElement {\n constructor() {\n super('separator');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && name === 'orientation') {\n this._syncOrientation(val);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._syncOrientation();\n }\n _syncOrientation(orientation = this.orientation) {\n if (orientation !== 'vertical') {\n // exclude invalid runtime values\n orientation = 'horizontal';\n }\n super.aria.attributes.set('orientation', orientation);\n switch (orientation) {\n case 'vertical':\n Utils.addClass(this, 'divider-vertical');\n break;\n default:\n Utils.removeClass(this, 'divider-vertical');\n break;\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String, emit: false })\n], PacemDividerElement.prototype, \"orientation\", void 0);\nPacemDividerElement = __decorate([\n CustomElement({\n tagName: P + '-divider', shadow: true,\n template: `<div part=\"divider\"><div part=\"prepend\"></div><slot part=\"content\"></slot><div part=\"append\"></div></div>`\n })\n], PacemDividerElement);\nexport { PacemDividerElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, CustomElementUtils } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\nconst SVG = /^\\s*<svg\\s/;\nconst FA = /^fa(b|r|s|l|d|t|-brands|-solid|-regular|-light|-thin|-duotone)?\\s+fa-/;\nconst FA_CDN = { url: \"https://kit.fontawesome.com/4922589c3c.js\", crossOrigin: true };\nconst LNI = /^lni\\s+lni-/;\nconst LNI_CDN = \"https://cdn.lineicons.com/2.0/LineIcons.css\";\nconst COREUI = /^ci[dlsbf]-/;\nconst COREUI_CDN = \"https://unpkg.com/@coreui/icons/css/all.min.css\";\nconst MATERIAL = /^material-icons?\\s+([\\w]+)/;\n//const MATERIAL_CDN = \"https://fonts.googleapis.com/icon?family=Material+Icons\";\nconst MATERIAL_SYMBOLS = /^material(-symbols?)?\\s+([\\w]+)/;\n// TODO: put this url in a css variable and use it across the site (eventually)\nconst MATERIAL_SYMBOLS_CDN = \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200\";\nconst URL = /^(https?:\\/\\/|\\/\\/)?.+\\.(webp|svg|gif|png|jpe?g)$/;\nconst iconImportMemoizer = [];\nfunction importConditionally(cssClassName, url, sha, crossOrigin, js) {\n if (iconImportMemoizer.indexOf(cssClassName) >= 0) {\n return Promise.resolve();\n }\n iconImportMemoizer.push(cssClassName);\n // this is the heavy part, be sure to call it just once (thus the memoizer)\n if (Utils.Css.isClassDefined(cssClassName)) {\n return Promise.resolve();\n }\n return js ? CustomElementUtils.importjs(url, sha, crossOrigin) : CustomElementUtils.importcss(url, sha, crossOrigin);\n}\nfunction getIconMarkup(icon) {\n return new Promise((resolve, reject) => {\n // null or empty\n if (Utils.isNullOrEmpty(icon)) {\n reject('No icon provided');\n }\n // svg?\n else if (SVG.test(icon)) {\n resolve(icon);\n }\n // font-awesome?\n else if (FA.test(icon)) {\n importConditionally(\"fa\", FA_CDN.url, undefined, FA_CDN.crossOrigin, true).then(_ => {\n resolve(`<i class=\"${icon}\"></i>`);\n }, e => reject(e));\n }\n // explicit material symbols?\n else if (MATERIAL_SYMBOLS.test(icon)) {\n importConditionally(\"material-symbols\", MATERIAL_SYMBOLS_CDN).then(_ => {\n const regExcArray = MATERIAL_SYMBOLS.exec(icon), ligature = regExcArray[2], rest = icon.substring(regExcArray[0].length);\n resolve(`<i class=\"material-symbols-outlined${rest}\">${ligature}</i>`);\n }, e => reject(e));\n }\n // explicit material icons? (switch to the new material-symbols anyway)\n else if (MATERIAL.test(icon)) {\n importConditionally(\"material-icons\", MATERIAL_SYMBOLS_CDN).then(_ => {\n const regExcArray = MATERIAL.exec(icon), ligature = regExcArray[1], rest = icon.substring(regExcArray[0].length);\n resolve(`<i class=\"material-icons${rest}\">${ligature}</i>`);\n }, e => reject(e));\n }\n // line-icons?\n else if (LNI.test(icon)) {\n importConditionally('lni', LNI_CDN).then(_ => {\n resolve(`<i class=\"${icon}\"></i>`);\n }, e => reject(e));\n }\n // coreui icons?\n else if (COREUI.test(icon)) {\n importConditionally('clb', COREUI_CDN).then(_ => {\n resolve(`<i class=\"${icon}\"></i>`);\n }, e => reject(e));\n }\n // image url?\n else if (URL.test(icon)) {\n resolve(`<img src=\"${icon}\" />`);\n }\n else {\n // assume material icon as default\n const parts = icon.trim().split(' ');\n const ligature = parts[0];\n const css = parts.length > 1 ? ' ' + parts.slice(1).join(' ') : '';\n resolve(`<i class=\"${PCSS}-icon${css}\">${ligature}</i>`);\n }\n });\n}\n/** Renders an icon from a wide range of notations (inline SVG, Font Awesome, Material Symbols/Icons, LineIcons, CoreUI, or a plain image URL), lazily importing the matching stylesheet/script on demand. */\nlet PacemIconElement = class PacemIconElement extends Components.PacemElement {\n constructor() {\n super('', { hidden: 'true' });\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'icon':\n this._setIcon();\n break;\n case 'hide':\n if (!val) {\n // overrides the default `PacemElement` behavior:\n // keep aria-hidden=true (to prevent screen readers from reading the ligatures)\n this.aria.attributes.set('hidden', 'true');\n }\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setIcon();\n }\n _setIcon(icon = this.icon) {\n getIconMarkup(icon).then(markup => {\n this.innerHTML = markup;\n }, _ => {\n this.innerHTML = '';\n });\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemIconElement.prototype, \"icon\", void 0);\nPacemIconElement = __decorate([\n CustomElement({\n tagName: P + '-icon', modifiers: ['face', 'content']\n })\n], PacemIconElement);\nexport { PacemIconElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, Utils, PropertyConverters, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Renders an image as a CSS background (rather than an `<img>` src), enabling `cover`/`contain`/`auto` fitting and reporting its natural/decoded size. */\nlet PacemImageElement = class PacemImageElement extends Components.PacemElement {\n constructor() {\n super('img');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'src':\n case 'disabled':\n this._setSource();\n break;\n case 'size':\n case 'adapt':\n this._setLayout();\n break;\n case 'loading':\n (!val ? Utils.addClass : Utils.removeClass)(this, 'img-ready');\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setLayout();\n this._setSource();\n }\n _setLayout() {\n const sizeDeclared = !Utils.isNullOrEmpty(this.size);\n const bgsize = this.adapt || 'auto';\n const size = this.size || this.#naturalSize || { width: '0', height: '0' };\n this.style.backgroundSize = bgsize;\n const adapt = bgsize === 'auto', w = size.width, h = size.height;\n if (adapt || sizeDeclared) {\n this.style.width = w || '';\n this.style.height = h || '';\n }\n }\n #naturalSize;\n async _setSource() {\n if (this.disabled || !this.isReady) {\n return;\n }\n //\n const src = this.src;\n this.style.backgroundImage = '';\n if (!Utils.isNullOrEmpty(src)) {\n this.loading = true;\n try {\n const img = await Utils.loadImage(src);\n let weight, entries, entry;\n if (window.performance\n && (entries = performance.getEntriesByName(img.src))\n && (entry = entries[0])) {\n weight = entry.decodedBodySize;\n }\n this.#naturalSize = {\n width: img.naturalWidth + 'px',\n height: img.naturalHeight + 'px',\n weight: weight\n };\n this._setLayout();\n this.style.backgroundImage = `url(\"${img.src}\")`;\n }\n catch (e) {\n // 404, whatever...\n }\n finally {\n this.loading = false;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemImageElement.prototype, \"adapt\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemImageElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ emit: false,\n converter: {\n convert: (attr, el) => {\n // parse strings like \"20,20\" \".5 , 1vh\" \"15\" and returns respectively [\"20px\", \"20px\"], [\".5px\", \"1vh\"] and [\"15px\", \"15px\"]\n const regex = /^\\s*([\\d.]+)(px|em|rem|vw|vh)?\\s*(?:,\\s*([\\d.]+)(px|em|rem|vw|vh)?)?\\s*$/i;\n const match = regex.exec(attr);\n const width = match ? match[1] + (match[2] || 'px') : '0', height = match ? (match[3] ? match[3] + (match[4] || 'px') : width) : '0';\n return { width, height };\n },\n convertBack: (prop, el) => `${prop?.width},${prop?.height}`\n }, reflectBack: true })\n], PacemImageElement.prototype, \"size\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemImageElement.prototype, \"loading\", void 0);\nPacemImageElement = __decorate([\n CustomElement({\n tagName: P + '-img'\n })\n], PacemImageElement);\nexport { PacemImageElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, Debounce, CustomElement, Watch, Utils, PropertyConverters, PacemEventTarget } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Watches a scrollable `container` and dispatches a `fetchmore` event whenever the user scrolls within `threshold` pixels of the bottom. */\nlet PacemInfiniteScrollerElement = class PacemInfiniteScrollerElement extends PacemEventTarget {\n constructor() {\n super();\n this._scrollDelegate = () => this._doScroll();\n this._enabled = true;\n this._viewportHeight = 0;\n this._innerHeight = 0;\n this._isDocument = false;\n this._container = null;\n this._viewport = null;\n this._scroller = null;\n this._bottomGap = 10;\n this._container = this;\n this._viewport = this;\n this._scroller = this;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.setInfiniteScrollContainer(this._container);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._scroller))\n this._scroller.removeEventListener('scroll', this._scrollDelegate, false);\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'container':\n this.setInfiniteScrollContainer(val);\n break;\n case 'disabled':\n if (this._enabled = !val)\n this._doScroll();\n break;\n case 'threshold':\n this._bottomGap = val || 0;\n break;\n }\n }\n /** Re-targets the watched scroll container/viewport/scroll-event-source. @param v An element, a CSS selector, or `'$document'` for the whole page. */\n setInfiniteScrollContainer(v = '$document') {\n var cont = v;\n var isDoc = this._isDocument = cont === '$document' || cont === document.body || cont === document.documentElement;\n this._container = isDoc ? (document.body || document.documentElement) : ((typeof v === 'string') ?\n document.querySelector(cont)\n :\n cont);\n this._viewport = isDoc ? window : this._container;\n if (this._scroller)\n this._scroller.removeEventListener('scroll', this._scrollDelegate, false);\n this._scroller = isDoc ? window.document : this._container;\n this._scroller.addEventListener('scroll', this._scrollDelegate, false);\n if (this._enabled)\n this._doScroll();\n }\n //ngOnChanges(changes: SimpleChanges) {\n //}\n _emitFetchMore() {\n /**\n * on-fetchmore => must toggle `enabled` while fetching...\n */\n var evt = new CustomEvent('fetchmore');\n this.dispatchEvent(evt);\n }\n _doScroll() {\n if (!this._enabled)\n return;\n if (!this._computeHeight()) {\n var scrollTop = this._scroller instanceof Document ? window.pageYOffset : this._scroller.scrollTop;\n var viewportHeight = this._viewportHeight, innerHeight = this._innerHeight;\n var threshold = innerHeight - (scrollTop + viewportHeight);\n if (threshold < this._bottomGap /* pixels */\n || innerHeight <= viewportHeight) {\n // fire fetchMore() \n this._emitFetchMore();\n window.requestAnimationFrame(() => {\n if (this._enabled)\n this._doScroll();\n });\n } //else computeHeight();\n }\n else\n this._doScroll();\n }\n _computeHeight() {\n if (!this._container)\n return;\n var cont = this._container;\n var topOffset = Number.MAX_VALUE, bottomOffset = 0, totalHeight = 0, _innerHeight;\n if (this._isDocument) {\n var d = cont;\n _innerHeight = Math.max(d.scrollHeight, d.offsetHeight, d.clientHeight);\n }\n else {\n for (var i = 0; i < cont.children.length; i++) {\n var e = cont.children.item(i);\n var eTopOffset = e.offsetTop, eHeight = e.offsetHeight, eBottomOffset = eTopOffset + eHeight;\n totalHeight += eHeight;\n if (eTopOffset < topOffset) {\n topOffset = eTopOffset;\n }\n if (eBottomOffset > bottomOffset) {\n bottomOffset = eBottomOffset;\n }\n }\n _innerHeight = Math.round(bottomOffset - topOffset);\n }\n var _viewportHeight = this._viewport instanceof Window ? Utils.windowSize.height : this._viewport.offsetHeight;\n if (_innerHeight != this._innerHeight || _viewportHeight != this._viewportHeight) {\n this._innerHeight = _innerHeight;\n this._viewportHeight = _viewportHeight;\n return true;\n }\n return false;\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemInfiniteScrollerElement.prototype, \"container\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Number })\n], PacemInfiniteScrollerElement.prototype, \"threshold\", void 0);\n__decorate([\n Debounce(100)\n], PacemInfiniteScrollerElement.prototype, \"_doScroll\", null);\nPacemInfiniteScrollerElement = __decorate([\n CustomElement({ tagName: P + '-infinite-scroller' })\n], PacemInfiniteScrollerElement);\nexport { PacemInfiniteScrollerElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Watch, Utils, PropertyConverters, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Base class for elements iterating a `datasource` under the control of a {@link PacemAdapterElement} (e.g. a slideshow), exposing `index`-relative helpers (`isPrevious`, `isNext`, `isCloseTo`). */\nexport class PacemAdaptedIterativeElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n /** Gets or sets the currently focused item's index within `datasource`. */\n this.index = 0;\n }\n /** Gets whether `ndx` is the focused item itself, or immediately adjacent (previous/next, wrapping around) to `focusndx`. */\n isCloseTo(ndx, focusndx) {\n if (Utils.isNull(this.datasource) || this.datasource.length == 0)\n return false;\n return /*this.adapter.isClose(ndx) ||*/ this._isCloseToCore(ndx, focusndx, this.datasource.length);\n }\n /** Gets whether `ndx` is the item immediately preceding `focusndx` (wrapping around the datasource). */\n isPrevious(ndx, focusndx) {\n if (Utils.isNull(this.datasource) || this.datasource.length == 0)\n return false;\n return /*this.adapter.isPrevious(ndx) ||*/ this._isPreviousCore(ndx, focusndx, this.datasource.length);\n }\n /** Gets whether `ndx` is the item immediately following `focusndx` (wrapping around the datasource). */\n isNext(ndx, focusndx) {\n if (Utils.isNull(this.datasource) || this.datasource.length == 0)\n return false;\n return /*this.adapter.isNext(ndx) ||*/ this._isNextCore(ndx, focusndx, this.datasource.length);\n }\n _isNextCore(ndx, focusndx, count) {\n return ((focusndx + 1) % count) === ndx;\n }\n _isPreviousCore(ndx, focusndx, count) {\n return ((focusndx - 1 + count) % count) === ndx;\n }\n _isCloseToCore(ndx, focusndx, count) {\n return (((focusndx + count) % count) == ((ndx + count) % count))\n || this._isNextCore(ndx, focusndx, count) || this._isPreviousCore(ndx, focusndx, count);\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemAdaptedIterativeElement.prototype, \"index\", void 0);\n__decorate([\n Watch()\n], PacemAdaptedIterativeElement.prototype, \"datasource\", void 0);\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, stopPropagationHandler, ViewChild, avoidHandler } from '@pacem/pacem-core';\nimport { LightboxBehavior } from './lightbox-abstractions';\nimport { PacemButtonElement } from './button';\n//namespace Pacem.Components.UI {\n// TODO: shadow-ize lightbox (slots, parts, ...) in the next version 0.5x.x.\n/** Full-viewport overlay (\"lightbox\") element showing its slotted content above a backdrop, with an auto-injected close button and optional modal (non-dismissible) behavior. */\nlet PacemLightboxElement = class PacemLightboxElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._keyupHandler = (evt) => {\n if (evt.keyCode === 27 /* ESC */ && this.show && !this.modal) {\n this.show = false;\n }\n };\n this._wrapperMousedownHandler = (evt) => {\n if (this.modal || this.behavior === LightboxBehavior.ExplicitClose) {\n stopPropagationHandler(evt);\n }\n else {\n this.show = false;\n }\n };\n this._slotchangeHandler = (evt) => {\n this._resetLayout();\n };\n this._closeHandler = (evt) => {\n this._close(evt);\n };\n }\n _resetLayout() {\n this._disposeButton();\n const btn = this._ensureButton();\n if (!Utils.isNull(btn)) {\n btn.addEventListener('click', this._closeHandler, false);\n }\n }\n _toggleCloseVisibility() {\n const closer = this._closeWrapper;\n if (!Utils.isNull(closer)) {\n closer.hidden = this.modal;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._toggleCloseVisibility();\n var wrapper = this._wrapperElement;\n var container = this._container;\n wrapper.addEventListener('mousedown', this._wrapperMousedownHandler, false);\n container.addEventListener('mousedown', stopPropagationHandler, false);\n document.body.removeEventListener('scroll', avoidHandler, true);\n window.addEventListener('keyup', this._keyupHandler, false);\n this._resetLayout();\n this._slot.addEventListener('slotchange', this._slotchangeHandler, false);\n if (this.show) {\n this._toggle(true);\n }\n }\n _toggle(val) {\n const wrap = this._wrapperElement;\n const container = this._container;\n if (!!val) {\n this.inert = false;\n this.dispatchEvent(new Event('open', { bubbles: true, cancelable: false }));\n wrap.style.display = '';\n wrap.hidden = false;\n window.requestAnimationFrame(() => {\n Utils.addPart(wrap, 'lightbox-wrapper-shown');\n Utils.addPart(container, 'lightbox-shown');\n });\n var scroller = this.querySelector('.' + PCSS + '-scrollable');\n if (scroller) {\n window.requestAnimationFrame(() => scroller.scrollTop = 0);\n }\n }\n else {\n this.inert = true;\n this.dispatchEvent(new Event('close', { bubbles: true, cancelable: false }));\n //\n Utils.removePart(wrap, 'lightbox-wrapper-shown');\n Utils.removePart(container, 'lightbox-shown');\n Utils.addAnimationEndCallback(wrap, (e) => {\n e.hidden = true;\n e.style.display = 'none';\n }, 500);\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'show':\n if (!!val) {\n this._toggle(true);\n }\n else if (!!old) {\n this._toggle(false);\n }\n break;\n case 'modal':\n this._toggleCloseVisibility();\n break;\n }\n }\n disconnectedCallback() {\n if (this.show) {\n this._close();\n }\n var wrapper = this._wrapperElement;\n var container = this._container;\n document.body.removeEventListener('scroll', avoidHandler, true);\n if (!Utils.isNull(wrapper)) {\n wrapper.removeEventListener('mousedown', this._wrapperMousedownHandler, false);\n }\n if (!Utils.isNull(container)) {\n container.removeEventListener('mousedown', stopPropagationHandler, false);\n }\n window.removeEventListener('keyup', this._keyupHandler, false);\n this._disposeButton();\n this._disposeSlot();\n super.disconnectedCallback();\n }\n _disposeButton() {\n this.#btn?.removeEventListener('click', this._closeHandler);\n this.#btn = null;\n }\n _disposeSlot() {\n this._slot?.removeEventListener('slotchange', this._slotchangeHandler, false);\n }\n _close(evt) {\n if (!Utils.isNull(evt)) {\n avoidHandler(evt);\n }\n this.show = false;\n }\n #btn;\n _ensureButton() {\n if (!Utils.isNull(this.#btn)) {\n return this.#btn;\n }\n const btnSlot = this._slot;\n if (Utils.isNull(btnSlot)) {\n return null;\n }\n const found = this._lookForAButton();\n if (!Utils.isNull(found)) {\n return this.#btn = found;\n }\n const retval = new PacemButtonElement();\n retval.setAttribute('slot', 'close');\n retval.className = `${PCSS}-margin margin-0 ${PCSS}-rise rise--2 button-circle circle-smaller`;\n retval.iconGlyph = 'close';\n this.appendChild(retval);\n return this.#btn = retval;\n }\n _lookForAButton() {\n const btnSlot = this._slot;\n if (Utils.isNull(btnSlot)) {\n return null;\n }\n const buttons = btnSlot.assignedElements({ flatten: true });\n if (Utils.isNullOrEmpty(buttons)) {\n return null;\n }\n return buttons[0];\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemLightboxElement.prototype, \"show\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemLightboxElement.prototype, \"modal\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemLightboxElement.prototype, \"behavior\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-lightbox-wrapper')\n], PacemLightboxElement.prototype, \"_wrapperElement\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-lightbox', true)\n], PacemLightboxElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild('slot[name=close]')\n], PacemLightboxElement.prototype, \"_slot\", void 0);\n__decorate([\n ViewChild('div[part=close]')\n], PacemLightboxElement.prototype, \"_closeWrapper\", void 0);\nPacemLightboxElement = __decorate([\n CustomElement({\n tagName: P + '-lightbox',\n shadow: true,\n template: `<div class=\"${PCSS}-lightbox-wrapper\" part=\"lightbox-wrapper\" hidden>\r\n <div class=\"${PCSS}-lightbox\" part=\"lightbox\">\r\n <div part=\"top\"><slot name=\"top\"></slot></div>\r\n <div class=\"${PCSS}-scrollable\" part=\"scrollable\">\r\n <slot></slot>\r\n </div>\r\n <div part=\"bottom\"><slot name=\"bottom\"></slot></div>\r\n <div part=\"close\">\r\n <slot name=\"close\"></slot>\r\n </div>\r\n </div>\r\n</div>`\n })\n], PacemLightboxElement);\nexport { PacemLightboxElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, ViewChild, Utils, PropertyConverters, Components, Defaults } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Visual style of a {@link PacemLoaderElement}'s spinner. */\nexport var LoaderType;\n(function (LoaderType) {\n LoaderType[\"Spinner\"] = \"spin\";\n LoaderType[\"Pacem\"] = \"pacem\";\n LoaderType[\"Custom\"] = \"custom\";\n})(LoaderType || (LoaderType = {}));\n;\n/** Shows a spinner (plain CSS or the branded Pacem gear/SVG animation) while `active`, typically overlaid on content being loaded. */\nlet PacemLoaderElement = class PacemLoaderElement extends Components.PacemElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n var id = '_' + Utils.uniqueCode();\n this._svgSpinner.innerHTML = `<defs>\r\n <mask id=\"hole${id}\">\r\n <rect width=\"100%\" height=\"100%\" fill=\"white\" />\r\n <circle cx=\"36\" cy=\"36\" r=\"12\"></circle>\r\n <path d=\"M18,0 L32,16 H40 L54,0 Z\" fill=\"#000\"></path>\r\n <g transform=\"rotate(120,36,36)\">\r\n <path d=\"M18,0 L32,16 H40 L54,0 Z\" fill=\"#000\"></path>\r\n </g>\r\n </mask>\r\n </defs>\r\n\r\n <circle class=\"circle1\" cx=\"36\" cy=\"36\" r=\"34\" stroke-width=\"4\" fill=\"none\"></circle>\r\n <g class=\"gear\">\r\n <circle cx=\"36\" cy=\"36\" r=\"25\" mask=\"url(#hole${id})\"></circle>\r\n </g>\r\n <circle class=\"circle2\" cx=\"36\" cy=\"36\" r=\"8\" stroke-width=\"2\" fill=\"none\"></circle>\r\n\r\n <g class=\"bounds\">\r\n <path d=\"M8,0 H0 V8 M64,0 H71 V8 M71,63 V71 H64 M8,71 H0 V63\" stroke-width=\"2\"></path>\r\n </g>`;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!Utils.isNull(this._container)) {\n switch (name) {\n case 'active':\n case 'disabled':\n if (this.active === true && !this.disabled) {\n Utils.addClass(this._container, 'active');\n }\n else {\n Utils.removeClass(this._container, 'active');\n }\n break;\n case 'type':\n this._svgSpinner.setAttribute('hidden', 'hidden');\n this._spinner.setAttribute('hidden', 'hidden');\n switch (val) {\n case LoaderType.Pacem:\n this._svgSpinner.removeAttribute('hidden');\n break;\n default:\n this._spinner.removeAttribute('hidden');\n break;\n }\n break;\n }\n }\n }\n};\n__decorate([\n ViewChild('div.' + PCSS + '-spinner', true)\n], PacemLoaderElement.prototype, \"_spinner\", void 0);\n__decorate([\n ViewChild('div.' + PCSS + '-loader')\n], PacemLoaderElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild('svg')\n], PacemLoaderElement.prototype, \"_svgSpinner\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemLoaderElement.prototype, \"active\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemLoaderElement.prototype, \"type\", void 0);\nPacemLoaderElement = __decorate([\n CustomElement({\n tagName: P + '-loader', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-loader\" pacem>\r\n <div class=\"${PCSS}-spinner\" pacem>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n <svg class=\"${PCSS}-spinner\" pacem hidden xmlns=\"http://www.w3.org/2000/svg\" \r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"-18,-18,108,108\" preserveAspectRatio=\"xMidYMid\">\r\n </svg>\r\n </div>`\n })\n], PacemLoaderElement);\nexport { PacemLoaderElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, PropertyConverters, Components } from '@pacem/pacem-core';\nimport { MarkdownService } from './markdown-svc';\n//namespace Pacem.Components.UI {\n/** Renders its `value` property, interpreted as Markdown, as this element's inner HTML. */\nlet PacemMarkdownElement = class PacemMarkdownElement extends Components.PacemElement {\n constructor(_md = new MarkdownService()) {\n super();\n this._md = _md;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'value') {\n this.innerHTML = this.html();\n }\n }\n // IDEA: allow extensible parsing (grammar components?...)\n /** Tokenizes the given (or current `value`) Markdown source. */\n tokens(md = this.value) {\n return this._md.tokenize(md);\n }\n /** Converts the given (or current `value`) Markdown source to an HTML string. */\n html(md = this.value) {\n return this._md.toHtml(md);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMarkdownElement.prototype, \"value\", void 0);\nPacemMarkdownElement = __decorate([\n CustomElement({ tagName: P + '-markdown' })\n], PacemMarkdownElement);\nexport { PacemMarkdownElement };\n", "import { Compile } from '@pacem/pacem-foundation';\nimport { P } from '@pacem/pacem-core';\n//namespace Pacem {\nconst TWITTER_RULE = {\n rule: {\n exec: (input) => {\n const arr = /\\{tweet\\}\\(([^\\)]+)\\)/.exec(input);\n if (arr && arr.length > 1) {\n return [{\n type: 'tweet', raw: arr[0], text: arr[1], index: arr.index\n }];\n }\n return null;\n }\n },\n type: 'inline'\n};\nconst YOUTUBE_RULE = {\n rule: {\n exec: (input) => {\n const arr = /\\{yt([\\d]+x[\\d]+)?\\}\\(([^\\)]+)\\)/.exec(input);\n if (arr && arr.length > 2) {\n const m0 = arr[1] || '560x315';\n const size = m0.split('x'), w = size[0], h = size[1];\n return [{\n type: 'youtube', raw: arr[0], text: arr[2], index: arr.index, width: w, height: h\n }];\n }\n return null;\n }\n },\n type: 'inline'\n};\n// routed link: {route}(#router0:/{culture}/pages/next \"Next Page\"), the router's selector, then the href (formatted by\n// the router's state), then the optional text (the href when missing)\nconst ANCHOR_RULE = {\n rule: {\n exec: (input) => {\n const arr = /\\{route\\}\\(([^:\\s)]+):([^\\s\")]+)(?:\\s+\"([^\"]*)\")?\\)/.exec(input);\n if (arr && arr.length > 2) {\n return [{\n type: 'route', raw: arr[0], text: arr[3] || arr[2], index: arr.index, router: arr[1], href: arr[2]\n }];\n }\n return null;\n }\n },\n type: 'inline'\n};\nconst RULES_TO_HTML = (token) => {\n switch (token.type) {\n case 'youtube':\n return `<!-- youtube embed -->\r\n<iframe width=\"${token['width']}\" height=\"${token['height']}\" src=\"https://www.youtube-nocookie.com/embed/${token.text}\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe>`;\n case 'tweet':\n return `<!-- twitter embed -->\r\n<${P}-tweetembed tweetid=\"${token.text}\"></${P}-tweetembed>`;\n case 'route':\n return `<${P}-a href=\"${token['href']}\" router=\"${token['router']}\">${token.text}</${P}-a>`;\n }\n};\n/**\n * Parses Markdown into HTML, extended with Pacem-specific inline embeds (`{tweet}(id)`, `{yt}(id)`) and routed links\n * (`{route}(#router0:/path \"text\")`).\n * Fenced code blocks are highlighted by the language-agnostic `Compile.Scanner`, for every language registered in\n * `Compile.Syntaxes` (built-in: javascript/typescript, html/xml, c#, c/c++, json; more can be registered at runtime).\n */\nexport class MarkdownService {\n #grammar = [\n TWITTER_RULE,\n YOUTUBE_RULE,\n ANCHOR_RULE\n ];\n #md = new Compile.Markdown.Parser();\n _escape(md) {\n // no html allowed\n return (md ?? '').replace(/</g, '<');\n }\n /** Converts the given Markdown source into an HTML string. */\n toHtml(md) {\n const escaped = this._escape(md);\n return this.#md.toHtml(escaped, this.#grammar, RULES_TO_HTML);\n }\n /** Tokenizes the given Markdown source, without rendering it to HTML. */\n tokenize(md) {\n const escaped = this._escape(md);\n return this.#md.tokenize(escaped, this.#grammar);\n }\n}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, Utils, CustomElement, Watch, ViewChild, PropertyConverters, Components, Defaults } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Continuously scrolls its content horizontally in a loop, like a classic marquee. */\nlet PacemMarqueeElement = class PacemMarqueeElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._state = { overlap: 0, content: 0 };\n }\n // TODO: reuse css animation injection\n connectedCallback() {\n super.connectedCallback();\n const css = this._css = document.createElement('style');\n document.head.appendChild(css);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'speed') {\n this._adjust();\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._adjust();\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._css))\n this._css.remove();\n super.disconnectedCallback();\n }\n _overlapResize(evt) {\n this._state.overlap = evt.detail.width;\n this._adjust();\n }\n _contentResize(evt) {\n this._state.content = evt.detail.width;\n this._adjust();\n }\n _adjust() {\n const state = this._state;\n if (state.content > 0 && state.overlap > 0) {\n const m = this._marquee;\n const id = 'marquee-' + Utils.uniqueCode(), // rename the animation every time (Edge bug)\n from = Math.round(state.overlap), to = -Math.round(state.content);\n this._css.innerHTML = `@keyframes ${id} {\r\n 0% {\r\n transform: translateX(${from}px);\r\n }\r\n\r\n 100% {\r\n transform: translateX(${to}px);\r\n }\r\n}`;\n const speed = this.speed || 20;\n const time = Math.max(speed, Math.round(speed * Math.abs(from - to) / 1920));\n m.style.animationName = id;\n m.style.animationDuration = time + 's';\n m.style.animationIterationCount = 'infinite';\n m.style.animationTimingFunction = 'linear';\n }\n }\n};\n__decorate([\n ViewChild(`.${PCSS}-marquee`)\n], PacemMarqueeElement.prototype, \"_marquee\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-marquee-overlap`)\n], PacemMarqueeElement.prototype, \"_overlap\", void 0);\n__decorate([\n ViewChild(P + \"-resize\")\n], PacemMarqueeElement.prototype, \"_resizer\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemMarqueeElement.prototype, \"speed\", void 0);\nPacemMarqueeElement = __decorate([\n CustomElement({\n tagName: P + '-marquee', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-marquee\"><${P}-content></${P}-content></div><div class=\"${PCSS}-marquee-overlap\"></div>\r\n<${P}-resize target=\"{{ :host._overlap }}\" on-${Components.ResizeEventName}=\":host._overlapResize($event)\"></${P}-resize>\r\n<${P}-resize target=\"{{ :host._marquee }}\" on-${Components.ResizeEventName}=\":host._contentResize($event)\"></${P}-resize>`\n })\n], PacemMarqueeElement);\nexport { PacemMarqueeElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, Utils, CustomElement, Watch, PropertyConverters, PacemEventTarget } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\nconst THRESHOLD_SM = 768;\nconst THRESHOLD_MD = 992;\nconst THRESHOLD_LG = 1200;\nconst THRESHOLD_XL = 1824;\nconst THRESHOLD_HD = 1920;\nconst THRESHOLD_2K = 2048;\nconst THRESHOLD_4K = 3840;\nexport const MEDIAQUERY_XS = `(max-width: ${(THRESHOLD_SM - 1)}px)`;\nexport const MEDIAQUERY_SM = `(min-width: ${THRESHOLD_SM}px)`;\nexport const MEDIAQUERY_MD = `(min-width: ${THRESHOLD_MD}px)`;\nexport const MEDIAQUERY_LG = `(min-width: ${THRESHOLD_LG}px)`;\nexport const MEDIAQUERY_XL = `(min-width: ${THRESHOLD_XL}px)`;\nexport const MEDIAQUERY_HD = `(min-width: ${THRESHOLD_HD}px)`;\nexport const MEDIAQUERY_2K = `(min-width: ${THRESHOLD_2K}px)`;\nexport const MEDIAQUERY_4K = `(min-width: ${THRESHOLD_4K}px)`;\nexport const MEDIAQUERY_PORTRAIT = `(orientation: portrait)`;\nexport const MEDIAQUERY_LANDSCAPE = `(orientation: landscape)`;\nexport const MEDIAQUERY_PREFERS_LIGHT = `(prefers-color-scheme: light)`;\nexport const MEDIAQUERY_PREFERS_DARK = `(prefers-color-scheme: dark)`;\n/** Evaluates a CSS media query and reflects its match state, dispatching `change`/`match`/`unmatch` events as it changes. */\nlet PacemMediaQueryElement = class PacemMediaQueryElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._changeHandler = (evt) => {\n this.isMatch = evt.matches;\n };\n }\n #mql;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._init();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'query':\n if (!first) {\n this._init();\n }\n break;\n case 'isMatch':\n // dedicated change events\n this._broadcastChange(val);\n break;\n }\n }\n disconnectedCallback() {\n this._init('');\n super.disconnectedCallback();\n }\n _broadcastChange(val = this.isMatch) {\n this.dispatchEvent(new Event('change'));\n this.dispatchEvent(new Event(val ? 'match' : 'unmatch'));\n }\n _init(q = this.query) {\n const old = this.#mql;\n if (!Utils.isNull(old)) {\n old.removeEventListener('change', this._changeHandler);\n }\n if (!Utils.isNullOrEmpty(q)) {\n const val = this.#mql = window.matchMedia(q);\n val.addEventListener('change', this._changeHandler);\n this.isMatch = val.matches;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMediaQueryElement.prototype, \"query\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemMediaQueryElement.prototype, \"isMatch\", void 0);\nPacemMediaQueryElement = __decorate([\n CustomElement({\n tagName: P + '-media-query'\n })\n], PacemMediaQueryElement);\nexport { PacemMediaQueryElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemMenuCursorElement_1;\nimport { P, PCSS, Utils, CustomElement, Watch, ViewChild, PropertyConverters, Components, Defaults, avoidHandler, stopPropagationHandler, CustomElementUtils, Logging } from '@pacem/pacem-core';\n//namespace Components.UI {\n/** Collapsible off-canvas/hamburger navigation menu, optionally synchronized with the enclosing shell's CSS classes. */\nlet PacemMenuElement = class PacemMenuElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n /** Gets or sets whether the open/close and outset state toggle CSS classes on the ancestor shell. */\n this.synchronizeShell = true;\n this._stopPropagationHandlerConditional = (_) => {\n if (!Utils.isNull(this._container) && !Utils.isNull(this._backdrop)) {\n const offsetNav = Utils.offset(this._container);\n const offsetBase = Utils.offset(this._backdrop);\n // TODO: consider height as well for different skins, but DO manage edge cases...\n if (offsetNav.width < offsetBase.width) {\n this.open = false;\n }\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._container.addEventListener('click', stopPropagationHandler, false);\n this._container.addEventListener(\"scroll\", stopPropagationHandler, false);\n this._sync();\n }\n disconnectedCallback() {\n window.removeEventListener('navigate', this._stopPropagationHandlerConditional, false);\n if (!Utils.isNull(this._container)) {\n this._container.removeEventListener('click', stopPropagationHandler, false);\n this._container.removeEventListener(\"scroll\", stopPropagationHandler, false);\n }\n this._sync(false);\n super.disconnectedCallback();\n }\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('navigate', this._stopPropagationHandlerConditional, false);\n this._shell = CustomElementUtils.findAncestorShell(this);\n }\n _toggle(evt) {\n avoidHandler(evt);\n this.open = !this.open;\n this.dispatchEvent(new Event('toggle'));\n }\n _sync(val = this.open) {\n if (this.synchronizeShell) {\n Utils.addClass(this, 'menu-sync');\n Utils.addClass(this._shell, PCSS + (val === true ? '-menu-open' : '-menu-close'));\n Utils.removeClass(this._shell, PCSS + (val === true ? '-menu-close' : '-menu-open'));\n }\n else {\n Utils.removeClass(this, 'menu-sync');\n Utils.removeClass(this._shell, PCSS + '-menu-close ' + PCSS + '-menu-open');\n }\n if (this.outset) {\n Utils.addClass(this, 'menu-outset');\n }\n else {\n Utils.removeClass(this, 'menu-outset');\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'open' || name === 'synchronizeShell' || name === 'outset') {\n this._sync();\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemMenuElement.prototype, \"open\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemMenuElement.prototype, \"hideHamburgerButton\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemMenuElement.prototype, \"hideBackButton\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemMenuElement.prototype, \"outset\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemMenuElement.prototype, \"synchronizeShell\", void 0);\n__decorate([\n ViewChild('nav', true)\n], PacemMenuElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-menu`)\n], PacemMenuElement.prototype, \"_backdrop\", void 0);\nPacemMenuElement = __decorate([\n CustomElement({\n tagName: P + '-menu', template: `<${P}-panel class=\"${PCSS}-menu\" css-class=\"{{ {'menu-close': !:host.open, 'menu-open': :host.open} }}\" on-click=\":host._toggle($event)\"> \r\n <nav><${P}-content></${P}-content></nav>\r\n</${P}-panel>\r\n<${P}-shell-proxy>\r\n<${P}-button hide=\"{{ :host.hideBackButton }}\" class=\"${PCSS}-back ${PCSS}-menu button-flat\" css-class=\"{{ {'menu-close': !:host.open, 'menu-open': :host.open} }}\" on-click=\":host._toggle($event)\">BACK</${P}-button>\r\n<${P}-button hide=\"{{ :host.hideHamburgerButton }}\" class=\"${PCSS}-hamburger ${PCSS}-menu button-flat\" css-class=\"{{ {'menu-close': :host.open, 'menu-open': !:host.open} }}\" on-click=\":host._toggle($event)\">MENU</${P}-button></${P}-shell-proxy>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemMenuElement);\nexport { PacemMenuElement };\n/** Animated cursor/indicator that tracks the anchor matching the current path within an ancestor `PacemMenuElement`. */\nlet PacemMenuCursorElement = PacemMenuCursorElement_1 = class PacemMenuCursorElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._onPathChange = (evt) => {\n const path = evt?.detail.path;\n this._findAnchorAndScrollItIntoView(path);\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._menu = CustomElementUtils.findAncestorOfType(this, PacemMenuElement);\n this._findAnchorAndScrollItIntoView();\n }\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('navigate', this._onPathChange, false);\n }\n disconnectedCallback() {\n this._menu = null;\n window.removeEventListener('navigate', this._onPathChange, false);\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'disabled':\n this._findAnchorAndScrollItIntoView();\n break;\n }\n }\n _findAnchorAndScrollItIntoView(path = window.location.pathname) {\n if (this.disabled) {\n return;\n }\n const menu = this._menu;\n if (Utils.isNull(menu)) {\n this.log(Logging.LogLevel.Warn, `Couldn't find a ${PacemMenuElement} ancestor for this ${PacemMenuCursorElement_1}.`);\n return;\n }\n // 1. try to find a matching PacemAnchorElement\n const anchors = menu.querySelectorAll(P + '-a');\n let tget = null;\n for (let j = 0; j < anchors.length; j++) {\n const a = anchors.item(j);\n const router = a.router;\n let href = Utils.isNull(router)\n ? a.href\n : /* build fully formatted href, it might contain placeholders */ Utils.URIs.format(a.href, router.state);\n if (href === path) {\n tget = a;\n break;\n }\n }\n if (Utils.isNull(tget)) {\n // 2. try with real HTMLAnchorElement\n tget = menu.querySelector(`a[href='${path}']`);\n }\n // finally, scroll if any matching anchor was found\n if (!Utils.isNull(tget)) {\n tget.scrollIntoView({ behavior: 'smooth' });\n }\n }\n};\nPacemMenuCursorElement = PacemMenuCursorElement_1 = __decorate([\n CustomElement({\n tagName: P + '-menu-cursor'\n })\n], PacemMenuCursorElement);\nexport { PacemMenuCursorElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, Utils, CustomElement, Watch, ViewChild, PropertyConverters, Components, Defaults, Debounce } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Renders pagination buttons (first/previous/numbers/next/last, or a numeric-only strip) for a paged collection. */\nlet PacemPagerElement = class PacemPagerElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'index':\n case 'total':\n case 'pages':\n case 'size':\n case 'mode':\n this._databind();\n break;\n }\n }\n _databind() {\n const repeater = this._repeater;\n if (Utils.isNull(repeater))\n return;\n //\n var datasource = [];\n const size = this.size ?? 10, pages = this.pages ?? 5, total = this.total ?? 0, index = this.index ?? 0, mode = this.mode ?? 'standard';\n if (total > 0) {\n let totpages = Math.ceil(total / size);\n let pageindex = Math.floor(index / size);\n let startpageindex = Math.max(0, Math.ceil(pageindex - pages / 2));\n let endpageindex = Math.min(totpages - 1, startpageindex + pages - 1);\n while (startpageindex > 0 && (1 + endpageindex - startpageindex) < pages) {\n startpageindex--;\n }\n if (mode === 'numeric-only') {\n if (startpageindex > 0) {\n datasource.push({ caption: (1).toLocaleString(Utils.lang(this)), index: 0, /*first: true,*/ disabled: !( /*start*/pageindex > 0) });\n }\n }\n else {\n // |<\n datasource.push({ caption: '«', index: 0, first: true, disabled: !( /*start*/pageindex > 0) });\n // <\n datasource.push({ caption: '<', index: size * (pageindex - 1), previous: true, disabled: !(pageindex > 0) });\n }\n // ...\n if (startpageindex > 0 && mode !== 'numeric-only' || startpageindex > 1 && mode === 'numeric-only') {\n datasource.push({ caption: '…', index: size * (startpageindex - 1) });\n }\n // #\n for (let j = startpageindex; j <= endpageindex; j++) {\n datasource.push({ caption: (j + 1).toLocaleString(Utils.lang(this)), index: j * size });\n }\n // ...\n if (endpageindex < (totpages - 1) && mode !== 'numeric-only' || endpageindex < (totpages - 2) && mode === 'numeric-only') {\n datasource.push({ caption: '…', index: size * (endpageindex + 1) });\n }\n if (mode === 'numeric-only') {\n if (endpageindex < (totpages - 1)) {\n datasource.push({ caption: totpages.toLocaleString(Utils.lang(this)), index: size * (totpages - 1), /*last: true,*/ disabled: !( /*end*/pageindex < (totpages - 1)) });\n }\n }\n else {\n // >\n datasource.push({ caption: '>', index: size * (pageindex + 1), next: true, disabled: !(pageindex < (totpages - 1)) });\n // >|\n datasource.push({ caption: '»', index: size * (totpages - 1), last: true, disabled: !( /*end*/pageindex < (totpages - 1)) });\n }\n // \n this.index = pageindex * size;\n }\n repeater.datasource = datasource;\n }\n};\n__decorate([\n ViewChild(P + '-repeater')\n], PacemPagerElement.prototype, \"_repeater\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemPagerElement.prototype, \"index\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number, emit: false })\n], PacemPagerElement.prototype, \"total\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number, emit: false })\n], PacemPagerElement.prototype, \"pages\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number, emit: false })\n], PacemPagerElement.prototype, \"size\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String, emit: false })\n], PacemPagerElement.prototype, \"mode\", void 0);\n__decorate([\n Debounce(true)\n], PacemPagerElement.prototype, \"_databind\", null);\nPacemPagerElement = __decorate([\n CustomElement({\n tagName: P + '-pager', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater class=\"${PCSS}-pager\"><div class=\"${PCSS}-buttonset\">\r\n<div class=\"pager-buttons\">\r\n <template>\r\n <${P}-button class=\"${PCSS}-page button\" on-click=\":host.index = ^item.index\" disabled=\"{{ ^item.disabled }}\"\r\n css-class=\"{{ { 'currentpage': ^item.index === :host.index, 'firstpage buttonset-first': ^item.first, 'previouspage': ^item.previous, 'nextpage': ^item.next, 'lastpage buttonset-last': ^item.last } }}\"><${P}-span content=\"{{ ^item.caption }}\"></${P}-span></${P}-button>\r\n </template>\r\n</div>\r\n</div></${P}-repeater>`\n })\n], PacemPagerElement);\nexport { PacemPagerElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, Utils, CustomElement, Watch, ViewChild, PropertyConverters, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Declares a single `<source>` candidate (srcset/media/type) for an ancestor `PacemPictureElement`. */\nlet PacemPictureSourceElement = class PacemPictureSourceElement extends Components.PacemItemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n const picture = this.container;\n if (picture instanceof PacemPictureElement && ['srcset', 'media', 'type', 'disabled'].indexOf(name) >= 0) {\n picture.refreshSources();\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemPictureSourceElement.prototype, \"srcset\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemPictureSourceElement.prototype, \"media\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemPictureSourceElement.prototype, \"type\", void 0);\nPacemPictureSourceElement = __decorate([\n CustomElement({\n tagName: P + '-picture-source'\n })\n], PacemPictureSourceElement);\nexport { PacemPictureSourceElement };\n/** Responsive `<picture>` wrapper that builds its `<source>` elements from child `PacemPictureSourceElement` items. */\nlet PacemPictureElement = class PacemPictureElement extends Components.PacemItemsContainerElement {\n constructor() {\n super('img', { 'label': 'picture' });\n this._updateCurrentSrcHandler = (evt) => {\n this.currentSrc = this._img.currentSrc;\n };\n }\n validate(item) {\n return item instanceof PacemPictureSourceElement;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'src':\n this._setSource();\n break;\n case 'items':\n this._setSources();\n break;\n case 'tooltip':\n this._setAltText();\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._img.addEventListener('load', this._updateCurrentSrcHandler, false);\n this._setSource();\n this._setAltText();\n this._setSources();\n }\n disconnectedCallback() {\n const img = this._img;\n if (!Utils.isNull(img)) {\n img.removeEventListener('load', this._updateCurrentSrcHandler, false);\n }\n super.disconnectedCallback();\n }\n /** Rebuilds the `<source>` elements from the current child `PacemPictureSourceElement` items. */\n refreshSources() {\n this._setSources();\n }\n _setSources(items = this.items) {\n const picture = this._picture, img = this._img;\n if (!Utils.isNull(picture) && !Utils.isNull(img)) {\n const sources = picture.querySelectorAll('source'), itemCount = items?.length ?? 0;\n // populate\n for (let i = 0; i < itemCount; i++) {\n const item = this.items[i];\n let source;\n if (sources.length <= i) {\n source = document.createElement('source');\n source.setAttribute('part', 'source');\n picture.insertBefore(source, img);\n }\n else {\n source = sources.item(i);\n }\n if (item.disabled || Utils.isNullOrEmpty(item.srcset)) {\n source.removeAttribute('srcset');\n }\n else {\n source.srcset = item.srcset;\n }\n if (Utils.isNullOrEmpty(item.media)) {\n source.removeAttribute('media');\n }\n else {\n source.media = item.media;\n }\n if (Utils.isNullOrEmpty(item.type)) {\n source.removeAttribute('type');\n }\n else {\n source.type = item.type;\n }\n }\n // cleanup\n for (let i = sources.length - 1; i >= itemCount; i--) {\n let source = sources.item(i);\n source.remove();\n }\n }\n }\n _setSource(src = this.src) {\n const img = this._img;\n if (!Utils.isNull(img)) {\n if (Utils.isNullOrEmpty(src)) {\n img.removeAttribute('src');\n }\n else {\n img.src = src;\n }\n }\n }\n _setAltText(tip = this.tooltip) {\n const img = this._img;\n if (!Utils.isNull(img)) {\n if (Utils.isNullOrEmpty(tip)) {\n img.alt = this.aria.attributes.toObject()['label'];\n }\n else {\n img.alt = tip;\n }\n }\n }\n};\n__decorate([\n ViewChild('picture')\n], PacemPictureElement.prototype, \"_picture\", void 0);\n__decorate([\n ViewChild('img')\n], PacemPictureElement.prototype, \"_img\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemPictureElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemPictureElement.prototype, \"currentSrc\", void 0);\nPacemPictureElement = __decorate([\n CustomElement({\n tagName: P + '-picture', shadow: true,\n template: `<picture part=\"picture\"><img loading=\"lazy\" part=\"img\" /></picture><slot></slot>`\n })\n], PacemPictureElement);\nexport { PacemPictureElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, Utils, CustomElement, Watch, ViewChild, PropertyConverters, Components, Defaults } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Horizontal progress bar with an optional textual caption. */\nlet PacemProgressbarElement = class PacemProgressbarElement extends Components.PacemElement {\n constructor() {\n super('progressbar', { 'valuemin': '0%', 'valuemax': '100%', 'valuenow': '0%' });\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'percentage':\n this._bar.style.transform = `translateX(${(-100 + (val || 0))}%)`;\n this._glow.style.transform = `scaleX(${((val || 0) * .01)})`;\n let perc = Utils.leftPad(Math.floor(val), 2, '0') + '%';\n this.aria.attributes.set('valuenow', perc);\n if (Utils.isNullOrEmpty(this.caption)) {\n this.aria.attributes.set('valuetext', this._caption.textContent = perc);\n }\n break;\n case 'caption':\n this.aria.attributes.set('valuetext', this._caption.textContent = val);\n break;\n }\n }\n};\n__decorate([\n ViewChild('.progressbar-track', true, false)\n], PacemProgressbarElement.prototype, \"_face\", void 0);\n__decorate([\n ViewChild('.progressbar-bar', false, true)\n], PacemProgressbarElement.prototype, \"_bar\", void 0);\n__decorate([\n ViewChild('.progressbar-glow')\n], PacemProgressbarElement.prototype, \"_glow\", void 0);\n__decorate([\n ViewChild('.progressbar-caption')\n], PacemProgressbarElement.prototype, \"_caption\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemProgressbarElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemProgressbarElement.prototype, \"percentage\", void 0);\nPacemProgressbarElement = __decorate([\n CustomElement({\n tagName: P + '-progressbar', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"progressbar-glow\"></div>\r\n <div class=\"progressbar-track\"><div class=\"progressbar-bar\"></div></div>\r\n <label class=\"progressbar-caption\"></label>`\n })\n], PacemProgressbarElement);\nexport { PacemProgressbarElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, Utils, CustomElement, Watch, ViewChild, PropertyConverters, Components, CustomElementUtils } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Collapsible off-canvas drawer/sidebar, optionally synchronized with the enclosing shell's CSS classes. */\nlet PacemSidebarElement = class PacemSidebarElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n /** Gets or sets whether the sidebar is open. */\n this.open = false;\n /** Gets or sets whether the open/close state toggles CSS classes on the ancestor shell. */\n this.synchronizeShell = true;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'open':\n case 'synchronizeShell':\n this._sync();\n break;\n }\n }\n disconnectedCallback() {\n this._sync(false);\n super.disconnectedCallback();\n }\n _sync(val = this.open) {\n const shell = this.#shell;\n if (this.synchronizeShell) {\n Utils.addClass(this, 'sidebar-sync');\n Utils.addClass(shell, PCSS + (val === true ? '-sidebar-open' : '-sidebar-close'));\n Utils.removeClass(shell, PCSS + (val === true ? '-sidebar-close' : '-sidebar-open'));\n }\n else {\n Utils.removeClass(this, 'sidebar-sync');\n Utils.removeClass(shell, PCSS + '-sidebar-close ' + PCSS + '-sidebar-open');\n }\n }\n #shell;\n connectedCallback() {\n super.connectedCallback();\n this.#shell = CustomElementUtils.findAncestorShell(this);\n }\n};\n__decorate([\n ViewChild('.sidebar-drawer', true)\n], PacemSidebarElement.prototype, \"_drawer\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemSidebarElement.prototype, \"open\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSidebarElement.prototype, \"synchronizeShell\", void 0);\nPacemSidebarElement = __decorate([\n CustomElement({\n tagName: P + '-sidebar', template: `<${P}-panel class=\"sidebar-drawer\" part=\"drawer\" css-part=\"{{ { 'open': :host.open } }}\" css-class=\"{{ {'open': :host.open } }}\">\r\n <slot></slot>\r\n</${P}-panel>`,\n shadow: true\n })\n], PacemSidebarElement);\nexport { PacemSidebarElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Single slide item hosted within a `PacemSlideshowElement`. */\nlet PacemSlideElement = class PacemSlideElement extends Components.PacemIterableElement {\n};\nPacemSlideElement = __decorate([\n CustomElement({\n tagName: P + '-slide'\n })\n], PacemSlideElement);\nexport { PacemSlideElement };\n/** Iterates over `PacemSlideElement` children, exposing them as a navigable slideshow. */\nlet PacemSlideshowElement = class PacemSlideshowElement extends Components.PacemIterativeElement {\n validate(item) {\n return item instanceof PacemSlideElement;\n }\n};\nPacemSlideshowElement = __decorate([\n CustomElement({\n tagName: P + '-slideshow'\n })\n], PacemSlideshowElement);\nexport { PacemSlideshowElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElementUtils, CustomElement, Watch, PropertyConverters, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI.Social {\n/** Embeds a tweet, given its id, via Twitter's `widgets.js`. */\nlet PacemTweetEmbedElement = class PacemTweetEmbedElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._scriptsLoaded = false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'tweetid' && this._scriptsLoaded)\n this._render();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n CustomElementUtils.importjs('https://platform.twitter.com/widgets.js').then(() => {\n this._scriptsLoaded = true;\n this._render();\n });\n }\n _render() {\n if (this.tweetid && this._scriptsLoaded) {\n twttr.ready(tw => tw.widgets.createTweet(this.tweetid, this));\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTweetEmbedElement.prototype, \"tweetid\", void 0);\nPacemTweetEmbedElement = __decorate([\n CustomElement({ tagName: P + '-tweetembed' })\n], PacemTweetEmbedElement);\nexport { PacemTweetEmbedElement };\n//}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElementUtils, CustomElement, Watch, PropertyConverters, PacemEventTarget, Components, Utils, Logging } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Determines how a `PacemStickyHeaderElement` behaves once the scroll offset passes its `threshold`. */\nexport var StickyHeaderVisibility;\n(function (StickyHeaderVisibility) {\n /** Stays pinned/visible once past the threshold. */\n StickyHeaderVisibility[\"Persistent\"] = \"persistent\";\n /** Hides while scrolling down and reappears while scrolling up. */\n StickyHeaderVisibility[\"QuickReturn\"] = \"quickreturn\";\n})(StickyHeaderVisibility || (StickyHeaderVisibility = {}));\n/** Header that reacts to page scroll, either staying pinned to the top of the shell or hiding/showing on scroll direction. */\nlet PacemStickyHeaderElement = class PacemStickyHeaderElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.#previousOffset = { left: 0, top: 0 };\n this._scrollHandler = (evt) => {\n this.offset = evt.detail;\n };\n }\n #scroller;\n #previousOffset;\n #id;\n #shell;\n _ensureScrollAwareElement() {\n if (Utils.isNull(this.#scroller)) {\n const scroller = this.#scroller = new Components.PacemScrollAwareElement();\n this.log(Logging.LogLevel.Debug, 'creating scroll aware ' + this.#id);\n const shell = this.#shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(scroller);\n scroller.dataset[\"target\"] = this.#id;\n scroller.addEventListener(Components.ScrollEventName, this._scrollHandler, false);\n }\n this.#scroller.disabled = this.disabled;\n }\n _manageOffsetChange(offset = this.offset) {\n if (this.disabled) {\n return;\n }\n const visibility = this.visibility || StickyHeaderVisibility.Persistent, lastTop = this.#previousOffset.top, top = offset.top, threshold = this.threshold || 0, shell = this.#shell;\n if (lastTop <= threshold && top > threshold) {\n Utils.removeClass(shell, 'sticky-header-top');\n Utils.addClass(shell, 'sticky-header-scroll');\n // get into wavy behavior and aspect\n if (visibility === StickyHeaderVisibility.QuickReturn) {\n Utils.addClass(shell, 'sticky-header-fade');\n this.visible = false;\n }\n }\n else if (lastTop > threshold && top <= threshold) {\n // back to steady form\n Utils.removeClass(shell, 'sticky-header-fade');\n Utils.removeClass(shell, 'sticky-header-scroll');\n Utils.addClass(shell, 'sticky-header-top');\n }\n else if (lastTop > threshold && top > threshold && lastTop > top) {\n // scrolling up, show\n this.visible = true;\n Utils.removeClass(shell, 'sticky-header-fade');\n }\n else if (lastTop > threshold && top > threshold && lastTop < top && visibility == StickyHeaderVisibility.QuickReturn) {\n // keep scrolling down with quick return, hide\n Utils.addClass(shell, 'sticky-header-fade');\n }\n this.#previousOffset = offset;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'offset':\n this._manageOffsetChange(val);\n break;\n case 'disabled':\n this._ensureScrollAwareElement();\n break;\n }\n }\n connectedCallback() {\n super.connectedCallback();\n this.#id = this.id || 'sticky-' + Utils.uniqueCode();\n this._ensureScrollAwareElement();\n }\n disconnectedCallback() {\n const scroller = this.#scroller, shell = this.#shell;\n if (!Utils.isNull(scroller)) {\n this.log(Logging.LogLevel.Debug, 'disposing scroll aware ' + this.#id);\n scroller.removeEventListener(Components.ScrollEventName, this._scrollHandler, false);\n scroller.remove();\n this.#scroller = undefined;\n Utils.removeClass(shell, 'sticky-header-fade');\n Utils.removeClass(shell, 'sticky-header-top');\n Utils.removeClass(shell, 'sticky-header-scroll');\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Number, emit: false })\n], PacemStickyHeaderElement.prototype, \"threshold\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Point })\n], PacemStickyHeaderElement.prototype, \"offset\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemStickyHeaderElement.prototype, \"visible\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String, emit: false })\n], PacemStickyHeaderElement.prototype, \"visibility\", void 0);\nPacemStickyHeaderElement = __decorate([\n CustomElement({ tagName: P + '-sticky-header' })\n], PacemStickyHeaderElement);\nexport { PacemStickyHeaderElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, ViewChild, PropertyConverters, Components, Utils, PropertyChangeEvent, Animations } from '@pacem/pacem-core';\nimport { AdapterOrientation } from './adapter';\n//namespace Pacem.Components.UI {\nconst PACEM_TAB_FOCUS_CSS = 'tab-focus';\nconst StringOrNodePropertyConverter = {\n convert: (attr, e) => {\n return attr.startsWith('#') ? PropertyConverters.Element.convert(attr, e) : PropertyConverters.String.convert(attr, e);\n },\n convertBack: (prop, e) => {\n return (prop instanceof Node) ? PropertyConverters.Element.convertBack(prop, e) : PropertyConverters.String.convertBack(prop, e);\n },\n retryConversionWhenReady: true\n};\n/** Single tab item, pairing a `label` with its content, hosted within a `PacemTabsElement`. */\nlet PacemTabElement = class PacemTabElement extends Components.PacemIterableElement {\n constructor() {\n super('tab');\n this._slotChangeHandler = (_) => {\n const old = this.#content;\n const val = this.#content = this.content;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'content', currentValue: val, oldValue: old }));\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._slotLabel.addEventListener('slotchange', this._slotChangeHandler, false);\n }\n disconnectedCallback() {\n const lbl = this._slotLabel;\n if (!Utils.isNull(lbl)) {\n lbl.removeEventListener('slotchange', this._slotChangeHandler, false);\n }\n super.disconnectedCallback();\n }\n #content;\n /** @readonly Gets the nodes assigned to the `label` slot. */\n get content() {\n return this.querySelectorAll('*[slot=label]');\n }\n};\n__decorate([\n ViewChild('slot[name=label]')\n], PacemTabElement.prototype, \"_slotLabel\", void 0);\n__decorate([\n Watch({ converter: StringOrNodePropertyConverter })\n], PacemTabElement.prototype, \"label\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTabElement.prototype, \"key\", void 0);\nPacemTabElement = __decorate([\n CustomElement({\n tagName: P + '-tab', shadow: true, template: `<slot name=\"label\" part=\"label\"></slot><slot></slot>`\n })\n], PacemTabElement);\nexport { PacemTabElement };\n/** Iterates over `PacemTabElement` children, rendering a tab strip (via an adapter) and animating the transition between the active tab's content. */\nlet PacemTabsElement = class PacemTabsElement extends Components.PacemIterativeElement {\n constructor(_tweener = new Animations.TweenService()) {\n super(\"tablist\");\n this._tweener = _tweener;\n }\n _labelCallback(item, index) {\n const content = item.content;\n if (content.length > 0) {\n let assembled = '';\n content.forEach((node) => {\n assembled += node.outerHTML;\n });\n return assembled;\n }\n if (item.label instanceof Node) {\n return item.label;\n }\n return `<span class=\"${(item.key || 'tab')}\">${item.label}</span>`;\n }\n _syncOrientation(val = this.orientation) {\n if (!Utils.isNull(this._defaultTabAdapter)) {\n this._defaultTabAdapter.orientation = val;\n }\n if (!Utils.isNull(this._tabs)) {\n const fn = val === AdapterOrientation.Vertical ? Utils.addClass : Utils.removeClass;\n fn(this._tabs, 'tabs-vertical');\n }\n }\n _syncVisibility(val = this.index, old = -1) {\n const timeout = 500;\n // lock height\n const container = this._container, height = container.clientHeight;\n const style = getComputedStyle(container), padding = style.boxSizing === 'border-box' ? 0 : parseInt(style.paddingTop) + parseInt(style.paddingBottom);\n container.style.height = (height - padding) + 'px';\n let ndx = 0;\n for (let tab of this.items || []) {\n if (ndx === val) {\n Utils.addClass(tab, 'tab-in');\n requestAnimationFrame(() => {\n // wait for visibility digestion\n Utils.addClass(tab, PACEM_TAB_FOCUS_CSS);\n Utils.removeClass(tab, 'tab-in');\n Utils.addAnimationEndCallback(tab, (t) => {\n Utils.removeClass(t, 'tab-previous tab-next');\n const tgetH = Utils.offset(t).height /* + padding*/;\n this._tweener.run(parseInt(container.style.height), tgetH, 100, 0, Animations.Easings.sineOut, (_, v) => {\n container.style.height = Math.round(v) + 'px';\n })\n .then(_ => {\n // unlock height\n container.style.height = '';\n });\n }, timeout);\n });\n tab.aria.attributes.set('selected', 'true');\n }\n else {\n Utils.removeClass(tab, 'tab-previous tab-next');\n Utils.addClass(tab, ndx < val ? 'tab-previous' : 'tab-next');\n if (ndx === old) {\n Utils.addClass(tab, 'tab-out');\n Utils.removeClass(tab, PACEM_TAB_FOCUS_CSS);\n Utils.addAnimationEndCallback(tab, (t) => {\n Utils.removeClass(t, 'tab-out');\n }, timeout);\n tab.aria.attributes.set('selected', 'false');\n }\n }\n ndx++;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n //this._defaultTabAdapter.labelCallback = this._labelCallback;\n if (Utils.isNull(this.adapter)) {\n this._syncOrientation();\n this._syncVisibility();\n this.adapter = this._defaultTabAdapter;\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'adapter':\n if (Utils.isNull(val)) {\n this.adapter = this._defaultTabAdapter;\n }\n this._isUsingDefaultTabAdapter = this.adapter === this._defaultTabAdapter;\n break;\n case 'index':\n this._syncVisibility(val, old);\n break;\n case 'orientation':\n this._syncOrientation(val);\n break;\n }\n }\n validate(item) {\n return item instanceof PacemTabElement;\n }\n};\n__decorate([\n ViewChild(P + '-adapter')\n], PacemTabsElement.prototype, \"_defaultTabAdapter\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-tabs')\n], PacemTabsElement.prototype, \"_tabs\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-tabs-content')\n], PacemTabsElement.prototype, \"_container\", void 0);\n__decorate([\n Watch()\n], PacemTabsElement.prototype, \"_isUsingDefaultTabAdapter\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTabsElement.prototype, \"orientation\", void 0);\nPacemTabsElement = __decorate([\n CustomElement({\n tagName: P + '-tabs', shadow: false,\n template: `<div class=\"${PCSS}-tabs\">\r\n <${P}-adapter class=\"${PCSS}-tabs-adapter\" swipe-enabled=\"false\" hide=\"{{ !:host._isUsingDefaultTabAdapter }}\" label-callback=\"{{ :host._labelCallback }}\"></${P}-adapter>\r\n <div class=\"${PCSS}-tabs-content\">\r\n <${P}-content></${P}-content>\r\n </div>\r\n</div>`\n })\n], PacemTabsElement);\nexport { PacemTabsElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, ViewChild, Components, Utils } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Displays scrolling/ticking content, animating the swap whenever its `content` changes. */\nlet PacemTickerElement = class PacemTickerElement extends Components.PacemSafeContentElement {\n constructor() {\n super(...arguments);\n this._contentChangeHandler = (evt) => {\n this._incoming.replaceChildren(...this.#newContent);\n Utils.addClass(this, 'ticking');\n Utils.addAnimationEndCallback(this._incoming, element => {\n Utils.removeClass(this, 'ticking');\n // swap content\n this._outgoing.replaceChildren(...this.#newContent);\n //this.#newContent = null;\n });\n };\n }\n #newContent;\n _tickContent(content = this.content) {\n if (typeof content === 'number') {\n content = content.toLocaleString();\n }\n if (typeof content === 'string') {\n // (sanitizing a string parses it: a fragment comes back)\n const safeContent = this.sanitize(content);\n this.#newContent = typeof safeContent === 'string'\n ? this._buildMarkupNode(safeContent)\n : Array.from(safeContent.childNodes);\n }\n else if (content instanceof Node) {\n const safeContent = this.sanitize(content);\n this.replaceChildren(...(this.#newContent = [safeContent]));\n }\n else {\n const safeContent = content.map(a => this.sanitize(a));\n this.replaceChildren(...(this.#newContent = safeContent));\n }\n }\n _buildMarkupNode(html) {\n const tmpl = document.createElement('template');\n tmpl.innerHTML = html;\n return Array.from(tmpl.content.childNodes);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'content' && !first) {\n this._tickContent(val);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._slot.addEventListener('slotchange', this._contentChangeHandler, false);\n const content = this.content ?? this._slot.assignedNodes();\n this._tickContent(content);\n }\n disconnectedCallback() {\n const slot = this._slot;\n if (!Utils.isNull(slot)) {\n slot.removeEventListener('slotchange', this._contentChangeHandler);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild('slot')\n], PacemTickerElement.prototype, \"_slot\", void 0);\n__decorate([\n ViewChild('div[part=ticker-outgoing]')\n], PacemTickerElement.prototype, \"_outgoing\", void 0);\n__decorate([\n ViewChild('div[part=ticker-incoming]')\n], PacemTickerElement.prototype, \"_incoming\", void 0);\nPacemTickerElement = __decorate([\n CustomElement({ tagName: P + '-ticker', shadow: true, template: `<div part=\"ticker-outgoing\"></div><div part=\"ticker-incoming\"></div><slot hidden></slot>` })\n], PacemTickerElement);\nexport { PacemTickerElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemToastElement_1;\nimport { P, PCSS, CustomElement, Watch, Components, Utils, PropertyConverters, CustomElementUtils, Transformer } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\nconst PACEM_TOAST_POPS = \"pacem:toast:pops\";\n/** Dismissible toast/snackbar notification, with optional autohide. */\nlet PacemToastElement = PacemToastElement_1 = class PacemToastElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n /** Gets or sets whether the toast automatically hides itself after `timeout` milliseconds. */\n this.autohide = true;\n /** Gets or sets the autohide delay, in milliseconds. */\n this.timeout = 3000;\n this._doHide = (evt) => {\n window.clearTimeout(this._handle);\n this.show = false;\n };\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('click', this._doHide, false);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'show') {\n if (val !== true) {\n Utils.removeClass(this, 'toast-show');\n Utils.addClass(this, 'toast-hide');\n this.dispatchEvent(new CustomEvent('close'));\n Utils.waitForAnimationEnd(this, 1000).then(() => {\n Utils.removeClass(this, 'toast-hide');\n });\n }\n else {\n let order = CustomElementUtils.getAttachedPropertyValue(PacemToastElement_1, PACEM_TOAST_POPS, 0) - 1;\n CustomElementUtils.setAttachedPropertyValue(PacemToastElement_1, PACEM_TOAST_POPS, order);\n this.style.order = '' + order;\n Utils.addClass(this, 'toast-show');\n this._show();\n }\n }\n }\n disconnectedCallback() {\n this.removeEventListener('click', this._doHide, false);\n super.disconnectedCallback();\n }\n _show() {\n window.clearTimeout(this._handle);\n if (this.disabled) {\n return;\n }\n if (this.autohide) {\n this._handle = window.setTimeout(() => { this.show = false; }, this.timeout);\n }\n }\n /** Shows the toast, (re)starting the autohide timer if applicable. */\n popup() {\n if (this.show) {\n this._show();\n }\n else {\n this.show = true;\n }\n }\n /**\n * Opinionated shortcut/utility for toast spinning.\n * @param toaster Toast container\n * @param level Message criticity level\n * @param message The message\n * @param options Further options object\n */\n static toast(toaster, level, message, options) {\n var toast = new PacemToastElement_1();\n if (!Utils.isNullOrEmpty(options?.cssClass)) {\n const cssClass = Utils.isArray(options.cssClass) ? options.cssClass.join(' ') : options.cssClass;\n Utils.addClass(toast, cssClass);\n }\n else {\n toast.className = 'toast-' + level;\n }\n if (!Utils.isNull(options?.autohide)) {\n toast.autohide = options.autohide;\n }\n if (options?.timeout > 0) {\n toast.timeout = options.timeout;\n }\n // icon\n const icon = document.createElement('i');\n icon.className = PCSS + '-icon text-bigger-steady ' + PCSS + '-margin margin-right-1 flex-auto';\n var ligature = 'info';\n switch (level) {\n case 'danger':\n case 'error':\n ligature = 'error';\n break;\n case 'warning':\n ligature = 'warning';\n break;\n case 'success':\n ligature = 'check_circle';\n break;\n }\n icon.textContent = ligature;\n const container = document.createElement('div');\n Utils.addClass(container, 'display-flex flex-stretch flex-start flex-nowrap');\n container.appendChild(icon);\n // caption\n const caption = document.createElement('span');\n Utils.addClass(caption, 'text-small text-pre');\n if (typeof message === 'string') {\n caption.innerHTML = message;\n }\n else {\n caption.appendChild(message);\n }\n container.appendChild(caption);\n toast.appendChild(container);\n toaster.appendChild(toast);\n // promise\n return new Promise((resolve, _) => {\n window.setTimeout(() => {\n toast.popup();\n }, // needs some time to digest\n // state and transition\n 100);\n const callback = () => {\n toast.removeEventListener('close', callback, false);\n resolve();\n Utils.waitForAnimationEnd(toast, 1000).then(_ => {\n toast.remove();\n });\n };\n toast.addEventListener('close', callback, false);\n });\n }\n /**\n * Like `toast`, but renders the message inside a filled/bordered container for extra emphasis.\n * @param toaster Toast container\n * @param level Message criticity level\n * @param message The message\n * @param options Further options object\n */\n static toast2(toaster, level, message, options) {\n let cssClass = options?.cssClass;\n let cssArray = ['fill-' + level + '-container', 'fill-glass', 'border-solid', 'border-size--2', 'border-round', 'border-radius--6'];\n if (!Utils.isNullOrEmpty(cssClass)) {\n if (Utils.isArray(cssClass)) {\n Array.prototype.push.apply(cssArray, cssClass);\n }\n else {\n Array.prototype.push.apply(cssArray, cssClass.split(' '));\n }\n }\n return PacemToastElement_1.toast(toaster, level, message, Utils.extend({}, options ?? {}, { cssClass: cssArray }));\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemToastElement.prototype, \"autohide\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemToastElement.prototype, \"timeout\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemToastElement.prototype, \"show\", void 0);\n__decorate([\n Transformer(\"poptoast\")\n], PacemToastElement, \"toast\", null);\n__decorate([\n Transformer(\"poptoastcontainer\")\n], PacemToastElement, \"toast2\", null);\nPacemToastElement = PacemToastElement_1 = __decorate([\n CustomElement({\n tagName: P + '-toast',\n modifiers: ['clickable']\n })\n], PacemToastElement);\nexport { PacemToastElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, ViewChild, Components, Utils, PropertyConverters, Defaults, Animations, Debounce, avoidHandler } from '@pacem/pacem-core';\n//namespace Components.UI {\n/** Table-of-contents that lists the headings/elements matched by `selector`, highlighting and scrolling to the currently focused one. */\nlet PacemTocElement = class PacemTocElement extends Components.PacemElement {\n constructor(_tweener = new Animations.TweenService()) {\n super();\n this._tweener = _tweener;\n this._items = [];\n this._scrollToSelf = (evt) => {\n this._scrollTo('#' + evt.target.id);\n };\n this._hashChange = (evt) => {\n evt.preventDefault();\n this._scrollTo(window.location.hash, false);\n };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n // url\n switch (name) {\n case 'target':\n if (!Utils.isNull(this._observer))\n this._observe();\n break;\n case 'selector':\n this.refresh();\n break;\n }\n }\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('hashchange', this._hashChange, false);\n }\n disconnectedCallback() {\n window.removeEventListener('hashchange', this._hashChange, false);\n if (!Utils.isNull(this._observer))\n this._observer.disconnect();\n super.disconnectedCallback();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._observer = new MutationObserver((e) => { this.refresh(); });\n this._observe();\n }\n _onScroll(evt) {\n this._update(Utils.scrollTop);\n }\n _observe() {\n this._observer.observe(this.target || document.body, { subtree: true, childList: true });\n }\n _getTop(dom) {\n return Utils.offset(dom).top;\n }\n _scrollTo(selector, tween = true) {\n if (/^#[^&=]+$/.test(selector)) {\n const dom = !Utils.isNullOrEmpty(selector) && document.querySelector(selector), item = !Utils.isNull(dom) && this._items.find(i => i.dom === dom);\n if (item && !Utils.isNull(item.dom)) {\n const tget = this._getTop(item.dom) - (this.offset || 0);\n if (tween) {\n let from = Utils.scrollTop;\n window.location.hash = item.dom.id;\n this._tweener.run(from, tget, 500, 0, Animations.Easings.sineInOut, (t, v) => {\n window.scrollTo(0, v);\n });\n }\n else {\n window.scrollTo(0, tget);\n }\n }\n }\n }\n _startScrollTo(item, evt) {\n avoidHandler(evt);\n this._scrollTo(item.url);\n }\n _update(top) {\n // pick focused item (fallback: first item)\n const zero = top + (this.offset || 0);\n var current = this._items && this._items.length > 0 && this._items[0];\n for (var item of this._items) {\n if (Utils.offset(item.dom).top <= zero)\n current = item;\n else\n break;\n }\n // update css\n const datasource = [];\n for (var item of this._items) {\n if (Utils.isNullOrEmpty(item.dom.id)) {\n item.dom.id = item.dom.innerText.trim().replace(/[^a-zA-Z0-9]/g, '-').replace(/-*$/, '').replace(/^-*/, '').toLowerCase();\n }\n datasource.push({ focus: item === current, label: item.dom.innerText, url: '#' + item.dom.id });\n }\n if (!Utils.isNull(this._repeater))\n this._repeater.datasource = datasource;\n }\n /** DOM might change while interacting with the page, this method allows extemporary resets. */\n refresh() {\n // reset items\n for (let item of this._items) {\n item.dom.removeEventListener('click', this._scrollToSelf, false);\n Utils.removeClass(item.dom, PCSS + '-toc-item');\n }\n //\n const selector = this.selector;\n if (Utils.isNullOrEmpty(selector)) {\n this._repeater && (this._repeater.datasource = []);\n this.hasContent = false;\n return;\n }\n const items = (this.target || document).querySelectorAll(selector), elements = [];\n for (let j = 0; j < items.length; j++) {\n const dom = items.item(j);\n dom.addEventListener('click', this._scrollToSelf, false);\n Utils.addClass(dom, PCSS + '-toc-item');\n elements.push({ dom: dom, top: this._getTop(dom) });\n }\n // bootstrap TOC\n this._items = elements;\n this._update(Utils.scrollTop);\n this.hasContent = !Utils.isNullOrEmpty(elements);\n // initial state\n let initialTarget = window.location.hash;\n if (!Utils.isNullOrEmpty(initialTarget)) {\n // in case of hash\n setTimeout(() => {\n this._scrollTo(initialTarget, true);\n }, 1000);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTocElement.prototype, \"selector\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTocElement.prototype, \"offset\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemTocElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemTocElement.prototype, \"router\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemTocElement.prototype, \"hasContent\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemTocElement.prototype, \"_repeater\", void 0);\n__decorate([\n Debounce(100)\n], PacemTocElement.prototype, \"_onScroll\", null);\n__decorate([\n Debounce(250)\n /** DOM might change while interacting with the page, this method allows extemporary resets. */\n], PacemTocElement.prototype, \"refresh\", null);\nPacemTocElement = __decorate([\n CustomElement({\n tagName: P + '-toc', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-scroll-aware on-${Components.ScrollEventName}=\":host._onScroll($event)\" url=\"{{ :host.url }}\"></${P}-scroll-aware>\r\n<${P}-repeater><nav class=\"${PCSS}-toc\"><template>\r\n <${P}-a on-click=\":host._startScrollTo(^item, $event)\" router=\"{{ :host.router }}\" css-class=\"{{ {'toc-focus': ^item.focus} }}\" href=\"{{ ^item.url }}\"><${P}-text text=\"{{ ^item.label }}\"></${P}-text></${P}-a>\r\n</template></nav></${P}-repeater>`\n })\n], PacemTocElement);\nexport { PacemTocElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, ViewChild, Components, Utils, PropertyConverters, UI, Animations } from '@pacem/pacem-core';\nimport { Angle } from '@pacem/pacem-foundation';\n//namespace Pacem.Components.UI {\nconst TWO_PI = Math.PI * 2;\nfunction cartesian(cx, cy, r, theta) {\n return {\n x: cx + (r * Math.cos(theta)),\n y: cy + (r * Math.sin(theta))\n };\n}\n/** Circular dial/knob control for picking a numeric value between `min` and `max` by rotating a handle. */\nlet PacemTunerElement = class PacemTunerElement extends Components.PacemElement {\n constructor() {\n super();\n //#region INTERACTIVE\n /** Gets or sets the minimum selectable value. */\n this.min = 0.0;\n /** Gets or sets the maximum selectable value. */\n this.max = 100.0;\n this._rotateStartHandler = (evt) => {\n const angle = this.#angle = this._getAngle(evt);\n const r = this._rotate;\n r.minRotation = 0 - angle;\n r.maxRotation = TWO_PI - angle;\n this._setValue(angle);\n };\n this._rotateEndHandler = (evt) => {\n //this.#angle += evt.detail.rotation;\n };\n this._rotateHandler = (evt) => {\n evt.preventDefault();\n const angle = evt.detail.rotation + this.#angle;\n this._setValue(angle);\n };\n }\n #angle;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const rotate = this._rotate, tween = this._tween;\n rotate.addEventListener(UI.RotateEventType.Start, this._rotateStartHandler, false);\n rotate.addEventListener(UI.RotateEventType.Rotate, this._rotateHandler, false);\n rotate.addEventListener(UI.RotateEventType.End, this._rotateEndHandler, false);\n rotate.register(this._canvas);\n this._toggleRotate();\n //\n requestAnimationFrame(() => this._draw(this.min));\n //\n tween.easing = Animations.Easings.sineInOut;\n tween.delay = 500 + (Math.random() * 100 - 100);\n tween.start = this.value > this.min;\n }\n disconnectedCallback() {\n const rotate = this._rotate, canvas = this._canvas;\n if (!Utils.isNull(rotate)) {\n rotate.removeEventListener(UI.RotateEventType.Rotate, this._rotateHandler, false);\n if (!Utils.isNull(canvas)) {\n rotate.unregister(canvas);\n }\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'interactive':\n this._toggleRotate(val);\n if (!val)\n Utils.removeClass(this, 'tuner-interactive');\n else\n Utils.addClass(this, 'tuner-interactive');\n break;\n case 'round':\n if (Math.round(val) != val || val < 0)\n throw `${this.constructor.name}: round value must be an integer greater or equal to zero.`;\n break;\n default:\n // in any other case:\n this._draw();\n break;\n }\n }\n _toggleRotate(interactive = this.interactive) {\n const r = this._rotate;\n if (!Utils.isNull(r)) {\n r.disabled = !interactive;\n }\n }\n _angleToValue(angle) {\n const round = Math.pow(10, this.round || 0);\n const angleValue = this.min + angle * (this.max - this.min) / TWO_PI;\n return Math.round(round * angleValue) / round;\n }\n _valueToAngle(v = this.value ?? this.min) {\n return TWO_PI * (v - this.min) / (this.max - this.min);\n }\n _setValue(angle) {\n const value = this._angleToValue(angle).clamp(this.min, this.max);\n if (value != this.value) {\n this.value = value;\n this.dispatchEvent(new Event(\"change\"));\n }\n }\n /**\n * Returns the angle between the vertical line through 'center' and the line through 'center' and 'currentPosition'.\n * @param evt\n * @returns\n */\n _getAngle(evt) {\n const angle = {\n vertex: evt.detail.center,\n end: evt.detail.currentPosition,\n start: { x: evt.detail.center.x, y: evt.detail.center.y - 1 }\n };\n const alpha = Angle.value(angle);\n if (alpha > 0) {\n return TWO_PI - alpha;\n }\n else {\n return -alpha;\n }\n }\n //#endregion\n _draw(value = this.value) {\n if (this.disabled || Utils.isNull(this._rail)) {\n return;\n }\n value = (isNaN(value) ? this.min : value).clamp(this.min, this.max);\n const rail = this._rail;\n const counterRail = this._counterRail;\n const isMin = value === this.min, isMax = value === this.max;\n if (isMin || isMax) {\n const d = `M 50 50 m -50,0 a 50,50 0 1,1 100,0 a 50,50 0 1,1 -100,0`;\n rail.setAttribute('d', isMin ? '' : d);\n counterRail.setAttribute('d', isMax ? '' : d);\n }\n else {\n const mathPI2 = Math.PI * .5;\n // rail\n const from = cartesian(50, 50, 50, -mathPI2);\n const angle /* fraction of the round angle */ = this._valueToAngle(value);\n const to = cartesian(50, 50, 50, -mathPI2 + angle);\n const large = angle > Math.PI ? 1 : 0;\n const d = `M ${to.x} ${to.y} A 50 50 0 ${large} 0 ${from.x} ${from.y}`;\n rail.setAttribute('d', d);\n // counter rail\n const counterFrom = to;\n const counterTo = cartesian(50, 50, 50, 3 * mathPI2);\n const counterAngle /* fraction of the round angle */ = this._valueToAngle(this.max - value);\n const counterLarge = counterAngle > Math.PI ? 1 : 0;\n const counterD = `M ${counterTo.x} ${counterTo.y} A 50 50 0 ${counterLarge} 0 ${counterFrom.x} ${counterFrom.y}`;\n counterRail.setAttribute('d', counterD);\n }\n }\n};\n__decorate([\n ViewChild('svg')\n], PacemTunerElement.prototype, \"_canvas\", void 0);\n__decorate([\n ViewChild('path[part=rail]')\n], PacemTunerElement.prototype, \"_rail\", void 0);\n__decorate([\n ViewChild('path[part=complementary-rail]')\n], PacemTunerElement.prototype, \"_counterRail\", void 0);\n__decorate([\n ViewChild(P + '-tween')\n], PacemTunerElement.prototype, \"_tween\", void 0);\n__decorate([\n ViewChild(P + '-rotate')\n], PacemTunerElement.prototype, \"_rotate\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTunerElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTunerElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTunerElement.prototype, \"max\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemTunerElement.prototype, \"interactive\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTunerElement.prototype, \"round\", void 0);\nPacemTunerElement = __decorate([\n CustomElement({\n tagName: P + '-tuner', shadow: true,\n template: `<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"${PCSS}-tuner\" part=\"tuner\" viewBox=\"0 0 100 100\">\r\n <circle part=\"track\" cx=\"50\" cy=\"50\" r=\"50\" />\r\n <path part=\"rail\" />\r\n <path part=\"complementary-rail\" />\r\n </svg><div class=\"${PCSS}-content\" part=\"content\"><slot></slot></div>\r\n <${P}-rotate></${P}-rotate>\r\n<${P}-tween on-step=\":host._draw($event.detail.value)\" on-end=\"this.disabled = true\" duration=\"500\" to=\"{{ :host.value }}\" from=\"{{ :host.min }}\"></${P}-tween>`\n })\n], PacemTunerElement);\nexport { PacemTunerElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, PacemEventTarget, Utils } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\n/** Triggers the device's vibration hardware (via the Vibration API) with a configurable pattern. */\nlet PacemVibrateElement = class PacemVibrateElement extends PacemEventTarget {\n /** Triggers a vibration using the current `pattern`, if supported by the browser and not disabled. */\n vibrate() {\n if (this.disabled) {\n return;\n }\n const pattern = this.pattern;\n if (!Utils.isNullOrEmpty(pattern)) {\n if (typeof navigator.vibrate === 'function') {\n navigator.vibrate(pattern);\n }\n }\n }\n};\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => attr?.split(/[ ,]+/).map(i => parseInt(i)),\n convertBack: (prop) => prop?.join(' ')\n }\n })\n], PacemVibrateElement.prototype, \"pattern\", void 0);\nPacemVibrateElement = __decorate([\n CustomElement({ tagName: P + '-vibrate' })\n], PacemVibrateElement);\nexport { PacemVibrateElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, PacemEventTarget, Components, Utils, PropertyConverters, Logging, CustomElementUtils } from '@pacem/pacem-core';\n//namespace Pacem.Components.UI {\nconst ANIM_TIMEOUT = 500;\nconst ElementOrStringPropertyConverter = {\n convert: (attr, element) => {\n try {\n return document.querySelector(attr) ?? (element.isConnected ? attr : null);\n }\n catch {\n return attr;\n }\n },\n convertBack: (prop) => (prop instanceof Element && prop.id) ? ('#' + prop.id) : prop,\n retryConversionWhenReady: true\n};\n/** Fetches and renders remote HTML (or a local `<template>`'s content) as its own inner content, dispatching `prerender`/`render` lifecycle events. */\nlet PacemViewElement = class PacemViewElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Bumped by every new content: a pending `render` dispatch from superseded content is dropped. */\n this.#renderVersion = 0;\n this._templateChangeHandler = (evt) => {\n const tmplProxy = evt.target;\n this._setTmpl(tmplProxy.target);\n };\n this._debounceDispatchHandler = (e) => {\n clearTimeout(this.#resizeHandle);\n this.#resizeHandle = setTimeout(() => {\n if (e) {\n const resizer = e.srcElement;\n resizer.removeEventListener(Components.ResizeEventName, this._debounceDispatchHandler);\n resizer.remove();\n }\n //\n this.dispatchEvent(new CustomEvent(\"render\"));\n }, 100 /* tenth of a second limit */);\n };\n }\n /** Bumped by every new content: a pending `render` dispatch from superseded content is dropped. */\n #renderVersion;\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n // url\n if (name === 'url' || name === 'disabled') {\n this._dispose(old);\n this._manage();\n }\n else if (name === 'fetching') {\n (val ? Utils.addClass : Utils.removeClass)(this, 'view-fetching');\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const url = this.url;\n if (this._isReference(url) && !this.disabled) {\n this._manageRef();\n }\n }\n _isReference(url) {\n return url instanceof HTMLElement || (typeof url === 'string' && url.trim().startsWith('#'));\n }\n _dispose(url) {\n if (url instanceof Components.PacemTemplateProxyElement) {\n url.removeEventListener('templatechange', this._templateChangeHandler);\n }\n }\n _manage() {\n if (this.disabled) {\n return;\n }\n const debounce = this.debounce || 0, url = this.url;\n ;\n if (this._isReference(url)) {\n // <template>-based\n clearTimeout(this._fetchHandle);\n this._fetchHandle = setTimeout((() => this._manageRef()), debounce);\n }\n else if (typeof url === 'string' && !Utils.isNullOrEmpty(url)) {\n // url-based\n this.fetching = true;\n clearTimeout(this._fetchHandle);\n this._fetchHandle = setTimeout((() => this._manageUrl(url)), debounce);\n }\n else /* might be a reset */ {\n this.innerHTML = '';\n }\n }\n _manageRef() {\n const url = this.url, tmpl = url instanceof HTMLElement ? url : document.querySelector('template' + url);\n if (tmpl instanceof Components.PacemTemplateProxyElement) {\n tmpl.addEventListener('templatechange', this._templateChangeHandler, false);\n this._setTmpl(tmpl.target);\n }\n else if (tmpl instanceof HTMLTemplateElement) {\n this._setTmpl(tmpl);\n }\n else if (!Utils.isNull(tmpl)) {\n this.log(Logging.LogLevel.Error, `Invalid '${tmpl.constructor.name}' element, HTMLTemplate expected.`);\n }\n else {\n this.log(Logging.LogLevel.Error, `Template element not found.`);\n }\n }\n _setTmpl(tmpl) {\n cancelAnimationFrame(this._renderHandle);\n this.#renderVersion++;\n // this way, `this._container.innerHTML = ''` instruction will eventually let the page \"scroll up\"...\n this.innerHTML = '';\n this._dispatchPrerender();\n this._renderHandle = requestAnimationFrame(() => {\n if (Utils.isNull(tmpl)) {\n this.log(Logging.LogLevel.Error, `Template element not found.`);\n return;\n }\n this.appendChild(tmpl.cloneNode(true).content);\n this._dispatchRender();\n });\n }\n #aborter;\n _manageUrl(url) {\n if (this.#aborter) {\n this.#aborter.abort();\n }\n const { signal } = this.#aborter = new AbortController();\n fetch(url, { credentials: 'same-origin', signal }).then(async (r) => {\n // inline function\n const manageYield = (r, htmlPromise) => {\n if ((r.status === 301 || r.status === 302) && this.followRedirects) {\n this._manageUrl(r.headers.get(\"Location\"));\n }\n else if (r.ok || this.renderErrors) {\n htmlPromise.then((html) => Utils.addAnimationEndCallback(this, () => this._manageResult(html), ANIM_TIMEOUT));\n }\n // fallback to empty content.\n else\n this._manageResult('');\n };\n const contentLength = +r.headers.get('Content-Length');\n if (contentLength > 0) {\n this.progress = 0;\n let received = 0;\n const chunks = [];\n // progress available\n const reader = r.body.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n this.progress = (received += value.length) / contentLength;\n chunks.push(value);\n }\n manageYield(r, new Promise((resolve, reject) => {\n try {\n let allChunks = new Uint8Array(received);\n let position = 0;\n for (let chunk of chunks) {\n allChunks.set(chunk, position);\n position += chunk.length;\n }\n const html = new TextDecoder(\"utf-8\").decode(allChunks);\n resolve(html);\n }\n catch (e) {\n reject(e);\n }\n }));\n }\n else {\n manageYield(r, r.text());\n }\n }, _ => {\n // do nothing on fail\n });\n }\n _manageResult(result) {\n // this way, `this._container.innerHTML = ''` instruction will eventually let the page \"scroll up\"...\n cancelAnimationFrame(this._renderHandle);\n const version = ++this.#renderVersion;\n this.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n this.innerHTML = '';\n this._dispatchPrerender();\n this._renderHandle = requestAnimationFrame(() => {\n this.innerHTML = result;\n this.fetching = false;\n this.progress = Number.NaN;\n // setting fetching to `false` triggers a css class change that could/should cause a css transition to happen\n // TODO: manage to switch to native in a near future (https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API or https://youtu.be/oDcb3fvtETs)\n Utils.addAnimationEndCallback(this, () => {\n if (version !== this.#renderVersion) {\n return;\n }\n this._dispatchRender();\n }, ANIM_TIMEOUT);\n });\n }\n #resizeHandle;\n _dispatchRender() {\n // the view might have been removed meanwhile (e.g. a nested view whose container got re-rendered):\n // no shell to host the resizer, nothing to notify.\n if (!this.isConnected) {\n return;\n }\n const resizer = new Components.PacemResizeElement();\n resizer.target = this;\n resizer.addEventListener(Components.ResizeEventName, this._debounceDispatchHandler);\n CustomElementUtils.findAncestorShell(this).appendChild(resizer);\n this._debounceDispatchHandler();\n }\n _dispatchPrerender() {\n this.dispatchEvent(new CustomEvent(\"prerender\"));\n }\n};\n__decorate([\n Watch({ reflectBack: true, converter: ElementOrStringPropertyConverter })\n], PacemViewElement.prototype, \"url\", void 0);\n__decorate([\n Watch()\n], PacemViewElement.prototype, \"fetching\", void 0);\n__decorate([\n Watch()\n], PacemViewElement.prototype, \"progress\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemViewElement.prototype, \"renderErrors\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemViewElement.prototype, \"followRedirects\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemViewElement.prototype, \"debounce\", void 0);\nPacemViewElement = __decorate([\n CustomElement({\n tagName: P + '-view'\n })\n], PacemViewElement);\nexport { PacemViewElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Components, UI, Utils, PropertyConverters, Defaults, CustomElementUtils, PropertyChangeEventName } from '@pacem/pacem-core';\nimport { AdapterPageButtonRefreshEventName } from './adapter';\n//namespace Pacem.Components.UI {\nconst HANDLE_CSS = 'window-title';\n/** Container that arranges `PacemWindowElement` children as draggable/resizable floating windows, or docks them one at a time via an adapter. */\nlet PacemWindowAreaElement = class PacemWindowAreaElement extends Components.PacemIterativeElement {\n constructor() {\n super(...arguments);\n this._zIndex = 1;\n this._startHandler = (evt) => {\n this._incrementZIndex(evt.detail.element);\n Utils.addClass(evt.detail.element, 'window-rescaling');\n };\n this._blurHandler = (evt) => {\n Utils.removeClass(evt.detail.element, 'window-rescaling');\n };\n this._focusHandler = (evt) => {\n this._incrementZIndex(evt.currentTarget);\n };\n this._itemPropertyChangeHandler = (evt) => {\n if (evt.detail.propertyName === 'floating' && evt.detail.currentValue === false) {\n const item = evt.currentTarget, ndx = this.items.indexOf(item);\n Utils.addClass(item, 'docking-in');\n this.adapter.select(ndx);\n Utils.addAnimationEndCallback(item, (e) => {\n Utils.removeClass(e, 'docking-in');\n }, 150);\n }\n };\n this._adapterPagerCallback = (evt) => {\n const index = evt.detail.index, item = this.items[index];\n evt.detail.hide = item.hide || item.floating;\n };\n }\n validate(item) {\n return item instanceof PacemWindowElement;\n }\n _incrementZIndex(target) {\n if (this._zIndex != parseInt(target.style.zIndex)) {\n target.style.zIndex = '' + (++this._zIndex);\n }\n }\n connectedCallback() {\n super.connectedCallback();\n let shell = CustomElementUtils.findAncestorShell(this);\n this._behaviors = [\n shell.appendChild(this._dragDrop = document.createElement(P + '-drag-drop')),\n shell.appendChild(this._rescale = document.createElement(P + '-rescale'))\n ];\n this._dragDrop.handleSelector = '.' + HANDLE_CSS;\n //this._dragDrop.addEventListener(DragDropEventType.Init, this._focusHandler, false);\n this._rescale.addEventListener(UI.RescaleEventType.Start, this._startHandler, false);\n this._rescale.addEventListener(UI.RescaleEventType.End, this._blurHandler, false);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n // adapter (reuse)\n if (Utils.isNull(this.adapter)) {\n const adapter = this.adapter = this.appendChild(document.createElement(P + '-adapter'));\n Utils.addClass(adapter, 'windows-adapter');\n adapter.labelCallback = (item, _) => {\n return item.caption;\n };\n adapter.swipeEnabled = false;\n adapter.deselectable = true;\n adapter.initialize(this);\n }\n this.adapter.addEventListener(AdapterPageButtonRefreshEventName, this._adapterPagerCallback, false);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this.adapter)) {\n this.adapter.removeEventListener(AdapterPageButtonRefreshEventName, this._adapterPagerCallback, false);\n this.adapter.remove();\n this.adapter = null;\n }\n //this._dragDrop.removeEventListener(DragDropEventType.Init, this._focusHandler, false);\n this._rescale.removeEventListener(UI.RescaleEventType.End, this._blurHandler, false);\n this._rescale.removeEventListener(UI.RescaleEventType.Start, this._startHandler, false);\n for (let b of this._behaviors) {\n b.remove();\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'index') {\n this._syncVisibility();\n }\n }\n /** Registers a window item, wiring drag/resize behaviors and focus tracking; returns whether it was newly added. */\n register(item) {\n const retval = super.register(item);\n if (retval) {\n item.addEventListener(PropertyChangeEventName, this._itemPropertyChangeHandler, false);\n item.addEventListener('mousedown', this._focusHandler, false);\n for (let b of this._behaviors) {\n const ndx = item.behaviors.indexOf(b);\n if (ndx === -1) {\n item.behaviors.push(b);\n }\n }\n }\n return retval;\n }\n /** Unregisters a window item, tearing down its drag/resize behaviors; returns whether it was found and removed. */\n unregister(item) {\n const retval = super.unregister(item);\n if (retval) {\n item.removeEventListener(PropertyChangeEventName, this._itemPropertyChangeHandler, false);\n item.removeEventListener('mousedown', this._focusHandler, false);\n for (let b of this._behaviors) {\n const ndx = item.behaviors.indexOf(b);\n if (ndx >= 0) {\n item.behaviors.splice(ndx, 1);\n }\n }\n }\n return retval;\n }\n _syncVisibility() {\n let ndx = 0;\n const items = this.items ?? [];\n for (let item of items) {\n if (ndx === this.index) {\n Utils.addClass(item, 'dock-open');\n }\n else {\n Utils.removeClass(item, 'dock-open');\n }\n ndx++;\n }\n }\n};\nPacemWindowAreaElement = __decorate([\n CustomElement({\n tagName: P + '-window-area'\n })\n], PacemWindowAreaElement);\nexport { PacemWindowAreaElement };\n/** Single draggable, resizable, and dockable window pane hosted within a `PacemWindowAreaElement`. */\nlet PacemWindowElement = class PacemWindowElement extends Components.PacemIterableElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'minimized' || name === 'floating') {\n this._syncLayout();\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._syncLayout();\n }\n _syncLayout() {\n (this.minimized ? Utils.addClass : Utils.removeClass).apply(this, [this, 'window-min']);\n (this.floating ? Utils.removeClass : Utils.addClass).apply(this, [this, 'window-dock']);\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemWindowElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemWindowElement.prototype, \"minimized\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemWindowElement.prototype, \"floating\", void 0);\nPacemWindowElement = __decorate([\n CustomElement({\n tagName: P + '-window', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${HANDLE_CSS}\">\r\n <${P}-text text=\"{{ :host.caption || 'Window' }}\"></${P}-text>\r\n</div>\r\n<div class=\"window-buttons ${PCSS}-buttonset\"><div class=\"buttonset-right\">\r\n <${P}-button class=\"button\" on-click=\":host.minimized = !:host.minimized\" icon-glyph=\"{{ :host.minimized ? 'maximize' : 'minimize' }}\" hide=\"{{ !:host.floating }}\"></${P}-button>\r\n <${P}-button class=\"button\" on-click=\":host.floating = !:host.floating\" css-class=\"{{ {'buttonset-first': !:host.floating} }}\" icon-glyph=\"{{ :host.floating? 'lock_open' : 'lock' }}\"></${P}-button>\r\n</div></div>\r\n<div class=\"window-content\"><${P}-content></${P}-content></div>`\n })\n], PacemWindowElement);\nexport { PacemWindowElement };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["AdapterOrientation", "PacemAdapterElement", "P", "PCSS", "CustomElement", "Watch", "Utils", "PropertyConverters", "Components", "__decorate", "PacemAnchorElement", "P", "PCSS", "CustomElement", "Watch", "Utils", "PropertyConverters", "Components", "PropertyChangeEvent", "ViewChild", "__decorate", "BalloonBehavior", "BalloonTrigger", "BalloonAlignment", "BalloonSizing", "PCSS", "PacemBalloonElement", "Components", "Utils", "PropertyChangeEvent", "ViewChild", "P", "Watch", "PropertyConverters", "CustomElement", "P", "PCSS", "CustomElement", "Watch", "Utils", "PropertyConverters", "Components", "CustomElementUtils", "__decorate", "BinderAnchor", "BinderEnd", "BinderTension", "Components", "Utils", "CustomElementUtils", "PacemBinderElement", "PCSS", "Watch", "PropertyConverters", "CustomElement", "P", "P", "CustomElement", "Watch", "Utils", "PropertyConverters", "Components", "__decorate", "PacemBladeElement", "P", "PCSS", "CustomElement", "Watch", "Utils", "PropertyConverters", "Components", "preventDefaultHandler", "ViewChild", "CustomElementUtils", "UI", "stopPropagationHandler", "avoidHandler", "LightboxBehavior", "__decorate", "OPEN_CSSCLASS", "PacemBottomSheetHandleElement", "Components", "CustomElementUtils", "Utils", "ViewChild", "P", "Watch", "PropertyConverters", "CustomElement", "PacemBottomSheetElement", "Components", "preventDefaultHandler", "UI", "avoidHandler", "Utils", "stopPropagationHandler", "PCSS", "OPEN_CSSCLASS", "__decorate", "ViewChild", "P", "Watch", "PropertyConverters", "CustomElement", "P", "PCSS", "CustomElement", "Watch", "Utils", "PropertyConverters", "Components", "__decorate", "PacemButtonElement", "P", "CustomElement", "Components", "__decorate", "PacemButtonsetElement", "Components", "CustomElement", "P", "P", "PCSS", "CustomElement", "Watch", "ViewChild", "Utils", "PropertyConverters", "Components", "PropertyChangeEvent", "Defaults", "CustomElementUtils", "Debounce", "__decorate", "CalendarZoom", "PacemCalendarEventElement", "Components", "Utils", "now", "__decorate", "Watch", "PropertyConverters", "PropertyChangeEvent", "P", "PacemAgendaElement", "ViewChild", "CustomElement", "Defaults", "PCSS", "P", "PacemCalendarElement", "Utils", "__decorate", "Watch", "PropertyConverters", "CustomElement", "Defaults", "PCSS", "PacemClockElement", "Components", "__decorate", "Watch", "PropertyConverters", "CustomElement", "P", "P", "Utils", "PacemScheduleElement", "__decorate", "ViewChild", "CustomElement", "Defaults", "PCSS", "Utils", "CustomElementUtils", "__decorate", "Debounce", "PacemCalendarDayOfWeekRuleElement", "Watch", "PropertyConverters", "CustomElement", "P", "P", "PCSS", "CustomElement", "Watch", "ViewChild", "Utils", "PropertyConverters", "Components", "__decorate", "PacemCollapseElement", "Watch", "Utils", "Components", "CustomTypedEvent", "avoidHandler", "__decorate", "DialogButtons", "DialogButton", "P", "PCSS", "Defaults", "CustomElement", "ViewChild", "Watch", "PropertyConverters", "__decorate", "PacemDialogElement", "Watch", "PropertyConverters", "ViewChild", "PCSS", "P", "CustomElement", "Defaults", "P", "CustomElement", "Watch", "Utils", "PropertyConverters", "Components", "__decorate", "PacemDividerElement", "P", "PCSS", "CustomElement", "Watch", "Utils", "PropertyConverters", "Components", "CustomElementUtils", "__decorate", "PacemIconElement", "P", "CustomElement", "Watch", "Utils", "PropertyConverters", "Components", "__decorate", "PacemImageElement", "P", "Debounce", "CustomElement", "Watch", "Utils", "PropertyConverters", "PacemEventTarget", "__decorate", "PacemInfiniteScrollerElement", "Watch", "Utils", "PropertyConverters", "Components", "__decorate", "P", "PCSS", "CustomElement", "Watch", "Utils", "PropertyConverters", "Components", "stopPropagationHandler", "ViewChild", "avoidHandler", "__decorate", "PacemLightboxElement", "Components", "stopPropagationHandler", "Utils", "avoidHandler", "PCSS", "Watch", "PropertyConverters", "ViewChild", "CustomElement", "P", "P", "PCSS", "CustomElement", "Watch", "ViewChild", "Utils", "PropertyConverters", "Components", "Defaults", "__decorate", "LoaderType", "PacemLoaderElement", "Components", "Utils", "__decorate", "ViewChild", "PCSS", "Watch", "PropertyConverters", "CustomElement", "P", "Defaults", "P", "CustomElement", "Watch", "PropertyConverters", "Components", "P", "__decorate", "PacemMarkdownElement", "Components", "Watch", "PropertyConverters", "CustomElement", "P", "P", "PCSS", "Utils", "CustomElement", "Watch", "ViewChild", "PropertyConverters", "Components", "Defaults", "__decorate", "PacemMarqueeElement", "P", "Utils", "CustomElement", "Watch", "PropertyConverters", "PacemEventTarget", "__decorate", "PacemMediaQueryElement", "P", "PCSS", "Utils", "CustomElement", "Watch", "ViewChild", "PropertyConverters", "Components", "Defaults", "avoidHandler", "stopPropagationHandler", "CustomElementUtils", "Logging", "__decorate", "PacemMenuElement", "PacemMenuCursorElement", "Components", "CustomElementUtils", "Utils", "Logging", "P", "__decorate", "CustomElement", "P", "PCSS", "Utils", "CustomElement", "Watch", "ViewChild", "PropertyConverters", "Components", "Defaults", "Debounce", "__decorate", "PacemPagerElement", "P", "Utils", "CustomElement", "Watch", "ViewChild", "PropertyConverters", "Components", "__decorate", "PacemPictureSourceElement", "PacemPictureElement", "Components", "Utils", "__decorate", "ViewChild", "Watch", "PropertyConverters", "CustomElement", "P", "P", "Utils", "CustomElement", "Watch", "ViewChild", "PropertyConverters", "Components", "Defaults", "__decorate", "PacemProgressbarElement", "P", "PCSS", "Utils", "CustomElement", "Watch", "ViewChild", "PropertyConverters", "Components", "CustomElementUtils", "__decorate", "PacemSidebarElement", "P", "CustomElement", "Components", "__decorate", "PacemSlideElement", "PacemSlideshowElement", "Components", "__decorate", "CustomElement", "P", "P", "CustomElementUtils", "CustomElement", "Watch", "PropertyConverters", "Components", "__decorate", "PacemTweetEmbedElement", "P", "CustomElementUtils", "CustomElement", "Watch", "PropertyConverters", "PacemEventTarget", "Components", "Utils", "Logging", "__decorate", "StickyHeaderVisibility", "PacemStickyHeaderElement", "P", "PCSS", "CustomElement", "Watch", "ViewChild", "PropertyConverters", "Components", "Utils", "PropertyChangeEvent", "__decorate", "PropertyConverters", "PacemTabElement", "Components", "PropertyChangeEvent", "Utils", "ViewChild", "Watch", "CustomElement", "P", "PacemTabsElement", "Components", "Utils", "__decorate", "ViewChild", "P", "PCSS", "Watch", "PropertyConverters", "CustomElement", "P", "CustomElement", "ViewChild", "Components", "Utils", "__decorate", "PacemTickerElement", "P", "PCSS", "CustomElement", "Watch", "Components", "Utils", "PropertyConverters", "CustomElementUtils", "__decorate", "PacemToastElement", "_", "P", "PCSS", "CustomElement", "Watch", "ViewChild", "Components", "Utils", "PropertyConverters", "Defaults", "Animations", "Debounce", "avoidHandler", "__decorate", "PacemTocElement", "P", "PCSS", "CustomElement", "Watch", "ViewChild", "Components", "Utils", "PropertyConverters", "UI", "Animations", "__decorate", "PacemTunerElement", "P", "CustomElement", "Watch", "PacemEventTarget", "Utils", "__decorate", "PacemVibrateElement", "P", "CustomElement", "Watch", "PacemEventTarget", "Components", "Utils", "PropertyConverters", "Logging", "CustomElementUtils", "__decorate", "PacemViewElement", "r", "P", "PCSS", "CustomElement", "Watch", "Components", "UI", "Utils", "PropertyConverters", "Defaults", "CustomElementUtils", "PropertyChangeEventName", "__decorate", "PacemWindowAreaElement", "Components", "Utils", "CustomElementUtils", "P", "UI", "PropertyChangeEventName", "CustomElement", "PacemWindowElement", "Components", "Utils", "__decorate", "Watch", "PropertyConverters", "CustomElement", "P", "Defaults", "PCSS"]
|
|
7
7
|
}
|