@pacem/pacem 1.0.0-abel → 1.0.0-amaldi

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.
Files changed (66) hide show
  1. package/dist/browser/pacem-2d.js +3 -3
  2. package/dist/browser/pacem-2d.js.map +0 -5
  3. package/dist/browser/pacem-2d.min.js +3 -3
  4. package/dist/browser/pacem-2d.min.js.map +0 -5
  5. package/dist/browser/pacem-3d.js +341 -341
  6. package/dist/browser/pacem-3d.js.map +1 -6
  7. package/dist/browser/pacem-3d.min.js +3 -3
  8. package/dist/browser/pacem-3d.min.js.map +1 -6
  9. package/dist/browser/pacem-charts.js +3 -3
  10. package/dist/browser/pacem-charts.js.map +0 -5
  11. package/dist/browser/pacem-charts.min.js +3 -3
  12. package/dist/browser/pacem-charts.min.js.map +0 -5
  13. package/dist/browser/pacem-cms.js +107 -107
  14. package/dist/browser/pacem-cms.js.map +1 -6
  15. package/dist/browser/pacem-cms.min.js +3 -3
  16. package/dist/browser/pacem-cms.min.js.map +1 -6
  17. package/dist/browser/pacem-core.js +21 -7
  18. package/dist/browser/pacem-core.js.map +1 -6
  19. package/dist/browser/pacem-core.min.js +4 -4
  20. package/dist/browser/pacem-core.min.js.map +1 -6
  21. package/dist/browser/pacem-foundation.js +3 -3
  22. package/dist/browser/pacem-foundation.js.map +0 -5
  23. package/dist/browser/pacem-foundation.min.js +3 -3
  24. package/dist/browser/pacem-foundation.min.js.map +0 -5
  25. package/dist/browser/pacem-fx.js +19 -19
  26. package/dist/browser/pacem-fx.js.map +1 -6
  27. package/dist/browser/pacem-fx.min.js +3 -3
  28. package/dist/browser/pacem-fx.min.js.map +1 -6
  29. package/dist/browser/pacem-logging.js +3 -3
  30. package/dist/browser/pacem-logging.js.map +0 -5
  31. package/dist/browser/pacem-logging.min.js +3 -3
  32. package/dist/browser/pacem-logging.min.js.map +0 -5
  33. package/dist/browser/pacem-maps.js +3 -3
  34. package/dist/browser/pacem-maps.js.map +0 -5
  35. package/dist/browser/pacem-maps.min.js +3 -3
  36. package/dist/browser/pacem-maps.min.js.map +0 -5
  37. package/dist/browser/pacem-media.js +3 -3
  38. package/dist/browser/pacem-media.js.map +0 -5
  39. package/dist/browser/pacem-media.min.js +3 -3
  40. package/dist/browser/pacem-media.min.js.map +0 -5
  41. package/dist/browser/pacem-networking.js +3 -3
  42. package/dist/browser/pacem-networking.js.map +0 -5
  43. package/dist/browser/pacem-networking.min.js +3 -3
  44. package/dist/browser/pacem-networking.min.js.map +0 -5
  45. package/dist/browser/pacem-numerical.js +3 -3
  46. package/dist/browser/pacem-numerical.js.map +0 -5
  47. package/dist/browser/pacem-numerical.min.js +3 -3
  48. package/dist/browser/pacem-numerical.min.js.map +0 -5
  49. package/dist/browser/pacem-plus.js +77 -77
  50. package/dist/browser/pacem-plus.js.map +1 -6
  51. package/dist/browser/pacem-plus.min.js +3 -3
  52. package/dist/browser/pacem-plus.min.js.map +1 -6
  53. package/dist/browser/pacem-scaffolding.js +11 -8
  54. package/dist/browser/pacem-scaffolding.js.map +1 -6
  55. package/dist/browser/pacem-scaffolding.min.js +4 -4
  56. package/dist/browser/pacem-scaffolding.min.js.map +1 -6
  57. package/dist/browser/pacem-ui.js +37 -26
  58. package/dist/browser/pacem-ui.js.map +1 -6
  59. package/dist/browser/pacem-ui.min.js +4 -4
  60. package/dist/browser/pacem-ui.min.js.map +1 -6
  61. package/dist/bundle/pacem.min.mjs +40 -38
  62. package/dist/bundle/pacem.mjs +58 -32
  63. package/dist/bundle/pacem.mjs.map +2 -7
  64. package/dist/typings/index.d.ts +5 -3
  65. package/dist/vscode.html-custom.json +4834 -0
  66. package/package.json +9 -8
@@ -1,6 +1 @@
1
- /**
2
- * @pacem/pacem v1.0.0-abel (https://js.pacem.it)
3
- * Copyright 2026 Pacem (https://pacem.it)
4
- * Licensed under Apache-2.0
5
- */
6
- {"version":3,"file":"pacem-ui.min.js","sources":["../esm/adapter.js","../esm/anchor.js","../esm/types.js","../esm/balloon.js","../esm/binder.js","../esm/blade.js","../esm/bottom-sheet.js","../esm/dialog-abstractions.js","../esm/button.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-abstractions.js","../esm/lightbox.js","../esm/loader.js","../esm/markdown-svc.js","../esm/markdown.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","../esm/index-iife.js"],"sourcesContent":["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 } from '@pacem/pacem-core';\nimport { Components, UI } from '@pacem/pacem-core';\nconst { PacemElement, RepeaterItemCreateEventName, ItemRegisterEventName, ItemUnregisterEventName } = Components;\n//namespace Pacem.Components.UI {\nexport var AdapterOrientation;\n(function (AdapterOrientation) {\n AdapterOrientation[\"Vertical\"] = \"vertical\";\n AdapterOrientation[\"Horizontal\"] = \"horizontal\";\n})(AdapterOrientation || (AdapterOrientation = {}));\nexport const AdapterPageButtonRefreshEventName = 'pagerefresh';\nexport class AdapterPageButtonRefreshEvent extends CustomEvent {\n constructor(args) {\n super(AdapterPageButtonRefreshEventName, { detail: args, bubbles: false, cancelable: false });\n }\n}\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 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 this.loop = true;\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 let fn = (e) => {\n if (e) {\n pager.removeEventListener('load', fn, false);\n }\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 if (pager.isReady) {\n // does not work for properties(?)...\n fn();\n }\n else {\n pager.addEventListener('load', fn, false);\n }\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)\">&lt;</${P}-button>\r\n <${P}-button class=\"${PCSS}-adapter-next\" on-click=\":host._next($event)\">&gt;</${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.\nlet PacemAnchorElement = class PacemAnchorElement extends Components.PacemElement {\n constructor() {\n super('link');\n this._fetching = false;\n }\n ///\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","export 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, PropertyChangeEvent, ViewChild, stopPropagationHandler, preventDefaultHandler } from '@pacem/pacem-core';\nimport { ElementOrPointPropertyConverter } from './types';\n//namespace Pacem.Components.UI {\nexport var BalloonBehavior;\n(function (BalloonBehavior) {\n BalloonBehavior[\"Menu\"] = \"menu\";\n BalloonBehavior[\"Tooltip\"] = \"tooltip\";\n BalloonBehavior[\"Inert\"] = \"inert\";\n})(BalloonBehavior || (BalloonBehavior = {}));\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 = {}));\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 = {}));\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 = {}));\nexport var BalloonSizing;\n(function (BalloonSizing) {\n BalloonSizing[\"Auto\"] = \"auto\";\n BalloonSizing[\"Match\"] = \"match\";\n})(BalloonSizing || (BalloonSizing = {}));\nexport const BalloonPopupEventName = 'popup';\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';\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","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 {\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 = {}));\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 = {}));\nexport var BinderTension;\n(function (BinderTension) {\n BinderTension[\"Mass\"] = \"mass\";\n BinderTension[\"Path\"] = \"path\";\n})(BinderTension || (BinderTension = {}));\nexport const BinderInteractionEventName = 'interact';\nexport class BinderInteractionEvent extends CustomUIEvent {\n constructor(orig) {\n super(BinderInteractionEventName, null, orig);\n }\n}\nconst UI_BINDERS = 'pacem:components:ui:binders';\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}\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'];\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 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 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';\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 } from '@pacem/pacem-core';\n// namespace Pacem.Components.UI {\nconst OPEN_CSSCLASS = 'bottom-sheet-open';\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)) {\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 const id = Utils.isNullOrEmpty(this.id) ? (this.id = ('handle_' + Utils.uniqueCode())) : this.id;\n bs._setHandle(this);\n this.addEventListener('click', this._clickHandler, false);\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 };\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 }\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 */\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 }\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 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);\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","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 {\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 = {}));\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 = {}));\nexport const DialogResultEventName = 'commit';\nexport class DialogResultEvent extends CustomTypedEvent {\n constructor(args) {\n super(DialogResultEventName, args);\n }\n}\nexport class PacemDialogBase extends Components.PacemElement {\n #deferred;\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 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, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, CommandEvent } from '@pacem/pacem-core';\nimport { DialogButton } from './dialog-abstractions';\n//namespace Pacem.Components.UI {\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 else {\n switch (ev.type) {\n case 'mousedown':\n if (evt.button === 0) {\n Utils.addClass(this, PCSS + '-active');\n }\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 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 };\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 { P, CustomElement, Components } from '@pacem/pacem-core';\nimport { PacemButtonElement } from './button';\n//namespace Pacem.Components.UI {\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 {\nexport var CalendarZoom;\n(function (CalendarZoom) {\n CalendarZoom[\"Month\"] = \"month\";\n CalendarZoom[\"Week\"] = \"week\";\n CalendarZoom[\"Day\"] = \"day\";\n})(CalendarZoom || (CalendarZoom = {}));\nexport class ViewDateChangeEvent extends CustomTypedEvent {\n constructor(date) {\n super('viewdatechange', date);\n }\n}\nexport class DateSelectEvent extends CustomTypedEvent {\n constructor(date) {\n super('dateselect', date, { bubbles: true });\n }\n}\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'];\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 };\nexport class CalendarEventSelectEvent extends CustomTypedEvent {\n constructor(args) {\n super(\"eventselect\", args, { bubbles: false, cancelable: true });\n }\n}\nexport class CalendarEventUnselectEvent extends CustomTypedEvent {\n constructor(args) {\n super(\"eventunselect\", args, { bubbles: false, cancelable: true });\n }\n}\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);\nexport class PacemCalendarWithEventsBaseElement extends PacemCalendarBaseElement {\n constructor() {\n super(...arguments);\n this._datasource = [];\n }\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}\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 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}\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)\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}\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\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 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);\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 {\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 {\nlet PacemDialogElement = class PacemDialogElement extends PacemDialogBase {\n constructor() {\n super(...arguments);\n this.buttons = DialogButtons.Ok;\n this.okCaption = 'OK';\n this.yesCaption = 'Yes';\n this.noCaption = 'No';\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 /** 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 {\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}\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 {\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 {\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 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 {\nexport class PacemAdaptedIterativeElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this.index = 0;\n }\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 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 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","//namespace Pacem.Components.UI {\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, 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.\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 }\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 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 if (!!old) {\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 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 {\nexport var LoaderType;\n(function (LoaderType) {\n LoaderType[\"Spinner\"] = \"spin\";\n LoaderType[\"Pacem\"] = \"pacem\";\n LoaderType[\"Custom\"] = \"custom\";\n})(LoaderType || (LoaderType = {}));\n;\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","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, /^((<|&lt;)!--(?:(?!(--(>|&gt;)))[\\s\\S])*(--(?:>|&gt;)|$))/, 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, /^(<|&lt;)([\\w-]+)(?:\\s+[\\w-]+(?:=(?:'[^']*'|\"[^\"]*\"))*)*(\\s*\\/?(?:&gt;|>))/, 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, /^((?:<|&lt;)\\/)([\\w-]+)(\\s*(?:&gt;|>))/, 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, /^(<|&lt;)?((?!<|&lt;).)+/, 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};\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, '&lt;');\n }\n toHtml(md) {\n return this.#md.toHtml(this._escape(md), this.#grammar, RULES_TO_HTML);\n }\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, CustomElement, Watch, PropertyConverters, Components } from '@pacem/pacem-core';\nimport { MarkdownService } from './markdown-svc';\n//namespace Pacem.Components.UI {\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 tokens(md = this.value) {\n return this._md.tokenize(md);\n }\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","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 {\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)`;\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 {\nlet PacemMenuElement = class PacemMenuElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\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 };\nlet PacemMenuCursorElement = PacemMenuCursorElement_1 = class PacemMenuCursorElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._onPathChange = (evt) => {\n const menu = this._menu, path = (evt && evt.detail) || window.location.pathname;\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 var anchors = menu.querySelectorAll(P + '-a');\n var tget = null;\n for (let j = 0; j < anchors.length; j++) {\n let a = anchors.item(j);\n if (a.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 if (!Utils.isNull(tget)) {\n // TODO: use transforms (remove width/height/top/... animations)\n // TODO: consider <nav> scrollTop\n const rect = Utils.offset(tget);\n const rectMenu = Utils.offset(menu);\n this.style.top = rect.top + 'px';\n this.style.left = rectMenu.left + 'px';\n this.style.width = '0';\n this.style.height = rect.height + 'px';\n Utils.addAnimationEndCallback(this, () => {\n this.style.width = (rect.width + rect.left - rectMenu.left) + 'px';\n }, 500);\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._menu = CustomElementUtils.findAncestorOfType(this, PacemMenuElement);\n this._onPathChange();\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};\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 {\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: '&laquo;', index: 0, first: true, disabled: !( /*start*/pageindex > 0) });\n // <\n datasource.push({ caption: '&lt;', 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: '&hellip;', 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: '&hellip;', 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: '&gt;', index: size * (pageindex + 1), next: true, disabled: !(pageindex < (totpages - 1)) });\n // >|\n datasource.push({ caption: '&raquo;', 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 {\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 };\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 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 {\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 {\nlet PacemSidebarElement = class PacemSidebarElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this.open = false;\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 {\nlet PacemSlideElement = class PacemSlideElement extends Components.PacemIterableElement {\n};\nPacemSlideElement = __decorate([\n CustomElement({\n tagName: P + '-slide'\n })\n], PacemSlideElement);\nexport { PacemSlideElement };\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 {\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 {\nexport var StickyHeaderVisibility;\n(function (StickyHeaderVisibility) {\n StickyHeaderVisibility[\"Persistent\"] = \"persistent\";\n StickyHeaderVisibility[\"QuickReturn\"] = \"quickreturn\";\n})(StickyHeaderVisibility || (StickyHeaderVisibility = {}));\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};\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 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 };\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 {\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\";\nlet PacemToastElement = PacemToastElement_1 = class PacemToastElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this.autohide = true;\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 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 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 {\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}\nlet PacemTunerElement = class PacemTunerElement extends Components.PacemElement {\n constructor() {\n super();\n //#region INTERACTIVE\n this.min = 0.0;\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 {\nlet PacemVibrateElement = class PacemVibrateElement extends PacemEventTarget {\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 } 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};\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 }\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._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._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 _dispatchRender() {\n this.dispatchEvent(new CustomEvent(\"render\"));\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';\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 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 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 };\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","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","PacemElement","RepeaterItemCreateEventName","ItemRegisterEventName","ItemUnregisterEventName","Components","AdapterOrientation","AdapterPageButtonRefreshEventName","AdapterPageButtonRefreshEvent","CustomEvent","constructor","args","super","detail","bubbles","cancelable","PacemAdapterElement","PacemAdapter","this","_itemCreatedHandler","evt","index","_pageMap","set","dom","firstElementChild","_fireAdapterPageRefreshCallback","item","Map","interactive","swipeEnabled","loop","labelCallback","toString","_itemRegisterHandler","Utils","isNull","_swiper","behaviors","indexOf","push","_itemUnregisterHandler","splice","_keydownHandler","orientation","Vertical","keyCode","_next","_previous","masterPropertyChangedCallback","name","old","val","first","_syncViewWithItems","_index","viewActivatedCallback","_repeater","addEventListener","disconnectedCallback","removeEventListener","initializeCallback","el","master","tab","_previousTabIndex","tabIndex","destroyCallback","isNullOrEmpty","items","ndx","itemPropertyChangedCallback","_tickVersion","hide","disable","disabled","caption","_labelCallback","content","dispatchEvent","_isHidden","_isDisabled","pagers","has","pager","get","span","fn","e","isReady","_v","Date","now","propertyChangedCallback","_resetTimer","hidden","_liPause","removeAttribute","setAttribute","_prevBtn","_nextBtn","_panel","datasource","_toggle","_paused","avoidHandler","clearInterval","_handle","window","setInterval","next","type","UI","SwipeEventType","SwipeLeft","interval","SwipeRight","previous","_select","deselectable","select","v","_disableOrHide","disabledOrHidden","retval","ViewChild","P","prototype","PCSS","Debounce","Watch","converter","PropertyConverters","Boolean","emit","Number","String","reflectBack","Throttle","CustomElement","tagName","shadow","Defaults","USE_SHADOW_ROOT","template","PacemAnchorElement","_fetching","fetching","connectedCallback","hasAttribute","tabOrder","removeClass","addClass","preventDefault","click","href","router","filename","download","url","URIs","format","state","defaultPrevented","ctrlKey","button","open","_download","location","assign","path","PropertyChangeEvent","propertyName","oldValue","currentValue","credentials","fetchCredentials","headers","fetchHeaders","Json","convert","attr","convertBack","prop","Element","ElementOrPointPropertyConverter","document","querySelector","JSON","parse","BalloonBehavior","BalloonTrigger","BalloonAlignment","BalloonPosition","BalloonSizing","BalloonPopupEventName","BalloonPopoutEventName","BalloonConsts","trigger","Hover","position","Auto","size","behavior","Menu","verticalOffset","horizontalOffset","hoverDelay","hoverTimeout","align","Center","track","positioningStyles","allStyles","PacemBalloonElement","_options","_originalNeighborhood","_popoutDelegate","_","popout","_hoverDelegate","popup","_outConditionalDelegate","srcElement","_outDelegate","_mousedownConditionalDelegate","preventDefaultHandler","_visible","stopPropagationHandler","_toggleDelegate","visible","_removeHandlers","_adjust","extend","clone","_synchronizeOptions","_setHandlers","_ensurePopup","parentElement","_destroyPopup","options","moveToRoot","parent","nextSibling","nextElementSibling","body","appendChild","container","_container","hasClass","style","zIndex","visibility","_registerEvents","Focus","Click","ContextMenu","Tooltip","_unregisterEvents","opts","_onLayoutChange","coords","offset","top","y","left","x","width","height","vieportSize","windowSize","chosenPosition","chosenAlignment","Top","Bottom","Left","Right","viewportHeight","viewportWidth","offsetLeft","scrollLeft","offsetTop","scrollTop","offsetBottom","offsetRight","HorizontalAuto","Match","minWidth","minHeight","popupSize","offsetWidth","offsetHeight","fullOffsetWidth","halfOffsetWidth","fullOffsetHeight","halfOffsetHeight","Start","End","halfHeight","halfWidth","tailSize","Css","getVariableValue","tailInset","inset","parseInt","threshold","adjustX","autoAdjust","adjustY","Math","min","max","round","_adjustWatchers","_resize","_position","trackPosition","delay","clearTimeout","_timer","setTimeout","isVisible","pointerEvents","addAnimationEndCallback","Event","toggle","Inert","ResizeEventName","BinderAnchor","BinderEnd","BinderTension","BinderInteractionEventName","BinderInteractionEvent","CustomUIEvent","orig","UI_BINDERS","BindersCollector","element","binders","fire","binder","refresh","resize","watcher","PacemResizeElement","watchPosition","dispose","remove","BinderUtils","_pageBinders","_updateResizeListener","_bodyResizeListener","invalidateSize","register","collector","CustomElementUtils","getAttachedPropertyValue","setAttachedPropertyValue","currentSize","unregister","ndx2","deleteAttachedPropertyValue","STD_EVENTS","PacemBinderElement","_broadcastHandler","ui","_state","_ensurePath","from","to","_draw","_svg","className","_setPathVisibility","_path","forEach","undefined","svg","createElementNS","overflow","scrollWidth","scrollHeight","_computeAnchorPoints","anchor","end","ref","refAnchor","refEnd","tension","p1","p2","c1","c2","w","h","w2","h2","r_top","r_left","r_w","r_h","r_w2","r_h2","p1_center","p2_center","p1_top","p1_bottom","p1_left","p1_right","p2_top","p2_bottom","p2_left","p2_right","points","distance_memoizer","getDistance","suffix1","suffix2","Point","distance","a","b","slope","atan2","PI","top_2_left","right_2_left","right_2_bottom","top_2_bottom","top_2_right","left_2_right","left_2_bottom","bottom_2_right","left_2_top","bottom_2_top","bottom_2_left","right_2_top","computeF","Arrow","FatArrow","f","refF","Path","t","abs","anchors","draw","leave","fromAnchor","toAnchor","state1","state2","HTMLElement","fromEnd","toEnd","p0","c0","anchor0","anchor1","x0","y0","cx0","cy0","x1","y1","cx1","cy1","dStart","_getDefaultEndingPath","_getArrowEndingPath","_getFatArrowEndingPath","None","dEnd","color","stroke","PacemBladeElement","eventName","PacemBottomSheetHandleElement","_clickHandler","bs","bottomSheet","_setIcon","_toggleHandle","findAncestorOfType","PacemBottomSheetElement","_bindToBottomSheet","_setHandle","id","uniqueCode","icon","iconGlyph","ic","_icon","_resizeHandler","_rebuildSwiperSnaps","_setPosition","_panHandler","snap","snaps","find","s","delta","pct","clamp","sqr","backdropFilter","toFixed","_swipeHandler","SwipeAnimationEnd","SwipeUpAnimationEnd","SwipeDownAnimationEnd","_assignLogger","_toggleSwiper","swiper","handle","handleSelector","_handleResizer","logger","_getSnap","sort","_resizer","Pan","resizer","handleResizer","naturalOffset","hY","hHeight","wHeight","openSnap","closedSnap","_getCssTransform","sheet","_sheet","transform","DialogButtons","DialogButton","DialogResultEventName","DialogResultEvent","CustomTypedEvent","PacemDialogBase","deferred","lb","lightbox","Promise","withResolvers","log","Logging","LogLevel","Warn","reject","show","promise","commit","btn","Debug","drevt","resolve","PacemButtonElement","PacemIterableElement","dataset","ev","commandName","CommandEvent","commandArgument","confirmationDialog","MouseEvent","confirmationMessage","then","Yes","Ok","PacemButtonsetElement","PacemIterativeElement","attributes","focus","validate","CalendarZoom","ViewDateChangeEvent","date","DateSelectEvent","TimeSelectEvent","MSECS_PER_HOUR","MSECS_PER_DAY","DAY_HOURS","DUMMY_DATE","Dates","dateOnly","valueOf","DAYS_OF_WEEK","PacemCalendarEventElement","PacemItemElement","cancelAnimationFrame","requestAnimationFrame","Datetime","CalendarEventSelectEvent","CalendarEventUnselectEvent","PacemCalendarBaseElement","PacemItemsContainerElement","_synchronizeWeek","oneventselect","event","oneventunselect","getHeaderLabel","Week","weekday","day","month","Day","parseDate","toLocaleString","lang","getDayLabel","getDate","getHourLabel","hour","getTimeLabel","minute","isNow","d0","getHours","isToday","isDate","isViewDay","vd","viewDate","expected","getMonth","getFullYear","isViewWeek","week","d1","isViewMonth","isTimeSlotDisabled","ranges","slotDate","floor","tz","getTimezoneOffset","slot","range","_getWeekStart","weekstart","dow","getDay","tget","toLowerCase","startsWith","_getDatasource","weekStart","ds","_d0","wk","dy","date1","filter","j","some","Eval","PacemCalendarWithEventsBaseElement","_datasource","_getSortedItems","slice","a_start","start","b_start","a_span","b_span","oldval","newval","buildDataSource","getWeeklyEventDataItems","lbound","wstart","wend","startDate","endDate","map","startIndex","endIndex","ndx0","ndx1","allDay","continuing","PacemAgendaElement","_allDayDatasource","zoom","dayValue","dayItems","evtStart","evtEnd","startHour","getMinutes","endHour","ceil","endNdx","fullSpan","allDayDatasource","clock","_clock","z","showClock","grid","whole","css","buildAgendaGrid","PacemCalendarElement","weekItems","_formatVersion","_setDate","labeler","dayLabelFormatter","buildCalendarGrid","PacemClockElement","PacemScheduleElement","_calendar","emitHandler","_agenda","Month","header","buildCalendarHeader","PacemCalendarRuleBaseElement","_disabledRanges","_target","findAncestor","node","refreshDisabledRanges","actualRanges","disabledRanges","computeDisabledRanges","PacemCalendarDayOfWeekRuleElement","_daysOfWeek","_calendarChangeHandler","PropertyChangeEventName","StringArray","PacemCollapseElement","PacemEventTarget","collapse","div","horizontal","PacemDialogElement","buttons","okCaption","yesCaption","noCaption","cancelCaption","OkCancel","dialogButtons","ok","yes","btns","_buttons","children","no","cancel","lastElementChild","PacemDividerElement","_syncOrientation","aria","SVG","FA","FA_CDN","LNI","COREUI","MATERIAL","MATERIAL_SYMBOLS","MATERIAL_SYMBOLS_CDN","URL","iconImportMemoizer","importConditionally","cssClassName","sha","crossOrigin","js","isClassDefined","importjs","importcss","PacemIconElement","test","regExcArray","exec","ligature","rest","substring","parts","trim","split","join","getIconMarkup","markup","innerHTML","PacemImageElement","_setSource","_setLayout","sizeDeclared","bgsize","adapt","naturalSize","backgroundSize","src","backgroundImage","loading","img","loadImage","weight","entries","entry","performance","getEntriesByName","decodedBodySize","naturalWidth","naturalHeight","match","PacemInfiniteScrollerElement","_scrollDelegate","_doScroll","_enabled","_viewportHeight","_innerHeight","_isDocument","_viewport","_scroller","_bottomGap","setInfiniteScrollContainer","cont","isDoc","documentElement","_emitFetchMore","_computeHeight","Document","pageYOffset","innerHeight","topOffset","MAX_VALUE","bottomOffset","clientHeight","eTopOffset","eBottomOffset","Window","LightboxBehavior","PacemAdaptedIterativeElement","isCloseTo","focusndx","_isCloseToCore","isPrevious","_isPreviousCore","isNext","_isNextCore","count","PacemLightboxElement","_keyupHandler","modal","_wrapperMousedownHandler","ExplicitClose","_slotchangeHandler","_resetLayout","_closeHandler","_close","_disposeButton","_ensureButton","_toggleCloseVisibility","closer","_closeWrapper","wrapper","_wrapperElement","_slot","wrap","inert","display","addPart","scroller","removePart","_disposeSlot","btnSlot","found","_lookForAButton","assignedElements","flatten","LoaderType","PacemLoaderElement","_svgSpinner","active","_spinner","Pacem","input","pattern","arr","MARKUP_RULES","raw","text","lexer","openingTag","closingTag","closingTagIndex","attributesIndex","attributesString","tokenize","output","Array","apply","C_LIKE_RULES","SCRIPT_RULES","TWITTER_RULE","rule","YOUTUBE_RULE","RULES_TO_HTML","token","MarkdownService","grammar","c_like_rules","script_rules","markup_rules","md","Compile","Markdown","Parser","_escape","replace","toHtml","PacemMarkdownElement","_md","html","tokens","value","PacemMarqueeElement","overlap","_css","createElement","head","_overlapResize","_contentResize","m","_marquee","speed","time","animationName","animationDuration","animationIterationCount","animationTimingFunction","PacemMediaQueryElement","_changeHandler","isMatch","matches","mql","_init","_broadcastChange","q","query","matchMedia","PacemMenuCursorElement_1","PacemMenuElement","synchronizeShell","_stopPropagationHandlerConditional","_base","offsetNav","offsetBase","_sync","_shell","findAncestorShell","outset","PacemMenuCursorElement","_onPathChange","menu","_menu","pathname","querySelectorAll","rect","rectMenu","PacemPagerElement","_databind","repeater","pages","total","mode","totpages","pageindex","startpageindex","endpageindex","last","PacemPictureSourceElement","picture","PacemPictureElement","refreshSources","label","_updateCurrentSrcHandler","currentSrc","_img","_setSources","_setAltText","_picture","sources","itemCount","source","insertBefore","srcset","media","tip","tooltip","alt","toObject","PacemProgressbarElement","valuemin","valuemax","valuenow","_bar","_glow","perc","leftPad","_caption","textContent","PacemSidebarElement","shell","PacemSlideElement","PacemSlideshowElement","PacemTweetEmbedElement","_scriptsLoaded","_render","tweetid","twttr","ready","tw","widgets","createTweet","StickyHeaderVisibility","PacemStickyHeaderElement","previousOffset","_scrollHandler","_ensureScrollAwareElement","PacemScrollAwareElement","ScrollEventName","_manageOffsetChange","Persistent","lastTop","QuickReturn","PACEM_TAB_FOCUS_CSS","StringOrNodePropertyConverter","Node","retryConversionWhenReady","PacemTabElement","_slotChangeHandler","_slotLabel","lbl","PacemTabsElement","_tweener","Animations","TweenService","assembled","outerHTML","_defaultTabAdapter","_tabs","_syncVisibility","getComputedStyle","padding","boxSizing","paddingTop","paddingBottom","tgetH","run","Easings","sineOut","adapter","_isUsingDefaultTabAdapter","PacemTickerElement","PacemSafeContentElement","_contentChangeHandler","_incoming","replaceChildren","newContent","_outgoing","_tickContent","safeContent","sanitize","_buildMarkupNode","tmpl","childNodes","assignedNodes","PacemToastElement_1","PACEM_TOAST_POPS","PacemToastElement","autohide","timeout","_doHide","waitForAnimationEnd","order","_show","toast","toaster","level","message","cssClass","isArray","callback","toast2","cssArray","Transformer","PacemTocElement","_items","_scrollToSelf","_scrollTo","_hashChange","hash","_observer","_observe","disconnect","MutationObserver","_onScroll","_update","observe","subtree","childList","_getTop","selector","tween","sineInOut","scrollTo","_startScrollTo","zero","current","innerText","hasContent","elements","initialTarget","TWO_PI","cartesian","cx","cy","theta","cos","sin","PacemTunerElement","_rotateStartHandler","angle","_getAngle","_rotate","minRotation","maxRotation","_setValue","_rotateEndHandler","_rotateHandler","rotation","rotate","_tween","RotateEventType","Rotate","_canvas","_toggleRotate","easing","random","canvas","_angleToValue","pow","angleValue","_valueToAngle","vertex","center","currentPosition","alpha","Angle","_rail","isNaN","rail","counterRail","_counterRail","isMin","isMax","mathPI2","large","counterFrom","counterTo","counterLarge","counterD","PacemVibrateElement","vibrate","navigator","ElementOrStringPropertyConverter","isConnected","PacemViewElement","_templateChangeHandler","tmplProxy","_setTmpl","_dispose","_manage","_isReference","_manageRef","PacemTemplateProxyElement","debounce","_fetchHandle","_manageUrl","HTMLTemplateElement","Error","_renderHandle","cloneNode","_dispatchRender","aborter","abort","signal","AbortController","fetch","async","manageYield","htmlPromise","status","followRedirects","renderErrors","_manageResult","contentLength","progress","received","chunks","reader","getReader","done","read","allChunks","Uint8Array","chunk","TextDecoder","decode","result","NaN","HANDLE_CSS","PacemWindowAreaElement","_zIndex","_startHandler","_incrementZIndex","_blurHandler","_focusHandler","currentTarget","_itemPropertyChangeHandler","_adapterPagerCallback","floating","PacemWindowElement","_behaviors","_dragDrop","_rescale","RescaleEventType","initialize","_syncLayout","minimized","DeepMerger","merge","Output"],"mappings":"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"}
1
+ {"version":3,"file":"pacem-ui.min.js","sources":["../esm/adapter.js","../esm/anchor.js","../esm/types.js","../esm/balloon.js","../esm/binder.js","../esm/blade.js","../esm/bottom-sheet.js","../esm/dialog-abstractions.js","../esm/button.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-abstractions.js","../esm/lightbox.js","../esm/loader.js","../esm/markdown-svc.js","../esm/markdown.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","../esm/index-iife.js"],"sourcesContent":["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 } from '@pacem/pacem-core';\nimport { Components, UI } from '@pacem/pacem-core';\nconst { PacemElement, RepeaterItemCreateEventName, ItemRegisterEventName, ItemUnregisterEventName } = Components;\n//namespace Pacem.Components.UI {\nexport var AdapterOrientation;\n(function (AdapterOrientation) {\n AdapterOrientation[\"Vertical\"] = \"vertical\";\n AdapterOrientation[\"Horizontal\"] = \"horizontal\";\n})(AdapterOrientation || (AdapterOrientation = {}));\nexport const AdapterPageButtonRefreshEventName = 'pagerefresh';\nexport class AdapterPageButtonRefreshEvent extends CustomEvent {\n constructor(args) {\n super(AdapterPageButtonRefreshEventName, { detail: args, bubbles: false, cancelable: false });\n }\n}\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 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 this.loop = true;\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 let fn = (e) => {\n if (e) {\n pager.removeEventListener('load', fn, false);\n }\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 if (pager.isReady) {\n // does not work for properties(?)...\n fn();\n }\n else {\n pager.addEventListener('load', fn, false);\n }\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)\">&lt;</${P}-button>\r\n <${P}-button class=\"${PCSS}-adapter-next\" on-click=\":host._next($event)\">&gt;</${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.\nlet PacemAnchorElement = class PacemAnchorElement extends Components.PacemElement {\n constructor() {\n super('link');\n this._fetching = false;\n }\n ///\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","export 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, PropertyChangeEvent, ViewChild, stopPropagationHandler, preventDefaultHandler } from '@pacem/pacem-core';\nimport { ElementOrPointPropertyConverter } from './types';\n//namespace Pacem.Components.UI {\nexport var BalloonBehavior;\n(function (BalloonBehavior) {\n BalloonBehavior[\"Menu\"] = \"menu\";\n BalloonBehavior[\"Tooltip\"] = \"tooltip\";\n BalloonBehavior[\"Inert\"] = \"inert\";\n})(BalloonBehavior || (BalloonBehavior = {}));\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 = {}));\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 = {}));\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 = {}));\nexport var BalloonSizing;\n(function (BalloonSizing) {\n BalloonSizing[\"Auto\"] = \"auto\";\n BalloonSizing[\"Match\"] = \"match\";\n})(BalloonSizing || (BalloonSizing = {}));\nexport const BalloonPopupEventName = 'popup';\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';\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","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 {\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 = {}));\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 = {}));\nexport var BinderTension;\n(function (BinderTension) {\n BinderTension[\"Mass\"] = \"mass\";\n BinderTension[\"Path\"] = \"path\";\n})(BinderTension || (BinderTension = {}));\nexport const BinderInteractionEventName = 'interact';\nexport class BinderInteractionEvent extends CustomUIEvent {\n constructor(orig) {\n super(BinderInteractionEventName, null, orig);\n }\n}\nconst UI_BINDERS = 'pacem:components:ui:binders';\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}\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'];\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 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 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';\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 } from '@pacem/pacem-core';\n// namespace Pacem.Components.UI {\nconst OPEN_CSSCLASS = 'bottom-sheet-open';\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)) {\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 const id = Utils.isNullOrEmpty(this.id) ? (this.id = ('handle_' + Utils.uniqueCode())) : this.id;\n bs._setHandle(this);\n this.addEventListener('click', this._clickHandler, false);\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 };\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 }\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 */\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 }\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 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);\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","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 {\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 = {}));\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 = {}));\nexport const DialogResultEventName = 'commit';\nexport class DialogResultEvent extends CustomTypedEvent {\n constructor(args) {\n super(DialogResultEventName, args);\n }\n}\nexport class PacemDialogBase extends Components.PacemElement {\n #deferred;\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 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, PCSS, CustomElement, Watch, Utils, PropertyConverters, Components, CommandEvent } from '@pacem/pacem-core';\nimport { DialogButton } from './dialog-abstractions';\n//namespace Pacem.Components.UI {\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 else {\n switch (ev.type) {\n case 'mousedown':\n if (evt.button === 0) {\n Utils.addClass(this, PCSS + '-active');\n }\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 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 };\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 { P, CustomElement, Components } from '@pacem/pacem-core';\nimport { PacemButtonElement } from './button';\n//namespace Pacem.Components.UI {\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 {\nexport var CalendarZoom;\n(function (CalendarZoom) {\n CalendarZoom[\"Month\"] = \"month\";\n CalendarZoom[\"Week\"] = \"week\";\n CalendarZoom[\"Day\"] = \"day\";\n})(CalendarZoom || (CalendarZoom = {}));\nexport class ViewDateChangeEvent extends CustomTypedEvent {\n constructor(date) {\n super('viewdatechange', date);\n }\n}\nexport class DateSelectEvent extends CustomTypedEvent {\n constructor(date) {\n super('dateselect', date, { bubbles: true });\n }\n}\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'];\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 };\nexport class CalendarEventSelectEvent extends CustomTypedEvent {\n constructor(args) {\n super(\"eventselect\", args, { bubbles: false, cancelable: true });\n }\n}\nexport class CalendarEventUnselectEvent extends CustomTypedEvent {\n constructor(args) {\n super(\"eventunselect\", args, { bubbles: false, cancelable: true });\n }\n}\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);\nexport class PacemCalendarWithEventsBaseElement extends PacemCalendarBaseElement {\n constructor() {\n super(...arguments);\n this._datasource = [];\n }\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}\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 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}\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)\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}\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\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 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);\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 {\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 {\nlet PacemDialogElement = class PacemDialogElement extends PacemDialogBase {\n constructor() {\n super(...arguments);\n this.buttons = DialogButtons.Ok;\n this.okCaption = 'OK';\n this.yesCaption = 'Yes';\n this.noCaption = 'No';\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 /** 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 {\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}\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 {\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 {\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 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 {\nexport class PacemAdaptedIterativeElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this.index = 0;\n }\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 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 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","//namespace Pacem.Components.UI {\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, 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.\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 {\nexport var LoaderType;\n(function (LoaderType) {\n LoaderType[\"Spinner\"] = \"spin\";\n LoaderType[\"Pacem\"] = \"pacem\";\n LoaderType[\"Custom\"] = \"custom\";\n})(LoaderType || (LoaderType = {}));\n;\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","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, /^((<|&lt;)!--(?:(?!(--(>|&gt;)))[\\s\\S])*(--(?:>|&gt;)|$))/, 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, /^(<|&lt;)([\\w-]+)(?:\\s+[\\w-]+(?:=(?:'[^']*'|\"[^\"]*\"))*)*(\\s*\\/?(?:&gt;|>))/, 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, /^((?:<|&lt;)\\/)([\\w-]+)(\\s*(?:&gt;|>))/, 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, /^(<|&lt;)?((?!<|&lt;).)+/, 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};\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, '&lt;');\n }\n toHtml(md) {\n return this.#md.toHtml(this._escape(md), this.#grammar, RULES_TO_HTML);\n }\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, CustomElement, Watch, PropertyConverters, Components } from '@pacem/pacem-core';\nimport { MarkdownService } from './markdown-svc';\n//namespace Pacem.Components.UI {\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 tokens(md = this.value) {\n return this._md.tokenize(md);\n }\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","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 {\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)`;\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 {\nlet PacemMenuElement = class PacemMenuElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\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 };\nlet PacemMenuCursorElement = PacemMenuCursorElement_1 = class PacemMenuCursorElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._onPathChange = (evt) => {\n const menu = this._menu, path = (evt && evt.detail) || window.location.pathname;\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 var anchors = menu.querySelectorAll(P + '-a');\n var tget = null;\n for (let j = 0; j < anchors.length; j++) {\n let a = anchors.item(j);\n if (a.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 if (!Utils.isNull(tget)) {\n // TODO: use transforms (remove width/height/top/... animations)\n // TODO: consider <nav> scrollTop\n const rect = Utils.offset(tget);\n const rectMenu = Utils.offset(menu);\n this.style.top = rect.top + 'px';\n this.style.left = rectMenu.left + 'px';\n this.style.width = '0';\n this.style.height = rect.height + 'px';\n Utils.addAnimationEndCallback(this, () => {\n this.style.width = (rect.width + rect.left - rectMenu.left) + 'px';\n }, 500);\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._menu = CustomElementUtils.findAncestorOfType(this, PacemMenuElement);\n this._onPathChange();\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};\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 {\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: '&laquo;', index: 0, first: true, disabled: !( /*start*/pageindex > 0) });\n // <\n datasource.push({ caption: '&lt;', 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: '&hellip;', 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: '&hellip;', 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: '&gt;', index: size * (pageindex + 1), next: true, disabled: !(pageindex < (totpages - 1)) });\n // >|\n datasource.push({ caption: '&raquo;', 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 {\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 };\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 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 {\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 {\nlet PacemSidebarElement = class PacemSidebarElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this.open = false;\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 {\nlet PacemSlideElement = class PacemSlideElement extends Components.PacemIterableElement {\n};\nPacemSlideElement = __decorate([\n CustomElement({\n tagName: P + '-slide'\n })\n], PacemSlideElement);\nexport { PacemSlideElement };\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 {\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 {\nexport var StickyHeaderVisibility;\n(function (StickyHeaderVisibility) {\n StickyHeaderVisibility[\"Persistent\"] = \"persistent\";\n StickyHeaderVisibility[\"QuickReturn\"] = \"quickreturn\";\n})(StickyHeaderVisibility || (StickyHeaderVisibility = {}));\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};\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 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 };\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 {\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\";\nlet PacemToastElement = PacemToastElement_1 = class PacemToastElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this.autohide = true;\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 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 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 {\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}\nlet PacemTunerElement = class PacemTunerElement extends Components.PacemElement {\n constructor() {\n super();\n //#region INTERACTIVE\n this.min = 0.0;\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 {\nlet PacemVibrateElement = class PacemVibrateElement extends PacemEventTarget {\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 } 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};\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 }\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._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._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 _dispatchRender() {\n this.dispatchEvent(new CustomEvent(\"render\"));\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';\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 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 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 };\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","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","PacemElement","RepeaterItemCreateEventName","ItemRegisterEventName","ItemUnregisterEventName","Components","AdapterOrientation","AdapterPageButtonRefreshEventName","AdapterPageButtonRefreshEvent","CustomEvent","constructor","args","super","detail","bubbles","cancelable","PacemAdapterElement","PacemAdapter","this","_itemCreatedHandler","evt","index","_pageMap","set","dom","firstElementChild","_fireAdapterPageRefreshCallback","item","Map","interactive","swipeEnabled","loop","labelCallback","toString","_itemRegisterHandler","Utils","isNull","_swiper","behaviors","indexOf","push","_itemUnregisterHandler","splice","_keydownHandler","orientation","Vertical","keyCode","_next","_previous","masterPropertyChangedCallback","name","old","val","first","_syncViewWithItems","_index","viewActivatedCallback","_repeater","addEventListener","disconnectedCallback","removeEventListener","initializeCallback","el","master","tab","_previousTabIndex","tabIndex","destroyCallback","isNullOrEmpty","items","ndx","itemPropertyChangedCallback","_tickVersion","hide","disable","disabled","caption","_labelCallback","content","dispatchEvent","_isHidden","_isDisabled","pagers","has","pager","get","span","fn","e","isReady","_v","Date","now","propertyChangedCallback","_resetTimer","hidden","_liPause","removeAttribute","setAttribute","_prevBtn","_nextBtn","_panel","datasource","_toggle","_paused","avoidHandler","clearInterval","_handle","window","setInterval","next","type","UI","SwipeEventType","SwipeLeft","interval","SwipeRight","previous","_select","deselectable","select","v","_disableOrHide","disabledOrHidden","retval","ViewChild","P","prototype","PCSS","Debounce","Watch","converter","PropertyConverters","Boolean","emit","Number","String","reflectBack","Throttle","CustomElement","tagName","shadow","Defaults","USE_SHADOW_ROOT","template","PacemAnchorElement","_fetching","fetching","connectedCallback","hasAttribute","tabOrder","removeClass","addClass","preventDefault","click","href","router","filename","download","url","URIs","format","state","defaultPrevented","ctrlKey","button","open","_download","location","assign","path","PropertyChangeEvent","propertyName","oldValue","currentValue","credentials","fetchCredentials","headers","fetchHeaders","Json","convert","attr","convertBack","prop","Element","ElementOrPointPropertyConverter","document","querySelector","JSON","parse","BalloonBehavior","BalloonTrigger","BalloonAlignment","BalloonPosition","BalloonSizing","BalloonPopupEventName","BalloonPopoutEventName","BalloonConsts","trigger","Hover","position","Auto","size","behavior","Menu","verticalOffset","horizontalOffset","hoverDelay","hoverTimeout","align","Center","track","positioningStyles","allStyles","PacemBalloonElement","_options","_originalNeighborhood","_popoutDelegate","_","popout","_hoverDelegate","popup","_outConditionalDelegate","srcElement","_outDelegate","_mousedownConditionalDelegate","preventDefaultHandler","_visible","stopPropagationHandler","_toggleDelegate","visible","_removeHandlers","_adjust","extend","clone","_synchronizeOptions","_setHandlers","_ensurePopup","parentElement","_destroyPopup","options","moveToRoot","parent","nextSibling","nextElementSibling","body","appendChild","container","_container","hasClass","style","zIndex","visibility","_registerEvents","Focus","Click","ContextMenu","Tooltip","_unregisterEvents","opts","_onLayoutChange","coords","offset","top","y","left","x","width","height","vieportSize","windowSize","chosenPosition","chosenAlignment","Top","Bottom","Left","Right","viewportHeight","viewportWidth","offsetLeft","scrollLeft","offsetTop","scrollTop","offsetBottom","offsetRight","HorizontalAuto","Match","minWidth","minHeight","popupSize","offsetWidth","offsetHeight","fullOffsetWidth","halfOffsetWidth","fullOffsetHeight","halfOffsetHeight","Start","End","halfHeight","halfWidth","tailSize","Css","getVariableValue","tailInset","inset","parseInt","threshold","adjustX","autoAdjust","adjustY","Math","min","max","round","_adjustWatchers","_resize","_position","trackPosition","delay","clearTimeout","_timer","setTimeout","isVisible","pointerEvents","addAnimationEndCallback","Event","toggle","Inert","ResizeEventName","BinderAnchor","BinderEnd","BinderTension","BinderInteractionEventName","BinderInteractionEvent","CustomUIEvent","orig","UI_BINDERS","BindersCollector","element","binders","fire","binder","refresh","resize","watcher","PacemResizeElement","watchPosition","dispose","remove","BinderUtils","_pageBinders","_updateResizeListener","_bodyResizeListener","invalidateSize","register","collector","CustomElementUtils","getAttachedPropertyValue","setAttachedPropertyValue","currentSize","unregister","ndx2","deleteAttachedPropertyValue","STD_EVENTS","PacemBinderElement","_broadcastHandler","ui","_state","_ensurePath","from","to","_draw","_svg","className","_setPathVisibility","_path","forEach","undefined","svg","createElementNS","overflow","scrollWidth","scrollHeight","_computeAnchorPoints","anchor","end","ref","refAnchor","refEnd","tension","p1","p2","c1","c2","w","h","w2","h2","r_top","r_left","r_w","r_h","r_w2","r_h2","p1_center","p2_center","p1_top","p1_bottom","p1_left","p1_right","p2_top","p2_bottom","p2_left","p2_right","points","distance_memoizer","getDistance","suffix1","suffix2","Point","distance","a","b","slope","atan2","PI","top_2_left","right_2_left","right_2_bottom","top_2_bottom","top_2_right","left_2_right","left_2_bottom","bottom_2_right","left_2_top","bottom_2_top","bottom_2_left","right_2_top","computeF","Arrow","FatArrow","f","refF","Path","t","abs","anchors","draw","leave","fromAnchor","toAnchor","state1","state2","HTMLElement","fromEnd","toEnd","p0","c0","anchor0","anchor1","x0","y0","cx0","cy0","x1","y1","cx1","cy1","dStart","_getDefaultEndingPath","_getArrowEndingPath","_getFatArrowEndingPath","None","dEnd","color","stroke","PacemBladeElement","eventName","PacemBottomSheetHandleElement","_clickHandler","bs","bottomSheet","_setIcon","_toggleHandle","findAncestorOfType","PacemBottomSheetElement","_bindToBottomSheet","_setHandle","id","uniqueCode","icon","iconGlyph","ic","_icon","_resizeHandler","_rebuildSwiperSnaps","_setPosition","_panHandler","snap","snaps","find","s","delta","pct","clamp","sqr","backdropFilter","toFixed","_swipeHandler","SwipeAnimationEnd","SwipeUpAnimationEnd","SwipeDownAnimationEnd","_assignLogger","_toggleSwiper","swiper","handle","handleSelector","_handleResizer","logger","_getSnap","sort","_resizer","Pan","resizer","handleResizer","naturalOffset","hY","hHeight","wHeight","openSnap","closedSnap","_getCssTransform","sheet","_sheet","transform","DialogButtons","DialogButton","DialogResultEventName","DialogResultEvent","CustomTypedEvent","PacemDialogBase","deferred","lb","lightbox","Promise","withResolvers","log","Logging","LogLevel","Warn","reject","show","promise","commit","btn","Debug","drevt","resolve","PacemButtonElement","PacemIterableElement","dataset","ev","commandName","CommandEvent","commandArgument","confirmationDialog","MouseEvent","confirmationMessage","then","Yes","Ok","PacemButtonsetElement","PacemIterativeElement","attributes","focus","validate","CalendarZoom","ViewDateChangeEvent","date","DateSelectEvent","TimeSelectEvent","MSECS_PER_HOUR","MSECS_PER_DAY","DAY_HOURS","DUMMY_DATE","Dates","dateOnly","valueOf","DAYS_OF_WEEK","PacemCalendarEventElement","PacemItemElement","cancelAnimationFrame","requestAnimationFrame","Datetime","CalendarEventSelectEvent","CalendarEventUnselectEvent","PacemCalendarBaseElement","PacemItemsContainerElement","_synchronizeWeek","oneventselect","event","oneventunselect","getHeaderLabel","Week","weekday","day","month","Day","parseDate","toLocaleString","lang","getDayLabel","getDate","getHourLabel","hour","getTimeLabel","minute","isNow","d0","getHours","isToday","isDate","isViewDay","vd","viewDate","expected","getMonth","getFullYear","isViewWeek","week","d1","isViewMonth","isTimeSlotDisabled","ranges","slotDate","floor","tz","getTimezoneOffset","slot","range","_getWeekStart","weekstart","dow","getDay","tget","toLowerCase","startsWith","_getDatasource","weekStart","ds","_d0","wk","dy","date1","filter","j","some","Eval","PacemCalendarWithEventsBaseElement","_datasource","_getSortedItems","slice","a_start","start","b_start","a_span","b_span","oldval","newval","buildDataSource","getWeeklyEventDataItems","lbound","wstart","wend","startDate","endDate","map","startIndex","endIndex","ndx0","ndx1","allDay","continuing","PacemAgendaElement","_allDayDatasource","zoom","dayValue","dayItems","evtStart","evtEnd","startHour","getMinutes","endHour","ceil","endNdx","fullSpan","allDayDatasource","clock","_clock","z","showClock","grid","whole","css","buildAgendaGrid","PacemCalendarElement","weekItems","_formatVersion","_setDate","labeler","dayLabelFormatter","buildCalendarGrid","PacemClockElement","PacemScheduleElement","_calendar","emitHandler","_agenda","Month","header","buildCalendarHeader","PacemCalendarRuleBaseElement","_disabledRanges","_target","findAncestor","node","refreshDisabledRanges","actualRanges","disabledRanges","computeDisabledRanges","PacemCalendarDayOfWeekRuleElement","_daysOfWeek","_calendarChangeHandler","PropertyChangeEventName","StringArray","PacemCollapseElement","PacemEventTarget","collapse","div","horizontal","PacemDialogElement","buttons","okCaption","yesCaption","noCaption","cancelCaption","OkCancel","dialogButtons","ok","yes","btns","_buttons","children","no","cancel","lastElementChild","PacemDividerElement","_syncOrientation","aria","SVG","FA","FA_CDN","LNI","COREUI","MATERIAL","MATERIAL_SYMBOLS","MATERIAL_SYMBOLS_CDN","URL","iconImportMemoizer","importConditionally","cssClassName","sha","crossOrigin","js","isClassDefined","importjs","importcss","PacemIconElement","test","regExcArray","exec","ligature","rest","substring","parts","trim","split","join","getIconMarkup","markup","innerHTML","PacemImageElement","_setSource","_setLayout","sizeDeclared","bgsize","adapt","naturalSize","backgroundSize","src","backgroundImage","loading","img","loadImage","weight","entries","entry","performance","getEntriesByName","decodedBodySize","naturalWidth","naturalHeight","match","PacemInfiniteScrollerElement","_scrollDelegate","_doScroll","_enabled","_viewportHeight","_innerHeight","_isDocument","_viewport","_scroller","_bottomGap","setInfiniteScrollContainer","cont","isDoc","documentElement","_emitFetchMore","_computeHeight","Document","pageYOffset","innerHeight","topOffset","MAX_VALUE","bottomOffset","clientHeight","eTopOffset","eBottomOffset","Window","LightboxBehavior","PacemAdaptedIterativeElement","isCloseTo","focusndx","_isCloseToCore","isPrevious","_isPreviousCore","isNext","_isNextCore","count","PacemLightboxElement","_keyupHandler","modal","_wrapperMousedownHandler","ExplicitClose","_slotchangeHandler","_resetLayout","_closeHandler","_close","_disposeButton","_ensureButton","_toggleCloseVisibility","closer","_closeWrapper","wrapper","_wrapperElement","_slot","wrap","inert","display","addPart","scroller","removePart","_disposeSlot","btnSlot","found","_lookForAButton","assignedElements","flatten","LoaderType","PacemLoaderElement","_svgSpinner","active","_spinner","Pacem","input","pattern","arr","MARKUP_RULES","raw","text","lexer","openingTag","closingTag","closingTagIndex","attributesIndex","attributesString","tokenize","output","Array","apply","C_LIKE_RULES","SCRIPT_RULES","TWITTER_RULE","rule","YOUTUBE_RULE","RULES_TO_HTML","token","MarkdownService","grammar","c_like_rules","script_rules","markup_rules","md","Compile","Markdown","Parser","_escape","replace","toHtml","PacemMarkdownElement","_md","html","tokens","value","PacemMarqueeElement","overlap","_css","createElement","head","_overlapResize","_contentResize","m","_marquee","speed","time","animationName","animationDuration","animationIterationCount","animationTimingFunction","PacemMediaQueryElement","_changeHandler","isMatch","matches","mql","_init","_broadcastChange","q","query","matchMedia","PacemMenuCursorElement_1","PacemMenuElement","synchronizeShell","_stopPropagationHandlerConditional","_base","offsetNav","offsetBase","_sync","_shell","findAncestorShell","outset","PacemMenuCursorElement","_onPathChange","menu","_menu","pathname","querySelectorAll","rect","rectMenu","PacemPagerElement","_databind","repeater","pages","total","mode","totpages","pageindex","startpageindex","endpageindex","last","PacemPictureSourceElement","picture","PacemPictureElement","refreshSources","label","_updateCurrentSrcHandler","currentSrc","_img","_setSources","_setAltText","_picture","sources","itemCount","source","insertBefore","srcset","media","tip","tooltip","alt","toObject","PacemProgressbarElement","valuemin","valuemax","valuenow","_bar","_glow","perc","leftPad","_caption","textContent","PacemSidebarElement","shell","PacemSlideElement","PacemSlideshowElement","PacemTweetEmbedElement","_scriptsLoaded","_render","tweetid","twttr","ready","tw","widgets","createTweet","StickyHeaderVisibility","PacemStickyHeaderElement","previousOffset","_scrollHandler","_ensureScrollAwareElement","PacemScrollAwareElement","ScrollEventName","_manageOffsetChange","Persistent","lastTop","QuickReturn","PACEM_TAB_FOCUS_CSS","StringOrNodePropertyConverter","Node","retryConversionWhenReady","PacemTabElement","_slotChangeHandler","_slotLabel","lbl","PacemTabsElement","_tweener","Animations","TweenService","assembled","outerHTML","_defaultTabAdapter","_tabs","_syncVisibility","getComputedStyle","padding","boxSizing","paddingTop","paddingBottom","tgetH","run","Easings","sineOut","adapter","_isUsingDefaultTabAdapter","PacemTickerElement","PacemSafeContentElement","_contentChangeHandler","_incoming","replaceChildren","newContent","_outgoing","_tickContent","safeContent","sanitize","_buildMarkupNode","tmpl","childNodes","assignedNodes","PacemToastElement_1","PACEM_TOAST_POPS","PacemToastElement","autohide","timeout","_doHide","waitForAnimationEnd","order","_show","toast","toaster","level","message","cssClass","isArray","callback","toast2","cssArray","Transformer","PacemTocElement","_items","_scrollToSelf","_scrollTo","_hashChange","hash","_observer","_observe","disconnect","MutationObserver","_onScroll","_update","observe","subtree","childList","_getTop","selector","tween","sineInOut","scrollTo","_startScrollTo","zero","current","innerText","hasContent","elements","initialTarget","TWO_PI","cartesian","cx","cy","theta","cos","sin","PacemTunerElement","_rotateStartHandler","angle","_getAngle","_rotate","minRotation","maxRotation","_setValue","_rotateEndHandler","_rotateHandler","rotation","rotate","_tween","RotateEventType","Rotate","_canvas","_toggleRotate","easing","random","canvas","_angleToValue","pow","angleValue","_valueToAngle","vertex","center","currentPosition","alpha","Angle","_rail","isNaN","rail","counterRail","_counterRail","isMin","isMax","mathPI2","large","counterFrom","counterTo","counterLarge","counterD","PacemVibrateElement","vibrate","navigator","ElementOrStringPropertyConverter","isConnected","PacemViewElement","_templateChangeHandler","tmplProxy","_setTmpl","_dispose","_manage","_isReference","_manageRef","PacemTemplateProxyElement","debounce","_fetchHandle","_manageUrl","HTMLTemplateElement","Error","_renderHandle","cloneNode","_dispatchRender","aborter","abort","signal","AbortController","fetch","async","manageYield","htmlPromise","status","followRedirects","renderErrors","_manageResult","contentLength","progress","received","chunks","reader","getReader","done","read","allChunks","Uint8Array","chunk","TextDecoder","decode","result","NaN","HANDLE_CSS","PacemWindowAreaElement","_zIndex","_startHandler","_incrementZIndex","_blurHandler","_focusHandler","currentTarget","_itemPropertyChangeHandler","_adapterPagerCallback","floating","PacemWindowElement","_behaviors","_dragDrop","_rescale","RescaleEventType","initialize","_syncLayout","minimized","DeepMerger","merge","Output"],"mappings":"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"}