@pacem/pacem-ui 1.0.5 → 1.0.6-mersenne
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 +13 -2
- 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 +15 -15
- package/dist/bundle/pacem-ui.mjs +9 -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 +1 -1
- package/dist/esm/binder.js +13 -2
- 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/dialog-abstractions.js", "../esm/buttonset.js", "../esm/calendar.js", "../esm/collapse.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 })\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/** Side of `target` a {@link PacemBalloonElement} is anchored to (with automatic variants that pick the side with the most room). */\nexport var BalloonPosition;\n(function (BalloonPosition) {\n BalloonPosition[\"Top\"] = \"top\";\n BalloonPosition[\"Left\"] = \"left\";\n BalloonPosition[\"Bottom\"] = \"bottom\";\n BalloonPosition[\"Right\"] = \"right\";\n BalloonPosition[\"Auto\"] = \"auto\";\n BalloonPosition[\"HorizontalAuto\"] = \"x\";\n BalloonPosition[\"VerticalAuto\"] = \"y\";\n})(BalloonPosition || (BalloonPosition = {}));\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};\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}. */\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 _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 if (chosenPosition != BalloonPosition.Top &&\n chosenPosition != BalloonPosition.Bottom && chosenPosition != BalloonPosition.Left && chosenPosition != BalloonPosition.Right) {\n let viewportHeight = vieportSize.height;\n let 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 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 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 this._adjustWatchers(true);\n if (isVisible || this.disabled) {\n return;\n }\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 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`)\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\"><${P}-resize on-${Components.ResizeEventName}=\":host._onLayoutChange($event)\" disabled=\"true\" content><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. */\nclass BindersCollector {\n constructor(element) {\n this.binders = [];\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 }\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 }\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.overflow = 'hidden';\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.invalidateSize();\n document.body.appendChild(svg);\n STD_EVENTS.forEach(e => {\n path.addEventListener(e, this._broadcastHandler, false);\n });\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. */\n invalidateSize() {\n const svg = this._svg;\n if (!Utils.isNull(svg)) {\n svg.setAttribute('width', document.body.scrollWidth.toString());\n svg.setAttribute('height', document.body.scrollHeight.toString());\n }\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 { points, anchors } = this._computeAnchorPoints(state1.size, state1.anchor, this.fromEnd, state2.size, 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);\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')\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';\nimport { DialogButton } from './dialog-abstractions';\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).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 })\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 { 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) {\n const lb = this.lightbox;\n if (!Utils.isNull(this.#deferred)) {\n throw `Dialog already open.`;\n }\n const deferred = this.#deferred = Promise.withResolvers();\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: state });\n this.lightbox.show = false;\n this.#deferred.resolve(drevt.detail);\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, 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 { 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'\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')\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')\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 match = (input, pattern, fn) => {\n const arr = pattern.exec(input);\n if (arr && arr.length) {\n return fn(arr);\n }\n return null;\n};\nconst MARKUP_RULES = [\n {\n // comment\n exec: (input) => match(input, /^((<|<)!--(?:(?!(--(>|>)))[\\s\\S])*(--(?:>|>)|$))/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-comment', raw, text, index: arr.index\n }];\n })\n },\n {\n // opening/self-closing tag\n exec: (input, lexer) => match(input, /^(<|<)([\\w-]+)(?:\\s+[\\w-]+(?:=(?:'[^']*'|\"[^\"]*\"))*)*(\\s*\\/?(?:>|>))/, arr => {\n const openingTag = arr[1], tagName = arr[2], closingTag = arr[3];\n const closingTagIndex = arr[0].length - closingTag.length, attributesIndex = openingTag.length + tagName.length, attributesString = input.substring(attributesIndex, closingTagIndex);\n const attributes = lexer.tokenize(attributesString, [{\n exec: (input) => match(input, /^(\\s+[\\w-]+)(=('[^']*'|\"[^\"]*\"))?/, arr => {\n const raw = arr[1];\n const output = [{\n type: 'code-attribute', raw, text: raw, index: arr[0].indexOf(raw)\n }];\n if (arr.length > 2) {\n output.push({\n type: 'code-string', raw: arr[2], text: arr[2], index: arr.index + arr[0].length - arr[2].length\n });\n }\n return output;\n })\n }]);\n const retval = [{\n type: 'code-tag', raw: openingTag, text: openingTag, index: 0\n }, {\n type: 'code-tagname', raw: tagName, text: tagName, index: openingTag.length\n }];\n // attributes\n Array.prototype.push.apply(retval, attributes);\n retval.push({\n type: 'code-tag', raw: closingTag, text: closingTag, index: closingTagIndex\n });\n return retval;\n })\n },\n {\n // closing tag\n exec: (input) => match(input, /^((?:<|<)\\/)([\\w-]+)(\\s*(?:>|>))/, arr => {\n const openingTag = arr[1], tagName = arr[2], closingTag = arr[3];\n return [{\n type: 'code-tag', raw: openingTag, text: openingTag, index: 0\n }, {\n type: 'code-tagname', raw: tagName, text: tagName, index: openingTag.length\n }, {\n type: 'code-tag', raw: closingTag, text: closingTag, index: arr.index + arr[0].length - closingTag.length\n }];\n })\n },\n {\n // text\n exec: (input) => match(input, /^(<|<)?((?!<|<).)+/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'text', raw, text\n }];\n })\n }\n];\nconst C_LIKE_RULES = [{\n // comments\n exec: (input, _) => match(input, /^\\/\\/.*/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-comment', raw, text\n }];\n })\n }, {\n exec: (input, _) => match(input, /^\\/\\*(?:(?!(\\*\\/))[\\s\\S])*(?:\\*\\/|$)/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-comment', raw, text\n }];\n })\n }, {\n // string literal\n exec: (input, _) => match(input, /^('(\\\\'|[^'])*[^\\\\]?'|@?\\$?\"(\\\\\"|[^\"])*[^\\\\]?\")/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-string', raw, text\n }];\n })\n }, {\n // keywords\n exec: (input, _) => match(input, /^\\b(abstract|as|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|static|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|nameof|orderby|partial|remove|select|set|value|var|when|where|yield)\\b/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-keyword', raw, text\n }];\n })\n }, {\n // number \n exec: (input, _) => match(input, /^\\b((0x[0-9a-fA-F]|[\\d])*\\.?[\\d]+)\\b/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-number', raw, text\n }];\n })\n }, {\n // variables, operators, parentheses\n exec: (input, _) => match(input, /^(@?\\w+|:|\\?\\??|\\?=?|\\|\\|?|&&?|&=?|;|,|=|\\*=?|--|-=?|\\+\\+|\\+=?|\\/=?|\\^|\\(|\\[|\\)|\\]|\\{|\\})/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'text', raw, text\n }];\n }),\n }, {\n // spaces\n exec: (input, _) => match(input, /^\\s+/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'space', raw, text\n }];\n }),\n }];\nconst SCRIPT_RULES = [\n C_LIKE_RULES[0], C_LIKE_RULES[1], {\n // string literal\n exec: (input, _) => match(input, /^('(\\\\'|[^'])*[^\\\\]?'|\"(\\\\\"|[^\"])*[^\\\\]?\"|`(\\\\`|[^`])*[^\\\\]?`)/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-string', raw, text\n }];\n })\n }, {\n // keywords\n exec: (input, _) => match(input, /^\\b(abstract|any|arguments|async|await|boolean|break|byte|case|catch|char|class|const|continue|debugger|declare|default|delete|do|double|else|enum|eval|export|extends|false|final|finally|float|for|function|get|goto|if|implements|import|in|instanceof|int|interface|let|long|native|new|null|number|package|private|protected|public|return|short|static|string|super|switch|synchronized|this|throw|throws|transient|true|try|type|typeof|var|void|volatile|while|with|yield)\\b/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-keyword', raw, text\n }];\n })\n },\n C_LIKE_RULES[4],\n C_LIKE_RULES[5],\n C_LIKE_RULES[6]\n];\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};\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 // code\n case 'code-string':\n case 'code-keyword':\n case 'code-number':\n case 'code-comment':\n case 'code-tag':\n case 'code-tagname':\n case 'code-attribute':\n return `<span class=\"${token.type}\">${token.text}</span>`;\n }\n};\n/** Parses Markdown into HTML, extended with C-like/script/markup code-fence highlighting and Pacem-specific inline embeds (`{tweet}(id)`, `{yt}(id)`). */\nexport class MarkdownService {\n constructor() {\n const grammar = [\n TWITTER_RULE,\n YOUTUBE_RULE\n ];\n for (let lang of ['c-sharp', 'c', 'c#', 'csharp', 'c++', 'cpp']) {\n const c_like_rules = C_LIKE_RULES.map(rule => { return { rule, lang, type: 'code' }; });\n Array.prototype.push.apply(grammar, c_like_rules);\n }\n for (let lang of ['ts', 'js', 'typescript', 'javascript']) {\n const script_rules = SCRIPT_RULES.map(rule => { return { rule, lang, type: 'code' }; });\n Array.prototype.push.apply(grammar, script_rules);\n }\n for (let lang of ['xml', 'html']) {\n const markup_rules = MARKUP_RULES.map(rule => { return { rule, lang, type: 'code' }; });\n Array.prototype.push.apply(grammar, markup_rules);\n }\n this.#grammar = grammar;\n }\n #grammar;\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 return this.#md.toHtml(this._escape(md), this.#grammar, RULES_TO_HTML);\n }\n /** Tokenizes the given Markdown source, without rendering it to HTML. */\n tokenize(md) {\n return this.#md.tokenize(this._escape(md), 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._base)) {\n const offsetNav = Utils.offset(this._container);\n const offsetBase = Utils.offset(this._base);\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')\n], PacemMenuElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-menu`)\n], PacemMenuElement.prototype, \"_base\", 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-bar')\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, 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 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 const safeContent = this.sanitize(content);\n this.#newContent = this._buildMarkupNode(safeContent);\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 })\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 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 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 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 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 this._dispatchRender();\n }, ANIM_TIMEOUT);\n });\n }\n #resizeHandle;\n _dispatchRender() {\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 })\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/** Side of `target` a {@link PacemBalloonElement} is anchored to (with automatic variants that pick the side with the most room). */\nexport var BalloonPosition;\n(function (BalloonPosition) {\n BalloonPosition[\"Top\"] = \"top\";\n BalloonPosition[\"Left\"] = \"left\";\n BalloonPosition[\"Bottom\"] = \"bottom\";\n BalloonPosition[\"Right\"] = \"right\";\n BalloonPosition[\"Auto\"] = \"auto\";\n BalloonPosition[\"HorizontalAuto\"] = \"x\";\n BalloonPosition[\"VerticalAuto\"] = \"y\";\n})(BalloonPosition || (BalloonPosition = {}));\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};\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}. */\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 _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 if (chosenPosition != BalloonPosition.Top &&\n chosenPosition != BalloonPosition.Bottom && chosenPosition != BalloonPosition.Left && chosenPosition != BalloonPosition.Right) {\n let viewportHeight = vieportSize.height;\n let 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 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 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 this._adjustWatchers(true);\n if (isVisible || this.disabled) {\n return;\n }\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 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`)\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\"><${P}-resize on-${Components.ResizeEventName}=\":host._onLayoutChange($event)\" disabled=\"true\" content><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 }\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.overflow = 'hidden';\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.invalidateSize();\n document.body.appendChild(svg);\n STD_EVENTS.forEach(e => {\n path.addEventListener(e, this._broadcastHandler, false);\n });\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. */\n invalidateSize() {\n const svg = this._svg;\n if (!Utils.isNull(svg)) {\n svg.setAttribute('width', document.body.scrollWidth.toString());\n svg.setAttribute('height', document.body.scrollHeight.toString());\n }\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 { points, anchors } = this._computeAnchorPoints(state1.size, state1.anchor, this.fromEnd, state2.size, 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);\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')\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';\nimport { DialogButton } from './dialog-abstractions';\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).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 })\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 { 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) {\n const lb = this.lightbox;\n if (!Utils.isNull(this.#deferred)) {\n throw `Dialog already open.`;\n }\n const deferred = this.#deferred = Promise.withResolvers();\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: state });\n this.lightbox.show = false;\n this.#deferred.resolve(drevt.detail);\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, 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 { 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'\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')\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')\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 match = (input, pattern, fn) => {\n const arr = pattern.exec(input);\n if (arr && arr.length) {\n return fn(arr);\n }\n return null;\n};\nconst MARKUP_RULES = [\n {\n // comment\n exec: (input) => match(input, /^((<|<)!--(?:(?!(--(>|>)))[\\s\\S])*(--(?:>|>)|$))/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-comment', raw, text, index: arr.index\n }];\n })\n },\n {\n // opening/self-closing tag\n exec: (input, lexer) => match(input, /^(<|<)([\\w-]+)(?:\\s+[\\w-]+(?:=(?:'[^']*'|\"[^\"]*\"))*)*(\\s*\\/?(?:>|>))/, arr => {\n const openingTag = arr[1], tagName = arr[2], closingTag = arr[3];\n const closingTagIndex = arr[0].length - closingTag.length, attributesIndex = openingTag.length + tagName.length, attributesString = input.substring(attributesIndex, closingTagIndex);\n const attributes = lexer.tokenize(attributesString, [{\n exec: (input) => match(input, /^(\\s+[\\w-]+)(=('[^']*'|\"[^\"]*\"))?/, arr => {\n const raw = arr[1];\n const output = [{\n type: 'code-attribute', raw, text: raw, index: arr[0].indexOf(raw)\n }];\n if (arr.length > 2) {\n output.push({\n type: 'code-string', raw: arr[2], text: arr[2], index: arr.index + arr[0].length - arr[2].length\n });\n }\n return output;\n })\n }]);\n const retval = [{\n type: 'code-tag', raw: openingTag, text: openingTag, index: 0\n }, {\n type: 'code-tagname', raw: tagName, text: tagName, index: openingTag.length\n }];\n // attributes\n Array.prototype.push.apply(retval, attributes);\n retval.push({\n type: 'code-tag', raw: closingTag, text: closingTag, index: closingTagIndex\n });\n return retval;\n })\n },\n {\n // closing tag\n exec: (input) => match(input, /^((?:<|<)\\/)([\\w-]+)(\\s*(?:>|>))/, arr => {\n const openingTag = arr[1], tagName = arr[2], closingTag = arr[3];\n return [{\n type: 'code-tag', raw: openingTag, text: openingTag, index: 0\n }, {\n type: 'code-tagname', raw: tagName, text: tagName, index: openingTag.length\n }, {\n type: 'code-tag', raw: closingTag, text: closingTag, index: arr.index + arr[0].length - closingTag.length\n }];\n })\n },\n {\n // text\n exec: (input) => match(input, /^(<|<)?((?!<|<).)+/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'text', raw, text\n }];\n })\n }\n];\nconst C_LIKE_RULES = [{\n // comments\n exec: (input, _) => match(input, /^\\/\\/.*/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-comment', raw, text\n }];\n })\n }, {\n exec: (input, _) => match(input, /^\\/\\*(?:(?!(\\*\\/))[\\s\\S])*(?:\\*\\/|$)/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-comment', raw, text\n }];\n })\n }, {\n // string literal\n exec: (input, _) => match(input, /^('(\\\\'|[^'])*[^\\\\]?'|@?\\$?\"(\\\\\"|[^\"])*[^\\\\]?\")/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-string', raw, text\n }];\n })\n }, {\n // keywords\n exec: (input, _) => match(input, /^\\b(abstract|as|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|static|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|nameof|orderby|partial|remove|select|set|value|var|when|where|yield)\\b/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-keyword', raw, text\n }];\n })\n }, {\n // number \n exec: (input, _) => match(input, /^\\b((0x[0-9a-fA-F]|[\\d])*\\.?[\\d]+)\\b/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-number', raw, text\n }];\n })\n }, {\n // variables, operators, parentheses\n exec: (input, _) => match(input, /^(@?\\w+|:|\\?\\??|\\?=?|\\|\\|?|&&?|&=?|;|,|=|\\*=?|--|-=?|\\+\\+|\\+=?|\\/=?|\\^|\\(|\\[|\\)|\\]|\\{|\\})/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'text', raw, text\n }];\n }),\n }, {\n // spaces\n exec: (input, _) => match(input, /^\\s+/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'space', raw, text\n }];\n }),\n }];\nconst SCRIPT_RULES = [\n C_LIKE_RULES[0], C_LIKE_RULES[1], {\n // string literal\n exec: (input, _) => match(input, /^('(\\\\'|[^'])*[^\\\\]?'|\"(\\\\\"|[^\"])*[^\\\\]?\"|`(\\\\`|[^`])*[^\\\\]?`)/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-string', raw, text\n }];\n })\n }, {\n // keywords\n exec: (input, _) => match(input, /^\\b(abstract|any|arguments|async|await|boolean|break|byte|case|catch|char|class|const|continue|debugger|declare|default|delete|do|double|else|enum|eval|export|extends|false|final|finally|float|for|function|get|goto|if|implements|import|in|instanceof|int|interface|let|long|native|new|null|number|package|private|protected|public|return|short|static|string|super|switch|synchronized|this|throw|throws|transient|true|try|type|typeof|var|void|volatile|while|with|yield)\\b/, arr => {\n const raw = arr[0], text = raw;\n return [{\n type: 'code-keyword', raw, text\n }];\n })\n },\n C_LIKE_RULES[4],\n C_LIKE_RULES[5],\n C_LIKE_RULES[6]\n];\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};\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 // code\n case 'code-string':\n case 'code-keyword':\n case 'code-number':\n case 'code-comment':\n case 'code-tag':\n case 'code-tagname':\n case 'code-attribute':\n return `<span class=\"${token.type}\">${token.text}</span>`;\n }\n};\n/** Parses Markdown into HTML, extended with C-like/script/markup code-fence highlighting and Pacem-specific inline embeds (`{tweet}(id)`, `{yt}(id)`). */\nexport class MarkdownService {\n constructor() {\n const grammar = [\n TWITTER_RULE,\n YOUTUBE_RULE\n ];\n for (let lang of ['c-sharp', 'c', 'c#', 'csharp', 'c++', 'cpp']) {\n const c_like_rules = C_LIKE_RULES.map(rule => { return { rule, lang, type: 'code' }; });\n Array.prototype.push.apply(grammar, c_like_rules);\n }\n for (let lang of ['ts', 'js', 'typescript', 'javascript']) {\n const script_rules = SCRIPT_RULES.map(rule => { return { rule, lang, type: 'code' }; });\n Array.prototype.push.apply(grammar, script_rules);\n }\n for (let lang of ['xml', 'html']) {\n const markup_rules = MARKUP_RULES.map(rule => { return { rule, lang, type: 'code' }; });\n Array.prototype.push.apply(grammar, markup_rules);\n }\n this.#grammar = grammar;\n }\n #grammar;\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 return this.#md.toHtml(this._escape(md), this.#grammar, RULES_TO_HTML);\n }\n /** Tokenizes the given Markdown source, without rendering it to HTML. */\n tokenize(md) {\n return this.#md.tokenize(this._escape(md), 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._base)) {\n const offsetNav = Utils.offset(this._container);\n const offsetBase = Utils.offset(this._base);\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')\n], PacemMenuElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-menu`)\n], PacemMenuElement.prototype, \"_base\", 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-bar')\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, 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 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 const safeContent = this.sanitize(content);\n this.#newContent = this._buildMarkupNode(safeContent);\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 })\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 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 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 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 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 this._dispatchRender();\n }, ANIM_TIMEOUT);\n });\n }\n #resizeHandle;\n _dispatchRender() {\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", "BalloonPosition", "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", "Watch", "Utils", "Components", "avoidHandler", "__decorate", "DialogButtons", "DialogButton", "__decorate", "PacemButtonElement", "Components", "Utils", "PCSS", "Watch", "PropertyConverters", "CustomElement", "P", "P", "CustomElement", "Components", "__decorate", "PacemButtonsetElement", "Components", "CustomElement", "P", "P", "PCSS", "CustomElement", "Watch", "ViewChild", "Utils", "PropertyConverters", "Components", "CustomTypedEvent", "PropertyChangeEvent", "Defaults", "CustomElementUtils", "Debounce", "__decorate", "CalendarZoom", "PacemCalendarEventElement", "CustomTypedEvent", "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", "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", "match", "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", "input", "arr", "__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", "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
|
}
|