@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.
- package/dist/browser/pacem-2d.js +3 -3
- package/dist/browser/pacem-2d.js.map +0 -5
- package/dist/browser/pacem-2d.min.js +3 -3
- package/dist/browser/pacem-2d.min.js.map +0 -5
- package/dist/browser/pacem-3d.js +341 -341
- package/dist/browser/pacem-3d.js.map +1 -6
- package/dist/browser/pacem-3d.min.js +3 -3
- package/dist/browser/pacem-3d.min.js.map +1 -6
- package/dist/browser/pacem-charts.js +3 -3
- package/dist/browser/pacem-charts.js.map +0 -5
- package/dist/browser/pacem-charts.min.js +3 -3
- package/dist/browser/pacem-charts.min.js.map +0 -5
- package/dist/browser/pacem-cms.js +107 -107
- package/dist/browser/pacem-cms.js.map +1 -6
- package/dist/browser/pacem-cms.min.js +3 -3
- package/dist/browser/pacem-cms.min.js.map +1 -6
- package/dist/browser/pacem-core.js +21 -7
- package/dist/browser/pacem-core.js.map +1 -6
- package/dist/browser/pacem-core.min.js +4 -4
- package/dist/browser/pacem-core.min.js.map +1 -6
- package/dist/browser/pacem-foundation.js +3 -3
- package/dist/browser/pacem-foundation.js.map +0 -5
- package/dist/browser/pacem-foundation.min.js +3 -3
- package/dist/browser/pacem-foundation.min.js.map +0 -5
- package/dist/browser/pacem-fx.js +19 -19
- package/dist/browser/pacem-fx.js.map +1 -6
- package/dist/browser/pacem-fx.min.js +3 -3
- package/dist/browser/pacem-fx.min.js.map +1 -6
- package/dist/browser/pacem-logging.js +3 -3
- package/dist/browser/pacem-logging.js.map +0 -5
- package/dist/browser/pacem-logging.min.js +3 -3
- package/dist/browser/pacem-logging.min.js.map +0 -5
- package/dist/browser/pacem-maps.js +3 -3
- package/dist/browser/pacem-maps.js.map +0 -5
- package/dist/browser/pacem-maps.min.js +3 -3
- package/dist/browser/pacem-maps.min.js.map +0 -5
- package/dist/browser/pacem-media.js +3 -3
- package/dist/browser/pacem-media.js.map +0 -5
- package/dist/browser/pacem-media.min.js +3 -3
- package/dist/browser/pacem-media.min.js.map +0 -5
- package/dist/browser/pacem-networking.js +3 -3
- package/dist/browser/pacem-networking.js.map +0 -5
- package/dist/browser/pacem-networking.min.js +3 -3
- package/dist/browser/pacem-networking.min.js.map +0 -5
- package/dist/browser/pacem-numerical.js +3 -3
- package/dist/browser/pacem-numerical.js.map +0 -5
- package/dist/browser/pacem-numerical.min.js +3 -3
- package/dist/browser/pacem-numerical.min.js.map +0 -5
- package/dist/browser/pacem-plus.js +77 -77
- package/dist/browser/pacem-plus.js.map +1 -6
- package/dist/browser/pacem-plus.min.js +3 -3
- package/dist/browser/pacem-plus.min.js.map +1 -6
- package/dist/browser/pacem-scaffolding.js +11 -8
- package/dist/browser/pacem-scaffolding.js.map +1 -6
- package/dist/browser/pacem-scaffolding.min.js +4 -4
- package/dist/browser/pacem-scaffolding.min.js.map +1 -6
- package/dist/browser/pacem-ui.js +37 -26
- package/dist/browser/pacem-ui.js.map +1 -6
- package/dist/browser/pacem-ui.min.js +4 -4
- package/dist/browser/pacem-ui.min.js.map +1 -6
- package/dist/bundle/pacem.min.mjs +40 -38
- package/dist/bundle/pacem.mjs +58 -32
- package/dist/bundle/pacem.mjs.map +2 -7
- package/dist/typings/index.d.ts +5 -3
- package/dist/vscode.html-custom.json +4834 -0
- 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-core.min.js","sources":["../esm/animations/easings.js","../esm/trees/deepcloner.js","../esm/trees/json.js","../esm/promise.js","../esm/utils.js","../esm/utils-customevent.js","../esm/events.js","../esm/animations/events.js","../esm/animations/tween-service.js","../esm/animations/timer.js","../esm/net/fetcher.js","../esm/net/http.js","../esm/ui/drag-drop.js","../esm/ui/rescale.js","../esm/ui/rotate.js","../esm/ui/swipe.js","../esm/adapter.js","../esm/types.js","../esm/prefix.js","../esm/template.js","../esm/utils-customelement.js","../esm/expression.js","../esm/logger.js","../esm/converters.js","../esm/comparers.js","../esm/decorators.js","../esm/eventtarget.js","../esm/components/basic/types.js","../esm/components/basic/adapter.js","../esm/components/basic/annihilator.js","../esm/components/basic/beforeunload.js","../esm/components/basic/broadcastchannel-proxy.js","../esm/components/basic/browser.js","../esm/storage.js","../esm/components/basic/data.js","../esm/components/basic/dock.js","../esm/components/basic/element-proxies.js","../esm/components/basic/event-proxy.js","../esm/components/basic/fetcher.js","../esm/components/basic/history.js","../esm/components/basic/html-proxy.js","../esm/components/basic/if.js","../esm/components/basic/items-container.js","../esm/components/basic/iterative.js","../esm/components/basic/layout-proxy.js","../esm/components/basic/meta-proxy.js","../esm/components/basic/online-status.js","../esm/components/basic/panel.js","../esm/command.js","../esm/components/basic/template-proxy.js","../esm/components/basic/repeater.js","../esm/components/basic/resize.js","../esm/components/basic/router.js","../esm/components/basic/scroll-aware.js","../esm/components/basic/serviceworker-proxy.js","../esm/components/basic/shortcut.js","../esm/components/basic/span.js","../esm/components/basic/style-proxy.js","../esm/components/basic/text.js","../esm/components/basic/timer.js","../esm/components/basic/title-proxy.js","../esm/components/basic/tweener.js","../esm/components/basic/viewport-aware.js","../esm/components/basic/webworker-proxy.js","../esm/components/behavior.js","../esm/components/behaviors/drag-drop.js","../esm/components/behaviors/rescale.js","../esm/components/behaviors/rotate.js","../esm/components/behaviors/swipe.js","../esm/components/animations/animation.js","../esm/components/animations/color-animation.js","../esm/components/animations/number-animation.js","../esm/components/animations/point-animation.js","../esm/components/animations/storyboard.js","../esm/defaults.js","../esm/regex.js","../esm/transforms.js","../esm/index-iife.js"],"sourcesContent":["// namespace Pacem.Animations {\n// TODO: Bezier\nconst pi_half = Math.PI * .5;\nconst EASINGS = {\n // t: normalized `current time` [0,1]\n linear: t => t,\n sineIn: t => Math.sin(t * pi_half - pi_half) + 1.0,\n sineOut: t => Math.sin(t * pi_half),\n sineInOut: t => .5 * Math.sin(t * Math.PI - pi_half) + .5,\n expoIn: t => (Math.pow(Math.E, t) - 1.0) / (Math.E - 1.0),\n expoOut: t => Math.log(t * (Math.E - 1.0) + 1.0),\n expoInOut: t => t < .5 ? .5 * Easings.expoIn(t * 2) : .5 * (1 + Easings.expoOut(t * 2 - 1.0))\n};\nfunction assembleEasing(fn, css) {\n const output = (t) => fn(t);\n output['css'] = css;\n return output;\n}\nexport const Easings = {\n linear: assembleEasing(EASINGS.linear, \"linear\"),\n sineIn: assembleEasing(EASINGS.sineIn, 'cubic-bezier(0.12, 0, 0.39, 0)'),\n sineOut: assembleEasing(EASINGS.sineOut, 'cubic-bezier(0.61, 1, 0.88, 1)'),\n sineInOut: assembleEasing(EASINGS.sineInOut, 'cubic-bezier(0.37, 0, 0.63, 1)'),\n // TODO: set correct pairing\n expoIn: assembleEasing(EASINGS.expoIn, 'cubic-bezier(0.7, 0, 0.84, 0)'),\n expoOut: assembleEasing(EASINGS.expoOut, 'cubic-bezier(0.16, 1, 0.3, 1)'),\n expoInOut: assembleEasing(EASINGS.expoInOut, 'cubic-bezier(0.87, 0, 0.13, 1)'),\n};\n//}\n","// namespace Pacem {\nexport class DeepCloner {\n constructor() {\n }\n static clone(obj) {\n return new DeepCloner()._clone(obj);\n }\n _clone(obj) {\n let seen = new WeakMap();\n function clone(obj) {\n if (typeof obj === 'object' && obj !== null\n && /* DOM elements won't be deep-cloned */ !(obj instanceof Element)\n && /* FileSystem API interfaces and File objects won't be deep-cloned */ !(obj instanceof FileSystemHandle) && !(obj instanceof File)) {\n if (Array.isArray(obj)) {\n return obj.map(clone);\n }\n else if (obj instanceof Date) {\n return new Date(obj.valueOf());\n }\n else if (obj instanceof RegExp) {\n return new RegExp(obj);\n }\n else {\n if (seen.has(obj)) {\n return seen.get(obj);\n }\n else {\n let shallow2Deep = Object.assign({}, obj);\n seen.set(obj, shallow2Deep);\n Object.keys(shallow2Deep).forEach(k => { shallow2Deep[k] = clone(obj[k]); });\n return shallow2Deep;\n }\n }\n }\n return obj;\n }\n return clone(obj);\n }\n}\n//}\n","import { DeepCloner } from './deepcloner';\nimport { Keys } from '@pacem/pacem-foundation';\n// namespace Pacem {\nconst REF_ID = '$refId';\n/** How functions get serialized. */\nexport var JsonFunctionConversion;\n(function (JsonFunctionConversion) {\n /** Skip functions (default). */\n JsonFunctionConversion[JsonFunctionConversion[\"Ignore\"] = 0] = \"Ignore\";\n /** Functions get referenced from a state in the current DOM. Not suitable for backups or long-term dehydrations. */\n JsonFunctionConversion[\"Reference\"] = \"reference\";\n /** Function gets stringified and then eval(uated) while dehydrating. Functions with a state (impure) might not working properly when used on the dehydrated side. */\n JsonFunctionConversion[\"Plain\"] = \"plain\";\n})(JsonFunctionConversion || (JsonFunctionConversion = {}));\n;\nclass JsonFnStore {\n static { this._jsonFnWeakMap = new WeakMap(); }\n static { this._jsonFnMap = new Map(); }\n static store(fn) {\n const weak = this._jsonFnWeakMap;\n if (!weak.has(fn)) {\n const key = Keys.uniqueCode();\n weak.set(fn, key);\n this._jsonFnMap.set(key, fn);\n }\n return weak.get(fn);\n }\n static retrieve(key) {\n return this._jsonFnMap.get(key);\n }\n static remove(key) {\n const fn = this.retrieve(key);\n this._jsonFnMap.delete(key);\n this._jsonFnWeakMap.delete(fn);\n }\n}\nexport class Json {\n constructor(_options) {\n this._options = _options;\n }\n static serialize(obj, options) {\n return new Json(options)._serialize(obj);\n }\n static deserialize(json) {\n return new Json()._deserialize(json);\n }\n _serialize(obj) {\n let clone = DeepCloner.clone(obj);\n let keys = [REF_ID];\n let flat = this._flatten(clone, 0, null, keys);\n return JSON.stringify(flat, keys.sort());\n }\n _deserialize(json) {\n let hasRefs = false;\n let obj = JSON.parse(json, (key, value) => {\n const elPattern = /^\\$<#(.+)>$/, fnPattern = /^\\$<fn:([^\\x05]+)>$/, // <- Firefox workaround for missing 's' flag implementation\n // fnPattern = /^\\$<fn:(.+)>$/s,\n regexPattern = /^\\$<regex:(.+)>$/, fnRefPattern = /^\\$<fn#(.+)>$/;\n let arr;\n if (key === REF_ID) {\n hasRefs = true;\n }\n else if (typeof value === 'string') {\n // regex?\n if ((arr = regexPattern.exec(value)) && arr.length > 1) {\n const regex = arr[1], lastPipe = regex.lastIndexOf('|');\n return new RegExp(regex.substr(0, lastPipe), regex.substr(lastPipe + 1));\n }\n // element?\n else if ((arr = elPattern.exec(value)) && arr.length > 1) {\n return document.getElementById(arr[1]);\n }\n else \n // function (flat)\n if ((arr = fnPattern.exec(value)) && arr.length > 1) {\n return eval(arr[1]);\n }\n else \n // function (ref)\n if ((arr = fnRefPattern.exec(value)) && arr.length > 1) {\n return JsonFnStore.retrieve(arr[1]);\n }\n }\n return value;\n });\n if (hasRefs) {\n return this._revive(obj);\n }\n return obj;\n }\n _flatten(obj, increment = 0, seen, keys) {\n seen = seen || new WeakSet();\n keys = keys || [];\n if (obj instanceof Element) {\n if (!obj.id) {\n return;\n }\n return `$<#${obj.id}>`;\n }\n else if (obj instanceof RegExp) {\n return `$<regex:${obj.source}|${obj.flags}>`;\n }\n else if (typeof obj === 'object' && obj != null && !(obj instanceof Date)) {\n if (Array.isArray(obj)) {\n return obj.map(i => this._flatten(i, increment, seen, keys));\n }\n else {\n // very object\n if (seen.has(obj)) {\n return (obj[REF_ID] = obj[REF_ID] || ('$#ref_' + (increment++)));\n }\n else {\n seen.add(obj);\n Object.keys(obj).forEach(k => {\n if (keys.indexOf(k) === -1) {\n keys.push(k);\n }\n obj[k] = this._flatten(obj[k], increment, seen, keys);\n });\n return obj;\n }\n }\n }\n else if (typeof obj === 'function') {\n switch (this._options?.functions) {\n case JsonFunctionConversion.Reference:\n const key = JsonFnStore.store(obj);\n return '$<fn#' + key + '>';\n case JsonFunctionConversion.Plain:\n return '$<fn:' + obj + '>';\n default:\n return undefined;\n }\n }\n return obj;\n }\n _revive(obj) {\n let hashTable = {};\n const refPattern = /^\\$#ref_(.+)$/;\n function revive(entity) {\n if (typeof entity === 'object' && entity !== null) {\n if (Array.isArray(entity)) {\n return entity.map(revive);\n }\n else {\n if (REF_ID in entity) {\n hashTable[entity[REF_ID]] = entity;\n delete entity[REF_ID];\n }\n Object.keys(entity).forEach(k => {\n entity[k] = revive(entity[k]);\n });\n }\n }\n else if (typeof entity === 'string' && refPattern.test(entity)) {\n let arr = refPattern.exec(entity);\n return hashTable[arr[0]];\n }\n return entity;\n }\n return revive(obj);\n }\n}\n//}\n","//namespace Pacem {\nexport class DeferPromise {\n constructor() {\n this.deferred = null;\n var me = this;\n me.promise = new Promise(function (resolve, reject) {\n me.deferred = { 'resolve': resolve, 'reject': reject, 'promise': me };\n });\n }\n then(onCompleted, onFailed) {\n return this.promise.then(onCompleted, onFailed);\n }\n /**\n * Occurs whenever the promise concludes (either after completion or error).\n * @param {Function } callback\n */\n finally(callback) {\n this.promise.then(callback, callback);\n return this;\n }\n success(callback) {\n this.promise.then(callback, null);\n return this;\n }\n error(callback) {\n this.promise.then(null, callback);\n return this;\n }\n static defer() {\n var q = new DeferPromise();\n return q.deferred;\n }\n}\n//}\n","import { Keys, Dates, Colors, Strings, Blobs, Imaging, NullChecker, detect } from '@pacem/pacem-foundation';\nimport { Json } from './trees/json';\nimport { DeepCloner } from './trees/deepcloner';\nimport { DeferPromise } from './promise';\n// namespace Pacem {\nconst PACEM_CORE_DEFAULT = 'pacem';\nconst DEFAULT_DOWNLOAD_FILENAME = 'download';\nexport const stopPropagationHandler = (evt) => {\n evt.stopPropagation();\n};\nexport const preventDefaultHandler = (evt) => {\n evt.preventDefault();\n};\nexport const avoidHandler = (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n};\nconst SEGMENT_PATTERN = /^\\/[^\\/]+/;\nconst ROUTE_SEGMENT_PATTERN = /\\/\\{([a-z\\$_][\\w]*)\\??\\}/;\nexport class Utils {\n static get core() {\n const root = window['Pacem'];\n var id = (root && root.Configuration && root.Configuration.core) || PACEM_CORE_DEFAULT;\n return window[id] = window[id] || {};\n }\n static get customElements() {\n return window['customElements'];\n }\n // #region GENERAL\n static uniqueId() {\n return Keys.uniqueId();\n }\n static uniqueCode() {\n return Keys.uniqueCode();\n }\n static randomString(length) {\n return Keys.randomString(length);\n }\n static parseDate(input) {\n return Dates.parse(input);\n }\n static copyToClipboard(input) {\n if (navigator.clipboard) {\n return navigator.clipboard.writeText(input);\n }\n // deprecated code branch\n return new Promise((resolve, reject) => {\n const el = document.createElement('textarea');\n el.value = input;\n el.style.opacity = \"0\";\n document.body.appendChild(el);\n try {\n el.select();\n document.execCommand('copy');\n el.remove();\n resolve();\n }\n catch (e) {\n reject(e);\n }\n });\n }\n // json-dedicated\n static { this.Json = {\n stringify: Json.serialize,\n parse: Json.deserialize\n }; }\n // dates-dedicated (moved to foundations, kept for backwards compat)\n static { this.Dates = {\n now: () => Utils.parseDate(Date.now()),\n parse: Utils.parseDate,\n isLeapYear: Dates.isLeapYear,\n daysInMonth: Dates.daysInMonth,\n /**\n * Gets whether a date is an `Invalid Date` or not.\n * @param date\n */\n isDate: Dates.isDate,\n dateOnly: Dates.dateOnly,\n addMonths: Dates.addMonths,\n addDays: Dates.addDays,\n daysBetween: Dates.daysBetween,\n }; }\n static colorize(elementOrRgb, rgb) {\n const hsl0 = /*Colors.hsl(Colors.parse('#000'))*/ { h: 38, s: .245, l: .6 };\n var realRgb, rgba, filter, element;\n if (elementOrRgb instanceof HTMLElement) {\n realRgb = rgb;\n }\n else {\n realRgb = elementOrRgb;\n }\n // rgba\n if (typeof realRgb === 'string') {\n rgba = Colors.parse(realRgb);\n }\n else {\n rgba = { r: realRgb[0], g: realRgb[1], b: realRgb[2] };\n }\n const hsl = Colors.hsl(rgba);\n filter = `brightness(50%) sepia(1) hue-rotate(${(hsl.h - hsl0.h)}deg) saturate(${(1.0 + (hsl.s - hsl0.s))}) brightness(${(1.0 + (hsl.l - hsl0.l))})`;\n if (realRgb === rgb) {\n element.style.filter = filter;\n }\n else {\n return filter;\n }\n }\n static cssEscape(input) {\n return escape(input).replace('%', '\\\\');\n }\n // css-dedicated\n static { this.Css = {\n colorize: Utils.colorize,\n escape: Utils.cssEscape,\n getVariableValue(name) {\n return getComputedStyle(document.documentElement).getPropertyValue(name);\n },\n setVariable(name, value) {\n getComputedStyle(document.documentElement).setProperty(name, value);\n },\n /**\n * Naive O(n^2) implementation for an actual css class presence (definition) in the current DOM.\n * @param name CSS class name\n */\n isClassDefined(name) {\n const pattern = new RegExp('\\.' + name + '($|[\\s\\.,])');\n for (let j = 0; j < document.styleSheets.length; j++) {\n const sheet = document.styleSheets.item(j);\n try {\n const rules = sheet.cssRules;\n for (let i = 0; i < rules.length; i++) {\n const rule = sheet.cssRules.item(i);\n if (pattern.test(rule.selectorText)) {\n return true;\n }\n }\n }\n catch (e) {\n if (e instanceof DOMException) {\n console.warn('Couldn\\'t access cssRules of stylesheet \"' + sheet.href + '\".');\n // console.error(e);\n }\n }\n }\n return false;\n },\n deserializeTransform(element) {\n const style = element instanceof Element ? getComputedStyle(element) : element;\n let a = 1, b = 0, c = 0, d = 1, x = 0, y = 0, matches = /^matrix\\((.*)\\)$/.exec(style.transform), mij;\n //matrix(1, 0, 0, 1, 2, 4) \n if (matches && matches.length > 1 && (mij = matches[1].split(',')).length == 6) {\n // scale + rot\n a = parseFloat(mij[0]);\n b = parseFloat(mij[1]);\n c = parseFloat(mij[2]);\n d = parseFloat(mij[3]);\n // transl\n x += parseFloat(mij[4]);\n y += parseFloat(mij[5]);\n }\n return { a: a, b: b, c: c, d: d, e: x, f: y };\n }\n }; }\n // #region strings\n // legacy\n static { this.leftPad = Strings.leftPad; }\n static { this.formatString = Strings.format; }\n static { this.diff = Strings.diff; }\n static { this.Strings = {\n leftPad: Strings.leftPad,\n format: Strings.format,\n diff: Strings.diff,\n stripHTML: (html) => {\n let doc = new DOMParser().parseFromString(html, 'text/html');\n return doc.body.textContent || '';\n }\n }; }\n // #endregion\n // #endregion\n // #region blob/files...\n static { this.Blobs = {\n toDataURL: Blobs.blobToDataURL,\n fromDataURL: Blobs.dataURLToBlob,\n toText: Blobs.blobToText,\n fromText: Blobs.textToBlob\n }; }\n static { this.Images = {\n load: Imaging.loadImage,\n resize: Imaging.resizeImage\n }; }\n static loadImage(src) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.src = src;\n if (img.complete) {\n resolve(img);\n }\n else {\n img.onload = (evt) => {\n resolve(img);\n };\n img.onerror = (evt) => {\n reject();\n };\n }\n });\n }\n static blobToDataURL(blob) {\n return Utils.Blobs.toDataURL(blob);\n }\n static dataURLToBlob(dataURL) {\n return Utils.Blobs.fromDataURL(dataURL);\n }\n static blobToText(blob, encoding) {\n return Utils.Blobs.toText(blob, encoding);\n }\n static textToBlob(content, type = 'text/plain') {\n return Utils.Blobs.fromText(content, type);\n }\n /** @deprecated Use {Utils.Images.resize}, instead.\n * Resizes an image when exceeding the provided size constraints.\n * @param img {Blob} Input image\n * @param maxWidth {number} Width constraint\n * @param maxHeight {number} Height constraint\n */\n static resizeImage(img, maxWidth, maxHeight, quality) {\n var deferred = DeferPromise.defer();\n Utils.blobToDataURL(img)\n .then(Utils.loadImage)\n .then(el => {\n const origWidth = el.width, origHeight = el.height;\n let cnv = document.createElement('canvas');\n cnv.width = origWidth;\n cnv.height = origHeight;\n let ctx = cnv.getContext('2d');\n //ctx.drawImage(el, 0, 0);\n if (origWidth > maxWidth\n || origHeight > maxHeight) {\n const origRatio = origWidth / origHeight, targetRatio = maxWidth / maxHeight;\n let targetHeight, targetWidth;\n if (targetRatio < origRatio) {\n targetWidth = maxWidth;\n targetHeight = maxWidth / origRatio;\n }\n else {\n targetHeight = maxHeight;\n targetWidth = maxHeight * origRatio;\n }\n cnv.width = targetWidth;\n cnv.height = targetHeight;\n const jpeg = quality > 0 && quality <= 1;\n if (jpeg) {\n ctx.fillStyle = '#000';\n ctx.fillRect(0, 0, cnv.width, cnv.height);\n }\n Utils.cropImageOntoCanvas(el, ctx);\n let newUrl;\n if (jpeg)\n newUrl = ctx.canvas.toDataURL(\"image/jpeg\", quality);\n else\n newUrl = ctx.canvas.toDataURL();\n deferred.resolve(Utils.dataURLToBlob(newUrl));\n }\n else {\n deferred.resolve(img);\n }\n }, _ => {\n // image loading error caught...\n });\n return deferred.promise;\n }\n /** @deprecated Use {Utils.Images.resize}, instead.\n * Crops an image having the provided url (might be a dataURL) into another having the provided size\n * @param url\n * @param width\n * @param height\n * @param ctx\n */\n static cropImage(url, width, height, quality) {\n var deferred = DeferPromise.defer();\n let el = new Image();\n el.crossOrigin = 'anonymous';\n el.onload = function (ev) {\n let cnv = document.createElement('canvas');\n let ctx = cnv.getContext('2d');\n if (width)\n cnv.width = width;\n if (height)\n cnv.height = height;\n //\n const jpeg = quality > 0 && quality <= 1;\n if (jpeg) {\n ctx.fillStyle = '#000';\n ctx.fillRect(0, 0, cnv.width, cnv.height);\n }\n Utils.cropImageOntoCanvas(el, ctx);\n deferred.resolve(jpeg ? cnv.toDataURL('image/jpeg', quality) : cnv.toDataURL());\n };\n el.src = url;\n return deferred.promise;\n }\n static getUserMediaFunctions() {\n var _getUserMedia = [];\n let methods = [navigator['getUserMedia'], navigator['webkitGetUserMedia'], navigator['msGetUserMedia'], navigator['mozGetUserMedia']];\n let fns = methods.filter(function (fn, j) { return typeof fn == 'function'; });\n if (fns.length)\n _getUserMedia = fns;\n return _getUserMedia;\n }\n /**\n * Crops the snapshot of a drawable element onto a provided canvas context. It gets centered in the area and cropped (`cover`-like behavior).\n * @param el drawable element\n * @param ctx canvas context\n * @param sourceWidth forced source width\n * @param sourceHeight forced source height\n */\n static cropImageOntoCanvas(el, ctx, sourceWidth, sourceHeight) {\n ctx.imageSmoothingEnabled =\n ctx['mozImageSmoothingEnabled'] =\n ctx['oImageSmoothingEnabled'] =\n ctx['webkitImageSmoothingEnabled'] =\n true;\n //\n let tgetW = ctx.canvas.width /*= parseFloat(scope.thumbWidth)*/;\n let tgetH = ctx.canvas.height /*= parseFloat(scope.thumbHeight)*/;\n let cnvW = tgetW, cnvH = tgetH;\n let w = sourceWidth || 1.0 * el.width, h = sourceHeight || 1.0 * el.height;\n //console.log('img original size: ' + w + 'x' + h);\n var ratio = w / h;\n var tgetRatio = tgetW / tgetH;\n if (tgetRatio > ratio) {\n // crop vertically\n var f = tgetW / w;\n tgetH = f * h;\n ctx.drawImage(el, 0, .5 * (-tgetH + cnvH), cnvW, tgetH);\n }\n else {\n // crop horizontally\n var f = tgetH / h;\n tgetW = f * w;\n ctx.drawImage(el, -Math.abs(.5 * (-tgetW + cnvW)), 0, tgetW, cnvH);\n }\n }\n static get _domURL() {\n return window.URL || window['webkitURL'] || window;\n }\n /**\n * Snapshots a DOM element and returns its blob image representation.\n * @param el Element to snapshot\n * @param background Background color to replace the original\n * @param type Output mimetype (image/png, image/jpeg, images/webp, ...)\n * @param quality Quality ratio between 0..1\n */\n static snapshotElement(el, background, type = 'image/png', quality) {\n function drawCanvas(img) {\n return new Promise((resolve, reject) => {\n const canvas = document.createElement('canvas'), width = img.width, height = img.height;\n if (!(width > 0)) {\n reject('Image has width zero.');\n }\n else if (!(height > 0)) {\n reject('Image has height zero.');\n }\n else {\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n if (!Utils.isNullOrEmpty(background)) {\n ctx.fillStyle = background;\n ctx.fillRect(0, 0, width, height);\n }\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(b => {\n resolve(b);\n }, type, quality);\n }\n });\n }\n if (el instanceof HTMLCanvasElement) {\n return drawCanvas(el);\n }\n return new Promise((resolve, _) => {\n const loadPromises = [];\n //#region utils functions\n function addLoadPromise(img) {\n const p = new Promise((resolve0, _) => {\n const getSrc = () => {\n return img instanceof HTMLImageElement ? img.src : img.href.baseVal;\n };\n const setSrc = (src) => {\n if (img instanceof HTMLImageElement)\n img.src = src;\n else {\n img.setAttribute('href', src);\n }\n };\n fetch(getSrc())\n .then(r => r.blob())\n .then(blob => Utils.blobToDataURL(blob))\n .then(url => {\n setSrc(url);\n resolve0();\n });\n });\n loadPromises.push(p);\n }\n function copyCanvas(copy, srcCanvas) {\n const p = new Promise((resolve0, _) => {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.width = srcCanvas.width;\n img.height = srcCanvas.height;\n img.style.cssText = copy.style.cssText;\n img.onload = () => {\n copy.replaceWith(img);\n resolve0();\n };\n img.src = srcCanvas.toDataURL();\n });\n loadPromises.push(p);\n }\n function applyCss(copy, src) {\n const css = getComputedStyle(src);\n for (let j = 0; j < css.length; j++) {\n const item = css.item(j);\n copy.style[item] = css[item];\n }\n }\n function recSetupCopy(copy, src) {\n // assign css text\n applyCss(copy, src);\n // bitmaps\n if (copy instanceof HTMLImageElement || copy instanceof SVGImageElement) {\n addLoadPromise(copy);\n }\n else if (copy instanceof HTMLCanvasElement) {\n copyCanvas(copy, src);\n }\n // recursion\n const childLength = copy.children.length;\n for (let i = 0; i < childLength; i++) {\n const copy1 = copy.children.item(i), src1 = src.children.item(i);\n if (copy1.tagName === src1.tagName) {\n recSetupCopy(copy1, src1);\n }\n }\n }\n //#endregion\n const isSvg = el instanceof SVGElement;\n if (!isSvg) {\n var doc = document.implementation.createHTMLDocument('');\n doc.write(el.outerHTML);\n doc.documentElement.setAttribute('xmlns', doc.documentElement.namespaceURI);\n const xpath = document.evaluate(\".//\" + el.localName, doc.body, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n const node = xpath;\n node.setAttribute('xmlns', doc.documentElement.namespaceURI);\n recSetupCopy(node, el);\n Promise.all(loadPromises).then(_ => {\n // Get well-formed markup\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", 'svg');\n const size = Utils.offset(el);\n svg.setAttribute('viewBox', `0 0 ${size.width} ${size.height}`);\n svg.setAttribute('width', size.width.toString());\n svg.setAttribute('height', size.height.toString());\n svg.innerHTML = `<foreignObject width=\"${size.width}\" height=\"${size.height}\">${node.outerHTML}</foreignObject>`;\n el = svg;\n execute();\n });\n }\n else {\n const svg = el.cloneNode(true);\n recSetupCopy(svg, el);\n Promise.all(loadPromises).then(_ => {\n el = svg;\n execute();\n });\n }\n function execute() {\n const data = new XMLSerializer().serializeToString(el);\n const img = new Image();\n img.crossOrigin = 'anonymous';\n // switching from blob to data url (see: https://bugs.chromium.org/p/chromium/issues/detail?id=294129)\n //const domURL = this._domURL;\n //var svg = new Blob([data], { type: 'image/svg+xml' });\n //var url = domURL.createObjectURL(svg);\n const url = 'data:image/svg+xml;charset=utf8,' + encodeURIComponent(data);\n img.onload = () => {\n drawCanvas(img).then(resolve);\n //domURL.revokeObjectURL(url);\n };\n img.src = url;\n }\n });\n }\n static async download(arg0, arg1, mime = \"application/download\") {\n if (typeof arg0 === 'string') {\n const url = arg0;\n let options = {}, filename;\n if (!Utils.isNullOrEmpty(arg1)) {\n if (typeof arg1 === 'object') {\n options = { credentials: arg1.credentials, headers: arg1.headers };\n filename = arg1.filename || filename;\n mime = arg1.mime || mime;\n }\n else {\n filename = arg1;\n }\n }\n var response = await fetch(url, options);\n if (response.ok) {\n if (Utils.isNullOrEmpty(filename)) {\n const headerName = 'Content-Disposition';\n if (response.headers.has(headerName)) {\n const header = response.headers.get(headerName), results = /^attachment; filename=\\\"?([^;\\\"]+)\\\"?(;|$)/.exec(header);\n if (results.length > 1) {\n filename = results[1];\n }\n }\n else {\n filename = DEFAULT_DOWNLOAD_FILENAME;\n }\n }\n var blob = await response.blob();\n const fn = filename.split(/[\\\\\\/]/g).join('_');\n return Utils.download(blob, fn);\n }\n {\n const reason = await response.text();\n throw new Error(reason);\n }\n }\n else {\n const content = arg0, filename = (typeof arg1 === 'string' && arg1) || DEFAULT_DOWNLOAD_FILENAME, fanchor = document.createElement('a');\n fanchor.setAttribute('href', Utils._domURL.createObjectURL(content));\n fanchor.setAttribute('download', filename);\n if (document.createEvent) {\n var event = document.createEvent('MouseEvents');\n event.initEvent('click', true, true);\n fanchor.dispatchEvent(event);\n }\n else {\n fanchor.click();\n }\n }\n }\n // #endregion\n // #region DOM\n static isDOMReady() {\n // Must exclude 'interactive' state since module script haven't been processed yet.\n return /* document.readyState === 'interactive' ||*/ document.readyState === 'complete';\n }\n static onDOMReady(listener) {\n //window.addEventListener('DOMContentLoaded', listener, false);\n // window 'load' event fires after 'DOMCOntentLoaded' since includes images load.\n window.addEventListener('load', listener, false);\n }\n /**\n * Moves all the source element children to the target element and returns them as an array of nodes.\n * @param source Source element.\n * @param target Target element.\n */\n static moveChildren(source, target) {\n return Utils.moveItems(source.childNodes, target);\n }\n /**\n * Moves specific nodes to the target element and returns them as an array of nodes.\n * @param nodes Nodes to move.\n * @param target Target element.\n */\n static moveItems(nodes, target) {\n let dom = [], ref;\n for (let j = nodes.length - 1; j >= 0; j--) {\n let item = nodes instanceof NodeList ? nodes.item(j) : nodes[j];\n target.insertBefore(item, ref);\n dom.unshift(item);\n ref = item;\n }\n return dom;\n }\n static is(el, selector) {\n return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector)\n .call(el, selector);\n }\n static lang(el) {\n return el.lang || document.documentElement.lang || navigator.language;\n }\n static jsonSortStringify(obj) {\n if (Utils.isNull(obj)) {\n return obj;\n }\n return Utils.Json.stringify(obj);\n }\n static { this.Browsers = {\n detect\n }; }\n static cookies(cookie) {\n const cookies = (cookie ?? document.cookie).split(';'), retval = {};\n for (var pair of cookies) {\n const keyval = pair.split('=');\n if (keyval.length < 2) {\n continue;\n }\n const key = (keyval[0] || '').trim(), value = (keyval[1] || '').trim();\n Object.defineProperty(retval, key, {\n configurable: false, enumerable: true, writable: false,\n value: decodeURIComponent(value.split('+').join(' '))\n });\n }\n return retval;\n }\n static { this.Cookies = {\n getAll: async (cookieName) => {\n const store = 'cookieStore' in window ? window.cookieStore : null;\n const retval = [];\n if (Utils.isNull(store)) {\n const nameValues = Utils.cookies();\n for (let name in nameValues) {\n if (!Utils.isNullOrEmpty(cookieName) && cookieName !== name) {\n continue;\n }\n retval.push({ name, value: nameValues[name] });\n }\n return retval;\n }\n else {\n return await store.getAll(cookieName);\n }\n },\n stringify: (data) => {\n let retval = `${data.name}=${encodeURIComponent(data.value ?? '')}`;\n if (!Utils.isNullOrEmpty(data.domain)) {\n retval += `; domain=${encodeURIComponent(data.domain)}`;\n }\n if (!Utils.isNullOrEmpty(data.path)) {\n retval += `; path=${encodeURIComponent(data.path)}`;\n }\n if (data.maxAge > 0) {\n retval += `; max-age=${data.maxAge.toFixed(0)}`;\n }\n if (!Utils.isNullOrEmpty(data.expires)) {\n retval += `; expires=${data.expires}`;\n }\n if (data.partitioned) {\n retval += '; Partitioned';\n }\n if (!Utils.isNullOrEmpty(data.sameSite)) {\n retval += `; SameSite=${encodeURIComponent(data.sameSite)}`;\n }\n if (data.secure) {\n retval += '; Secure';\n }\n return retval;\n }\n }; }\n static isVisible(el) {\n if ('checkVisibility' in el) {\n return el.checkVisibility({ checkOpacity: true, checkVisibilityCSS: true });\n }\n return getComputedStyle(el).visibility !== 'hidden' && (el.clientWidth > 0 || el.clientHeight > 0);\n }\n //#region classList DOMTokenList (css)\n static hasClass(el, className) {\n if (el.classList) {\n return el.classList.contains(className);\n }\n else {\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);\n }\n }\n static addClass(el, className) {\n const css = className.trim();\n if (el.classList) {\n DOMTokenList.prototype.add.apply(el.classList, css.split(' '));\n }\n else {\n el.setAttribute('class', el.className + ' ' + css);\n }\n }\n static removeClass(el, className) {\n const css = className.trim();\n if (el.classList) {\n DOMTokenList.prototype.remove.apply(el.classList, css.split(' '));\n }\n else {\n el.setAttribute('class', el.className.replace(new RegExp('(^|\\\\b)' + css.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' '));\n }\n }\n static toggleClass(el, className, on) {\n if (on) {\n Utils.addClass(el, className);\n }\n else {\n Utils.removeClass(el, className);\n }\n }\n //#endregion\n //#region part DOMTokenList (shadow-DOM)\n static hasPart(el, partName) {\n return el.part.contains(partName);\n }\n static addPart(el, partName) {\n DOMTokenList.prototype.add.apply(el.part, partName.trim().split(' '));\n }\n static removePart(el, partName) {\n DOMTokenList.prototype.remove.apply(el.part, partName.trim().split(' '));\n }\n static togglePart(el, partName, on) {\n if (on) {\n Utils.addPart(el, partName);\n }\n else {\n Utils.removePart(el, partName);\n }\n }\n //#endregion\n /**\n * Retrieve the bounding box of the provided element as of its rendered appearance on the stage (takes transformations into account).\n * @param el The element.\n */\n static offset(el) {\n var rect = el.getBoundingClientRect();\n return {\n top: Math.round(rect.top) + Utils.scrollTop,\n left: Math.round(rect.left) + Utils.scrollLeft,\n width: Math.round(rect.width),\n height: Math.round(rect.height)\n };\n }\n /**\n * Retrieve the bounding box of the provided element as of its rendered appearance on the stage (takes transformations into account).\n * @param el The element.\n */\n static offsetRect(el) {\n var rect = this.offset(el);\n return {\n y: rect.top,\n x: rect.left,\n width: rect.width,\n height: rect.height\n };\n }\n static naturalOffsetTop(el) {\n return (el?.offsetTop ?? 0) + ((el?.offsetParent && el.offsetParent instanceof HTMLElement) ? this.naturalOffsetTop(el.offsetParent) : 0);\n }\n static naturalOffsetLeft(el) {\n return (el?.offsetTop ?? 0) + ((el?.offsetParent && el.offsetParent instanceof HTMLElement) ? this.naturalOffsetLeft(el.offsetParent) : 0);\n }\n /**\n * Retrieve the natural bounding box of the provided element (does not takes transformations into account).\n * @param el {HTMLElement} The element.\n */\n static naturalOffset(el) {\n return { left: this.naturalOffsetLeft(el), top: this.naturalOffsetTop(el), width: el?.offsetWidth ?? 0, height: el?.offsetHeight ?? 0 };\n }\n /**\n * Retrieve the natural bounding box of the provided element (does not takes transformations into account).\n * @param el {HTMLElement} The element.\n */\n static naturalOffsetRect(el) {\n var rect = this.naturalOffset(el);\n return {\n y: rect.top,\n x: rect.left,\n width: rect.width,\n height: rect.height\n };\n }\n /** @deprecated */\n static deserializeTransform(obj) {\n return Utils.Css.deserializeTransform(obj);\n }\n static set scrollTop(y) {\n window.scrollTo(Utils.scrollLeft, y);\n }\n static set scrollLeft(x) {\n window.scrollTo(x, Utils.scrollTop);\n }\n static get scrollTop() {\n return window.scrollY /*window.pageYOffset*/ || document.documentElement.scrollTop || document.body.scrollTop || 0;\n }\n static get scrollLeft() {\n return window.scrollX /*window.pageXOffset*/ || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n }\n static get windowSize() {\n let win = window;\n return {\n width: win.innerWidth || win.document.documentElement.clientWidth || win.document.body.clientWidth || 0,\n height: win.innerHeight || win.document.documentElement.clientHeight || win.document.body.clientHeight || 0\n };\n }\n /**\n * Adds a callback at the end of a CSS animation/transition for a given element (execute once).\n * @param element The very element that has to trigger the animation/transitionend event.\n * @param callback Then callback.\n * @param timeout Fallback timeout (ms) in case the animation/transitionend event won't fire.\n */\n static addAnimationEndCallback(element, callback, timeout = 500) {\n const fn = (e) => {\n if (!e || e.target == element) {\n clearTimeout(handle);\n element.removeEventListener('animationend', fn, false);\n element.removeEventListener('transitionend', fn, false);\n callback.apply(this, [element]);\n }\n };\n element.addEventListener('animationend', fn, false);\n element.addEventListener('transitionend', fn, false);\n // fallback in case animation is missing\n const handle = setTimeout(fn, timeout);\n }\n /**\n * Promisifies the addAnimationEndCallback function.\n * @param element The very element that has to trigger the animation/transitionend event.\n * @param timeout Fallback timeout (ms) in case the animation/transitionend event won't fire.\n */\n static waitForAnimationEnd(element, timeout = 500) {\n return new Promise((resolve, _) => {\n Utils.addAnimationEndCallback(element, () => {\n resolve();\n }, timeout);\n });\n }\n /**\n * Waits until the provided timespan elapses.\n * @param msecs timespan in milliseconds\n */\n static idle(msecs) {\n return new Promise((resolve, _) => {\n setTimeout(() => resolve(), msecs);\n });\n }\n /**\n * Increases a callback loop call until cancelation is called.\n * @param callback Callback looped.\n * @param interval First callback call delay in ms (default 500).\n * @param pace Acceleration in ms per loop (default 5).\n * @param min Minimum loop rate in ms (default 20).\n *\n * Use case/example: while keeping a button pressed, the related callback execution increases in frequency.\n */\n static accelerateCallback(callback, interval = 500, pace = 5, min = 20) {\n let token = { cancel: false }, int = interval, last = pace + min;\n let fn = () => {\n callback(token);\n if (!token.cancel) {\n setTimeout(fn, int);\n if (int < last) {\n int = min;\n }\n else {\n int -= pace;\n }\n }\n };\n fn();\n }\n // #endregion\n // #region other\n static isEmpty(obj) {\n return NullChecker.isEmpty(obj) && !(obj instanceof Node);\n }\n static isNull(obj) {\n return NullChecker.isNull(obj);\n }\n // legacy\n static isArray(val) {\n return Array.isArray(val);\n }\n static isNullOrEmpty(val) {\n return Utils.isNull(val) || Utils.isEmpty(val);\n }\n /**\n * It is a `valueOf()` based comparison.\n * @param v1 term 1\n * @param v2 term 2\n */\n static areSemanticallyEqual(v1, v2) {\n // undefined and null are semantically equal\n v1 ??= null;\n v2 ??= null;\n const sv1 = v1 && v1.valueOf && v1.valueOf();\n const sv2 = v2 && v2.valueOf && v2.valueOf();\n return sv1 === sv2;\n }\n /** Legacy alias for Object.assign(). */\n static { this.extend = Object.assign; }\n static clone(obj) {\n if (obj === undefined)\n return undefined;\n return DeepCloner.clone(obj);\n }\n /** Legacy alias for Promise.resolve(). */\n static fromResult(v) {\n return Promise.resolve(v);\n }\n static fromResultAsync(task) {\n return new Promise(resolve => requestAnimationFrame(() => resolve(task())));\n }\n static readonlyCopy(obj) {\n if (Utils.isNull(obj)) {\n return null;\n }\n if (Utils.isArray(obj)) {\n const output = obj.slice(0);\n Object.freeze(output);\n return output;\n }\n else {\n const output = {};\n for (let name in obj) {\n output[name] = obj[name];\n }\n Object.freeze(output);\n return output;\n }\n }\n //#endregion\n //#region Net\n static { this.URIs = {\n format: function (url, parameters, removeMatchedParameters) {\n // replace segments\n for (let name in parameters || {}) {\n let tmpl = new RegExp(\"(^|\\\\/)\\\\{\" + name + \"\\\\??\\\\}(\\\\/|$)\");\n let arr = tmpl.exec(url);\n if (arr && arr.length) {\n let rpl = new RegExp(\"\\\\{\" + name + \"\\\\??\\\\}\"), ndx = arr.index;\n url = url.substring(0, ndx) + url.substring(ndx).replace(rpl, encodeURIComponent(parameters[name]));\n if (removeMatchedParameters) {\n delete parameters[name];\n }\n }\n }\n // clean-up optional\n const optPattern = /(^|\\/)\\{[\\w]+\\?\\}(\\/|$)/;\n var optArr;\n while ((optArr = optPattern.exec(url)) && optArr.length > 0) {\n let wholeMatch = optArr[0];\n url = url.replace(wholeMatch, wholeMatch.endsWith('/') ? \"/\" : \"\");\n }\n return url;\n },\n appendQuery: function (url, parameters, removeNullEntries = false, hash = false) {\n const char = hash ? '#' : '?', pattern = hash ? /#/ : /\\?/;\n const query = (pattern.test(url) ? '&' : char) +\n Object.keys(parameters)\n .filter(k => !Utils.isNull(parameters[k]) || !removeNullEntries)\n .map(k => encodeURIComponent(k) + '=' + encodeURIComponent(parameters[k] ?? '')).join('&');\n return url + (query.length > 1 ? query : '');\n },\n parseQuery: (query = window.location) => {\n if (typeof query !== 'string') {\n query = query.search;\n }\n const obj = {};\n new URLSearchParams(query).forEach((value, name) => {\n Object.defineProperty(obj, name, { enumerable: true, value });\n });\n return obj;\n },\n hasMandatoryTemplateSegments: function (url) {\n return /(^|\\/)\\{\\.*\\}(\\/|$)/.test(url);\n },\n parseRoute: function (pathTemplate) {\n let tmpl = pathTemplate;\n const trunks = [];\n if (!Utils.isNullOrEmpty(tmpl)) {\n let res;\n let j = 0;\n while ((res = SEGMENT_PATTERN.exec(tmpl)) != null) {\n const item = res[0];\n const res1 = ROUTE_SEGMENT_PATTERN.exec(item);\n if (!Utils.isNullOrEmpty(res1)) {\n const prop = res1[1];\n trunks.push({ name: prop, optional: item.charAt(item.length - 2) === '?', index: j });\n }\n tmpl = tmpl.substring(res.index + item.length);\n j++;\n }\n }\n return trunks;\n },\n split: function (url) {\n const URL_PATTERN = /^((https?:)?\\/\\/[^\\/]+)?([^\\?#]+)(\\?[^#]*)?(#[^#]*)?$/;\n const regArr = URL_PATTERN.exec(url);\n if (!regArr /*|| regArr.length <= 3*/) {\n return null;\n }\n return { domain: regArr[2] ?? '', protocol: regArr[1] ?? '', path: regArr[3] ?? '', query: regArr[4] ?? '', hash: regArr[5] ?? '' };\n },\n parseState: function (metadata, url, path, query, hash) {\n let fullPath = url;\n if (Utils.isNullOrEmpty(path)) {\n const split = Utils.URIs.split(url);\n path = split.path;\n if (Utils.isNullOrEmpty(query)) {\n query = split.query ?? '';\n }\n if (Utils.isNullOrEmpty(hash)) {\n hash = split.hash ?? '';\n }\n fullPath = path + query + hash;\n }\n const parseHash = (hash) => {\n const ndx = hash.indexOf('#');\n if (ndx !== 0) {\n return null;\n }\n return hash.substring(ndx + 1);\n };\n const parseQuery = (search) => {\n const ndx = search.indexOf('?');\n if (ndx === 0) {\n return Utils.URIs.parseQuery(search.substring(ndx + 1));\n }\n return {};\n };\n let obj = {\n $path: fullPath,\n $pathname: path,\n $querystring: query.length > 0 ? query.substring(1) : query,\n $query: parseQuery(query),\n $hash: parseHash(hash)\n }, i = 0;\n const tmpl = metadata.slice();\n if (!Utils.isNullOrEmpty(tmpl)) {\n let res;\n while ((res = SEGMENT_PATTERN.exec(path)) != null) {\n const v = res[0];\n const tmplIndex = tmpl.findIndex(t => t.index === i);\n if (tmplIndex >= 0) {\n const tmplItem = tmpl[tmplIndex];\n const { name: prop } = tmplItem;\n Object.defineProperty(obj, prop, { enumerable: true, value: v.substring(1) });\n // remove used value\n tmpl.splice(tmplIndex, 1);\n }\n i++;\n path = path.substring(res.index + v.length);\n }\n }\n for (let k = 0; k < tmpl.length; k++) {\n if (!tmpl[k].optional) {\n throw `Must provide \"${tmpl[k].name}\" route value.`;\n }\n }\n return obj;\n }\n }; }\n /**\n * Ensures the proper parsing of Web API results, including deprecated/legacy Pacem wrapped results.\n */\n static getApiResult(json) {\n if (typeof json === 'object'\n && !Utils.isNull(json)\n && json.hasOwnProperty('success')) {\n switch (json.success) {\n case true:\n if (json.hasOwnProperty('result')) {\n return json.result;\n }\n break;\n case false:\n if (json.hasOwnProperty('error')) {\n return null;\n }\n break;\n }\n }\n return json;\n }\n}\n// }\n","import { Utils } from './utils';\nexport var EventKeyModifier;\n(function (EventKeyModifier) {\n EventKeyModifier[\"AltKey\"] = \"Alt\";\n EventKeyModifier[\"CtrlKey\"] = \"Ctrl\";\n EventKeyModifier[\"ShiftKey\"] = \"Shift\";\n EventKeyModifier[\"MetaKey\"] = \"Cmd\";\n})(EventKeyModifier || (EventKeyModifier = {}));\nexport class CustomEventUtils {\n static isInstanceOf(evt, type) {\n return evt instanceof type;\n // || CustomElementUtils.getAttachedPropertyValue(evt, 'pacem:custom-event') === evt.type;\n }\n static getEventCoordinates(evt) {\n var src;\n if ('touches' in evt) {\n if (!Utils.isNullOrEmpty(evt.touches)) {\n src = evt.touches[0];\n }\n else if (!Utils.isNullOrEmpty(evt.changedTouches)) {\n src = evt.changedTouches[0];\n }\n }\n else {\n src = evt;\n }\n return {\n page: { x: src.pageX, y: src.pageY },\n screen: { x: src.screenX, y: src.screenY },\n client: { x: src.clientX, y: src.clientY }\n };\n }\n static getEventKeyModifiers(evt) {\n var which = evt.which;\n if (evt instanceof MouseEvent) {\n which = evt.button;\n }\n return {\n which: which, shiftKey: evt.shiftKey, altKey: evt.altKey, ctrlKey: evt.ctrlKey, metaKey: evt.metaKey\n };\n }\n static matchModifiers(evt, ...args) {\n const modifiers = !Utils.isNull(args) && (args.length === 1 && Utils.isArray(args[0]) ? args[0] : Array.from(args).filter(i => !Utils.isNullOrEmpty(i))), lowerCaseModifiers = (modifiers || []).map(i => i.toLowerCase());\n const altKey = lowerCaseModifiers.indexOf('alt') >= 0 || lowerCaseModifiers.indexOf('option') >= 0, shiftKey = lowerCaseModifiers.indexOf('shift') >= 0, ctrlKey = lowerCaseModifiers.indexOf('ctrl') >= 0, metaKey = lowerCaseModifiers.indexOf('win') >= 0 || lowerCaseModifiers.indexOf('cmd') >= 0;\n if (altKey !== evt.altKey\n || shiftKey !== evt.shiftKey\n || metaKey !== evt.metaKey\n || ctrlKey !== evt.ctrlKey) {\n return false;\n }\n return true;\n }\n static fixEdgeCustomEventSubClassInstance(evt, type) {\n // this an optimistic BUGGED workaround due to a damn' Edge bug: https://github.com/Microsoft/ChakraCore/issues/3952\n if (!(evt instanceof type)) {\n Object.setPrototypeOf(evt, type);\n }\n }\n}\n//}\n","/// <reference path=\"utils-customevent.ts\" />\nimport { Utils } from './utils';\nimport { CustomEventUtils } from './utils-customevent';\n// namespace Pacem {\nexport class CustomTypedEvent extends CustomEvent /* new in TypeScript v2.7.1 -> */ {\n constructor(type, detail, eventInit) {\n super(type, Utils.extend({ detail: detail }, eventInit || {}));\n CustomEventUtils.fixEdgeCustomEventSubClassInstance(this, this.constructor);\n }\n}\nfunction isEventInit(obj) {\n if ('detail' in obj) {\n // must provide a detail\n for (let prop in obj) {\n if (prop !== 'bubbles' && prop !== 'cancelable' && prop !== 'composed' && prop !== 'detail') {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n// TODO: make inherit from CustomTypedEvent\nexport class CustomUIEvent extends CustomEvent {\n constructor(type, detail, eventInit, orig) {\n super(type, Utils.extend((isEventInit(detail || {}) ? detail : { detail: detail }), (!(eventInit instanceof Event) && eventInit) || {}));\n const originalEvent = orig || eventInit;\n if (originalEvent instanceof Event) {\n this.#originalEvent = originalEvent;\n this.#modifiers = CustomEventUtils.getEventKeyModifiers(originalEvent);\n if (originalEvent instanceof MouseEvent || originalEvent instanceof TouchEvent) {\n this.#coords = CustomEventUtils.getEventCoordinates(originalEvent);\n }\n }\n CustomEventUtils.fixEdgeCustomEventSubClassInstance(this, this.constructor);\n }\n #originalEvent;\n #modifiers;\n #coords;\n get originalEvent() {\n return this.#originalEvent;\n }\n get which() {\n return this.#modifiers?.which;\n }\n get altKey() {\n return this.#modifiers?.altKey;\n }\n get shiftKey() {\n return this.#modifiers?.shiftKey;\n }\n get ctrlKey() {\n return this.#modifiers?.ctrlKey;\n }\n get metaKey() {\n return this.#modifiers?.metaKey;\n }\n get pageX() {\n return this.#coords?.page.x;\n }\n get pageY() {\n return this.#coords?.page.y;\n }\n get clientX() {\n return this.#coords?.client.x;\n }\n get clientY() {\n return this.#coords?.client.y;\n }\n get screenX() {\n return this.#coords?.screen.x;\n }\n get screenY() {\n return this.#coords?.screen.y;\n }\n}\nexport const AttributeChangeEventName = 'attributechange';\nexport class AttributeChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super(AttributeChangeEventName, args);\n }\n}\nexport const PropertyChangeEventName = 'propertychange';\nexport class PropertyChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super(PropertyChangeEventName, args);\n }\n}\n//}\n","import { CustomTypedEvent } from '../events';\nexport class AnimationEvent extends CustomTypedEvent {\n constructor(args) {\n super(\"step\", args);\n }\n}\nexport class AnimationEndEvent extends CustomEvent {\n constructor() {\n super('end');\n }\n}\nexport class AnimationStartEvent extends CustomEvent {\n constructor() {\n super('start');\n }\n}\n//}\n","//namespace Pacem.Animations {\nimport { Easings } from './easings';\nexport class TweenService {\n run(from, to, duration, delay = 0, easing = Easings.linear, callback = null) {\n return new Promise((resolve, _) => {\n const now = (performance && performance.now()) || Date.now();\n const start = now + Math.abs(delay || 0);\n const end = start + Math.abs(duration || 0);\n //\n const fn = () => {\n const t = (performance && performance.now()) || Date.now();\n if (t >= start && t < end) {\n const ct = (t - start) / duration;\n const v = from + (easing || Easings.linear)(ct) * (to - from);\n if (callback) {\n callback(ct, v);\n }\n }\n if (t < end) {\n requestAnimationFrame(fn);\n }\n else {\n if (callback) {\n callback(1.0, to);\n }\n resolve();\n }\n };\n fn();\n });\n }\n}\n//}\n","// namespace Pacem.Animations {\nexport class Timer {\n #fps;\n #callback;\n #handle;\n constructor(callback, fps) {\n this.#then = 0;\n this._run = (t) => {\n this.#handle = requestAnimationFrame(this._run);\n const now = performance.now(), fps = this.#fps;\n const delta = now - this.#then;\n if (delta >= fps) {\n this.#then = now - (delta % fps);\n this.#callback(t);\n }\n };\n this.#fps = 1000 / fps;\n this.#callback = callback;\n this.#handle = requestAnimationFrame(this._run);\n }\n #then;\n static run(callback, fps = 60) {\n return new Timer(callback, fps);\n }\n stop() {\n cancelAnimationFrame(this.#handle);\n }\n}\n;\n// }\n","//namespace Pacem.Net {\nexport var HttpMethod;\n(function (HttpMethod) {\n HttpMethod[\"Get\"] = \"GET\";\n HttpMethod[\"Post\"] = \"POST\";\n HttpMethod[\"Put\"] = \"PUT\";\n HttpMethod[\"Delete\"] = \"DELETE\";\n HttpMethod[\"Options\"] = \"OPTIONS\";\n HttpMethod[\"Head\"] = \"HEAD\";\n HttpMethod[\"Patch\"] = \"PATCH\";\n HttpMethod[\"Connect\"] = \"CONNECT\";\n HttpMethod[\"Trace\"] = \"TRACE\";\n})(HttpMethod || (HttpMethod = {}));\nexport const FetchResultEventName = 'fetchresult';\nexport const FetchErrorEventName = 'error';\nexport const FetchSuccessEventName = 'success';\nexport class Fetcher {\n static isEmpty(r) {\n return r.status === 204 || r.headers.get(\"Content-Length\") === \"0\";\n }\n}\n//}\n","/// <reference path=\"../promise.ts\" />\nimport { DeferPromise } from '../promise';\nimport { HttpMethod } from './fetcher';\n// namespace Pacem.Net {\nconst noop = () => { };\nexport class StatusCodeError extends Error {\n constructor(statusCode, statusText) {\n super(statusText);\n this.statusCode = statusCode;\n }\n get status() {\n return this.statusCode;\n }\n}\n/** @deprecated */\nexport class Response {\n constructor(req, processTime) {\n if (!req)\n return;\n this._status = req.status;\n this._body = req.response;\n this._text = req.responseText;\n this._type = req.responseType;\n this._allHeadersRaw = req.getAllResponseHeaders();\n this._processTime = processTime;\n }\n get processTime() {\n return this._processTime;\n }\n get headers() {\n if (this._headers === undefined && this._allHeadersRaw)\n this._parseHeaders();\n return this._headers;\n }\n get size() {\n return +this.headers['Content-Length'];\n }\n get mime() {\n return this.headers['Content-Type'];\n }\n get date() {\n return new Date(Date.parse(this.headers['Date']));\n }\n _parseHeaders() {\n let headers = {}, rows = this._allHeadersRaw.split('\\r\\n');\n rows.forEach(r => {\n if (r && r.length) {\n let index = r.indexOf(':');\n let key = r.substr(0, index).trim();\n let value = r.substr(index + 1).trim();\n headers[key] = value;\n }\n });\n this._headers = headers;\n }\n get status() { return this._status; }\n get text() { return this._text; }\n get content() { return this._body; }\n get type() { return this._type; }\n /**\n * Short-hand utility for getting or parsing json content (if any).\n */\n get json() {\n if (this._type === 'json')\n return this._body;\n else\n try {\n return JSON.parse(this._text);\n }\n catch (e) {\n return undefined;\n }\n }\n}\n/** @deprecated */\nexport class Http {\n constructor() { }\n /**\n * Executes an asynchronous XMLHttpRequest over the net.\n * @param {String} url - Base url to be requested.\n * @param {Object} [options] - Options for the request.\n * @param {Object} [options.data] - Data to be sent along.\n * @param {String} [options.method=GET] - HTTP Verb to be used.\n * @param {Object} [options.headers] - Key-value pairs of strings.\n * @param {Function} [options.progress] - Callback on retrieval progress.\n */\n request(url, options) {\n var _this = this;\n let deferred = DeferPromise.defer();\n options = options || { method: HttpMethod.Get };\n var method = options.method || HttpMethod.Get;\n var data = options.data || {};\n var progress = options.progress || noop;\n var headers = options.headers || {};\n if (_this.accessToken)\n headers['Authorization'] = 'Bearer ' + _this.accessToken;\n var req = new XMLHttpRequest();\n // send cookies?\n req.withCredentials = false;\n //\n req.addEventListener(\"progress\", (evt) => {\n if (evt.lengthComputable) {\n var pct = evt.loaded / evt.total;\n // callback\n if (typeof progress === 'function')\n progress.apply(_this, [pct]);\n }\n }, false);\n req.addEventListener(\"error\", (err) => {\n // Network error occurred\n deferred.reject(new StatusCodeError(500, err['message'] || 'Unknown error'));\n }, false);\n //req.addEventListener(\"abort\", transferCanceled, false);\n var stopWatch;\n req.addEventListener('load', () => {\n if (req.status >= 200 && req.status < 300) {\n // Resolve the promise with the response\n var response = new Response(req, Date.now() - stopWatch);\n deferred.resolve(response);\n }\n else\n deferred.reject(new StatusCodeError(req.status, req.statusText));\n }, false);\n var params;\n switch (method.toUpperCase()) {\n case HttpMethod.Get:\n url += (/\\?/.test(url) ? '&' : '?') + (typeof data == 'string' ? data : Object.keys(data).map(function (k) { return encodeURIComponent(k) + '=' + encodeURIComponent(data[k]); }).join('&'));\n break;\n case HttpMethod.Post:\n params = JSON.stringify(data);\n }\n //\n req.open(method, url, true);\n switch (method.toUpperCase()) {\n case HttpMethod.Get:\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n break;\n case HttpMethod.Post:\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n req.setRequestHeader('Content-Type', 'application/json');\n break;\n }\n for (var kvp in headers) {\n req.setRequestHeader(kvp, headers[kvp]);\n }\n //\n stopWatch = Date.now();\n req.send(params);\n return deferred.promise;\n }\n /**\n * Short-hand for 'GET' requests.\n */\n get(url, data, headers) {\n return this.request(url, { 'method': HttpMethod.Get, 'data': data, 'headers': headers || {} });\n }\n /**\n * Short-hand for 'POST' requests (content provided as json).\n */\n post(url, data, headers) {\n return this.request(url, { 'method': HttpMethod.Post, 'data': data, 'headers': headers || {} });\n }\n}\n//}\n","import { Point } from '@pacem/pacem-foundation';\nimport { Utils } from '../utils';\nimport { CustomUIEvent } from '../events';\n//namespace Pacem.UI {\nexport var DragDataMode;\n(function (DragDataMode) {\n /** Source element is dragged around (floater is the element itself so is the data). */\n DragDataMode[\"Self\"] = \"self\";\n /** The floater is an element clone, while data is the element itself. */\n DragDataMode[\"Alias\"] = \"alias\";\n /** The floater is a clone of the element, while data is a copy of it. */\n DragDataMode[\"Copy\"] = \"copy\";\n})(DragDataMode || (DragDataMode = {}));\nexport var DropBehavior;\n(function (DropBehavior) {\n /** Drag & drop task is meant to sort or swap items around. */\n DropBehavior[\"InsertChild\"] = \"insert\";\n /** Drag & drop task has no logical meaning. Event listeners might be in charge for a specific scenario. */\n DropBehavior[\"None\"] = \"none\";\n})(DropBehavior || (DropBehavior = {}));\nexport var DropTargetMissedBehavior;\n(function (DropTargetMissedBehavior) {\n /** Reverts to the last tracked spot. */\n DropTargetMissedBehavior[\"Revert\"] = \"revert\";\n /** Deletes item on spill-out. */\n DropTargetMissedBehavior[\"Remove\"] = \"remove\";\n /** No explicit behavior, might fallback to 'revert' when drop behavior is 'insert'. */\n DropTargetMissedBehavior[\"None\"] = \"none\";\n})(DropTargetMissedBehavior || (DropTargetMissedBehavior = {}));\nexport var DragDropEventType;\n(function (DragDropEventType) {\n /** Initial state change before first dragging act. */\n DragDropEventType[\"Init\"] = \"draginit\";\n /** First dragging act. */\n DragDropEventType[\"Start\"] = \"dragstart\";\n /** Any dragging act. */\n DragDropEventType[\"Drag\"] = \"drag\";\n /** Dropping act. */\n DragDropEventType[\"Drop\"] = \"drop\";\n /** Hovering a drop target. */\n DragDropEventType[\"Over\"] = \"dragover\";\n /** Exiting a drop target. */\n DragDropEventType[\"Out\"] = \"dragout\";\n /** Terminating the drag-drop activities. */\n DragDropEventType[\"End\"] = \"dragend\";\n})(DragDropEventType || (DragDropEventType = {}));\nclass DragDropEventArgsBaseClass {\n constructor(_builder) {\n this._builder = _builder;\n this.currentPosition = _builder.currentPosition;\n this.target = _builder.target;\n }\n get element() {\n return this._builder.element;\n }\n get origin() {\n return this._builder.origin;\n }\n get initialDelta() {\n return this._builder.initialDelta;\n }\n get startTime() {\n return this._builder.startTime;\n }\n get floater() {\n return this._builder.floater;\n }\n get delta() {\n var args = this;\n return Point.add(args.initialDelta, /* included in `initialDelta` for perf sake => { x: this._builder.scroll.left, y: this._builder.scroll.top },*/ Point.subtract(args.origin, args.currentPosition));\n }\n}\nexport class DragDropInitEventArgsClass extends DragDropEventArgsBaseClass {\n constructor(_builder) {\n super(_builder);\n this.placeholder = _builder.placeholder;\n this.data = _builder.data;\n }\n static fromArgs(builder) {\n return new DragDropInitEventArgsClass(Utils.extend({}, builder));\n }\n}\nexport class DragDropEventArgsClass extends DragDropEventArgsBaseClass {\n constructor(_builder, _placeholder = _builder.placeholder, _data = _builder.data) {\n super(_builder);\n this._placeholder = _placeholder;\n this._data = _data;\n }\n get placeholder() {\n return this._placeholder;\n }\n get data() {\n return this._data;\n }\n static fromArgs(builder) {\n return new DragDropEventArgsClass(Utils.extend({}, builder));\n }\n}\nexport class DragDropEvent extends CustomUIEvent {\n constructor(type, args, eventInit, evt) {\n super(type, args, eventInit, evt);\n }\n}\n//}\n","import { Utils } from '../utils';\nimport { CustomUIEvent } from '../events';\n//namespace Pacem.UI {\nexport var RescaleHandle;\n(function (RescaleHandle) {\n RescaleHandle[\"All\"] = \"all\";\n RescaleHandle[\"Top\"] = \"top\";\n RescaleHandle[\"Left\"] = \"left\";\n RescaleHandle[\"Right\"] = \"right\";\n RescaleHandle[\"Bottom\"] = \"bottom\";\n})(RescaleHandle || (RescaleHandle = {}));\nexport var RescaleEventType;\n(function (RescaleEventType) {\n RescaleEventType[\"Start\"] = \"rescalestart\";\n RescaleEventType[\"Rescale\"] = \"rescale\";\n RescaleEventType[\"End\"] = \"rescaleend\";\n})(RescaleEventType || (RescaleEventType = {}));\nexport class RescaleEventArgsClass {\n constructor(_builder) {\n this._builder = _builder;\n }\n get currentPosition() {\n return this._builder.currentPosition;\n }\n get targetRect() {\n return this._builder.targetRect;\n }\n get element() {\n return this._builder.element;\n }\n get handle() {\n return this._builder.handle;\n }\n static fromArgs(builder) {\n return new RescaleEventArgsClass(Utils.extend({}, builder));\n }\n}\nexport class RescaleEvent extends CustomUIEvent {\n constructor(type, args, eventInit, evt) {\n super(type, args, eventInit, evt);\n }\n}\n//}\n","import { Utils } from '../utils';\nimport { CustomUIEvent } from '../events';\nexport var RotateEventType;\n(function (RotateEventType) {\n RotateEventType[\"Start\"] = \"rotatestart\";\n RotateEventType[\"Rotate\"] = \"rotate\";\n RotateEventType[\"End\"] = \"rotateend\";\n})(RotateEventType || (RotateEventType = {}));\nexport class RotateEventArgsClass {\n constructor(_builder) {\n this._builder = _builder;\n }\n get currentPosition() {\n return this._builder.currentPosition;\n }\n get rotation() {\n return this._builder.rotation;\n }\n get element() {\n return this._builder.element;\n }\n get center() {\n return this._builder.center;\n }\n static fromArgs(builder) {\n return new RotateEventArgsClass(Utils.extend({}, builder));\n }\n}\nexport class RotateEvent extends CustomUIEvent {\n constructor(type, args, eventInit, evt) {\n super(type, args, eventInit, evt);\n }\n}\n//}\n","import { Utils } from '../utils';\nimport { CustomTypedEvent } from '../events';\nexport var SwipeEventType;\n(function (SwipeEventType) {\n SwipeEventType[\"Swipe\"] = \"swipe\";\n SwipeEventType[\"Pan\"] = \"pan\";\n SwipeEventType[\"SwipeLeft\"] = \"swipeleft\";\n SwipeEventType[\"SwipeRight\"] = \"swiperight\";\n SwipeEventType[\"SwipeUp\"] = \"swipeup\";\n SwipeEventType[\"SwipeDown\"] = \"swipedown\";\n // end of swipe animation\n SwipeEventType[\"SwipeAnimationEnd\"] = \"swipeanimationend\";\n SwipeEventType[\"SwipeLeftAnimationEnd\"] = \"swipeleftanimationend\";\n SwipeEventType[\"SwipeRightAnimationEnd\"] = \"swiperightanimationend\";\n SwipeEventType[\"SwipeUpAnimationEnd\"] = \"swipeupanimationend\";\n SwipeEventType[\"SwipeDownAnimationEnd\"] = \"swipedownanimationend\";\n})(SwipeEventType || (SwipeEventType = {}));\nexport class SwipeEventArgsClass {\n constructor(_builder) {\n this._builder = _builder;\n }\n get #isVertical() {\n const { verticalspeed, horizontalspeed, vertical } = this._builder;\n const isVertical = vertical ?? (Math.abs(horizontalspeed) < Math.abs(verticalspeed));\n return isVertical;\n }\n get direction() {\n return this.#isVertical\n ? (this._builder.verticalspeed > 0 ? 'down' : 'up')\n : (this._builder.horizontalspeed > 0 ? 'right' : 'left');\n }\n /** Speed in pixels/second, with sign. */\n get speed() {\n const { verticalspeed, horizontalspeed } = this._builder;\n return this.#isVertical ? verticalspeed : horizontalspeed;\n }\n /** Current offset relative to element's original position. */\n get delta() {\n const { position: { x, y }, t0: { position: { x: x0, y: y0 } } } = this._builder;\n return this.#isVertical\n ? y - y0\n : x - x0;\n }\n get flinging() {\n const { fling } = this._builder;\n return fling > 0 && Math.abs(this.speed) > fling;\n }\n /** Final offset (relative to element's original position) that takes release velocity into account. */\n get predictedDelta() {\n const inertia = this._builder.inertia ?? 8;\n return this.delta + this.speed / inertia;\n }\n /** Seconds to reach the final predicted position. */\n get predictedDuration() {\n const inertia = this._builder.inertia ?? 8;\n return -Math.log(.01 /* v/v0 where v ~ 0 <=> 1% of v0 */) / inertia;\n }\n get element() {\n return this._builder.element;\n }\n static fromArgs(builder) {\n return new SwipeEventArgsClass(Utils.extend({}, builder));\n }\n}\nexport class SwipeEvent extends CustomTypedEvent {\n constructor(type, args, eventInit) {\n super(type, args, eventInit);\n }\n}\n//}\n","import { CustomTypedEvent } from './events';\nexport class CurrentIndexChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super('currentindexchange', args);\n }\n}\n//}\n","/// <reference path=\"events.ts\" />\nexport const Type = Function;\n;\n// #region CONSTS\nexport const WATCH_PROPS_VAR = 'pacem:properties';\nexport const INSTANCE_BINDINGS_VAR = 'pacem:custom-element:bindings';\nexport const INSTANCE_HOST_VAR = 'pacem:custom-element:host';\nexport const INSTANCE_SCOPE_VAR = 'pacem:custom-element:scope';\n// #endregion\n//}\n","//namespace Pacem {\nvar root;\n/** the overall customelement prefix */\nexport const P = (root = window['Pacem'])?.Configuration?.prefix ?? 'pacem';\nexport const PCSS = root?.Configuration?.css ?? P;\n//}\n","//namespace Pacem {\nexport class TemplateElement extends HTMLElement {\n}\n//}\n","/// <reference path=\"expression.ts\" />\n/// <reference path=\"promise.ts\" />\n/// <reference path=\"prefix.ts\" />\n/// <reference path=\"trees/json.ts\" />\n/// <reference path=\"utils.ts\" />\nimport { Utils } from './utils';\nimport { INSTANCE_SCOPE_VAR, WATCH_PROPS_VAR, INSTANCE_HOST_VAR, INSTANCE_BINDINGS_VAR } from './types';\nimport { PCSS } from './prefix';\nimport { Expression } from './expression';\nimport { TemplateElement } from './template';\n// namespace Pacem {\nconst PACEM_BAG = '__pacem__';\n// {{ binding.expression }}\nconst bindingPattern = /^\\{\\{(.|\\n)+\\}\\}$/;\n// TODO: CSP-proof binding (no unsafe-eval)\n// binding syntax example: `{ binding: { source: ^item.property.path, binder: $pacem.func, parameters: [ ^index, 'foo', : host._baz], mode: 'twoway' } }`\nexport class CustomElementUtils {\n static get polyfilling() {\n return customElements instanceof window['CustomElementRegistry'];\n }\n static camelToKebab(camelCased) {\n return camelCased && camelCased.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n static kebabToCamel(kebabCased) {\n return kebabCased && kebabCased.replace(/(-[a-z])/g, (m) => {\n return m[1].toUpperCase();\n });\n }\n static getWatchedProperties(target, includeInherited = true) {\n var properties = [];\n var chain = target instanceof HTMLElement ? target.constructor : target;\n do {\n let additional = this.getAttachedPropertyValue(chain, WATCH_PROPS_VAR) || [];\n let pblic = additional.filter(p => !p.name.startsWith('_'));\n Array.prototype.splice.apply(properties, [0, 0].concat(pblic));\n } while (includeInherited && (chain = Object.getPrototypeOf(chain)));\n return properties;\n }\n static getWatchedProperty(target, name) {\n return this.getWatchedProperties(target, true).find(p => p.name === name);\n }\n static importjs(src, integrity = null, crossorigin = false) {\n var attrs = { 'type': 'text\\/javascript', 'src': src };\n if (!Utils.isNullOrEmpty(integrity))\n Utils.extend(attrs, { integrity: integrity });\n if (crossorigin)\n Utils.extend(attrs, { 'crossorigin': '' });\n return CustomElementUtils.import(src, 'script', attrs, (document.head || document.getElementsByTagName(\"head\")[0]));\n }\n static importcss(src, integrity = null, crossorigin = false) {\n var attrs = { 'rel': 'stylesheet', 'href': src };\n if (!Utils.isNullOrEmpty(integrity))\n Utils.extend(attrs, { integrity: integrity });\n if (crossorigin)\n Utils.extend(attrs, { 'crossorigin': 'anonymous' });\n return CustomElementUtils.import(src, 'link', attrs, (document.head || document.getElementsByTagName(\"head\")[0]));\n }\n static import(key, tagName, attrs, appendTo = document.body) {\n const _p = Utils.core;\n var _imports = _p['imports'] = _p['imports'] || {};\n return _imports[key] = _imports[key] || new Promise((resolve, reject) => {\n // try to find the equivalent element in the DOM\n var selector = tagName;\n for (let attr in attrs || {}) {\n selector += `[${attr}=\"${attrs[attr]}\"]`;\n }\n var script = document.querySelector(selector);\n if (!Utils.isNull(script)) {\n // best guess: since element was already there, it is hopefully fully loaded\n resolve(script);\n }\n else {\n script = document.createElement(tagName);\n script.onerror = e => {\n reject(e);\n };\n script.onload = () => {\n resolve(script);\n };\n for (var attr in (attrs || {})) {\n script.setAttribute(attr, attrs[attr]);\n }\n appendTo.appendChild(script);\n }\n });\n }\n static { this.Theme = {\n importWebFonts() {\n function cleanupQuotes(input) {\n // check if the string is wrapped around quotes to escape ';' chars\n if (/^('|\").*\\1$/.test(input)) {\n return input.substring(1, input.length - 1);\n }\n return input;\n }\n function downloadFont(fontFace) {\n return Utils.isNullOrEmpty(fontFace) ? Promise.resolve() : document.fonts.load('1rem ' + fontFace);\n }\n const promises = ['icons', 'std', 'main', 'tech', 'btn'].map(f => {\n const fontFace = Utils.Css.getVariableValue(`--${PCSS}-font-${f}`).split(',')[0];\n const url = cleanupQuotes(Utils.Css.getVariableValue(`--${PCSS}-font-${f}-api-url`));\n if (Utils.isNullOrEmpty(url)) {\n return downloadFont(fontFace);\n }\n else {\n return CustomElementUtils.importcss(url).then(_ => downloadFont(fontFace));\n }\n });\n const atLeast1FontFaceReady = new Promise((resolve) => {\n function check(count = 0) {\n // size against the specs: https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet/size#specifications\n if (count > 4 || !('size' in document.fonts) || typeof document.fonts.size === 'number' && document.fonts.size > 0) {\n document.fonts.ready.then(resolve);\n }\n else {\n setTimeout(check, 250, count++);\n }\n }\n check();\n });\n promises.push(atLeast1FontFaceReady);\n return Promise.all(promises);\n }\n }; }\n static setAttachedPropertyValue(target, name, value) {\n /*(target[PACEM_BAG] = target[PACEM_BAG] || {})[name] = value;*/\n if (Utils.isNull(target))\n return;\n const propKey = Object.getOwnPropertyDescriptor(target, PACEM_BAG);\n const bag = (propKey && propKey.value)\n || Object.defineProperty(target, PACEM_BAG, {\n value: {}, enumerable: false, writable: false, configurable: false\n })[PACEM_BAG];\n if (Utils.isNull(value))\n delete bag[name];\n else\n bag[name] = value;\n }\n static deleteAttachedPropertyValue(target, name) {\n CustomElementUtils.setAttachedPropertyValue(target, name, undefined);\n }\n static getAttachedPropertyValue(target, name, ensureValue) {\n const propKey = Object.getOwnPropertyDescriptor(target, PACEM_BAG), bag = propKey && propKey.value;\n if (Utils.isNull(bag && bag[name]) && !Utils.isNull(ensureValue)) {\n CustomElementUtils.setAttachedPropertyValue(target, name, ensureValue);\n return ensureValue;\n }\n return bag && bag[name];\n }\n /**\n * Resolves a dotted path into actual values.\n * @param path Dotted path\n * @param scope Root of the path\n */\n static resolvePath(path, scope) {\n if (!path || !scope)\n return undefined;\n if (/[\\(\\)\\{\\}]/.test(path))\n throw `Security alert: not allowed to process paths like ${path}.`;\n const trunks = path.split('.');\n var root = scope, ref = root, parent, core = trunks[0];\n trunks.forEach((t, i) => {\n var trunksSq = t.split('[');\n trunksSq.forEach((t2, j) => {\n parent = ref;\n if (/\\]$/.test(t2)) {\n t2 = t2.substring(0, t2.length - 1);\n if (/^('|\").+[^\\\\]\\1$/.test(t2)) {\n t2 = t2.substr(1, t2.length - 2);\n }\n }\n ref = ref[t2];\n });\n });\n var name, ndx;\n if (/\\]$/.test(path)) {\n ndx = path.lastIndexOf('[');\n name = path.substring(ndx + 1);\n name = name.substring(0, name.length - 1);\n }\n else {\n ndx = path.lastIndexOf('.');\n name = path.substring(ndx + 1);\n }\n return { target: { value: ref, name: name }, parent: { value: parent || scope, path: path.substring(0, ndx) }, root: { value: root, property: core } };\n }\n static set(element, path, value) {\n var obj = CustomElementUtils.resolvePath(path, element);\n var current = obj.target.value;\n if (current !== value) {\n if (obj.parent.value != obj.root.value /* nested property scenario */\n && !(obj.parent.value instanceof HTMLElement) /* and not targeting an HTMLElement (which will eventually fire autonomously) */) {\n // 1. set new value (won't fire 'propertychange' since it's a nested property)\n obj.parent.value[obj.target.name] = value;\n // 2. clone the resulting object (will be set as the new one at 4.)\n const set_val = Utils.clone(obj.root.value[obj.root.property]);\n // 3. reset to previous value (so that when 4. will trigger the 'propertychange' we'll have meaningful arguments)\n obj.parent.value[obj.target.name] = current;\n // repeater-item?\n let repItem;\n if (obj.root.property === 'item' && !Utils.isNull(repItem = RepeaterItem.getRepeaterItem(obj.root.value))) {\n // kind of ugly solution, I know. it works however...\n // trigger array update\n repItem.repeater && repItem.repeater.datasource && repItem.repeater.datasource.splice(repItem.index, 1, repItem.item = set_val);\n }\n else {\n // 4. force root property change\n obj.root.value[obj.root.property] = set_val;\n }\n }\n else {\n // parent === root, property change event fires automatically\n obj.parent.value[obj.target.name] = value;\n }\n }\n }\n static get(element, path) {\n var obj = CustomElementUtils.resolvePath(path, element);\n return obj && obj.target && obj.target.value;\n }\n /**\n * Works for unit-test contexts.\n * @param element\n */\n static _findScopeContextLegacy(element) {\n // old impl...\n let el = element;\n let retval;\n do {\n el = el.parentNode;\n } while (el != null && (el != (retval = element.ownerDocument) || (el instanceof HTMLElement && (retval = el.shadowRoot) != null)));\n //let logFn: (message?: string) => void;\n //if (retval == null && console && (logFn = console.debug))\n // logFn(`Element \"${element.constructor.name}\" isn't attached to any context yet.`);\n return retval;\n }\n static findScopeContext(element) {\n let retval = (element.isConnected) ?\n element.getRootNode()\n : CustomElementUtils.getAttachedPropertyValue(element, INSTANCE_SCOPE_VAR);\n return retval ?? /* in Jasmine TESTS `element.isConnected` always returns false (attached to #document-fragment) */ CustomElementUtils._findScopeContextLegacy(element);\n }\n static findAncestor(element, predicate) {\n let el = element;\n let retval;\n while (el && (el = el.parentNode || el.getRootNode()?.host) != null) {\n if (el['host'] instanceof HTMLElement)\n el = el['host'];\n if (predicate.apply(el, [el])) {\n retval = el;\n break;\n }\n }\n return retval;\n }\n static findAncestorShell(element) {\n return CustomElementUtils.findAncestor(element, el => Utils.is(el, `.${PCSS}-body`) || el === document.body);\n }\n static findAncestorOfType(element, ctor) {\n return CustomElementUtils.findAncestor(element, el => el instanceof ctor);\n }\n static findDescendants(element, predicate, firstOnly = false) {\n const walker = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT);\n var retval = [];\n while (walker.nextNode()) {\n let n = walker.currentNode;\n if (predicate(n) === true) {\n retval.push(n);\n if (firstOnly) {\n return retval;\n }\n }\n }\n return retval;\n }\n static findFirstDescendant(element, predicate) {\n const any = CustomElementUtils.findDescendants(element, predicate, true);\n return Utils.isNullOrEmpty(any) ? void 0 : any[0];\n }\n static findAll(selector = '[pacem]', filter = (e) => true) {\n const retval = [];\n document.querySelectorAll(selector).forEach((e, i, arr) => {\n if (filter(e) === true) {\n retval.push(e);\n }\n });\n return retval;\n }\n /**\n * To be used back again when Edge will allow Comment subclassing\n * https://github.com/Microsoft/ChakraCore/issues/2999 and https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12080908/\n * @param element\n * @param ctor\n * @param upLevels\n */\n static findPreviousSiblingOrAncestorOfType(element, ctor, upLevels = 0) {\n let el = element;\n let retval = null;\n let levels = 0;\n do {\n el = el.previousSibling || el.parentNode;\n if (el instanceof ctor) {\n if (levels >= upLevels) {\n retval = el;\n break;\n }\n else {\n el = el.parentNode;\n }\n levels++;\n }\n } while (el != null);\n return retval;\n }\n /**\n * To be removed when Edge will allow Comment subclassing\n * https://github.com/Microsoft/ChakraCore/issues/2999 and https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12080908/\n * @param element\n * @param predicate\n * @param upLevels\n */\n static findPreviousSiblingOrAncestor(element, predicate, upLevels = 0) {\n let el = element;\n let retval = null;\n let levels = 0;\n do {\n el = el.previousSibling || el.parentNode;\n if (el && predicate.apply(el, [el])) {\n if (levels >= upLevels) {\n retval = el;\n break;\n }\n else {\n el = el.parentNode;\n }\n levels++;\n }\n } while (el != null);\n return retval;\n }\n static assignHostContext(host, template) {\n // navigate through the DOM hierarchy\n const walker = document.createTreeWalker(template.content, NodeFilter.SHOW_ELEMENT + /* traverse templates' content */ NodeFilter.SHOW_DOCUMENT_FRAGMENT);\n while (walker.nextNode()) {\n var node = walker.currentNode;\n /*if (node instanceof HTMLTemplateElement)\n CustomElementUtils.assignHostContext(host, node);\n else*/ if (Utils.isNull(CustomElementUtils.getAttachedPropertyValue(node, INSTANCE_HOST_VAR))) {\n CustomElementUtils.setAttachedPropertyValue(node, INSTANCE_HOST_VAR, host);\n }\n }\n }\n static findHostContext(element) {\n let el = element;\n let retval;\n // not connected to the DOM? then exit and return undefined\n if (!el.isConnected) {\n return retval;\n }\n /*const root = element.getRootNode({ composed: false });\n if (root instanceof ShadowRoot) {\n return root.host as HTMLElement;\n }*/\n while (el != null) {\n retval = CustomElementUtils.getAttachedPropertyValue(el, INSTANCE_HOST_VAR);\n if (retval instanceof HTMLElement)\n break;\n el = el.parentElement;\n }\n let logFn;\n if (retval == null && console && (logFn = console.warn))\n logFn(`Element \"${element.constructor.name}\" isn't a descendant of a templated component.`);\n return retval;\n }\n static isBindingAttribute(attr) {\n /*if (/^\\s*\\{\\s*binding\\s+.*\\}\\s*$/.test(attr)) {\n\n // { binding ... } syntax\n var fn = attr.replace('binding', '').trim();\n fn = fn.substring(1, fn.length - 1);\n let twoway = /,\\s*twoway\\s*=\\s*true\\s*$/.test(fn);\n let commaNdx = fn.indexOf(',');\n if (commaNdx == -1)\n commaNdx = fn.length;\n var expression = Expression.parse(fn.substr(0, commaNdx), element);\n (expression && expression.dependencies).forEach(d => {\n d.twoway = d.twowayAllowed && twoway && expression.dependencies.length == 1;\n });\n return expression;\n }\n else*/\n return bindingPattern.test(attr);\n }\n static extractBindingAttributeExpression(attr) {\n if (CustomElementUtils.isBindingAttribute(attr)) {\n return attr.substr(2, attr.length - 4);\n }\n else {\n throw `Invalid attribute: incorrect binding syntax.`;\n }\n }\n static parseBindingAttribute(attr, element) {\n // loose syntax {{ ... }}\n let expression = CustomElementUtils.extractBindingAttributeExpression(attr);\n const arr = /,\\s*(twoway|once)\\s*$/.exec(expression), mode = arr && arr.length > 1 && arr[1];\n if (!Utils.isNullOrEmpty(mode)) {\n expression = expression.substr(0, expression.lastIndexOf(','));\n }\n var expr = Expression.parse(expression, element);\n (expr && expr.dependencies).forEach(d => {\n switch (mode) {\n case 'twoway':\n d.mode = (d.twowayAllowed && expr.dependencies.length == 1) ? 'twoway' : undefined;\n break;\n case 'once':\n d.mode = mode;\n break;\n }\n });\n return expr;\n }\n static ensureMember(o, name, attributes) {\n let original = Object.getOwnPropertyDescriptor(o, name);\n if (original != undefined)\n return original;\n Object.defineProperty(o, name, attributes);\n return Object.getOwnPropertyDescriptor(o, name);\n }\n /**\n * Strips all the observed attributes of an element and its descendants, in order to seal that dom branch and to avoid bindings evaluation.\n * @param element Input element\n */\n static stripObservedAttributes(element) {\n avoidObservedAttributes(element, false);\n }\n /**\n * Freezes all the observed attributes of an element and its descendants, in order to seal that dom branch and to avoid bindings evaluation.\n * @param element Input element\n */\n static freezeObservedAttributes(element) {\n avoidObservedAttributes(element);\n }\n}\nfunction avoidObservedAttributes(element, freeze = true) {\n const walker = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT);\n do {\n var node = walker.currentNode;\n if (node instanceof HTMLElement) {\n const attrs = node.constructor['observedAttributes'];\n if (!Utils.isNull(attrs)) {\n CustomElementUtils.deleteAttachedPropertyValue(node, INSTANCE_BINDINGS_VAR);\n let revertFn = function (v) {\n if (Utils.isArray(v)) {\n return '[' + v.map(revertFn).join(',') + ']';\n }\n if (v instanceof Element) {\n const vid = v.id = v.id || ('_' + Utils.uniqueCode());\n return `#${vid}`;\n }\n else {\n return `${Utils.Json.stringify(v)}`;\n }\n };\n for (var attr of attrs) {\n if (attr in node.attributes) {\n let prop;\n let val;\n if (freeze && !Utils.isNull(val = node[prop = CustomElementUtils.kebabToCamel(attr)])) {\n let reverted = revertFn(val);\n node.setAttribute(attr, `{{ ${reverted} }}`);\n }\n else\n node.removeAttribute(attr);\n }\n }\n }\n }\n } while (walker.nextNode());\n}\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst REPEATERITEM_PLACEHOLDER = 'pacem:repeater-item';\nexport class Repeater {\n /**\n * Seeks for a PacemRepeaterItem element upwards through the DOM tree, given a starting element and the number of nesting levels.\n * @param element {HTMLElement} Element to start the upward search from\n * @param Optional upLevels {Number} 0-based nesting level\n */\n static findItemContext(element, upLevels = 0, logFn = console.warn) {\n let retval = RepeaterItem.findUpwards(element, upLevels, logFn);\n if (retval == null && logFn && element instanceof HTMLElement && element['isConnected']) {\n logFn(`Couldn't find a ${RepeaterItem.name} up ${upLevels} level${((upLevels === 1) ? \"\" : \"s\")} from element \"${element.constructor.name}\".`);\n }\n return retval;\n }\n}\nexport class RepeaterItem {\n static findUpwards(element, upLevels = 0, logFn = console.warn) {\n if (Utils.isNull(element) || element.localName === 'template' || element instanceof /* template-like element? */ TemplateElement) {\n return null;\n }\n let item = null;\n let predicate = (node) => !Utils.isNull(item = RepeaterItem.getRepeaterItem(node));\n let retval = CustomElementUtils.findPreviousSiblingOrAncestor(element, predicate, upLevels);\n if (retval == null && logFn && element instanceof HTMLElement && element['isConnected']) {\n logFn(`Couldn't find a ${RepeaterItem.name} up ${upLevels} level${((upLevels === 1) ? \"\" : \"s\")} from element \"${element.constructor.name}\".`);\n }\n return item;\n }\n static isRepeaterItem(node) {\n return !Utils.isNull(GET_VAL(node, REPEATERITEM_PLACEHOLDER));\n }\n static getRepeaterItem(node) {\n return GET_VAL(node, REPEATERITEM_PLACEHOLDER);\n }\n constructor(_placeholder) {\n this._placeholder = _placeholder;\n SET_VAL(_placeholder, REPEATERITEM_PLACEHOLDER, this);\n }\n get placeholder() {\n return this._placeholder;\n }\n}\n// }\n","/// <reference path=\"types.ts\" />\n/// <reference path=\"utils.ts\" />\n/// <reference path=\"utils-customelement.ts\" />\nimport { DeferPromise } from './promise';\nimport { Utils } from './utils';\nimport { CustomElementUtils, Repeater } from './utils-customelement';\nconst CONTEXT_PREFIX = '__context_pacem';\n/** the following pattern matches:\n * -------------------------------\n * ciao \"a tutti \\\"quanti\\\" voi\" -> \"a tutti \\\"quanti\\\" voi\"\n * ciao 'a tutti \"quanti\" voi'+ mysel.value + 'e a nessun\\' altra' -> 'a tutti \"quanti\" voi'\n * 'e a nessun\\' altra'\n */\nconst stringPattern = /'(\\\\'|[^'])*[^\\\\]?'|\"(\\\\\"|[^\"])*[^\\\\]?\"/g;\n/** the following pattern matches:\n * -------------------------------\n * var l = new Date(); -> new\n * window.eval( -> window.\n * eval( -> eval(\n * eval ( -> eval (\n */\nconst safetyPattern = /[^\\w]new\\s|[^\\w]window\\s*[\\.\\[]|[^\\w]document\\s*\\.|[^\\w]eval\\s*\\(/;\n/** the following pattern matches:\n * -------------------------------\n * ^^^item.ciao -> ^^^item\n * !ciao.value -> !ciao.\n * :host.value -> :host.\n * ::child.prop -> ::child.\n * _connectTo(me.value) -> (me.\n * 009.ciao ->\n * this[that.value] -> [that.\n */\nconst variablePattern = /(^|[\\s\\(\\[\\+\\-\\*\\/!])(:host\\.|\\^+item[\\s\\.,;\\)\\]]|\\^+item$|\\^+index[^\\w\\.]|\\^+index$|\\$?this[\\.\\s$]?|#[a-zA-Z_][\\w]*|::[a-zA-Z_][\\w]*)/g;\n///** the following pattern tests:\n// * -------------------------------\n// * __context.$this.myself.value -> true\n// * !__context.myelem.value -> false\n// * fn(myelem.value) -> false\n// * $this == that -> false\n// * ...\n// */\n//const purePropertyPathPattern = /^[\\w\\.\\$]+/; \nexport class Expression {\n constructor() {\n this._pending = false;\n this._independent = false;\n }\n get dependencies() {\n return this._dependencies;\n }\n get functionBody() {\n return this._fnBody;\n }\n get voidBody() {\n return this._voidBody;\n }\n get pending() {\n return this._pending;\n }\n get independent() {\n return this._independent;\n }\n evaluate() {\n if (!this._fn) {\n this._fn = new Function('$pacem', CONTEXT_PREFIX, this._fnBody);\n }\n return this._fn.apply(null, [Utils.core, this._args]);\n }\n evaluateAsync() {\n const deferred = DeferPromise.defer();\n if (!this._fn) {\n this._fn = new Function('$pacem', CONTEXT_PREFIX, this._fnBody);\n }\n deferred.resolve(this._fn.apply(null, [Utils.core, this._args]));\n return deferred.promise;\n }\n evaluatePlus(args = {}) {\n if (!this._fn) {\n let argNames = [CONTEXT_PREFIX];\n for (var prop in args)\n argNames.push(prop);\n argNames.push('$pacem');\n this._fn = new Function(argNames.join(', '), this._voidBody);\n }\n let argValues = [].concat(this._args);\n for (var prop in args)\n argValues.push(args[prop]);\n argValues.push(Utils.core);\n return this._fn.apply(null, argValues);\n }\n static { this._pendingExpression = null; }\n static _getPendingExpressionSingleton() {\n if (Expression._pendingExpression == null) {\n let xpr = new Expression();\n xpr._pending = true;\n xpr._dependencies = [];\n Expression._pendingExpression = xpr;\n }\n return Expression._pendingExpression;\n }\n static parse(expression, element) {\n var context = CustomElementUtils.findScopeContext(element);\n var args = { '$this': element };\n var dependencies = [];\n var expr = '';\n var independent = true;\n //1. remove strings\n var strings = [], stringMatches, index = 0, trunks = [];\n while ((stringMatches = stringPattern.exec(expression)) != null) {\n trunks.push(expression.substr(index, stringMatches.index - index));\n let length = stringMatches[0].length;\n strings.push({ start: stringMatches.index, length: length });\n index = stringMatches.index + length;\n }\n if (index < expression.length)\n trunks.push(expression.substr(index, expression.length - index));\n //2. loop non string trunks\n // trunks.length >= strings.length (more precisely, the following statemente is always `true`:\n // trunks.length === strings.length || trunks.length === strings.length+1;\n for (var j = 0; j < trunks.length; j++) {\n let trunk = trunks[j];\n if (safetyPattern.test(trunk))\n throw `Unsafe expression detected: \"${trunk}\".`;\n if (context == null) {\n // context is null, means viewActivated event still to be fired.\n // check whether this is a constant expression (then no need to instantiate actual binding listeners)\n // or not.\n if (new RegExp(variablePattern).test(trunk) === true) {\n independent = false;\n break;\n }\n }\n else {\n let processedTrunk = trunk.replace(variablePattern, (mwhole, mstart, melem, index, input) => {\n independent = false;\n const cmpRef = `__host_pacem`;\n // default initialization := assumes `this`\n let retval = CONTEXT_PREFIX + '.$this' + (melem.endsWith('.') ? '.' : ''), el = element, dotIndex = input.indexOf('.', index), furtherParts = dotIndex > index ? input.substr(dotIndex + 1).trim() : '', pathRegexArray = /^[\\w\\.\\$]+/.exec(furtherParts), path = pathRegexArray && pathRegexArray.length > 0 && pathRegexArray[0], propArray, prop = path && (propArray = path.split('.')).length > 0 && propArray[0];\n if (melem === ':host.') {\n el = args[cmpRef] = args[cmpRef] || CustomElementUtils.findHostContext(element);\n retval = `${CONTEXT_PREFIX}.${cmpRef}.`;\n }\n else if (melem.endsWith('^item') || melem.substr(0, melem.length - 1).endsWith('^item')) {\n let lastChar = melem.endsWith('^item') ? '' : melem.substr(melem.length - 1, 1);\n let upLevels = melem.length - (lastChar.length > 0 ? 6 : 5); // 5 = 'item'.length + 1 (zero-based)\n let itemRef = `__item_${upLevels}_up_pacem`;\n let item = Repeater.findItemContext(element, upLevels);\n el = args[itemRef] = args[itemRef] || (item && item.placeholder);\n path = 'item' + (path ? ('.' + path) : '');\n prop = 'item';\n retval = `${CONTEXT_PREFIX}.${itemRef}.item${lastChar}`;\n }\n else if (melem.endsWith('^index') || melem.substr(0, melem.length - 1).endsWith('^index')) {\n let lastChar = melem.endsWith('^index') ? '' : melem.substr(melem.length - 1, 1);\n let upLevels = melem.length - (lastChar.length > 0 ? 7 : 6); // 6 = 'index'.length + 1 (zero-based)\n let itemRef = `__item_${upLevels}_up_pacem`;\n let item = Repeater.findItemContext(element, upLevels);\n el = args[itemRef] = args[itemRef] || (item && item.placeholder);\n path = 'index';\n prop = 'index';\n retval = `${CONTEXT_PREFIX}.${itemRef}.index${lastChar}`;\n }\n else if (melem.startsWith('::')) {\n let melem0 = melem.substr(2, melem.length - 2);\n let host = args[cmpRef] = args[cmpRef] || CustomElementUtils.findHostContext(element);\n if (!Utils.isNull(host)) {\n el = host[melem0];\n }\n else {\n el = null;\n }\n retval = `${CONTEXT_PREFIX}.${cmpRef}.${melem0}`;\n }\n else if (melem.startsWith('#')) {\n let melem0 = melem.substr(1, melem.length - 1);\n el = args[melem0] = args[melem0] || context.querySelector('#' + melem0);\n retval = `${CONTEXT_PREFIX}.${melem0}`;\n }\n // merge dependencies\n if (prop && el && prop in el\n // && it is not a direct method call (which means that the 'prop' isn't in fact a 'func')\n && typeof el[prop] !== 'function' //!isMethodCall \n // && does not already exist as a dependency\n && dependencies.find(d => d.element === el && d.property == prop) == null) {\n dependencies.push({ element: el, property: prop, path: path, twowayAllowed: false });\n }\n // return value\n return mstart + retval;\n });\n expr += processedTrunk;\n if (j < strings.length) {\n const s = strings[j];\n expr += expression.substr(s.start, s.length);\n }\n }\n }\n if (independent) {\n // constant expression\n var constexpr = new Expression();\n constexpr._independent = true;\n constexpr._fnBody = `return ${expression};`;\n constexpr._voidBody = expression;\n constexpr._dependencies = [];\n return constexpr;\n }\n if (context == null) {\n return this._getPendingExpressionSingleton();\n }\n // if some dependency elements aren't available yet, then postpone...\n for (var elem in args) {\n if (args[elem] == null)\n return Expression._getPendingExpressionSingleton();\n }\n if (dependencies.length == 1\n // := && trimmed expression contains only letters, figures, underscores, dots, and '$'...\n && /[^\\w\\.\\$]+/.test(expr.trim()) !== true) {\n // ...then 'twoway' binding might be applied/accepted\n dependencies[0].twowayAllowed = true;\n }\n var retexpr = new Expression();\n retexpr._args = args;\n retexpr._fnBody = `try{ var ___$$$r = ${expr}; return ___$$$r; }catch(e){ }`;\n retexpr._voidBody = `try{ ${expr} }catch(e){ }`;\n retexpr._dependencies = dependencies;\n return retexpr;\n }\n}\n// }\n","//namespace Pacem.Logging {\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"Trace\"] = \"trace\";\n LogLevel[\"Debug\"] = \"debug\";\n LogLevel[\"Warn\"] = \"warn\";\n LogLevel[\"Error\"] = \"error\";\n LogLevel[\"Info\"] = \"info\";\n LogLevel[\"Log\"] = \"log\";\n})(LogLevel || (LogLevel = {}));\n//}\n","/// <reference path=\"utils.ts\" />\nimport { Utils } from \"./utils\";\nimport { Point, Size, Rect } from '@pacem/pacem-foundation';\n;\nconst NonePropertyConverter = { convert: (attr) => undefined };\nconst StringPropertyConverter = {\n convert: (attr) => attr, convertBack: (prop) => prop\n};\nconst StringArrayPropertyConverter = {\n convert: (attr) => attr && attr.trim().split(/[ ,]+/), convertBack: (prop) => Utils.isArray(prop) && prop.join(' ') || ''\n};\nconst NumberPropertyConverter = {\n convert: (attr) => parseFloat(attr), convertBack: (prop) => prop.toString()\n};\nconst BooleanPropertyConverter = {\n convert: (attr) => !Utils.isNullOrEmpty(attr) && (attr !== '0') && (attr !== 'false'),\n convertBack: (prop) => (!!prop).toString()\n};\nconst BooleanStrictPropertyConverter = {\n convert: (attr) => attr === 'true' || attr === '1',\n convertBack: (prop) => (!!prop).toString()\n};\nconst DateTimePropertyConverter = {\n convert: (attr) => Utils.parseDate(attr),\n convertBack: (prop) => Utils.parseDate(prop).toISOString()\n};\nconst DatePropertyConverter = DateTimePropertyConverter;\nconst JsonPropertyConverter = {\n convert: (attr) => Utils.Json.parse(attr),\n convertBack: (prop) => Utils.Json.stringify(prop)\n};\nconst EvalPropertyConverter = {\n convert: (attr) => Function(`return ${attr};`).apply(null),\n convertBack: (prop) => undefined //JSON.stringify(prop)\n};\nconst ElementPropertyConverter = {\n convert: (attr) => document.querySelector(attr),\n convertBack: (prop) => (prop instanceof Element && prop.id) ? ('#' + prop.id) : undefined,\n retryConversionWhenReady: true\n};\nconst PointPropertyConverter = {\n convert: (attr) => Point.parse(attr),\n convertBack: (prop) => `${prop.x || 0} ${prop.y || 0}`\n};\nconst SizePropertyConverter = {\n convert: (attr) => Size.parse(attr),\n convertBack: (prop) => `${prop.width || 0} ${prop.height || 0}`\n};\nconst RectPropertyConverter = {\n convert: (attr) => Rect.parse(attr),\n convertBack: (prop) => `${prop.x || 0} ${prop.y || 0} ${prop.width || 0} ${prop.height || 0}`\n};\nexport const PropertyConverters /*: { [name: string]: PropertyConverter }*/ = {\n None: NonePropertyConverter,\n String: StringPropertyConverter,\n StringArray: StringArrayPropertyConverter,\n Number: NumberPropertyConverter,\n Boolean: BooleanPropertyConverter,\n BooleanStrict: BooleanStrictPropertyConverter,\n Date: DatePropertyConverter,\n Datetime: DateTimePropertyConverter,\n Json: JsonPropertyConverter,\n Eval: EvalPropertyConverter,\n Element: ElementPropertyConverter,\n // geom\n Point: PointPropertyConverter,\n Rect: RectPropertyConverter,\n Size: SizePropertyConverter,\n};\n//}\n","import { Utils } from './utils';\n/**\n * Default, and essentially ONLY, property comparer for equalitycheck\n * @param old value 1\n * @param val value 2\n */\nexport const DefaultComparer = (old, val) => Utils.areSemanticallyEqual(old, val);\n//}\n","import { WATCH_PROPS_VAR, INSTANCE_BINDINGS_VAR, INSTANCE_HOST_VAR } from './types';\nimport { P } from './prefix';\nimport { Utils } from './utils';\nimport { PropertyChangeEventName, PropertyChangeEvent, AttributeChangeEvent } from './events';\nimport { CustomElementUtils } from './utils-customelement';\nimport { Expression } from './expression';\nimport { DeferPromise } from './promise';\nimport { Http } from './net/http';\nimport { PropertyConverters } from './converters';\nimport { DefaultComparer } from './comparers';\n// #region CUSTOM ELEMENT\n//export const ViewActivatedEventName: string = 'viewactivate';\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst DEL_VAL = CustomElementUtils.deleteAttachedPropertyValue;\nconst WATCH_PROP_PREFIX = 'pacem:property:';\nconst WATCH_VERS_PROP = 'pacem:version';\nconst WATCH_BIND_PREFIX = 'pacem:binding:';\n//const WATCH_THROTTLE_PREFIX: string = 'pacem:throttle:';\nconst INSTANCE_CHILDREN_VAR = 'pacem:view-children';\nconst HAS_BIND_PREFIX = 'pacem:has-binding:';\nconst HAS_TEMPLATE_VAR = 'pacem:custom-element:has-template';\nconst HASBEEN_TEMPLATED_VAR = 'pacem:custom-element:has-templated';\nconst INSTANCE_PROMISE_VAR = 'pacem:custom-element:promise';\nconst INSTANCE_READY_VAR = 'pacem:custom-element:ready';\nconst INSTANCE_ONREADY_VAR = 'pacem:custom-element:startup';\n//const TYPE_OPTIONS_VAR = 'pacem:custom-element:options';\nfunction processBinding(element, property, binding) {\n var _this = element;\n const prop = property;\n const value = binding;\n // reset previous dependencies\n var deps = GET_VAL(_this, WATCH_BIND_PREFIX + prop);\n //var handleName = WATCH_THROTTLE_PREFIX + prop;\n deps && // reset previous dependencies\n deps.forEach(i => {\n //cancelAnimationFrame(GET_VAL(_this, handleName));\n i.dep.element.removeEventListener(PropertyChangeEventName, i.callback, false);\n });\n if (Utils.isNull(value) || GET_VAL(element, INSTANCE_READY_VAR) !== true) {\n DEL_VAL(_this, WATCH_BIND_PREFIX + prop);\n DEL_VAL(_this, HAS_BIND_PREFIX + prop);\n }\n else {\n if (value.pending) {\n SET_VAL(_this, WATCH_BIND_PREFIX + prop, []);\n }\n else {\n let mode = 'oneway'; // default\n switch (value.dependencies && value.dependencies.length && value.dependencies[0].mode) {\n case 'twoway':\n if ( /* extra-safety here: */value.dependencies.length == 1)\n mode = 'twoway';\n break;\n case 'once':\n mode = 'once';\n }\n SET_VAL(_this, HAS_BIND_PREFIX + prop, mode);\n const mapped = value.dependencies.map(d => {\n // gather changes and evaluate at `next frame` (?)\n var retval = {\n dep: d, callback: function (evt) {\n if (evt.detail.propertyName === d.property) {\n //cancelAnimationFrame(_this[handleName]);\n //_this[handleName] = requestAnimationFrame(() => {\n _this[prop] = value.evaluate /*Async*/() /*.then(val => {\n _this[prop] = val;\n })*/;\n //});\n }\n }\n };\n //try {\n d.element.addEventListener(PropertyChangeEventName, retval.callback, false);\n //} catch (ex) {\n // console.log(_this.outerHTML + '\\n' + d.property);\n // throw (ex);\n //}\n return retval;\n });\n SET_VAL(_this, WATCH_BIND_PREFIX + prop, mapped);\n _this[prop] = value.evaluate();\n }\n }\n}\nfunction retrieveTemplateAndWaitForDOMReady(config) {\n var deferred = DeferPromise.defer();\n const on_load = (tmpl) => {\n if (Utils.isDOMReady()) {\n deferred.resolve(tmpl);\n }\n else {\n Utils.onDOMReady((evt) => {\n deferred.resolve(tmpl);\n });\n }\n };\n //\n if (config.template) {\n on_load(config.template);\n }\n else if (config.templateUrl) {\n let http = new Http();\n http.get(config.templateUrl).success(r => {\n let tmpl = config.template = r.text;\n on_load(tmpl);\n return r;\n }).error(err => {\n console.error(err.message);\n on_load(null);\n });\n }\n else {\n on_load(null);\n }\n //\n return deferred.promise;\n}\nfunction retrieveDescendantTemplateActivationPromises(host, root) {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);\n var promises = [];\n while (walker.nextNode()) {\n var node = walker.currentNode;\n if (true === GET_VAL(node.constructor, HAS_TEMPLATE_VAR)) {\n var deferred = GET_VAL(node, INSTANCE_PROMISE_VAR, DeferPromise.defer());\n promises.push(deferred.promise);\n }\n }\n return promises;\n}\nexport const CustomElement = (config) => {\n return (target) => {\n // might be already registered\n if (Utils.customElements.get(config.tagName)) {\n console.warn(`${config.tagName} registration skipped, since already defined.`);\n return;\n }\n // retrieved watched properties (inherited included)\n var properties = CustomElementUtils.getWatchedProperties(target, true);\n SET_VAL(target, HAS_TEMPLATE_VAR, !(Utils.isNullOrEmpty(config.template) && Utils.isNullOrEmpty(config.templateUrl)));\n if (properties && properties.length > 0) {\n // attribute change whitelist\n const OBS_ATTR_PROP = 'observedAttributes';\n var extraObserved = [];\n if (target.hasOwnProperty(OBS_ATTR_PROP)) {\n extraObserved = target[OBS_ATTR_PROP].slice();\n delete target[OBS_ATTR_PROP];\n }\n // attributes to watch\n let attrs = extraObserved;\n for (var p of properties) {\n let a = CustomElementUtils.camelToKebab(p.name);\n attrs.unshift(a);\n }\n // set static `observedAttributes` property\n Object.defineProperty(target, OBS_ATTR_PROP, {\n get: function () {\n return attrs;\n },\n enumerable: true,\n configurable: false\n });\n }\n {\n const proto = target.prototype;\n // connectedCallback override\n const originalConnectedCallback = Object.getOwnPropertyDescriptor(proto, 'connectedCallback') || proto.connectedCallback;\n const originalViewActivatedCallback = Object.getOwnPropertyDescriptor(proto, 'viewActivatedCallback') || proto.viewActivatedCallback;\n Object.defineProperty(proto, 'connectedCallback', {\n value: function connectedCallback() {\n const _this = this;\n //console.log(`${_this.localName} connected.`);\n _this.setAttribute('pacem', '');\n _this.setAttribute('cloak', '');\n // reset INSTANCE_CHILDREN_VAR at connectedCallback\n DEL_VAL(_this, INSTANCE_CHILDREN_VAR);\n // ready to fire\n if (originalConnectedCallback && originalConnectedCallback.value)\n originalConnectedCallback.value.apply(_this, []);\n else if (typeof originalConnectedCallback == 'function')\n originalConnectedCallback.apply(_this);\n /*\n There's no guarantee that at this point in the element lifecycle its inner DOM has been processed.\n On the contrary, it is fairly likely it hasn't.\n If the element is statically declared on the page after the class declaration (.js file), then its innerHTML is empty for sure.\n **Any template relevant logic must be moved at a point in time when the DOM is fully loaded!**\n */\n retrieveTemplateAndWaitForDOMReady(config).then(tmpl => {\n // still connected?\n // check first!\n if (!_this.isConnected) {\n return;\n }\n var promises = [];\n // apply the template if not already applied(!!)...\n if (GET_VAL(_this, INSTANCE_READY_VAR) !== true\n // ...and if any.\n && !Utils.isNullOrEmpty(tmpl)\n && GET_VAL(_this, HASBEEN_TEMPLATED_VAR) != true) {\n SET_VAL(_this, HASBEEN_TEMPLATED_VAR, true);\n const element = _this, useShadowDOM = config.shadow, originalContent = document.createElement('template').content, currentContent = document.createElement('template'); // config.originalContent === true;\n if (!useShadowDOM) {\n for (var j = element.childNodes.length - 1; j >= 0; j--) {\n originalContent.insertBefore(element.childNodes.item(j), originalContent.firstChild);\n }\n }\n currentContent.innerHTML = tmpl;\n // use pacem-content as a placeholder, then `insertBefore`, then remove.\n const placeholders = currentContent.content.querySelectorAll(P + '-content');\n // assign host and create view activation promise\n CustomElementUtils.assignHostContext(_this, currentContent);\n // placeholder replacement.\n if (placeholders.length == 1) {\n const placeholder = placeholders.item(0);\n var ph = placeholder.nextSibling;\n const parent = placeholder.parentElement || currentContent.content;\n const nodes = originalContent.childNodes;\n parent.removeChild(placeholder);\n while (nodes.length > 0) {\n try {\n let node = nodes.item(0);\n parent.insertBefore(node, ph);\n //ph = node;\n }\n catch (e) {\n console.error(e.toString());\n }\n }\n }\n else if (placeholders.length > 1) {\n throw `There can only be at most 1 content placeholder inside a template.`;\n }\n var root;\n if (config.shadow) {\n root = element.attachShadow({ mode: 'open' /*, slotAssignment: 'named' (default) */ });\n root.appendChild(currentContent.content);\n }\n else {\n root = element;\n var currentChildren = currentContent.content.children;\n while (currentChildren.length > 0) {\n root.append(currentChildren.item(0));\n }\n }\n promises = retrieveDescendantTemplateActivationPromises(_this, root);\n }\n // flag as ready\n SET_VAL(_this, INSTANCE_READY_VAR, true);\n // retry with unresolved properties\n for (let property of properties) {\n const prop = property.name;\n const config = property.config;\n if (!config.converter.retryConversionWhenReady || !Utils.isNull(_this[prop])) {\n continue;\n }\n // check attr\n const attrName = CustomElementUtils.camelToKebab(prop), attr = _this.getAttribute(attrName);\n if (!Utils.isNullOrEmpty(attr) && !CustomElementUtils.isBindingAttribute(attr)) {\n // retry conversion\n _this[prop] = config.converter.convert(attr, _this);\n }\n }\n // execute todos (aka `reflect-backs` of prop values onto attr string values)\n const todos = (GET_VAL(_this, INSTANCE_ONREADY_VAR) || []);\n todos.forEach(todo => {\n todo.apply(_this);\n });\n //\n const pendingBindings = (evt) => {\n // re-evaluate pending expressions...\n var bindings = (GET_VAL(_this, INSTANCE_BINDINGS_VAR) || []);\n bindings.forEach(attrName => {\n const attrNameBind = attrName;\n if (!(attrNameBind in _this.attributes)) {\n throw `Howcome? ${attrNameBind} not in ${_this.constructor.name} attributes!?...`;\n }\n const attrValueBind = _this.attributes[attrNameBind].value;\n // still a binding attribute? (might have changed its shape while pending...)\n if (CustomElementUtils.isBindingAttribute(attrValueBind)) {\n var expr = CustomElementUtils.parseBindingAttribute(attrValueBind, _this);\n processBinding(_this, CustomElementUtils.kebabToCamel(attrName), expr);\n }\n });\n };\n //...now that the document is ready:\n pendingBindings();\n const fireViewActivated = (evt) => {\n //(<HTMLElement>_this).dispatchEvent(new Event(ViewActivatedEventName));\n if (originalViewActivatedCallback && originalViewActivatedCallback.value)\n originalViewActivatedCallback.value.apply(_this, []);\n else if (typeof originalViewActivatedCallback == 'function')\n originalViewActivatedCallback.apply(_this);\n var deferred = GET_VAL(_this, INSTANCE_PROMISE_VAR);\n if (!Utils.isNull(deferred))\n deferred.resolve();\n };\n _this.removeAttribute('cloak');\n //...now that the document is ready:\n // fire original viewActivatedCallback\n // when all the descendant templated elements have already fired\n Promise.all(promises)\n .then(_ => fireViewActivated());\n });\n }, configurable: true, enumerable: true\n });\n // disconnectedCallback override\n const originalDisconnectedCallback = Object.getOwnPropertyDescriptor(proto, 'disconnectedCallback') || proto.disconnectedCallback;\n Object.defineProperty(proto, 'disconnectedCallback', {\n value: function disconnectedCallback() {\n const _this = this;\n // 1. dispose as of dev's desires\n if (originalDisconnectedCallback && originalDisconnectedCallback.value)\n originalDisconnectedCallback.value.apply(_this, []);\n else if (typeof originalDisconnectedCallback === 'function')\n originalDisconnectedCallback.apply(_this, []);\n // 2. dismantle everything\n SET_VAL(_this, INSTANCE_READY_VAR, false);\n // re-evaluate pending expressions (in order to dismiss them, having the element `disconnected`)\n const bindings = (GET_VAL(_this, INSTANCE_BINDINGS_VAR) || []);\n bindings.forEach(attrName => {\n processBinding(_this, CustomElementUtils.kebabToCamel(attrName) /*, expr*/);\n });\n }, configurable: true, enumerable: true\n });\n // watchify attributes\n const originalAttributeChangedCallback = Object.getOwnPropertyDescriptor(proto, 'attributeChangedCallback') || proto.attributeChangedCallback;\n Object.defineProperty(proto, 'attributeChangedCallback', {\n value: function attributeChangedCallback(name, old, val) {\n const _this = this;\n const ready = GET_VAL(_this, INSTANCE_READY_VAR) === true;\n /*\n attributeChangedCallback has to fire BEFORE propertyChangedCallback IN THIS CASE\n */\n if (originalAttributeChangedCallback && originalAttributeChangedCallback.value)\n originalAttributeChangedCallback.value.apply(_this, [name, old, val]);\n else if (typeof originalAttributeChangedCallback === 'function')\n originalAttributeChangedCallback.apply(_this, [name, old, val]);\n // dispatch custom event 'attributechange'\n const evt = new AttributeChangeEvent({ attributeName: name, oldValue: old, currentValue: val, firstChange: !ready });\n _this.dispatchEvent(evt);\n // binding attribute?\n const binding = CustomElementUtils.isBindingAttribute(val);\n const plainAttrName = name;\n const prop = CustomElementUtils.kebabToCamel(plainAttrName);\n // when module scripts (esm) are involved you're at risk trying to process bindings too early, causing errors when - for instance - global variables are referenced.\n // nevertheless, setting moduleProofBindings to `true` prevents early attribute evaluation with startup issues\n // let's keep it false (legacy bheavior)\n const moduleProofBindings = false; // TODO: allow to configure\n if (binding) {\n let value = CustomElementUtils.parseBindingAttribute(val, _this);\n if (value instanceof Expression) {\n if (value.independent && !moduleProofBindings) {\n // constant expression, just assign its value\n _this[prop] = value.evaluate();\n processBinding(_this, prop /* remove eventual old bindings */);\n }\n else {\n var bindings = GET_VAL(_this, INSTANCE_BINDINGS_VAR, []);\n bindings.push(plainAttrName);\n if (!value.pending) {\n processBinding(_this, prop, value);\n }\n }\n }\n else {\n throw `Howcome? ${val} misinterpreted as ${plainAttrName} binding...`;\n }\n }\n else {\n // retrieve property type and cast coherently...\n var property = properties.find(p => p.name === prop);\n if (!Utils.isNull(property)) {\n processBinding(_this, prop /* remove eventual old bindings */);\n // eventual retry at Ln.289\n _this[prop] = property.config.converter.convert(val, _this);\n }\n }\n }, configurable: true, enumerable: true\n });\n // watchify properties\n const originalPropertyChangedCallback = Object.getOwnPropertyDescriptor(proto, 'propertyChangedCallback') || proto.propertyChangedCallback;\n Object.defineProperty(proto, 'propertyChangedCallback', {\n value: function propertyChangedCallback(name, old, val, firstChange, options) {\n const _this = this;\n const ready = GET_VAL(_this, INSTANCE_READY_VAR) === true;\n const todo = () => {\n const bindingType = GET_VAL(_this, HAS_BIND_PREFIX + name);\n /*\n propertyChangedCallback has to fire BEFORE attributeChangedCallback in this case\n */\n if (originalPropertyChangedCallback && originalPropertyChangedCallback.value)\n originalPropertyChangedCallback.value.apply(_this, [name, old, val, !ready]);\n else if (typeof originalPropertyChangedCallback === 'function')\n originalPropertyChangedCallback.apply(_this, [name, old, val, !ready]);\n // dispatch custom event 'propertychange'\n if (!options || options.emit !== false) {\n const evt = new PropertyChangeEvent({ propertyName: name, oldValue: old, currentValue: val, firstChange: !ready });\n _this.dispatchEvent(evt);\n }\n if (Utils.isNullOrEmpty(bindingType) /* reflect to attribute only if this is not a binding property... */) {\n var property = properties.find(p => p.name === name);\n if (options\n && options.reflectBack === true\n && /* not polyfilled */ !CustomElementUtils.polyfilling) {\n var attrName = CustomElementUtils.camelToKebab(name), attr = _this.attributes.getNamedItem(attrName);\n // reflectBack only when ready (or you'll lose eventual bindings for attributes with default non-undefined value):\n // e.g. see `autofetch` property for `PacemFetchElement`\n if (ready\n // Allow to reflectBack proprties onto attributes also if the element isn't ready yet,\n // put proved to have relevant attribute empty. (e.g. some widget utils like `PacemWidgetFetchParameterElement` need this)\n || Utils.isNullOrEmpty(attr)) {\n var config;\n if (val === undefined || val === null) {\n _this.removeAttribute(attrName);\n }\n else if (property && (config = property.config) && typeof config.converter.convertBack === 'function') {\n const sval = config.converter.convertBack(val, _this);\n /* ...and the values are different */\n if (attr == null || sval !== attr.value)\n _this.setAttribute(attrName, sval);\n }\n }\n }\n }\n else if (bindingType === 'twoway') {\n const binding = GET_VAL(_this, WATCH_BIND_PREFIX + name)[0].dep;\n CustomElementUtils.set(binding.element, binding.path, val);\n }\n else if (bindingType === 'once') {\n // remove the binding\n processBinding(_this, name /*, null*/);\n }\n };\n // the following filter is needed in order to avoid attribute reflect-back and error:\n // `Uncaught DOMException: Failed to construct 'CustomElement': The result must not have attributes`\n if (ready) {\n todo.apply(_this);\n }\n else {\n var todos = GET_VAL(_this, INSTANCE_ONREADY_VAR, []);\n todos.push(todo);\n }\n }, configurable: true, enumerable: true\n });\n }\n Utils.customElements.define(config.tagName, target, config.options);\n Utils.customElements.whenDefined(config.tagName).then(() => {\n //console.log(`${config.tagName} defined.`);\n });\n };\n};\n// #endregion\n// #region WATCH PROPERTIES\nconst DefaultPropertyConverter = PropertyConverters.None;\nexport function Watch(config) {\n return (target, prop, descriptor) => {\n var watchableProperties = GET_VAL(target.constructor, WATCH_PROPS_VAR, []);\n watchableProperties.push({\n name: prop, config: Utils.extend({ emit: true, converter: DefaultPropertyConverter }, config)\n });\n // comparer\n const comparer = DefaultComparer;\n // original setter?\n const setter = descriptor && descriptor.set;\n // backing field value\n const propref = WATCH_PROP_PREFIX + prop; // <- pacem:property:'prop'\n const ver = WATCH_VERS_PROP; // <- pacem:version\n const propver = WATCH_VERS_PROP + ':' + prop; // <- pacem:version:'prop'\n // getter\n function getter() {\n const _this = this;\n return GET_VAL(_this, propref);\n }\n ;\n function onChange(key, oldValue, currentValue) {\n const _this = this;\n const debounce = config && config.debounce;\n // does it implement OnPropertyChanged?\n let propertyChangedCallback;\n if (typeof (propertyChangedCallback = _this['propertyChangedCallback']) === 'function') {\n let fn = () => propertyChangedCallback.apply(_this, [key, oldValue, GET_VAL(_this, propref), false /* dummy */, config]);\n if (typeof debounce === 'number' && debounce > 0) {\n clearTimeout(this['_handle_' + prop]);\n this['_handle_' + prop] = setTimeout(fn, debounce);\n }\n else if (debounce === true) {\n cancelAnimationFrame(this['_handle_' + prop]);\n this['_handle_' + prop] = requestAnimationFrame(fn);\n }\n else {\n fn();\n }\n }\n }\n ;\n function decorateArray(instance) {\n const _this = this;\n instance = instance || _this[prop];\n if ( /* already decorated? */GET_VAL(instance, 'pacem:array:decorated') === true) {\n return;\n }\n SET_VAL(instance, 'pacem:array:decorated', true);\n const proto = Array.prototype;\n const methods = {\n splice: proto.splice,\n pop: proto.pop,\n copyWithin: proto.copyWithin,\n push: proto.push,\n shift: proto.shift,\n unshift: proto.unshift\n };\n for (let name in methods) {\n let fn = name; // < closure\n instance[fn] = function (...args) {\n const retval = methods[fn].apply(this, args);\n // TODO?: specifically notify which items have changed.\n // .length property risks to not be affected, fire it as well.\n SET_VAL(this, ver, Date.now());\n onChange.call(_this, prop, this, this);\n return retval;\n };\n }\n }\n function setterCore(oldVal, newVal) {\n const _this = this, isArray = Utils.isArray(newVal);\n // different?\n const diffrent = !comparer(oldVal, newVal);\n if (diffrent || (isArray && GET_VAL(newVal, ver) !== GET_VAL(_this, propver))) {\n SET_VAL(_this, propref, newVal);\n if (isArray) {\n SET_VAL(_this, propver, GET_VAL(newVal, ver));\n decorateArray.call(_this, newVal);\n }\n onChange.call(_this, prop, oldVal, newVal);\n }\n }\n // setter\n if (setter) {\n descriptor.set = function (v) {\n const _this = this, oldVal = _this[prop];\n setter.call(_this, v);\n const newVal = _this[prop];\n //\n setterCore.call(_this, oldVal, newVal);\n };\n }\n else {\n //#region this is needed when creating property at runtime.\n try {\n // TODO: find better way!\n if (target.ownerDocument) {\n target[propref] = target[prop];\n }\n }\n catch (e) { /*Illegal invocation*/ }\n //#endregion\n if (delete target[prop]) {\n Object.defineProperty(target, prop, {\n get: function () {\n return getter.call(this);\n },\n set: function (newVal) {\n const _this = this;\n const oldVal = GET_VAL(_this, propref);\n //\n setterCore.call(_this, oldVal, newVal);\n },\n enumerable: true,\n configurable: true\n });\n }\n }\n };\n}\nexport function ViewChild(selector) {\n return (target, prop, descriptor) => {\n const key = `${prop}_${Utils.uniqueCode()}`;\n function findElement() {\n const _this = this, nodelist = (_this.shadowRoot || _this).querySelectorAll(selector);\n for (let i = 0; i < nodelist.length; i++) {\n let item = nodelist.item(i);\n if (GET_VAL(item, INSTANCE_HOST_VAR) === _this) {\n return item;\n }\n }\n return null;\n }\n function getter() {\n const _this = this;\n // reset INSTANCE_CHILDREN_VAR on connectedCallback!\n const dict = GET_VAL(_this, INSTANCE_CHILDREN_VAR, {});\n return dict[key] = dict[key] || findElement.call(_this);\n }\n if (delete target[prop]) {\n Object.defineProperty(target, prop, {\n get: function () {\n return getter.call(this);\n },\n enumerable: true,\n configurable: true\n });\n }\n };\n}\n// #endregion\n// #region CONCURRENT/DEBOUNCE EXECUTION\nexport function Concurrent() {\n function isPromiseLike(obj) {\n return obj && typeof obj.then === 'function';\n }\n return function (target /* type, actually */, key, descriptor) {\n const originalMethod = descriptor.value;\n const bufferKey = `pacem:concurrent-buffer:${key}`, lockKey = `pacem:concurrent-running:${key}`;\n descriptor.value = function (...args) {\n var _this = this;\n var buffer = CustomElementUtils.getAttachedPropertyValue(_this, bufferKey, []);\n var locked = CustomElementUtils.getAttachedPropertyValue(_this, lockKey, false);\n if (locked) {\n // previous process still going: \n // save args for later use,\n let deferred = DeferPromise.defer();\n //let logFn = console && console.debug;\n //if (typeof logFn === 'function')\n // logFn(`Method ${key} is busy. Procrastinating args '${JSON.stringify(args)}'...`);\n args.push(deferred);\n buffer.push(args);\n // and exit.\n return deferred.promise;\n }\n var result = originalMethod.apply(_this, args);\n if (isPromiseLike(result)) {\n let deferred = args && args.length > 0 && args[args.length - 1];\n if (deferred && deferred.promise instanceof DeferPromise)\n args.pop();\n else\n deferred = DeferPromise.defer();\n // hi-jack only if promise-like...\n CustomElementUtils.setAttachedPropertyValue(_this, lockKey, true);\n result.then(r => {\n deferred.resolve(r);\n CustomElementUtils.setAttachedPropertyValue(_this, lockKey, false);\n // warning: here's a possibly sneaky point (TODO: strengthen the lock)\n if (buffer.length > 0)\n originalMethod.apply(_this, buffer.shift());\n }, err => {\n CustomElementUtils.setAttachedPropertyValue(_this, lockKey, false);\n deferred.reject(err);\n });\n return deferred.promise;\n }\n // ...otherwise return the - hopefully - safe single-threaded result.\n else\n return result;\n };\n };\n}\nexport function Debounce(msecs = 50, keyFactory = (key, ...args) => `pacem:debouncer:${key}`) {\n return function (target /* type, actually */, key, descriptor) {\n const originalMethod = descriptor.value;\n if (msecs === true) {\n descriptor.value = function (...args) {\n const handleKey = keyFactory(key, ...args);\n var _this = this;\n cancelAnimationFrame(GET_VAL(_this, handleKey));\n SET_VAL(_this, handleKey, requestAnimationFrame(() => {\n originalMethod.apply(_this, args);\n }));\n };\n }\n else if (msecs > 0) {\n descriptor.value = function (...args) {\n const handleKey = keyFactory(key, ...args);\n var _this = this;\n clearTimeout(GET_VAL(_this, handleKey, 0));\n SET_VAL(_this, handleKey, setTimeout(() => {\n originalMethod.apply(_this, args);\n }, msecs));\n };\n }\n };\n}\nexport function Throttle(msecs = 50, keyFactory = (key, ...args) => `pacem:throttler:${key}`) {\n return function (target /* type, actually */, key, descriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args) {\n const handleKey = keyFactory(key, ...args);\n const argsKey = `${handleKey}:args`;\n const _this = this, reset = () => {\n DEL_VAL(_this, handleKey);\n const lastArgs = GET_VAL(_this, argsKey);\n DEL_VAL(_this, argsKey);\n if (lastArgs) {\n originalMethod.apply(_this, args);\n }\n };\n // guard: the presence of an handleKey\n // indicates a too-close call => exit\n if (!Utils.isNull(GET_VAL(_this, handleKey))) {\n SET_VAL(_this, argsKey, args ?? ['pacem']);\n return;\n }\n SET_VAL(_this, handleKey, 1);\n originalMethod.apply(_this, args);\n if (msecs === true) {\n requestAnimationFrame(reset);\n }\n else if (msecs > 0) {\n setTimeout(reset, msecs);\n }\n };\n };\n}\n// #endregion\n// #region TRANSFORMS\nclass Transforms {\n static register(name, fn) {\n let _set = Utils.core;\n const segments = (name || fn.name).split('.');\n for (let segment of segments.slice(0, -1)) {\n _set = _set[segment] || (_set[segment] = {});\n }\n const methodName = segments[segments.length - 1] || fn.name;\n if (!Utils.isNull(_set[methodName])) {\n console.warn(`A transform named ${methodName} already exists in this set.`);\n }\n else {\n _set[methodName] = fn;\n }\n }\n}\nexport function Transformer(name) {\n return function (target, key, descriptor) {\n const method = descriptor.value;\n Transforms.register(name, method);\n };\n}\n","/// <reference path=\"converters.ts\" />\n/// <reference path=\"decorators.ts\" />\n/// <reference path=\"logger.ts\" />\nvar __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 { Expression } from './expression';\nimport { LogLevel } from './logger';\nimport { INSTANCE_SCOPE_VAR } from './types';\nimport { Utils } from './utils';\nimport { CustomElementUtils } from './utils-customelement';\nimport { Watch } from './decorators';\nimport { PropertyConverters } from './converters';\n//namespace Pacem.Components {\nexport class PacemEventTarget extends HTMLElement {\n constructor() {\n super();\n this._isReady = false;\n this.emitHandler = (evt) => {\n // no handlers processed if the element is disabled.\n if (!this.disabled) {\n this.emit(evt);\n }\n };\n }\n /**\n * Executes the relevant handler defined in the `on-{evt.type}` attribute, if any.\n * @param evt {Event} the event to be fired\n */\n emit(evt) {\n if (evt.defaultPrevented) {\n // skip if evt was canceled\n return;\n }\n this._emitCore(evt);\n }\n _emitCore(evt) {\n var attrName = `on-${evt.type.toLowerCase()}`;\n if (attrName in this.attributes) {\n this.log(LogLevel.Debug, `Calling ${attrName} handler for event ${evt.type}`);\n var attrBody = this.attributes[attrName].value;\n var expression = Expression.parse(attrBody, this);\n if (!Utils.isNull(expression) && expression.pending !== true) {\n expression.evaluatePlus({ '$event': evt });\n }\n }\n }\n handle(evt, detail) {\n if (typeof evt === 'string') {\n evt = Utils.isNull(detail) ? new Event(evt, { cancelable: false }) : new CustomEvent(evt, { cancelable: false, detail });\n }\n this.emit(evt);\n }\n /** Gets whether the element has been completely loaded alongside with the other pieces of the DOM. */\n get isReady() {\n return this._isReady;\n }\n connectedCallback() {\n CustomElementUtils.setAttachedPropertyValue(this, INSTANCE_SCOPE_VAR, CustomElementUtils.findScopeContext(this));\n this.log(LogLevel.Debug, `Connected.`);\n }\n disconnectedCallback() {\n this._isReady = false;\n this.dispatchEvent(new Event('unload'));\n CustomElementUtils.deleteAttachedPropertyValue(this, INSTANCE_SCOPE_VAR);\n this.log(LogLevel.Debug, `Disconnected.`);\n }\n viewActivatedCallback() {\n this._isReady = true;\n this.log(LogLevel.Debug, `Loaded (view activated).`);\n this.dispatchEvent(new Event('load'));\n }\n /**\n * Manages the value change of a watched property.\n * @param name {string} property name\n * @param old {any} former property value\n * @param val {any} new/current property value\n * @param first {boolean} whether is the first change (right before view activation) or not\n */\n propertyChangedCallback(name, old, val, first) {\n if (first)\n this.log(LogLevel.Log, `Property \"${name}\" changed at start-up`);\n else\n this.log(LogLevel.Log, `Property \"${name}\" changed from ${old} to ${val}`);\n }\n /**\n * Wraps the native dispatchEvent in order to emit `on-{evt-type}` handler, if any.\n * @param evt {Event} the event to be fired\n */\n dispatchEvent(evt) {\n // no events dispatched if the element is disabled.\n if (this.disabled) {\n return false;\n }\n this.log(LogLevel.Log, `Dispatching event \"${evt.type}\"`);\n const ret = super.dispatchEvent(evt);\n this.emit(evt);\n return ret;\n }\n /**\n * Logs a message if a logger is available.\n * @param level {LogLevel} Level of log\n * @param message {String} Content\n * @param category {String} Grouping category\n */\n log(level, message, category = this.localName + (this.id ? '#' + this.id : '')) {\n this.logger && typeof this.logger.log === 'function' && this.logger.log(level, message, category);\n }\n /** Refreshes all the properties corresponding to explicit binding attributes. */\n refreshBindings() {\n // refresh all the bindings\n for (let j = 0; j < this.attributes.length; j++) {\n let attr = this.attributes.item(j), isBinding = CustomElementUtils.isBindingAttribute(attr.value);\n if (!isBinding)\n continue;\n let prop = CustomElementUtils.kebabToCamel(attr.name);\n let binding = CustomElementUtils.parseBindingAttribute(attr.value, this);\n this[prop] = binding.evaluate();\n }\n }\n}\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemEventTarget.prototype, \"disabled\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemEventTarget.prototype, \"logger\", void 0);\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 { Utils } from '../../utils';\nimport { CustomTypedEvent } from '../../events';\nimport { PacemEventTarget } from '../../eventtarget';\nimport { PCSS } from '../../prefix';\nimport { Watch } from '../../decorators';\nimport { PropertyConverters } from '../../converters';\nexport const RepeaterItemCreateEventName = 'repeateritemcreate';\nexport const RepeaterItemRemoveEventName = 'repeateritemremove';\nexport class RepeaterItemEvent extends CustomTypedEvent {\n constructor(name, args) {\n super(name, args);\n }\n}\nexport class RepeaterItemCreateEvent extends RepeaterItemEvent {\n constructor(args) {\n super(RepeaterItemCreateEventName, args);\n }\n}\nexport class RepeaterItemRemoveEvent extends RepeaterItemEvent {\n constructor(args) {\n super(RepeaterItemRemoveEventName, args);\n }\n}\nconst STD_EVENTS = ['keydown', 'keyup', 'click', 'focus', 'blur', 'dblclick', 'mouseover', 'mouseout', 'mouseenter', 'mouseleave', 'mousedown', 'mouseup', 'mousemove', 'contextmenu', 'wheel'];\nclass ElementAriaAttributes {\n constructor(_element, ariaAttrs) {\n this._element = _element;\n this._aria = Utils.extend({}, ariaAttrs || {});\n }\n toObject() {\n return Utils.extend({}, this._aria);\n }\n set(name, value) {\n this._aria[name] = value;\n const el = this._element;\n if (el.isConnected) {\n el.setAttribute('aria-' + name, value);\n }\n }\n remove(name) {\n delete this._aria[name];\n const el = this._element;\n if (el.isConnected) {\n el.removeAttribute('aria-' + name);\n }\n }\n}\nclass ElementAria {\n constructor(_element, role, attrs) {\n this._element = _element;\n this._aria = { role: role, attrs: new ElementAriaAttributes(_element, attrs) };\n }\n get role() {\n return this._aria.role;\n }\n /** Remarks: when set to an empty string AFTER the element gets connected to the DOM, this will remove the `role` attribute. */\n set role(role) {\n this._aria.role = role;\n const el = this._element;\n if (el.isConnected) {\n Utils.isNullOrEmpty(role) ? el.removeAttribute('role') : el.setAttribute('role', role);\n }\n }\n get attributes() {\n return this._aria.attrs;\n }\n}\nexport class PacemElement extends PacemEventTarget {\n constructor(role, aria) {\n super();\n this.#cssBag = [];\n this.#parts = [];\n this._tabIndex = -1;\n this.behaviors = [];\n this._aria = new ElementAria(this, role, aria);\n }\n // #region ARIA\n get aria() { return this._aria; }\n // #endregion\n static #stdEvtsMemoizer = null;\n static get emittedEventTypes() {\n return this.#stdEvtsMemoizer ??= Utils.readonlyCopy(STD_EVENTS);\n }\n #cssBag;\n #parts;\n connectedCallback() {\n super.connectedCallback();\n if (!Utils.isNullOrEmpty(this._aria.role)) {\n this.setAttribute('role', this._aria.role);\n }\n let ariaAttrs = this._aria.attributes.toObject();\n if (!Utils.isNullOrEmpty(ariaAttrs)) {\n for (let name in ariaAttrs) {\n this.setAttribute('aria-' + name, ariaAttrs[name]);\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n STD_EVENTS.forEach(e => {\n this.addEventListener(e, this.emitHandler, false);\n });\n for (var behavior of this.behaviors || []) {\n behavior.register(this);\n }\n }\n disconnectedCallback() {\n for (var behavior of this.behaviors || []) {\n behavior.unregister(this);\n }\n STD_EVENTS.forEach(e => {\n this.removeEventListener(e, this.emitHandler, false);\n });\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'css':\n for (var css in this.css) {\n this.style.setProperty(css, this.css[css]);\n }\n break;\n case 'cssClass':\n if (Utils.isArray(this.cssClass)) {\n const newBag = this.cssClass;\n for (let css of this.#cssBag.splice(0)) {\n Utils.removeClass(this, css);\n }\n for (let css of newBag) {\n this.#cssBag.push(css);\n Utils.addClass(this, css);\n }\n }\n else\n for (let css in this.cssClass) {\n Utils.toggleClass(this, css, this.cssClass[css]);\n }\n break;\n case 'cssPart':\n const cssPart = this.cssPart, bag = this.#parts;\n if (Utils.isArray(cssPart)) {\n const newBag = cssPart;\n for (let partName of bag.splice(0)) {\n Utils.removePart(this, partName);\n }\n for (let partName of newBag) {\n bag.push(partName);\n Utils.addPart(this, partName);\n }\n }\n else\n for (let partName in cssPart) {\n Utils.togglePart(this, partName, cssPart[partName]);\n }\n break;\n case \"hide\":\n const hidingCss = (PCSS + '-hiding');\n if (val) {\n const el = this, animCss = PCSS + '-anim', callback = () => {\n el.setAttribute('hidden', '');\n el.aria.attributes.set('hidden', 'true');\n };\n if (Utils.hasClass(el, animCss) && !Utils.isNull(old)) {\n Utils.removeClass(el, animCss);\n requestAnimationFrame(() => {\n Utils.addClass(el, hidingCss);\n Utils.addClass(el, animCss);\n Utils.waitForAnimationEnd(el, 250).then(_ => {\n if (el.hide) {\n callback();\n }\n Utils.removeClass(el, hidingCss);\n });\n });\n }\n else\n callback();\n }\n else {\n Utils.removeClass(this, hidingCss);\n this.removeAttribute('hidden');\n this.aria.attributes.remove('hidden');\n }\n break;\n case 'tooltip':\n this.title = val;\n Utils.isNullOrEmpty(val) ? this.aria.attributes.remove('label') : this.aria.attributes.set('label', val);\n break;\n case 'tabOrder':\n this._tabIndex = val;\n if (!this.disabled) {\n this.tabIndex = val;\n }\n break;\n case 'behaviors':\n if (!Utils.isNullOrEmpty(old)) {\n for (let behavior of old) {\n behavior.unregister(this);\n }\n }\n if (!Utils.isNullOrEmpty(val) && !first) {\n for (let behavior of val) {\n behavior.register(this);\n }\n }\n break;\n case 'disabled':\n let cssDis = PCSS + '-' + name;\n if (!!val) {\n this._tabIndex = this.tabIndex;\n this.tabIndex = -1;\n Utils.addClass(this, cssDis);\n }\n else {\n this.tabIndex = this._tabIndex;\n Utils.removeClass(this, cssDis);\n }\n break;\n case 'culture':\n if (Utils.isNullOrEmpty(val)) {\n this.removeAttribute('lang');\n }\n else {\n this.setAttribute('lang', val);\n }\n if (!first) {\n this.refreshBindings();\n }\n break;\n }\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json /* when declared plainly assume array of strings */ })\n], PacemElement.prototype, \"cssClass\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemElement.prototype, \"cssPart\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemElement.prototype, \"css\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemElement.prototype, \"hide\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemElement.prototype, \"tooltip\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemElement.prototype, \"tabOrder\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemElement.prototype, \"culture\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemElement.prototype, \"behaviors\", void 0);\nexport class PacemContentElement extends PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'content' && !first) {\n this._fillContent(val);\n }\n }\n _isContentNullOrEmpty(content = this.content) {\n return Utils.isNullOrEmpty(content) || (content instanceof DocumentFragment && content.childElementCount === 0);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._original = Array.from(this.children);\n if (!this._isContentNullOrEmpty()) {\n this._fillContent();\n }\n }\n disconnectedCallback() {\n if (!Utils.isNullOrEmpty(this._original)) {\n this.innerHTML = '';\n Element.prototype.append.apply(this, this._original);\n }\n super.disconnectedCallback();\n }\n _fillContent(val = this.content) {\n const output = this.sanitize(val);\n if (Utils.isNullOrEmpty(output)) {\n this.innerHTML = '';\n }\n else {\n if (output instanceof Node) {\n this.innerHTML = '';\n this.append(output);\n }\n else {\n this.innerHTML = output;\n }\n }\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemContentElement.prototype, \"content\", void 0);\nexport class PacemUnsafeContentElement extends PacemContentElement {\n sanitize(html) {\n return html;\n }\n}\nexport class PacemSafeContentElement extends PacemContentElement {\n _sanitizeLegacy(html) {\n if (Utils.isNullOrEmpty(html)) {\n return html;\n }\n if (html instanceof Node) {\n for (let i = html.childNodes.length - 1; i >= 0; i--) {\n const node = html.childNodes.item(i);\n if (node instanceof HTMLScriptElement) {\n node.remove();\n }\n else {\n this.sanitize(node);\n }\n }\n return html;\n }\n else {\n const scriptBlockPattern = /<script.+<\\/script>/g;\n // TODO: remove onclick, onload, onkey*, ... attributes\n return (html || '').toString().replace(scriptBlockPattern, '');\n }\n }\n sanitize(html) {\n // TODO: implement by using (when available in dom library)\n // https://developer.mozilla.org/en-US/docs/Web/API/Sanitizer/Sanitizer\n return this._sanitizeLegacy(html);\n }\n}\n//}\n","import { CurrentIndexChangeEvent } from '../../adapter';\nimport { Utils } from '../../utils';\nimport { PropertyChangeEventName } from '../../events';\nimport { PacemEventTarget } from '../../eventtarget';\nimport { PacemElement } from './types';\nexport class PacemAdapter extends PacemElement {\n constructor() {\n super(...arguments);\n this._propertyChangeHandler = (evt) => {\n this.masterPropertyChangedCallback(evt.detail.propertyName, evt.detail.oldValue, evt.detail.currentValue, evt.detail.firstChange);\n };\n }\n /** Gets the adapted element. */\n get master() {\n return this._element;\n }\n /** Gets whether this adapter has been initialized or not. */\n get initialized() {\n return !Utils.isNull(this._element);\n }\n /**\n * Handles the property changes for the master element.\n * @param name Name of the property that has changed\n * @param old Previous value\n * @param val Current value\n * @param first Is it the startup change?\n */\n masterPropertyChangedCallback(name, old, val, first) {\n switch (name) {\n case 'items':\n this._adjustFocusIndex();\n break;\n case 'index':\n this._element.dispatchEvent(new CurrentIndexChangeEvent({ currentIndex: val, previousIndex: old }));\n break;\n }\n }\n /**\n * Handles the property changes for item elements.\n * @param index Index of the element among the items\n * @param name Name of the property that has changed\n * @param old Previous value\n * @param val Current value\n * @param first Is it the startup change?\n */\n itemPropertyChangedCallback(index, name, old, val, first) {\n // empty implementation\n }\n /** Called righat after the adapter 'initialize'. */\n initializeCallback() {\n // empty implementation\n }\n destroyCallback() {\n // empty implementation\n }\n initialize(adapted) {\n if (this._element != null) {\n this.destroy();\n //throw `Cannot initialize an adapter twice.`;\n }\n if (adapted != null) {\n this._element = adapted;\n this._element.addEventListener(PropertyChangeEventName, this._propertyChangeHandler, false);\n }\n this.initializeCallback();\n }\n destroy() {\n if (this._element != null)\n this._element.removeEventListener(PropertyChangeEventName, this._propertyChangeHandler, false);\n this.destroyCallback();\n }\n disconnectedCallback() {\n this.destroy();\n super.disconnectedCallback();\n }\n _adjustFocusIndex() {\n let items = this._element.items;\n const index = this._element.index;\n const length = items && items.length;\n const ndxStart = length ? Math.max(0, Math.min(length - 1, index)) : -1;\n const ndx = this._getAvailable(ndxStart);\n this._element.index = ndx;\n }\n _getNextAvailable(ndxStart) {\n return this._getAvailable(ndxStart, 1);\n }\n _getPreviousAvailable(ndxStart) {\n return this._getAvailable(Math.max(0, ndxStart), -1);\n }\n _getAvailable(ndxStart = this._element && this._element.index, step = 0) {\n let items = this._element.items, length;\n if (!(items && (length = items.length) > 0))\n return -1;\n ndxStart = ndxStart % length;\n let ndx = (ndxStart + step + length) % length;\n let item;\n step = step || -1;\n while ((item = items[ndx]) instanceof PacemEventTarget && item.disabled === true\n || (item instanceof PacemElement && item.hide === true)) {\n ndx = (ndx + step + length) % length;\n if (ndx == ndxStart) {\n // loop completed\n return -1;\n }\n }\n return ndx;\n }\n /**\n * Returns whether the provided index is close (adjacent or equal) to the current one in focus.\n * @param ndx index to be checked\n */\n isClose(ndx) {\n const current = this._getAvailable();\n return ndx === current\n || ndx === this._getPreviousAvailable(current)\n || ndx === this._getNextAvailable(current);\n }\n /**\n * Returns whether the provided index is adjacent (previous on the list) to the current one in focus.\n * @param ndx index to be checked\n */\n isPrevious(ndx) {\n const current = this._getAvailable();\n return ndx === this._getPreviousAvailable(current);\n }\n /**\n * Returns whether the provided index is adjacent (next on the list) to the current one in focus.\n * @param ndx index to be checked\n */\n isNext(ndx) {\n const current = this._getAvailable();\n return ndx === this._getNextAvailable(current);\n }\n select(ndx) {\n this._element.index = this._getAvailable(ndx);\n }\n previous(loop = true) {\n var prev = this._getPreviousAvailable(this._element.index);\n if (prev >= 0 && (loop || this._element.index > prev))\n this._element.index = prev;\n }\n next(loop = true) {\n var next = this._getNextAvailable(this._element.index);\n if (next >= 0 && (loop || this._element.index < next))\n this._element.index = next;\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 { CustomElement, P } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemAnnihilatorElement = class PacemAnnihilatorElement extends HTMLElement {\n constructor() {\n super();\n }\n connectedCallback() {\n this.remove();\n }\n};\nPacemAnnihilatorElement = __decorate([\n CustomElement({ tagName: P + '-annihilator' })\n], PacemAnnihilatorElement);\nexport { PacemAnnihilatorElement };\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 { CustomElement, P, Watch, PropertyConverters, PacemEventTarget } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemBeforeunloadElement = class PacemBeforeunloadElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._unloadingHandler = (evt) => {\n const msg = this.message;\n if (!this.active || this.disabled) {\n return;\n }\n if (evt.type === 'beforeunload') {\n evt.preventDefault();\n evt.returnValue = msg || '';\n }\n else if (!confirm(msg || 'Leave page?')) {\n evt.preventDefault();\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n window.addEventListener('navigating', this._unloadingHandler, false);\n window.addEventListener('beforeunload', this._unloadingHandler, false);\n }\n disconnectedCallback() {\n window.removeEventListener('navigating', this._unloadingHandler, false);\n window.removeEventListener('beforeunload', this._unloadingHandler, false);\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBeforeunloadElement.prototype, \"message\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemBeforeunloadElement.prototype, \"active\", void 0);\nPacemBeforeunloadElement = __decorate([\n CustomElement({ tagName: P + '-beforeunload' })\n], PacemBeforeunloadElement);\nexport { PacemBeforeunloadElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemBroadcastChannelProxyElement = class PacemBroadcastChannelProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.autosend = true;\n this._messageHandler = (evt) => {\n this.result = evt.data;\n this.dispatchEvent(new CustomEvent('receive', { detail: evt.data, bubbles: false, cancelable: false }));\n };\n this._errorHandler = (evt) => {\n this.dispatchEvent(new CustomEvent('error', { detail: evt.data, bubbles: false, cancelable: false }));\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._initializeChannel();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'src':\n this._disposeChannel();\n this._initializeChannel(val);\n break;\n case 'autosend':\n case 'disabled':\n case 'message':\n if (this.autosend) {\n this.send(this.message);\n }\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeChannel();\n super.disconnectedCallback();\n }\n send(message = this.message) {\n if (this.disabled) {\n return;\n }\n const channel = this.#channel;\n if (!Utils.isNull(channel)) {\n channel.postMessage(message);\n }\n }\n #channel;\n _initializeChannel(name = this.channelName) {\n if (!Utils.isNullOrEmpty(name)) {\n const channel = this.#channel = new BroadcastChannel(name);\n channel.addEventListener('message', this._messageHandler, false);\n channel.addEventListener('messageerror', this._errorHandler, false);\n if (this.autosend && !Utils.isNull(this.message)) {\n this.send();\n }\n }\n }\n _disposeChannel(channel = this.#channel) {\n if (!Utils.isNull(channel)) {\n channel.removeEventListener('messageerror', this._errorHandler, false);\n channel.removeEventListener('message', this._messageHandler, false);\n channel.close();\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBroadcastChannelProxyElement.prototype, \"message\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBroadcastChannelProxyElement.prototype, \"result\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBroadcastChannelProxyElement.prototype, \"channelName\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemBroadcastChannelProxyElement.prototype, \"autosend\", void 0);\nPacemBroadcastChannelProxyElement = __decorate([\n CustomElement({ tagName: P + '-broadcastchannel-proxy' })\n], PacemBroadcastChannelProxyElement);\nexport { PacemBroadcastChannelProxyElement };\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 { detect } from '@pacem/pacem-foundation';\nimport { CustomElement, Watch } from '../../decorators';\nimport { P } from '../../prefix';\nimport { PropertyConverters } from '../../converters';\nimport { PropertyChangeEvent } from '../../events';\nimport { PacemEventTarget } from '../../eventtarget';\n//namespace Pacem.Components {\nlet PacemBrowserDetectElement = class PacemBrowserDetectElement extends PacemEventTarget {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._detect();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'userAgent') {\n this._detect(val);\n }\n }\n #browser;\n #version;\n get browser() {\n return this.#browser;\n }\n get version() {\n return this.#version;\n }\n _detect(userAgent = this.userAgent) {\n const { version, name } = detect(userAgent);\n const { browser: oldName, version: oldVersion } = this;\n if (name != oldName) {\n this.#browser = name;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'browser', currentValue: name, oldValue: oldName }));\n }\n if (version != oldVersion) {\n this.#version = version;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'version', currentValue: version, oldValue: oldVersion }));\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBrowserDetectElement.prototype, \"userAgent\", void 0);\nPacemBrowserDetectElement = __decorate([\n CustomElement({ tagName: P + '-browser-detect' })\n], PacemBrowserDetectElement);\nexport { PacemBrowserDetectElement };\n//}\n","import { Utils } from './utils';\n//namespace Pacem {\nconst EXPIRATION_FIELD = '_exp';\nexport class Storage {\n _getStorage(persistent) {\n return !!persistent ? window.localStorage : window.sessionStorage;\n }\n _parseValue(storage, name) {\n const value = storage.getItem(name);\n if (Utils.isNullOrEmpty(value)) {\n return null;\n }\n const output = Utils.Json.parse(value);\n if (!Object.hasOwnProperty(EXPIRATION_FIELD)) {\n return output;\n }\n const exp = output[EXPIRATION_FIELD];\n if (exp < Date.now()) {\n storage.removeItem(name);\n return null;\n }\n return output['value'];\n }\n setPropertyValue(name, value, persistent) {\n var storage = this._getStorage(persistent === true || (typeof persistent === 'number' && persistent > 0));\n var storedValue = value;\n // set cache timeout\n if (typeof persistent === 'number' && persistent > 0) {\n const exp = Date.now() + 1000 * persistent;\n storedValue = { value: value };\n storedValue[EXPIRATION_FIELD] = exp;\n }\n storage.setItem(name, Utils.Json.stringify(storedValue));\n // delete omonymy\n storage = this._getStorage(!persistent);\n storage.removeItem(name);\n }\n getPropertyValue(name) {\n return this._parseValue(this._getStorage(false), name)\n || this._parseValue(this._getStorage(true), name);\n }\n clear() {\n var storage = this._getStorage(true);\n storage.clear();\n storage = this._getStorage(false);\n storage.clear();\n }\n ;\n removeProperty(name) {\n var storage = this._getStorage(true);\n storage.removeItem(name);\n storage = this._getStorage(false);\n storage.removeItem(name);\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { Storage } from '../../storage';\nimport { PropertyChangeEvent } from '../../events';\n//namespace Pacem.Components {\nlet PacemDataElement = class PacemDataElement extends PacemEventTarget {\n constructor(storage = new Storage()) {\n super();\n this.storage = storage;\n this._handle = 0;\n this._flag = false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'persistAs':\n if (!Utils.isNullOrEmpty(old)) {\n this.storage.removeProperty(old);\n }\n if (first === true && !Utils.isNullOrEmpty(val)) {\n this.model = this.storage.getPropertyValue(val) ?? this.model;\n }\n break;\n case 'model':\n const debounce = this.debounce, throttle = this.throttle, emit = () => {\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: name, oldValue: old, currentValue: val, firstChange: first }));\n };\n if (debounce > 0 && !first) {\n if (throttle) {\n if (this._flag)\n return;\n this._flag = true;\n emit();\n this._handle = window.setTimeout(() => { this._flag = false; }, debounce);\n }\n else {\n clearTimeout(this._handle);\n this._handle = window.setTimeout(emit, debounce);\n }\n }\n else {\n emit();\n }\n // persist\n if (!first && !Utils.isNullOrEmpty(this.persistAs)) {\n if (Utils.isNull(val))\n this.storage.removeProperty(this.persistAs);\n else\n this.storage.setPropertyValue(this.persistAs, val, true);\n }\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false /* in order to debounce the propertychange emit */, converter: PropertyConverters.Eval })\n], PacemDataElement.prototype, \"model\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataElement.prototype, \"persistAs\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataElement.prototype, \"debounce\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.BooleanStrict })\n], PacemDataElement.prototype, \"throttle\", void 0);\nPacemDataElement = __decorate([\n CustomElement({ tagName: P + '-data' })\n], PacemDataElement);\nexport { PacemDataElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils, PCSS } from './_default-imports';\nimport { TweenService } from '../../animations/tween-service';\nimport { Easings } from '../../animations/easings';\nimport { LogLevel } from '../../logger';\nimport { CustomElementUtils } from '../../utils-customelement';\n//namespace Pacem.Components {\nexport var DockMode;\n(function (DockMode) {\n DockMode[\"Top\"] = \"top\";\n DockMode[\"Bottom\"] = \"bottom\";\n})(DockMode || (DockMode = {}));\n/** @deprecated */\nlet PacemDockElement = class PacemDockElement extends PacemEventTarget {\n constructor(_tweener = new TweenService()) {\n super();\n this._tweener = _tweener;\n this.mode = DockMode.Top;\n this.transitionDuration = 300 /* msecs */;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'dock' && (!Utils.isNull(old) || val != false))\n this._doDock();\n else if (name === 'mode' && this.dock === true)\n this._doDock();\n }\n _animate(from, to) {\n var transition = this.transitionDuration;\n if (!(transition > 0))\n transition = 300;\n //\n return this._tweener.run(from, to, transition, this.delay, Easings.sineInOut, (time, value) => {\n this._setOffset(value);\n }).then(() => {\n this._resetOffset();\n });\n }\n _setOffset(value) {\n this.style.transform = 'translateY(' + value + 'px)';\n }\n _resetOffset() {\n this.style.transform = '';\n }\n _compute() {\n const offset = Utils.offset(this);\n const css = getComputedStyle(this);\n const scrollTop = Utils.scrollTop;\n switch (this.mode) {\n case DockMode.Bottom:\n const marginBottom = parseInt(css.marginBottom);\n const bottom = offset.top;\n const deltaBottom = Utils.windowSize.height - (bottom - scrollTop + this.offsetHeight);\n return { delta: deltaBottom + marginBottom };\n case DockMode.Top:\n const marginTop = parseInt(css.marginTop);\n const top = offset.top;\n const delta = top - scrollTop;\n return { delta: -(delta + marginTop) };\n }\n }\n _doDock() {\n const docked = this.dock;\n if (docked) {\n const cmp = this._compute();\n if (Utils.isNull(cmp))\n return;\n //\n // adding the css classes first...\n Utils.addClass(this, PCSS + '-dock');\n switch (this.mode) {\n case DockMode.Bottom:\n Utils.removeClass(this, PCSS + '-dock-top');\n Utils.addClass(this, PCSS + '-dock-bottom');\n break;\n case DockMode.Top:\n Utils.removeClass(this, PCSS + '-dock-bottom');\n Utils.addClass(this, PCSS + '-dock-top');\n break;\n }\n // ...so have to flip `from` and `to` \n const from = -cmp.delta;\n const to = 0;\n const state = CustomElementUtils.getAttachedPropertyValue(this, 'pacem-dock:state') || 0;\n CustomElementUtils.setAttachedPropertyValue(this, 'pacem-dock:state', -from + state);\n this.log(LogLevel.Info, `animating from ${from}px to ${to}px`);\n //\n this._animate(from, to) /*.then(() => { })*/;\n }\n else {\n // removing the css classes first then animating\n const from = CustomElementUtils.getAttachedPropertyValue(this, 'pacem-dock:state');\n CustomElementUtils.deleteAttachedPropertyValue(this, 'pacem-dock:state');\n const to = 0;\n this.log(LogLevel.Info, `animating back from ${from}px to ${to}px`);\n Utils.removeClass(this, `${PCSS}-dock ${PCSS}-dock-top ${PCSS}-dock-bottom`);\n this._animate(from, to);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDockElement.prototype, \"mode\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemDockElement.prototype, \"dock\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemDockElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDockElement.prototype, \"delay\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDockElement.prototype, \"transitionDuration\", void 0);\nPacemDockElement = __decorate([\n CustomElement({\n tagName: P + '-dock'\n })\n], PacemDockElement);\nexport { PacemDockElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { CustomElementUtils } from '../../utils-customelement';\n//namespace Pacem.Components {\nexport class PacemTransferProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._dom = [];\n this._children = [];\n }\n get dom() {\n return this._children;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.moveContent(this.proxy);\n }\n moveContent(to) {\n if (!Utils.isNull(to)) {\n if (Utils.isNullOrEmpty(this._dom)) {\n this._dom = Utils.moveItems(this.childNodes, to);\n this._children = this._dom.filter(e => e instanceof Element);\n }\n else {\n Utils.moveItems(this._children, to);\n }\n }\n }\n disconnectedCallback() {\n for (let item of (this._dom || []).splice(0)) {\n item.remove();\n }\n super.disconnectedCallback();\n }\n}\n/** Moves its content to the document body and eventually removes it when disconnected. */\nlet PacemBodyProxyElement = class PacemBodyProxyElement extends PacemTransferProxyElement {\n get proxy() {\n return document.body;\n }\n};\nPacemBodyProxyElement = __decorate([\n CustomElement({\n tagName: P + '-body-proxy'\n })\n], PacemBodyProxyElement);\nexport { PacemBodyProxyElement };\n/** Moves its content to the closest shell and eventually removes it when disconnected. */\nlet PacemShellProxyElement = class PacemShellProxyElement extends PacemTransferProxyElement {\n get proxy() {\n return CustomElementUtils.findAncestorShell(this);\n }\n};\nPacemShellProxyElement = __decorate([\n CustomElement({\n tagName: P + '-shell-proxy'\n })\n], PacemShellProxyElement);\nexport { PacemShellProxyElement };\n/** Moves its content to the provided target element. */\nlet PacemElementProxyElement = class PacemElementProxyElement extends PacemTransferProxyElement {\n get proxy() {\n return this.target;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'target' && !first) {\n this.moveContent(this.proxy);\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemElementProxyElement.prototype, \"target\", void 0);\nPacemElementProxyElement = __decorate([\n CustomElement({\n tagName: P + '-element-proxy'\n })\n], PacemElementProxyElement);\nexport { PacemElementProxyElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nclass EmitEvent extends Event {\n constructor(_originalEvent) {\n super('emit');\n this._originalEvent = _originalEvent;\n }\n get originalEvent() {\n return this._originalEvent;\n }\n}\nconst ElementOrWindowConverter = {\n convert: function (attr, element) {\n if (attr === '$window') {\n return window;\n }\n return PropertyConverters.Element.convert(attr, element);\n },\n convertBack: (prop, element) => {\n if (prop === window) {\n return '$window';\n }\n return PropertyConverters.Element.convertBack(prop, element);\n }\n};\nlet PacemEventProxyElement = class PacemEventProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._emitHandler = (evt) => {\n var event = new EmitEvent(evt);\n this.dispatchEvent(event);\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._observe();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'target':\n this._unobserve(old, this.event, this.capture);\n this._observe();\n break;\n case 'event':\n this._unobserve(this.target, old, this.capture);\n this._observe();\n break;\n case 'capture':\n this._unobserve(this.target, this.event, old);\n this._observe();\n break;\n }\n }\n }\n disconnectedCallback() {\n this._unobserve();\n super.disconnectedCallback();\n }\n _unobserve(target = this.target, event = this.event, capture = this.capture) {\n if (Utils.isNull(target) || Utils.isNullOrEmpty(event)) {\n return;\n }\n target.removeEventListener(event, this._emitHandler, { capture });\n }\n _observe(target = this.target, event = this.event, capture = this.capture) {\n if (Utils.isNull(target) || Utils.isNullOrEmpty(event)) {\n return;\n }\n target.addEventListener(event, this._emitHandler, { capture });\n }\n};\n__decorate([\n Watch({ emit: false, converter: ElementOrWindowConverter })\n], PacemEventProxyElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemEventProxyElement.prototype, \"event\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemEventProxyElement.prototype, \"capture\", void 0);\nPacemEventProxyElement = __decorate([\n CustomElement({\n tagName: P + '-event-proxy'\n })\n], PacemEventProxyElement);\nexport { PacemEventProxyElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils, LogLevel } from './_default-imports';\nimport { Fetcher, HttpMethod, FetchSuccessEventName, FetchErrorEventName, FetchResultEventName } from '../../net/fetcher';\n//namespace Pacem.Components {\nconst ABORT_MESSAGE = \"New incoming request overrides the ongoing one. Aborting.\";\nlet PacemFetchElement = class PacemFetchElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Gets or sets whether to trigger a fetch whenever a significant property has changed (default: true). */\n this.autofetch = true;\n this.debounce = 100;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._delayAndConditionallyFetch();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n // parameters/headers -> in order to avoid unnecessary fetches don't compare byref but term by term in the json\n switch (name) {\n case 'url':\n case 'method':\n case 'type':\n case 'as':\n case 'mode':\n case 'credentials':\n case 'disabled':\n case 'autofetch':\n this._delayAndConditionallyFetch();\n break;\n case 'parameters':\n case 'headers':\n if (!this.diffByValues\n // spare round-trips: compare stringified values.\n // state might be changed, by it's up to the dev to unlock this\n // (i.e. just by calling 'fetch()' directly)\n || Utils.jsonSortStringify(old) != Utils.jsonSortStringify(val)) {\n this._delayAndConditionallyFetch();\n }\n break;\n }\n }\n _delayAndConditionallyFetch() {\n clearTimeout(this._handle);\n if (this.disabled) {\n this._abortPending();\n }\n else if (this.autofetch) {\n this._handle = setTimeout(() => {\n this.fetch();\n }, this.debounce || 0);\n }\n }\n _abortPending() {\n if (this.#aborter) {\n this.#aborter.abort(ABORT_MESSAGE);\n this.#aborter = null;\n }\n }\n #aborter;\n #ongoing;\n /** Returns a promise to a request having an already-consumed response body. */\n fetch() {\n if (this.throttle && this.fetching) {\n // exit\n return this.#ongoing;\n }\n return this.#ongoing = new Promise((resolve, reject) => {\n var url = this.url;\n // any reason to exit now?\n if (!this.isReady || Utils.isNullOrEmpty(url) || this.disabled) {\n resolve(null);\n return;\n }\n // go on...\n let _me = this;\n _me.fetching = true;\n const type = _me.type || 'json';\n let contentType = 'application/json';\n switch (type) {\n case 'raw':\n contentType = 'application/x-www-form-urlencoded';\n break;\n }\n const method = (_me.method || HttpMethod.Get).toUpperCase();\n let options = {\n headers: Utils.extend({ 'Content-Type': contentType }, _me.headers),\n method,\n mode: _me.mode || 'cors',\n credentials: _me.credentials || 'same-origin',\n cache: _me.cache || 'default'\n };\n const parameters = Utils.clone(_me.parameters ?? {});\n // complete a templated url, just in case (and remove params)\n // Note: templated urls might sound pleonastic where you can simply concatenate pieces of string.\n // They become handly in non-controllable autogenerated scenarios (e.g. autogenerated forms) where REST templated urls are involved.\n url = Utils.URIs.format(url, parameters, /* remove matched params if... */ method == \"GET\");\n if (!Utils.isNullOrEmpty(parameters)) {\n switch (method) {\n case 'GET':\n url = Utils.URIs.appendQuery(url, parameters);\n break;\n case 'PUT':\n case 'POST':\n case 'PATCH':\n switch (_me.type) {\n case 'raw':\n let searchParams = new URLSearchParams();\n for (let key in parameters) {\n searchParams.set(key, parameters[key]);\n }\n options.body = searchParams;\n break;\n default:\n options.body = Utils.Json.stringify(parameters);\n break;\n }\n break;\n }\n }\n // mandatory tmpl segments left over?\n if (Utils.URIs.hasMandatoryTemplateSegments(url)) {\n // exit\n resolve(null);\n return;\n }\n this._abortPending();\n const { signal } = this.#aborter = new AbortController();\n options.signal = signal;\n fetch(url, options).then(r => {\n this.#aborter = null;\n _me.fetching = false;\n if (r.ok) {\n this.dispatchEvent(new CustomEvent(FetchSuccessEventName, { detail: r }));\n const empty = Fetcher.isEmpty(r);\n if (empty) {\n switch (_me.as) {\n case 'blob':\n case 'image':\n _me.result = null;\n break;\n case 'text':\n _me.result = null;\n break;\n default:\n _me.result = null;\n break;\n }\n resolve(r);\n }\n else {\n switch (_me.as) {\n case 'blob':\n case 'image':\n r.blob().then(b => {\n if (_me.as === 'image') {\n Utils.blobToDataURL(b).then(i => {\n _me._acceptFetchResult(i);\n });\n }\n else {\n _me._acceptFetchResult(b);\n }\n resolve(r);\n }, _ => {\n this.log(LogLevel.Warn, `Couldn't parse a ${_me.as}. ${_}`);\n resolve(null);\n });\n break;\n case 'text':\n r.text().then(t => {\n _me._acceptFetchResult(t);\n resolve(r);\n });\n break;\n default:\n r.json().then(j => {\n _me._acceptFetchResult(j);\n resolve(r);\n }, _ => {\n this.log(LogLevel.Warn, `Couldn't parse a ${_me.as}. ${_}`);\n resolve(null);\n });\n break;\n }\n }\n }\n else {\n this.dispatchEvent(new CustomEvent(FetchErrorEventName, { detail: r }));\n reject(r);\n }\n }, (reason) => {\n if (typeof reason === 'string' && reason === ABORT_MESSAGE) {\n this.log(LogLevel.Info, reason);\n resolve(null);\n }\n else {\n reject(reason);\n }\n });\n });\n }\n _acceptFetchResult(val) {\n this.dispatchEvent(new CustomEvent(FetchResultEventName, { detail: val }));\n this.result = val;\n }\n};\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemFetchElement.prototype, \"parameters\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemFetchElement.prototype, \"headers\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"credentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"mode\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"cache\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.BooleanStrict })\n], PacemFetchElement.prototype, \"fetching\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFetchElement.prototype, \"autofetch\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"as\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"type\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Number })\n], PacemFetchElement.prototype, \"debounce\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemFetchElement.prototype, \"throttle\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFetchElement.prototype, \"diffByValues\", void 0);\n__decorate([\n Watch()\n], PacemFetchElement.prototype, \"result\", void 0);\nPacemFetchElement = __decorate([\n CustomElement({ tagName: P + '-fetch' })\n], PacemFetchElement);\nexport { PacemFetchElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils, LogLevel } from './_default-imports';\nimport { DefaultComparer } from '../../comparers';\nimport { HistoryService } from '@pacem/pacem-foundation';\nexport class StateEvent extends CustomEvent {\n constructor(type, detail) {\n super(type, { detail });\n }\n}\nlet PacemHistoryElement = class PacemHistoryElement extends PacemEventTarget {\n #history;\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'state':\n this._handleStateChange(val);\n break;\n case 'maxlength':\n const h = this.#history;\n if (!Utils.isNull(h)) {\n h.maxlength = val;\n }\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._handleStateChange();\n }\n _handleStateChange(val = this.state) {\n const history = this.#history;\n if (!Utils.isNull(history)) {\n if (DefaultComparer(history.current, val) !== true) {\n history.push(val);\n this.log(LogLevel.Log, 'Pushed state.');\n this._synchronize('push');\n }\n }\n else {\n this.#history = new HistoryService(val, this.maxlength);\n }\n }\n redo() {\n const h = this.#history;\n if (!Utils.isNull(h)) {\n h.redo();\n this.log(LogLevel.Log, 'Redone state.');\n this._synchronize('redo');\n }\n }\n reset() {\n const h = this.#history;\n if (!Utils.isNull(h)) {\n h.reset();\n this.log(LogLevel.Log, 'Reset state.');\n this._synchronize('reset');\n }\n }\n undo() {\n const h = this.#history;\n if (!Utils.isNull(h)) {\n h.undo();\n this.log(LogLevel.Log, 'Undone state.');\n this._synchronize('undo');\n }\n }\n _synchronize(type) {\n const h = this.#history;\n this.canUndo = h.canUndo;\n this.canRedo = h.canRedo;\n this.state = h.current;\n const { canRedo, canUndo, current: state } = h;\n this.dispatchEvent(new StateEvent(type, { canRedo, canUndo, state }));\n }\n};\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Json })\n], PacemHistoryElement.prototype, \"state\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemHistoryElement.prototype, \"maxlength\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Boolean })\n], PacemHistoryElement.prototype, \"canUndo\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Boolean })\n], PacemHistoryElement.prototype, \"canRedo\", void 0);\nPacemHistoryElement = __decorate([\n CustomElement({ tagName: P + '-history' })\n], PacemHistoryElement);\nexport { PacemHistoryElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemHtmlProxyElement = class PacemHtmlProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._html = document.documentElement;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'attr' && old) {\n this._html.removeAttribute(old);\n }\n this._update();\n }\n _update() {\n const key = this.attr;\n if (Utils.isNullOrEmpty(key) || this.disabled) {\n // No key means do nothing\n return;\n }\n const value = this.value;\n const html = this._html;\n if (Utils.isNullOrEmpty(value)) {\n html.removeAttribute(key);\n }\n else {\n html.setAttribute(key, value);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHtmlProxyElement.prototype, \"attr\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHtmlProxyElement.prototype, \"value\", void 0);\nPacemHtmlProxyElement = __decorate([\n CustomElement({\n tagName: P + '-html-proxy'\n })\n], PacemHtmlProxyElement);\nexport { PacemHtmlProxyElement };\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 { CustomElement, P, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemIfElement = class PacemIfElement extends HTMLElement {\n #innerHTML;\n propertyChangedCallback(name, old, val, first) {\n // setup lazily\n if (Utils.isNullOrEmpty(this.#innerHTML)) {\n this.#innerHTML = this.innerHTML;\n }\n if (!val) {\n this.innerHTML = '';\n }\n else {\n this.innerHTML = this.#innerHTML;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemIfElement.prototype, \"match\", void 0);\nPacemIfElement = __decorate([\n CustomElement({ tagName: P + '-if' })\n], PacemIfElement);\nexport { PacemIfElement };\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, LogLevel } from './_default-imports';\nimport { PacemElement } from './types';\nimport { CustomElementUtils } from '../../utils-customelement';\nimport { CustomTypedEvent } from '../../events';\n//namespace Pacem.Components {\nexport class PacemItemElement extends PacemElement {\n get container() {\n return this._container;\n }\n /** @overridable */\n findContainer() {\n return CustomElementUtils.findAncestor(this, n => n instanceof PacemItemsContainerElement);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this._container = this.findContainer();\n if (!Utils.isNull(container)) {\n container.register(this);\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._container)) {\n this._container.unregister(this);\n }\n super.disconnectedCallback();\n }\n}\nexport function isItemsContainer(object) {\n return 'items' in object\n && (Utils.isNull(object.items) || Utils.isArray(object.items))\n && typeof object.register === 'function'\n && typeof object.unregister === 'function';\n}\nexport const ItemRegisterEventName = \"itemregister\";\nexport const ItemUnregisterEventName = \"itemunregister\";\nexport class ItemRegisterEvent extends CustomTypedEvent {\n constructor(item, eventInit) {\n super(ItemRegisterEventName, item, eventInit);\n }\n}\nexport class ItemUnregisterEvent extends CustomTypedEvent {\n constructor(item, eventInit) {\n super(ItemUnregisterEventName, item, eventInit);\n }\n}\nclass ItemsContainerRegistrar {\n constructor(_container) {\n this._container = _container;\n if (_container == null || !(_container instanceof PacemItemsContainerElement || _container instanceof PacemCrossItemsContainerElement)) {\n throw `Must provide a valid itemscontainer.`;\n }\n }\n register(item) {\n const container = this._container;\n var retval = false;\n if (!container.validate(item)) {\n container.logger && container.logger.log(LogLevel.Debug, `${(item && item.localName)} element couldn't be registered in a ${container.localName} element.`);\n }\n else {\n if (Utils.isNull(container.items)) {\n container.items = [item];\n retval = true;\n }\n else if (container.items.indexOf(item) === -1) {\n container.items.push(item);\n retval = true;\n }\n }\n if (retval) {\n container.dispatchEvent(new ItemRegisterEvent(item));\n }\n return retval;\n }\n unregister(item) {\n const container = this._container;\n if (!Utils.isNull(container.items)) {\n const ndx = container.items.indexOf(item);\n if (ndx >= 0) {\n let item = container.items.splice(ndx, 1);\n container.dispatchEvent(new ItemUnregisterEvent(item[0]));\n return true;\n }\n }\n return false;\n }\n}\n/** Element that can be used both as ItemElement and ItemsContainer. */\nexport class PacemCrossItemsContainerElement extends PacemItemElement {\n constructor(role, aria) {\n super(role, aria);\n this._registrar = new ItemsContainerRegistrar(this);\n }\n /**\n * Registers a new item among the items.\n * @param item {TItem} Item to be enrolled\n */\n register(item) {\n return this._registrar.register(item);\n }\n /**\n * Removes an existing element from the items.\n * @param item {TItem} Item to be removed\n */\n unregister(item) {\n return this._registrar.unregister(item);\n }\n}\n__decorate([\n Watch( /* can only be databound or assigned at runtime */)\n], PacemCrossItemsContainerElement.prototype, \"items\", void 0);\nexport class PacemItemsContainerElement extends PacemElement {\n constructor(role, aria) {\n super(role, aria);\n this._registrar = new ItemsContainerRegistrar(this);\n }\n /**\n * Registers a new item among the items.\n * @param item {TItem} Item to be enrolled\n */\n register(item) {\n return this._registrar.register(item);\n }\n /**\n * Removes an existing element from the items.\n * @param item {TItem} Item to be removed\n */\n unregister(item) {\n return this._registrar.unregister(item);\n }\n}\n__decorate([\n Watch( /* can only be databound or assigned at runtime */)\n], PacemItemsContainerElement.prototype, \"items\", void 0);\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 { Utils, Watch, PropertyConverters } from './_default-imports';\nimport { CustomElementUtils } from '../../utils-customelement';\nimport { PacemItemElement, PacemItemsContainerElement } from './items-container';\n//namespace Pacem.Components {\nexport class PacemIterableElement extends PacemItemElement {\n /** @overrides */\n findContainer() {\n return CustomElementUtils.findAncestor(this, n => n instanceof PacemIterativeElement);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n const iter = this.container;\n const index = (iter && iter.items || []).indexOf(this);\n index >= 0\n && iter\n && iter.adapter\n && iter.adapter.itemPropertyChangedCallback(index, name, old, val, first);\n }\n}\nexport class PacemIterativeElement extends PacemItemsContainerElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n // notify the adapter, if any.\n this.adapter && this.adapter.masterPropertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'adapter':\n if (!Utils.isNull(old)) {\n old.destroy();\n }\n if (!Utils.isNull(val)) {\n this.adapter.initialize(this);\n }\n break;\n case 'items':\n if (this.isReady /* connected and DOM-ready */) {\n this._checkIndex();\n }\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._checkIndex();\n }\n _checkIndex() {\n let ndx = 0;\n if (!Utils.isNullOrEmpty(this.items)) {\n if (this.index < this.items.length) {\n ndx = this.index;\n }\n }\n this.index = ndx;\n }\n disconnectedCallback() {\n if (!Utils.isNull(this.adapter))\n this.adapter.destroy();\n super.disconnectedCallback();\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemIterativeElement.prototype, \"adapter\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemIterativeElement.prototype, \"index\", void 0);\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { CustomElementUtils } from '../../utils-customelement';\n//namespace Pacem.Components {\nconst REMOVE_VALUE = 'false';\nconst EMPTY_VALUE = 'true';\nlet PacemLayoutProxyElement = class PacemLayoutProxyElement extends PacemEventTarget {\n #shell;\n connectedCallback() {\n super.connectedCallback();\n this.#shell = CustomElementUtils.findAncestorShell(this);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n this._update();\n }\n disconnectedCallback() {\n const attr = this.attr;\n if (!Utils.isNullOrEmpty(attr)) {\n this._update(attr, REMOVE_VALUE, false);\n }\n super.disconnectedCallback();\n }\n _update(key = this.attr, value = this.value?.toString(), disabled = this.disabled) {\n if (Utils.isNullOrEmpty(key) || disabled) {\n // No key means do nothing\n return;\n }\n const layout = this.#shell;\n if (!Utils.isNull(layout)) {\n if (Utils.isNullOrEmpty(value) || value === REMOVE_VALUE) {\n layout.removeAttribute(key);\n }\n else {\n layout.setAttribute(key, value === EMPTY_VALUE ? '' : value);\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemLayoutProxyElement.prototype, \"attr\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemLayoutProxyElement.prototype, \"value\", void 0);\nPacemLayoutProxyElement = __decorate([\n CustomElement({\n tagName: P + '-layout-proxy'\n })\n], PacemLayoutProxyElement);\nexport { PacemLayoutProxyElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { Debounce } from '../../decorators';\n//namespace Pacem.Components {\nlet PacemMetaProxyElement = class PacemMetaProxyElement extends PacemEventTarget {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n this._update();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._update();\n }\n _update() {\n const value = this.content;\n const nameBased = !Utils.isNullOrEmpty(this.name);\n const key = nameBased ? this.name : this.itemprop;\n if (Utils.isNullOrEmpty(key) || this.disabled) {\n // No key means do nothing\n return;\n }\n const escapedKey = Utils.cssEscape(key);\n const query = nameBased ? `meta[name='${escapedKey}']` : `meta[itemprop='${escapedKey}']`;\n var meta = document.head.querySelector(query);\n if (Utils.isNull(meta)) {\n meta = document.createElement('meta');\n document.head.appendChild(meta);\n }\n else if (Utils.isNullOrEmpty(value)) {\n // Empty `content` means \"remove the element\".\n meta.remove();\n return;\n }\n // set\n meta.setAttribute(\"content\", value);\n meta.setAttribute(nameBased ? \"name\" : \"itemprop\", key);\n meta.removeAttribute(nameBased ? \"itemprop\" : \"name\");\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMetaProxyElement.prototype, \"name\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMetaProxyElement.prototype, \"itemprop\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMetaProxyElement.prototype, \"content\", void 0);\n__decorate([\n Debounce(true)\n], PacemMetaProxyElement.prototype, \"_update\", null);\nPacemMetaProxyElement = __decorate([\n CustomElement({\n tagName: P + '-meta-proxy'\n })\n], PacemMetaProxyElement);\nexport { PacemMetaProxyElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemOnlineStatusElement = class PacemOnlineStatusElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._onlineHandler = (evt) => {\n if (!Utils.isNull(evt)) {\n this.online = evt.type === 'online';\n }\n else {\n this.online = navigator.onLine || false;\n }\n };\n }\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('online', this._onlineHandler, false);\n window.addEventListener('offline', this._onlineHandler, false);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._onlineHandler();\n }\n disconnectedCallback() {\n window.removeEventListener('online', this._onlineHandler, false);\n window.removeEventListener('offline', this._onlineHandler, false);\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemOnlineStatusElement.prototype, \"online\", void 0);\nPacemOnlineStatusElement = __decorate([\n CustomElement({ tagName: P + '-online-status' })\n], PacemOnlineStatusElement);\nexport { PacemOnlineStatusElement };\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 { CustomElement, P } from './_default-imports';\nimport { PacemSafeContentElement } from './types';\n//namespace Pacem.Components {\nlet PacemPanelElement = class PacemPanelElement extends PacemSafeContentElement {\n};\nPacemPanelElement = __decorate([\n CustomElement({ tagName: P + '-panel' })\n], PacemPanelElement);\nexport { PacemPanelElement };\n//}\n","/// <reference path=\"events.ts\" />\nimport { CustomTypedEvent } from './events';\n//namespace Pacem {\nexport const CommandEventName = 'command';\nexport class CommandEvent extends CustomTypedEvent {\n constructor(args) {\n super(CommandEventName, args, { bubbles: true, cancelable: true });\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 { CustomElement, P, Watch, PropertyConverters } from './_default-imports';\nimport { TemplateElement } from '../../template';\n//namespace Pacem.Components {\nlet PacemTemplateProxyElement = class PacemTemplateProxyElement extends /*PacemEventTarget*/ /*PacemEventTarget*/ TemplateElement {\n propertyChangedCallback(name, old, val, first) {\n // super.propertyChangedCallback(name, old, val, first);\n if (name === 'target') {\n this.dispatchEvent(new Event('templatechange'));\n }\n }\n addEventListener(type, listener, options) {\n super.addEventListener(type, listener, options);\n }\n removeEventListener(type, listener, options) {\n super.removeEventListener(type, listener, options);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemTemplateProxyElement.prototype, \"target\", void 0);\nPacemTemplateProxyElement = __decorate([\n CustomElement({ tagName: P + '-template-proxy' })\n], PacemTemplateProxyElement);\nexport { PacemTemplateProxyElement };\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};\nvar PacemRepeaterElement_1;\nimport { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils, LogLevel } from './_default-imports';\nimport { CustomElementUtils, RepeaterItem as RepeaterItemBase } from '../../utils-customelement';\nimport { CustomTypedEvent, PropertyChangeEvent } from '../../events';\nimport { INSTANCE_HOST_VAR } from '../../types';\nimport { CommandEventName } from '../../command';\nimport { RepeaterItemCreateEvent, RepeaterItemRemoveEvent } from './types';\nimport { PacemTemplateProxyElement } from './template-proxy';\n//namespace Pacem.Components {\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nclass ItemEvent extends CustomTypedEvent {\n constructor(type, args, _originalEvent) {\n super(type, args, { bubbles: false, cancelable: true });\n this._originalEvent = _originalEvent;\n }\n /** Gets the bubbling item's Event. */\n get srcEvent() {\n return this._originalEvent;\n }\n}\nexport class ItemCommandEvent extends ItemEvent {\n constructor(evt) {\n super(\"item\" + CommandEventName, evt.detail, evt);\n }\n}\nexport class CustomItemCommandEvent extends ItemEvent {\n constructor(evt) {\n super(\"item\" + evt.detail.commandName.toLowerCase(), evt.detail.commandArgument, evt);\n }\n}\n//\n/**\n * <pacem-repeater datasource=\"[{id:'first', items:['a','b','c']}, ...]\">\n * <ol>\n * <li>\n * <template>\n * <pacem-repeater datasource={{ ^item.items }}>\n * <template>\n * <pacem-span text=\"{{ ^^item.id+': ': ^item.toUpperCase() }}\"></pacem-span>\n * </template>\n * </pacem-repeater>\n * </template>\n * </li>\n * </ol>\n * </pacem-repeater>\n */\nlet PacemRepeaterElement = PacemRepeaterElement_1 = class PacemRepeaterElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._childItems = [];\n this._fragment = document.createDocumentFragment();\n this._setupItem = (item, index, entity) => {\n // FIRST set index on PacemRepeaterItemElement...\n item.index = index;\n // ...THEN the item entity itself.\n item.item = entity;\n };\n this._refreshItemTemplateHandler = (evt) => {\n const proxy = evt.target;\n this._itemTemplate = proxy.target;\n this._databind();\n };\n }\n removeItem(index) {\n this._removeItems(index, index);\n }\n _setItem(item, index, frag) {\n const items = this._childItems;\n let _item;\n if (index >= items.length) {\n _item = new RepeaterItem(this, this._itemTemplate, frag, this._childTemplatePlaceholder);\n this._setupItem(_item, index, item);\n items.push(_item);\n _item.append();\n }\n else {\n _item = items[index];\n this._setupItem(_item, index, item);\n _item.redrawEventually(this._itemTemplate, frag);\n }\n this.dispatchEvent(new RepeaterItemCreateEvent(_item));\n }\n _removeItems(fromIndex, toIndex) {\n const items = this._childItems;\n let exceeding = items.splice(fromIndex, toIndex + 1 - fromIndex);\n for (var i = exceeding.length - 1; i >= 0; i--) {\n let item = exceeding[i];\n this.dispatchEvent(new RepeaterItemRemoveEvent(item));\n item.remove();\n }\n }\n databind() {\n this._databind();\n }\n // @Debounce(true)\n _databind(datasource = this.datasource) {\n // not connected to the DOM? exit\n if (!this.isConnected) {\n return;\n }\n // no template? fail.\n let tmpl = this._itemTemplate, holder = this._childTemplatePlaceholder;\n if (tmpl == null) {\n throw `Missing template element in ${PacemRepeaterElement_1.name}.`;\n }\n // fill up\n let items = this._childItems, index = 0;\n try {\n for (var entity of datasource || []) {\n this._setItem(entity, index, this._fragment);\n index++;\n }\n }\n catch (e) {\n this.log(LogLevel.Error, e);\n }\n if (index < items.length) {\n this._removeItems(index, items.length - 1);\n }\n else if (!Utils.isNull(holder && holder.parentNode)) {\n // flush added items\n holder.parentNode.insertBefore(this._fragment, holder);\n }\n }\n _onCommand(evt) {\n // DO NOT stop bubbling! Might be 'handy' in autogenerated forms...\n // Pacem.stopPropagationHandler(evt);\n // ...But might lead to unwanted behaviors in nested repeaters.\n // Thus include the 'originalEvent' in the outscoped one as a read-only property.\n // 'itemcommand' event fires first\n this.dispatchEvent(new ItemCommandEvent(/* 'originalEvent' */ evt));\n // custom 'item<cmd>' event fires next\n this.dispatchEvent(new CustomItemCommandEvent(/* 'originalEvent' */ evt));\n }\n _buildupItemTemplate() {\n let tmpl = CustomElementUtils.findFirstDescendant(this, n => n instanceof HTMLTemplateElement || n instanceof PacemTemplateProxyElement);\n if (tmpl instanceof PacemTemplateProxyElement) {\n tmpl.addEventListener('templatechange', this._refreshItemTemplateHandler, false);\n this._childTemplatePlaceholder = tmpl;\n return this._itemTemplate = tmpl.target;\n }\n else {\n return this._itemTemplate = this._childTemplatePlaceholder = tmpl;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.addEventListener(CommandEventName, this._onCommand, false);\n if (this._buildupItemTemplate()) {\n this._databind();\n }\n }\n disconnectedCallback() {\n const oldPlaceholder = this._childTemplatePlaceholder;\n if (!Utils.isNull(oldPlaceholder) && oldPlaceholder instanceof PacemTemplateProxyElement) {\n oldPlaceholder.removeEventListener('templatechange', this._refreshItemTemplateHandler, false);\n }\n this.removeEventListener(CommandEventName, this._onCommand, false);\n this.datasource = [];\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n if (!Utils.isNull(this._itemTemplate)) {\n this._databind(val);\n }\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Eval })\n], PacemRepeaterElement.prototype, \"datasource\", void 0);\nPacemRepeaterElement = PacemRepeaterElement_1 = __decorate([\n CustomElement({ tagName: P + '-repeater' })\n], PacemRepeaterElement);\nexport { PacemRepeaterElement };\nexport class RepeaterItem extends RepeaterItemBase {\n constructor(_repeater, _template, _fragment, _holder) {\n super(document.createComment('pacem-repeater-item'));\n this._repeater = _repeater;\n this._template = _template;\n this._fragment = _fragment;\n this._holder = _holder;\n this._alterEgos = [];\n const FIELD_PREFIX = '_';\n function _setScopeValue(name, v) {\n var owner = this, fieldName = FIELD_PREFIX + name;\n if (v !== owner[fieldName]) {\n var old = owner[fieldName];\n owner[fieldName] = v;\n var evt = new PropertyChangeEvent({ propertyName: name, oldValue: old, currentValue: v });\n owner.dispatchEvent(evt);\n }\n }\n // placeholder on roids:\n let placeholder = this.placeholder;\n Object.defineProperties(placeholder, {\n 'item': {\n get: function () {\n return this[FIELD_PREFIX + 'item'];\n },\n set: function (v) {\n _setScopeValue.apply(placeholder, ['item', v]);\n }, configurable: true\n },\n 'index': {\n get: function () {\n const val = this[FIELD_PREFIX + 'index'];\n return Utils.isNull(val) ? -1 : val;\n },\n set: function (v) {\n _setScopeValue.apply(placeholder, ['index', v]);\n }, configurable: true\n }\n });\n }\n /** @internal */\n append() {\n const tmplRef = this._template, tmplParent = this._fragment;\n this._alterEgos.push(tmplParent.appendChild(this.placeholder));\n const clonedTmpl = tmplRef.cloneNode(true);\n var host;\n if (!Utils.isNull(host = GET_VAL(this._repeater, INSTANCE_HOST_VAR))) {\n CustomElementUtils.assignHostContext(host, clonedTmpl);\n }\n var dom = clonedTmpl.content. /*children*/childNodes;\n Array.prototype.push.apply(this._alterEgos, dom);\n tmplParent.appendChild(clonedTmpl.content);\n }\n /** @internal */\n redrawEventually(tmpl, frag) {\n if (tmpl === this._template) {\n return;\n }\n this._fragment = frag;\n this._template = tmpl;\n const tmplParent = this._holder.parentElement, dom = this._alterEgos;\n while (dom.length > 0) {\n tmplParent.removeChild(dom.pop());\n }\n this.append();\n }\n get dom() {\n return this._alterEgos.filter(n => !(n instanceof Comment || n instanceof Text));\n }\n get repeater() {\n return this._repeater;\n }\n /** @internal */\n remove() {\n let tmplParent = this._holder.parentElement;\n for (var alterEgo of this._alterEgos) {\n if (alterEgo.parentElement === tmplParent && !Utils.isNull(tmplParent)) {\n tmplParent.removeChild(alterEgo);\n }\n }\n }\n get index() {\n return this.placeholder['index'];\n }\n set index(v) {\n this.placeholder['index'] = v;\n }\n get item() {\n return this.placeholder['item'];\n }\n set item(v) {\n this.placeholder['item'] = v;\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils, LogLevel } from './_default-imports';\nimport { CustomTypedEvent } from '../../events';\n//namespace Pacem.Components {\nexport const ResizeEventName = 'resize';\nexport class ResizeEvent extends CustomTypedEvent {\n constructor(args) {\n super(ResizeEventName, args);\n }\n}\nconst BORDER_BOX = { box: 'border-box' };\nlet PacemResizeElement = class PacemResizeElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._checkSizeHandler = () => {\n this._assignSizeDebounced();\n };\n }\n get _target() {\n return this.target || this;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'disabled':\n this._start();\n break;\n case 'target':\n if (!Utils.isNull(this._observer)) {\n var oldTarget = old || this;\n this._observer.unobserve(oldTarget);\n }\n case 'watchPosition':\n var newTarget = this.target || this;\n if (!Utils.isNull(this._observer)) {\n this._observer.observe(newTarget, BORDER_BOX);\n }\n break;\n }\n }\n _start() {\n // disabled? switch to stop\n if (this.disabled) {\n this._stop();\n return;\n }\n if (this.watchPosition) {\n this._startWatchIntensively();\n }\n else {\n // native ResizeObserver\n this._observer = new ResizeObserver(entries => {\n var changed = false;\n for (let entry of entries) {\n if (entry.target !== this._target) {\n continue;\n }\n if (entry.contentRect) {\n changed = true;\n break;\n }\n }\n if (changed) {\n // ResizeObserverEntry pieces of info aren't accurate,\n // but useful enough to let punctually debounce\n // the expensive request\n this._assignSizeDebounced();\n }\n });\n this._observer.observe(this._target, BORDER_BOX);\n }\n window.addEventListener('resize', this._checkSizeHandler, false);\n }\n _stop() {\n window.cancelAnimationFrame(this._handle);\n window.removeEventListener('resize', this._checkSizeHandler, false);\n if (!Utils.isNull(this._observer)) {\n this._observer.disconnect();\n this._observer = null;\n }\n }\n _startWatchIntensively() {\n this._checkSize();\n this._handle = window.requestAnimationFrame(() => {\n this._startWatchIntensively();\n });\n }\n //@Throttle(true)\n _assignSizeDebounced() {\n this._checkSize();\n }\n _checkSize() {\n this.log(LogLevel.Log, 'Resize flow triggered.');\n let el = this._target;\n const rect = Utils.offset(el);\n let height = rect.height;\n let width = rect.width;\n if (height != this._previousHeight\n || width != this._previousWidth\n || (this.watchPosition &&\n (rect.left != this._previousLeft\n || rect.top != this._previousTop))) {\n this._previousHeight = height;\n this._previousWidth = width;\n this._previousLeft = rect.left;\n this._previousTop = rect.top;\n this._dispatchResize();\n }\n }\n get currentSize() {\n var args = { height: this._previousHeight, width: this._previousWidth };\n if (this.watchPosition) {\n args.left = this._previousLeft;\n args.top = this._previousTop;\n }\n return args;\n }\n _dispatchResize() {\n this.dispatchEvent(new ResizeEvent(this.currentSize));\n }\n connectedCallback() {\n super.connectedCallback();\n this._start();\n }\n disconnectedCallback() {\n this._stop();\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemResizeElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemResizeElement.prototype, \"watchPosition\", void 0);\nPacemResizeElement = __decorate([\n CustomElement({ tagName: P + '-resize' })\n], PacemResizeElement);\nexport { PacemResizeElement };\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 { CustomElement, PacemEventTarget, Watch, P, PropertyConverters, Utils } from './_default-imports';\nimport { CustomTypedEvent } from '../../events';\n//namespace Pacem {\nexport const RouterNavigatingEventName = 'navigating';\nexport const RouterNavigateEventName = 'navigate';\nexport class RouterNavigateEvent extends CustomTypedEvent {\n constructor(path) {\n super(RouterNavigateEventName, typeof path === 'string' ? { path } : path, { cancelable: false, bubbles: false });\n }\n}\nexport class RouterNavigatingEvent extends CustomTypedEvent {\n constructor(path) {\n super(RouterNavigatingEventName, path, { cancelable: true, bubbles: false });\n }\n}\n//}\n//namespace Pacem.Components {\nconst CHECK_PATTERN = /^([\\w\\.]:)?\\/\\/[^\\/]+/;\nlet PacemRouterElement = class PacemRouterElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._onPopState = (evt) => {\n if (!Utils.isNull(evt.state) && !this.#cancelingNavigation) {\n this.path = evt.state.$path;\n }\n };\n }\n #cancelingNavigation;\n #template;\n parseState(state = {}) {\n const path = this._stringifyMergedState(state);\n const segments = this._segmentateUrl(path);\n return this._parseState(segments.path + segments.query + segments.hash, segments.path, segments.query, segments.hash);\n }\n navigate(path, title) {\n if (this.disabled || Utils.isNullOrEmpty(path)) {\n return;\n }\n if (typeof path === 'object') {\n path = this._stringifyMergedState(path);\n }\n else {\n // ease state reutilization\n path = Utils.URIs.format(path, this.state);\n }\n if (path != this.path) {\n this.path = path;\n return;\n }\n const l = document.location;\n if (CHECK_PATTERN.test(path)) {\n if (!path.startsWith(l.protocol + '//' + l.host)) {\n throw `Only same-origin navigation is currently supported. \"${path}\" is not a valid path.`;\n }\n }\n if (!this.#cancelingNavigation) {\n // coming from path...\n const from = this.state && this.state.$path || void 0;\n // processing new segments and state\n const segments = this._segmentateUrl(path), state = this._parseState(segments.path + segments.query + segments.hash, segments.path, segments.query, segments.hash);\n // popping state? aka history.back()/.forward()/.go(...)?\n // means that the URL is already in the target fashion\n const poppingState = (l.pathname + l.search + l.hash) === segments.path + segments.query + segments.hash;\n const evt = new RouterNavigatingEvent(path);\n window.dispatchEvent(evt);\n if (this.#cancelingNavigation = evt.defaultPrevented) {\n // this will cut the history stack, no better option tho...\n if (poppingState) {\n // re-push current state\n window.history.pushState(this.state, title, from);\n }\n this.path = from;\n // exiting\n return;\n }\n // this one actually does trigger the navigation in the outer world\n this.state = state;\n if (poppingState) {\n window.history.scrollRestoration = 'manual';\n window.history.replaceState(state, title);\n }\n else {\n window.history.pushState(state, title, path);\n }\n if (!Utils.isNullOrEmpty(title)) {\n document.title = title;\n }\n window.dispatchEvent(new RouterNavigateEvent({ path, referrer: from, title }));\n }\n this.#cancelingNavigation = false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'template':\n this.#template = null;\n break;\n case 'path':\n this.navigate(val);\n break;\n }\n }\n }\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('popstate', this._onPopState, false);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const p = this.path;\n if (!Utils.isNullOrEmpty(p)) {\n this.navigate(p);\n }\n }\n disconnectedCallback() {\n window.removeEventListener('popstate', this._onPopState, false);\n super.disconnectedCallback();\n }\n /**\n * Merged to provided state into the current one and returns the resulting path (including current querystring and hash).\n * @param state Piece of new state to be merged\n */\n _stringifyMergedState(state) {\n const stateCopy = Utils.extend({}, state);\n const newState = Utils.extend({}, this.state, stateCopy);\n const tmpl = this.template;\n let retval = '' + tmpl;\n for (let item of this._parseTemplate(tmpl)) {\n const prop = item.name;\n const pattern = new RegExp(\"\\/\\{\" + prop + \"\\\\??\\}\");\n const value = newState[prop];\n delete stateCopy[prop];\n retval = retval.replace(pattern, Utils.isNullOrEmpty(value) ? '' : ('/' + value));\n }\n // leftovers appended as query parameters\n const q = Utils.extend({}, this.state.$query);\n for (let prop in stateCopy) {\n q[prop] = stateCopy[prop];\n }\n const { hash } = this._segmentateUrl(this.path);\n return Utils.URIs.appendQuery(retval, q, true) + hash;\n }\n _parseTemplate(tmpl = this.template) {\n if (!Utils.isNullOrEmpty(this.#template)) {\n return this.#template;\n }\n return this.#template = Utils.URIs.parseRoute(tmpl);\n }\n _segmentateUrl(url) {\n const retval = Utils.URIs.split(url);\n if (Utils.isNullOrEmpty(retval.path)) {\n return null;\n }\n return retval;\n }\n _parseState(fullPath, path, query, hash) {\n const tmpl = this._parseTemplate();\n return Utils.URIs.parseState(tmpl, fullPath, path, query, hash);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemRouterElement.prototype, \"template\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemRouterElement.prototype, \"state\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemRouterElement.prototype, \"path\", void 0);\nPacemRouterElement = __decorate([\n CustomElement({ tagName: P + '-router' })\n], PacemRouterElement);\nexport { PacemRouterElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { CustomTypedEvent } from '../../events';\n//namespace Pacem.Components {\nexport const ScrollEventName = 'scroll';\nexport class ScrollEvent extends CustomTypedEvent {\n constructor(args) {\n super(ScrollEventName, args);\n }\n}\n// see also viewport-aware\nclass PacemScrollOrchestrator {\n constructor(global) {\n this.global = global;\n this.scrollers = [];\n this.scrollHandler = (evt) => {\n this._scroll(evt);\n };\n }\n register(vport) {\n const scrlls = this.scrollers;\n if (scrlls.indexOf(vport) === -1) {\n scrlls.push(vport);\n if (scrlls.length === 1) {\n this.global.addEventListener('scroll', this.scrollHandler, false);\n }\n this._scroll();\n }\n }\n unregister(vport) {\n var ndx;\n const scrlls = this.scrollers;\n if ((ndx = scrlls.indexOf(vport)) !== -1) {\n scrlls.splice(ndx, 1);\n if (scrlls.length === 0) {\n this.global.removeEventListener('scroll', this.scrollHandler, false);\n }\n }\n }\n _scroll(_) {\n for (var scroller of this.scrollers) {\n if (Utils.isNull(scroller.target)) {\n const top = Utils.scrollTop, left = Utils.scrollLeft;\n scroller.offset = { top, left };\n }\n else {\n const top = scroller.target.scrollTop, left = scroller.target.scrollLeft;\n scroller.offset = { top, left };\n }\n scroller.dispatchEvent(new ScrollEvent(scroller.offset));\n }\n }\n}\nconst ORCHESTRATOR = new PacemScrollOrchestrator(window);\n/**\n * Manages scrolling interactions firing self-referenced ad-hoc events.\n */\nlet PacemScrollAwareElement = class PacemScrollAwareElement extends PacemEventTarget {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n //\n ORCHESTRATOR.register(this);\n }\n disconnectedCallback() {\n ORCHESTRATOR.unregister(this);\n //\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemScrollAwareElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemScrollAwareElement.prototype, \"offset\", void 0);\nPacemScrollAwareElement = __decorate([\n CustomElement({\n tagName: P + '-scroll-aware'\n })\n], PacemScrollAwareElement);\nexport { PacemScrollAwareElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nfunction base64ToUint8Array(base64) {\n const padding = '='.repeat((4 - base64.length % 4) % 4);\n base64 = (base64 + /*ensure correct length*/ padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n const rawData = window.atob(base64);\n const output = new Uint8Array(rawData.length);\n for (var i = 0; i < rawData.length; i++) {\n output[i] = rawData.charCodeAt(i);\n }\n return output;\n}\nlet PacemServiceWorkerProxyElement = class PacemServiceWorkerProxyElement extends PacemEventTarget {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._tryRegister();\n }\n disconnectedCallback() {\n this._tryUnregister();\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'pushSubscription':\n if (!Utils.isNull(old)) {\n this.dispatchEvent(new CustomEvent('unsubscribe', { detail: old }));\n }\n if (!Utils.isNull(val)) {\n this.dispatchEvent(new CustomEvent('subscribe', { detail: val }));\n }\n break;\n case 'registration':\n if (!Utils.isNull(old)) {\n this.dispatchEvent(new CustomEvent('unregister', { detail: old }));\n }\n if (!Utils.isNull(val)) {\n this.dispatchEvent(new CustomEvent('register', { detail: val }));\n }\n break;\n }\n }\n _tryUnregister(reg = this.registration) {\n if (!Utils.isNull(reg)) {\n return reg.unregister();\n }\n return Promise.resolve(true);\n }\n _tryRegister(src = this.src) {\n this._tryUnregister().then(_ => {\n // register new sw\n if (!Utils.isNullOrEmpty(src) && 'serviceWorker' in navigator) {\n navigator.serviceWorker.register(src)\n .then(reg => {\n this.registration = reg;\n if ('PushManager' in window) {\n reg.pushManager.getSubscription().then(sub => {\n this.pushSubscription = sub;\n });\n }\n });\n }\n });\n }\n unsubscribe(subscription = this.pushSubscription) {\n return new Promise((resolve, reject) => {\n if (!Utils.isNull(subscription)) {\n const refresh = subscription === this.pushSubscription;\n subscription.unsubscribe().then(result => {\n if (refresh) {\n // triggers 'unsubscribe' event\n this.pushSubscription = null;\n }\n resolve(result);\n });\n }\n else {\n resolve(false);\n }\n });\n }\n subscribe(publicKey = this.publicKey) {\n return new Promise((resolve, reject) => {\n if (typeof publicKey === 'string') {\n publicKey = base64ToUint8Array(publicKey);\n }\n const push = this.registration?.pushManager;\n if (!Utils.isNull(push)) {\n push.subscribe({\n userVisibleOnly: true,\n applicationServerKey: publicKey\n }).then(subscription => {\n if (Notification.permission === 'denied') {\n resolve(this.pushSubscription = null);\n }\n else {\n resolve(/* triggers 'subscribe' event */ this.pushSubscription = subscription);\n }\n });\n }\n else {\n // no PushManager available\n resolve(null);\n }\n });\n }\n};\n__decorate([\n Watch()\n], PacemServiceWorkerProxyElement.prototype, \"registration\", void 0);\n__decorate([\n Watch()\n], PacemServiceWorkerProxyElement.prototype, \"pushSubscription\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemServiceWorkerProxyElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemServiceWorkerProxyElement.prototype, \"publicKey\", void 0);\nPacemServiceWorkerProxyElement = __decorate([\n CustomElement({ tagName: P + '-serviceworker-proxy' })\n], PacemServiceWorkerProxyElement);\nexport { PacemServiceWorkerProxyElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { avoidHandler } from '../../utils';\nimport { CustomEventUtils } from '../../utils-customevent';\n//namespace Pacem.Components {\nconst KEYEVT = \"keydown\";\nfunction matchesKeyCombination(evt, combo, accumulator = []) {\n if (Utils.isNullOrEmpty(combo)) {\n return false;\n }\n const modifierPattern = /(\\w+)\\s*\\+/;\n const modifiers = [];\n let regExc;\n while (!Utils.isNullOrEmpty(regExc = modifierPattern.exec(combo))) {\n combo = combo.substr(regExc.index + regExc[0].length);\n modifiers.push(regExc[1]);\n }\n if (!CustomEventUtils.matchModifiers(evt, modifiers)) {\n return false;\n }\n const pieces = combo.split(',').map(p => p.trim().toLowerCase());\n if (Utils.isNullOrEmpty(pieces)) {\n // bad combination format\n return false;\n }\n var char = evt.key.toLowerCase();\n if (charEquals(char, pieces[accumulator.length])) {\n accumulator.push(char);\n return accumulator.length == pieces.length ? true : \"ongoing\";\n }\n return false;\n}\nfunction charEquals(key, piece) {\n return key === piece\n // adjust some aliases\n || (key === \"escape\" && piece === \"esc\")\n || (key === \"backspace\" && piece === \"back\")\n || (key === \"control\" && piece === \"ctrl\")\n || (key === \"delete\" && (piece === \"del\" || piece === \"canc\"))\n || (/^arrow/.test(key) && (piece === key.substr(5)));\n}\nexport const KeyboardShortcutExecuteEventName = \"execute\";\nlet PacemShortcutElement = class PacemShortcutElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._accumulator = [];\n this._shortcutHandler = (evt) => {\n const result = (matchesKeyCombination(evt, this.combination, this._accumulator));\n switch (result) {\n case true:\n avoidHandler(evt);\n this.dispatchEvent(new Event(KeyboardShortcutExecuteEventName, { bubbles: false, cancelable: false }));\n // let flow below...\n case false:\n this._accumulator.splice(0);\n break;\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._addHandler();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'target' && !first) {\n this._removeHandler(old);\n this._addHandler(val);\n }\n }\n disconnectedCallback() {\n this._removeHandler();\n super.disconnectedCallback();\n }\n _removeHandler(target = this.target) {\n (target || window).removeEventListener(KEYEVT, this._shortcutHandler, false);\n }\n _addHandler(target = this.target) {\n (target || window).addEventListener(KEYEVT, this._shortcutHandler, false);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemShortcutElement.prototype, \"combination\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemShortcutElement.prototype, \"target\", void 0);\nPacemShortcutElement = __decorate([\n CustomElement({ tagName: P + '-shortcut' })\n], PacemShortcutElement);\nexport { PacemShortcutElement };\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 { CustomElement, P, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { PacemSafeContentElement } from './types';\n//namespace Pacem.Components {\nlet PacemSpanElement = class PacemSpanElement extends PacemSafeContentElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'text' && !first) {\n this.textContent = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (!Utils.isNull(this.text)) {\n this.textContent = this.text;\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSpanElement.prototype, \"text\", void 0);\nPacemSpanElement = __decorate([\n CustomElement({ tagName: P + '-span' })\n], PacemSpanElement);\nexport { PacemSpanElement };\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 { CustomElement, P, Watch, PropertyConverters, Utils, PacemEventTarget } from './_default-imports';\nimport { CustomElementUtils } from '../../utils-customelement';\n//namespace Pacem.Components {\nlet PacemStyleProxyElement = class PacemStyleProxyElement extends PacemEventTarget {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'cssText':\n if (!Utils.isNull(this._style)) {\n this.cssReady = false;\n this._style.textContent = val;\n if (Utils.isNullOrEmpty(val)) {\n this.cssReady = true;\n }\n else {\n this._idleWhileReady();\n }\n }\n break;\n case 'disabled':\n case 'src':\n this._fetch();\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const style = this._style = document.createElement('style');\n style.setAttribute('type', 'text/css');\n document.head.appendChild(style);\n this._fetch();\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._style)) {\n this._style.remove();\n }\n super.disconnectedCallback();\n }\n _idleWhileReady() {\n let css = this._style.sheet;\n let fn = () => {\n try {\n if (css.cssRules.length > 0) {\n clearInterval(handle);\n CustomElementUtils.Theme.importWebFonts().then(_ => {\n this.cssReady = true;\n this.dispatchEvent(new Event('cssready'));\n });\n }\n }\n catch (e) { }\n };\n let handle = setInterval(fn, 100);\n }\n _fetch() {\n const src = this.src, style = this._style;\n if (this.disabled || Utils.isNull(style)) {\n return;\n }\n if (Utils.isNullOrEmpty(src)) {\n style.textContent = this.cssText || '';\n }\n else {\n // fetching\n this.cssReady = false;\n fetch(src).then(resp => {\n resp.text().then(css => {\n style.textContent = css;\n this._idleWhileReady();\n }, _ => {\n // error\n this.cssReady = true;\n });\n }, _ => {\n // error\n this.cssReady = true;\n });\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemStyleProxyElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemStyleProxyElement.prototype, \"cssText\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemStyleProxyElement.prototype, \"cssReady\", void 0);\nPacemStyleProxyElement = __decorate([\n CustomElement({\n tagName: P + '-style-proxy'\n })\n], PacemStyleProxyElement);\nexport { PacemStyleProxyElement };\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 { CustomElement, P, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemTextElement = class PacemTextElement extends HTMLElement {\n constructor() {\n super();\n }\n connectedCallback() {\n if (this.childNodes.length == 0) {\n this.innerHTML = ' ';\n }\n this._text = this.childNodes.item(0);\n }\n propertyChangedCallback(name, old, val, first) {\n if (Utils.isNull(val) && first === true)\n return;\n this._text.nodeValue = val;\n }\n};\n__decorate([\n Watch({ emit: false /*, debounce: true*/, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"text\", void 0);\nPacemTextElement = __decorate([\n CustomElement({ tagName: P + '-text' })\n], PacemTextElement);\nexport { PacemTextElement };\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 { CustomElement, P, Watch, PropertyConverters, PacemEventTarget } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemTimerElement = class PacemTimerElement extends PacemEventTarget {\n constructor() {\n super();\n this._handle = 0;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'interval':\n case 'disabled':\n this._restart();\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._restart();\n }\n disconnectedCallback() {\n window.clearInterval(this._handle);\n super.disconnectedCallback();\n }\n _restart() {\n clearInterval(this._handle);\n if (!this.disabled && this.interval > 0) {\n this._handle = window.setInterval(() => {\n this.dispatchEvent(new Event(\"tick\", { bubbles: false, cancelable: false }));\n }, this.interval);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTimerElement.prototype, \"interval\", void 0);\nPacemTimerElement = __decorate([\n CustomElement({ tagName: P + '-timer' })\n], PacemTimerElement);\nexport { PacemTimerElement };\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 { CustomElement, P, Watch, PropertyConverters, PacemEventTarget, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemTitleProxyElement = class PacemTitleProxyElement extends PacemEventTarget {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n this._update();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._update();\n }\n _update() {\n const value = this.value;\n if (Utils.isNullOrEmpty(value) || this.disabled) {\n // No key means do nothing\n return;\n }\n document.title = value;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTitleProxyElement.prototype, \"value\", void 0);\nPacemTitleProxyElement = __decorate([\n CustomElement({\n tagName: P + '-title-proxy'\n })\n], PacemTitleProxyElement);\nexport { PacemTitleProxyElement };\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 { CustomElement, P, Watch, PropertyConverters, PacemEventTarget, LogLevel } from './_default-imports';\nimport { TweenService } from '../../animations/tween-service';\nimport { AnimationEvent as PacemAnimationEvent, AnimationStartEvent, AnimationEndEvent } from '../../animations/events';\n//namespace Pacem.Components {\nlet PacemTweenElement = class PacemTweenElement extends PacemEventTarget {\n constructor(_tweener = new TweenService()) {\n super();\n this._tweener = _tweener;\n this.duration = 1000;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'start') {\n if (val === true && this.disabled != true)\n this._animate();\n }\n }\n run() {\n return this._animate();\n }\n _animate() {\n var started = false;\n return this._tweener.run(this.from, this.to, this.duration, this.delay, this.easing, (time, value) => {\n started = started == false && this.dispatchEvent(new AnimationStartEvent());\n this.dispatchEvent(new PacemAnimationEvent({ time: time, value: this.value = value }));\n this.log(LogLevel.Info, 'value: ' + this.value);\n if (time == 1.0) {\n this.dispatchEvent(new AnimationEndEvent());\n // reset start property\n this.start = false; // <- will trigger the animation the next time that will be set to true\n }\n });\n }\n};\n__decorate([\n Watch({ emit: false })\n], PacemTweenElement.prototype, \"easing\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemTweenElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemTweenElement.prototype, \"to\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTweenElement.prototype, \"duration\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTweenElement.prototype, \"delay\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemTweenElement.prototype, \"start\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTweenElement.prototype, \"value\", void 0);\nPacemTweenElement = __decorate([\n CustomElement({ tagName: P + '-tween' })\n], PacemTweenElement);\nexport { PacemTweenElement };\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 { CustomElement, P, Watch, PropertyConverters, PacemEventTarget, Utils, PCSS } from './_default-imports';\nimport { Debounce } from '../../decorators';\n//namespace Pacem.Components {\n// TODO: go native with IntersectionObserver \n// https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n// TODO: elementify the concept of an ochestrator\n// see also scroll-aware\n/** @deprecated */\nclass PacemViewportOrchestrator {\n constructor(_global) {\n this._global = _global;\n this.viewports = [];\n this._checkHandler = (evt) => {\n this._oncheck(evt);\n };\n }\n register(vport) {\n const vports = this.viewports, win = this._global;\n if (vports.indexOf(vport) === -1) {\n vports.push(vport);\n if (vports.length === 1) {\n // TODO: check against overflow: 'auto' | 'scroll' elements with constrained heights/widths...\n win.addEventListener('resize', this._checkHandler, false);\n win.addEventListener('scroll', this._checkHandler, false);\n win.addEventListener('transitionend', this._checkHandler, false);\n win.addEventListener('animationend', this._checkHandler, false);\n }\n this._oncheck();\n }\n }\n unregister(vport) {\n var ndx;\n const vports = this.viewports, win = this._global;\n if ((ndx = vports.indexOf(vport)) !== -1) {\n vports.splice(ndx, 1);\n if (vports.length === 0) {\n win.removeEventListener('resize', this._checkHandler, false);\n win.removeEventListener('scroll', this._checkHandler, false);\n win.removeEventListener('transitionend', this._checkHandler, false);\n win.removeEventListener('animationend', this._checkHandler, false);\n }\n this._oncheck();\n }\n }\n isElementVisible(el, ignoreHorizontal) {\n const vportSize = Utils.windowSize;\n var doc = this._global.document, rect = el.getBoundingClientRect(), vWidth = vportSize.width, vHeight = vportSize.height, efp = function (x, y) { return document.elementFromPoint(x, y); };\n return rect.bottom > 0 && rect.top < (0 + vHeight)\n && (ignoreHorizontal || (rect.left < (vWidth + 0) && rect.right > 0));\n }\n _oncheck(evt) {\n for (var el of this.viewports) {\n const tget = el.target || el;\n const newviz = this.isElementVisible(tget, el.ignoreHorizontal);\n if (newviz !== el.visible) {\n var visible = el.visible = newviz;\n if (visible)\n Utils.addClass(tget, PCSS + '-in-viewport');\n else\n Utils.removeClass(tget, PCSS + '-in-viewport');\n }\n }\n }\n}\n__decorate([\n Debounce(100)\n], PacemViewportOrchestrator.prototype, \"_oncheck\", null);\nconst ORCHESTRATOR = new PacemViewportOrchestrator(window);\n/** @deprecated */\nlet PacemViewportAwareElement = class PacemViewportAwareElement extends PacemEventTarget {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n //\n ORCHESTRATOR.register(this);\n }\n disconnectedCallback() {\n ORCHESTRATOR.unregister(this);\n //\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemViewportAwareElement.prototype, \"visible\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemViewportAwareElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemViewportAwareElement.prototype, \"ignoreHorizontal\", void 0);\nPacemViewportAwareElement = __decorate([\n CustomElement({ tagName: P + '-viewport-aware' })\n], PacemViewportAwareElement);\nexport { PacemViewportAwareElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemWebWorkerProxyElement = class PacemWebWorkerProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.autosend = true;\n this._messageHandler = (evt) => {\n this.result = evt.data;\n this.dispatchEvent(new CustomEvent('receive', { detail: evt.data, bubbles: false, cancelable: false }));\n };\n this._errorHandler = (evt) => {\n this.dispatchEvent(new CustomEvent('error', { detail: evt.error, bubbles: false, cancelable: false }));\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._initializeWorker();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'src':\n this._disposeWorker();\n this._initializeWorker(val);\n break;\n case 'autosend':\n case 'disabled':\n case 'message':\n if (this.autosend) {\n this.send(this.message);\n }\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeWorker();\n super.disconnectedCallback();\n }\n send(message = this.message) {\n if (this.disabled) {\n return;\n }\n const worker = this._worker;\n if (!Utils.isNull(worker)) {\n worker.postMessage(message);\n }\n }\n _initializeWorker(src = this.src) {\n if (!Utils.isNullOrEmpty(src)) {\n const worker = this._worker = new Worker(src);\n worker.addEventListener('message', this._messageHandler, false);\n worker.addEventListener('error', this._errorHandler, false);\n if (this.autosend && !Utils.isNull(this.message)) {\n this.send();\n }\n }\n }\n _disposeWorker(worker = this._worker) {\n if (!Utils.isNull(worker)) {\n worker.removeEventListener('error', this._errorHandler, false);\n worker.removeEventListener('message', this._messageHandler, false);\n worker.terminate();\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemWebWorkerProxyElement.prototype, \"message\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemWebWorkerProxyElement.prototype, \"result\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemWebWorkerProxyElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemWebWorkerProxyElement.prototype, \"autosend\", void 0);\nPacemWebWorkerProxyElement = __decorate([\n CustomElement({ tagName: P + '-webworker-proxy' })\n], PacemWebWorkerProxyElement);\nexport { PacemWebWorkerProxyElement };\n//}\n","import { PacemEventTarget } from '../eventtarget';\n//namespace Pacem.Behaviors{\nexport class PacemBehavior extends PacemEventTarget {\n #items = new WeakSet();\n register(element) {\n var container = this.#items;\n if (!container.has(element)) {\n container.add(element);\n this.decorate(element);\n }\n }\n unregister(element) {\n var container = this.#items;\n if (container.has(element)) {\n this.undecorate(element);\n container.delete(element);\n }\n }\n has(element) {\n return this.#items.has(element);\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 { Matrix2D } from '@pacem/pacem-foundation';\nimport { Utils, avoidHandler } from '../../utils';\nimport { CustomElementUtils, Repeater, RepeaterItem } from '../../utils-customelement';\nimport { CustomEventUtils } from '../../utils-customevent';\nimport { LogLevel } from '../../logger';\nimport { PropertyConverters } from '../../converters';\nimport { CustomElement, Watch } from '../../decorators';\nimport { P, PCSS } from '../../prefix';\nimport { PacemBehavior } from '../behavior';\nimport { DragDataMode, DropBehavior, DragDropEvent, DragDropEventArgsClass, DragDropInitEventArgsClass, DropTargetMissedBehavior, DragDropEventType } from '../../ui/drag-drop';\nimport { PacemRepeaterElement, RepeaterItem as PacemRepeaterItem } from '../basic/repeater';\n//namespace Pacem.Components {\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst DEL_VAL = CustomElementUtils.deleteAttachedPropertyValue;\nconst MOUSE_DOWN = 'pacem:dragdrop:mousedown';\nconst DRAGGING = 'pacem:dragdrop:info';\nconst DELEGATE = 'pacem:dragdrop:delegate';\n/**\n * Class to whom delegate the window-relevant events (in a possible future, distopic, multi-pointer scenario)\n */\nclass DragElementDelegate {\n constructor(initArgs, _logFn) {\n this._logFn = _logFn;\n this._started = false;\n // #endregion\n this._enterHandler = (evt) => {\n this._currentTarget = evt.target;\n };\n this._leaveHandler = (evt) => {\n this._currentTarget = null;\n };\n this._revertTrackedTarget = null;\n this._moveHandler = (evt) => {\n if (evt.type !== 'wheel') {\n avoidHandler(evt);\n }\n var el = this._element, dragger = this._dragDropper, currentPosition, args = GET_VAL(el, DRAGGING);\n //\n function getCurrentPosition() {\n return currentPosition = currentPosition || (evt instanceof MouseEvent ? { x: evt.pageX, y: evt.pageY } : { x: evt.touches[0].pageX, y: evt.touches[0].pageY });\n }\n // start\n if (!this._started) {\n this._logFn(LogLevel.Info, 'Dragging act started');\n this._started = true;\n // starting from a container/drop-target?\n if (dragger.dropBehavior === DropBehavior.InsertChild) {\n var container = el;\n do {\n // could have nested containers,\n // keep navigating up the dom tree\n container = container.parentElement;\n } while (container && dragger.dropTargets.indexOf(container) == -1);\n this._currentTarget = container;\n }\n dragger.dispatchEvent(new DragDropEvent(DragDropEventType.Start, DragDropEventArgsClass.fromArgs(args), {}, evt));\n }\n // move\n if (!Utils.isNull(args)) {\n this._logFn(LogLevel.Debug, 'Dragging act ongoing');\n const isMouseFlag = evt instanceof MouseEvent;\n //if (evt.type !== 'wheel')\n // Pacem.avoidHandler(evt);\n Utils.addClass(CustomElementUtils.findAncestorShell(el), PCSS + '-dragging');\n const pos = args.currentPosition = getCurrentPosition();\n let floater = args.floater;\n let moveEvt = new DragDropEvent(DragDropEventType.Drag, DragDropEventArgsClass.fromArgs(args), { cancelable: true }, evt);\n // dispatch move event\n dragger.dispatchEvent(moveEvt);\n if (!moveEvt.defaultPrevented // obey the - eventual - canceling feedback\n && (floater instanceof HTMLElement || floater instanceof SVGElement)) {\n // move\n let delta = { x: moveEvt.detail.delta.x, y: moveEvt.detail.delta.y };\n floater.style.transform = `translate3d(${delta.x}px, ${delta.y}px, 0)`;\n }\n // what am I over?\n var hover = this._currentTarget;\n if (!isMouseFlag && dragger.dropTargets.length > 0) {\n hover = document\n .elementsFromPoint(args.currentPosition.x - Utils.scrollLeft, args.currentPosition.y - Utils.scrollTop)\n .find(e => dragger.dropTargets.indexOf(e) >= 0);\n }\n // changed hover element since last time?\n var oldTarget = args.target;\n if (hover !== oldTarget) {\n if (!Utils.isNull(oldTarget)) {\n Utils.removeClass(oldTarget, PCSS + '-dropping');\n dragger.dispatchEvent(new DragDropEvent(DragDropEventType.Out, DragDropEventArgsClass.fromArgs(args), {}, evt));\n this._logFn(LogLevel.Info, `Drop area left (${(oldTarget['id'] || oldTarget.constructor.name)})`);\n }\n if (dragger.dropTargets.indexOf(hover) != -1) {\n args.target = hover;\n this._logFn(LogLevel.Info, `Drop area entering (${(args.target['id'] || args.target.constructor.name)})`);\n let evt0 = new DragDropEvent(DragDropEventType.Over, DragDropEventArgsClass.fromArgs(args), { cancelable: true }, evt);\n dragger.dispatchEvent(evt0);\n if (evt0.defaultPrevented) {\n delete args.target;\n }\n else {\n Utils.addClass(args.target, PCSS + '-dropping');\n this._logFn(LogLevel.Info, `Drop area entered (${(args.target['id'] || args.target.constructor.name)})`);\n }\n }\n else {\n delete args.target;\n }\n }\n this._revertTrackedTarget = args.target || oldTarget;\n // positioning\n if (!Utils.isNull(args.target) && dragger.dropBehavior === DropBehavior.InsertChild) {\n this._insertChild(hover, args);\n }\n else \n // if spilling out from a drop target, avoid undesired `copy` of an element.\n if (Utils.isNull(args.target) && dragger.mode === DragDataMode.Copy) {\n const ph = args.placeholder;\n if (ph instanceof Element)\n ph.remove();\n }\n }\n };\n this._endHandler = (evt) => {\n var el = this._element, shell = CustomElementUtils.findAncestorShell(el), dragger = this._dragDropper, args;\n if (!Utils.isNull(args = GET_VAL(el, DRAGGING))) {\n if (evt instanceof MouseEvent)\n avoidHandler(evt);\n // #region dispose fn\n let fnDispose = () => {\n let floater = args.floater;\n if (floater instanceof HTMLElement || floater instanceof SVGElement) {\n floater.style.pointerEvents = '';\n }\n if (dragger.mode !== DragDataMode.Self) {\n args.floater.remove();\n }\n Utils.removeClass(el, PCSS + '-dragging');\n Utils.removeClass(el, PCSS + '-drag-lock');\n DEL_VAL(el, DRAGGING);\n if (!Utils.isNull(args.placeholder)) {\n Utils.removeClass(args.placeholder, PCSS + '-dragging');\n Utils.removeClass(args.placeholder, 'drag-placeholder');\n Utils.removeClass(args.placeholder, PCSS + '-drag-lock');\n DEL_VAL(args.placeholder, DRAGGING);\n }\n // === drop\n const dropping = !Utils.isNull(args.target);\n if (dropping) {\n dragger.dispatchEvent(new DragDropEvent(DragDropEventType.Drop, DragDropEventArgsClass.fromArgs(args), {}, evt));\n Utils.removeClass(args.target, PCSS + '-dropping');\n }\n // === cleanup\n const data = args.data, dropTargets = dragger.dropTargets, placeholder = args.placeholder, repItem = this._repeaterItem, sourceRepeater = this._sourceRepeater, isDraggingRepeaterItem = !Utils.isNull(repItem), targetRepItem = placeholder && this._findTargetRepeaterItem(args.placeholder.parentElement, args.placeholder.nextElementSibling), targetRepeater = targetRepItem && targetRepItem.repeater, isCopying = dragger.mode === DragDataMode.Copy, \n // is dropping onto a repeater item?\n // true if\n // - is effectively dropping onto a repeater\n // - AND the target repeater doesn't equal the source one when a whole repeaterItem is involved.\n isDroppingRepeaterItem = dropping && !Utils.isNull(targetRepeater) && !(Utils.isNull(repItem) && sourceRepeater === targetRepeater);\n // refresh origin datasource and, eventually, target datasource\n if (isDraggingRepeaterItem && !isCopying && dropping) {\n sourceRepeater.removeItem(repItem.index);\n }\n if (isDroppingRepeaterItem) {\n args.placeholder.remove();\n if (targetRepeater === sourceRepeater && !isCopying) {\n let from = repItem.index, to = targetRepItem.index;\n if (to > from) {\n // tweak\n to--;\n }\n sourceRepeater.datasource.moveWithin(from, to);\n }\n else {\n if (!isCopying) {\n sourceRepeater && sourceRepeater.datasource.splice(repItem.index, 1);\n }\n targetRepeater && (targetRepeater.datasource = targetRepeater.datasource || []).splice(targetRepItem.index, 0, data);\n }\n }\n // Check spill behavior\n if (!dropping\n && !Utils.isNullOrEmpty(dragger.dropTargets)\n && dragger.spillBehavior === DropTargetMissedBehavior.Remove\n // if mode is 'copy' then don't remove the source\n && !isCopying) {\n if (isDraggingRepeaterItem) {\n sourceRepeater.datasource.splice(repItem.index, 1);\n }\n else {\n el.remove();\n }\n }\n // === end\n dragger.dispatchEvent(new DragDropEvent(DragDropEventType.End, DragDropEventArgsClass.fromArgs(args), {}, evt));\n //\n Utils.removeClass(shell, PCSS + '-dragging');\n };\n // #endregion\n // animate to target position\n const drag = args.placeholder || args.element;\n if (args.floater != drag) {\n let floater = args.floater;\n var m = Utils.deserializeTransform(getComputedStyle(floater));\n // dropping or reverting?\n if (!Utils.isNull(args.target)\n || dragger.spillBehavior === DropTargetMissedBehavior.Revert\n || (dragger.dropBehavior === DropBehavior.InsertChild && dragger.spillBehavior !== DropTargetMissedBehavior.Remove)) {\n // overlap to placeholder\n const tgetPos = Utils.offset(drag), srcPos = Utils.offset(floater);\n floater.style.transition = 'transform .2s ease-in-out';\n m = Matrix2D.translate(m, { x: tgetPos.left - srcPos.left, y: tgetPos.top - srcPos.top });\n }\n else {\n floater.style.transition = 'transform .2s ease-in, opacity .2s linear';\n // scale down to 0\n m = Matrix2D.scale(m, 0.1);\n floater.style.opacity = '0';\n }\n Utils.addAnimationEndCallback(floater, fnDispose, 300);\n floater.style.transform = `matrix(${m.a},${m.b},${m.c},${m.d},${m.e},${m.f})`;\n }\n else {\n fnDispose();\n }\n }\n Utils.removeClass(el, PCSS + '-drag-lock');\n // dispose\n this.dispose();\n this._logFn(LogLevel.Info, 'Dragging act disposed');\n };\n this._dragDropper = initArgs.dragDrop;\n Utils.addClass(this._element = initArgs.element, PCSS + '-drag-lock');\n window.addEventListener('mouseup', this._endHandler, false);\n window.addEventListener('touchend', this._endHandler, false);\n window.addEventListener('mousemove', this._moveHandler, false);\n document.addEventListener('wheel', this._moveHandler, false);\n window.addEventListener('touchmove', this._moveHandler, { capture: true, passive: false });\n this._dragDropper.dropTargets.forEach(t => {\n t.addEventListener('mouseenter', this._enterHandler, false);\n t.addEventListener('mouseleave', this._leaveHandler, false);\n });\n // is `_element` a dynamic one belonging to a repeater item?\n var repItem = Repeater.findItemContext(this._element, 0, null);\n if (repItem) {\n if (repItem.dom && repItem.dom.length === 1 && repItem.dom[0] === this._element) {\n this._repeaterItem = repItem;\n }\n this._sourceRepeater = repItem.repeater;\n }\n //\n this._bootstrap(initArgs.placeholder, initArgs.data);\n }\n // #region PRIVATE UTILS\n _getLogicalData(node) {\n if (node instanceof RepeaterItem)\n return node.item;\n if (node instanceof HTMLElement)\n return node.dataset;\n return node;\n }\n _getPhysicalData(node) {\n if (node instanceof PacemRepeaterItem)\n return node.dom;\n return [node];\n }\n _createFloater(src, origin) {\n const dragger = this._dragDropper;\n let floater = src;\n if (dragger.mode != DragDataMode.Self) {\n floater = floater.cloneNode(true);\n CustomElementUtils.stripObservedAttributes(floater);\n if (floater instanceof HTMLElement || floater instanceof SVGElement) {\n Utils.addClass(floater, PCSS + '-drag-floater');\n CustomElementUtils.findAncestorShell(this._element).appendChild(floater);\n floater.style.position = 'absolute';\n let pos = { left: origin.x + floater.clientWidth / 2, top: origin.y - floater.clientHeight / 2 };\n // if cloned the original element then preserve dimensions\n if (src === this._element || src.classList.contains('drag-floater-resize')) {\n let size = Utils.offset(this._element);\n floater.style.boxSizing = 'border-box';\n floater.style.width = size.width + 'px';\n floater.style.height = size.height + 'px';\n pos = { left: size.left, top: size.top };\n }\n // positioning\n floater.style.left = `${pos.left}px`;\n floater.style.top = `${pos.top}px`;\n }\n }\n if (floater instanceof HTMLElement || floater instanceof SVGElement) {\n floater.style.pointerEvents = 'none';\n }\n return floater;\n }\n _findTargetRepeaterItem(dropTarget, nextSibling) {\n var repItem = Repeater.findItemContext(nextSibling, 0, null);\n if (!Utils.isNull(repItem)) {\n return { repeater: repItem.repeater, index: repItem.index };\n }\n else {\n var repeater = null, index = -1;\n //\n if (dropTarget instanceof PacemRepeaterElement)\n repeater = dropTarget;\n else\n repeater = CustomElementUtils.findAncestorOfType(dropTarget, PacemRepeaterElement);\n //\n if (!Utils.isNull(repeater))\n return { repeater: repeater, index: (repeater.datasource && repeater.datasource.length) || 0 };\n }\n return null;\n }\n /**\n * Finds the physical next sibling given a container and dragging event arguments.\n * @param target Container\n * @param args Event arguments\n */\n _findNextSibling(target, args) {\n var lastX = 0, lastY = 0;\n const children = Array.from(target.children), length = children.length;\n // first hit tested element\n const hover = document.elementFromPoint(args.currentPosition.x - Utils.scrollLeft, args.currentPosition.y - Utils.scrollTop);\n // hit tested sibling (to spot)\n let hoverElement;\n // 1. hit tested element is the drop target (container)\n if (hover === target) {\n this._currentHover = hoverElement = args.placeholder;\n return hoverElement.parentElement === target ? hoverElement.nextElementSibling : null;\n }\n // loop until the parent element is the drop target\n var hoverSibling = hover;\n while (hoverSibling.parentElement != target && hoverSibling.parentElement != null) {\n hoverSibling = hoverSibling.parentElement;\n }\n // 2. hit tested element is the moving placeholder or is outside a drop target\n if (hoverSibling.parentElement != target || hoverSibling === args.placeholder) {\n this._currentHover = hoverElement = args.placeholder;\n return hoverElement.nextElementSibling;\n }\n // 3. hit tested element has changed\n if (hoverSibling != this._currentHover) {\n hoverElement = this._currentHover;\n const from = children.indexOf(hoverElement), to = children.indexOf(hoverSibling);\n this._currentHover = hoverSibling;\n return from > to ? hoverSibling : hoverSibling.nextElementSibling;\n }\n // 4. just return something\n return hoverSibling;\n }\n /**\n * This method is computationally heavy due to forced reflow!\n */\n _insertChild(targetContainer, args) {\n const drag = args.placeholder || args.element, drop = args.target, nextSibling = this._findNextSibling(drop, args);\n if (drag.nextSibling != nextSibling || drag.parentElement != drop) {\n if (Utils.isNull(nextSibling) || nextSibling.parentElement == targetContainer) {\n // TODO: change logic (try to move elements around with css transforms)\n targetContainer.insertBefore(drag, nextSibling);\n this._logFn(LogLevel.Info, `Positioned before ${(nextSibling && (nextSibling.id || nextSibling.constructor.name)) || \"null\"} for drop`);\n }\n }\n }\n _bootstrap(placeholder, dataObj) {\n var el = this._element, dragger = this._dragDropper, origin, args;\n if (!Utils.isNull(origin = GET_VAL(el, MOUSE_DOWN))) {\n this._started = false;\n DEL_VAL(el, MOUSE_DOWN);\n Utils.addClass(el, PCSS + '-dragging');\n let style = getComputedStyle(el), initialDelta = { x: 0, y: 0 }, css = Utils.deserializeTransform(style);\n //\n initialDelta.x += css.e;\n initialDelta.y += css.f;\n // === floater (first)\n let floater = this._createFloater(dragger.floater || el, origin);\n // === placeholder (then)\n if (Utils.isNull(placeholder)) {\n switch (dragger.mode) {\n case DragDataMode.Alias:\n placeholder = el;\n break;\n case DragDataMode.Copy:\n placeholder = el.cloneNode(true);\n break;\n }\n }\n // add peculiar css class\n if (!Utils.isNull(placeholder)) {\n Utils.addClass(placeholder, 'drag-placeholder');\n }\n // inside a repeater? freeze the item\n if (!Utils.isNull(this._repeaterItem) && !Utils.isNull(placeholder)) {\n CustomElementUtils.freezeObservedAttributes(placeholder);\n }\n const data = dataObj || this._getLogicalData(this._repeaterItem || el);\n // setup args\n args = {\n element: el,\n placeholder: placeholder || el,\n data,\n startTime: Date.now(),\n origin,\n initialDelta,\n currentPosition: origin,\n floater\n };\n SET_VAL(el, DRAGGING, args);\n }\n }\n dispose() {\n this._dragDropper.dropTargets.forEach(t => {\n t.removeEventListener('mouseenter', this._enterHandler, false);\n t.removeEventListener('mouseleave', this._leaveHandler, false);\n });\n window.removeEventListener('mouseup', this._endHandler, false);\n window.removeEventListener('touchend', this._endHandler, false);\n window.removeEventListener('mousemove', this._moveHandler, false);\n document.removeEventListener('wheel', this._moveHandler, false);\n window.removeEventListener('touchmove', this._moveHandler, { capture: true });\n }\n}\n/**\n * Pacem Drag & Drop element adapter.\n */\nlet PacemDragDropElement = class PacemDragDropElement extends PacemBehavior {\n constructor() {\n super(...arguments);\n this._startHandler = (evt) => {\n // sudden exit when disabled\n if (this.disabled) {\n return;\n }\n // only events with trusted interaction\n if (!evt.isTrusted) {\n return;\n }\n // check the handle selector\n if (!Utils.isNullOrEmpty(this.handleSelector)\n && evt.currentTarget.querySelector(this.handleSelector) !== evt.target) {\n return;\n }\n const el = evt.currentTarget, coords = CustomEventUtils.getEventCoordinates(evt), origin = coords.page;\n let element = el;\n let args = DragDropInitEventArgsClass.fromArgs({\n element: element,\n placeholder: null,\n currentPosition: origin,\n origin: origin,\n initialDelta: { x: 0, y: 0 },\n startTime: null,\n floater: null,\n data: null\n });\n // init event might be prevented\n const initEvent = new DragDropEvent(DragDropEventType.Init, args, { cancelable: true }, evt);\n this.dispatchEvent(initEvent);\n if (initEvent.defaultPrevented) {\n return;\n }\n // fair to go...\n // stop propagation\n avoidHandler(evt);\n const lockFn = () => {\n el.removeEventListener('mouseup', unlockFn, false);\n el.removeEventListener('touchend', unlockFn, false);\n this.log(LogLevel.Info, 'Drag locked!');\n SET_VAL(el, MOUSE_DOWN, origin);\n SET_VAL(el, DELEGATE, new DragElementDelegate({\n element: element, dragDrop: this, placeholder: args.placeholder, data: args.data,\n }, (level, message, category) => this.log.apply(this, [level, message, category])));\n };\n const unlockFn = (evt) => {\n this.log(LogLevel.Info, 'Drag avoided!');\n clearTimeout(toHandle);\n };\n const toHandle = setTimeout(lockFn, this.lockTimeout);\n el.addEventListener('mouseup', unlockFn, false);\n el.addEventListener('touchend', unlockFn, false);\n };\n /** Gets or sets the amount of milliseconds to wait, while pressing on the draggable object, until the object itself must be considered \"locked to drag\". */\n this.lockTimeout = 100;\n /** Gets or sets the drop targets (array of elements). */\n this.dropTargets = [];\n /** Gets or sets the drag mode (\"self\", \"alias\", \"copy\"). */\n this.mode = DragDataMode.Self;\n }\n decorate(element) {\n const options = { capture: false, passive: false };\n // TODO: add special effects starting the drag process after a while (timeout) the element is pressed. \n element.addEventListener('mousedown', this._startHandler, false);\n element.addEventListener('touchstart', this._startHandler, options);\n }\n undecorate(element) {\n const options = { capture: false, passive: false };\n element.removeEventListener('mousedown', this._startHandler, false);\n element.removeEventListener('touchstart', this._startHandler, options);\n }\n addEventListener(type, listener, useCapture) {\n super.addEventListener(type, listener, useCapture);\n }\n removeEventListener(type, listener, useCapture) {\n super.removeEventListener(type, listener, useCapture);\n }\n dispatchEvent(evt) {\n if (evt.type === DragDropEventType.End) {\n DEL_VAL(evt.detail.element, MOUSE_DOWN);\n DEL_VAL(evt.detail.element, DELEGATE);\n }\n return super.dispatchEvent(evt);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDragDropElement.prototype, \"lockTimeout\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemDragDropElement.prototype, \"dropTargets\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDragDropElement.prototype, \"mode\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemDragDropElement.prototype, \"floater\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDragDropElement.prototype, \"dropBehavior\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDragDropElement.prototype, \"spillBehavior\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDragDropElement.prototype, \"handleSelector\", void 0);\nPacemDragDropElement = __decorate([\n CustomElement({ tagName: P + '-drag-drop' })\n], PacemDragDropElement);\nexport { PacemDragDropElement };\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 { LogLevel, Utils, P, PCSS, CustomElement, Watch, PropertyConverters } from './_default-imports';\nimport { Point } from '@pacem/pacem-foundation';\nimport { RescaleEventType, RescaleEvent, RescaleEventArgsClass, RescaleHandle } from '../../ui/rescale';\nimport { PacemBehavior } from '../behavior';\nimport { CustomElementUtils } from '../../utils-customelement';\nimport { CustomEventUtils } from '../../utils-customevent';\nimport { avoidHandler } from '../../utils';\n//namespace Pacem.Components {\nclass RescaleElementDelegate {\n constructor(_element, _type, _rescaler, _logFn) {\n this._element = _element;\n this._type = _type;\n this._rescaler = _rescaler;\n this._logFn = _logFn;\n this._startTime = Date.now();\n this._moveHandler = (evt) => {\n evt.stopPropagation();\n const el = this._element, origin = this._origin, rescaler = this._rescaler, handle = this._type, keepProportions = rescaler.keepProportions, minWidth = rescaler.minWidth || 0, minHeight = rescaler.minHeight || 0, maxWidth = rescaler.maxWidth || Number.MAX_SAFE_INTEGER, maxHeight = rescaler.maxHeight || Number.MAX_SAFE_INTEGER, currentPosition = (evt instanceof MouseEvent ? { x: evt.pageX, y: evt.pageY } : { x: evt.touches[0].pageX, y: evt.touches[0].pageY }), position = { x: currentPosition.x, y: currentPosition.y }, origRect = this._rect;\n switch (handle) {\n case 'top':\n case 'bottom':\n position.x = origin.x;\n break;\n case 'left':\n case 'right':\n position.y = origin.y;\n break;\n }\n this._position = position;\n const delta = { x: position.x - origin.x, y: position.y - origin.y };\n var desiredRect;\n if (keepProportions) {\n const A = { x: origRect.x, y: origRect.y }, B = { x: origRect.x + origRect.width, y: origRect.y }, C = { x: origRect.x + origRect.width, y: origRect.y + origRect.height }, D = { x: origRect.x, y: origRect.y + origRect.height }, cos = Point.distance(C, D) / Point.distance(C, A), sin = Point.distance(A, D) / Point.distance(C, A), AC = Point.distance(A, C), proj = (v1, v2) => (v1.x * v2.x + v1.y * v2.y) / AC;\n switch (handle) {\n case \"topleft\":\n const vCA = Point.subtract(C, A);\n const dotCA = proj(Point.subtract(C, position), vCA);\n const topLeft = { x: C.x - dotCA * cos, y: C.y - dotCA * sin };\n desiredRect = { x: topLeft.x, y: topLeft.y, width: C.x - topLeft.x, height: C.y - topLeft.y };\n break;\n case \"topright\":\n const vDB = Point.subtract(D, B);\n const dotDB = proj(Point.subtract(D, position), vDB);\n const topRight = { x: D.x + dotDB * cos, y: D.y - dotDB * sin };\n desiredRect = { x: D.x, y: topRight.y, width: topRight.x - D.x, height: D.y - topRight.y };\n break;\n case \"bottomleft\":\n const vBD = Point.subtract(B, D);\n const dotBD = proj(Point.subtract(B, position), vBD);\n const bottomLeft = { x: B.x - dotBD * cos, y: B.y + dotBD * sin };\n desiredRect = { x: bottomLeft.x, y: B.y, width: B.x - bottomLeft.x, height: bottomLeft.y - B.y };\n break;\n default:\n const vAC = Point.subtract(A, C);\n const dotAC = proj(Point.subtract(A, position), vAC);\n const bottomRight = { x: A.x + dotAC * cos, y: A.y + dotAC * sin };\n desiredRect = { x: A.x, y: A.y, width: bottomRight.x - A.x, height: bottomRight.y - A.y };\n break;\n }\n }\n else {\n // compute bottomright as default\n desiredRect = { x: this._rect.x, y: this._rect.y, width: this._rect.width + delta.x, height: this._rect.height + delta.y };\n if (handle.startsWith('top')) {\n desiredRect.y = this._rect.y + delta.y;\n desiredRect.height = this._rect.height - delta.y;\n }\n if (handle.endsWith('left')) {\n desiredRect.x = this._rect.x + delta.x;\n desiredRect.width = this._rect.width - delta.x;\n }\n }\n this._logFn(LogLevel.Log, `handle: ${handle}, origin: ${JSON.stringify(origin)}, currentPosition: ${JSON.stringify(currentPosition)}`, `Rescaling`);\n this._logFn(LogLevel.Log, `delta: ${JSON.stringify(delta)}, position: ${JSON.stringify(position)}`, `Rescaling`);\n this._logFn(LogLevel.Log, `from: ${JSON.stringify(this._rect)}, to: ${JSON.stringify(desiredRect)}`, `Rescaling`);\n // check constraints\n let horizontally = desiredRect.width >= minWidth && desiredRect.width <= maxWidth, vertically = desiredRect.height >= minHeight && desiredRect.height <= maxHeight;\n // if proportions are constrained and one fails, then both fail\n if (keepProportions && (!horizontally || !vertically)) {\n horizontally = vertically = false;\n }\n if (!horizontally) {\n // reset to the last valid horizontal configuration\n desiredRect.x = this._targetRect.x;\n desiredRect.width = this._targetRect.width;\n }\n if (!vertically) {\n // reset to the last valid vertical configuration\n desiredRect.y = this._targetRect.y;\n desiredRect.height = this._targetRect.height;\n }\n if (horizontally || vertically) {\n // dispatch\n const args = {\n currentPosition: position, element: el,\n handle: handle, origin: origin, targetRect: desiredRect, startTime: this._startTime\n };\n let rescaleEvt = new RescaleEvent(RescaleEventType.Rescale, RescaleEventArgsClass.fromArgs(args), { cancelable: true }, evt);\n rescaler.dispatchEvent(rescaleEvt);\n if (!rescaleEvt.defaultPrevented) {\n // render resize\n const m = this._originalTransform;\n el.style.transform = `matrix(${m.a},${m.b},${m.c},${m.d},${(m.e + desiredRect.x - this._rect.x)},${(m.f + desiredRect.y - this._rect.y)})`;\n el.style.width = desiredRect.width + 'px';\n el.style.height = desiredRect.height + 'px';\n }\n // store targetRect\n this._targetRect = desiredRect;\n }\n };\n this._endHandler = (e) => {\n e.stopPropagation();\n const handle = this._type;\n let evt = new RescaleEvent(RescaleEventType.End, RescaleEventArgsClass.fromArgs({\n element: this._element, origin: this._origin,\n handle: handle, startTime: this._startTime, currentPosition: this._position, targetRect: this._targetRect\n }), {}, e);\n // body\n Utils.removeClass(document.body, PCSS + '-rescaling rescale-' + handle);\n this._rescaler.dispatchEvent(evt);\n DEL_VAL(this._element, DELEGATE);\n window.removeEventListener('mouseup', this._endHandler, false);\n window.removeEventListener('touchend', this._endHandler, false);\n window.removeEventListener('mousemove', this._moveHandler, false);\n window.removeEventListener('touchmove', this._moveHandler, false);\n };\n window.addEventListener('mouseup', this._endHandler, false);\n window.addEventListener('touchend', this._endHandler, false);\n window.addEventListener('mousemove', this._moveHandler, false);\n window.addEventListener('touchmove', this._moveHandler, false);\n this._origin =\n this._position =\n GET_VAL(_element, MOUSE_DOWN);\n this._rect =\n this._targetRect =\n Utils.offsetRect(_element);\n //\n this._originalTransform = Utils.deserializeTransform(getComputedStyle(_element));\n // body\n Utils.addClass(document.body, PCSS + '-rescaling rescale-' + _type);\n }\n}\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst DEL_VAL = CustomElementUtils.deleteAttachedPropertyValue;\nconst HANDLES = 'top right bottom left topleft topright bottomright bottomleft'.split(' ');\nconst RESCALE_FRAME = 'pacem:rescale:frame';\nconst MOUSE_DOWN = 'pacem:rescale:origin';\nconst DELEGATE = 'pacem:rescale:delegate';\nlet PacemRescaleElement = class PacemRescaleElement extends PacemBehavior {\n constructor() {\n super(...arguments);\n this._bag = [];\n this._startHandler = (evt) => {\n evt.stopPropagation();\n const coords = CustomEventUtils.getEventCoordinates(evt);\n const el = evt.currentTarget, origin = coords.page;\n const type = /rescale-(.+)/.exec(el['className'])[1];\n // start\n const target = el.parentElement;\n const initEvent = new RescaleEvent(RescaleEventType.Start, RescaleEventArgsClass.fromArgs({\n currentPosition: origin,\n origin: origin, element: target, handle: type, startTime: Date.now()\n }), { cancelable: true }, evt);\n this.dispatchEvent(initEvent);\n // canceled?\n if (initEvent.defaultPrevented) {\n return;\n }\n // stop evt propagation (may cause page reload on touch/mobile devices)\n avoidHandler(evt);\n SET_VAL(target, MOUSE_DOWN, origin);\n SET_VAL(target, DELEGATE, new RescaleElementDelegate(target, type, this, \n /* logging */ (level, message, category) => this.log.apply(this, [level, message, category])));\n };\n }\n decorate(element) {\n const el = element, css = getComputedStyle(el);\n Utils.addClass(el, PCSS + '-rescalable');\n this._setFrame(el);\n }\n undecorate(element) {\n const el = element;\n Utils.removeClass(el, PCSS + '-rescalable');\n //\n this._removeFrame(el);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._syncHandles();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'disabled':\n case 'handles':\n case 'keepProportions':\n this._syncHandles();\n break;\n }\n }\n _syncHandles() {\n const handles = this.handles || [RescaleHandle.All];\n const all = handles.find(h => h === RescaleHandle.All) != null;\n const disabled = this.disabled;\n const keepProportions = this.keepProportions;\n for (let el of this._bag) {\n let frame = GET_VAL(el, RESCALE_FRAME);\n frame.top.hidden = disabled || (!all && handles.find(h => h === RescaleHandle.Top) == null);\n frame.bottom.hidden = disabled || (!all && handles.find(h => h === RescaleHandle.Bottom) == null);\n frame.left.hidden = disabled || (!all && handles.find(h => h === RescaleHandle.Left) == null);\n frame.right.hidden = disabled || (!all && handles.find(h => h === RescaleHandle.Right) == null);\n frame.topleft.hidden = frame.top.hidden || frame.left.hidden;\n frame.topright.hidden = frame.top.hidden || frame.right.hidden;\n frame.bottomleft.hidden = frame.bottom.hidden || frame.left.hidden;\n frame.bottomright.hidden = frame.bottom.hidden || frame.right.hidden;\n if (keepProportions) {\n frame.top.hidden =\n frame.bottom.hidden =\n frame.left.hidden =\n frame.right.hidden = true;\n }\n }\n }\n _setFrame(el) {\n let frame = {};\n for (let type of HANDLES) {\n const handle = frame[type] = document.createElement('div');\n Utils.addClass(handle, PCSS + '-rescale rescale-' + type);\n el.setAttribute('pacem', '');\n el.appendChild(handle);\n handle.addEventListener('mousedown', this._startHandler, false);\n handle.addEventListener('touchstart', this._startHandler, { capture: false, passive: true });\n }\n SET_VAL(el, RESCALE_FRAME, frame);\n this._bag.push(el);\n this._syncHandles();\n }\n _removeFrame(el) {\n const frame = GET_VAL(el, RESCALE_FRAME);\n for (var type in frame) {\n const handle = frame[type];\n handle.removeEventListener('mousedown', this._startHandler, false);\n handle.removeEventListener('touchstart', this._startHandler, { capture: false });\n handle.remove();\n }\n DEL_VAL(el, RESCALE_FRAME);\n this._bag.splice(this._bag.indexOf(el), 1);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.StringArray })\n], PacemRescaleElement.prototype, \"handles\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRescaleElement.prototype, \"minWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRescaleElement.prototype, \"maxWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRescaleElement.prototype, \"minHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRescaleElement.prototype, \"maxHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemRescaleElement.prototype, \"keepProportions\", void 0);\nPacemRescaleElement = __decorate([\n CustomElement({ tagName: P + '-rescale' })\n], PacemRescaleElement);\nexport { PacemRescaleElement };\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 { LogLevel, Utils, P, PCSS, CustomElement, Watch, PropertyConverters } from './_default-imports';\nimport { Matrix2D, Angle, Numbers } from '@pacem/pacem-foundation';\nimport { RotateEvent, RotateEventArgsClass, RotateEventType } from '../../ui/rotate';\nimport { CustomElementUtils } from '../../utils-customelement';\nimport { CustomEventUtils } from '../../utils-customevent';\nimport { avoidHandler } from '../../utils';\nimport { PacemBehavior } from '../behavior';\n//namespace Pacem.Components {\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst DEL_VAL = CustomElementUtils.deleteAttachedPropertyValue;\nconst MOUSE_DOWN = 'pacem:rotate:origin';\nconst DELEGATE = 'pacem:rotate:delegate';\nconst OFFSET = 'pacem:rotate:offset';\nconst PIVOT = 'pacem:rotate:center';\nconst TWO_PI = 2 * Math.PI;\nclass RotateElementDelegate {\n constructor(_element, _rotator, _logFn) {\n this._element = _element;\n this._rotator = _rotator;\n this._logFn = _logFn;\n this._startTime = Date.now();\n this._moveHandler = (evt) => {\n evt.stopPropagation();\n const el = this._element, previousPosition = this._previousPosition, rotator = this._rotator, minRotation = rotator.minRotation, maxRotation = rotator.maxRotation, currentPosition = (evt instanceof MouseEvent ? { x: evt.pageX, y: evt.pageY } : { x: evt.touches[0].pageX, y: evt.touches[0].pageY }), pivot = this._pivot;\n var currentAngle = this._computeAngle(pivot, currentPosition, previousPosition) + this._previousAngle;\n var renderedAngle = this._constraintAngle(currentAngle, rotator.step);\n this._logFn(LogLevel.Log, `previousPosition: ${JSON.stringify(previousPosition)}, currentPosition: ${JSON.stringify(currentPosition)}`, `Rotating`);\n if (currentAngle > maxRotation) {\n currentAngle = maxRotation;\n }\n while (renderedAngle > maxRotation && rotator.step > 0) {\n this._logFn(LogLevel.Log, `angle: ${renderedAngle} constrained to max: ${maxRotation}`, `Rotating`);\n renderedAngle -= rotator.step;\n }\n if (currentAngle < minRotation) {\n currentAngle = minRotation;\n }\n while (renderedAngle < minRotation && rotator.step > 0) {\n this._logFn(LogLevel.Log, `angle: ${renderedAngle} constrained to min: ${minRotation}`, `Rotating`);\n renderedAngle += rotator.step;\n }\n this._logFn(LogLevel.Log, `angle: ${renderedAngle}, origin: ${JSON.stringify(this._originalPosition)}, current: ${JSON.stringify(currentPosition)}`, `Rotating`);\n if (renderedAngle != this._previousRenderedAngle) {\n let evtRot = new RotateEvent(RotateEventType.Rotate, RotateEventArgsClass.fromArgs({\n element: this._element, origin: this._originalPosition, startTime: this._startTime, currentPosition: currentPosition, rotation: renderedAngle, center: this._pivot\n }), { cancelable: true }, evt);\n this._rotator.dispatchEvent(evtRot);\n if (!evtRot.defaultPrevented) {\n const m0 = this._originalTransform;\n const m = Matrix2D.rotate(m0, renderedAngle - this._originalAngle);\n el.style.transform = `matrix(${m.a}, ${m.b}, ${m.c}, ${m.d}, ${m.e}, ${m.f})`;\n SET_VAL(this._element, OFFSET, renderedAngle);\n }\n this._previousRenderedAngle = renderedAngle;\n }\n // step\n this._previousPosition = currentPosition;\n this._previousAngle = currentAngle;\n };\n this._endHandler = (e) => {\n e.stopPropagation();\n let evt = new RotateEvent(RotateEventType.End, RotateEventArgsClass.fromArgs({\n element: this._element, origin: this._originalPosition, startTime: this._startTime, currentPosition: this._previousPosition, rotation: this._previousAngle, center: this._pivot\n }), {}, e);\n // body\n this._rotator.dispatchEvent(evt);\n DEL_VAL(this._element, DELEGATE);\n window.removeEventListener('mouseup', this._endHandler, false);\n window.removeEventListener('touchend', this._endHandler, false);\n window.removeEventListener('mousemove', this._moveHandler, false);\n window.removeEventListener('touchmove', this._moveHandler, false);\n };\n window.addEventListener('mouseup', this._endHandler, false);\n window.addEventListener('touchend', this._endHandler, false);\n window.addEventListener('mousemove', this._moveHandler, false);\n window.addEventListener('touchmove', this._moveHandler, false);\n this._originalPosition = this._previousPosition = GET_VAL(_element, MOUSE_DOWN);\n this._originalAngle = this._previousAngle = this._previousRenderedAngle = GET_VAL(_element, OFFSET, 0);\n this._pivot = GET_VAL(_element, PIVOT);\n //\n this._originalTransform = Utils.Css.deserializeTransform(_element);\n }\n _computeAngle(pivot, start, current) {\n return Angle.angleBetween(pivot, start, current);\n }\n _constraintAngle(x, step) {\n if (step > 0) {\n return Numbers.round(x, step);\n }\n return x;\n }\n}\nlet PacemRotateElement = class PacemRotateElement extends PacemBehavior {\n constructor() {\n super(...arguments);\n this._startHandler = (evt) => {\n if (this.disabled) {\n return;\n }\n const coords = CustomEventUtils.getEventCoordinates(evt);\n const el = evt.currentTarget, origin = coords.page;\n const bbox = Utils.offsetRect(el), w2 = bbox.width / 2.0, h2 = bbox.height / 2.0;\n var pivot = this.center;\n if (Utils.isNull(pivot)) {\n pivot = { x: bbox.x + w2, y: bbox.y + h2 };\n el.style.transformOrigin = '50% 50%';\n }\n else {\n const offX = bbox.x + w2 - pivot.x, offY = bbox.y + h2 - pivot.y;\n el.style.transformOrigin = `${-offX}px ${-offY}px`;\n }\n // start\n const initEvent = new RotateEvent(RotateEventType.Start, RotateEventArgsClass.fromArgs({\n currentPosition: origin, rotation: GET_VAL(el, OFFSET, 0), center: pivot,\n origin: origin, element: el, startTime: Date.now()\n }), { cancelable: true }, evt);\n this.dispatchEvent(initEvent);\n // canceled?\n if (initEvent.defaultPrevented) {\n return;\n }\n // stop evt propagation (may cause page reload on touch/mobile devices)\n avoidHandler(evt);\n SET_VAL(el, MOUSE_DOWN, origin);\n SET_VAL(el, PIVOT, pivot);\n SET_VAL(el, DELEGATE, new RotateElementDelegate(el, this, \n /* logging */ (level, message, category) => this.log.apply(this, [level, message, category])));\n };\n }\n decorate(element) {\n const el = element;\n Utils.addClass(el, PCSS + '-rotatable');\n const options = { capture: false, passive: false };\n element.addEventListener('mousedown', this._startHandler, false);\n element.addEventListener('touchstart', this._startHandler, options);\n }\n undecorate(element) {\n const el = element;\n Utils.removeClass(el, PCSS + '-rotatable');\n const options = { capture: false, passive: false };\n element.removeEventListener('mousedown', this._startHandler, false);\n element.removeEventListener('touchstart', this._startHandler, options);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRotateElement.prototype, \"step\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRotateElement.prototype, \"minRotation\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRotateElement.prototype, \"maxRotation\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemRotateElement.prototype, \"center\", void 0);\nPacemRotateElement = __decorate([\n CustomElement({ tagName: P + '-rotate' })\n], PacemRotateElement);\nexport { PacemRotateElement };\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 { Utils, P, PCSS, CustomElement, Watch, PropertyConverters } from './_default-imports';\nimport { Matrix2D } from '@pacem/pacem-foundation';\nimport { SwipeEvent, SwipeEventArgsClass, SwipeEventType } from '../../ui/swipe';\nimport { CustomElementUtils } from '../../utils-customelement';\nimport { CustomEventUtils } from '../../utils-customevent';\nimport { PacemBehavior } from '../behavior';\n//namespace Pacem.Components {\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst DEL_VAL = CustomElementUtils.deleteAttachedPropertyValue;\nconst PREPARING_LABEL = 'pacem:swipe:preparing';\nconst DELEGATE_LABEL = 'pacem:swipe:delegate';\nconst DEFAULT_OPTIONS = { fling: 400, inertia: 8, start: 32, autoresetSpans: false, bouncy: true };\nclass SwipeElementDelegate {\n constructor(_element, _swiper, _init, _logFn) {\n this._element = _element;\n this._swiper = _swiper;\n this._init = _init;\n this._logFn = _logFn;\n this._moveHandler = (evt) => {\n const samples = this.#samples;\n const state = this._buildStateFromUiEvent(evt);\n samples.push(this.#state = state);\n while (samples.length > 0\n && state.timestamp - samples[0].timestamp > 100) {\n samples.shift();\n }\n const args = this._buildSwipeArgsFromState(state); // SwipeEventArgsClass.fromArgs({ position: state.position, element: this._element, t0: this._init, timestamp: state.timestamp });\n const swipeEvt = new SwipeEvent(SwipeEventType.Pan, args, { cancelable: true, bubbles: false });\n const swiper = this._swiper;\n swiper.dispatchEvent(swipeEvt);\n if (!swipeEvt.defaultPrevented) {\n let { delta } = this._delta(this._init, state);\n if (!swiper.options.bouncy) {\n // clamp delta just in case\n const snaps = swiper.snaps.slice().sort();\n const snapFirst = snaps[0], snapLast = snaps[snaps.length - 1];\n const dir = this._swiper.direction;\n const { x, y } = delta;\n const deltaX = x.clamp(snapFirst, snapLast), deltaY = y.clamp(snapFirst, snapLast);\n delta = dir === 'vertical'\n ? { x: 0, y: deltaY }\n : { x: deltaX, y: 0 };\n }\n this._animateOffsetBy(delta, 0);\n }\n };\n this._endHandler = (evt) => {\n // detach move listener\n window.removeEventListener('pointermove', this._moveHandler);\n // estimate goal\n if (Utils.isNull(this.#state)) {\n console.log('How come?!');\n }\n else {\n const args = this._buildSwipeArgsFromState();\n const swipeEvt = new SwipeEvent(SwipeEventType.Swipe, args, { cancelable: true, bubbles: false });\n const swiper = this._swiper;\n swiper.dispatchEvent(swipeEvt);\n if (!swipeEvt.defaultPrevented) {\n const swipe1Evt = new SwipeEvent((\"swipe\" + args.direction), args, { cancelable: true, bubbles: false });\n swiper.dispatchEvent(swipe1Evt);\n if (!swipe1Evt.defaultPrevented) {\n // if the predicted distance is greater than the original position + half the distance to the nearest snap,\n const snaps = swiper.snaps ?? [0.0];\n snaps.sort();\n const target = swiper.options.bouncy ? args.predictedDelta : args.predictedDelta.clamp(snaps[0], snaps[snaps.length - 1]);\n // then animate toward that target,\n // otherwise bounce back\n const snap = snaps.reduce((acc, v) => {\n const distance = Math.abs(v - target);\n const current = Math.abs(acc - target);\n return distance < current ? v : acc;\n }, 0);\n const vertical = swiper.direction === 'vertical';\n const duration = args.predictedDuration;\n const delta0 = vertical ? { x: 0, y: target } : { x: target, y: 0 };\n // centralized swipeanimationend dispatcher\n const swipeAnimationEnd = () => {\n const swipe2Evt = new SwipeEvent(SwipeEventType.SwipeAnimationEnd, args, { cancelable: false, bubbles: false });\n if (swiper.dispatchEvent(swipe2Evt)) {\n return swipe2Evt;\n }\n return null;\n };\n if (snap.isCloseTo(0)) {\n this._animateOffsetBy(delta0, duration).then(() => {\n this._animateOffsetBy({ x: 0, y: 0 }, .3, 'cubic-bezier(.37,-0.01,.34,1.43)').then(() => swipeAnimationEnd());\n });\n }\n else {\n // animation to reach the predicted offset (if does not exceed the target snap, then void)\n const doesNotExceed = (snap - target) * (snap - args.delta) >= 0;\n const delta1 = vertical ? { x: 0, y: snap } : { x: snap, y: 0 };\n // animation that reaches the correct snap\n const animation = () => this._animateOffsetBy(delta1, doesNotExceed ? duration : .2, 'cubic-bezier(0,0,0,1)');\n const promise = () => doesNotExceed ? Promise.resolve() : this._animateOffsetBy(delta0, duration);\n promise().then(() => animation().then(() => {\n // generic \n swipeAnimationEnd();\n // specific\n const swipe3Evt = new SwipeEvent((\"swipe\" + args.direction + \"animationend\"), args, { cancelable: false, bubbles: false });\n swiper.dispatchEvent(swipe3Evt);\n }));\n }\n if (this.#options.autoresetSpans) {\n this._swiper.snaps = snaps.map(s => s - snap);\n }\n }\n }\n }\n this.dispose();\n };\n this.#samples = [];\n const el = _element;\n this.#options = Utils.extend({}, DEFAULT_OPTIONS, _swiper.options ?? {});\n this.#originalTransform = Utils.deserializeTransform(getComputedStyle(el));\n window.addEventListener('pointermove', this._moveHandler, false);\n window.addEventListener('pointerup', this._endHandler, false);\n window.addEventListener('pointercancel', this._endHandler, false);\n }\n _serializeTransformMatrix(m) {\n return `matrix3d(${m.a},${m.b},0,0,${m.c},${m.d},0,0,0,0,1,0,${m.e},${m.f},0,1)`;\n }\n _animateOffsetBy(delta, seconds, easing = Utils.Css.getVariableValue(`--${PCSS}-easing-out-sine`)) {\n const m = Matrix2D.translate(this.#originalTransform, delta);\n const time = Math.min(.3, seconds) * 1000;\n const element = this._element;\n const t = this._serializeTransformMatrix(m);\n return new Promise((resolve, _) => {\n const animation = element.animate([\n { transform: t }\n ], {\n fill: 'forwards',\n duration: time, easing\n });\n const callback = (e) => {\n animation.removeEventListener('finish', callback);\n animation.commitStyles();\n animation.cancel();\n resolve();\n };\n animation.addEventListener('finish', callback, false);\n });\n }\n _buildStateFromUiEvent(evt) {\n const coords = CustomEventUtils.getEventCoordinates(evt);\n const now = performance.now();\n const state = {\n position: coords.client,\n timestamp: now,\n };\n return state;\n }\n _buildSwipeArgsFromState(state = this.#state) {\n const options = this.#options;\n const speed = this.speed;\n const dir = this._swiper.direction;\n const vertical = dir === 'vertical';\n const horizontalspeed = vertical ? 0 : speed, verticalspeed = vertical ? speed : 0;\n // console.log(\"state:\");\n // console.log(state.position);\n // console.log(\"init:\");\n // console.log(this._init);\n // console.log(`vertical: ${vertical}`);\n // console.log(`h speed: ${horizontalspeed}`);\n // console.log(`v speed: ${verticalspeed}`);\n const args = SwipeEventArgsClass.fromArgs({\n position: state.position, element: this._element, t0: this._init, timestamp: state.timestamp, inertia: options.inertia, fling: options.fling,\n horizontalspeed, verticalspeed, vertical\n });\n //console.log(args);\n return args;\n }\n _delta(s0, s1) {\n const { position: { x: x0, y: y0 }, timestamp: t0 } = s0;\n const { position: { x: x1, y: y1 }, timestamp: t1 } = s1;\n const dir = this._swiper.direction;\n const delta = dir === 'vertical'\n ? { x: 0, y: y1 - y0 }\n : { x: x1 - x0, y: 0 };\n return { delta, time: t1 - t0 };\n }\n /** pixels/second */\n get speed() {\n const samples = this.#samples;\n if (samples.length < 2) {\n return 0;\n }\n const s0 = samples[0], s1 = samples[samples.length - 1];\n const { delta, time } = this._delta(s0, s1);\n const dt = time / 1000;\n const ds = delta.x + delta.y /* either x or y is 0, then this is a legit (and convenient) way to compute the magnitude */;\n return dt > 0 ? ds / dt : 0;\n }\n #options;\n #samples;\n #originalTransform;\n #state;\n dispose() {\n const el = this._element;\n DEL_VAL(el, DELEGATE_LABEL);\n window.removeEventListener('pointercancel', this._endHandler);\n window.removeEventListener('pointerup', this._endHandler);\n }\n}\nlet PacemSwipeElement = class PacemSwipeElement extends PacemBehavior {\n constructor() {\n super(...arguments);\n this._prepareHandler = (evt) => {\n if (this.disabled) {\n return;\n }\n const coords = CustomEventUtils.getEventCoordinates(evt);\n const el = evt.currentTarget, origin = coords.client;\n // check the handle selector\n const hs = this.handleSelector;\n if (!Utils.isNullOrEmpty(hs)\n && el.querySelector(hs) !== evt.target) {\n return;\n }\n evt.stopPropagation();\n SET_VAL(el, PREPARING_LABEL, { position: origin, timestamp: performance.now() });\n SET_VAL(window, PREPARING_LABEL, el);\n window.addEventListener('pointermove', this._startHandler, false);\n window.addEventListener('pointerup', this._undoHandler, false);\n };\n this._startHandler = (evt) => {\n const el = GET_VAL(window, PREPARING_LABEL); // evt.currentTarget; // wrong! targets Window!\n const init = GET_VAL(el, PREPARING_LABEL);\n if (Utils.isNull(init)) {\n this._undo(el);\n return;\n }\n const coords = CustomEventUtils.getEventCoordinates(evt);\n const { x, y } = coords.client;\n const { position: { x: x0, y: y0 } } = init;\n const direction = this.direction || 'horizontal';\n const vertical = direction === 'vertical';\n const delta = vertical\n ? y - y0\n : x - x0;\n const options = this.#options, { start: threshold } = options;\n if (Math.abs(delta) > threshold) {\n // reset detection handlers\n // and remove attached data\n this._undo(el);\n // attach actual swipe delegate\n const swiper = this;\n const delegate = new SwipeElementDelegate(el, swiper, init, (level, message, category) => { swiper.log(level, message, category); });\n SET_VAL(el, DELEGATE_LABEL, delegate);\n }\n };\n this._undoHandler = (evt) => {\n const el = evt.currentTarget;\n this._undo(el);\n };\n }\n decorate(element) {\n // https://docs.microsoft.com/en-us/microsoft-edge/dev-guide/dom/pointer-events\n if (element instanceof HTMLElement || element instanceof SVGElement) {\n Utils.addClass(element, PCSS + '-swipe');\n }\n element.addEventListener('pointerdown', this._prepareHandler, false);\n }\n undecorate(element) {\n if (element instanceof HTMLElement || element instanceof SVGElement) {\n Utils.removeClass(element, PCSS + '-swipe');\n }\n element.removeEventListener('pointerdown', this._prepareHandler, false);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setOptions();\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 'options':\n this._setOptions(val);\n break;\n }\n }\n #options;\n _setOptions(options = this.options) {\n this.#options = Utils.extend({}, DEFAULT_OPTIONS, options ?? {});\n }\n _undo(el) {\n window.removeEventListener('pointermove', this._startHandler);\n window.removeEventListener('pointerup', this._undoHandler);\n DEL_VAL(el, PREPARING_LABEL);\n DEL_VAL(window, PREPARING_LABEL);\n }\n};\n__decorate([\n Watch({\n emit: false, reflectBack: true, converter: {\n convert: (attr, _) => attr.match(/[-+]?[\\d\\.]+/g).map(i => parseFloat(i)),\n convertBack: (prop, _) => prop?.join(' ')\n }\n })\n], PacemSwipeElement.prototype, \"snaps\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true })\n], PacemSwipeElement.prototype, \"direction\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemSwipeElement.prototype, \"options\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true })\n], PacemSwipeElement.prototype, \"handleSelector\", void 0);\nPacemSwipeElement = __decorate([\n CustomElement({ tagName: P + '-swipe' })\n], PacemSwipeElement);\nexport { PacemSwipeElement };\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 { TweenService, Easings } from '../../animations';\nimport { PropertyConverters } from '../../converters';\nimport { PacemItemElement } from '../basic';\nimport { Watch } from '../../decorators';\n//namespace Pacem.Components {\nconst EasingConverter = {\n convert: (attr) => Easings[attr] ?? Easings.linear\n};\nexport class AnimationElement extends PacemItemElement {\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], AnimationElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], AnimationElement.prototype, \"property\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], AnimationElement.prototype, \"delay\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], AnimationElement.prototype, \"duration\", void 0);\n__decorate([\n Watch({ emit: false, converter: EasingConverter })\n], AnimationElement.prototype, \"easing\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], AnimationElement.prototype, \"iterations\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], AnimationElement.prototype, \"direction\", void 0);\nexport class TweenAnimationElement extends AnimationElement {\n constructor(_tweener = new TweenService()) {\n super();\n this._tweener = _tweener;\n }\n get tweener() {\n return this._tweener;\n }\n #cancelToken = false;\n startAnimation() {\n this.#cancelToken = false;\n return new Promise((resolve, _) => {\n this._tweener\n .run(.0, 1.0, this.duration ?? 0, this.delay ?? 0, this.easing ?? Easings.linear, (t, v) => {\n if (!this.#cancelToken) {\n this.target[this.property] = this.tweenInterpolationCallback(t, v);\n }\n })\n .then(resolve);\n });\n }\n cancelAnimation() {\n this.#cancelToken = true;\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 { Colors } from '@pacem/pacem-foundation';\nimport { Utils } from '../../utils';\nimport { PropertyConverters } from '../../converters';\nimport { Watch, CustomElement } from '../../decorators';\nimport { P } from '../../prefix';\nimport { TweenAnimationElement } from './animation';\n//namespace Pacem.Components {\nconst DEFAULT_FROM = { h: 0, l: 0, s: 0.5, a: 1 };\nconst DEFAULT_TO = { h: 0, l: 1, s: 0.5, a: 1 };\nlet PacemColorAnimationElement = class PacemColorAnimationElement extends TweenAnimationElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'from':\n this._precomputeFrom(val);\n break;\n case 'to':\n this._precomputeTo(val);\n break;\n }\n }\n }\n #from = DEFAULT_FROM;\n #to = DEFAULT_TO;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._precomputeColors();\n }\n _precomputeColors() {\n this._precomputeFrom();\n this._precomputeTo();\n }\n _precomputeFrom(v = this.from) {\n this.#from = this._precomputeColor(v) ?? DEFAULT_FROM;\n }\n _precomputeTo(v = this.to) {\n this.#to = this._precomputeColor(v) ?? DEFAULT_FROM;\n }\n _precomputeColor(clr) {\n if (!Utils.isNullOrEmpty(clr)) {\n try {\n return this._parseColor(clr);\n }\n catch {\n return null;\n }\n }\n }\n _parseColor(clr) {\n return Colors.hsl(Colors.parse(clr));\n }\n tweenInterpolationCallback(time, progress) {\n const from = this.#from, to = this.#to;\n const hsla = {\n h: (to.h - from.h) * progress + from.h,\n s: (to.s - from.s) * progress + from.s,\n l: (to.l - from.l) * progress + from.l,\n a: (to.a - from.a) * progress + from.a\n };\n return Colors.stringify(hsla);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemColorAnimationElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemColorAnimationElement.prototype, \"to\", void 0);\nPacemColorAnimationElement = __decorate([\n CustomElement({ tagName: P + '-color-animation' })\n], PacemColorAnimationElement);\nexport { PacemColorAnimationElement };\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 { PropertyConverters } from '../../converters';\nimport { Watch, CustomElement } from '../../decorators';\nimport { P } from '../../prefix';\nimport { TweenAnimationElement } from './animation';\n//namespace Pacem.Components {\nconst DEFAULT_FROM = 0;\nconst DEFAULT_TO = 1;\nlet PacemNumberAnimationElement = class PacemNumberAnimationElement extends TweenAnimationElement {\n tweenInterpolationCallback(time, progress) {\n const to = this.to ?? DEFAULT_TO, from = this.from ?? DEFAULT_FROM;\n return (to - from) * progress + from;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemNumberAnimationElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemNumberAnimationElement.prototype, \"to\", void 0);\nPacemNumberAnimationElement = __decorate([\n CustomElement({ tagName: P + '-number-animation' })\n], PacemNumberAnimationElement);\nexport { PacemNumberAnimationElement };\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 { PropertyConverters } from '../../converters';\nimport { Watch, CustomElement } from '../../decorators';\nimport { P } from '../../prefix';\nimport { TweenAnimationElement } from './animation';\n//namespace Pacem.Components {\nconst DEFAULT_FROM = { x: 0, y: 0 };\nconst DEFAULT_TO = { x: 1, y: 1 };\nlet PacemPointAnimationElement = class PacemPointAnimationElement extends TweenAnimationElement {\n tweenInterpolationCallback(time, progress) {\n const to = this.to ?? DEFAULT_TO, from = this.from ?? DEFAULT_FROM;\n return {\n x: (to.x - from.x) * progress + from.x,\n y: (to.y - from.y) * progress + from.y\n };\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemPointAnimationElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemPointAnimationElement.prototype, \"to\", void 0);\nPacemPointAnimationElement = __decorate([\n CustomElement({ tagName: P + '-point-animation' })\n], PacemPointAnimationElement);\nexport { PacemPointAnimationElement };\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 { Utils } from '../../utils';\nimport { PropertyConverters } from '../../converters';\nimport { PacemItemsContainerElement } from '../basic';\nimport { Watch, CustomElement } from '../../decorators';\nimport { P } from '../../prefix';\nimport { AnimationElement } from './animation';\n//namespace Pacem.Components {\nlet PacemStoryboardElement = class PacemStoryboardElement extends PacemItemsContainerElement {\n validate(item) {\n return item instanceof AnimationElement;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._animate();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'datasource':\n this._buildDatasourceFromDatasource(val);\n break;\n case 'items':\n this._buildDatasourceFromItems(val);\n break;\n case '_adaptedDatasource':\n case 'autostart':\n this._animate();\n break;\n }\n }\n }\n _buildDatasourceFromItems(items = this.items) {\n this._adaptedDatasource = items || [];\n }\n _buildDatasourceFromDatasource(ds = this.datasource) {\n this._adaptedDatasource = ds || [];\n }\n _animate(start = this.autostart) {\n const ds = this._adaptedDatasource;\n const promises = [];\n if (start && !Utils.isNullOrEmpty(ds)) {\n for (let timeline of ds) {\n promises.push(timeline.startAnimation());\n }\n }\n return Promise.all(promises);\n }\n cancelAnimation() {\n const ds = this._adaptedDatasource || [];\n for (let timeline of ds) {\n timeline.cancelAnimation();\n }\n }\n startAnimation() {\n return this._animate(true);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemStoryboardElement.prototype, \"autostart\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemStoryboardElement.prototype, \"duration\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemStoryboardElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemStoryboardElement.prototype, \"_adaptedDatasource\", void 0);\nPacemStoryboardElement = __decorate([\n CustomElement({ tagName: P + '-storyboard' })\n], PacemStoryboardElement);\nexport { PacemStoryboardElement };\n","//namespace Pacem {\nexport const Defaults = {\n USE_SHADOW_ROOT: /*'attachShadow' in Element.prototype &&*/ false /* <- wait until html-imports */\n};\n//}\n","//namespace Pacem.RegularExpressions {\nexport const EMPTY_MATCHER = /a^/;\nexport class Regex {\n /**\n * Splits an input string into segments based on a matching pattern.\n * @param input Input string\n * @param pattern RegExp pattern\n */\n static split(input, pattern) {\n var matches, index = 0, trunks = [];\n while ((matches = pattern.exec(input)) != null) {\n trunks.push({ value: input.substr(index, matches.index - index), match: false, index: index });\n let length = matches[0].length;\n trunks.push({ value: input.substr(matches.index, length), match: true, index: matches.index });\n index = matches.index + length;\n }\n if (index < input.length)\n trunks.push({ value: input.substr(index, input.length - index), match: false, index: index });\n return trunks;\n }\n}\n//}\n","/// <reference path=\"decorators.ts\" />\n//namespace Pacem {\nvar __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 { PCSS } from './prefix';\nimport { Utils } from './utils';\nimport { CustomElementUtils } from './utils-customelement';\nimport { Transformer } from './decorators';\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nfunction buildDiffOptions(modeOrOutput, outputOrCssAdd, cssAddOrRemove, cssRemoveIfAny) {\n let mode = 'char';\n let output = 'full';\n let cssAdd;\n let cssRemove;\n if (['line', 'word', 'char'].includes(modeOrOutput)) {\n mode = modeOrOutput;\n output = outputOrCssAdd;\n cssAdd = cssAddOrRemove;\n cssRemove = cssRemoveIfAny;\n }\n else {\n output = modeOrOutput;\n cssAdd = outputOrCssAdd;\n cssRemove = cssAddOrRemove;\n }\n return {\n mode,\n output,\n cssAdd: cssAdd ?? 'fill-green-container',\n cssRemove: cssRemove ?? 'fill-red-container',\n };\n}\nclass Transforms {\n static highlight(src, query, css = PCSS + '-highlight') {\n if (!query || !src)\n return src;\n let output = src.substring(0);\n const trunks = query.substring(0).split(' ');\n for (var j = 0; j < trunks.length; j++) {\n const trunk = escapeRegExp(trunks[j]);\n const regex = new RegExp('(?![^<>]*>)' + trunk, 'gi');\n output = output.replace(regex, function (piece, index, whole) {\n var startTagNdx, endTagIndex;\n if ((startTagNdx = whole.indexOf('<', index)) != (endTagIndex = whole.indexOf('</', index)) || startTagNdx == -1)\n return '<span class=\"' + css + '\">' + piece + '</span>';\n return piece;\n });\n }\n return output;\n }\n static diff(a, b, modeOrOutput = 'full', outputOrCssAdd, cssAddOrRemove, cssRemoveIfAny) {\n const { mode, output, cssAdd, cssRemove } = buildDiffOptions(modeOrOutput, outputOrCssAdd, cssAddOrRemove, cssRemoveIfAny);\n const tokens = Utils.diff(a, b, mode);\n return tokens.reduce((acc, token) => {\n const t = token.type;\n if (t === '=') {\n acc += token.value;\n }\n else if (t === '+' && output !== 'left' || t === '-' && output !== 'right') {\n const lines = token.value.split(/\\r?\\n/);\n const lUpperBound = lines.length - 1;\n for (let l = 0; l <= lUpperBound; l++) {\n const line = lines[l];\n if (!Utils.isNullOrEmpty(line) || l < lUpperBound) {\n const css = t === '-' ? cssRemove : cssAdd;\n acc += `<span class=\"${PCSS}-token ${css} text-prewrap\">${line || ' '}</span>`;\n }\n if (l < lUpperBound) {\n acc += '\\n';\n }\n }\n }\n return acc;\n }, '');\n }\n static padleft(src, length, pad) {\n return Utils.leftPad('' + src, length, pad);\n }\n static size(src) {\n // TODO: use logarithms\n if (!(src > 0))\n return '-';\n if (src < 1024 /* 1kB */)\n return src + ' B';\n if (src < 1_048_576 /* 1MB */)\n return (src / 1024).toFixed(2) + ' kB';\n if (src < 1_073_741_824 /* 1GB */)\n return (src / 1_048_576).toFixed(2) + ' MB';\n return (src / 1_073_741_824).toFixed(2) + ' GB';\n }\n static decToDeg(src, degSeparator = '° ', minSeparator = '\\' ', secSeparator = '\"') {\n const sign = Math.sign(src);\n src = Math.abs(src);\n const deg = Math.floor(src), min0 = (src - deg) * 60, min = Math.floor(min0), sec0 = (min0 - min) * 60, sec = Math.floor(sec0);\n return (sign < 0 ? '-' : '') + deg + degSeparator + min + minSeparator + sec + secSeparator;\n }\n static date(src, format, culture) {\n var date = Utils.parseDate(src), lang = culture || navigator.language;\n if (Utils.isNull(format) || typeof format === 'string') {\n switch (format) {\n case 'iso':\n return date.toISOString();\n case 'isodate':\n return date.toISOString().substring(0, 10);\n case 'localdate':\n return `${date.getFullYear()}-${Utils.leftPad(date.getMonth() + 1, 2, '0')}-${Utils.leftPad(date.getDate(), 2, '0')}`;\n case 'time':\n case 'localtime':\n return date.toLocaleTimeString(lang, { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false });\n case 'full':\n const offset = -(date.getTimezoneOffset() / 60);\n var utc = '';\n if (offset != 0)\n utc = ' (UTC' + ((offset > 0 ? '+' : '-') + Math.abs(offset).toLocaleString()) + ')';\n return date.toLocaleString(lang) + utc;\n default:\n return date.toLocaleDateString(lang);\n }\n }\n else {\n return date.toLocaleString(culture, format);\n }\n }\n static timespan(start, end, format, culture) {\n const startDate = Utils.parseDate(start), endDate = Utils.parseDate(end), span = endDate.valueOf() - startDate.valueOf(), sign = span < 0 ? '-' : '', elapsed = Math.abs(span);\n if (typeof format === 'object') {\n const adj = { timeZone: 'UTC', hour12: false }, tweakedFormat = Utils.extend(adj, format);\n return (sign || (format.sign ? '+' : '')) + Intl.DateTimeFormat(culture ?? navigator.language, tweakedFormat).format(elapsed);\n }\n // legacy output\n const msecsPerDay = 86400000, msecsPerHr = 3600000, msecsPerMin = 60000, days = Math.floor(elapsed / msecsPerDay), hrs = Math.floor((elapsed % msecsPerDay) / msecsPerHr), mins = Math.floor((elapsed % msecsPerHr) / msecsPerMin), secs = Math.floor((elapsed % msecsPerMin) / 1000), msecs = Math.floor(elapsed % 1000);\n return `${sign}${days}d ${hrs}h ${mins}m ${secs}s ${msecs}ms`;\n }\n static currency(src, currency, culture) {\n return new Intl.NumberFormat(culture ?? navigator.language, { style: 'currency', currency: currency }).format(src);\n }\n static number(src, formatOrCulture, culture) {\n if (typeof formatOrCulture === 'string') {\n return new Intl.NumberFormat(formatOrCulture || navigator.language).format(src);\n }\n return new Intl.NumberFormat(culture ?? navigator.language, formatOrCulture).format(src);\n }\n static filter(src, filter) {\n return src.filter(filter);\n }\n static orderby(src, prop) {\n return src.sort((a, b) => {\n if (!Utils.isNullOrEmpty(prop)) {\n a = a[prop];\n b = b[prop];\n }\n return a > b ? 1 : (a < b ? -1 : 0);\n });\n }\n // #region RegExp\n static isMatch(input, pattern, flags) {\n return new RegExp(pattern, flags).test(input);\n }\n // #endregion\n // #region shortcuts from 'Utils'\n static isEmpty(obj) {\n return Utils.isEmpty(obj);\n }\n static isNull(obj) {\n return Utils.isNull(obj);\n }\n static isNullOrEmpty(obj) {\n return Utils.isNullOrEmpty(obj);\n }\n static getCssVariable(name) {\n return Utils.Css.getVariableValue(name);\n }\n static getQuerystring(name) {\n return Utils.URIs.parseQuery()[name];\n }\n // #endregion\n // #region shortcuts from 'CustomElementUtils'\n static importThemeWebFonts() {\n return CustomElementUtils.Theme.importWebFonts();\n }\n static findHostContext(element) {\n return CustomElementUtils.findHostContext(element);\n }\n}\n__decorate([\n Transformer()\n], Transforms, \"highlight\", null);\n__decorate([\n Transformer()\n], Transforms, \"diff\", null);\n__decorate([\n Transformer()\n], Transforms, \"padleft\", null);\n__decorate([\n Transformer()\n], Transforms, \"size\", null);\n__decorate([\n Transformer()\n], Transforms, \"decToDeg\", null);\n__decorate([\n Transformer()\n], Transforms, \"date\", null);\n__decorate([\n Transformer()\n], Transforms, \"timespan\", null);\n__decorate([\n Transformer()\n], Transforms, \"currency\", null);\n__decorate([\n Transformer()\n], Transforms, \"number\", null);\n__decorate([\n Transformer()\n], Transforms, \"filter\", null);\n__decorate([\n Transformer()\n], Transforms, \"orderby\", null);\n__decorate([\n Transformer('regex.')\n], Transforms, \"isMatch\", null);\n__decorate([\n Transformer()\n], Transforms, \"isEmpty\", null);\n__decorate([\n Transformer()\n], Transforms, \"isNull\", null);\n__decorate([\n Transformer()\n], Transforms, \"isNullOrEmpty\", null);\n__decorate([\n Transformer('cssvar')\n], Transforms, \"getCssVariable\", null);\n__decorate([\n Transformer('querystring')\n], Transforms, \"getQuerystring\", null);\n__decorate([\n Transformer()\n], Transforms, \"importThemeWebFonts\", null);\n__decorate([\n Transformer('host')\n], Transforms, \"findHostContext\", null);\n//}\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["pi_half","Math","PI","EASINGS","linear","t","sineIn","sin","sineOut","sineInOut","expoIn","pow","E","expoOut","log","expoInOut","Easings","assembleEasing","fn","css","output","DeepCloner","constructor","clone","obj","_clone","seen","WeakMap","Element","FileSystemHandle","File","Array","isArray","map","Date","valueOf","RegExp","has","get","shallow2Deep","Object","assign","set","keys","forEach","k","REF_ID","JsonFunctionConversion","JsonFnStore","this","_jsonFnWeakMap","_jsonFnMap","Map","store","weak","key","Keys","uniqueCode","retrieve","remove","delete","Json","_options","serialize","options","_serialize","deserialize","json","_deserialize","flat","_flatten","JSON","stringify","sort","hasRefs","parse","value","elPattern","fnPattern","regexPattern","fnRefPattern","arr","exec","length","regex","lastPipe","lastIndexOf","substr","document","getElementById","eval","_revive","increment","WeakSet","id","source","flags","i","add","indexOf","push","functions","Reference","Plain","hashTable","refPattern","revive","entity","test","DeferPromise","deferred","me","promise","Promise","resolve","reject","then","onCompleted","onFailed","callback","success","error","defer","PACEM_CORE_DEFAULT","DEFAULT_DOWNLOAD_FILENAME","stopPropagationHandler","evt","stopPropagation","preventDefaultHandler","preventDefault","avoidHandler","SEGMENT_PATTERN","ROUTE_SEGMENT_PATTERN","Utils","core","root","window","Configuration","customElements","uniqueId","randomString","parseDate","input","Dates","copyToClipboard","navigator","clipboard","writeText","el","createElement","style","opacity","body","appendChild","select","execCommand","e","now","isLeapYear","daysInMonth","isDate","dateOnly","addMonths","addDays","daysBetween","colorize","elementOrRgb","rgb","hsl0","realRgb","rgba","filter","HTMLElement","Colors","r","g","b","hsl","h","s","l","element","cssEscape","escape","replace","Css","getVariableValue","name","getComputedStyle","documentElement","getPropertyValue","setVariable","setProperty","isClassDefined","pattern","j","styleSheets","sheet","item","rules","cssRules","rule","selectorText","DOMException","console","warn","href","deserializeTransform","mij","a","c","d","x","y","matches","transform","split","parseFloat","f","leftPad","Strings","formatString","format","diff","stripHTML","html","DOMParser","parseFromString","textContent","Blobs","toDataURL","blobToDataURL","fromDataURL","dataURLToBlob","toText","blobToText","fromText","textToBlob","Images","load","Imaging","loadImage","resize","resizeImage","src","img","Image","complete","onload","onerror","blob","dataURL","encoding","content","type","maxWidth","maxHeight","quality","origWidth","width","origHeight","height","cnv","ctx","getContext","origRatio","targetHeight","targetWidth","jpeg","newUrl","fillStyle","fillRect","cropImageOntoCanvas","canvas","_","cropImage","url","crossOrigin","ev","getUserMediaFunctions","_getUserMedia","fns","sourceWidth","sourceHeight","imageSmoothingEnabled","tgetW","tgetH","cnvW","cnvH","w","drawImage","abs","_domURL","URL","snapshotElement","background","drawCanvas","isNullOrEmpty","toBlob","HTMLCanvasElement","loadPromises","addLoadPromise","p","resolve0","fetch","HTMLImageElement","baseVal","setAttribute","recSetupCopy","copy","applyCss","SVGImageElement","srcCanvas","cssText","replaceWith","copyCanvas","childLength","children","copy1","src1","tagName","SVGElement","svg","cloneNode","all","execute","doc","implementation","createHTMLDocument","write","outerHTML","namespaceURI","node","evaluate","localName","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","createElementNS","size","offset","toString","innerHTML","data","XMLSerializer","serializeToString","encodeURIComponent","download","arg0","arg1","mime","filename","credentials","headers","response","ok","headerName","header","results","join","reason","text","Error","fanchor","createObjectURL","createEvent","event","initEvent","dispatchEvent","click","isDOMReady","readyState","onDOMReady","listener","addEventListener","moveChildren","target","moveItems","childNodes","nodes","ref","dom","NodeList","insertBefore","unshift","is","selector","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","call","lang","language","jsonSortStringify","isNull","Browsers","detect","cookies","cookie","retval","pair","keyval","trim","defineProperty","configurable","enumerable","writable","decodeURIComponent","Cookies","getAll","async","cookieName","cookieStore","nameValues","domain","path","maxAge","toFixed","expires","partitioned","sameSite","secure","isVisible","checkVisibility","checkOpacity","checkVisibilityCSS","visibility","clientWidth","clientHeight","hasClass","className","classList","contains","addClass","DOMTokenList","prototype","apply","removeClass","toggleClass","on","hasPart","partName","part","addPart","removePart","togglePart","rect","getBoundingClientRect","top","round","scrollTop","left","scrollLeft","offsetRect","naturalOffsetTop","offsetTop","offsetParent","naturalOffsetLeft","naturalOffset","offsetWidth","offsetHeight","naturalOffsetRect","scrollTo","scrollY","scrollX","windowSize","win","innerWidth","innerHeight","addAnimationEndCallback","timeout","clearTimeout","handle","removeEventListener","setTimeout","waitForAnimationEnd","idle","msecs","accelerateCallback","interval","pace","min","token","cancel","int","last","isEmpty","NullChecker","Node","val","areSemanticallyEqual","v1","v2","extend","undefined","fromResult","v","fromResultAsync","task","requestAnimationFrame","readonlyCopy","slice","freeze","URIs","parameters","removeMatchedParameters","rpl","ndx","index","substring","optPattern","optArr","wholeMatch","endsWith","appendQuery","removeNullEntries","hash","char","query","parseQuery","location","search","URLSearchParams","hasMandatoryTemplateSegments","parseRoute","pathTemplate","tmpl","trunks","res","res1","prop","optional","charAt","regArr","protocol","parseState","metadata","fullPath","$path","$pathname","$querystring","$query","$hash","parseHash","tmplIndex","findIndex","tmplItem","splice","getApiResult","hasOwnProperty","result","EventKeyModifier","CustomEventUtils","isInstanceOf","getEventCoordinates","touches","changedTouches","page","pageX","pageY","screen","screenX","screenY","client","clientX","clientY","getEventKeyModifiers","which","MouseEvent","button","shiftKey","altKey","ctrlKey","metaKey","matchModifiers","args","lowerCaseModifiers","from","toLowerCase","fixEdgeCustomEventSubClassInstance","setPrototypeOf","CustomTypedEvent","CustomEvent","detail","eventInit","super","isEventInit","CustomUIEvent","orig","Event","originalEvent","modifiers","TouchEvent","coords","AttributeChangeEventName","AttributeChangeEvent","PropertyChangeEventName","PropertyChangeEvent","AnimationEvent","AnimationEndEvent","AnimationStartEvent","TweenService","run","to","duration","delay","easing","start","performance","end","ct","Timer","fps","_run","delta","stop","cancelAnimationFrame","HttpMethod","FetchResultEventName","FetchErrorEventName","FetchSuccessEventName","Fetcher","status","noop","StatusCodeError","statusCode","statusText","Response","req","processTime","_status","_body","_text","responseText","_type","responseType","_allHeadersRaw","getAllResponseHeaders","_processTime","_headers","_parseHeaders","date","Http","request","_this","method","Get","progress","accessToken","stopWatch","params","XMLHttpRequest","withCredentials","lengthComputable","pct","loaded","total","err","toUpperCase","Post","open","setRequestHeader","kvp","send","post","DragDataMode","DropBehavior","DropTargetMissedBehavior","DragDropEventType","RescaleHandle","RescaleEventType","RotateEventType","SwipeEventType","DragDropEventArgsBaseClass","_builder","currentPosition","origin","initialDelta","startTime","floater","Point","subtract","DragDropInitEventArgsClass","placeholder","fromArgs","builder","DragDropEventArgsClass","_placeholder","_data","DragDropEvent","RescaleEventArgsClass","targetRect","RescaleEvent","RotateEventArgsClass","rotation","center","RotateEvent","SwipeEventArgsClass","isVertical","verticalspeed","horizontalspeed","vertical","direction","speed","position","t0","x0","y0","flinging","fling","predictedDelta","inertia","predictedDuration","SwipeEvent","CurrentIndexChangeEvent","Type","Function","WATCH_PROPS_VAR","INSTANCE_BINDINGS_VAR","INSTANCE_HOST_VAR","INSTANCE_SCOPE_VAR","P","prefix","PCSS","TemplateElement","PACEM_BAG","bindingPattern","CustomElementUtils","polyfilling","camelToKebab","camelCased","kebabToCamel","kebabCased","m","getWatchedProperties","includeInherited","properties","chain","pblic","getAttachedPropertyValue","startsWith","concat","getPrototypeOf","getWatchedProperty","find","importjs","integrity","crossorigin","attrs","import","head","getElementsByTagName","importcss","rel","appendTo","_p","_imports","attr","script","querySelector","Theme","importWebFonts","downloadFont","fontFace","fonts","promises","atLeast1FontFaceReady","check","count","ready","setAttachedPropertyValue","propKey","getOwnPropertyDescriptor","bag","deleteAttachedPropertyValue","ensureValue","resolvePath","scope","parent","t2","property","current","set_val","repItem","RepeaterItem","getRepeaterItem","repeater","datasource","_findScopeContextLegacy","parentNode","ownerDocument","shadowRoot","findScopeContext","getRootNode","findAncestor","predicate","host","findAncestorShell","findAncestorOfType","ctor","findDescendants","firstOnly","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","nextNode","n","currentNode","findFirstDescendant","any","findAll","querySelectorAll","findPreviousSiblingOrAncestorOfType","upLevels","levels","previousSibling","findPreviousSiblingOrAncestor","assignHostContext","template","SHOW_DOCUMENT_FRAGMENT","findHostContext","logFn","isConnected","parentElement","isBindingAttribute","extractBindingAttributeExpression","parseBindingAttribute","expression","mode","expr","Expression","dependencies","twowayAllowed","ensureMember","o","attributes","original","stripObservedAttributes","avoidObservedAttributes","freezeObservedAttributes","revertFn","reverted","removeAttribute","GET_VAL","SET_VAL","REPEATERITEM_PLACEHOLDER","Repeater","findItemContext","findUpwards","RepeaterItem$1","isRepeaterItem","CONTEXT_PREFIX","stringPattern","safetyPattern","variablePattern","_pending","_independent","_dependencies","functionBody","_fnBody","voidBody","_voidBody","pending","independent","_fn","_args","evaluateAsync","evaluatePlus","argNames","argValues","_pendingExpression","_getPendingExpressionSingleton","xpr","stringMatches","context","$this","strings","trunk","processedTrunk","mwhole","mstart","melem","cmpRef","propArray","dotIndex","furtherParts","pathRegexArray","lastChar","itemRef","melem0","constexpr","elem","retexpr","LogLevel","NonePropertyConverter","convert","StringPropertyConverter","convertBack","StringArrayPropertyConverter","NumberPropertyConverter","BooleanPropertyConverter","BooleanStrictPropertyConverter","DateTimePropertyConverter","toISOString","DatePropertyConverter","JsonPropertyConverter","EvalPropertyConverter","ElementPropertyConverter","retryConversionWhenReady","PointPropertyConverter","SizePropertyConverter","Size","RectPropertyConverter","Rect","PropertyConverters","None","String","StringArray","Number","Boolean","BooleanStrict","Datetime","Eval","DefaultComparer","old","DEL_VAL","WATCH_PROP_PREFIX","WATCH_VERS_PROP","WATCH_BIND_PREFIX","INSTANCE_CHILDREN_VAR","HAS_BIND_PREFIX","HAS_TEMPLATE_VAR","HASBEEN_TEMPLATED_VAR","INSTANCE_PROMISE_VAR","INSTANCE_READY_VAR","INSTANCE_ONREADY_VAR","processBinding","binding","deps","dep","mapped","propertyName","retrieveTemplateAndWaitForDOMReady","config","on_load","templateUrl","message","retrieveDescendantTemplateActivationPromises","CustomElement","OBS_ATTR_PROP","extraObserved","proto","originalConnectedCallback","connectedCallback","originalViewActivatedCallback","viewActivatedCallback","useShadowDOM","shadow","originalContent","currentContent","firstChild","placeholders","ph","nextSibling","removeChild","attachShadow","currentChildren","append","converter","attrName","getAttribute","todo","attrNameBind","attrValueBind","fireViewActivated","originalDisconnectedCallback","disconnectedCallback","originalAttributeChangedCallback","attributeChangedCallback","attributeName","oldValue","currentValue","firstChange","plainAttrName","originalPropertyChangedCallback","propertyChangedCallback","bindingType","emit","reflectBack","getNamedItem","sval","define","whenDefined","DefaultPropertyConverter","Watch","descriptor","comparer","setter","propref","ver","propver","getter","onChange","debounce","decorateArray","instance","methods","pop","copyWithin","shift","setterCore","oldVal","newVal","ViewChild","findElement","nodelist","dict","Concurrent","originalMethod","bufferKey","lockKey","buffer","Debounce","keyFactory","handleKey","Throttle","argsKey","reset","lastArgs","Transforms$1","register","_set","segments","segment","methodName","Transformer","Transforms","__decorate","decorators","desc","arguments","Reflect","decorate","PacemEventTarget","_isReady","emitHandler","disabled","defaultPrevented","_emitCore","Debug","attrBody","$event","cancelable","isReady","first","Log","ret","level","category","logger","refreshBindings","RepeaterItemCreateEventName","RepeaterItemRemoveEventName","RepeaterItemEvent","RepeaterItemCreateEvent","RepeaterItemRemoveEvent","STD_EVENTS","ElementAriaAttributes","_element","ariaAttrs","_aria","toObject","ElementAria","role","PacemElement","aria","cssBag","parts","_tabIndex","behaviors","static","emittedEventTypes","stdEvtsMemoizer","behavior","unregister","cssClass","newBag","cssPart","hidingCss","animCss","hide","title","tabIndex","cssDis","PacemContentElement","_fillContent","_isContentNullOrEmpty","DocumentFragment","childElementCount","_original","sanitize","PacemUnsafeContentElement","PacemSafeContentElement","_sanitizeLegacy","HTMLScriptElement","scriptBlockPattern","PacemAdapter","_propertyChangeHandler","masterPropertyChangedCallback","master","initialized","_adjustFocusIndex","currentIndex","previousIndex","itemPropertyChangedCallback","initializeCallback","destroyCallback","initialize","adapted","destroy","items","ndxStart","max","_getAvailable","_getNextAvailable","_getPreviousAvailable","step","isClose","isPrevious","isNext","previous","loop","prev","next","PacemAnnihilatorElement","PacemBeforeunloadElement","_unloadingHandler","msg","active","returnValue","confirm","PacemBroadcastChannelProxyElement","autosend","_messageHandler","bubbles","_errorHandler","_initializeChannel","_disposeChannel","channel","postMessage","channelName","BroadcastChannel","close","PacemBrowserDetectElement","_detect","browser","version","userAgent","oldName","oldVersion","EXPIRATION_FIELD","Storage","_getStorage","persistent","localStorage","sessionStorage","_parseValue","storage","getItem","removeItem","setPropertyValue","storedValue","exp","setItem","clear","removeProperty","PacemDataElement","_handle","_flag","model","throttle","persistAs","DockMode","PacemDockElement","_tweener","Top","transitionDuration","dock","_doDock","_animate","transition","time","_setOffset","_resetOffset","_compute","Bottom","marginBottom","parseInt","bottom","marginTop","cmp","state","Info","PacemTransferProxyElement","_dom","_children","moveContent","proxy","PacemBodyProxyElement","PacemShellProxyElement","PacemElementProxyElement","EmitEvent","_originalEvent","ElementOrWindowConverter","PacemEventProxyElement","_emitHandler","_observe","_unobserve","capture","ABORT_MESSAGE","PacemFetchElement","autofetch","_delayAndConditionallyFetch","diffByValues","_abortPending","aborter","abort","ongoing","fetching","_me","contentType","cache","searchParams","signal","AbortController","as","_acceptFetchResult","Warn","StateEvent","PacemHistoryElement","history","_handleStateChange","maxlength","HistoryService","_synchronize","redo","undo","canUndo","canRedo","PacemHtmlProxyElement","_html","_update","PacemIfElement","PacemItemElement","container","_container","findContainer","PacemItemsContainerElement","isItemsContainer","object","ItemRegisterEventName","ItemUnregisterEventName","ItemRegisterEvent","ItemUnregisterEvent","ItemsContainerRegistrar","PacemCrossItemsContainerElement","validate","_registrar","PacemIterableElement","PacemIterativeElement","iter","adapter","_checkIndex","REMOVE_VALUE","EMPTY_VALUE","PacemLayoutProxyElement","shell","layout","PacemMetaProxyElement","nameBased","itemprop","escapedKey","meta","PacemOnlineStatusElement","_onlineHandler","online","onLine","PacemPanelElement","CommandEventName","CommandEvent","PacemTemplateProxyElement","PacemRepeaterElement_1","ItemEvent","srcEvent","ItemCommandEvent","CustomItemCommandEvent","commandName","commandArgument","PacemRepeaterElement","_childItems","_fragment","createDocumentFragment","_setupItem","_refreshItemTemplateHandler","_itemTemplate","_databind","_removeItems","_setItem","frag","_item","_childTemplatePlaceholder","redrawEventually","fromIndex","toIndex","exceeding","databind","holder","_onCommand","_buildupItemTemplate","HTMLTemplateElement","oldPlaceholder","RepeaterItemBase","_repeater","_template","_holder","createComment","_alterEgos","_setScopeValue","owner","fieldName","defineProperties","tmplRef","tmplParent","clonedTmpl","Comment","Text","alterEgo","ResizeEventName","ResizeEvent","BORDER_BOX","box","PacemResizeElement","_checkSizeHandler","_assignSizeDebounced","_target","_start","_observer","oldTarget","unobserve","newTarget","observe","_stop","watchPosition","_startWatchIntensively","ResizeObserver","entries","changed","entry","contentRect","disconnect","_checkSize","_previousHeight","_previousWidth","_previousLeft","_previousTop","_dispatchResize","currentSize","RouterNavigatingEventName","RouterNavigateEventName","RouterNavigateEvent","RouterNavigatingEvent","CHECK_PATTERN","PacemRouterElement","_onPopState","cancelingNavigation","_stringifyMergedState","_segmentateUrl","_parseState","navigate","poppingState","pathname","pushState","scrollRestoration","replaceState","referrer","stateCopy","newState","_parseTemplate","q","ScrollEventName","ScrollEvent","PacemScrollOrchestrator","global","scrollers","scrollHandler","_scroll","vport","scrlls","scroller","ORCHESTRATOR","PacemScrollAwareElement","base64ToUint8Array","base64","repeat","rawData","atob","Uint8Array","charCodeAt","PacemServiceWorkerProxyElement","_tryRegister","_tryUnregister","reg","registration","serviceWorker","pushManager","getSubscription","sub","pushSubscription","unsubscribe","subscription","refresh","subscribe","publicKey","userVisibleOnly","applicationServerKey","Notification","permission","KEYEVT","matchesKeyCombination","combo","accumulator","modifierPattern","regExc","pieces","charEquals","piece","KeyboardShortcutExecuteEventName","PacemShortcutElement","_accumulator","_shortcutHandler","combination","_addHandler","_removeHandler","PacemSpanElement","PacemStyleProxyElement","_style","cssReady","_idleWhileReady","_fetch","setInterval","clearInterval","resp","PacemTextElement","nodeValue","PacemTimerElement","_restart","PacemTitleProxyElement","PacemTweenElement","started","PacemAnimationEvent","PacemViewportOrchestrator","_global","viewports","_checkHandler","_oncheck","vports","isElementVisible","ignoreHorizontal","vportSize","vWidth","vHeight","right","tget","newviz","visible","PacemViewportAwareElement","PacemWebWorkerProxyElement","_initializeWorker","_disposeWorker","worker","_worker","Worker","terminate","PacemBehavior","undecorate","MOUSE_DOWN","DRAGGING","DELEGATE","DragElementDelegate","initArgs","_logFn","_started","_enterHandler","_currentTarget","_leaveHandler","_revertTrackedTarget","_moveHandler","dragger","_dragDropper","dropBehavior","InsertChild","dropTargets","Start","isMouseFlag","moveEvt","Drag","hover","elementsFromPoint","Out","evt0","Over","Copy","_insertChild","_endHandler","fnDispose","pointerEvents","Self","dropping","Drop","_repeaterItem","sourceRepeater","_sourceRepeater","isDraggingRepeaterItem","targetRepItem","_findTargetRepeaterItem","nextElementSibling","targetRepeater","isCopying","isDroppingRepeaterItem","moveWithin","spillBehavior","Remove","End","drag","Revert","tgetPos","srcPos","Matrix2D","translate","scale","dispose","dragDrop","passive","_bootstrap","_getLogicalData","dataset","_getPhysicalData","PacemRepeaterItem","_createFloater","pos","boxSizing","dropTarget","_findNextSibling","elementFromPoint","hoverElement","_currentHover","hoverSibling","targetContainer","drop","dataObj","Alias","PacemDragDropElement","_startHandler","isTrusted","handleSelector","currentTarget","Init","unlockFn","toHandle","lockTimeout","useCapture","RescaleElementDelegate","_rescaler","_startTime","_origin","rescaler","keepProportions","minWidth","minHeight","MAX_SAFE_INTEGER","origRect","_rect","_position","desiredRect","A","B","C","D","cos","distance","AC","proj","vCA","dotCA","topLeft","vDB","dotDB","topRight","vBD","dotBD","bottomLeft","vAC","dotAC","bottomRight","horizontally","vertically","_targetRect","rescaleEvt","Rescale","_originalTransform","HANDLES","RESCALE_FRAME","PacemRescaleElement","_bag","_setFrame","_removeFrame","_syncHandles","handles","All","frame","hidden","Left","Right","topleft","topright","bottomleft","bottomright","OFFSET","PIVOT","RotateElementDelegate","_rotator","previousPosition","_previousPosition","rotator","minRotation","maxRotation","pivot","_pivot","currentAngle","_computeAngle","_previousAngle","renderedAngle","_constraintAngle","_originalPosition","_previousRenderedAngle","evtRot","Rotate","m0","rotate","_originalAngle","Angle","angleBetween","Numbers","PacemRotateElement","bbox","w2","h2","transformOrigin","offX","offY","PREPARING_LABEL","DELEGATE_LABEL","DEFAULT_OPTIONS","autoresetSpans","bouncy","SwipeElementDelegate","_swiper","_init","samples","_buildStateFromUiEvent","timestamp","_buildSwipeArgsFromState","swipeEvt","Pan","swiper","_delta","snaps","snapFirst","snapLast","dir","deltaX","clamp","deltaY","_animateOffsetBy","Swipe","swipe1Evt","snap","reduce","acc","delta0","swipeAnimationEnd","swipe2Evt","SwipeAnimationEnd","isCloseTo","doesNotExceed","delta1","animation","swipe3Evt","originalTransform","_serializeTransformMatrix","seconds","animate","fill","commitStyles","s0","s1","x1","y1","t1","dt","ds","PacemSwipeElement","_prepareHandler","hs","_undoHandler","init","_undo","threshold","delegate","_setOptions","match","EasingConverter","AnimationElement","TweenAnimationElement","tweener","cancelToken","startAnimation","tweenInterpolationCallback","cancelAnimation","DEFAULT_FROM","DEFAULT_TO","PacemColorAnimationElement","_precomputeFrom","_precomputeTo","_precomputeColors","_precomputeColor","clr","_parseColor","hsla","PacemNumberAnimationElement","PacemPointAnimationElement","PacemStoryboardElement","_buildDatasourceFromDatasource","_buildDatasourceFromItems","_adaptedDatasource","autostart","timeline","Defaults","USE_SHADOW_ROOT","EMPTY_MATCHER","Regex","escapeRegExp","string","buildDiffOptions","modeOrOutput","outputOrCssAdd","cssAddOrRemove","cssRemoveIfAny","cssAdd","cssRemove","includes","highlight","whole","startTagNdx","lines","lUpperBound","line","padleft","pad","decToDeg","degSeparator","minSeparator","secSeparator","sign","deg","floor","min0","sec0","culture","toLocaleString","getFullYear","getMonth","getDate","toLocaleTimeString","hour","minute","second","hour12","getTimezoneOffset","utc","toLocaleDateString","timespan","startDate","span","elapsed","adj","timeZone","tweakedFormat","Intl","DateTimeFormat","msecsPerDay","msecsPerHr","currency","NumberFormat","number","formatOrCulture","orderby","isMatch","getCssVariable","getQuerystring","importThemeWebFonts","DeepMerger","merge","Output"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pacem-core.min.js","sources":["../esm/animations/easings.js","../esm/trees/deepcloner.js","../esm/trees/json.js","../esm/promise.js","../esm/utils.js","../esm/utils-customevent.js","../esm/events.js","../esm/animations/events.js","../esm/animations/tween-service.js","../esm/animations/timer.js","../esm/net/fetcher.js","../esm/net/http.js","../esm/ui/drag-drop.js","../esm/ui/rescale.js","../esm/ui/rotate.js","../esm/ui/swipe.js","../esm/adapter.js","../esm/types.js","../esm/prefix.js","../esm/template.js","../esm/utils-customelement.js","../esm/expression.js","../esm/logger.js","../esm/converters.js","../esm/comparers.js","../esm/decorators.js","../esm/eventtarget.js","../esm/components/basic/types.js","../esm/components/basic/adapter.js","../esm/components/basic/annihilator.js","../esm/components/basic/beforeunload.js","../esm/components/basic/broadcastchannel-proxy.js","../esm/components/basic/browser.js","../esm/storage.js","../esm/components/basic/data.js","../esm/components/basic/dock.js","../esm/components/basic/element-proxies.js","../esm/components/basic/event-proxy.js","../esm/components/basic/fetcher.js","../esm/components/basic/history.js","../esm/components/basic/html-proxy.js","../esm/components/basic/if.js","../esm/components/basic/items-container.js","../esm/components/basic/iterative.js","../esm/components/basic/layout-proxy.js","../esm/components/basic/meta-proxy.js","../esm/components/basic/online-status.js","../esm/components/basic/panel.js","../esm/command.js","../esm/components/basic/template-proxy.js","../esm/components/basic/repeater.js","../esm/components/basic/resize.js","../esm/components/basic/router.js","../esm/components/basic/scroll-aware.js","../esm/components/basic/serviceworker-proxy.js","../esm/components/basic/shortcut.js","../esm/components/basic/span.js","../esm/components/basic/style-proxy.js","../esm/components/basic/text.js","../esm/components/basic/timer.js","../esm/components/basic/title-proxy.js","../esm/components/basic/tweener.js","../esm/components/basic/viewport-aware.js","../esm/components/basic/webworker-proxy.js","../esm/components/behavior.js","../esm/components/behaviors/drag-drop.js","../esm/components/behaviors/rescale.js","../esm/components/behaviors/rotate.js","../esm/components/behaviors/swipe.js","../esm/components/animations/animation.js","../esm/components/animations/color-animation.js","../esm/components/animations/number-animation.js","../esm/components/animations/point-animation.js","../esm/components/animations/storyboard.js","../esm/defaults.js","../esm/regex.js","../esm/transforms.js","../esm/index-iife.js"],"sourcesContent":["// namespace Pacem.Animations {\n// TODO: Bezier\nconst pi_half = Math.PI * .5;\nconst EASINGS = {\n // t: normalized `current time` [0,1]\n linear: t => t,\n sineIn: t => Math.sin(t * pi_half - pi_half) + 1.0,\n sineOut: t => Math.sin(t * pi_half),\n sineInOut: t => .5 * Math.sin(t * Math.PI - pi_half) + .5,\n expoIn: t => (Math.pow(Math.E, t) - 1.0) / (Math.E - 1.0),\n expoOut: t => Math.log(t * (Math.E - 1.0) + 1.0),\n expoInOut: t => t < .5 ? .5 * Easings.expoIn(t * 2) : .5 * (1 + Easings.expoOut(t * 2 - 1.0))\n};\nfunction assembleEasing(fn, css) {\n const output = (t) => fn(t);\n output['css'] = css;\n return output;\n}\nexport const Easings = {\n linear: assembleEasing(EASINGS.linear, \"linear\"),\n sineIn: assembleEasing(EASINGS.sineIn, 'cubic-bezier(0.12, 0, 0.39, 0)'),\n sineOut: assembleEasing(EASINGS.sineOut, 'cubic-bezier(0.61, 1, 0.88, 1)'),\n sineInOut: assembleEasing(EASINGS.sineInOut, 'cubic-bezier(0.37, 0, 0.63, 1)'),\n // TODO: set correct pairing\n expoIn: assembleEasing(EASINGS.expoIn, 'cubic-bezier(0.7, 0, 0.84, 0)'),\n expoOut: assembleEasing(EASINGS.expoOut, 'cubic-bezier(0.16, 1, 0.3, 1)'),\n expoInOut: assembleEasing(EASINGS.expoInOut, 'cubic-bezier(0.87, 0, 0.13, 1)'),\n};\n//}\n","// namespace Pacem {\nexport class DeepCloner {\n constructor() {\n }\n static clone(obj) {\n return new DeepCloner()._clone(obj);\n }\n _clone(obj) {\n let seen = new WeakMap();\n function clone(obj) {\n if (typeof obj === 'object' && obj !== null\n && /* DOM elements won't be deep-cloned */ !(obj instanceof Element)\n && /* FileSystem API interfaces and File objects won't be deep-cloned */ !(obj instanceof FileSystemHandle) && !(obj instanceof File)) {\n if (Array.isArray(obj)) {\n return obj.map(clone);\n }\n else if (obj instanceof Date) {\n return new Date(obj.valueOf());\n }\n else if (obj instanceof RegExp) {\n return new RegExp(obj);\n }\n else {\n if (seen.has(obj)) {\n return seen.get(obj);\n }\n else {\n let shallow2Deep = Object.assign({}, obj);\n seen.set(obj, shallow2Deep);\n Object.keys(shallow2Deep).forEach(k => { shallow2Deep[k] = clone(obj[k]); });\n return shallow2Deep;\n }\n }\n }\n return obj;\n }\n return clone(obj);\n }\n}\n//}\n","import { DeepCloner } from './deepcloner';\nimport { Keys } from '@pacem/pacem-foundation';\n// namespace Pacem {\nconst REF_ID = '$refId';\n/** How functions get serialized. */\nexport var JsonFunctionConversion;\n(function (JsonFunctionConversion) {\n /** Skip functions (default). */\n JsonFunctionConversion[JsonFunctionConversion[\"Ignore\"] = 0] = \"Ignore\";\n /** Functions get referenced from a state in the current DOM. Not suitable for backups or long-term dehydrations. */\n JsonFunctionConversion[\"Reference\"] = \"reference\";\n /** Function gets stringified and then eval(uated) while dehydrating. Functions with a state (impure) might not working properly when used on the dehydrated side. */\n JsonFunctionConversion[\"Plain\"] = \"plain\";\n})(JsonFunctionConversion || (JsonFunctionConversion = {}));\n;\nclass JsonFnStore {\n static { this._jsonFnWeakMap = new WeakMap(); }\n static { this._jsonFnMap = new Map(); }\n static store(fn) {\n const weak = this._jsonFnWeakMap;\n if (!weak.has(fn)) {\n const key = Keys.uniqueCode();\n weak.set(fn, key);\n this._jsonFnMap.set(key, fn);\n }\n return weak.get(fn);\n }\n static retrieve(key) {\n return this._jsonFnMap.get(key);\n }\n static remove(key) {\n const fn = this.retrieve(key);\n this._jsonFnMap.delete(key);\n this._jsonFnWeakMap.delete(fn);\n }\n}\nexport class Json {\n constructor(_options) {\n this._options = _options;\n }\n static serialize(obj, options) {\n return new Json(options)._serialize(obj);\n }\n static deserialize(json) {\n return new Json()._deserialize(json);\n }\n _serialize(obj) {\n let clone = DeepCloner.clone(obj);\n let keys = [REF_ID];\n let flat = this._flatten(clone, 0, null, keys);\n return JSON.stringify(flat, keys.sort());\n }\n _deserialize(json) {\n let hasRefs = false;\n let obj = JSON.parse(json, (key, value) => {\n const elPattern = /^\\$<#(.+)>$/, fnPattern = /^\\$<fn:([^\\x05]+)>$/, // <- Firefox workaround for missing 's' flag implementation\n // fnPattern = /^\\$<fn:(.+)>$/s,\n regexPattern = /^\\$<regex:(.+)>$/, fnRefPattern = /^\\$<fn#(.+)>$/;\n let arr;\n if (key === REF_ID) {\n hasRefs = true;\n }\n else if (typeof value === 'string') {\n // regex?\n if ((arr = regexPattern.exec(value)) && arr.length > 1) {\n const regex = arr[1], lastPipe = regex.lastIndexOf('|');\n return new RegExp(regex.substr(0, lastPipe), regex.substr(lastPipe + 1));\n }\n // element?\n else if ((arr = elPattern.exec(value)) && arr.length > 1) {\n return document.getElementById(arr[1]);\n }\n else \n // function (flat)\n if ((arr = fnPattern.exec(value)) && arr.length > 1) {\n return eval(arr[1]);\n }\n else \n // function (ref)\n if ((arr = fnRefPattern.exec(value)) && arr.length > 1) {\n return JsonFnStore.retrieve(arr[1]);\n }\n }\n return value;\n });\n if (hasRefs) {\n return this._revive(obj);\n }\n return obj;\n }\n _flatten(obj, increment = 0, seen, keys) {\n seen = seen || new WeakSet();\n keys = keys || [];\n if (obj instanceof Element) {\n if (!obj.id) {\n return;\n }\n return `$<#${obj.id}>`;\n }\n else if (obj instanceof RegExp) {\n return `$<regex:${obj.source}|${obj.flags}>`;\n }\n else if (typeof obj === 'object' && obj != null && !(obj instanceof Date)) {\n if (Array.isArray(obj)) {\n return obj.map(i => this._flatten(i, increment, seen, keys));\n }\n else {\n // very object\n if (seen.has(obj)) {\n return (obj[REF_ID] = obj[REF_ID] || ('$#ref_' + (increment++)));\n }\n else {\n seen.add(obj);\n Object.keys(obj).forEach(k => {\n if (keys.indexOf(k) === -1) {\n keys.push(k);\n }\n obj[k] = this._flatten(obj[k], increment, seen, keys);\n });\n return obj;\n }\n }\n }\n else if (typeof obj === 'function') {\n switch (this._options?.functions) {\n case JsonFunctionConversion.Reference:\n const key = JsonFnStore.store(obj);\n return '$<fn#' + key + '>';\n case JsonFunctionConversion.Plain:\n return '$<fn:' + obj + '>';\n default:\n return undefined;\n }\n }\n return obj;\n }\n _revive(obj) {\n let hashTable = {};\n const refPattern = /^\\$#ref_(.+)$/;\n function revive(entity) {\n if (typeof entity === 'object' && entity !== null) {\n if (Array.isArray(entity)) {\n return entity.map(revive);\n }\n else {\n if (REF_ID in entity) {\n hashTable[entity[REF_ID]] = entity;\n delete entity[REF_ID];\n }\n Object.keys(entity).forEach(k => {\n entity[k] = revive(entity[k]);\n });\n }\n }\n else if (typeof entity === 'string' && refPattern.test(entity)) {\n let arr = refPattern.exec(entity);\n return hashTable[arr[0]];\n }\n return entity;\n }\n return revive(obj);\n }\n}\n//}\n","//namespace Pacem {\nexport class DeferPromise {\n constructor() {\n this.deferred = null;\n var me = this;\n me.promise = new Promise(function (resolve, reject) {\n me.deferred = { 'resolve': resolve, 'reject': reject, 'promise': me };\n });\n }\n then(onCompleted, onFailed) {\n return this.promise.then(onCompleted, onFailed);\n }\n /**\n * Occurs whenever the promise concludes (either after completion or error).\n * @param {Function } callback\n */\n finally(callback) {\n this.promise.then(callback, callback);\n return this;\n }\n success(callback) {\n this.promise.then(callback, null);\n return this;\n }\n error(callback) {\n this.promise.then(null, callback);\n return this;\n }\n static defer() {\n var q = new DeferPromise();\n return q.deferred;\n }\n}\n//}\n","import { Keys, Dates, Colors, Strings, Blobs, Imaging, NullChecker, detect } from '@pacem/pacem-foundation';\nimport { Json } from './trees/json';\nimport { DeepCloner } from './trees/deepcloner';\nimport { DeferPromise } from './promise';\n// namespace Pacem {\nconst PACEM_CORE_DEFAULT = 'pacem';\nconst DEFAULT_DOWNLOAD_FILENAME = 'download';\nexport const stopPropagationHandler = (evt) => {\n evt.stopPropagation();\n};\nexport const preventDefaultHandler = (evt) => {\n evt.preventDefault();\n};\nexport const avoidHandler = (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n};\nconst SEGMENT_PATTERN = /^\\/[^\\/]+/;\nconst ROUTE_SEGMENT_PATTERN = /\\/\\{([a-z\\$_][\\w]*)\\??\\}/;\nexport class Utils {\n static get core() {\n const root = window['Pacem'];\n var id = (root && root.Configuration && root.Configuration.core) || PACEM_CORE_DEFAULT;\n return window[id] = window[id] || {};\n }\n static get customElements() {\n return window['customElements'];\n }\n // #region GENERAL\n static uniqueId() {\n return Keys.uniqueId();\n }\n static uniqueCode() {\n return Keys.uniqueCode();\n }\n static randomString(length) {\n return Keys.randomString(length);\n }\n static parseDate(input) {\n return Dates.parse(input);\n }\n static copyToClipboard(input) {\n if (navigator.clipboard) {\n return navigator.clipboard.writeText(input);\n }\n // deprecated code branch\n return new Promise((resolve, reject) => {\n const el = document.createElement('textarea');\n el.value = input;\n el.style.opacity = \"0\";\n document.body.appendChild(el);\n try {\n el.select();\n document.execCommand('copy');\n el.remove();\n resolve();\n }\n catch (e) {\n reject(e);\n }\n });\n }\n // json-dedicated\n static { this.Json = {\n stringify: Json.serialize,\n parse: Json.deserialize\n }; }\n // dates-dedicated (moved to foundations, kept for backwards compat)\n static { this.Dates = {\n now: () => Utils.parseDate(Date.now()),\n parse: Utils.parseDate,\n isLeapYear: Dates.isLeapYear,\n daysInMonth: Dates.daysInMonth,\n /**\n * Gets whether a date is an `Invalid Date` or not.\n * @param date\n */\n isDate: Dates.isDate,\n dateOnly: Dates.dateOnly,\n addMonths: Dates.addMonths,\n addDays: Dates.addDays,\n daysBetween: Dates.daysBetween,\n }; }\n static colorize(elementOrRgb, rgb) {\n const hsl0 = /*Colors.hsl(Colors.parse('#000'))*/ { h: 38, s: .245, l: .6 };\n var realRgb, rgba, filter, element;\n if (elementOrRgb instanceof HTMLElement) {\n realRgb = rgb;\n }\n else {\n realRgb = elementOrRgb;\n }\n // rgba\n if (typeof realRgb === 'string') {\n rgba = Colors.parse(realRgb);\n }\n else {\n rgba = { r: realRgb[0], g: realRgb[1], b: realRgb[2] };\n }\n const hsl = Colors.hsl(rgba);\n filter = `brightness(50%) sepia(1) hue-rotate(${(hsl.h - hsl0.h)}deg) saturate(${(1.0 + (hsl.s - hsl0.s))}) brightness(${(1.0 + (hsl.l - hsl0.l))})`;\n if (realRgb === rgb) {\n element.style.filter = filter;\n }\n else {\n return filter;\n }\n }\n static cssEscape(input) {\n return escape(input).replace('%', '\\\\');\n }\n // css-dedicated\n static { this.Css = {\n colorize: Utils.colorize,\n escape: Utils.cssEscape,\n getVariableValue(name) {\n return getComputedStyle(document.documentElement).getPropertyValue(name);\n },\n setVariable(name, value) {\n getComputedStyle(document.documentElement).setProperty(name, value);\n },\n /**\n * Naive O(n^2) implementation for an actual css class presence (definition) in the current DOM.\n * @param name CSS class name\n */\n isClassDefined(name) {\n const pattern = new RegExp('\\.' + name + '($|[\\s\\.,])');\n for (let j = 0; j < document.styleSheets.length; j++) {\n const sheet = document.styleSheets.item(j);\n try {\n const rules = sheet.cssRules;\n for (let i = 0; i < rules.length; i++) {\n const rule = sheet.cssRules.item(i);\n if (pattern.test(rule.selectorText)) {\n return true;\n }\n }\n }\n catch (e) {\n if (e instanceof DOMException) {\n console.warn('Couldn\\'t access cssRules of stylesheet \"' + sheet.href + '\".');\n // console.error(e);\n }\n }\n }\n return false;\n },\n deserializeTransform(element) {\n const style = element instanceof Element ? getComputedStyle(element) : element;\n let a = 1, b = 0, c = 0, d = 1, x = 0, y = 0, matches = /^matrix\\((.*)\\)$/.exec(style.transform), mij;\n //matrix(1, 0, 0, 1, 2, 4) \n if (matches && matches.length > 1 && (mij = matches[1].split(',')).length == 6) {\n // scale + rot\n a = parseFloat(mij[0]);\n b = parseFloat(mij[1]);\n c = parseFloat(mij[2]);\n d = parseFloat(mij[3]);\n // transl\n x += parseFloat(mij[4]);\n y += parseFloat(mij[5]);\n }\n return { a: a, b: b, c: c, d: d, e: x, f: y };\n }\n }; }\n // #region strings\n // legacy\n static { this.leftPad = Strings.leftPad; }\n static { this.formatString = Strings.format; }\n static { this.diff = Strings.diff; }\n static { this.Strings = {\n leftPad: Strings.leftPad,\n format: Strings.format,\n diff: Strings.diff,\n stripHTML: (html) => {\n let doc = new DOMParser().parseFromString(html, 'text/html');\n return doc.body.textContent || '';\n }\n }; }\n // #endregion\n // #endregion\n // #region blob/files...\n static { this.Blobs = {\n toDataURL: Blobs.blobToDataURL,\n fromDataURL: Blobs.dataURLToBlob,\n toText: Blobs.blobToText,\n fromText: Blobs.textToBlob\n }; }\n static { this.Images = {\n load: Imaging.loadImage,\n resize: Imaging.resizeImage\n }; }\n static loadImage(src) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.src = src;\n if (img.complete) {\n resolve(img);\n }\n else {\n img.onload = (evt) => {\n resolve(img);\n };\n img.onerror = (evt) => {\n reject();\n };\n }\n });\n }\n static blobToDataURL(blob) {\n return Utils.Blobs.toDataURL(blob);\n }\n static dataURLToBlob(dataURL) {\n return Utils.Blobs.fromDataURL(dataURL);\n }\n static blobToText(blob, encoding) {\n return Utils.Blobs.toText(blob, encoding);\n }\n static textToBlob(content, type = 'text/plain') {\n return Utils.Blobs.fromText(content, type);\n }\n /** @deprecated Use {Utils.Images.resize}, instead.\n * Resizes an image when exceeding the provided size constraints.\n * @param img {Blob} Input image\n * @param maxWidth {number} Width constraint\n * @param maxHeight {number} Height constraint\n */\n static resizeImage(img, maxWidth, maxHeight, quality) {\n var deferred = DeferPromise.defer();\n Utils.blobToDataURL(img)\n .then(Utils.loadImage)\n .then(el => {\n const origWidth = el.width, origHeight = el.height;\n let cnv = document.createElement('canvas');\n cnv.width = origWidth;\n cnv.height = origHeight;\n let ctx = cnv.getContext('2d');\n //ctx.drawImage(el, 0, 0);\n if (origWidth > maxWidth\n || origHeight > maxHeight) {\n const origRatio = origWidth / origHeight, targetRatio = maxWidth / maxHeight;\n let targetHeight, targetWidth;\n if (targetRatio < origRatio) {\n targetWidth = maxWidth;\n targetHeight = maxWidth / origRatio;\n }\n else {\n targetHeight = maxHeight;\n targetWidth = maxHeight * origRatio;\n }\n cnv.width = targetWidth;\n cnv.height = targetHeight;\n const jpeg = quality > 0 && quality <= 1;\n if (jpeg) {\n ctx.fillStyle = '#000';\n ctx.fillRect(0, 0, cnv.width, cnv.height);\n }\n Utils.cropImageOntoCanvas(el, ctx);\n let newUrl;\n if (jpeg)\n newUrl = ctx.canvas.toDataURL(\"image/jpeg\", quality);\n else\n newUrl = ctx.canvas.toDataURL();\n deferred.resolve(Utils.dataURLToBlob(newUrl));\n }\n else {\n deferred.resolve(img);\n }\n }, _ => {\n // image loading error caught...\n });\n return deferred.promise;\n }\n /** @deprecated Use {Utils.Images.resize}, instead.\n * Crops an image having the provided url (might be a dataURL) into another having the provided size\n * @param url\n * @param width\n * @param height\n * @param ctx\n */\n static cropImage(url, width, height, quality) {\n var deferred = DeferPromise.defer();\n let el = new Image();\n el.crossOrigin = 'anonymous';\n el.onload = function (ev) {\n let cnv = document.createElement('canvas');\n let ctx = cnv.getContext('2d');\n if (width)\n cnv.width = width;\n if (height)\n cnv.height = height;\n //\n const jpeg = quality > 0 && quality <= 1;\n if (jpeg) {\n ctx.fillStyle = '#000';\n ctx.fillRect(0, 0, cnv.width, cnv.height);\n }\n Utils.cropImageOntoCanvas(el, ctx);\n deferred.resolve(jpeg ? cnv.toDataURL('image/jpeg', quality) : cnv.toDataURL());\n };\n el.src = url;\n return deferred.promise;\n }\n static getUserMediaFunctions() {\n var _getUserMedia = [];\n let methods = [navigator['getUserMedia'], navigator['webkitGetUserMedia'], navigator['msGetUserMedia'], navigator['mozGetUserMedia']];\n let fns = methods.filter(function (fn, j) { return typeof fn == 'function'; });\n if (fns.length)\n _getUserMedia = fns;\n return _getUserMedia;\n }\n /**\n * Crops the snapshot of a drawable element onto a provided canvas context. It gets centered in the area and cropped (`cover`-like behavior).\n * @param el drawable element\n * @param ctx canvas context\n * @param sourceWidth forced source width\n * @param sourceHeight forced source height\n */\n static cropImageOntoCanvas(el, ctx, sourceWidth, sourceHeight) {\n ctx.imageSmoothingEnabled =\n ctx['mozImageSmoothingEnabled'] =\n ctx['oImageSmoothingEnabled'] =\n ctx['webkitImageSmoothingEnabled'] =\n true;\n //\n let tgetW = ctx.canvas.width /*= parseFloat(scope.thumbWidth)*/;\n let tgetH = ctx.canvas.height /*= parseFloat(scope.thumbHeight)*/;\n let cnvW = tgetW, cnvH = tgetH;\n let w = sourceWidth || 1.0 * el.width, h = sourceHeight || 1.0 * el.height;\n //console.log('img original size: ' + w + 'x' + h);\n var ratio = w / h;\n var tgetRatio = tgetW / tgetH;\n if (tgetRatio > ratio) {\n // crop vertically\n var f = tgetW / w;\n tgetH = f * h;\n ctx.drawImage(el, 0, .5 * (-tgetH + cnvH), cnvW, tgetH);\n }\n else {\n // crop horizontally\n var f = tgetH / h;\n tgetW = f * w;\n ctx.drawImage(el, -Math.abs(.5 * (-tgetW + cnvW)), 0, tgetW, cnvH);\n }\n }\n static get _domURL() {\n return window.URL || window['webkitURL'] || window;\n }\n /**\n * Snapshots a DOM element and returns its blob image representation.\n * @param el Element to snapshot\n * @param background Background color to replace the original\n * @param type Output mimetype (image/png, image/jpeg, images/webp, ...)\n * @param quality Quality ratio between 0..1\n */\n static snapshotElement(el, background, type = 'image/png', quality) {\n function drawCanvas(img) {\n return new Promise((resolve, reject) => {\n const canvas = document.createElement('canvas'), width = img.width, height = img.height;\n if (!(width > 0)) {\n reject('Image has width zero.');\n }\n else if (!(height > 0)) {\n reject('Image has height zero.');\n }\n else {\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n if (!Utils.isNullOrEmpty(background)) {\n ctx.fillStyle = background;\n ctx.fillRect(0, 0, width, height);\n }\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(b => {\n resolve(b);\n }, type, quality);\n }\n });\n }\n if (el instanceof HTMLCanvasElement) {\n return drawCanvas(el);\n }\n return new Promise((resolve, _) => {\n const loadPromises = [];\n //#region utils functions\n function addLoadPromise(img) {\n const p = new Promise((resolve0, _) => {\n const getSrc = () => {\n return img instanceof HTMLImageElement ? img.src : img.href.baseVal;\n };\n const setSrc = (src) => {\n if (img instanceof HTMLImageElement)\n img.src = src;\n else {\n img.setAttribute('href', src);\n }\n };\n fetch(getSrc())\n .then(r => r.blob())\n .then(blob => Utils.blobToDataURL(blob))\n .then(url => {\n setSrc(url);\n resolve0();\n });\n });\n loadPromises.push(p);\n }\n function copyCanvas(copy, srcCanvas) {\n const p = new Promise((resolve0, _) => {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.width = srcCanvas.width;\n img.height = srcCanvas.height;\n img.style.cssText = copy.style.cssText;\n img.onload = () => {\n copy.replaceWith(img);\n resolve0();\n };\n img.src = srcCanvas.toDataURL();\n });\n loadPromises.push(p);\n }\n function applyCss(copy, src) {\n const css = getComputedStyle(src);\n for (let j = 0; j < css.length; j++) {\n const item = css.item(j);\n copy.style[item] = css[item];\n }\n }\n function recSetupCopy(copy, src) {\n // assign css text\n applyCss(copy, src);\n // bitmaps\n if (copy instanceof HTMLImageElement || copy instanceof SVGImageElement) {\n addLoadPromise(copy);\n }\n else if (copy instanceof HTMLCanvasElement) {\n copyCanvas(copy, src);\n }\n // recursion\n const childLength = copy.children.length;\n for (let i = 0; i < childLength; i++) {\n const copy1 = copy.children.item(i), src1 = src.children.item(i);\n if (copy1.tagName === src1.tagName) {\n recSetupCopy(copy1, src1);\n }\n }\n }\n //#endregion\n const isSvg = el instanceof SVGElement;\n if (!isSvg) {\n var doc = document.implementation.createHTMLDocument('');\n doc.write(el.outerHTML);\n doc.documentElement.setAttribute('xmlns', doc.documentElement.namespaceURI);\n const xpath = document.evaluate(\".//\" + el.localName, doc.body, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n const node = xpath;\n node.setAttribute('xmlns', doc.documentElement.namespaceURI);\n recSetupCopy(node, el);\n Promise.all(loadPromises).then(_ => {\n // Get well-formed markup\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", 'svg');\n const size = Utils.offset(el);\n svg.setAttribute('viewBox', `0 0 ${size.width} ${size.height}`);\n svg.setAttribute('width', size.width.toString());\n svg.setAttribute('height', size.height.toString());\n svg.innerHTML = `<foreignObject width=\"${size.width}\" height=\"${size.height}\">${node.outerHTML}</foreignObject>`;\n el = svg;\n execute();\n });\n }\n else {\n const svg = el.cloneNode(true);\n recSetupCopy(svg, el);\n Promise.all(loadPromises).then(_ => {\n el = svg;\n execute();\n });\n }\n function execute() {\n const data = new XMLSerializer().serializeToString(el);\n const img = new Image();\n img.crossOrigin = 'anonymous';\n // switching from blob to data url (see: https://bugs.chromium.org/p/chromium/issues/detail?id=294129)\n //const domURL = this._domURL;\n //var svg = new Blob([data], { type: 'image/svg+xml' });\n //var url = domURL.createObjectURL(svg);\n const url = 'data:image/svg+xml;charset=utf8,' + encodeURIComponent(data);\n img.onload = () => {\n drawCanvas(img).then(resolve);\n //domURL.revokeObjectURL(url);\n };\n img.src = url;\n }\n });\n }\n static async download(arg0, arg1, mime = \"application/download\") {\n if (typeof arg0 === 'string') {\n const url = arg0;\n let options = {}, filename;\n if (!Utils.isNullOrEmpty(arg1)) {\n if (typeof arg1 === 'object') {\n options = { credentials: arg1.credentials, headers: arg1.headers };\n filename = arg1.filename || filename;\n mime = arg1.mime || mime;\n }\n else {\n filename = arg1;\n }\n }\n var response = await fetch(url, options);\n if (response.ok) {\n if (Utils.isNullOrEmpty(filename)) {\n const headerName = 'Content-Disposition';\n if (response.headers.has(headerName)) {\n const header = response.headers.get(headerName), results = /^attachment; filename=\\\"?([^;\\\"]+)\\\"?(;|$)/.exec(header);\n if (results.length > 1) {\n filename = results[1];\n }\n }\n else {\n filename = DEFAULT_DOWNLOAD_FILENAME;\n }\n }\n var blob = await response.blob();\n const fn = filename.split(/[\\\\\\/]/g).join('_');\n return Utils.download(blob, fn);\n }\n {\n const reason = await response.text();\n throw new Error(reason);\n }\n }\n else {\n const content = arg0, filename = (typeof arg1 === 'string' && arg1) || DEFAULT_DOWNLOAD_FILENAME, fanchor = document.createElement('a');\n fanchor.setAttribute('href', Utils._domURL.createObjectURL(content));\n fanchor.setAttribute('download', filename);\n if (document.createEvent) {\n var event = document.createEvent('MouseEvents');\n event.initEvent('click', true, true);\n fanchor.dispatchEvent(event);\n }\n else {\n fanchor.click();\n }\n }\n }\n // #endregion\n // #region DOM\n static isDOMReady() {\n // Must exclude 'interactive' state since module script haven't been processed yet.\n return /* document.readyState === 'interactive' ||*/ document.readyState === 'complete';\n }\n static onDOMReady(listener) {\n //window.addEventListener('DOMContentLoaded', listener, false);\n // window 'load' event fires after 'DOMCOntentLoaded' since includes images load.\n window.addEventListener('load', listener, false);\n }\n /**\n * Moves all the source element children to the target element and returns them as an array of nodes.\n * @param source Source element.\n * @param target Target element.\n */\n static moveChildren(source, target) {\n return Utils.moveItems(source.childNodes, target);\n }\n /**\n * Moves specific nodes to the target element and returns them as an array of nodes.\n * @param nodes Nodes to move.\n * @param target Target element.\n */\n static moveItems(nodes, target) {\n let dom = [], ref;\n for (let j = nodes.length - 1; j >= 0; j--) {\n let item = nodes instanceof NodeList ? nodes.item(j) : nodes[j];\n target.insertBefore(item, ref);\n dom.unshift(item);\n ref = item;\n }\n return dom;\n }\n static is(el, selector) {\n return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector)\n .call(el, selector);\n }\n static lang(el) {\n return el.lang || document.documentElement.lang || navigator.language;\n }\n static jsonSortStringify(obj) {\n if (Utils.isNull(obj)) {\n return obj;\n }\n return Utils.Json.stringify(obj);\n }\n static { this.Browsers = {\n detect\n }; }\n static cookies(cookie) {\n const cookies = (cookie ?? document.cookie).split(';'), retval = {};\n for (var pair of cookies) {\n const keyval = pair.split('=');\n if (keyval.length < 2) {\n continue;\n }\n const key = (keyval[0] || '').trim(), value = (keyval[1] || '').trim();\n Object.defineProperty(retval, key, {\n configurable: false, enumerable: true, writable: false,\n value: decodeURIComponent(value.split('+').join(' '))\n });\n }\n return retval;\n }\n static { this.Cookies = {\n getAll: async (cookieName) => {\n const store = 'cookieStore' in window ? window.cookieStore : null;\n const retval = [];\n if (Utils.isNull(store)) {\n const nameValues = Utils.cookies();\n for (let name in nameValues) {\n if (!Utils.isNullOrEmpty(cookieName) && cookieName !== name) {\n continue;\n }\n retval.push({ name, value: nameValues[name] });\n }\n return retval;\n }\n else {\n return await store.getAll(cookieName);\n }\n },\n stringify: (data) => {\n let retval = `${data.name}=${encodeURIComponent(data.value ?? '')}`;\n if (!Utils.isNullOrEmpty(data.domain)) {\n retval += `; domain=${encodeURIComponent(data.domain)}`;\n }\n if (!Utils.isNullOrEmpty(data.path)) {\n retval += `; path=${encodeURIComponent(data.path)}`;\n }\n if (data.maxAge > 0) {\n retval += `; max-age=${data.maxAge.toFixed(0)}`;\n }\n if (!Utils.isNullOrEmpty(data.expires)) {\n retval += `; expires=${data.expires}`;\n }\n if (data.partitioned) {\n retval += '; Partitioned';\n }\n if (!Utils.isNullOrEmpty(data.sameSite)) {\n retval += `; SameSite=${encodeURIComponent(data.sameSite)}`;\n }\n if (data.secure) {\n retval += '; Secure';\n }\n return retval;\n }\n }; }\n static isVisible(el) {\n if ('checkVisibility' in el) {\n return el.checkVisibility({ checkOpacity: true, checkVisibilityCSS: true });\n }\n return getComputedStyle(el).visibility !== 'hidden' && (el.clientWidth > 0 || el.clientHeight > 0);\n }\n //#region classList DOMTokenList (css)\n static hasClass(el, className) {\n if (el.classList) {\n return el.classList.contains(className);\n }\n else {\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);\n }\n }\n static addClass(el, className) {\n const css = className.trim();\n if (el.classList) {\n DOMTokenList.prototype.add.apply(el.classList, css.split(' '));\n }\n else {\n el.setAttribute('class', el.className + ' ' + css);\n }\n }\n static removeClass(el, className) {\n const css = className.trim();\n if (el.classList) {\n DOMTokenList.prototype.remove.apply(el.classList, css.split(' '));\n }\n else {\n el.setAttribute('class', el.className.replace(new RegExp('(^|\\\\b)' + css.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' '));\n }\n }\n static toggleClass(el, className, on) {\n if (on) {\n Utils.addClass(el, className);\n }\n else {\n Utils.removeClass(el, className);\n }\n }\n //#endregion\n //#region part DOMTokenList (shadow-DOM)\n static hasPart(el, partName) {\n return el.part.contains(partName);\n }\n static addPart(el, partName) {\n DOMTokenList.prototype.add.apply(el.part, partName.trim().split(' '));\n }\n static removePart(el, partName) {\n DOMTokenList.prototype.remove.apply(el.part, partName.trim().split(' '));\n }\n static togglePart(el, partName, on) {\n if (on) {\n Utils.addPart(el, partName);\n }\n else {\n Utils.removePart(el, partName);\n }\n }\n //#endregion\n /**\n * Retrieve the bounding box of the provided element as of its rendered appearance on the stage (takes transformations into account).\n * @param el The element.\n */\n static offset(el) {\n var rect = el.getBoundingClientRect();\n return {\n top: Math.round(rect.top) + Utils.scrollTop,\n left: Math.round(rect.left) + Utils.scrollLeft,\n width: Math.round(rect.width),\n height: Math.round(rect.height)\n };\n }\n /**\n * Retrieve the bounding box of the provided element as of its rendered appearance on the stage (takes transformations into account).\n * @param el The element.\n */\n static offsetRect(el) {\n var rect = this.offset(el);\n return {\n y: rect.top,\n x: rect.left,\n width: rect.width,\n height: rect.height\n };\n }\n static naturalOffsetTop(el) {\n return (el?.offsetTop ?? 0) + ((el?.offsetParent && el.offsetParent instanceof HTMLElement) ? this.naturalOffsetTop(el.offsetParent) : 0);\n }\n static naturalOffsetLeft(el) {\n return (el?.offsetTop ?? 0) + ((el?.offsetParent && el.offsetParent instanceof HTMLElement) ? this.naturalOffsetLeft(el.offsetParent) : 0);\n }\n /**\n * Retrieve the natural bounding box of the provided element (does not takes transformations into account).\n * @param el {HTMLElement} The element.\n */\n static naturalOffset(el) {\n return { left: this.naturalOffsetLeft(el), top: this.naturalOffsetTop(el), width: el?.offsetWidth ?? 0, height: el?.offsetHeight ?? 0 };\n }\n /**\n * Retrieve the natural bounding box of the provided element (does not takes transformations into account).\n * @param el {HTMLElement} The element.\n */\n static naturalOffsetRect(el) {\n var rect = this.naturalOffset(el);\n return {\n y: rect.top,\n x: rect.left,\n width: rect.width,\n height: rect.height\n };\n }\n /** @deprecated */\n static deserializeTransform(obj) {\n return Utils.Css.deserializeTransform(obj);\n }\n static set scrollTop(y) {\n window.scrollTo(Utils.scrollLeft, y);\n }\n static set scrollLeft(x) {\n window.scrollTo(x, Utils.scrollTop);\n }\n static get scrollTop() {\n return window.scrollY /*window.pageYOffset*/ || document.documentElement.scrollTop || document.body.scrollTop || 0;\n }\n static get scrollLeft() {\n return window.scrollX /*window.pageXOffset*/ || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n }\n static get windowSize() {\n let win = window;\n return {\n width: win.innerWidth || win.document.documentElement.clientWidth || win.document.body.clientWidth || 0,\n height: win.innerHeight || win.document.documentElement.clientHeight || win.document.body.clientHeight || 0\n };\n }\n /**\n * Adds a callback at the end of a CSS animation/transition for a given element (execute once).\n * @param element The very element that has to trigger the animation/transitionend event.\n * @param callback Then callback.\n * @param timeout Fallback timeout (ms) in case the animation/transitionend event won't fire.\n */\n static addAnimationEndCallback(element, callback, timeout = 500) {\n const fn = (e) => {\n if (!e || e.target == element) {\n clearTimeout(handle);\n element.removeEventListener('animationend', fn, false);\n element.removeEventListener('transitionend', fn, false);\n callback.apply(this, [element]);\n }\n };\n element.addEventListener('animationend', fn, false);\n element.addEventListener('transitionend', fn, false);\n // fallback in case animation is missing\n const handle = setTimeout(fn, timeout);\n }\n /**\n * Promisifies the addAnimationEndCallback function.\n * @param element The very element that has to trigger the animation/transitionend event.\n * @param timeout Fallback timeout (ms) in case the animation/transitionend event won't fire.\n */\n static waitForAnimationEnd(element, timeout = 500) {\n return new Promise((resolve, _) => {\n Utils.addAnimationEndCallback(element, () => {\n resolve();\n }, timeout);\n });\n }\n /**\n * Waits until the provided timespan elapses.\n * @param msecs timespan in milliseconds\n */\n static idle(msecs) {\n return new Promise((resolve, _) => {\n setTimeout(() => resolve(), msecs);\n });\n }\n /**\n * Increases a callback loop call until cancelation is called.\n * @param callback Callback looped.\n * @param interval First callback call delay in ms (default 500).\n * @param pace Acceleration in ms per loop (default 5).\n * @param min Minimum loop rate in ms (default 20).\n *\n * Use case/example: while keeping a button pressed, the related callback execution increases in frequency.\n */\n static accelerateCallback(callback, interval = 500, pace = 5, min = 20) {\n let token = { cancel: false }, int = interval, last = pace + min;\n let fn = () => {\n callback(token);\n if (!token.cancel) {\n setTimeout(fn, int);\n if (int < last) {\n int = min;\n }\n else {\n int -= pace;\n }\n }\n };\n fn();\n }\n // #endregion\n // #region other\n static isEmpty(obj) {\n return NullChecker.isEmpty(obj) && !(obj instanceof Node);\n }\n static isNull(obj) {\n return NullChecker.isNull(obj);\n }\n // legacy\n static isArray(val) {\n return Array.isArray(val);\n }\n static isNullOrEmpty(val) {\n return Utils.isNull(val) || Utils.isEmpty(val);\n }\n /**\n * It is a `valueOf()` based comparison.\n * @param v1 term 1\n * @param v2 term 2\n */\n static areSemanticallyEqual(v1, v2) {\n // undefined and null are semantically equal\n v1 ??= null;\n v2 ??= null;\n const sv1 = v1 && v1.valueOf && v1.valueOf();\n const sv2 = v2 && v2.valueOf && v2.valueOf();\n return sv1 === sv2;\n }\n /** Legacy alias for Object.assign(). */\n static { this.extend = Object.assign; }\n static clone(obj) {\n if (obj === undefined)\n return undefined;\n return DeepCloner.clone(obj);\n }\n /** Legacy alias for Promise.resolve(). */\n static fromResult(v) {\n return Promise.resolve(v);\n }\n static fromResultAsync(task) {\n return new Promise(resolve => requestAnimationFrame(() => resolve(task())));\n }\n static readonlyCopy(obj) {\n if (Utils.isNull(obj)) {\n return null;\n }\n if (Utils.isArray(obj)) {\n const output = obj.slice(0);\n Object.freeze(output);\n return output;\n }\n else {\n const output = {};\n for (let name in obj) {\n output[name] = obj[name];\n }\n Object.freeze(output);\n return output;\n }\n }\n //#endregion\n //#region Net\n static { this.URIs = {\n format: function (url, parameters, removeMatchedParameters) {\n // replace segments\n for (let name in parameters || {}) {\n let tmpl = new RegExp(\"(^|\\\\/)\\\\{\" + name + \"\\\\??\\\\}(\\\\/|$)\");\n let arr = tmpl.exec(url);\n if (arr && arr.length) {\n let rpl = new RegExp(\"\\\\{\" + name + \"\\\\??\\\\}\"), ndx = arr.index;\n url = url.substring(0, ndx) + url.substring(ndx).replace(rpl, encodeURIComponent(parameters[name]));\n if (removeMatchedParameters) {\n delete parameters[name];\n }\n }\n }\n // clean-up optional\n const optPattern = /(^|\\/)\\{[\\w]+\\?\\}(\\/|$)/;\n var optArr;\n while ((optArr = optPattern.exec(url)) && optArr.length > 0) {\n let wholeMatch = optArr[0];\n url = url.replace(wholeMatch, wholeMatch.endsWith('/') ? \"/\" : \"\");\n }\n return url;\n },\n appendQuery: function (url, parameters, removeNullEntries = false, hash = false) {\n const char = hash ? '#' : '?', pattern = hash ? /#/ : /\\?/;\n const query = (pattern.test(url) ? '&' : char) +\n Object.keys(parameters)\n .filter(k => !Utils.isNull(parameters[k]) || !removeNullEntries)\n .map(k => encodeURIComponent(k) + '=' + encodeURIComponent(parameters[k] ?? '')).join('&');\n return url + (query.length > 1 ? query : '');\n },\n parseQuery: (query = window.location) => {\n if (typeof query !== 'string') {\n query = query.search;\n }\n const obj = {};\n new URLSearchParams(query).forEach((value, name) => {\n Object.defineProperty(obj, name, { enumerable: true, value });\n });\n return obj;\n },\n hasMandatoryTemplateSegments: function (url) {\n return /(^|\\/)\\{\\.*\\}(\\/|$)/.test(url);\n },\n parseRoute: function (pathTemplate) {\n let tmpl = pathTemplate;\n const trunks = [];\n if (!Utils.isNullOrEmpty(tmpl)) {\n let res;\n let j = 0;\n while ((res = SEGMENT_PATTERN.exec(tmpl)) != null) {\n const item = res[0];\n const res1 = ROUTE_SEGMENT_PATTERN.exec(item);\n if (!Utils.isNullOrEmpty(res1)) {\n const prop = res1[1];\n trunks.push({ name: prop, optional: item.charAt(item.length - 2) === '?', index: j });\n }\n tmpl = tmpl.substring(res.index + item.length);\n j++;\n }\n }\n return trunks;\n },\n split: function (url) {\n const URL_PATTERN = /^((https?:)?\\/\\/[^\\/]+)?([^\\?#]+)(\\?[^#]*)?(#[^#]*)?$/;\n const regArr = URL_PATTERN.exec(url);\n if (!regArr /*|| regArr.length <= 3*/) {\n return null;\n }\n return { domain: regArr[2] ?? '', protocol: regArr[1] ?? '', path: regArr[3] ?? '', query: regArr[4] ?? '', hash: regArr[5] ?? '' };\n },\n parseState: function (metadata, url, path, query, hash) {\n let fullPath = url;\n if (Utils.isNullOrEmpty(path)) {\n const split = Utils.URIs.split(url);\n path = split.path;\n if (Utils.isNullOrEmpty(query)) {\n query = split.query ?? '';\n }\n if (Utils.isNullOrEmpty(hash)) {\n hash = split.hash ?? '';\n }\n fullPath = path + query + hash;\n }\n const parseHash = (hash) => {\n const ndx = hash.indexOf('#');\n if (ndx !== 0) {\n return null;\n }\n return hash.substring(ndx + 1);\n };\n const parseQuery = (search) => {\n const ndx = search.indexOf('?');\n if (ndx === 0) {\n return Utils.URIs.parseQuery(search.substring(ndx + 1));\n }\n return {};\n };\n let obj = {\n $path: fullPath,\n $pathname: path,\n $querystring: query.length > 0 ? query.substring(1) : query,\n $query: parseQuery(query),\n $hash: parseHash(hash)\n }, i = 0;\n const tmpl = metadata.slice();\n if (!Utils.isNullOrEmpty(tmpl)) {\n let res;\n while ((res = SEGMENT_PATTERN.exec(path)) != null) {\n const v = res[0];\n const tmplIndex = tmpl.findIndex(t => t.index === i);\n if (tmplIndex >= 0) {\n const tmplItem = tmpl[tmplIndex];\n const { name: prop } = tmplItem;\n Object.defineProperty(obj, prop, { enumerable: true, value: v.substring(1) });\n // remove used value\n tmpl.splice(tmplIndex, 1);\n }\n i++;\n path = path.substring(res.index + v.length);\n }\n }\n for (let k = 0; k < tmpl.length; k++) {\n if (!tmpl[k].optional) {\n throw `Must provide \"${tmpl[k].name}\" route value.`;\n }\n }\n return obj;\n }\n }; }\n /**\n * Ensures the proper parsing of Web API results, including deprecated/legacy Pacem wrapped results.\n */\n static getApiResult(json) {\n if (typeof json === 'object'\n && !Utils.isNull(json)\n && json.hasOwnProperty('success')) {\n switch (json.success) {\n case true:\n if (json.hasOwnProperty('result')) {\n return json.result;\n }\n break;\n case false:\n if (json.hasOwnProperty('error')) {\n return null;\n }\n break;\n }\n }\n return json;\n }\n}\n// }\n","import { Utils } from './utils';\nexport var EventKeyModifier;\n(function (EventKeyModifier) {\n EventKeyModifier[\"AltKey\"] = \"Alt\";\n EventKeyModifier[\"CtrlKey\"] = \"Ctrl\";\n EventKeyModifier[\"ShiftKey\"] = \"Shift\";\n EventKeyModifier[\"MetaKey\"] = \"Cmd\";\n})(EventKeyModifier || (EventKeyModifier = {}));\nexport class CustomEventUtils {\n static isInstanceOf(evt, type) {\n return evt instanceof type;\n // || CustomElementUtils.getAttachedPropertyValue(evt, 'pacem:custom-event') === evt.type;\n }\n static getEventCoordinates(evt) {\n var src;\n if ('touches' in evt) {\n if (!Utils.isNullOrEmpty(evt.touches)) {\n src = evt.touches[0];\n }\n else if (!Utils.isNullOrEmpty(evt.changedTouches)) {\n src = evt.changedTouches[0];\n }\n }\n else {\n src = evt;\n }\n return {\n page: { x: src.pageX, y: src.pageY },\n screen: { x: src.screenX, y: src.screenY },\n client: { x: src.clientX, y: src.clientY }\n };\n }\n static getEventKeyModifiers(evt) {\n var which = evt.which;\n if (evt instanceof MouseEvent) {\n which = evt.button;\n }\n return {\n which: which, shiftKey: evt.shiftKey, altKey: evt.altKey, ctrlKey: evt.ctrlKey, metaKey: evt.metaKey\n };\n }\n static matchModifiers(evt, ...args) {\n const modifiers = !Utils.isNull(args) && (args.length === 1 && Utils.isArray(args[0]) ? args[0] : Array.from(args).filter(i => !Utils.isNullOrEmpty(i))), lowerCaseModifiers = (modifiers || []).map(i => i.toLowerCase());\n const altKey = lowerCaseModifiers.indexOf('alt') >= 0 || lowerCaseModifiers.indexOf('option') >= 0, shiftKey = lowerCaseModifiers.indexOf('shift') >= 0, ctrlKey = lowerCaseModifiers.indexOf('ctrl') >= 0, metaKey = lowerCaseModifiers.indexOf('win') >= 0 || lowerCaseModifiers.indexOf('cmd') >= 0;\n if (altKey !== evt.altKey\n || shiftKey !== evt.shiftKey\n || metaKey !== evt.metaKey\n || ctrlKey !== evt.ctrlKey) {\n return false;\n }\n return true;\n }\n static fixEdgeCustomEventSubClassInstance(evt, type) {\n // this an optimistic BUGGED workaround due to a damn' Edge bug: https://github.com/Microsoft/ChakraCore/issues/3952\n if (!(evt instanceof type)) {\n Object.setPrototypeOf(evt, type);\n }\n }\n}\n//}\n","/// <reference path=\"utils-customevent.ts\" />\nimport { Utils } from './utils';\nimport { CustomEventUtils } from './utils-customevent';\n// namespace Pacem {\nexport class CustomTypedEvent extends CustomEvent /* new in TypeScript v2.7.1 -> */ {\n constructor(type, detail, eventInit) {\n super(type, Utils.extend({ detail: detail }, eventInit || {}));\n CustomEventUtils.fixEdgeCustomEventSubClassInstance(this, this.constructor);\n }\n}\nfunction isEventInit(obj) {\n if ('detail' in obj) {\n // must provide a detail\n for (let prop in obj) {\n if (prop !== 'bubbles' && prop !== 'cancelable' && prop !== 'composed' && prop !== 'detail') {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n// TODO: make inherit from CustomTypedEvent\nexport class CustomUIEvent extends CustomEvent {\n constructor(type, detail, eventInit, orig) {\n super(type, Utils.extend((isEventInit(detail || {}) ? detail : { detail: detail }), (!(eventInit instanceof Event) && eventInit) || {}));\n const originalEvent = orig || eventInit;\n if (originalEvent instanceof Event) {\n this.#originalEvent = originalEvent;\n this.#modifiers = CustomEventUtils.getEventKeyModifiers(originalEvent);\n if (originalEvent instanceof MouseEvent || originalEvent instanceof TouchEvent) {\n this.#coords = CustomEventUtils.getEventCoordinates(originalEvent);\n }\n }\n CustomEventUtils.fixEdgeCustomEventSubClassInstance(this, this.constructor);\n }\n #originalEvent;\n #modifiers;\n #coords;\n get originalEvent() {\n return this.#originalEvent;\n }\n get which() {\n return this.#modifiers?.which;\n }\n get altKey() {\n return this.#modifiers?.altKey;\n }\n get shiftKey() {\n return this.#modifiers?.shiftKey;\n }\n get ctrlKey() {\n return this.#modifiers?.ctrlKey;\n }\n get metaKey() {\n return this.#modifiers?.metaKey;\n }\n get pageX() {\n return this.#coords?.page.x;\n }\n get pageY() {\n return this.#coords?.page.y;\n }\n get clientX() {\n return this.#coords?.client.x;\n }\n get clientY() {\n return this.#coords?.client.y;\n }\n get screenX() {\n return this.#coords?.screen.x;\n }\n get screenY() {\n return this.#coords?.screen.y;\n }\n}\nexport const AttributeChangeEventName = 'attributechange';\nexport class AttributeChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super(AttributeChangeEventName, args);\n }\n}\nexport const PropertyChangeEventName = 'propertychange';\nexport class PropertyChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super(PropertyChangeEventName, args);\n }\n}\n//}\n","import { CustomTypedEvent } from '../events';\nexport class AnimationEvent extends CustomTypedEvent {\n constructor(args) {\n super(\"step\", args);\n }\n}\nexport class AnimationEndEvent extends CustomEvent {\n constructor() {\n super('end');\n }\n}\nexport class AnimationStartEvent extends CustomEvent {\n constructor() {\n super('start');\n }\n}\n//}\n","//namespace Pacem.Animations {\nimport { Easings } from './easings';\nexport class TweenService {\n run(from, to, duration, delay = 0, easing = Easings.linear, callback = null) {\n return new Promise((resolve, _) => {\n const now = (performance && performance.now()) || Date.now();\n const start = now + Math.abs(delay || 0);\n const end = start + Math.abs(duration || 0);\n //\n const fn = () => {\n const t = (performance && performance.now()) || Date.now();\n if (t >= start && t < end) {\n const ct = (t - start) / duration;\n const v = from + (easing || Easings.linear)(ct) * (to - from);\n if (callback) {\n callback(ct, v);\n }\n }\n if (t < end) {\n requestAnimationFrame(fn);\n }\n else {\n if (callback) {\n callback(1.0, to);\n }\n resolve();\n }\n };\n fn();\n });\n }\n}\n//}\n","// namespace Pacem.Animations {\nexport class Timer {\n #fps;\n #callback;\n #handle;\n constructor(callback, fps) {\n this.#then = 0;\n this._run = (t) => {\n this.#handle = requestAnimationFrame(this._run);\n const now = performance.now(), fps = this.#fps;\n const delta = now - this.#then;\n if (delta >= fps) {\n this.#then = now - (delta % fps);\n this.#callback(t);\n }\n };\n this.#fps = 1000 / fps;\n this.#callback = callback;\n this.#handle = requestAnimationFrame(this._run);\n }\n #then;\n static run(callback, fps = 60) {\n return new Timer(callback, fps);\n }\n stop() {\n cancelAnimationFrame(this.#handle);\n }\n}\n;\n// }\n","//namespace Pacem.Net {\nexport var HttpMethod;\n(function (HttpMethod) {\n HttpMethod[\"Get\"] = \"GET\";\n HttpMethod[\"Post\"] = \"POST\";\n HttpMethod[\"Put\"] = \"PUT\";\n HttpMethod[\"Delete\"] = \"DELETE\";\n HttpMethod[\"Options\"] = \"OPTIONS\";\n HttpMethod[\"Head\"] = \"HEAD\";\n HttpMethod[\"Patch\"] = \"PATCH\";\n HttpMethod[\"Connect\"] = \"CONNECT\";\n HttpMethod[\"Trace\"] = \"TRACE\";\n})(HttpMethod || (HttpMethod = {}));\nexport const FetchResultEventName = 'fetchresult';\nexport const FetchErrorEventName = 'error';\nexport const FetchSuccessEventName = 'success';\nexport class Fetcher {\n static isEmpty(r) {\n return r.status === 204 || r.headers.get(\"Content-Length\") === \"0\";\n }\n}\n//}\n","/// <reference path=\"../promise.ts\" />\nimport { DeferPromise } from '../promise';\nimport { HttpMethod } from './fetcher';\n// namespace Pacem.Net {\nconst noop = () => { };\nexport class StatusCodeError extends Error {\n constructor(statusCode, statusText) {\n super(statusText);\n this.statusCode = statusCode;\n }\n get status() {\n return this.statusCode;\n }\n}\n/** @deprecated */\nexport class Response {\n constructor(req, processTime) {\n if (!req)\n return;\n this._status = req.status;\n this._body = req.response;\n this._text = req.responseText;\n this._type = req.responseType;\n this._allHeadersRaw = req.getAllResponseHeaders();\n this._processTime = processTime;\n }\n get processTime() {\n return this._processTime;\n }\n get headers() {\n if (this._headers === undefined && this._allHeadersRaw)\n this._parseHeaders();\n return this._headers;\n }\n get size() {\n return +this.headers['Content-Length'];\n }\n get mime() {\n return this.headers['Content-Type'];\n }\n get date() {\n return new Date(Date.parse(this.headers['Date']));\n }\n _parseHeaders() {\n let headers = {}, rows = this._allHeadersRaw.split('\\r\\n');\n rows.forEach(r => {\n if (r && r.length) {\n let index = r.indexOf(':');\n let key = r.substr(0, index).trim();\n let value = r.substr(index + 1).trim();\n headers[key] = value;\n }\n });\n this._headers = headers;\n }\n get status() { return this._status; }\n get text() { return this._text; }\n get content() { return this._body; }\n get type() { return this._type; }\n /**\n * Short-hand utility for getting or parsing json content (if any).\n */\n get json() {\n if (this._type === 'json')\n return this._body;\n else\n try {\n return JSON.parse(this._text);\n }\n catch (e) {\n return undefined;\n }\n }\n}\n/** @deprecated */\nexport class Http {\n constructor() { }\n /**\n * Executes an asynchronous XMLHttpRequest over the net.\n * @param {String} url - Base url to be requested.\n * @param {Object} [options] - Options for the request.\n * @param {Object} [options.data] - Data to be sent along.\n * @param {String} [options.method=GET] - HTTP Verb to be used.\n * @param {Object} [options.headers] - Key-value pairs of strings.\n * @param {Function} [options.progress] - Callback on retrieval progress.\n */\n request(url, options) {\n var _this = this;\n let deferred = DeferPromise.defer();\n options = options || { method: HttpMethod.Get };\n var method = options.method || HttpMethod.Get;\n var data = options.data || {};\n var progress = options.progress || noop;\n var headers = options.headers || {};\n if (_this.accessToken)\n headers['Authorization'] = 'Bearer ' + _this.accessToken;\n var req = new XMLHttpRequest();\n // send cookies?\n req.withCredentials = false;\n //\n req.addEventListener(\"progress\", (evt) => {\n if (evt.lengthComputable) {\n var pct = evt.loaded / evt.total;\n // callback\n if (typeof progress === 'function')\n progress.apply(_this, [pct]);\n }\n }, false);\n req.addEventListener(\"error\", (err) => {\n // Network error occurred\n deferred.reject(new StatusCodeError(500, err['message'] || 'Unknown error'));\n }, false);\n //req.addEventListener(\"abort\", transferCanceled, false);\n var stopWatch;\n req.addEventListener('load', () => {\n if (req.status >= 200 && req.status < 300) {\n // Resolve the promise with the response\n var response = new Response(req, Date.now() - stopWatch);\n deferred.resolve(response);\n }\n else\n deferred.reject(new StatusCodeError(req.status, req.statusText));\n }, false);\n var params;\n switch (method.toUpperCase()) {\n case HttpMethod.Get:\n url += (/\\?/.test(url) ? '&' : '?') + (typeof data == 'string' ? data : Object.keys(data).map(function (k) { return encodeURIComponent(k) + '=' + encodeURIComponent(data[k]); }).join('&'));\n break;\n case HttpMethod.Post:\n params = JSON.stringify(data);\n }\n //\n req.open(method, url, true);\n switch (method.toUpperCase()) {\n case HttpMethod.Get:\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n break;\n case HttpMethod.Post:\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n req.setRequestHeader('Content-Type', 'application/json');\n break;\n }\n for (var kvp in headers) {\n req.setRequestHeader(kvp, headers[kvp]);\n }\n //\n stopWatch = Date.now();\n req.send(params);\n return deferred.promise;\n }\n /**\n * Short-hand for 'GET' requests.\n */\n get(url, data, headers) {\n return this.request(url, { 'method': HttpMethod.Get, 'data': data, 'headers': headers || {} });\n }\n /**\n * Short-hand for 'POST' requests (content provided as json).\n */\n post(url, data, headers) {\n return this.request(url, { 'method': HttpMethod.Post, 'data': data, 'headers': headers || {} });\n }\n}\n//}\n","import { Point } from '@pacem/pacem-foundation';\nimport { Utils } from '../utils';\nimport { CustomUIEvent } from '../events';\n//namespace Pacem.UI {\nexport var DragDataMode;\n(function (DragDataMode) {\n /** Source element is dragged around (floater is the element itself so is the data). */\n DragDataMode[\"Self\"] = \"self\";\n /** The floater is an element clone, while data is the element itself. */\n DragDataMode[\"Alias\"] = \"alias\";\n /** The floater is a clone of the element, while data is a copy of it. */\n DragDataMode[\"Copy\"] = \"copy\";\n})(DragDataMode || (DragDataMode = {}));\nexport var DropBehavior;\n(function (DropBehavior) {\n /** Drag & drop task is meant to sort or swap items around. */\n DropBehavior[\"InsertChild\"] = \"insert\";\n /** Drag & drop task has no logical meaning. Event listeners might be in charge for a specific scenario. */\n DropBehavior[\"None\"] = \"none\";\n})(DropBehavior || (DropBehavior = {}));\nexport var DropTargetMissedBehavior;\n(function (DropTargetMissedBehavior) {\n /** Reverts to the last tracked spot. */\n DropTargetMissedBehavior[\"Revert\"] = \"revert\";\n /** Deletes item on spill-out. */\n DropTargetMissedBehavior[\"Remove\"] = \"remove\";\n /** No explicit behavior, might fallback to 'revert' when drop behavior is 'insert'. */\n DropTargetMissedBehavior[\"None\"] = \"none\";\n})(DropTargetMissedBehavior || (DropTargetMissedBehavior = {}));\nexport var DragDropEventType;\n(function (DragDropEventType) {\n /** Initial state change before first dragging act. */\n DragDropEventType[\"Init\"] = \"draginit\";\n /** First dragging act. */\n DragDropEventType[\"Start\"] = \"dragstart\";\n /** Any dragging act. */\n DragDropEventType[\"Drag\"] = \"drag\";\n /** Dropping act. */\n DragDropEventType[\"Drop\"] = \"drop\";\n /** Hovering a drop target. */\n DragDropEventType[\"Over\"] = \"dragover\";\n /** Exiting a drop target. */\n DragDropEventType[\"Out\"] = \"dragout\";\n /** Terminating the drag-drop activities. */\n DragDropEventType[\"End\"] = \"dragend\";\n})(DragDropEventType || (DragDropEventType = {}));\nclass DragDropEventArgsBaseClass {\n constructor(_builder) {\n this._builder = _builder;\n this.currentPosition = _builder.currentPosition;\n this.target = _builder.target;\n }\n get element() {\n return this._builder.element;\n }\n get origin() {\n return this._builder.origin;\n }\n get initialDelta() {\n return this._builder.initialDelta;\n }\n get startTime() {\n return this._builder.startTime;\n }\n get floater() {\n return this._builder.floater;\n }\n get delta() {\n var args = this;\n return Point.add(args.initialDelta, /* included in `initialDelta` for perf sake => { x: this._builder.scroll.left, y: this._builder.scroll.top },*/ Point.subtract(args.origin, args.currentPosition));\n }\n}\nexport class DragDropInitEventArgsClass extends DragDropEventArgsBaseClass {\n constructor(_builder) {\n super(_builder);\n this.placeholder = _builder.placeholder;\n this.data = _builder.data;\n }\n static fromArgs(builder) {\n return new DragDropInitEventArgsClass(Utils.extend({}, builder));\n }\n}\nexport class DragDropEventArgsClass extends DragDropEventArgsBaseClass {\n constructor(_builder, _placeholder = _builder.placeholder, _data = _builder.data) {\n super(_builder);\n this._placeholder = _placeholder;\n this._data = _data;\n }\n get placeholder() {\n return this._placeholder;\n }\n get data() {\n return this._data;\n }\n static fromArgs(builder) {\n return new DragDropEventArgsClass(Utils.extend({}, builder));\n }\n}\nexport class DragDropEvent extends CustomUIEvent {\n constructor(type, args, eventInit, evt) {\n super(type, args, eventInit, evt);\n }\n}\n//}\n","import { Utils } from '../utils';\nimport { CustomUIEvent } from '../events';\n//namespace Pacem.UI {\nexport var RescaleHandle;\n(function (RescaleHandle) {\n RescaleHandle[\"All\"] = \"all\";\n RescaleHandle[\"Top\"] = \"top\";\n RescaleHandle[\"Left\"] = \"left\";\n RescaleHandle[\"Right\"] = \"right\";\n RescaleHandle[\"Bottom\"] = \"bottom\";\n})(RescaleHandle || (RescaleHandle = {}));\nexport var RescaleEventType;\n(function (RescaleEventType) {\n RescaleEventType[\"Start\"] = \"rescalestart\";\n RescaleEventType[\"Rescale\"] = \"rescale\";\n RescaleEventType[\"End\"] = \"rescaleend\";\n})(RescaleEventType || (RescaleEventType = {}));\nexport class RescaleEventArgsClass {\n constructor(_builder) {\n this._builder = _builder;\n }\n get currentPosition() {\n return this._builder.currentPosition;\n }\n get targetRect() {\n return this._builder.targetRect;\n }\n get element() {\n return this._builder.element;\n }\n get handle() {\n return this._builder.handle;\n }\n static fromArgs(builder) {\n return new RescaleEventArgsClass(Utils.extend({}, builder));\n }\n}\nexport class RescaleEvent extends CustomUIEvent {\n constructor(type, args, eventInit, evt) {\n super(type, args, eventInit, evt);\n }\n}\n//}\n","import { Utils } from '../utils';\nimport { CustomUIEvent } from '../events';\nexport var RotateEventType;\n(function (RotateEventType) {\n RotateEventType[\"Start\"] = \"rotatestart\";\n RotateEventType[\"Rotate\"] = \"rotate\";\n RotateEventType[\"End\"] = \"rotateend\";\n})(RotateEventType || (RotateEventType = {}));\nexport class RotateEventArgsClass {\n constructor(_builder) {\n this._builder = _builder;\n }\n get currentPosition() {\n return this._builder.currentPosition;\n }\n get rotation() {\n return this._builder.rotation;\n }\n get element() {\n return this._builder.element;\n }\n get center() {\n return this._builder.center;\n }\n static fromArgs(builder) {\n return new RotateEventArgsClass(Utils.extend({}, builder));\n }\n}\nexport class RotateEvent extends CustomUIEvent {\n constructor(type, args, eventInit, evt) {\n super(type, args, eventInit, evt);\n }\n}\n//}\n","import { Utils } from '../utils';\nimport { CustomTypedEvent } from '../events';\nexport var SwipeEventType;\n(function (SwipeEventType) {\n SwipeEventType[\"Swipe\"] = \"swipe\";\n SwipeEventType[\"Pan\"] = \"pan\";\n SwipeEventType[\"SwipeLeft\"] = \"swipeleft\";\n SwipeEventType[\"SwipeRight\"] = \"swiperight\";\n SwipeEventType[\"SwipeUp\"] = \"swipeup\";\n SwipeEventType[\"SwipeDown\"] = \"swipedown\";\n // end of swipe animation\n SwipeEventType[\"SwipeAnimationEnd\"] = \"swipeanimationend\";\n SwipeEventType[\"SwipeLeftAnimationEnd\"] = \"swipeleftanimationend\";\n SwipeEventType[\"SwipeRightAnimationEnd\"] = \"swiperightanimationend\";\n SwipeEventType[\"SwipeUpAnimationEnd\"] = \"swipeupanimationend\";\n SwipeEventType[\"SwipeDownAnimationEnd\"] = \"swipedownanimationend\";\n})(SwipeEventType || (SwipeEventType = {}));\nexport class SwipeEventArgsClass {\n constructor(_builder) {\n this._builder = _builder;\n }\n get #isVertical() {\n const { verticalspeed, horizontalspeed, vertical } = this._builder;\n const isVertical = vertical ?? (Math.abs(horizontalspeed) < Math.abs(verticalspeed));\n return isVertical;\n }\n get direction() {\n return this.#isVertical\n ? (this._builder.verticalspeed > 0 ? 'down' : 'up')\n : (this._builder.horizontalspeed > 0 ? 'right' : 'left');\n }\n /** Speed in pixels/second, with sign. */\n get speed() {\n const { verticalspeed, horizontalspeed } = this._builder;\n return this.#isVertical ? verticalspeed : horizontalspeed;\n }\n /** Current offset relative to element's original position. */\n get delta() {\n const { position: { x, y }, t0: { position: { x: x0, y: y0 } } } = this._builder;\n return this.#isVertical\n ? y - y0\n : x - x0;\n }\n get flinging() {\n const { fling } = this._builder;\n return fling > 0 && Math.abs(this.speed) > fling;\n }\n /** Final offset (relative to element's original position) that takes release velocity into account. */\n get predictedDelta() {\n const inertia = this._builder.inertia ?? 8;\n return this.delta + this.speed / inertia;\n }\n /** Seconds to reach the final predicted position. */\n get predictedDuration() {\n const inertia = this._builder.inertia ?? 8;\n return -Math.log(.01 /* v/v0 where v ~ 0 <=> 1% of v0 */) / inertia;\n }\n get element() {\n return this._builder.element;\n }\n static fromArgs(builder) {\n return new SwipeEventArgsClass(Utils.extend({}, builder));\n }\n}\nexport class SwipeEvent extends CustomTypedEvent {\n constructor(type, args, eventInit) {\n super(type, args, eventInit);\n }\n}\n//}\n","import { CustomTypedEvent } from './events';\nexport class CurrentIndexChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super('currentindexchange', args);\n }\n}\n//}\n","/// <reference path=\"events.ts\" />\nexport const Type = Function;\n;\n// #region CONSTS\nexport const WATCH_PROPS_VAR = 'pacem:properties';\nexport const INSTANCE_BINDINGS_VAR = 'pacem:custom-element:bindings';\nexport const INSTANCE_HOST_VAR = 'pacem:custom-element:host';\nexport const INSTANCE_SCOPE_VAR = 'pacem:custom-element:scope';\n// #endregion\n//}\n","//namespace Pacem {\nvar root;\n/** the overall customelement prefix */\nexport const P = (root = window['Pacem'])?.Configuration?.prefix ?? 'pacem';\nexport const PCSS = root?.Configuration?.css ?? P;\n//}\n","//namespace Pacem {\nexport class TemplateElement extends HTMLElement {\n}\n//}\n","/// <reference path=\"expression.ts\" />\n/// <reference path=\"promise.ts\" />\n/// <reference path=\"prefix.ts\" />\n/// <reference path=\"trees/json.ts\" />\n/// <reference path=\"utils.ts\" />\nimport { Utils } from './utils';\nimport { INSTANCE_SCOPE_VAR, WATCH_PROPS_VAR, INSTANCE_HOST_VAR, INSTANCE_BINDINGS_VAR } from './types';\nimport { PCSS } from './prefix';\nimport { Expression } from './expression';\nimport { TemplateElement } from './template';\n// namespace Pacem {\nconst PACEM_BAG = '__pacem__';\n// {{ binding.expression }}\nconst bindingPattern = /^\\{\\{(.|\\n)+\\}\\}$/;\n// TODO: CSP-proof binding (no unsafe-eval)\n// binding syntax example: `{ binding: { source: ^item.property.path, binder: $pacem.func, parameters: [ ^index, 'foo', : host._baz], mode: 'twoway' } }`\nexport class CustomElementUtils {\n static get polyfilling() {\n return customElements instanceof window['CustomElementRegistry'];\n }\n static camelToKebab(camelCased) {\n return camelCased && camelCased.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n static kebabToCamel(kebabCased) {\n return kebabCased && kebabCased.replace(/(-[a-z])/g, (m) => {\n return m[1].toUpperCase();\n });\n }\n static getWatchedProperties(target, includeInherited = true) {\n var properties = [];\n var chain = target instanceof HTMLElement ? target.constructor : target;\n do {\n let additional = this.getAttachedPropertyValue(chain, WATCH_PROPS_VAR) || [];\n let pblic = additional.filter(p => !p.name.startsWith('_'));\n Array.prototype.splice.apply(properties, [0, 0].concat(pblic));\n } while (includeInherited && (chain = Object.getPrototypeOf(chain)));\n return properties;\n }\n static getWatchedProperty(target, name) {\n return this.getWatchedProperties(target, true).find(p => p.name === name);\n }\n static importjs(src, integrity = null, crossorigin = false) {\n var attrs = { 'type': 'text\\/javascript', 'src': src };\n if (!Utils.isNullOrEmpty(integrity))\n Utils.extend(attrs, { integrity: integrity });\n if (crossorigin)\n Utils.extend(attrs, { 'crossorigin': '' });\n return CustomElementUtils.import(src, 'script', attrs, (document.head || document.getElementsByTagName(\"head\")[0]));\n }\n static importcss(src, integrity = null, crossorigin = false) {\n var attrs = { 'rel': 'stylesheet', 'href': src };\n if (!Utils.isNullOrEmpty(integrity))\n Utils.extend(attrs, { integrity: integrity });\n if (crossorigin)\n Utils.extend(attrs, { 'crossorigin': 'anonymous' });\n return CustomElementUtils.import(src, 'link', attrs, (document.head || document.getElementsByTagName(\"head\")[0]));\n }\n static import(key, tagName, attrs, appendTo = document.body) {\n const _p = Utils.core;\n var _imports = _p['imports'] = _p['imports'] || {};\n return _imports[key] = _imports[key] || new Promise((resolve, reject) => {\n // try to find the equivalent element in the DOM\n var selector = tagName;\n for (let attr in attrs || {}) {\n selector += `[${attr}=\"${attrs[attr]}\"]`;\n }\n var script = document.querySelector(selector);\n if (!Utils.isNull(script)) {\n // best guess: since element was already there, it is hopefully fully loaded\n resolve(script);\n }\n else {\n script = document.createElement(tagName);\n script.onerror = e => {\n reject(e);\n };\n script.onload = () => {\n resolve(script);\n };\n for (var attr in (attrs || {})) {\n script.setAttribute(attr, attrs[attr]);\n }\n appendTo.appendChild(script);\n }\n });\n }\n static { this.Theme = {\n importWebFonts() {\n function cleanupQuotes(input) {\n // check if the string is wrapped around quotes to escape ';' chars\n if (/^('|\").*\\1$/.test(input)) {\n return input.substring(1, input.length - 1);\n }\n return input;\n }\n function downloadFont(fontFace) {\n return Utils.isNullOrEmpty(fontFace) ? Promise.resolve() : document.fonts.load('1rem ' + fontFace);\n }\n const promises = ['icons', 'std', 'main', 'tech', 'btn'].map(f => {\n const fontFace = Utils.Css.getVariableValue(`--${PCSS}-font-${f}`).split(',')[0];\n const url = cleanupQuotes(Utils.Css.getVariableValue(`--${PCSS}-font-${f}-api-url`));\n if (Utils.isNullOrEmpty(url)) {\n return downloadFont(fontFace);\n }\n else {\n return CustomElementUtils.importcss(url).then(_ => downloadFont(fontFace));\n }\n });\n const atLeast1FontFaceReady = new Promise((resolve) => {\n function check(count = 0) {\n // size against the specs: https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet/size#specifications\n if (count > 4 || !('size' in document.fonts) || typeof document.fonts.size === 'number' && document.fonts.size > 0) {\n document.fonts.ready.then(resolve);\n }\n else {\n setTimeout(check, 250, count++);\n }\n }\n check();\n });\n promises.push(atLeast1FontFaceReady);\n return Promise.all(promises);\n }\n }; }\n static setAttachedPropertyValue(target, name, value) {\n /*(target[PACEM_BAG] = target[PACEM_BAG] || {})[name] = value;*/\n if (Utils.isNull(target))\n return;\n const propKey = Object.getOwnPropertyDescriptor(target, PACEM_BAG);\n const bag = (propKey && propKey.value)\n || Object.defineProperty(target, PACEM_BAG, {\n value: {}, enumerable: false, writable: false, configurable: false\n })[PACEM_BAG];\n if (Utils.isNull(value))\n delete bag[name];\n else\n bag[name] = value;\n }\n static deleteAttachedPropertyValue(target, name) {\n CustomElementUtils.setAttachedPropertyValue(target, name, undefined);\n }\n static getAttachedPropertyValue(target, name, ensureValue) {\n const propKey = Object.getOwnPropertyDescriptor(target, PACEM_BAG), bag = propKey && propKey.value;\n if (Utils.isNull(bag && bag[name]) && !Utils.isNull(ensureValue)) {\n CustomElementUtils.setAttachedPropertyValue(target, name, ensureValue);\n return ensureValue;\n }\n return bag && bag[name];\n }\n /**\n * Resolves a dotted path into actual values.\n * @param path Dotted path\n * @param scope Root of the path\n */\n static resolvePath(path, scope) {\n if (!path || !scope)\n return undefined;\n if (/[\\(\\)\\{\\}]/.test(path))\n throw `Security alert: not allowed to process paths like ${path}.`;\n const trunks = path.split('.');\n var root = scope, ref = root, parent, core = trunks[0];\n trunks.forEach((t, i) => {\n var trunksSq = t.split('[');\n trunksSq.forEach((t2, j) => {\n parent = ref;\n if (/\\]$/.test(t2)) {\n t2 = t2.substring(0, t2.length - 1);\n if (/^('|\").+[^\\\\]\\1$/.test(t2)) {\n t2 = t2.substr(1, t2.length - 2);\n }\n }\n ref = ref[t2];\n });\n });\n var name, ndx;\n if (/\\]$/.test(path)) {\n ndx = path.lastIndexOf('[');\n name = path.substring(ndx + 1);\n name = name.substring(0, name.length - 1);\n }\n else {\n ndx = path.lastIndexOf('.');\n name = path.substring(ndx + 1);\n }\n return { target: { value: ref, name: name }, parent: { value: parent || scope, path: path.substring(0, ndx) }, root: { value: root, property: core } };\n }\n static set(element, path, value) {\n var obj = CustomElementUtils.resolvePath(path, element);\n var current = obj.target.value;\n if (current !== value) {\n if (obj.parent.value != obj.root.value /* nested property scenario */\n && !(obj.parent.value instanceof HTMLElement) /* and not targeting an HTMLElement (which will eventually fire autonomously) */) {\n // 1. set new value (won't fire 'propertychange' since it's a nested property)\n obj.parent.value[obj.target.name] = value;\n // 2. clone the resulting object (will be set as the new one at 4.)\n const set_val = Utils.clone(obj.root.value[obj.root.property]);\n // 3. reset to previous value (so that when 4. will trigger the 'propertychange' we'll have meaningful arguments)\n obj.parent.value[obj.target.name] = current;\n // repeater-item?\n let repItem;\n if (obj.root.property === 'item' && !Utils.isNull(repItem = RepeaterItem.getRepeaterItem(obj.root.value))) {\n // kind of ugly solution, I know. it works however...\n // trigger array update\n repItem.repeater && repItem.repeater.datasource && repItem.repeater.datasource.splice(repItem.index, 1, repItem.item = set_val);\n }\n else {\n // 4. force root property change\n obj.root.value[obj.root.property] = set_val;\n }\n }\n else {\n // parent === root, property change event fires automatically\n obj.parent.value[obj.target.name] = value;\n }\n }\n }\n static get(element, path) {\n var obj = CustomElementUtils.resolvePath(path, element);\n return obj && obj.target && obj.target.value;\n }\n /**\n * Works for unit-test contexts.\n * @param element\n */\n static _findScopeContextLegacy(element) {\n // old impl...\n let el = element;\n let retval;\n do {\n el = el.parentNode;\n } while (el != null && (el != (retval = element.ownerDocument) || (el instanceof HTMLElement && (retval = el.shadowRoot) != null)));\n //let logFn: (message?: string) => void;\n //if (retval == null && console && (logFn = console.debug))\n // logFn(`Element \"${element.constructor.name}\" isn't attached to any context yet.`);\n return retval;\n }\n static findScopeContext(element) {\n let retval = (element.isConnected) ?\n element.getRootNode()\n : CustomElementUtils.getAttachedPropertyValue(element, INSTANCE_SCOPE_VAR);\n return retval ?? /* in Jasmine TESTS `element.isConnected` always returns false (attached to #document-fragment) */ CustomElementUtils._findScopeContextLegacy(element);\n }\n static findAncestor(element, predicate) {\n let el = element;\n let retval;\n while (el && (el = el.parentNode || el.getRootNode()?.host) != null) {\n if (el['host'] instanceof HTMLElement)\n el = el['host'];\n if (predicate.apply(el, [el])) {\n retval = el;\n break;\n }\n }\n return retval;\n }\n static findAncestorShell(element) {\n return CustomElementUtils.findAncestor(element, el => Utils.is(el, `.${PCSS}-body`) || el === document.body);\n }\n static findAncestorOfType(element, ctor) {\n return CustomElementUtils.findAncestor(element, el => el instanceof ctor);\n }\n static findDescendants(element, predicate, firstOnly = false) {\n const walker = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT);\n var retval = [];\n while (walker.nextNode()) {\n let n = walker.currentNode;\n if (predicate(n) === true) {\n retval.push(n);\n if (firstOnly) {\n return retval;\n }\n }\n }\n return retval;\n }\n static findFirstDescendant(element, predicate) {\n const any = CustomElementUtils.findDescendants(element, predicate, true);\n return Utils.isNullOrEmpty(any) ? void 0 : any[0];\n }\n static findAll(selector = '[pacem]', filter = (e) => true) {\n const retval = [];\n document.querySelectorAll(selector).forEach((e, i, arr) => {\n if (filter(e) === true) {\n retval.push(e);\n }\n });\n return retval;\n }\n /**\n * To be used back again when Edge will allow Comment subclassing\n * https://github.com/Microsoft/ChakraCore/issues/2999 and https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12080908/\n * @param element\n * @param ctor\n * @param upLevels\n */\n static findPreviousSiblingOrAncestorOfType(element, ctor, upLevels = 0) {\n let el = element;\n let retval = null;\n let levels = 0;\n do {\n el = el.previousSibling || el.parentNode;\n if (el instanceof ctor) {\n if (levels >= upLevels) {\n retval = el;\n break;\n }\n else {\n el = el.parentNode;\n }\n levels++;\n }\n } while (el != null);\n return retval;\n }\n /**\n * To be removed when Edge will allow Comment subclassing\n * https://github.com/Microsoft/ChakraCore/issues/2999 and https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12080908/\n * @param element\n * @param predicate\n * @param upLevels\n */\n static findPreviousSiblingOrAncestor(element, predicate, upLevels = 0) {\n let el = element;\n let retval = null;\n let levels = 0;\n do {\n el = el.previousSibling || el.parentNode;\n if (el && predicate.apply(el, [el])) {\n if (levels >= upLevels) {\n retval = el;\n break;\n }\n else {\n el = el.parentNode;\n }\n levels++;\n }\n } while (el != null);\n return retval;\n }\n static assignHostContext(host, template) {\n // navigate through the DOM hierarchy\n const walker = document.createTreeWalker(template.content, NodeFilter.SHOW_ELEMENT + /* traverse templates' content */ NodeFilter.SHOW_DOCUMENT_FRAGMENT);\n while (walker.nextNode()) {\n var node = walker.currentNode;\n /*if (node instanceof HTMLTemplateElement)\n CustomElementUtils.assignHostContext(host, node);\n else*/ if (Utils.isNull(CustomElementUtils.getAttachedPropertyValue(node, INSTANCE_HOST_VAR))) {\n CustomElementUtils.setAttachedPropertyValue(node, INSTANCE_HOST_VAR, host);\n }\n }\n }\n static findHostContext(element) {\n let el = element;\n let retval;\n // not connected to the DOM? then exit and return undefined\n if (!el.isConnected) {\n return retval;\n }\n /*const root = element.getRootNode({ composed: false });\n if (root instanceof ShadowRoot) {\n return root.host as HTMLElement;\n }*/\n while (el != null) {\n retval = CustomElementUtils.getAttachedPropertyValue(el, INSTANCE_HOST_VAR);\n if (retval instanceof HTMLElement)\n break;\n el = el.parentElement;\n }\n let logFn;\n if (retval == null && console && (logFn = console.warn))\n logFn(`Element \"${element.constructor.name}\" isn't a descendant of a templated component.`);\n return retval;\n }\n static isBindingAttribute(attr) {\n /*if (/^\\s*\\{\\s*binding\\s+.*\\}\\s*$/.test(attr)) {\n\n // { binding ... } syntax\n var fn = attr.replace('binding', '').trim();\n fn = fn.substring(1, fn.length - 1);\n let twoway = /,\\s*twoway\\s*=\\s*true\\s*$/.test(fn);\n let commaNdx = fn.indexOf(',');\n if (commaNdx == -1)\n commaNdx = fn.length;\n var expression = Expression.parse(fn.substr(0, commaNdx), element);\n (expression && expression.dependencies).forEach(d => {\n d.twoway = d.twowayAllowed && twoway && expression.dependencies.length == 1;\n });\n return expression;\n }\n else*/\n return bindingPattern.test(attr);\n }\n static extractBindingAttributeExpression(attr) {\n if (CustomElementUtils.isBindingAttribute(attr)) {\n return attr.substr(2, attr.length - 4);\n }\n else {\n throw `Invalid attribute: incorrect binding syntax.`;\n }\n }\n static parseBindingAttribute(attr, element) {\n // loose syntax {{ ... }}\n let expression = CustomElementUtils.extractBindingAttributeExpression(attr);\n const arr = /,\\s*(twoway|once)\\s*$/.exec(expression), mode = arr && arr.length > 1 && arr[1];\n if (!Utils.isNullOrEmpty(mode)) {\n expression = expression.substr(0, expression.lastIndexOf(','));\n }\n var expr = Expression.parse(expression, element);\n (expr && expr.dependencies).forEach(d => {\n switch (mode) {\n case 'twoway':\n d.mode = (d.twowayAllowed && expr.dependencies.length == 1) ? 'twoway' : undefined;\n break;\n case 'once':\n d.mode = mode;\n break;\n }\n });\n return expr;\n }\n static ensureMember(o, name, attributes) {\n let original = Object.getOwnPropertyDescriptor(o, name);\n if (original != undefined)\n return original;\n Object.defineProperty(o, name, attributes);\n return Object.getOwnPropertyDescriptor(o, name);\n }\n /**\n * Strips all the observed attributes of an element and its descendants, in order to seal that dom branch and to avoid bindings evaluation.\n * @param element Input element\n */\n static stripObservedAttributes(element) {\n avoidObservedAttributes(element, false);\n }\n /**\n * Freezes all the observed attributes of an element and its descendants, in order to seal that dom branch and to avoid bindings evaluation.\n * @param element Input element\n */\n static freezeObservedAttributes(element) {\n avoidObservedAttributes(element);\n }\n}\nfunction avoidObservedAttributes(element, freeze = true) {\n const walker = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT);\n do {\n var node = walker.currentNode;\n if (node instanceof HTMLElement) {\n const attrs = node.constructor['observedAttributes'];\n if (!Utils.isNull(attrs)) {\n CustomElementUtils.deleteAttachedPropertyValue(node, INSTANCE_BINDINGS_VAR);\n let revertFn = function (v) {\n if (Utils.isArray(v)) {\n return '[' + v.map(revertFn).join(',') + ']';\n }\n if (v instanceof Element) {\n const vid = v.id = v.id || ('_' + Utils.uniqueCode());\n return `#${vid}`;\n }\n else {\n return `${Utils.Json.stringify(v)}`;\n }\n };\n for (var attr of attrs) {\n if (attr in node.attributes) {\n let prop;\n let val;\n if (freeze && !Utils.isNull(val = node[prop = CustomElementUtils.kebabToCamel(attr)])) {\n let reverted = revertFn(val);\n node.setAttribute(attr, `{{ ${reverted} }}`);\n }\n else\n node.removeAttribute(attr);\n }\n }\n }\n }\n } while (walker.nextNode());\n}\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst REPEATERITEM_PLACEHOLDER = 'pacem:repeater-item';\nexport class Repeater {\n /**\n * Seeks for a PacemRepeaterItem element upwards through the DOM tree, given a starting element and the number of nesting levels.\n * @param element {HTMLElement} Element to start the upward search from\n * @param Optional upLevels {Number} 0-based nesting level\n */\n static findItemContext(element, upLevels = 0, logFn = console.warn) {\n let retval = RepeaterItem.findUpwards(element, upLevels, logFn);\n if (retval == null && logFn && element instanceof HTMLElement && element['isConnected']) {\n logFn(`Couldn't find a ${RepeaterItem.name} up ${upLevels} level${((upLevels === 1) ? \"\" : \"s\")} from element \"${element.constructor.name}\".`);\n }\n return retval;\n }\n}\nexport class RepeaterItem {\n static findUpwards(element, upLevels = 0, logFn = console.warn) {\n if (Utils.isNull(element) || element.localName === 'template' || element instanceof /* template-like element? */ TemplateElement) {\n return null;\n }\n let item = null;\n let predicate = (node) => !Utils.isNull(item = RepeaterItem.getRepeaterItem(node));\n let retval = CustomElementUtils.findPreviousSiblingOrAncestor(element, predicate, upLevels);\n if (retval == null && logFn && element instanceof HTMLElement && element['isConnected']) {\n logFn(`Couldn't find a ${RepeaterItem.name} up ${upLevels} level${((upLevels === 1) ? \"\" : \"s\")} from element \"${element.constructor.name}\".`);\n }\n return item;\n }\n static isRepeaterItem(node) {\n return !Utils.isNull(GET_VAL(node, REPEATERITEM_PLACEHOLDER));\n }\n static getRepeaterItem(node) {\n return GET_VAL(node, REPEATERITEM_PLACEHOLDER);\n }\n constructor(_placeholder) {\n this._placeholder = _placeholder;\n SET_VAL(_placeholder, REPEATERITEM_PLACEHOLDER, this);\n }\n get placeholder() {\n return this._placeholder;\n }\n}\n// }\n","/// <reference path=\"types.ts\" />\n/// <reference path=\"utils.ts\" />\n/// <reference path=\"utils-customelement.ts\" />\nimport { DeferPromise } from './promise';\nimport { Utils } from './utils';\nimport { CustomElementUtils, Repeater } from './utils-customelement';\nconst CONTEXT_PREFIX = '__context_pacem';\n/** the following pattern matches:\n * -------------------------------\n * ciao \"a tutti \\\"quanti\\\" voi\" -> \"a tutti \\\"quanti\\\" voi\"\n * ciao 'a tutti \"quanti\" voi'+ mysel.value + 'e a nessun\\' altra' -> 'a tutti \"quanti\" voi'\n * 'e a nessun\\' altra'\n */\nconst stringPattern = /'(\\\\'|[^'])*[^\\\\]?'|\"(\\\\\"|[^\"])*[^\\\\]?\"/g;\n/** the following pattern matches:\n * -------------------------------\n * var l = new Date(); -> new\n * window.eval( -> window.\n * eval( -> eval(\n * eval ( -> eval (\n */\nconst safetyPattern = /[^\\w]new\\s|[^\\w]window\\s*[\\.\\[]|[^\\w]document\\s*\\.|[^\\w]eval\\s*\\(/;\n/** the following pattern matches:\n * -------------------------------\n * ^^^item.ciao -> ^^^item\n * !ciao.value -> !ciao.\n * :host.value -> :host.\n * ::child.prop -> ::child.\n * _connectTo(me.value) -> (me.\n * 009.ciao ->\n * this[that.value] -> [that.\n */\nconst variablePattern = /(^|[\\s\\(\\[\\+\\-\\*\\/!])(:host\\.|\\^+item[\\s\\.,;\\)\\]]|\\^+item$|\\^+index[^\\w\\.]|\\^+index$|\\$?this[\\.\\s$]?|#[a-zA-Z_][\\w]*|::[a-zA-Z_][\\w]*)/g;\n///** the following pattern tests:\n// * -------------------------------\n// * __context.$this.myself.value -> true\n// * !__context.myelem.value -> false\n// * fn(myelem.value) -> false\n// * $this == that -> false\n// * ...\n// */\n//const purePropertyPathPattern = /^[\\w\\.\\$]+/; \nexport class Expression {\n constructor() {\n this._pending = false;\n this._independent = false;\n }\n get dependencies() {\n return this._dependencies;\n }\n get functionBody() {\n return this._fnBody;\n }\n get voidBody() {\n return this._voidBody;\n }\n get pending() {\n return this._pending;\n }\n get independent() {\n return this._independent;\n }\n evaluate() {\n if (!this._fn) {\n this._fn = new Function('$pacem', CONTEXT_PREFIX, this._fnBody);\n }\n return this._fn.apply(null, [Utils.core, this._args]);\n }\n evaluateAsync() {\n const deferred = DeferPromise.defer();\n if (!this._fn) {\n this._fn = new Function('$pacem', CONTEXT_PREFIX, this._fnBody);\n }\n deferred.resolve(this._fn.apply(null, [Utils.core, this._args]));\n return deferred.promise;\n }\n evaluatePlus(args = {}) {\n if (!this._fn) {\n let argNames = [CONTEXT_PREFIX];\n for (var prop in args)\n argNames.push(prop);\n argNames.push('$pacem');\n this._fn = new Function(argNames.join(', '), this._voidBody);\n }\n let argValues = [].concat(this._args);\n for (var prop in args)\n argValues.push(args[prop]);\n argValues.push(Utils.core);\n return this._fn.apply(null, argValues);\n }\n static { this._pendingExpression = null; }\n static _getPendingExpressionSingleton() {\n if (Expression._pendingExpression == null) {\n let xpr = new Expression();\n xpr._pending = true;\n xpr._dependencies = [];\n Expression._pendingExpression = xpr;\n }\n return Expression._pendingExpression;\n }\n static parse(expression, element) {\n var context = CustomElementUtils.findScopeContext(element);\n var args = { '$this': element };\n var dependencies = [];\n var expr = '';\n var independent = true;\n //1. remove strings\n var strings = [], stringMatches, index = 0, trunks = [];\n while ((stringMatches = stringPattern.exec(expression)) != null) {\n trunks.push(expression.substr(index, stringMatches.index - index));\n let length = stringMatches[0].length;\n strings.push({ start: stringMatches.index, length: length });\n index = stringMatches.index + length;\n }\n if (index < expression.length)\n trunks.push(expression.substr(index, expression.length - index));\n //2. loop non string trunks\n // trunks.length >= strings.length (more precisely, the following statemente is always `true`:\n // trunks.length === strings.length || trunks.length === strings.length+1;\n for (var j = 0; j < trunks.length; j++) {\n let trunk = trunks[j];\n if (safetyPattern.test(trunk))\n throw `Unsafe expression detected: \"${trunk}\".`;\n if (context == null) {\n // context is null, means viewActivated event still to be fired.\n // check whether this is a constant expression (then no need to instantiate actual binding listeners)\n // or not.\n if (new RegExp(variablePattern).test(trunk) === true) {\n independent = false;\n break;\n }\n }\n else {\n let processedTrunk = trunk.replace(variablePattern, (mwhole, mstart, melem, index, input) => {\n independent = false;\n const cmpRef = `__host_pacem`;\n // default initialization := assumes `this`\n let retval = CONTEXT_PREFIX + '.$this' + (melem.endsWith('.') ? '.' : ''), el = element, dotIndex = input.indexOf('.', index), furtherParts = dotIndex > index ? input.substr(dotIndex + 1).trim() : '', pathRegexArray = /^[\\w\\.\\$]+/.exec(furtherParts), path = pathRegexArray && pathRegexArray.length > 0 && pathRegexArray[0], propArray, prop = path && (propArray = path.split('.')).length > 0 && propArray[0];\n if (melem === ':host.') {\n el = args[cmpRef] = args[cmpRef] || CustomElementUtils.findHostContext(element);\n retval = `${CONTEXT_PREFIX}.${cmpRef}.`;\n }\n else if (melem.endsWith('^item') || melem.substr(0, melem.length - 1).endsWith('^item')) {\n let lastChar = melem.endsWith('^item') ? '' : melem.substr(melem.length - 1, 1);\n let upLevels = melem.length - (lastChar.length > 0 ? 6 : 5); // 5 = 'item'.length + 1 (zero-based)\n let itemRef = `__item_${upLevels}_up_pacem`;\n let item = Repeater.findItemContext(element, upLevels);\n el = args[itemRef] = args[itemRef] || (item && item.placeholder);\n path = 'item' + (path ? ('.' + path) : '');\n prop = 'item';\n retval = `${CONTEXT_PREFIX}.${itemRef}.item${lastChar}`;\n }\n else if (melem.endsWith('^index') || melem.substr(0, melem.length - 1).endsWith('^index')) {\n let lastChar = melem.endsWith('^index') ? '' : melem.substr(melem.length - 1, 1);\n let upLevels = melem.length - (lastChar.length > 0 ? 7 : 6); // 6 = 'index'.length + 1 (zero-based)\n let itemRef = `__item_${upLevels}_up_pacem`;\n let item = Repeater.findItemContext(element, upLevels);\n el = args[itemRef] = args[itemRef] || (item && item.placeholder);\n path = 'index';\n prop = 'index';\n retval = `${CONTEXT_PREFIX}.${itemRef}.index${lastChar}`;\n }\n else if (melem.startsWith('::')) {\n let melem0 = melem.substr(2, melem.length - 2);\n let host = args[cmpRef] = args[cmpRef] || CustomElementUtils.findHostContext(element);\n if (!Utils.isNull(host)) {\n el = host[melem0];\n }\n else {\n el = null;\n }\n retval = `${CONTEXT_PREFIX}.${cmpRef}.${melem0}`;\n }\n else if (melem.startsWith('#')) {\n let melem0 = melem.substr(1, melem.length - 1);\n el = args[melem0] = args[melem0] || context.querySelector('#' + melem0);\n retval = `${CONTEXT_PREFIX}.${melem0}`;\n }\n // merge dependencies\n if (prop && el && prop in el\n // && it is not a direct method call (which means that the 'prop' isn't in fact a 'func')\n && typeof el[prop] !== 'function' //!isMethodCall \n // && does not already exist as a dependency\n && dependencies.find(d => d.element === el && d.property == prop) == null) {\n dependencies.push({ element: el, property: prop, path: path, twowayAllowed: false });\n }\n // return value\n return mstart + retval;\n });\n expr += processedTrunk;\n if (j < strings.length) {\n const s = strings[j];\n expr += expression.substr(s.start, s.length);\n }\n }\n }\n if (independent) {\n // constant expression\n var constexpr = new Expression();\n constexpr._independent = true;\n constexpr._fnBody = `return ${expression};`;\n constexpr._voidBody = expression;\n constexpr._dependencies = [];\n return constexpr;\n }\n if (context == null) {\n return this._getPendingExpressionSingleton();\n }\n // if some dependency elements aren't available yet, then postpone...\n for (var elem in args) {\n if (args[elem] == null)\n return Expression._getPendingExpressionSingleton();\n }\n if (dependencies.length == 1\n // := && trimmed expression contains only letters, figures, underscores, dots, and '$'...\n && /[^\\w\\.\\$]+/.test(expr.trim()) !== true) {\n // ...then 'twoway' binding might be applied/accepted\n dependencies[0].twowayAllowed = true;\n }\n var retexpr = new Expression();\n retexpr._args = args;\n retexpr._fnBody = `try{ var ___$$$r = ${expr}; return ___$$$r; }catch(e){ }`;\n retexpr._voidBody = `try{ ${expr} }catch(e){ }`;\n retexpr._dependencies = dependencies;\n return retexpr;\n }\n}\n// }\n","//namespace Pacem.Logging {\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"Trace\"] = \"trace\";\n LogLevel[\"Debug\"] = \"debug\";\n LogLevel[\"Warn\"] = \"warn\";\n LogLevel[\"Error\"] = \"error\";\n LogLevel[\"Info\"] = \"info\";\n LogLevel[\"Log\"] = \"log\";\n})(LogLevel || (LogLevel = {}));\n//}\n","/// <reference path=\"utils.ts\" />\nimport { Utils } from \"./utils\";\nimport { Point, Size, Rect } from '@pacem/pacem-foundation';\n;\nconst NonePropertyConverter = { convert: (attr) => undefined };\nconst StringPropertyConverter = {\n convert: (attr) => attr, convertBack: (prop) => prop\n};\nconst StringArrayPropertyConverter = {\n convert: (attr) => attr && attr.trim().split(/[ ,]+/), convertBack: (prop) => Utils.isArray(prop) && prop.join(' ') || ''\n};\nconst NumberPropertyConverter = {\n convert: (attr) => parseFloat(attr), convertBack: (prop) => prop.toString()\n};\nconst BooleanPropertyConverter = {\n convert: (attr) => !Utils.isNullOrEmpty(attr) && (attr !== '0') && (attr !== 'false'),\n convertBack: (prop) => (!!prop).toString()\n};\nconst BooleanStrictPropertyConverter = {\n convert: (attr) => attr === 'true' || attr === '1',\n convertBack: (prop) => (!!prop).toString()\n};\nconst DateTimePropertyConverter = {\n convert: (attr) => Utils.parseDate(attr),\n convertBack: (prop) => Utils.parseDate(prop).toISOString()\n};\nconst DatePropertyConverter = DateTimePropertyConverter;\nconst JsonPropertyConverter = {\n convert: (attr) => Utils.Json.parse(attr),\n convertBack: (prop) => Utils.Json.stringify(prop)\n};\nconst EvalPropertyConverter = {\n convert: (attr) => Function(`return ${attr};`).apply(null),\n convertBack: (prop) => undefined //JSON.stringify(prop)\n};\nconst ElementPropertyConverter = {\n convert: (attr) => document.querySelector(attr),\n convertBack: (prop) => (prop instanceof Element && prop.id) ? ('#' + prop.id) : undefined,\n retryConversionWhenReady: true\n};\nconst PointPropertyConverter = {\n convert: (attr) => Point.parse(attr),\n convertBack: (prop) => `${prop.x || 0} ${prop.y || 0}`\n};\nconst SizePropertyConverter = {\n convert: (attr) => Size.parse(attr),\n convertBack: (prop) => `${prop.width || 0} ${prop.height || 0}`\n};\nconst RectPropertyConverter = {\n convert: (attr) => Rect.parse(attr),\n convertBack: (prop) => `${prop.x || 0} ${prop.y || 0} ${prop.width || 0} ${prop.height || 0}`\n};\nexport const PropertyConverters /*: { [name: string]: PropertyConverter }*/ = {\n None: NonePropertyConverter,\n String: StringPropertyConverter,\n StringArray: StringArrayPropertyConverter,\n Number: NumberPropertyConverter,\n Boolean: BooleanPropertyConverter,\n BooleanStrict: BooleanStrictPropertyConverter,\n Date: DatePropertyConverter,\n Datetime: DateTimePropertyConverter,\n Json: JsonPropertyConverter,\n Eval: EvalPropertyConverter,\n Element: ElementPropertyConverter,\n // geom\n Point: PointPropertyConverter,\n Rect: RectPropertyConverter,\n Size: SizePropertyConverter,\n};\n//}\n","import { Utils } from './utils';\n/**\n * Default, and essentially ONLY, property comparer for equalitycheck\n * @param old value 1\n * @param val value 2\n */\nexport const DefaultComparer = (old, val) => Utils.areSemanticallyEqual(old, val);\n//}\n","import { WATCH_PROPS_VAR, INSTANCE_BINDINGS_VAR, INSTANCE_HOST_VAR } from './types';\nimport { P } from './prefix';\nimport { Utils } from './utils';\nimport { PropertyChangeEventName, PropertyChangeEvent, AttributeChangeEvent } from './events';\nimport { CustomElementUtils } from './utils-customelement';\nimport { Expression } from './expression';\nimport { DeferPromise } from './promise';\nimport { Http } from './net/http';\nimport { PropertyConverters } from './converters';\nimport { DefaultComparer } from './comparers';\n// #region CUSTOM ELEMENT\n//export const ViewActivatedEventName: string = 'viewactivate';\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst DEL_VAL = CustomElementUtils.deleteAttachedPropertyValue;\nconst WATCH_PROP_PREFIX = 'pacem:property:';\nconst WATCH_VERS_PROP = 'pacem:version';\nconst WATCH_BIND_PREFIX = 'pacem:binding:';\n//const WATCH_THROTTLE_PREFIX: string = 'pacem:throttle:';\nconst INSTANCE_CHILDREN_VAR = 'pacem:view-children';\nconst HAS_BIND_PREFIX = 'pacem:has-binding:';\nconst HAS_TEMPLATE_VAR = 'pacem:custom-element:has-template';\nconst HASBEEN_TEMPLATED_VAR = 'pacem:custom-element:has-templated';\nconst INSTANCE_PROMISE_VAR = 'pacem:custom-element:promise';\nconst INSTANCE_READY_VAR = 'pacem:custom-element:ready';\nconst INSTANCE_ONREADY_VAR = 'pacem:custom-element:startup';\n//const TYPE_OPTIONS_VAR = 'pacem:custom-element:options';\nfunction processBinding(element, property, binding) {\n var _this = element;\n const prop = property;\n const value = binding;\n // reset previous dependencies\n var deps = GET_VAL(_this, WATCH_BIND_PREFIX + prop);\n //var handleName = WATCH_THROTTLE_PREFIX + prop;\n deps && // reset previous dependencies\n deps.forEach(i => {\n //cancelAnimationFrame(GET_VAL(_this, handleName));\n i.dep.element.removeEventListener(PropertyChangeEventName, i.callback, false);\n });\n if (Utils.isNull(value) || GET_VAL(element, INSTANCE_READY_VAR) !== true) {\n DEL_VAL(_this, WATCH_BIND_PREFIX + prop);\n DEL_VAL(_this, HAS_BIND_PREFIX + prop);\n }\n else {\n if (value.pending) {\n SET_VAL(_this, WATCH_BIND_PREFIX + prop, []);\n }\n else {\n let mode = 'oneway'; // default\n switch (value.dependencies && value.dependencies.length && value.dependencies[0].mode) {\n case 'twoway':\n if ( /* extra-safety here: */value.dependencies.length == 1)\n mode = 'twoway';\n break;\n case 'once':\n mode = 'once';\n }\n SET_VAL(_this, HAS_BIND_PREFIX + prop, mode);\n const mapped = value.dependencies.map(d => {\n // gather changes and evaluate at `next frame` (?)\n var retval = {\n dep: d, callback: function (evt) {\n if (evt.detail.propertyName === d.property) {\n //cancelAnimationFrame(_this[handleName]);\n //_this[handleName] = requestAnimationFrame(() => {\n _this[prop] = value.evaluate /*Async*/() /*.then(val => {\n _this[prop] = val;\n })*/;\n //});\n }\n }\n };\n //try {\n d.element.addEventListener(PropertyChangeEventName, retval.callback, false);\n //} catch (ex) {\n // console.log(_this.outerHTML + '\\n' + d.property);\n // throw (ex);\n //}\n return retval;\n });\n SET_VAL(_this, WATCH_BIND_PREFIX + prop, mapped);\n _this[prop] = value.evaluate();\n }\n }\n}\nfunction retrieveTemplateAndWaitForDOMReady(config) {\n var deferred = DeferPromise.defer();\n const on_load = (tmpl) => {\n if (Utils.isDOMReady()) {\n deferred.resolve(tmpl);\n }\n else {\n Utils.onDOMReady((evt) => {\n deferred.resolve(tmpl);\n });\n }\n };\n //\n if (config.template) {\n on_load(config.template);\n }\n else if (config.templateUrl) {\n let http = new Http();\n http.get(config.templateUrl).success(r => {\n let tmpl = config.template = r.text;\n on_load(tmpl);\n return r;\n }).error(err => {\n console.error(err.message);\n on_load(null);\n });\n }\n else {\n on_load(null);\n }\n //\n return deferred.promise;\n}\nfunction retrieveDescendantTemplateActivationPromises(host, root) {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);\n var promises = [];\n while (walker.nextNode()) {\n var node = walker.currentNode;\n if (true === GET_VAL(node.constructor, HAS_TEMPLATE_VAR)) {\n var deferred = GET_VAL(node, INSTANCE_PROMISE_VAR, DeferPromise.defer());\n promises.push(deferred.promise);\n }\n }\n return promises;\n}\nexport const CustomElement = (config) => {\n return (target) => {\n // might be already registered\n if (Utils.customElements.get(config.tagName)) {\n console.warn(`${config.tagName} registration skipped, since already defined.`);\n return;\n }\n // retrieved watched properties (inherited included)\n var properties = CustomElementUtils.getWatchedProperties(target, true);\n SET_VAL(target, HAS_TEMPLATE_VAR, !(Utils.isNullOrEmpty(config.template) && Utils.isNullOrEmpty(config.templateUrl)));\n if (properties && properties.length > 0) {\n // attribute change whitelist\n const OBS_ATTR_PROP = 'observedAttributes';\n var extraObserved = [];\n if (target.hasOwnProperty(OBS_ATTR_PROP)) {\n extraObserved = target[OBS_ATTR_PROP].slice();\n delete target[OBS_ATTR_PROP];\n }\n // attributes to watch\n let attrs = extraObserved;\n for (var p of properties) {\n let a = CustomElementUtils.camelToKebab(p.name);\n attrs.unshift(a);\n }\n // set static `observedAttributes` property\n Object.defineProperty(target, OBS_ATTR_PROP, {\n get: function () {\n return attrs;\n },\n enumerable: true,\n configurable: false\n });\n }\n {\n const proto = target.prototype;\n // connectedCallback override\n const originalConnectedCallback = Object.getOwnPropertyDescriptor(proto, 'connectedCallback') || proto.connectedCallback;\n const originalViewActivatedCallback = Object.getOwnPropertyDescriptor(proto, 'viewActivatedCallback') || proto.viewActivatedCallback;\n Object.defineProperty(proto, 'connectedCallback', {\n value: function connectedCallback() {\n const _this = this;\n //console.log(`${_this.localName} connected.`);\n _this.setAttribute('pacem', '');\n _this.setAttribute('cloak', '');\n // reset INSTANCE_CHILDREN_VAR at connectedCallback\n DEL_VAL(_this, INSTANCE_CHILDREN_VAR);\n // ready to fire\n if (originalConnectedCallback && originalConnectedCallback.value)\n originalConnectedCallback.value.apply(_this, []);\n else if (typeof originalConnectedCallback == 'function')\n originalConnectedCallback.apply(_this);\n /*\n There's no guarantee that at this point in the element lifecycle its inner DOM has been processed.\n On the contrary, it is fairly likely it hasn't.\n If the element is statically declared on the page after the class declaration (.js file), then its innerHTML is empty for sure.\n **Any template relevant logic must be moved at a point in time when the DOM is fully loaded!**\n */\n retrieveTemplateAndWaitForDOMReady(config).then(tmpl => {\n // still connected?\n // check first!\n if (!_this.isConnected) {\n return;\n }\n var promises = [];\n // apply the template if not already applied(!!)...\n if (GET_VAL(_this, INSTANCE_READY_VAR) !== true\n // ...and if any.\n && !Utils.isNullOrEmpty(tmpl)\n && GET_VAL(_this, HASBEEN_TEMPLATED_VAR) != true) {\n SET_VAL(_this, HASBEEN_TEMPLATED_VAR, true);\n const element = _this, useShadowDOM = config.shadow, originalContent = document.createElement('template').content, currentContent = document.createElement('template'); // config.originalContent === true;\n if (!useShadowDOM) {\n for (var j = element.childNodes.length - 1; j >= 0; j--) {\n originalContent.insertBefore(element.childNodes.item(j), originalContent.firstChild);\n }\n }\n currentContent.innerHTML = tmpl;\n // use pacem-content as a placeholder, then `insertBefore`, then remove.\n const placeholders = currentContent.content.querySelectorAll(P + '-content');\n // assign host and create view activation promise\n CustomElementUtils.assignHostContext(_this, currentContent);\n // placeholder replacement.\n if (placeholders.length == 1) {\n const placeholder = placeholders.item(0);\n var ph = placeholder.nextSibling;\n const parent = placeholder.parentElement || currentContent.content;\n const nodes = originalContent.childNodes;\n parent.removeChild(placeholder);\n while (nodes.length > 0) {\n try {\n let node = nodes.item(0);\n parent.insertBefore(node, ph);\n //ph = node;\n }\n catch (e) {\n console.error(e.toString());\n }\n }\n }\n else if (placeholders.length > 1) {\n throw `There can only be at most 1 content placeholder inside a template.`;\n }\n var root;\n if (config.shadow) {\n root = element.attachShadow({ mode: 'open' /*, slotAssignment: 'named' (default) */ });\n root.appendChild(currentContent.content);\n }\n else {\n root = element;\n var currentChildren = currentContent.content.children;\n while (currentChildren.length > 0) {\n root.append(currentChildren.item(0));\n }\n }\n promises = retrieveDescendantTemplateActivationPromises(_this, root);\n }\n // flag as ready\n SET_VAL(_this, INSTANCE_READY_VAR, true);\n // retry with unresolved properties\n for (let property of properties) {\n const prop = property.name;\n const config = property.config;\n if (!config.converter.retryConversionWhenReady || !Utils.isNull(_this[prop])) {\n continue;\n }\n // check attr\n const attrName = CustomElementUtils.camelToKebab(prop), attr = _this.getAttribute(attrName);\n if (!Utils.isNullOrEmpty(attr) && !CustomElementUtils.isBindingAttribute(attr)) {\n // retry conversion\n _this[prop] = config.converter.convert(attr, _this);\n }\n }\n // execute todos (aka `reflect-backs` of prop values onto attr string values)\n const todos = (GET_VAL(_this, INSTANCE_ONREADY_VAR) || []);\n todos.forEach(todo => {\n todo.apply(_this);\n });\n //\n const pendingBindings = (evt) => {\n // re-evaluate pending expressions...\n var bindings = (GET_VAL(_this, INSTANCE_BINDINGS_VAR) || []);\n bindings.forEach(attrName => {\n const attrNameBind = attrName;\n if (!(attrNameBind in _this.attributes)) {\n throw `Howcome? ${attrNameBind} not in ${_this.constructor.name} attributes!?...`;\n }\n const attrValueBind = _this.attributes[attrNameBind].value;\n // still a binding attribute? (might have changed its shape while pending...)\n if (CustomElementUtils.isBindingAttribute(attrValueBind)) {\n var expr = CustomElementUtils.parseBindingAttribute(attrValueBind, _this);\n processBinding(_this, CustomElementUtils.kebabToCamel(attrName), expr);\n }\n });\n };\n //...now that the document is ready:\n pendingBindings();\n const fireViewActivated = (evt) => {\n //(<HTMLElement>_this).dispatchEvent(new Event(ViewActivatedEventName));\n if (originalViewActivatedCallback && originalViewActivatedCallback.value)\n originalViewActivatedCallback.value.apply(_this, []);\n else if (typeof originalViewActivatedCallback == 'function')\n originalViewActivatedCallback.apply(_this);\n var deferred = GET_VAL(_this, INSTANCE_PROMISE_VAR);\n if (!Utils.isNull(deferred))\n deferred.resolve();\n };\n _this.removeAttribute('cloak');\n //...now that the document is ready:\n // fire original viewActivatedCallback\n // when all the descendant templated elements have already fired\n Promise.all(promises)\n .then(_ => fireViewActivated());\n });\n }, configurable: true, enumerable: true\n });\n // disconnectedCallback override\n const originalDisconnectedCallback = Object.getOwnPropertyDescriptor(proto, 'disconnectedCallback') || proto.disconnectedCallback;\n Object.defineProperty(proto, 'disconnectedCallback', {\n value: function disconnectedCallback() {\n const _this = this;\n // 1. dispose as of dev's desires\n if (originalDisconnectedCallback && originalDisconnectedCallback.value)\n originalDisconnectedCallback.value.apply(_this, []);\n else if (typeof originalDisconnectedCallback === 'function')\n originalDisconnectedCallback.apply(_this, []);\n // 2. dismantle everything\n SET_VAL(_this, INSTANCE_READY_VAR, false);\n // re-evaluate pending expressions (in order to dismiss them, having the element `disconnected`)\n const bindings = (GET_VAL(_this, INSTANCE_BINDINGS_VAR) || []);\n bindings.forEach(attrName => {\n processBinding(_this, CustomElementUtils.kebabToCamel(attrName) /*, expr*/);\n });\n }, configurable: true, enumerable: true\n });\n // watchify attributes\n const originalAttributeChangedCallback = Object.getOwnPropertyDescriptor(proto, 'attributeChangedCallback') || proto.attributeChangedCallback;\n Object.defineProperty(proto, 'attributeChangedCallback', {\n value: function attributeChangedCallback(name, old, val) {\n const _this = this;\n const ready = GET_VAL(_this, INSTANCE_READY_VAR) === true;\n /*\n attributeChangedCallback has to fire BEFORE propertyChangedCallback IN THIS CASE\n */\n if (originalAttributeChangedCallback && originalAttributeChangedCallback.value)\n originalAttributeChangedCallback.value.apply(_this, [name, old, val]);\n else if (typeof originalAttributeChangedCallback === 'function')\n originalAttributeChangedCallback.apply(_this, [name, old, val]);\n // dispatch custom event 'attributechange'\n const evt = new AttributeChangeEvent({ attributeName: name, oldValue: old, currentValue: val, firstChange: !ready });\n _this.dispatchEvent(evt);\n // binding attribute?\n const binding = CustomElementUtils.isBindingAttribute(val);\n const plainAttrName = name;\n const prop = CustomElementUtils.kebabToCamel(plainAttrName);\n // when module scripts (esm) are involved you're at risk trying to process bindings too early, causing errors when - for instance - global variables are referenced.\n // nevertheless, setting moduleProofBindings to `true` prevents early attribute evaluation with startup issues\n // let's keep it false (legacy behavior)\n const moduleProofBindings = false; // TODO: allow to configure\n if (binding) {\n let value = CustomElementUtils.parseBindingAttribute(val, _this);\n if (value instanceof Expression) {\n const executeRightAway = () => {\n _this[prop] = value.evaluate();\n processBinding(_this, prop /* remove eventual old bindings */);\n };\n const executeDelayed = () => {\n var bindings = GET_VAL(_this, INSTANCE_BINDINGS_VAR, []);\n bindings.push(plainAttrName);\n if (!value.pending) {\n processBinding(_this, prop, value);\n }\n };\n if (value.independent && !moduleProofBindings) {\n try {\n // constant expression, just assign its value\n executeRightAway();\n }\n catch (e) {\n // there might be problems between loading and execution of the code\n // let's give it another chance\n console.warn(`Error occurred in early binding evaluation:\\n${val}\\n${e.message ?? e}`);\n executeDelayed();\n }\n }\n else {\n executeDelayed();\n }\n }\n else {\n throw `Howcome? ${val} misinterpreted as ${plainAttrName} binding...`;\n }\n }\n else {\n // retrieve property type and cast coherently...\n var property = properties.find(p => p.name === prop);\n if (!Utils.isNull(property)) {\n processBinding(_this, prop /* remove eventual old bindings */);\n // eventual retry at Ln.289\n _this[prop] = property.config.converter.convert(val, _this);\n }\n }\n }, configurable: true, enumerable: true\n });\n // watchify properties\n const originalPropertyChangedCallback = Object.getOwnPropertyDescriptor(proto, 'propertyChangedCallback') || proto.propertyChangedCallback;\n Object.defineProperty(proto, 'propertyChangedCallback', {\n value: function propertyChangedCallback(name, old, val, firstChange, options) {\n const _this = this;\n const ready = GET_VAL(_this, INSTANCE_READY_VAR) === true;\n const todo = () => {\n const bindingType = GET_VAL(_this, HAS_BIND_PREFIX + name);\n /*\n propertyChangedCallback has to fire BEFORE attributeChangedCallback in this case\n */\n if (originalPropertyChangedCallback && originalPropertyChangedCallback.value)\n originalPropertyChangedCallback.value.apply(_this, [name, old, val, !ready]);\n else if (typeof originalPropertyChangedCallback === 'function')\n originalPropertyChangedCallback.apply(_this, [name, old, val, !ready]);\n // dispatch custom event 'propertychange'\n if (!options || options.emit !== false) {\n const evt = new PropertyChangeEvent({ propertyName: name, oldValue: old, currentValue: val, firstChange: !ready });\n _this.dispatchEvent(evt);\n }\n if (Utils.isNullOrEmpty(bindingType) /* reflect to attribute only if this is not a binding property... */) {\n var property = properties.find(p => p.name === name);\n if (options\n && options.reflectBack === true\n && /* not polyfilled */ !CustomElementUtils.polyfilling) {\n var attrName = CustomElementUtils.camelToKebab(name), attr = _this.attributes.getNamedItem(attrName);\n // reflectBack only when ready (or you'll lose eventual bindings for attributes with default non-undefined value):\n // e.g. see `autofetch` property for `PacemFetchElement`\n if (ready\n // Allow to reflectBack proprties onto attributes also if the element isn't ready yet,\n // put proved to have relevant attribute empty. (e.g. some widget utils like `PacemWidgetFetchParameterElement` need this)\n || Utils.isNullOrEmpty(attr)) {\n var config;\n if (val === undefined || val === null) {\n _this.removeAttribute(attrName);\n }\n else if (property && (config = property.config) && typeof config.converter.convertBack === 'function') {\n const sval = config.converter.convertBack(val, _this);\n /* ...and the values are different */\n if (attr == null || sval !== attr.value)\n _this.setAttribute(attrName, sval);\n }\n }\n }\n }\n else if (bindingType === 'twoway') {\n const binding = GET_VAL(_this, WATCH_BIND_PREFIX + name)[0].dep;\n CustomElementUtils.set(binding.element, binding.path, val);\n }\n else if (bindingType === 'once') {\n // remove the binding\n processBinding(_this, name /*, null*/);\n }\n };\n // the following filter is needed in order to avoid attribute reflect-back and error:\n // `Uncaught DOMException: Failed to construct 'CustomElement': The result must not have attributes`\n if (ready) {\n todo.apply(_this);\n }\n else {\n var todos = GET_VAL(_this, INSTANCE_ONREADY_VAR, []);\n todos.push(todo);\n }\n }, configurable: true, enumerable: true\n });\n }\n Utils.customElements.define(config.tagName, target, config.options);\n Utils.customElements.whenDefined(config.tagName).then(() => {\n //console.log(`${config.tagName} defined.`);\n });\n };\n};\n// #endregion\n// #region WATCH PROPERTIES\nconst DefaultPropertyConverter = PropertyConverters.None;\nexport function Watch(config) {\n return (target, prop, descriptor) => {\n var watchableProperties = GET_VAL(target.constructor, WATCH_PROPS_VAR, []);\n watchableProperties.push({\n name: prop, config: Utils.extend({ emit: true, converter: DefaultPropertyConverter }, config)\n });\n // comparer\n const comparer = DefaultComparer;\n // original setter?\n const setter = descriptor && descriptor.set;\n // backing field value\n const propref = WATCH_PROP_PREFIX + prop; // <- pacem:property:'prop'\n const ver = WATCH_VERS_PROP; // <- pacem:version\n const propver = WATCH_VERS_PROP + ':' + prop; // <- pacem:version:'prop'\n // getter\n function getter() {\n const _this = this;\n return GET_VAL(_this, propref);\n }\n ;\n function onChange(key, oldValue, currentValue) {\n const _this = this;\n const debounce = config && config.debounce;\n // does it implement OnPropertyChanged?\n let propertyChangedCallback;\n if (typeof (propertyChangedCallback = _this['propertyChangedCallback']) === 'function') {\n let fn = () => propertyChangedCallback.apply(_this, [key, oldValue, GET_VAL(_this, propref), false /* dummy */, config]);\n if (typeof debounce === 'number' && debounce > 0) {\n clearTimeout(this['_handle_' + prop]);\n this['_handle_' + prop] = setTimeout(fn, debounce);\n }\n else if (debounce === true) {\n cancelAnimationFrame(this['_handle_' + prop]);\n this['_handle_' + prop] = requestAnimationFrame(fn);\n }\n else {\n fn();\n }\n }\n }\n ;\n function decorateArray(instance) {\n const _this = this;\n instance = instance || _this[prop];\n if ( /* already decorated? */GET_VAL(instance, 'pacem:array:decorated') === true) {\n return;\n }\n SET_VAL(instance, 'pacem:array:decorated', true);\n const proto = Array.prototype;\n const methods = {\n splice: proto.splice,\n pop: proto.pop,\n copyWithin: proto.copyWithin,\n push: proto.push,\n shift: proto.shift,\n unshift: proto.unshift\n };\n for (let name in methods) {\n let fn = name; // < closure\n instance[fn] = function (...args) {\n const retval = methods[fn].apply(this, args);\n // TODO?: specifically notify which items have changed.\n // .length property risks to not be affected, fire it as well.\n SET_VAL(this, ver, Date.now());\n onChange.call(_this, prop, this, this);\n return retval;\n };\n }\n }\n function setterCore(oldVal, newVal) {\n const _this = this, isArray = Utils.isArray(newVal);\n // different?\n const diffrent = !comparer(oldVal, newVal);\n if (diffrent || (isArray && GET_VAL(newVal, ver) !== GET_VAL(_this, propver))) {\n SET_VAL(_this, propref, newVal);\n if (isArray) {\n SET_VAL(_this, propver, GET_VAL(newVal, ver));\n decorateArray.call(_this, newVal);\n }\n onChange.call(_this, prop, oldVal, newVal);\n }\n }\n // setter\n if (setter) {\n descriptor.set = function (v) {\n const _this = this, oldVal = _this[prop];\n setter.call(_this, v);\n const newVal = _this[prop];\n //\n setterCore.call(_this, oldVal, newVal);\n };\n }\n else {\n //#region this is needed when creating property at runtime.\n try {\n // TODO: find better way!\n if (target.ownerDocument) {\n target[propref] = target[prop];\n }\n }\n catch (e) { /*Illegal invocation*/ }\n //#endregion\n if (delete target[prop]) {\n Object.defineProperty(target, prop, {\n get: function () {\n return getter.call(this);\n },\n set: function (newVal) {\n const _this = this;\n const oldVal = GET_VAL(_this, propref);\n //\n setterCore.call(_this, oldVal, newVal);\n },\n enumerable: true,\n configurable: true\n });\n }\n }\n };\n}\nexport function ViewChild(selector) {\n return (target, prop, descriptor) => {\n const key = `${prop}_${Utils.uniqueCode()}`;\n function findElement() {\n const _this = this, nodelist = (_this.shadowRoot || _this).querySelectorAll(selector);\n for (let i = 0; i < nodelist.length; i++) {\n let item = nodelist.item(i);\n if (GET_VAL(item, INSTANCE_HOST_VAR) === _this) {\n return item;\n }\n }\n return null;\n }\n function getter() {\n const _this = this;\n // reset INSTANCE_CHILDREN_VAR on connectedCallback!\n const dict = GET_VAL(_this, INSTANCE_CHILDREN_VAR, {});\n return dict[key] = dict[key] || findElement.call(_this);\n }\n if (delete target[prop]) {\n Object.defineProperty(target, prop, {\n get: function () {\n return getter.call(this);\n },\n enumerable: true,\n configurable: true\n });\n }\n };\n}\n// #endregion\n// #region CONCURRENT/DEBOUNCE EXECUTION\nexport function Concurrent() {\n function isPromiseLike(obj) {\n return obj && typeof obj.then === 'function';\n }\n return function (target /* type, actually */, key, descriptor) {\n const originalMethod = descriptor.value;\n const bufferKey = `pacem:concurrent-buffer:${key}`, lockKey = `pacem:concurrent-running:${key}`;\n descriptor.value = function (...args) {\n var _this = this;\n var buffer = CustomElementUtils.getAttachedPropertyValue(_this, bufferKey, []);\n var locked = CustomElementUtils.getAttachedPropertyValue(_this, lockKey, false);\n if (locked) {\n // previous process still going: \n // save args for later use,\n let deferred = DeferPromise.defer();\n //let logFn = console && console.debug;\n //if (typeof logFn === 'function')\n // logFn(`Method ${key} is busy. Procrastinating args '${JSON.stringify(args)}'...`);\n args.push(deferred);\n buffer.push(args);\n // and exit.\n return deferred.promise;\n }\n var result = originalMethod.apply(_this, args);\n if (isPromiseLike(result)) {\n let deferred = args && args.length > 0 && args[args.length - 1];\n if (deferred && deferred.promise instanceof DeferPromise)\n args.pop();\n else\n deferred = DeferPromise.defer();\n // hi-jack only if promise-like...\n CustomElementUtils.setAttachedPropertyValue(_this, lockKey, true);\n result.then(r => {\n deferred.resolve(r);\n CustomElementUtils.setAttachedPropertyValue(_this, lockKey, false);\n // warning: here's a possibly sneaky point (TODO: strengthen the lock)\n if (buffer.length > 0)\n originalMethod.apply(_this, buffer.shift());\n }, err => {\n CustomElementUtils.setAttachedPropertyValue(_this, lockKey, false);\n deferred.reject(err);\n });\n return deferred.promise;\n }\n // ...otherwise return the - hopefully - safe single-threaded result.\n else\n return result;\n };\n };\n}\nexport function Debounce(msecs = 50, keyFactory = (key, ...args) => `pacem:debouncer:${key}`) {\n return function (target /* type, actually */, key, descriptor) {\n const originalMethod = descriptor.value;\n if (msecs === true) {\n descriptor.value = function (...args) {\n const handleKey = keyFactory(key, ...args);\n var _this = this;\n cancelAnimationFrame(GET_VAL(_this, handleKey));\n SET_VAL(_this, handleKey, requestAnimationFrame(() => {\n originalMethod.apply(_this, args);\n }));\n };\n }\n else if (msecs > 0) {\n descriptor.value = function (...args) {\n const handleKey = keyFactory(key, ...args);\n var _this = this;\n clearTimeout(GET_VAL(_this, handleKey, 0));\n SET_VAL(_this, handleKey, setTimeout(() => {\n originalMethod.apply(_this, args);\n }, msecs));\n };\n }\n };\n}\nexport function Throttle(msecs = 50, keyFactory = (key, ...args) => `pacem:throttler:${key}`) {\n return function (target /* type, actually */, key, descriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args) {\n const handleKey = keyFactory(key, ...args);\n const argsKey = `${handleKey}:args`;\n const _this = this, reset = () => {\n DEL_VAL(_this, handleKey);\n const lastArgs = GET_VAL(_this, argsKey);\n DEL_VAL(_this, argsKey);\n if (lastArgs) {\n originalMethod.apply(_this, args);\n }\n };\n // guard: the presence of an handleKey\n // indicates a too-close call => exit\n if (!Utils.isNull(GET_VAL(_this, handleKey))) {\n SET_VAL(_this, argsKey, args ?? ['pacem']);\n return;\n }\n SET_VAL(_this, handleKey, 1);\n originalMethod.apply(_this, args);\n if (msecs === true) {\n requestAnimationFrame(reset);\n }\n else if (msecs > 0) {\n setTimeout(reset, msecs);\n }\n };\n };\n}\n// #endregion\n// #region TRANSFORMS\nclass Transforms {\n static register(name, fn) {\n let _set = Utils.core;\n const segments = (name || fn.name).split('.');\n for (let segment of segments.slice(0, -1)) {\n _set = _set[segment] || (_set[segment] = {});\n }\n const methodName = segments[segments.length - 1] || fn.name;\n if (!Utils.isNull(_set[methodName])) {\n console.warn(`A transform named ${methodName} already exists in this set.`);\n }\n else {\n _set[methodName] = fn;\n }\n }\n}\nexport function Transformer(name) {\n return function (target, key, descriptor) {\n const method = descriptor.value;\n Transforms.register(name, method);\n };\n}\n","/// <reference path=\"converters.ts\" />\n/// <reference path=\"decorators.ts\" />\n/// <reference path=\"logger.ts\" />\nvar __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 { Expression } from './expression';\nimport { LogLevel } from './logger';\nimport { INSTANCE_SCOPE_VAR } from './types';\nimport { Utils } from './utils';\nimport { CustomElementUtils } from './utils-customelement';\nimport { Watch } from './decorators';\nimport { PropertyConverters } from './converters';\n//namespace Pacem.Components {\nexport class PacemEventTarget extends HTMLElement {\n constructor() {\n super();\n this._isReady = false;\n this.emitHandler = (evt) => {\n // no handlers processed if the element is disabled.\n if (!this.disabled) {\n this.emit(evt);\n }\n };\n }\n /**\n * Executes the relevant handler defined in the `on-{evt.type}` attribute, if any.\n * @param evt {Event} the event to be fired\n */\n emit(evt) {\n if (evt.defaultPrevented) {\n // skip if evt was canceled\n return;\n }\n this._emitCore(evt);\n }\n _emitCore(evt) {\n var attrName = `on-${evt.type.toLowerCase()}`;\n if (attrName in this.attributes) {\n this.log(LogLevel.Debug, `Calling ${attrName} handler for event ${evt.type}`);\n var attrBody = this.attributes[attrName].value;\n var expression = Expression.parse(attrBody, this);\n if (!Utils.isNull(expression) && expression.pending !== true) {\n expression.evaluatePlus({ '$event': evt });\n }\n }\n }\n handle(evt, detail) {\n if (typeof evt === 'string') {\n evt = Utils.isNull(detail) ? new Event(evt, { cancelable: false }) : new CustomEvent(evt, { cancelable: false, detail });\n }\n this.emit(evt);\n }\n /** Gets whether the element has been completely loaded alongside with the other pieces of the DOM. */\n get isReady() {\n return this._isReady;\n }\n connectedCallback() {\n CustomElementUtils.setAttachedPropertyValue(this, INSTANCE_SCOPE_VAR, CustomElementUtils.findScopeContext(this));\n this.log(LogLevel.Debug, `Connected.`);\n }\n disconnectedCallback() {\n this._isReady = false;\n this.dispatchEvent(new Event('unload'));\n CustomElementUtils.deleteAttachedPropertyValue(this, INSTANCE_SCOPE_VAR);\n this.log(LogLevel.Debug, `Disconnected.`);\n }\n viewActivatedCallback() {\n this._isReady = true;\n this.log(LogLevel.Debug, `Loaded (view activated).`);\n this.dispatchEvent(new Event('load'));\n }\n /**\n * Manages the value change of a watched property.\n * @param name {string} property name\n * @param old {any} former property value\n * @param val {any} new/current property value\n * @param first {boolean} whether is the first change (right before view activation) or not\n */\n propertyChangedCallback(name, old, val, first) {\n if (first)\n this.log(LogLevel.Log, `Property \"${name}\" changed at start-up`);\n else\n this.log(LogLevel.Log, `Property \"${name}\" changed from ${old} to ${val}`);\n }\n /**\n * Wraps the native dispatchEvent in order to emit `on-{evt-type}` handler, if any.\n * @param evt {Event} the event to be fired\n */\n dispatchEvent(evt) {\n // no events dispatched if the element is disabled.\n if (this.disabled) {\n return false;\n }\n this.log(LogLevel.Log, `Dispatching event \"${evt.type}\"`);\n const ret = super.dispatchEvent(evt);\n this.emit(evt);\n return ret;\n }\n /**\n * Logs a message if a logger is available.\n * @param level {LogLevel} Level of log\n * @param message {String} Content\n * @param category {String} Grouping category\n */\n log(level, message, category = this.localName + (this.id ? '#' + this.id : '')) {\n this.logger && typeof this.logger.log === 'function' && this.logger.log(level, message, category);\n }\n /** Refreshes all the properties corresponding to explicit binding attributes. */\n refreshBindings() {\n // refresh all the bindings\n for (let j = 0; j < this.attributes.length; j++) {\n let attr = this.attributes.item(j), isBinding = CustomElementUtils.isBindingAttribute(attr.value);\n if (!isBinding)\n continue;\n let prop = CustomElementUtils.kebabToCamel(attr.name);\n let binding = CustomElementUtils.parseBindingAttribute(attr.value, this);\n this[prop] = binding.evaluate();\n }\n }\n}\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemEventTarget.prototype, \"disabled\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemEventTarget.prototype, \"logger\", void 0);\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 { Utils } from '../../utils';\nimport { CustomTypedEvent } from '../../events';\nimport { PacemEventTarget } from '../../eventtarget';\nimport { PCSS } from '../../prefix';\nimport { Watch } from '../../decorators';\nimport { PropertyConverters } from '../../converters';\nexport const RepeaterItemCreateEventName = 'repeateritemcreate';\nexport const RepeaterItemRemoveEventName = 'repeateritemremove';\nexport class RepeaterItemEvent extends CustomTypedEvent {\n constructor(name, args) {\n super(name, args);\n }\n}\nexport class RepeaterItemCreateEvent extends RepeaterItemEvent {\n constructor(args) {\n super(RepeaterItemCreateEventName, args);\n }\n}\nexport class RepeaterItemRemoveEvent extends RepeaterItemEvent {\n constructor(args) {\n super(RepeaterItemRemoveEventName, args);\n }\n}\nconst STD_EVENTS = ['keydown', 'keyup', 'click', 'focus', 'blur', 'dblclick', 'mouseover', 'mouseout', 'mouseenter', 'mouseleave', 'mousedown', 'mouseup', 'mousemove', 'contextmenu', 'wheel'];\nclass ElementAriaAttributes {\n constructor(_element, ariaAttrs) {\n this._element = _element;\n this._aria = Utils.extend({}, ariaAttrs || {});\n }\n toObject() {\n return Utils.extend({}, this._aria);\n }\n set(name, value) {\n this._aria[name] = value;\n const el = this._element;\n if (el.isConnected) {\n el.setAttribute('aria-' + name, value);\n }\n }\n remove(name) {\n delete this._aria[name];\n const el = this._element;\n if (el.isConnected) {\n el.removeAttribute('aria-' + name);\n }\n }\n}\nclass ElementAria {\n constructor(_element, role, attrs) {\n this._element = _element;\n this._aria = { role: role, attrs: new ElementAriaAttributes(_element, attrs) };\n }\n get role() {\n return this._aria.role;\n }\n /** Remarks: when set to an empty string AFTER the element gets connected to the DOM, this will remove the `role` attribute. */\n set role(role) {\n this._aria.role = role;\n const el = this._element;\n if (el.isConnected) {\n Utils.isNullOrEmpty(role) ? el.removeAttribute('role') : el.setAttribute('role', role);\n }\n }\n get attributes() {\n return this._aria.attrs;\n }\n}\nexport class PacemElement extends PacemEventTarget {\n constructor(role, aria) {\n super();\n this.#cssBag = [];\n this.#parts = [];\n this._tabIndex = -1;\n this.behaviors = [];\n this._aria = new ElementAria(this, role, aria);\n }\n // #region ARIA\n get aria() { return this._aria; }\n // #endregion\n static #stdEvtsMemoizer = null;\n static get emittedEventTypes() {\n return this.#stdEvtsMemoizer ??= Utils.readonlyCopy(STD_EVENTS);\n }\n #cssBag;\n #parts;\n connectedCallback() {\n super.connectedCallback();\n if (!Utils.isNullOrEmpty(this._aria.role)) {\n this.setAttribute('role', this._aria.role);\n }\n let ariaAttrs = this._aria.attributes.toObject();\n if (!Utils.isNullOrEmpty(ariaAttrs)) {\n for (let name in ariaAttrs) {\n this.setAttribute('aria-' + name, ariaAttrs[name]);\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n STD_EVENTS.forEach(e => {\n this.addEventListener(e, this.emitHandler, false);\n });\n for (var behavior of this.behaviors || []) {\n behavior.register(this);\n }\n }\n disconnectedCallback() {\n for (var behavior of this.behaviors || []) {\n behavior.unregister(this);\n }\n STD_EVENTS.forEach(e => {\n this.removeEventListener(e, this.emitHandler, false);\n });\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'css':\n for (var css in this.css) {\n this.style.setProperty(css, this.css[css]);\n }\n break;\n case 'cssClass':\n if (Utils.isArray(this.cssClass)) {\n const newBag = this.cssClass;\n for (let css of this.#cssBag.splice(0)) {\n Utils.removeClass(this, css);\n }\n for (let css of newBag) {\n this.#cssBag.push(css);\n Utils.addClass(this, css);\n }\n }\n else\n for (let css in this.cssClass) {\n Utils.toggleClass(this, css, this.cssClass[css]);\n }\n break;\n case 'cssPart':\n const cssPart = this.cssPart, bag = this.#parts;\n if (Utils.isArray(cssPart)) {\n const newBag = cssPart;\n for (let partName of bag.splice(0)) {\n Utils.removePart(this, partName);\n }\n for (let partName of newBag) {\n bag.push(partName);\n Utils.addPart(this, partName);\n }\n }\n else\n for (let partName in cssPart) {\n Utils.togglePart(this, partName, cssPart[partName]);\n }\n break;\n case \"hide\":\n const hidingCss = (PCSS + '-hiding');\n if (val) {\n const el = this, animCss = PCSS + '-anim', callback = () => {\n el.setAttribute('hidden', '');\n el.aria.attributes.set('hidden', 'true');\n };\n if (Utils.hasClass(el, animCss) && !Utils.isNull(old)) {\n Utils.removeClass(el, animCss);\n requestAnimationFrame(() => {\n Utils.addClass(el, hidingCss);\n Utils.addClass(el, animCss);\n Utils.waitForAnimationEnd(el, 250).then(_ => {\n if (el.hide) {\n callback();\n }\n Utils.removeClass(el, hidingCss);\n });\n });\n }\n else\n callback();\n }\n else {\n Utils.removeClass(this, hidingCss);\n this.removeAttribute('hidden');\n this.aria.attributes.remove('hidden');\n }\n break;\n case 'tooltip':\n this.title = val;\n Utils.isNullOrEmpty(val) ? this.aria.attributes.remove('label') : this.aria.attributes.set('label', val);\n break;\n case 'tabOrder':\n this._tabIndex = val;\n if (!this.disabled) {\n this.tabIndex = val;\n }\n break;\n case 'behaviors':\n if (!Utils.isNullOrEmpty(old)) {\n for (let behavior of old) {\n behavior.unregister(this);\n }\n }\n if (!Utils.isNullOrEmpty(val) && !first) {\n for (let behavior of val) {\n behavior.register(this);\n }\n }\n break;\n case 'disabled':\n let cssDis = PCSS + '-' + name;\n if (!!val) {\n this._tabIndex = this.tabIndex;\n this.tabIndex = -1;\n Utils.addClass(this, cssDis);\n }\n else {\n this.tabIndex = this._tabIndex;\n Utils.removeClass(this, cssDis);\n }\n break;\n case 'culture':\n if (Utils.isNullOrEmpty(val)) {\n this.removeAttribute('lang');\n }\n else {\n this.setAttribute('lang', val);\n }\n if (!first) {\n this.refreshBindings();\n }\n break;\n }\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json /* when declared plainly assume array of strings */ })\n], PacemElement.prototype, \"cssClass\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemElement.prototype, \"cssPart\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemElement.prototype, \"css\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemElement.prototype, \"hide\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemElement.prototype, \"tooltip\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemElement.prototype, \"tabOrder\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemElement.prototype, \"culture\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemElement.prototype, \"behaviors\", void 0);\nexport class PacemContentElement extends PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'content' && !first) {\n this._fillContent(val);\n }\n }\n _isContentNullOrEmpty(content = this.content) {\n return Utils.isNullOrEmpty(content) || (content instanceof DocumentFragment && content.childElementCount === 0);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._original = Array.from(this.children);\n if (!this._isContentNullOrEmpty()) {\n this._fillContent();\n }\n }\n disconnectedCallback() {\n if (!Utils.isNullOrEmpty(this._original)) {\n this.innerHTML = '';\n Element.prototype.append.apply(this, this._original);\n }\n super.disconnectedCallback();\n }\n _fillContent(val = this.content) {\n const output = this.sanitize(val);\n if (Utils.isNullOrEmpty(output)) {\n this.innerHTML = '';\n }\n else {\n if (output instanceof Node) {\n this.innerHTML = '';\n this.append(output);\n }\n else {\n this.innerHTML = output;\n }\n }\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemContentElement.prototype, \"content\", void 0);\nexport class PacemUnsafeContentElement extends PacemContentElement {\n sanitize(html) {\n return html;\n }\n}\nexport class PacemSafeContentElement extends PacemContentElement {\n _sanitizeLegacy(html) {\n if (Utils.isNullOrEmpty(html)) {\n return html;\n }\n if (html instanceof Node) {\n for (let i = html.childNodes.length - 1; i >= 0; i--) {\n const node = html.childNodes.item(i);\n if (node instanceof HTMLScriptElement) {\n node.remove();\n }\n else {\n this.sanitize(node);\n }\n }\n return html;\n }\n else {\n const scriptBlockPattern = /<script.+<\\/script>/g;\n // TODO: remove onclick, onload, onkey*, ... attributes\n return (html || '').toString().replace(scriptBlockPattern, '');\n }\n }\n sanitize(html) {\n // TODO: implement by using (when available in dom library)\n // https://developer.mozilla.org/en-US/docs/Web/API/Sanitizer/Sanitizer\n return this._sanitizeLegacy(html);\n }\n}\n//}\n","import { CurrentIndexChangeEvent } from '../../adapter';\nimport { Utils } from '../../utils';\nimport { PropertyChangeEventName } from '../../events';\nimport { PacemEventTarget } from '../../eventtarget';\nimport { PacemElement } from './types';\nexport class PacemAdapter extends PacemElement {\n constructor() {\n super(...arguments);\n this._propertyChangeHandler = (evt) => {\n this.masterPropertyChangedCallback(evt.detail.propertyName, evt.detail.oldValue, evt.detail.currentValue, evt.detail.firstChange);\n };\n }\n /** Gets the adapted element. */\n get master() {\n return this._element;\n }\n /** Gets whether this adapter has been initialized or not. */\n get initialized() {\n return !Utils.isNull(this._element);\n }\n /**\n * Handles the property changes for the master element.\n * @param name Name of the property that has changed\n * @param old Previous value\n * @param val Current value\n * @param first Is it the startup change?\n */\n masterPropertyChangedCallback(name, old, val, first) {\n switch (name) {\n case 'items':\n this._adjustFocusIndex();\n break;\n case 'index':\n this._element.dispatchEvent(new CurrentIndexChangeEvent({ currentIndex: val, previousIndex: old }));\n break;\n }\n }\n /**\n * Handles the property changes for item elements.\n * @param index Index of the element among the items\n * @param name Name of the property that has changed\n * @param old Previous value\n * @param val Current value\n * @param first Is it the startup change?\n */\n itemPropertyChangedCallback(index, name, old, val, first) {\n // empty implementation\n }\n /** Called righat after the adapter 'initialize'. */\n initializeCallback() {\n // empty implementation\n }\n destroyCallback() {\n // empty implementation\n }\n initialize(adapted) {\n if (this._element != null) {\n this.destroy();\n //throw `Cannot initialize an adapter twice.`;\n }\n if (adapted != null) {\n this._element = adapted;\n this._element.addEventListener(PropertyChangeEventName, this._propertyChangeHandler, false);\n }\n this.initializeCallback();\n }\n destroy() {\n if (this._element != null)\n this._element.removeEventListener(PropertyChangeEventName, this._propertyChangeHandler, false);\n this.destroyCallback();\n }\n disconnectedCallback() {\n this.destroy();\n super.disconnectedCallback();\n }\n _adjustFocusIndex() {\n let items = this._element.items;\n const index = this._element.index;\n const length = items && items.length;\n const ndxStart = length ? Math.max(0, Math.min(length - 1, index)) : -1;\n const ndx = this._getAvailable(ndxStart);\n this._element.index = ndx;\n }\n _getNextAvailable(ndxStart) {\n return this._getAvailable(ndxStart, 1);\n }\n _getPreviousAvailable(ndxStart) {\n return this._getAvailable(Math.max(0, ndxStart), -1);\n }\n _getAvailable(ndxStart = this._element && this._element.index, step = 0) {\n let items = this._element.items, length;\n if (!(items && (length = items.length) > 0))\n return -1;\n ndxStart = ndxStart % length;\n let ndx = (ndxStart + step + length) % length;\n let item;\n step = step || -1;\n while ((item = items[ndx]) instanceof PacemEventTarget && item.disabled === true\n || (item instanceof PacemElement && item.hide === true)) {\n ndx = (ndx + step + length) % length;\n if (ndx == ndxStart) {\n // loop completed\n return -1;\n }\n }\n return ndx;\n }\n /**\n * Returns whether the provided index is close (adjacent or equal) to the current one in focus.\n * @param ndx index to be checked\n */\n isClose(ndx) {\n const current = this._getAvailable();\n return ndx === current\n || ndx === this._getPreviousAvailable(current)\n || ndx === this._getNextAvailable(current);\n }\n /**\n * Returns whether the provided index is adjacent (previous on the list) to the current one in focus.\n * @param ndx index to be checked\n */\n isPrevious(ndx) {\n const current = this._getAvailable();\n return ndx === this._getPreviousAvailable(current);\n }\n /**\n * Returns whether the provided index is adjacent (next on the list) to the current one in focus.\n * @param ndx index to be checked\n */\n isNext(ndx) {\n const current = this._getAvailable();\n return ndx === this._getNextAvailable(current);\n }\n select(ndx) {\n this._element.index = this._getAvailable(ndx);\n }\n previous(loop = true) {\n var prev = this._getPreviousAvailable(this._element.index);\n if (prev >= 0 && (loop || this._element.index > prev))\n this._element.index = prev;\n }\n next(loop = true) {\n var next = this._getNextAvailable(this._element.index);\n if (next >= 0 && (loop || this._element.index < next))\n this._element.index = next;\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 { CustomElement, P } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemAnnihilatorElement = class PacemAnnihilatorElement extends HTMLElement {\n constructor() {\n super();\n }\n connectedCallback() {\n this.remove();\n }\n};\nPacemAnnihilatorElement = __decorate([\n CustomElement({ tagName: P + '-annihilator' })\n], PacemAnnihilatorElement);\nexport { PacemAnnihilatorElement };\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 { CustomElement, P, Watch, PropertyConverters, PacemEventTarget } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemBeforeunloadElement = class PacemBeforeunloadElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._unloadingHandler = (evt) => {\n const msg = this.message;\n if (!this.active || this.disabled) {\n return;\n }\n if (evt.type === 'beforeunload') {\n evt.preventDefault();\n evt.returnValue = msg || '';\n }\n else if (!confirm(msg || 'Leave page?')) {\n evt.preventDefault();\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n window.addEventListener('navigating', this._unloadingHandler, false);\n window.addEventListener('beforeunload', this._unloadingHandler, false);\n }\n disconnectedCallback() {\n window.removeEventListener('navigating', this._unloadingHandler, false);\n window.removeEventListener('beforeunload', this._unloadingHandler, false);\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBeforeunloadElement.prototype, \"message\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemBeforeunloadElement.prototype, \"active\", void 0);\nPacemBeforeunloadElement = __decorate([\n CustomElement({ tagName: P + '-beforeunload' })\n], PacemBeforeunloadElement);\nexport { PacemBeforeunloadElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemBroadcastChannelProxyElement = class PacemBroadcastChannelProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.autosend = true;\n this._messageHandler = (evt) => {\n this.result = evt.data;\n this.dispatchEvent(new CustomEvent('receive', { detail: evt.data, bubbles: false, cancelable: false }));\n };\n this._errorHandler = (evt) => {\n this.dispatchEvent(new CustomEvent('error', { detail: evt.data, bubbles: false, cancelable: false }));\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._initializeChannel();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'src':\n this._disposeChannel();\n this._initializeChannel(val);\n break;\n case 'autosend':\n case 'disabled':\n case 'message':\n if (this.autosend) {\n this.send(this.message);\n }\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeChannel();\n super.disconnectedCallback();\n }\n send(message = this.message) {\n if (this.disabled) {\n return;\n }\n const channel = this.#channel;\n if (!Utils.isNull(channel)) {\n channel.postMessage(message);\n }\n }\n #channel;\n _initializeChannel(name = this.channelName) {\n if (!Utils.isNullOrEmpty(name)) {\n const channel = this.#channel = new BroadcastChannel(name);\n channel.addEventListener('message', this._messageHandler, false);\n channel.addEventListener('messageerror', this._errorHandler, false);\n if (this.autosend && !Utils.isNull(this.message)) {\n this.send();\n }\n }\n }\n _disposeChannel(channel = this.#channel) {\n if (!Utils.isNull(channel)) {\n channel.removeEventListener('messageerror', this._errorHandler, false);\n channel.removeEventListener('message', this._messageHandler, false);\n channel.close();\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBroadcastChannelProxyElement.prototype, \"message\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBroadcastChannelProxyElement.prototype, \"result\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBroadcastChannelProxyElement.prototype, \"channelName\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemBroadcastChannelProxyElement.prototype, \"autosend\", void 0);\nPacemBroadcastChannelProxyElement = __decorate([\n CustomElement({ tagName: P + '-broadcastchannel-proxy' })\n], PacemBroadcastChannelProxyElement);\nexport { PacemBroadcastChannelProxyElement };\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 { detect } from '@pacem/pacem-foundation';\nimport { CustomElement, Watch } from '../../decorators';\nimport { P } from '../../prefix';\nimport { PropertyConverters } from '../../converters';\nimport { PropertyChangeEvent } from '../../events';\nimport { PacemEventTarget } from '../../eventtarget';\n//namespace Pacem.Components {\nlet PacemBrowserDetectElement = class PacemBrowserDetectElement extends PacemEventTarget {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._detect();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'userAgent') {\n this._detect(val);\n }\n }\n #browser;\n #version;\n get browser() {\n return this.#browser;\n }\n get version() {\n return this.#version;\n }\n _detect(userAgent = this.userAgent) {\n const { version, name } = detect(userAgent);\n const { browser: oldName, version: oldVersion } = this;\n if (name != oldName) {\n this.#browser = name;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'browser', currentValue: name, oldValue: oldName }));\n }\n if (version != oldVersion) {\n this.#version = version;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'version', currentValue: version, oldValue: oldVersion }));\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBrowserDetectElement.prototype, \"userAgent\", void 0);\nPacemBrowserDetectElement = __decorate([\n CustomElement({ tagName: P + '-browser-detect' })\n], PacemBrowserDetectElement);\nexport { PacemBrowserDetectElement };\n//}\n","import { Utils } from './utils';\n//namespace Pacem {\nconst EXPIRATION_FIELD = '_exp';\nexport class Storage {\n _getStorage(persistent) {\n return !!persistent ? window.localStorage : window.sessionStorage;\n }\n _parseValue(storage, name) {\n const value = storage.getItem(name);\n if (Utils.isNullOrEmpty(value)) {\n return null;\n }\n const output = Utils.Json.parse(value);\n if (!Object.hasOwnProperty(EXPIRATION_FIELD)) {\n return output;\n }\n const exp = output[EXPIRATION_FIELD];\n if (exp < Date.now()) {\n storage.removeItem(name);\n return null;\n }\n return output['value'];\n }\n setPropertyValue(name, value, persistent) {\n var storage = this._getStorage(persistent === true || (typeof persistent === 'number' && persistent > 0));\n var storedValue = value;\n // set cache timeout\n if (typeof persistent === 'number' && persistent > 0) {\n const exp = Date.now() + 1000 * persistent;\n storedValue = { value: value };\n storedValue[EXPIRATION_FIELD] = exp;\n }\n storage.setItem(name, Utils.Json.stringify(storedValue));\n // delete omonymy\n storage = this._getStorage(!persistent);\n storage.removeItem(name);\n }\n getPropertyValue(name) {\n return this._parseValue(this._getStorage(false), name)\n || this._parseValue(this._getStorage(true), name);\n }\n clear() {\n var storage = this._getStorage(true);\n storage.clear();\n storage = this._getStorage(false);\n storage.clear();\n }\n ;\n removeProperty(name) {\n var storage = this._getStorage(true);\n storage.removeItem(name);\n storage = this._getStorage(false);\n storage.removeItem(name);\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { Storage } from '../../storage';\nimport { PropertyChangeEvent } from '../../events';\n//namespace Pacem.Components {\nlet PacemDataElement = class PacemDataElement extends PacemEventTarget {\n constructor(storage = new Storage()) {\n super();\n this.storage = storage;\n this._handle = 0;\n this._flag = false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'persistAs':\n if (!Utils.isNullOrEmpty(old)) {\n this.storage.removeProperty(old);\n }\n if (first === true && !Utils.isNullOrEmpty(val)) {\n this.model = this.storage.getPropertyValue(val) ?? this.model;\n }\n break;\n case 'model':\n const debounce = this.debounce, throttle = this.throttle, emit = () => {\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: name, oldValue: old, currentValue: val, firstChange: first }));\n };\n if (debounce > 0 && !first) {\n if (throttle) {\n if (this._flag)\n return;\n this._flag = true;\n emit();\n this._handle = window.setTimeout(() => { this._flag = false; }, debounce);\n }\n else {\n clearTimeout(this._handle);\n this._handle = window.setTimeout(emit, debounce);\n }\n }\n else {\n emit();\n }\n // persist\n if (!first && !Utils.isNullOrEmpty(this.persistAs)) {\n if (Utils.isNull(val))\n this.storage.removeProperty(this.persistAs);\n else\n this.storage.setPropertyValue(this.persistAs, val, true);\n }\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false /* in order to debounce the propertychange emit */, converter: PropertyConverters.Eval })\n], PacemDataElement.prototype, \"model\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataElement.prototype, \"persistAs\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataElement.prototype, \"debounce\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.BooleanStrict })\n], PacemDataElement.prototype, \"throttle\", void 0);\nPacemDataElement = __decorate([\n CustomElement({ tagName: P + '-data' })\n], PacemDataElement);\nexport { PacemDataElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils, PCSS } from './_default-imports';\nimport { TweenService } from '../../animations/tween-service';\nimport { Easings } from '../../animations/easings';\nimport { LogLevel } from '../../logger';\nimport { CustomElementUtils } from '../../utils-customelement';\n//namespace Pacem.Components {\nexport var DockMode;\n(function (DockMode) {\n DockMode[\"Top\"] = \"top\";\n DockMode[\"Bottom\"] = \"bottom\";\n})(DockMode || (DockMode = {}));\n/** @deprecated */\nlet PacemDockElement = class PacemDockElement extends PacemEventTarget {\n constructor(_tweener = new TweenService()) {\n super();\n this._tweener = _tweener;\n this.mode = DockMode.Top;\n this.transitionDuration = 300 /* msecs */;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'dock' && (!Utils.isNull(old) || val != false))\n this._doDock();\n else if (name === 'mode' && this.dock === true)\n this._doDock();\n }\n _animate(from, to) {\n var transition = this.transitionDuration;\n if (!(transition > 0))\n transition = 300;\n //\n return this._tweener.run(from, to, transition, this.delay, Easings.sineInOut, (time, value) => {\n this._setOffset(value);\n }).then(() => {\n this._resetOffset();\n });\n }\n _setOffset(value) {\n this.style.transform = 'translateY(' + value + 'px)';\n }\n _resetOffset() {\n this.style.transform = '';\n }\n _compute() {\n const offset = Utils.offset(this);\n const css = getComputedStyle(this);\n const scrollTop = Utils.scrollTop;\n switch (this.mode) {\n case DockMode.Bottom:\n const marginBottom = parseInt(css.marginBottom);\n const bottom = offset.top;\n const deltaBottom = Utils.windowSize.height - (bottom - scrollTop + this.offsetHeight);\n return { delta: deltaBottom + marginBottom };\n case DockMode.Top:\n const marginTop = parseInt(css.marginTop);\n const top = offset.top;\n const delta = top - scrollTop;\n return { delta: -(delta + marginTop) };\n }\n }\n _doDock() {\n const docked = this.dock;\n if (docked) {\n const cmp = this._compute();\n if (Utils.isNull(cmp))\n return;\n //\n // adding the css classes first...\n Utils.addClass(this, PCSS + '-dock');\n switch (this.mode) {\n case DockMode.Bottom:\n Utils.removeClass(this, PCSS + '-dock-top');\n Utils.addClass(this, PCSS + '-dock-bottom');\n break;\n case DockMode.Top:\n Utils.removeClass(this, PCSS + '-dock-bottom');\n Utils.addClass(this, PCSS + '-dock-top');\n break;\n }\n // ...so have to flip `from` and `to` \n const from = -cmp.delta;\n const to = 0;\n const state = CustomElementUtils.getAttachedPropertyValue(this, 'pacem-dock:state') || 0;\n CustomElementUtils.setAttachedPropertyValue(this, 'pacem-dock:state', -from + state);\n this.log(LogLevel.Info, `animating from ${from}px to ${to}px`);\n //\n this._animate(from, to) /*.then(() => { })*/;\n }\n else {\n // removing the css classes first then animating\n const from = CustomElementUtils.getAttachedPropertyValue(this, 'pacem-dock:state');\n CustomElementUtils.deleteAttachedPropertyValue(this, 'pacem-dock:state');\n const to = 0;\n this.log(LogLevel.Info, `animating back from ${from}px to ${to}px`);\n Utils.removeClass(this, `${PCSS}-dock ${PCSS}-dock-top ${PCSS}-dock-bottom`);\n this._animate(from, to);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDockElement.prototype, \"mode\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemDockElement.prototype, \"dock\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemDockElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDockElement.prototype, \"delay\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDockElement.prototype, \"transitionDuration\", void 0);\nPacemDockElement = __decorate([\n CustomElement({\n tagName: P + '-dock'\n })\n], PacemDockElement);\nexport { PacemDockElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { CustomElementUtils } from '../../utils-customelement';\n//namespace Pacem.Components {\nexport class PacemTransferProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._dom = [];\n this._children = [];\n }\n get dom() {\n return this._children;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.moveContent(this.proxy);\n }\n moveContent(to) {\n if (!Utils.isNull(to)) {\n if (Utils.isNullOrEmpty(this._dom)) {\n this._dom = Utils.moveItems(this.childNodes, to);\n this._children = this._dom.filter(e => e instanceof Element);\n }\n else {\n Utils.moveItems(this._children, to);\n }\n }\n }\n disconnectedCallback() {\n for (let item of (this._dom || []).splice(0)) {\n item.remove();\n }\n super.disconnectedCallback();\n }\n}\n/** Moves its content to the document body and eventually removes it when disconnected. */\nlet PacemBodyProxyElement = class PacemBodyProxyElement extends PacemTransferProxyElement {\n get proxy() {\n return document.body;\n }\n};\nPacemBodyProxyElement = __decorate([\n CustomElement({\n tagName: P + '-body-proxy'\n })\n], PacemBodyProxyElement);\nexport { PacemBodyProxyElement };\n/** Moves its content to the closest shell and eventually removes it when disconnected. */\nlet PacemShellProxyElement = class PacemShellProxyElement extends PacemTransferProxyElement {\n get proxy() {\n return CustomElementUtils.findAncestorShell(this);\n }\n};\nPacemShellProxyElement = __decorate([\n CustomElement({\n tagName: P + '-shell-proxy'\n })\n], PacemShellProxyElement);\nexport { PacemShellProxyElement };\n/** Moves its content to the provided target element. */\nlet PacemElementProxyElement = class PacemElementProxyElement extends PacemTransferProxyElement {\n get proxy() {\n return this.target;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'target' && !first) {\n this.moveContent(this.proxy);\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemElementProxyElement.prototype, \"target\", void 0);\nPacemElementProxyElement = __decorate([\n CustomElement({\n tagName: P + '-element-proxy'\n })\n], PacemElementProxyElement);\nexport { PacemElementProxyElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nclass EmitEvent extends Event {\n constructor(_originalEvent) {\n super('emit');\n this._originalEvent = _originalEvent;\n }\n get originalEvent() {\n return this._originalEvent;\n }\n}\nconst ElementOrWindowConverter = {\n convert: function (attr, element) {\n if (attr === '$window') {\n return window;\n }\n return PropertyConverters.Element.convert(attr, element);\n },\n convertBack: (prop, element) => {\n if (prop === window) {\n return '$window';\n }\n return PropertyConverters.Element.convertBack(prop, element);\n }\n};\nlet PacemEventProxyElement = class PacemEventProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._emitHandler = (evt) => {\n var event = new EmitEvent(evt);\n this.dispatchEvent(event);\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._observe();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'target':\n this._unobserve(old, this.event, this.capture);\n this._observe();\n break;\n case 'event':\n this._unobserve(this.target, old, this.capture);\n this._observe();\n break;\n case 'capture':\n this._unobserve(this.target, this.event, old);\n this._observe();\n break;\n }\n }\n }\n disconnectedCallback() {\n this._unobserve();\n super.disconnectedCallback();\n }\n _unobserve(target = this.target, event = this.event, capture = this.capture) {\n if (Utils.isNull(target) || Utils.isNullOrEmpty(event)) {\n return;\n }\n target.removeEventListener(event, this._emitHandler, { capture });\n }\n _observe(target = this.target, event = this.event, capture = this.capture) {\n if (Utils.isNull(target) || Utils.isNullOrEmpty(event)) {\n return;\n }\n target.addEventListener(event, this._emitHandler, { capture });\n }\n};\n__decorate([\n Watch({ emit: false, converter: ElementOrWindowConverter })\n], PacemEventProxyElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemEventProxyElement.prototype, \"event\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemEventProxyElement.prototype, \"capture\", void 0);\nPacemEventProxyElement = __decorate([\n CustomElement({\n tagName: P + '-event-proxy'\n })\n], PacemEventProxyElement);\nexport { PacemEventProxyElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils, LogLevel } from './_default-imports';\nimport { Fetcher, HttpMethod, FetchSuccessEventName, FetchErrorEventName, FetchResultEventName } from '../../net/fetcher';\n//namespace Pacem.Components {\nconst ABORT_MESSAGE = \"New incoming request overrides the ongoing one. Aborting.\";\nlet PacemFetchElement = class PacemFetchElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Gets or sets whether to trigger a fetch whenever a significant property has changed (default: true). */\n this.autofetch = true;\n this.debounce = 100;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._delayAndConditionallyFetch();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n // parameters/headers -> in order to avoid unnecessary fetches don't compare byref but term by term in the json\n switch (name) {\n case 'url':\n case 'method':\n case 'type':\n case 'as':\n case 'mode':\n case 'credentials':\n case 'disabled':\n case 'autofetch':\n this._delayAndConditionallyFetch();\n break;\n case 'parameters':\n case 'headers':\n if (!this.diffByValues\n // spare round-trips: compare stringified values.\n // state might be changed, by it's up to the dev to unlock this\n // (i.e. just by calling 'fetch()' directly)\n || Utils.jsonSortStringify(old) != Utils.jsonSortStringify(val)) {\n this._delayAndConditionallyFetch();\n }\n break;\n }\n }\n _delayAndConditionallyFetch() {\n clearTimeout(this._handle);\n if (this.disabled) {\n this._abortPending();\n }\n else if (this.autofetch) {\n this._handle = setTimeout(() => {\n this.fetch();\n }, this.debounce || 0);\n }\n }\n _abortPending() {\n if (this.#aborter) {\n this.#aborter.abort(ABORT_MESSAGE);\n this.#aborter = null;\n }\n }\n #aborter;\n #ongoing;\n /** Returns a promise to a request having an already-consumed response body. */\n fetch() {\n if (this.throttle && this.fetching) {\n // exit\n return this.#ongoing;\n }\n return this.#ongoing = new Promise((resolve, reject) => {\n var url = this.url;\n // any reason to exit now?\n if (!this.isReady || Utils.isNullOrEmpty(url) || this.disabled) {\n resolve(null);\n return;\n }\n // go on...\n let _me = this;\n _me.fetching = true;\n const type = _me.type || 'json';\n let contentType = 'application/json';\n switch (type) {\n case 'raw':\n contentType = 'application/x-www-form-urlencoded';\n break;\n }\n const method = (_me.method || HttpMethod.Get).toUpperCase();\n let options = {\n headers: Utils.extend({ 'Content-Type': contentType }, _me.headers),\n method,\n mode: _me.mode || 'cors',\n credentials: _me.credentials || 'same-origin',\n cache: _me.cache || 'default'\n };\n const parameters = Utils.clone(_me.parameters ?? {});\n // complete a templated url, just in case (and remove params)\n // Note: templated urls might sound pleonastic where you can simply concatenate pieces of string.\n // They become handly in non-controllable autogenerated scenarios (e.g. autogenerated forms) where REST templated urls are involved.\n url = Utils.URIs.format(url, parameters, /* remove matched params if... */ method == \"GET\");\n if (!Utils.isNullOrEmpty(parameters)) {\n switch (method) {\n case 'GET':\n url = Utils.URIs.appendQuery(url, parameters);\n break;\n case 'PUT':\n case 'POST':\n case 'PATCH':\n switch (_me.type) {\n case 'raw':\n let searchParams = new URLSearchParams();\n for (let key in parameters) {\n searchParams.set(key, parameters[key]);\n }\n options.body = searchParams;\n break;\n default:\n options.body = Utils.Json.stringify(parameters);\n break;\n }\n break;\n }\n }\n // mandatory tmpl segments left over?\n if (Utils.URIs.hasMandatoryTemplateSegments(url)) {\n // exit\n resolve(null);\n return;\n }\n this._abortPending();\n const { signal } = this.#aborter = new AbortController();\n options.signal = signal;\n fetch(url, options).then(r => {\n this.#aborter = null;\n _me.fetching = false;\n if (r.ok) {\n this.dispatchEvent(new CustomEvent(FetchSuccessEventName, { detail: r }));\n const empty = Fetcher.isEmpty(r);\n if (empty) {\n switch (_me.as) {\n case 'blob':\n case 'image':\n _me.result = null;\n break;\n case 'text':\n _me.result = null;\n break;\n default:\n _me.result = null;\n break;\n }\n resolve(r);\n }\n else {\n switch (_me.as) {\n case 'blob':\n case 'image':\n r.blob().then(b => {\n if (_me.as === 'image') {\n Utils.blobToDataURL(b).then(i => {\n _me._acceptFetchResult(i);\n });\n }\n else {\n _me._acceptFetchResult(b);\n }\n resolve(r);\n }, _ => {\n this.log(LogLevel.Warn, `Couldn't parse a ${_me.as}. ${_}`);\n resolve(null);\n });\n break;\n case 'text':\n r.text().then(t => {\n _me._acceptFetchResult(t);\n resolve(r);\n });\n break;\n default:\n r.json().then(j => {\n _me._acceptFetchResult(j);\n resolve(r);\n }, _ => {\n this.log(LogLevel.Warn, `Couldn't parse a ${_me.as}. ${_}`);\n resolve(null);\n });\n break;\n }\n }\n }\n else {\n this.dispatchEvent(new CustomEvent(FetchErrorEventName, { detail: r }));\n reject(r);\n }\n }, (reason) => {\n if (typeof reason === 'string' && reason === ABORT_MESSAGE) {\n this.log(LogLevel.Info, reason);\n resolve(null);\n }\n else {\n reject(reason);\n }\n });\n });\n }\n _acceptFetchResult(val) {\n this.dispatchEvent(new CustomEvent(FetchResultEventName, { detail: val }));\n this.result = val;\n }\n};\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemFetchElement.prototype, \"parameters\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemFetchElement.prototype, \"headers\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"credentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"mode\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"cache\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.BooleanStrict })\n], PacemFetchElement.prototype, \"fetching\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFetchElement.prototype, \"autofetch\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"as\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFetchElement.prototype, \"type\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Number })\n], PacemFetchElement.prototype, \"debounce\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemFetchElement.prototype, \"throttle\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFetchElement.prototype, \"diffByValues\", void 0);\n__decorate([\n Watch()\n], PacemFetchElement.prototype, \"result\", void 0);\nPacemFetchElement = __decorate([\n CustomElement({ tagName: P + '-fetch' })\n], PacemFetchElement);\nexport { PacemFetchElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils, LogLevel } from './_default-imports';\nimport { DefaultComparer } from '../../comparers';\nimport { HistoryService } from '@pacem/pacem-foundation';\nexport class StateEvent extends CustomEvent {\n constructor(type, detail) {\n super(type, { detail });\n }\n}\nlet PacemHistoryElement = class PacemHistoryElement extends PacemEventTarget {\n #history;\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'state':\n this._handleStateChange(val);\n break;\n case 'maxlength':\n const h = this.#history;\n if (!Utils.isNull(h)) {\n h.maxlength = val;\n }\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._handleStateChange();\n }\n _handleStateChange(val = this.state) {\n const history = this.#history;\n if (!Utils.isNull(history)) {\n if (DefaultComparer(history.current, val) !== true) {\n history.push(val);\n this.log(LogLevel.Log, 'Pushed state.');\n this._synchronize('push');\n }\n }\n else {\n this.#history = new HistoryService(val, this.maxlength);\n }\n }\n redo() {\n const h = this.#history;\n if (!Utils.isNull(h)) {\n h.redo();\n this.log(LogLevel.Log, 'Redone state.');\n this._synchronize('redo');\n }\n }\n reset() {\n const h = this.#history;\n if (!Utils.isNull(h)) {\n h.reset();\n this.log(LogLevel.Log, 'Reset state.');\n this._synchronize('reset');\n }\n }\n undo() {\n const h = this.#history;\n if (!Utils.isNull(h)) {\n h.undo();\n this.log(LogLevel.Log, 'Undone state.');\n this._synchronize('undo');\n }\n }\n _synchronize(type) {\n const h = this.#history;\n this.canUndo = h.canUndo;\n this.canRedo = h.canRedo;\n this.state = h.current;\n const { canRedo, canUndo, current: state } = h;\n this.dispatchEvent(new StateEvent(type, { canRedo, canUndo, state }));\n }\n};\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Json })\n], PacemHistoryElement.prototype, \"state\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemHistoryElement.prototype, \"maxlength\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Boolean })\n], PacemHistoryElement.prototype, \"canUndo\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Boolean })\n], PacemHistoryElement.prototype, \"canRedo\", void 0);\nPacemHistoryElement = __decorate([\n CustomElement({ tagName: P + '-history' })\n], PacemHistoryElement);\nexport { PacemHistoryElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemHtmlProxyElement = class PacemHtmlProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._html = document.documentElement;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'attr' && old) {\n this._html.removeAttribute(old);\n }\n this._update();\n }\n _update() {\n const key = this.attr;\n if (Utils.isNullOrEmpty(key) || this.disabled) {\n // No key means do nothing\n return;\n }\n const value = this.value;\n const html = this._html;\n if (Utils.isNullOrEmpty(value)) {\n html.removeAttribute(key);\n }\n else {\n html.setAttribute(key, value);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHtmlProxyElement.prototype, \"attr\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHtmlProxyElement.prototype, \"value\", void 0);\nPacemHtmlProxyElement = __decorate([\n CustomElement({\n tagName: P + '-html-proxy'\n })\n], PacemHtmlProxyElement);\nexport { PacemHtmlProxyElement };\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 { CustomElement, P, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemIfElement = class PacemIfElement extends HTMLElement {\n #innerHTML;\n propertyChangedCallback(name, old, val, first) {\n // setup lazily\n if (Utils.isNullOrEmpty(this.#innerHTML)) {\n this.#innerHTML = this.innerHTML;\n }\n if (!val) {\n this.innerHTML = '';\n }\n else {\n this.innerHTML = this.#innerHTML;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemIfElement.prototype, \"match\", void 0);\nPacemIfElement = __decorate([\n CustomElement({ tagName: P + '-if' })\n], PacemIfElement);\nexport { PacemIfElement };\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, LogLevel } from './_default-imports';\nimport { PacemElement } from './types';\nimport { CustomElementUtils } from '../../utils-customelement';\nimport { CustomTypedEvent } from '../../events';\n//namespace Pacem.Components {\nexport class PacemItemElement extends PacemElement {\n get container() {\n return this._container;\n }\n /** @overridable */\n findContainer() {\n return CustomElementUtils.findAncestor(this, n => n instanceof PacemItemsContainerElement);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this._container = this.findContainer();\n if (!Utils.isNull(container)) {\n container.register(this);\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._container)) {\n this._container.unregister(this);\n }\n super.disconnectedCallback();\n }\n}\nexport function isItemsContainer(object) {\n return 'items' in object\n && (Utils.isNull(object.items) || Utils.isArray(object.items))\n && typeof object.register === 'function'\n && typeof object.unregister === 'function';\n}\nexport const ItemRegisterEventName = \"itemregister\";\nexport const ItemUnregisterEventName = \"itemunregister\";\nexport class ItemRegisterEvent extends CustomTypedEvent {\n constructor(item, eventInit) {\n super(ItemRegisterEventName, item, eventInit);\n }\n}\nexport class ItemUnregisterEvent extends CustomTypedEvent {\n constructor(item, eventInit) {\n super(ItemUnregisterEventName, item, eventInit);\n }\n}\nclass ItemsContainerRegistrar {\n constructor(_container) {\n this._container = _container;\n if (_container == null || !(_container instanceof PacemItemsContainerElement || _container instanceof PacemCrossItemsContainerElement)) {\n throw `Must provide a valid itemscontainer.`;\n }\n }\n register(item) {\n const container = this._container;\n var retval = false;\n if (!container.validate(item)) {\n container.logger && container.logger.log(LogLevel.Debug, `${(item && item.localName)} element couldn't be registered in a ${container.localName} element.`);\n }\n else {\n if (Utils.isNull(container.items)) {\n container.items = [item];\n retval = true;\n }\n else if (container.items.indexOf(item) === -1) {\n container.items.push(item);\n retval = true;\n }\n }\n if (retval) {\n container.dispatchEvent(new ItemRegisterEvent(item));\n }\n return retval;\n }\n unregister(item) {\n const container = this._container;\n if (!Utils.isNull(container.items)) {\n const ndx = container.items.indexOf(item);\n if (ndx >= 0) {\n let item = container.items.splice(ndx, 1);\n container.dispatchEvent(new ItemUnregisterEvent(item[0]));\n return true;\n }\n }\n return false;\n }\n}\n/** Element that can be used both as ItemElement and ItemsContainer. */\nexport class PacemCrossItemsContainerElement extends PacemItemElement {\n constructor(role, aria) {\n super(role, aria);\n this._registrar = new ItemsContainerRegistrar(this);\n }\n /**\n * Registers a new item among the items.\n * @param item {TItem} Item to be enrolled\n */\n register(item) {\n return this._registrar.register(item);\n }\n /**\n * Removes an existing element from the items.\n * @param item {TItem} Item to be removed\n */\n unregister(item) {\n return this._registrar.unregister(item);\n }\n}\n__decorate([\n Watch( /* can only be databound or assigned at runtime */)\n], PacemCrossItemsContainerElement.prototype, \"items\", void 0);\nexport class PacemItemsContainerElement extends PacemElement {\n constructor(role, aria) {\n super(role, aria);\n this._registrar = new ItemsContainerRegistrar(this);\n }\n /**\n * Registers a new item among the items.\n * @param item {TItem} Item to be enrolled\n */\n register(item) {\n return this._registrar.register(item);\n }\n /**\n * Removes an existing element from the items.\n * @param item {TItem} Item to be removed\n */\n unregister(item) {\n return this._registrar.unregister(item);\n }\n}\n__decorate([\n Watch( /* can only be databound or assigned at runtime */)\n], PacemItemsContainerElement.prototype, \"items\", void 0);\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 { Utils, Watch, PropertyConverters } from './_default-imports';\nimport { CustomElementUtils } from '../../utils-customelement';\nimport { PacemItemElement, PacemItemsContainerElement } from './items-container';\n//namespace Pacem.Components {\nexport class PacemIterableElement extends PacemItemElement {\n /** @overrides */\n findContainer() {\n return CustomElementUtils.findAncestor(this, n => n instanceof PacemIterativeElement);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n const iter = this.container;\n const index = (iter && iter.items || []).indexOf(this);\n index >= 0\n && iter\n && iter.adapter\n && iter.adapter.itemPropertyChangedCallback(index, name, old, val, first);\n }\n}\nexport class PacemIterativeElement extends PacemItemsContainerElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n // notify the adapter, if any.\n this.adapter && this.adapter.masterPropertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'adapter':\n if (!Utils.isNull(old)) {\n old.destroy();\n }\n if (!Utils.isNull(val)) {\n this.adapter.initialize(this);\n }\n break;\n case 'items':\n if (this.isReady /* connected and DOM-ready */) {\n this._checkIndex();\n }\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._checkIndex();\n }\n _checkIndex() {\n let ndx = 0;\n if (!Utils.isNullOrEmpty(this.items)) {\n if (this.index < this.items.length) {\n ndx = this.index;\n }\n }\n this.index = ndx;\n }\n disconnectedCallback() {\n if (!Utils.isNull(this.adapter))\n this.adapter.destroy();\n super.disconnectedCallback();\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemIterativeElement.prototype, \"adapter\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemIterativeElement.prototype, \"index\", void 0);\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { CustomElementUtils } from '../../utils-customelement';\n//namespace Pacem.Components {\nconst REMOVE_VALUE = 'false';\nconst EMPTY_VALUE = 'true';\nlet PacemLayoutProxyElement = class PacemLayoutProxyElement extends PacemEventTarget {\n #shell;\n connectedCallback() {\n super.connectedCallback();\n this.#shell = CustomElementUtils.findAncestorShell(this);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n this._update();\n }\n disconnectedCallback() {\n const attr = this.attr;\n if (!Utils.isNullOrEmpty(attr)) {\n this._update(attr, REMOVE_VALUE, false);\n }\n super.disconnectedCallback();\n }\n _update(key = this.attr, value = this.value?.toString(), disabled = this.disabled) {\n if (Utils.isNullOrEmpty(key) || disabled) {\n // No key means do nothing\n return;\n }\n const layout = this.#shell;\n if (!Utils.isNull(layout)) {\n if (Utils.isNullOrEmpty(value) || value === REMOVE_VALUE) {\n layout.removeAttribute(key);\n }\n else {\n layout.setAttribute(key, value === EMPTY_VALUE ? '' : value);\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemLayoutProxyElement.prototype, \"attr\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemLayoutProxyElement.prototype, \"value\", void 0);\nPacemLayoutProxyElement = __decorate([\n CustomElement({\n tagName: P + '-layout-proxy'\n })\n], PacemLayoutProxyElement);\nexport { PacemLayoutProxyElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { Debounce } from '../../decorators';\n//namespace Pacem.Components {\nlet PacemMetaProxyElement = class PacemMetaProxyElement extends PacemEventTarget {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n this._update();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._update();\n }\n _update() {\n const value = this.content;\n const nameBased = !Utils.isNullOrEmpty(this.name);\n const key = nameBased ? this.name : this.itemprop;\n if (Utils.isNullOrEmpty(key) || this.disabled) {\n // No key means do nothing\n return;\n }\n const escapedKey = Utils.cssEscape(key);\n const query = nameBased ? `meta[name='${escapedKey}']` : `meta[itemprop='${escapedKey}']`;\n var meta = document.head.querySelector(query);\n if (Utils.isNull(meta)) {\n meta = document.createElement('meta');\n document.head.appendChild(meta);\n }\n else if (Utils.isNullOrEmpty(value)) {\n // Empty `content` means \"remove the element\".\n meta.remove();\n return;\n }\n // set\n meta.setAttribute(\"content\", value);\n meta.setAttribute(nameBased ? \"name\" : \"itemprop\", key);\n meta.removeAttribute(nameBased ? \"itemprop\" : \"name\");\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMetaProxyElement.prototype, \"name\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMetaProxyElement.prototype, \"itemprop\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMetaProxyElement.prototype, \"content\", void 0);\n__decorate([\n Debounce(true)\n], PacemMetaProxyElement.prototype, \"_update\", null);\nPacemMetaProxyElement = __decorate([\n CustomElement({\n tagName: P + '-meta-proxy'\n })\n], PacemMetaProxyElement);\nexport { PacemMetaProxyElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemOnlineStatusElement = class PacemOnlineStatusElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._onlineHandler = (evt) => {\n if (!Utils.isNull(evt)) {\n this.online = evt.type === 'online';\n }\n else {\n this.online = navigator.onLine || false;\n }\n };\n }\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('online', this._onlineHandler, false);\n window.addEventListener('offline', this._onlineHandler, false);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._onlineHandler();\n }\n disconnectedCallback() {\n window.removeEventListener('online', this._onlineHandler, false);\n window.removeEventListener('offline', this._onlineHandler, false);\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemOnlineStatusElement.prototype, \"online\", void 0);\nPacemOnlineStatusElement = __decorate([\n CustomElement({ tagName: P + '-online-status' })\n], PacemOnlineStatusElement);\nexport { PacemOnlineStatusElement };\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 { CustomElement, P } from './_default-imports';\nimport { PacemSafeContentElement } from './types';\n//namespace Pacem.Components {\nlet PacemPanelElement = class PacemPanelElement extends PacemSafeContentElement {\n};\nPacemPanelElement = __decorate([\n CustomElement({ tagName: P + '-panel' })\n], PacemPanelElement);\nexport { PacemPanelElement };\n//}\n","/// <reference path=\"events.ts\" />\nimport { CustomTypedEvent } from './events';\n//namespace Pacem {\nexport const CommandEventName = 'command';\nexport class CommandEvent extends CustomTypedEvent {\n constructor(args) {\n super(CommandEventName, args, { bubbles: true, cancelable: true });\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 { CustomElement, P, Watch, PropertyConverters } from './_default-imports';\nimport { TemplateElement } from '../../template';\n//namespace Pacem.Components {\nlet PacemTemplateProxyElement = class PacemTemplateProxyElement extends /*PacemEventTarget*/ /*PacemEventTarget*/ TemplateElement {\n propertyChangedCallback(name, old, val, first) {\n // super.propertyChangedCallback(name, old, val, first);\n if (name === 'target') {\n this.dispatchEvent(new Event('templatechange'));\n }\n }\n addEventListener(type, listener, options) {\n super.addEventListener(type, listener, options);\n }\n removeEventListener(type, listener, options) {\n super.removeEventListener(type, listener, options);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemTemplateProxyElement.prototype, \"target\", void 0);\nPacemTemplateProxyElement = __decorate([\n CustomElement({ tagName: P + '-template-proxy' })\n], PacemTemplateProxyElement);\nexport { PacemTemplateProxyElement };\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};\nvar PacemRepeaterElement_1;\nimport { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils, LogLevel } from './_default-imports';\nimport { CustomElementUtils, RepeaterItem as RepeaterItemBase } from '../../utils-customelement';\nimport { CustomTypedEvent, PropertyChangeEvent } from '../../events';\nimport { INSTANCE_HOST_VAR } from '../../types';\nimport { CommandEventName } from '../../command';\nimport { RepeaterItemCreateEvent, RepeaterItemRemoveEvent } from './types';\nimport { PacemTemplateProxyElement } from './template-proxy';\n//namespace Pacem.Components {\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nclass ItemEvent extends CustomTypedEvent {\n constructor(type, args, _originalEvent) {\n super(type, args, { bubbles: false, cancelable: true });\n this._originalEvent = _originalEvent;\n }\n /** Gets the bubbling item's Event. */\n get srcEvent() {\n return this._originalEvent;\n }\n}\nexport class ItemCommandEvent extends ItemEvent {\n constructor(evt) {\n super(\"item\" + CommandEventName, evt.detail, evt);\n }\n}\nexport class CustomItemCommandEvent extends ItemEvent {\n constructor(evt) {\n super(\"item\" + evt.detail.commandName.toLowerCase(), evt.detail.commandArgument, evt);\n }\n}\n//\n/**\n * <pacem-repeater datasource=\"[{id:'first', items:['a','b','c']}, ...]\">\n * <ol>\n * <li>\n * <template>\n * <pacem-repeater datasource={{ ^item.items }}>\n * <template>\n * <pacem-span text=\"{{ ^^item.id+': ': ^item.toUpperCase() }}\"></pacem-span>\n * </template>\n * </pacem-repeater>\n * </template>\n * </li>\n * </ol>\n * </pacem-repeater>\n */\nlet PacemRepeaterElement = PacemRepeaterElement_1 = class PacemRepeaterElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._childItems = [];\n this._fragment = document.createDocumentFragment();\n this._setupItem = (item, index, entity) => {\n // FIRST set index on PacemRepeaterItemElement...\n item.index = index;\n // ...THEN the item entity itself.\n item.item = entity;\n };\n this._refreshItemTemplateHandler = (evt) => {\n const proxy = evt.target;\n this._itemTemplate = proxy.target;\n this._databind();\n };\n }\n removeItem(index) {\n this._removeItems(index, index);\n }\n _setItem(item, index, frag) {\n const items = this._childItems;\n let _item;\n if (index >= items.length) {\n _item = new RepeaterItem(this, this._itemTemplate, frag, this._childTemplatePlaceholder);\n this._setupItem(_item, index, item);\n items.push(_item);\n _item.append();\n }\n else {\n _item = items[index];\n this._setupItem(_item, index, item);\n _item.redrawEventually(this._itemTemplate, frag);\n }\n this.dispatchEvent(new RepeaterItemCreateEvent(_item));\n }\n _removeItems(fromIndex, toIndex) {\n const items = this._childItems;\n let exceeding = items.splice(fromIndex, toIndex + 1 - fromIndex);\n for (var i = exceeding.length - 1; i >= 0; i--) {\n let item = exceeding[i];\n this.dispatchEvent(new RepeaterItemRemoveEvent(item));\n item.remove();\n }\n }\n databind() {\n this._databind();\n }\n // @Debounce(true)\n _databind(datasource = this.datasource) {\n // not connected to the DOM? exit\n if (!this.isConnected) {\n return;\n }\n // no template? fail.\n let tmpl = this._itemTemplate, holder = this._childTemplatePlaceholder;\n if (tmpl == null) {\n throw `Missing template element in ${PacemRepeaterElement_1.name}.`;\n }\n // fill up\n let items = this._childItems, index = 0;\n try {\n for (var entity of datasource || []) {\n this._setItem(entity, index, this._fragment);\n index++;\n }\n }\n catch (e) {\n this.log(LogLevel.Error, e);\n }\n if (index < items.length) {\n this._removeItems(index, items.length - 1);\n }\n else if (!Utils.isNull(holder && holder.parentNode)) {\n // flush added items\n holder.parentNode.insertBefore(this._fragment, holder);\n }\n }\n _onCommand(evt) {\n // DO NOT stop bubbling! Might be 'handy' in autogenerated forms...\n // Pacem.stopPropagationHandler(evt);\n // ...But might lead to unwanted behaviors in nested repeaters.\n // Thus include the 'originalEvent' in the outscoped one as a read-only property.\n // 'itemcommand' event fires first\n this.dispatchEvent(new ItemCommandEvent(/* 'originalEvent' */ evt));\n // custom 'item<cmd>' event fires next\n this.dispatchEvent(new CustomItemCommandEvent(/* 'originalEvent' */ evt));\n }\n _buildupItemTemplate() {\n let tmpl = CustomElementUtils.findFirstDescendant(this, n => n instanceof HTMLTemplateElement || n instanceof PacemTemplateProxyElement);\n if (tmpl instanceof PacemTemplateProxyElement) {\n tmpl.addEventListener('templatechange', this._refreshItemTemplateHandler, false);\n this._childTemplatePlaceholder = tmpl;\n return this._itemTemplate = tmpl.target;\n }\n else {\n return this._itemTemplate = this._childTemplatePlaceholder = tmpl;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.addEventListener(CommandEventName, this._onCommand, false);\n if (this._buildupItemTemplate()) {\n this._databind();\n }\n }\n disconnectedCallback() {\n const oldPlaceholder = this._childTemplatePlaceholder;\n if (!Utils.isNull(oldPlaceholder) && oldPlaceholder instanceof PacemTemplateProxyElement) {\n oldPlaceholder.removeEventListener('templatechange', this._refreshItemTemplateHandler, false);\n }\n this.removeEventListener(CommandEventName, this._onCommand, false);\n this.datasource = [];\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n if (!Utils.isNull(this._itemTemplate)) {\n this._databind(val);\n }\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Eval })\n], PacemRepeaterElement.prototype, \"datasource\", void 0);\nPacemRepeaterElement = PacemRepeaterElement_1 = __decorate([\n CustomElement({ tagName: P + '-repeater' })\n], PacemRepeaterElement);\nexport { PacemRepeaterElement };\nexport class RepeaterItem extends RepeaterItemBase {\n constructor(_repeater, _template, _fragment, _holder) {\n super(document.createComment('pacem-repeater-item'));\n this._repeater = _repeater;\n this._template = _template;\n this._fragment = _fragment;\n this._holder = _holder;\n this._alterEgos = [];\n const FIELD_PREFIX = '_';\n function _setScopeValue(name, v) {\n var owner = this, fieldName = FIELD_PREFIX + name;\n if (v !== owner[fieldName]) {\n var old = owner[fieldName];\n owner[fieldName] = v;\n var evt = new PropertyChangeEvent({ propertyName: name, oldValue: old, currentValue: v });\n owner.dispatchEvent(evt);\n }\n }\n // placeholder on roids:\n let placeholder = this.placeholder;\n Object.defineProperties(placeholder, {\n 'item': {\n get: function () {\n return this[FIELD_PREFIX + 'item'];\n },\n set: function (v) {\n _setScopeValue.apply(placeholder, ['item', v]);\n }, configurable: true\n },\n 'index': {\n get: function () {\n const val = this[FIELD_PREFIX + 'index'];\n return Utils.isNull(val) ? -1 : val;\n },\n set: function (v) {\n _setScopeValue.apply(placeholder, ['index', v]);\n }, configurable: true\n }\n });\n }\n /** @internal */\n append() {\n const tmplRef = this._template, tmplParent = this._fragment;\n this._alterEgos.push(tmplParent.appendChild(this.placeholder));\n const clonedTmpl = tmplRef.cloneNode(true);\n var host;\n if (!Utils.isNull(host = GET_VAL(this._repeater, INSTANCE_HOST_VAR))) {\n CustomElementUtils.assignHostContext(host, clonedTmpl);\n }\n var dom = clonedTmpl.content. /*children*/childNodes;\n Array.prototype.push.apply(this._alterEgos, dom);\n tmplParent.appendChild(clonedTmpl.content);\n }\n /** @internal */\n redrawEventually(tmpl, frag) {\n if (tmpl === this._template) {\n return;\n }\n this._fragment = frag;\n this._template = tmpl;\n const tmplParent = this._holder.parentElement, dom = this._alterEgos;\n while (dom.length > 0) {\n tmplParent.removeChild(dom.pop());\n }\n this.append();\n }\n get dom() {\n return this._alterEgos.filter(n => !(n instanceof Comment || n instanceof Text));\n }\n get repeater() {\n return this._repeater;\n }\n /** @internal */\n remove() {\n let tmplParent = this._holder.parentElement;\n for (var alterEgo of this._alterEgos) {\n if (alterEgo.parentElement === tmplParent && !Utils.isNull(tmplParent)) {\n tmplParent.removeChild(alterEgo);\n }\n }\n }\n get index() {\n return this.placeholder['index'];\n }\n set index(v) {\n this.placeholder['index'] = v;\n }\n get item() {\n return this.placeholder['item'];\n }\n set item(v) {\n this.placeholder['item'] = v;\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils, LogLevel } from './_default-imports';\nimport { CustomTypedEvent } from '../../events';\n//namespace Pacem.Components {\nexport const ResizeEventName = 'resize';\nexport class ResizeEvent extends CustomTypedEvent {\n constructor(args) {\n super(ResizeEventName, args);\n }\n}\nconst BORDER_BOX = { box: 'border-box' };\nlet PacemResizeElement = class PacemResizeElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._checkSizeHandler = () => {\n this._assignSizeDebounced();\n };\n }\n get _target() {\n return this.target || this;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'disabled':\n this._start();\n break;\n case 'target':\n if (!Utils.isNull(this._observer)) {\n var oldTarget = old || this;\n this._observer.unobserve(oldTarget);\n }\n case 'watchPosition':\n var newTarget = this.target || this;\n if (!Utils.isNull(this._observer)) {\n this._observer.observe(newTarget, BORDER_BOX);\n }\n break;\n }\n }\n _start() {\n // disabled? switch to stop\n if (this.disabled) {\n this._stop();\n return;\n }\n if (this.watchPosition) {\n this._startWatchIntensively();\n }\n else {\n // native ResizeObserver\n this._observer = new ResizeObserver(entries => {\n var changed = false;\n for (let entry of entries) {\n if (entry.target !== this._target) {\n continue;\n }\n if (entry.contentRect) {\n changed = true;\n break;\n }\n }\n if (changed) {\n // ResizeObserverEntry pieces of info aren't accurate,\n // but useful enough to let punctually debounce\n // the expensive request\n this._assignSizeDebounced();\n }\n });\n this._observer.observe(this._target, BORDER_BOX);\n }\n window.addEventListener('resize', this._checkSizeHandler, false);\n }\n _stop() {\n window.cancelAnimationFrame(this._handle);\n window.removeEventListener('resize', this._checkSizeHandler, false);\n if (!Utils.isNull(this._observer)) {\n this._observer.disconnect();\n this._observer = null;\n }\n }\n _startWatchIntensively() {\n this._checkSize();\n this._handle = window.requestAnimationFrame(() => {\n this._startWatchIntensively();\n });\n }\n //@Throttle(true)\n _assignSizeDebounced() {\n this._checkSize();\n }\n _checkSize() {\n this.log(LogLevel.Log, 'Resize flow triggered.');\n let el = this._target;\n const rect = Utils.offset(el);\n let height = rect.height;\n let width = rect.width;\n if (height != this._previousHeight\n || width != this._previousWidth\n || (this.watchPosition &&\n (rect.left != this._previousLeft\n || rect.top != this._previousTop))) {\n this._previousHeight = height;\n this._previousWidth = width;\n this._previousLeft = rect.left;\n this._previousTop = rect.top;\n this._dispatchResize();\n }\n }\n get currentSize() {\n var args = { height: this._previousHeight, width: this._previousWidth };\n if (this.watchPosition) {\n args.left = this._previousLeft;\n args.top = this._previousTop;\n }\n return args;\n }\n _dispatchResize() {\n this.dispatchEvent(new ResizeEvent(this.currentSize));\n }\n connectedCallback() {\n super.connectedCallback();\n this._start();\n }\n disconnectedCallback() {\n this._stop();\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemResizeElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemResizeElement.prototype, \"watchPosition\", void 0);\nPacemResizeElement = __decorate([\n CustomElement({ tagName: P + '-resize' })\n], PacemResizeElement);\nexport { PacemResizeElement };\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 { CustomElement, PacemEventTarget, Watch, P, PropertyConverters, Utils } from './_default-imports';\nimport { CustomTypedEvent } from '../../events';\n//namespace Pacem {\nexport const RouterNavigatingEventName = 'navigating';\nexport const RouterNavigateEventName = 'navigate';\nexport class RouterNavigateEvent extends CustomTypedEvent {\n constructor(path) {\n super(RouterNavigateEventName, typeof path === 'string' ? { path } : path, { cancelable: false, bubbles: false });\n }\n}\nexport class RouterNavigatingEvent extends CustomTypedEvent {\n constructor(path) {\n super(RouterNavigatingEventName, path, { cancelable: true, bubbles: false });\n }\n}\n//}\n//namespace Pacem.Components {\nconst CHECK_PATTERN = /^([\\w\\.]:)?\\/\\/[^\\/]+/;\nlet PacemRouterElement = class PacemRouterElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._onPopState = (evt) => {\n if (!Utils.isNull(evt.state) && !this.#cancelingNavigation) {\n this.path = evt.state.$path;\n }\n };\n }\n #cancelingNavigation;\n #template;\n parseState(state = {}) {\n const path = this._stringifyMergedState(state);\n const segments = this._segmentateUrl(path);\n return this._parseState(segments.path + segments.query + segments.hash, segments.path, segments.query, segments.hash);\n }\n navigate(path, title) {\n if (this.disabled || Utils.isNullOrEmpty(path)) {\n return;\n }\n if (typeof path === 'object') {\n path = this._stringifyMergedState(path);\n }\n else {\n // ease state reutilization\n path = Utils.URIs.format(path, this.state);\n }\n if (path != this.path) {\n this.path = path;\n return;\n }\n const l = document.location;\n if (CHECK_PATTERN.test(path)) {\n if (!path.startsWith(l.protocol + '//' + l.host)) {\n throw `Only same-origin navigation is currently supported. \"${path}\" is not a valid path.`;\n }\n }\n if (!this.#cancelingNavigation) {\n // coming from path...\n const from = this.state && this.state.$path || void 0;\n // processing new segments and state\n const segments = this._segmentateUrl(path), state = this._parseState(segments.path + segments.query + segments.hash, segments.path, segments.query, segments.hash);\n // popping state? aka history.back()/.forward()/.go(...)?\n // means that the URL is already in the target fashion\n const poppingState = (l.pathname + l.search + l.hash) === segments.path + segments.query + segments.hash;\n const evt = new RouterNavigatingEvent(path);\n window.dispatchEvent(evt);\n if (this.#cancelingNavigation = evt.defaultPrevented) {\n // this will cut the history stack, no better option tho...\n if (poppingState) {\n // re-push current state\n window.history.pushState(this.state, title, from);\n }\n this.path = from;\n // exiting\n return;\n }\n // this one actually does trigger the navigation in the outer world\n this.state = state;\n if (poppingState) {\n window.history.scrollRestoration = 'manual';\n window.history.replaceState(state, title);\n }\n else {\n window.history.pushState(state, title, path);\n }\n if (!Utils.isNullOrEmpty(title)) {\n document.title = title;\n }\n window.dispatchEvent(new RouterNavigateEvent({ path, referrer: from, title }));\n }\n this.#cancelingNavigation = false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'template':\n this.#template = null;\n break;\n case 'path':\n this.navigate(val);\n break;\n }\n }\n }\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('popstate', this._onPopState, false);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const p = this.path;\n if (!Utils.isNullOrEmpty(p)) {\n this.navigate(p);\n }\n }\n disconnectedCallback() {\n window.removeEventListener('popstate', this._onPopState, false);\n super.disconnectedCallback();\n }\n /**\n * Merged to provided state into the current one and returns the resulting path (including current querystring and hash).\n * @param state Piece of new state to be merged\n */\n _stringifyMergedState(state) {\n const stateCopy = Utils.extend({}, state);\n const newState = Utils.extend({}, this.state, stateCopy);\n const tmpl = this.template;\n let retval = '' + tmpl;\n for (let item of this._parseTemplate(tmpl)) {\n const prop = item.name;\n const pattern = new RegExp(\"\\/\\{\" + prop + \"\\\\??\\}\");\n const value = newState[prop];\n delete stateCopy[prop];\n retval = retval.replace(pattern, Utils.isNullOrEmpty(value) ? '' : ('/' + value));\n }\n // leftovers appended as query parameters\n const q = Utils.extend({}, this.state.$query);\n for (let prop in stateCopy) {\n q[prop] = stateCopy[prop];\n }\n const { hash } = this._segmentateUrl(this.path);\n return Utils.URIs.appendQuery(retval, q, true) + hash;\n }\n _parseTemplate(tmpl = this.template) {\n if (!Utils.isNullOrEmpty(this.#template)) {\n return this.#template;\n }\n return this.#template = Utils.URIs.parseRoute(tmpl);\n }\n _segmentateUrl(url) {\n const retval = Utils.URIs.split(url);\n if (Utils.isNullOrEmpty(retval.path)) {\n return null;\n }\n return retval;\n }\n _parseState(fullPath, path, query, hash) {\n const tmpl = this._parseTemplate();\n return Utils.URIs.parseState(tmpl, fullPath, path, query, hash);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemRouterElement.prototype, \"template\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemRouterElement.prototype, \"state\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemRouterElement.prototype, \"path\", void 0);\nPacemRouterElement = __decorate([\n CustomElement({ tagName: P + '-router' })\n], PacemRouterElement);\nexport { PacemRouterElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { CustomTypedEvent } from '../../events';\n//namespace Pacem.Components {\nexport const ScrollEventName = 'scroll';\nexport class ScrollEvent extends CustomTypedEvent {\n constructor(args) {\n super(ScrollEventName, args);\n }\n}\n// see also viewport-aware\nclass PacemScrollOrchestrator {\n constructor(global) {\n this.global = global;\n this.scrollers = [];\n this.scrollHandler = (evt) => {\n this._scroll(evt);\n };\n }\n register(vport) {\n const scrlls = this.scrollers;\n if (scrlls.indexOf(vport) === -1) {\n scrlls.push(vport);\n if (scrlls.length === 1) {\n this.global.addEventListener('scroll', this.scrollHandler, false);\n }\n this._scroll();\n }\n }\n unregister(vport) {\n var ndx;\n const scrlls = this.scrollers;\n if ((ndx = scrlls.indexOf(vport)) !== -1) {\n scrlls.splice(ndx, 1);\n if (scrlls.length === 0) {\n this.global.removeEventListener('scroll', this.scrollHandler, false);\n }\n }\n }\n _scroll(_) {\n for (var scroller of this.scrollers) {\n if (Utils.isNull(scroller.target)) {\n const top = Utils.scrollTop, left = Utils.scrollLeft;\n scroller.offset = { top, left };\n }\n else {\n const top = scroller.target.scrollTop, left = scroller.target.scrollLeft;\n scroller.offset = { top, left };\n }\n scroller.dispatchEvent(new ScrollEvent(scroller.offset));\n }\n }\n}\nconst ORCHESTRATOR = new PacemScrollOrchestrator(window);\n/**\n * Manages scrolling interactions firing self-referenced ad-hoc events.\n */\nlet PacemScrollAwareElement = class PacemScrollAwareElement extends PacemEventTarget {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n //\n ORCHESTRATOR.register(this);\n }\n disconnectedCallback() {\n ORCHESTRATOR.unregister(this);\n //\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemScrollAwareElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemScrollAwareElement.prototype, \"offset\", void 0);\nPacemScrollAwareElement = __decorate([\n CustomElement({\n tagName: P + '-scroll-aware'\n })\n], PacemScrollAwareElement);\nexport { PacemScrollAwareElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nfunction base64ToUint8Array(base64) {\n const padding = '='.repeat((4 - base64.length % 4) % 4);\n base64 = (base64 + /*ensure correct length*/ padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n const rawData = window.atob(base64);\n const output = new Uint8Array(rawData.length);\n for (var i = 0; i < rawData.length; i++) {\n output[i] = rawData.charCodeAt(i);\n }\n return output;\n}\nlet PacemServiceWorkerProxyElement = class PacemServiceWorkerProxyElement extends PacemEventTarget {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._tryRegister();\n }\n disconnectedCallback() {\n this._tryUnregister();\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'pushSubscription':\n if (!Utils.isNull(old)) {\n this.dispatchEvent(new CustomEvent('unsubscribe', { detail: old }));\n }\n if (!Utils.isNull(val)) {\n this.dispatchEvent(new CustomEvent('subscribe', { detail: val }));\n }\n break;\n case 'registration':\n if (!Utils.isNull(old)) {\n this.dispatchEvent(new CustomEvent('unregister', { detail: old }));\n }\n if (!Utils.isNull(val)) {\n this.dispatchEvent(new CustomEvent('register', { detail: val }));\n }\n break;\n }\n }\n _tryUnregister(reg = this.registration) {\n if (!Utils.isNull(reg)) {\n return reg.unregister();\n }\n return Promise.resolve(true);\n }\n _tryRegister(src = this.src) {\n this._tryUnregister().then(_ => {\n // register new sw\n if (!Utils.isNullOrEmpty(src) && 'serviceWorker' in navigator) {\n navigator.serviceWorker.register(src)\n .then(reg => {\n this.registration = reg;\n if ('PushManager' in window) {\n reg.pushManager.getSubscription().then(sub => {\n this.pushSubscription = sub;\n });\n }\n });\n }\n });\n }\n unsubscribe(subscription = this.pushSubscription) {\n return new Promise((resolve, reject) => {\n if (!Utils.isNull(subscription)) {\n const refresh = subscription === this.pushSubscription;\n subscription.unsubscribe().then(result => {\n if (refresh) {\n // triggers 'unsubscribe' event\n this.pushSubscription = null;\n }\n resolve(result);\n });\n }\n else {\n resolve(false);\n }\n });\n }\n subscribe(publicKey = this.publicKey) {\n return new Promise((resolve, reject) => {\n if (typeof publicKey === 'string') {\n publicKey = base64ToUint8Array(publicKey);\n }\n const push = this.registration?.pushManager;\n if (!Utils.isNull(push)) {\n push.subscribe({\n userVisibleOnly: true,\n applicationServerKey: publicKey\n }).then(subscription => {\n if (Notification.permission === 'denied') {\n resolve(this.pushSubscription = null);\n }\n else {\n resolve(/* triggers 'subscribe' event */ this.pushSubscription = subscription);\n }\n });\n }\n else {\n // no PushManager available\n resolve(null);\n }\n });\n }\n};\n__decorate([\n Watch()\n], PacemServiceWorkerProxyElement.prototype, \"registration\", void 0);\n__decorate([\n Watch()\n], PacemServiceWorkerProxyElement.prototype, \"pushSubscription\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemServiceWorkerProxyElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemServiceWorkerProxyElement.prototype, \"publicKey\", void 0);\nPacemServiceWorkerProxyElement = __decorate([\n CustomElement({ tagName: P + '-serviceworker-proxy' })\n], PacemServiceWorkerProxyElement);\nexport { PacemServiceWorkerProxyElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { avoidHandler } from '../../utils';\nimport { CustomEventUtils } from '../../utils-customevent';\n//namespace Pacem.Components {\nconst KEYEVT = \"keydown\";\nfunction matchesKeyCombination(evt, combo, accumulator = []) {\n if (Utils.isNullOrEmpty(combo)) {\n return false;\n }\n const modifierPattern = /(\\w+)\\s*\\+/;\n const modifiers = [];\n let regExc;\n while (!Utils.isNullOrEmpty(regExc = modifierPattern.exec(combo))) {\n combo = combo.substr(regExc.index + regExc[0].length);\n modifiers.push(regExc[1]);\n }\n if (!CustomEventUtils.matchModifiers(evt, modifiers)) {\n return false;\n }\n const pieces = combo.split(',').map(p => p.trim().toLowerCase());\n if (Utils.isNullOrEmpty(pieces)) {\n // bad combination format\n return false;\n }\n var char = evt.key.toLowerCase();\n if (charEquals(char, pieces[accumulator.length])) {\n accumulator.push(char);\n return accumulator.length == pieces.length ? true : \"ongoing\";\n }\n return false;\n}\nfunction charEquals(key, piece) {\n return key === piece\n // adjust some aliases\n || (key === \"escape\" && piece === \"esc\")\n || (key === \"backspace\" && piece === \"back\")\n || (key === \"control\" && piece === \"ctrl\")\n || (key === \"delete\" && (piece === \"del\" || piece === \"canc\"))\n || (/^arrow/.test(key) && (piece === key.substr(5)));\n}\nexport const KeyboardShortcutExecuteEventName = \"execute\";\nlet PacemShortcutElement = class PacemShortcutElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._accumulator = [];\n this._shortcutHandler = (evt) => {\n const result = (matchesKeyCombination(evt, this.combination, this._accumulator));\n switch (result) {\n case true:\n avoidHandler(evt);\n this.dispatchEvent(new Event(KeyboardShortcutExecuteEventName, { bubbles: false, cancelable: false }));\n // let flow below...\n case false:\n this._accumulator.splice(0);\n break;\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._addHandler();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'target' && !first) {\n this._removeHandler(old);\n this._addHandler(val);\n }\n }\n disconnectedCallback() {\n this._removeHandler();\n super.disconnectedCallback();\n }\n _removeHandler(target = this.target) {\n (target || window).removeEventListener(KEYEVT, this._shortcutHandler, false);\n }\n _addHandler(target = this.target) {\n (target || window).addEventListener(KEYEVT, this._shortcutHandler, false);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemShortcutElement.prototype, \"combination\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemShortcutElement.prototype, \"target\", void 0);\nPacemShortcutElement = __decorate([\n CustomElement({ tagName: P + '-shortcut' })\n], PacemShortcutElement);\nexport { PacemShortcutElement };\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 { CustomElement, P, Watch, PropertyConverters, Utils } from './_default-imports';\nimport { PacemSafeContentElement } from './types';\n//namespace Pacem.Components {\nlet PacemSpanElement = class PacemSpanElement extends PacemSafeContentElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'text' && !first) {\n this.textContent = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (!Utils.isNull(this.text)) {\n this.textContent = this.text;\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSpanElement.prototype, \"text\", void 0);\nPacemSpanElement = __decorate([\n CustomElement({ tagName: P + '-span' })\n], PacemSpanElement);\nexport { PacemSpanElement };\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 { CustomElement, P, Watch, PropertyConverters, Utils, PacemEventTarget } from './_default-imports';\nimport { CustomElementUtils } from '../../utils-customelement';\n//namespace Pacem.Components {\nlet PacemStyleProxyElement = class PacemStyleProxyElement extends PacemEventTarget {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'cssText':\n if (!Utils.isNull(this._style)) {\n this.cssReady = false;\n this._style.textContent = val;\n if (Utils.isNullOrEmpty(val)) {\n this.cssReady = true;\n }\n else {\n this._idleWhileReady();\n }\n }\n break;\n case 'disabled':\n case 'src':\n this._fetch();\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const style = this._style = document.createElement('style');\n style.setAttribute('type', 'text/css');\n document.head.appendChild(style);\n this._fetch();\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._style)) {\n this._style.remove();\n }\n super.disconnectedCallback();\n }\n _idleWhileReady() {\n let css = this._style.sheet;\n let fn = () => {\n try {\n if (css.cssRules.length > 0) {\n clearInterval(handle);\n CustomElementUtils.Theme.importWebFonts().then(_ => {\n this.cssReady = true;\n this.dispatchEvent(new Event('cssready'));\n });\n }\n }\n catch (e) { }\n };\n let handle = setInterval(fn, 100);\n }\n _fetch() {\n const src = this.src, style = this._style;\n if (this.disabled || Utils.isNull(style)) {\n return;\n }\n if (Utils.isNullOrEmpty(src)) {\n style.textContent = this.cssText || '';\n }\n else {\n // fetching\n this.cssReady = false;\n fetch(src).then(resp => {\n resp.text().then(css => {\n style.textContent = css;\n this._idleWhileReady();\n }, _ => {\n // error\n this.cssReady = true;\n });\n }, _ => {\n // error\n this.cssReady = true;\n });\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemStyleProxyElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemStyleProxyElement.prototype, \"cssText\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemStyleProxyElement.prototype, \"cssReady\", void 0);\nPacemStyleProxyElement = __decorate([\n CustomElement({\n tagName: P + '-style-proxy'\n })\n], PacemStyleProxyElement);\nexport { PacemStyleProxyElement };\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 { CustomElement, P, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemTextElement = class PacemTextElement extends HTMLElement {\n constructor() {\n super();\n }\n connectedCallback() {\n if (this.childNodes.length == 0) {\n this.innerHTML = ' ';\n }\n this._text = this.childNodes.item(0);\n }\n propertyChangedCallback(name, old, val, first) {\n if (Utils.isNull(val) && first === true)\n return;\n this._text.nodeValue = val;\n }\n};\n__decorate([\n Watch({ emit: false /*, debounce: true*/, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"text\", void 0);\nPacemTextElement = __decorate([\n CustomElement({ tagName: P + '-text' })\n], PacemTextElement);\nexport { PacemTextElement };\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 { CustomElement, P, Watch, PropertyConverters, PacemEventTarget } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemTimerElement = class PacemTimerElement extends PacemEventTarget {\n constructor() {\n super();\n this._handle = 0;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'interval':\n case 'disabled':\n this._restart();\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._restart();\n }\n disconnectedCallback() {\n window.clearInterval(this._handle);\n super.disconnectedCallback();\n }\n _restart() {\n clearInterval(this._handle);\n if (!this.disabled && this.interval > 0) {\n this._handle = window.setInterval(() => {\n this.dispatchEvent(new Event(\"tick\", { bubbles: false, cancelable: false }));\n }, this.interval);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTimerElement.prototype, \"interval\", void 0);\nPacemTimerElement = __decorate([\n CustomElement({ tagName: P + '-timer' })\n], PacemTimerElement);\nexport { PacemTimerElement };\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 { CustomElement, P, Watch, PropertyConverters, PacemEventTarget, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemTitleProxyElement = class PacemTitleProxyElement extends PacemEventTarget {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n this._update();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._update();\n }\n _update() {\n const value = this.value;\n if (Utils.isNullOrEmpty(value) || this.disabled) {\n // No key means do nothing\n return;\n }\n document.title = value;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTitleProxyElement.prototype, \"value\", void 0);\nPacemTitleProxyElement = __decorate([\n CustomElement({\n tagName: P + '-title-proxy'\n })\n], PacemTitleProxyElement);\nexport { PacemTitleProxyElement };\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 { CustomElement, P, Watch, PropertyConverters, PacemEventTarget, LogLevel } from './_default-imports';\nimport { TweenService } from '../../animations/tween-service';\nimport { AnimationEvent as PacemAnimationEvent, AnimationStartEvent, AnimationEndEvent } from '../../animations/events';\n//namespace Pacem.Components {\nlet PacemTweenElement = class PacemTweenElement extends PacemEventTarget {\n constructor(_tweener = new TweenService()) {\n super();\n this._tweener = _tweener;\n this.duration = 1000;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'start') {\n if (val === true && this.disabled != true)\n this._animate();\n }\n }\n run() {\n return this._animate();\n }\n _animate() {\n var started = false;\n return this._tweener.run(this.from, this.to, this.duration, this.delay, this.easing, (time, value) => {\n started = started == false && this.dispatchEvent(new AnimationStartEvent());\n this.dispatchEvent(new PacemAnimationEvent({ time: time, value: this.value = value }));\n this.log(LogLevel.Info, 'value: ' + this.value);\n if (time == 1.0) {\n this.dispatchEvent(new AnimationEndEvent());\n // reset start property\n this.start = false; // <- will trigger the animation the next time that will be set to true\n }\n });\n }\n};\n__decorate([\n Watch({ emit: false })\n], PacemTweenElement.prototype, \"easing\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemTweenElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemTweenElement.prototype, \"to\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTweenElement.prototype, \"duration\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTweenElement.prototype, \"delay\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemTweenElement.prototype, \"start\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTweenElement.prototype, \"value\", void 0);\nPacemTweenElement = __decorate([\n CustomElement({ tagName: P + '-tween' })\n], PacemTweenElement);\nexport { PacemTweenElement };\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 { CustomElement, P, Watch, PropertyConverters, PacemEventTarget, Utils, PCSS } from './_default-imports';\nimport { Debounce } from '../../decorators';\n//namespace Pacem.Components {\n// TODO: go native with IntersectionObserver \n// https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n// TODO: elementify the concept of an ochestrator\n// see also scroll-aware\n/** @deprecated */\nclass PacemViewportOrchestrator {\n constructor(_global) {\n this._global = _global;\n this.viewports = [];\n this._checkHandler = (evt) => {\n this._oncheck(evt);\n };\n }\n register(vport) {\n const vports = this.viewports, win = this._global;\n if (vports.indexOf(vport) === -1) {\n vports.push(vport);\n if (vports.length === 1) {\n // TODO: check against overflow: 'auto' | 'scroll' elements with constrained heights/widths...\n win.addEventListener('resize', this._checkHandler, false);\n win.addEventListener('scroll', this._checkHandler, false);\n win.addEventListener('transitionend', this._checkHandler, false);\n win.addEventListener('animationend', this._checkHandler, false);\n }\n this._oncheck();\n }\n }\n unregister(vport) {\n var ndx;\n const vports = this.viewports, win = this._global;\n if ((ndx = vports.indexOf(vport)) !== -1) {\n vports.splice(ndx, 1);\n if (vports.length === 0) {\n win.removeEventListener('resize', this._checkHandler, false);\n win.removeEventListener('scroll', this._checkHandler, false);\n win.removeEventListener('transitionend', this._checkHandler, false);\n win.removeEventListener('animationend', this._checkHandler, false);\n }\n this._oncheck();\n }\n }\n isElementVisible(el, ignoreHorizontal) {\n const vportSize = Utils.windowSize;\n var doc = this._global.document, rect = el.getBoundingClientRect(), vWidth = vportSize.width, vHeight = vportSize.height, efp = function (x, y) { return document.elementFromPoint(x, y); };\n return rect.bottom > 0 && rect.top < (0 + vHeight)\n && (ignoreHorizontal || (rect.left < (vWidth + 0) && rect.right > 0));\n }\n _oncheck(evt) {\n for (var el of this.viewports) {\n const tget = el.target || el;\n const newviz = this.isElementVisible(tget, el.ignoreHorizontal);\n if (newviz !== el.visible) {\n var visible = el.visible = newviz;\n if (visible)\n Utils.addClass(tget, PCSS + '-in-viewport');\n else\n Utils.removeClass(tget, PCSS + '-in-viewport');\n }\n }\n }\n}\n__decorate([\n Debounce(100)\n], PacemViewportOrchestrator.prototype, \"_oncheck\", null);\nconst ORCHESTRATOR = new PacemViewportOrchestrator(window);\n/** @deprecated */\nlet PacemViewportAwareElement = class PacemViewportAwareElement extends PacemEventTarget {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n //\n ORCHESTRATOR.register(this);\n }\n disconnectedCallback() {\n ORCHESTRATOR.unregister(this);\n //\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemViewportAwareElement.prototype, \"visible\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemViewportAwareElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemViewportAwareElement.prototype, \"ignoreHorizontal\", void 0);\nPacemViewportAwareElement = __decorate([\n CustomElement({ tagName: P + '-viewport-aware' })\n], PacemViewportAwareElement);\nexport { PacemViewportAwareElement };\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 { CustomElement, P, PacemEventTarget, Watch, PropertyConverters, Utils } from './_default-imports';\n//namespace Pacem.Components {\nlet PacemWebWorkerProxyElement = class PacemWebWorkerProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.autosend = true;\n this._messageHandler = (evt) => {\n this.result = evt.data;\n this.dispatchEvent(new CustomEvent('receive', { detail: evt.data, bubbles: false, cancelable: false }));\n };\n this._errorHandler = (evt) => {\n this.dispatchEvent(new CustomEvent('error', { detail: evt.error, bubbles: false, cancelable: false }));\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._initializeWorker();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'src':\n this._disposeWorker();\n this._initializeWorker(val);\n break;\n case 'autosend':\n case 'disabled':\n case 'message':\n if (this.autosend) {\n this.send(this.message);\n }\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeWorker();\n super.disconnectedCallback();\n }\n send(message = this.message) {\n if (this.disabled) {\n return;\n }\n const worker = this._worker;\n if (!Utils.isNull(worker)) {\n worker.postMessage(message);\n }\n }\n _initializeWorker(src = this.src) {\n if (!Utils.isNullOrEmpty(src)) {\n const worker = this._worker = new Worker(src);\n worker.addEventListener('message', this._messageHandler, false);\n worker.addEventListener('error', this._errorHandler, false);\n if (this.autosend && !Utils.isNull(this.message)) {\n this.send();\n }\n }\n }\n _disposeWorker(worker = this._worker) {\n if (!Utils.isNull(worker)) {\n worker.removeEventListener('error', this._errorHandler, false);\n worker.removeEventListener('message', this._messageHandler, false);\n worker.terminate();\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemWebWorkerProxyElement.prototype, \"message\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemWebWorkerProxyElement.prototype, \"result\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemWebWorkerProxyElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemWebWorkerProxyElement.prototype, \"autosend\", void 0);\nPacemWebWorkerProxyElement = __decorate([\n CustomElement({ tagName: P + '-webworker-proxy' })\n], PacemWebWorkerProxyElement);\nexport { PacemWebWorkerProxyElement };\n//}\n","import { PacemEventTarget } from '../eventtarget';\n//namespace Pacem.Behaviors{\nexport class PacemBehavior extends PacemEventTarget {\n #items = new WeakSet();\n register(element) {\n var container = this.#items;\n if (!container.has(element)) {\n container.add(element);\n this.decorate(element);\n }\n }\n unregister(element) {\n var container = this.#items;\n if (container.has(element)) {\n this.undecorate(element);\n container.delete(element);\n }\n }\n has(element) {\n return this.#items.has(element);\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 { Matrix2D } from '@pacem/pacem-foundation';\nimport { Utils, avoidHandler } from '../../utils';\nimport { CustomElementUtils, Repeater, RepeaterItem } from '../../utils-customelement';\nimport { CustomEventUtils } from '../../utils-customevent';\nimport { LogLevel } from '../../logger';\nimport { PropertyConverters } from '../../converters';\nimport { CustomElement, Watch } from '../../decorators';\nimport { P, PCSS } from '../../prefix';\nimport { PacemBehavior } from '../behavior';\nimport { DragDataMode, DropBehavior, DragDropEvent, DragDropEventArgsClass, DragDropInitEventArgsClass, DropTargetMissedBehavior, DragDropEventType } from '../../ui/drag-drop';\nimport { PacemRepeaterElement, RepeaterItem as PacemRepeaterItem } from '../basic/repeater';\n//namespace Pacem.Components {\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst DEL_VAL = CustomElementUtils.deleteAttachedPropertyValue;\nconst MOUSE_DOWN = 'pacem:dragdrop:mousedown';\nconst DRAGGING = 'pacem:dragdrop:info';\nconst DELEGATE = 'pacem:dragdrop:delegate';\n/**\n * Class to whom delegate the window-relevant events (in a possible future, distopic, multi-pointer scenario)\n */\nclass DragElementDelegate {\n constructor(initArgs, _logFn) {\n this._logFn = _logFn;\n this._started = false;\n // #endregion\n this._enterHandler = (evt) => {\n this._currentTarget = evt.target;\n };\n this._leaveHandler = (evt) => {\n this._currentTarget = null;\n };\n this._revertTrackedTarget = null;\n this._moveHandler = (evt) => {\n if (evt.type !== 'wheel') {\n avoidHandler(evt);\n }\n var el = this._element, dragger = this._dragDropper, currentPosition, args = GET_VAL(el, DRAGGING);\n //\n function getCurrentPosition() {\n return currentPosition = currentPosition || (evt instanceof MouseEvent ? { x: evt.pageX, y: evt.pageY } : { x: evt.touches[0].pageX, y: evt.touches[0].pageY });\n }\n // start\n if (!this._started) {\n this._logFn(LogLevel.Info, 'Dragging act started');\n this._started = true;\n // starting from a container/drop-target?\n if (dragger.dropBehavior === DropBehavior.InsertChild) {\n var container = el;\n do {\n // could have nested containers,\n // keep navigating up the dom tree\n container = container.parentElement;\n } while (container && dragger.dropTargets.indexOf(container) == -1);\n this._currentTarget = container;\n }\n dragger.dispatchEvent(new DragDropEvent(DragDropEventType.Start, DragDropEventArgsClass.fromArgs(args), {}, evt));\n }\n // move\n if (!Utils.isNull(args)) {\n this._logFn(LogLevel.Debug, 'Dragging act ongoing');\n const isMouseFlag = evt instanceof MouseEvent;\n //if (evt.type !== 'wheel')\n // Pacem.avoidHandler(evt);\n Utils.addClass(CustomElementUtils.findAncestorShell(el), PCSS + '-dragging');\n const pos = args.currentPosition = getCurrentPosition();\n let floater = args.floater;\n let moveEvt = new DragDropEvent(DragDropEventType.Drag, DragDropEventArgsClass.fromArgs(args), { cancelable: true }, evt);\n // dispatch move event\n dragger.dispatchEvent(moveEvt);\n if (!moveEvt.defaultPrevented // obey the - eventual - canceling feedback\n && (floater instanceof HTMLElement || floater instanceof SVGElement)) {\n // move\n let delta = { x: moveEvt.detail.delta.x, y: moveEvt.detail.delta.y };\n floater.style.transform = `translate3d(${delta.x}px, ${delta.y}px, 0)`;\n }\n // what am I over?\n var hover = this._currentTarget;\n if (!isMouseFlag && dragger.dropTargets.length > 0) {\n hover = document\n .elementsFromPoint(args.currentPosition.x - Utils.scrollLeft, args.currentPosition.y - Utils.scrollTop)\n .find(e => dragger.dropTargets.indexOf(e) >= 0);\n }\n // changed hover element since last time?\n var oldTarget = args.target;\n if (hover !== oldTarget) {\n if (!Utils.isNull(oldTarget)) {\n Utils.removeClass(oldTarget, PCSS + '-dropping');\n dragger.dispatchEvent(new DragDropEvent(DragDropEventType.Out, DragDropEventArgsClass.fromArgs(args), {}, evt));\n this._logFn(LogLevel.Info, `Drop area left (${(oldTarget['id'] || oldTarget.constructor.name)})`);\n }\n if (dragger.dropTargets.indexOf(hover) != -1) {\n args.target = hover;\n this._logFn(LogLevel.Info, `Drop area entering (${(args.target['id'] || args.target.constructor.name)})`);\n let evt0 = new DragDropEvent(DragDropEventType.Over, DragDropEventArgsClass.fromArgs(args), { cancelable: true }, evt);\n dragger.dispatchEvent(evt0);\n if (evt0.defaultPrevented) {\n delete args.target;\n }\n else {\n Utils.addClass(args.target, PCSS + '-dropping');\n this._logFn(LogLevel.Info, `Drop area entered (${(args.target['id'] || args.target.constructor.name)})`);\n }\n }\n else {\n delete args.target;\n }\n }\n this._revertTrackedTarget = args.target || oldTarget;\n // positioning\n if (!Utils.isNull(args.target) && dragger.dropBehavior === DropBehavior.InsertChild) {\n this._insertChild(hover, args);\n }\n else \n // if spilling out from a drop target, avoid undesired `copy` of an element.\n if (Utils.isNull(args.target) && dragger.mode === DragDataMode.Copy) {\n const ph = args.placeholder;\n if (ph instanceof Element)\n ph.remove();\n }\n }\n };\n this._endHandler = (evt) => {\n var el = this._element, shell = CustomElementUtils.findAncestorShell(el), dragger = this._dragDropper, args;\n if (!Utils.isNull(args = GET_VAL(el, DRAGGING))) {\n if (evt instanceof MouseEvent)\n avoidHandler(evt);\n // #region dispose fn\n let fnDispose = () => {\n let floater = args.floater;\n if (floater instanceof HTMLElement || floater instanceof SVGElement) {\n floater.style.pointerEvents = '';\n }\n if (dragger.mode !== DragDataMode.Self) {\n args.floater.remove();\n }\n Utils.removeClass(el, PCSS + '-dragging');\n Utils.removeClass(el, PCSS + '-drag-lock');\n DEL_VAL(el, DRAGGING);\n if (!Utils.isNull(args.placeholder)) {\n Utils.removeClass(args.placeholder, PCSS + '-dragging');\n Utils.removeClass(args.placeholder, 'drag-placeholder');\n Utils.removeClass(args.placeholder, PCSS + '-drag-lock');\n DEL_VAL(args.placeholder, DRAGGING);\n }\n // === drop\n const dropping = !Utils.isNull(args.target);\n if (dropping) {\n dragger.dispatchEvent(new DragDropEvent(DragDropEventType.Drop, DragDropEventArgsClass.fromArgs(args), {}, evt));\n Utils.removeClass(args.target, PCSS + '-dropping');\n }\n // === cleanup\n const data = args.data, dropTargets = dragger.dropTargets, placeholder = args.placeholder, repItem = this._repeaterItem, sourceRepeater = this._sourceRepeater, isDraggingRepeaterItem = !Utils.isNull(repItem), targetRepItem = placeholder && this._findTargetRepeaterItem(args.placeholder.parentElement, args.placeholder.nextElementSibling), targetRepeater = targetRepItem && targetRepItem.repeater, isCopying = dragger.mode === DragDataMode.Copy, \n // is dropping onto a repeater item?\n // true if\n // - is effectively dropping onto a repeater\n // - AND the target repeater doesn't equal the source one when a whole repeaterItem is involved.\n isDroppingRepeaterItem = dropping && !Utils.isNull(targetRepeater) && !(Utils.isNull(repItem) && sourceRepeater === targetRepeater);\n // refresh origin datasource and, eventually, target datasource\n if (isDraggingRepeaterItem && !isCopying && dropping) {\n sourceRepeater.removeItem(repItem.index);\n }\n if (isDroppingRepeaterItem) {\n args.placeholder.remove();\n if (targetRepeater === sourceRepeater && !isCopying) {\n let from = repItem.index, to = targetRepItem.index;\n if (to > from) {\n // tweak\n to--;\n }\n sourceRepeater.datasource.moveWithin(from, to);\n }\n else {\n if (!isCopying) {\n sourceRepeater && sourceRepeater.datasource.splice(repItem.index, 1);\n }\n targetRepeater && (targetRepeater.datasource = targetRepeater.datasource || []).splice(targetRepItem.index, 0, data);\n }\n }\n // Check spill behavior\n if (!dropping\n && !Utils.isNullOrEmpty(dragger.dropTargets)\n && dragger.spillBehavior === DropTargetMissedBehavior.Remove\n // if mode is 'copy' then don't remove the source\n && !isCopying) {\n if (isDraggingRepeaterItem) {\n sourceRepeater.datasource.splice(repItem.index, 1);\n }\n else {\n el.remove();\n }\n }\n // === end\n dragger.dispatchEvent(new DragDropEvent(DragDropEventType.End, DragDropEventArgsClass.fromArgs(args), {}, evt));\n //\n Utils.removeClass(shell, PCSS + '-dragging');\n };\n // #endregion\n // animate to target position\n const drag = args.placeholder || args.element;\n if (args.floater != drag) {\n let floater = args.floater;\n var m = Utils.deserializeTransform(getComputedStyle(floater));\n // dropping or reverting?\n if (!Utils.isNull(args.target)\n || dragger.spillBehavior === DropTargetMissedBehavior.Revert\n || (dragger.dropBehavior === DropBehavior.InsertChild && dragger.spillBehavior !== DropTargetMissedBehavior.Remove)) {\n // overlap to placeholder\n const tgetPos = Utils.offset(drag), srcPos = Utils.offset(floater);\n floater.style.transition = 'transform .2s ease-in-out';\n m = Matrix2D.translate(m, { x: tgetPos.left - srcPos.left, y: tgetPos.top - srcPos.top });\n }\n else {\n floater.style.transition = 'transform .2s ease-in, opacity .2s linear';\n // scale down to 0\n m = Matrix2D.scale(m, 0.1);\n floater.style.opacity = '0';\n }\n Utils.addAnimationEndCallback(floater, fnDispose, 300);\n floater.style.transform = `matrix(${m.a},${m.b},${m.c},${m.d},${m.e},${m.f})`;\n }\n else {\n fnDispose();\n }\n }\n Utils.removeClass(el, PCSS + '-drag-lock');\n // dispose\n this.dispose();\n this._logFn(LogLevel.Info, 'Dragging act disposed');\n };\n this._dragDropper = initArgs.dragDrop;\n Utils.addClass(this._element = initArgs.element, PCSS + '-drag-lock');\n window.addEventListener('mouseup', this._endHandler, false);\n window.addEventListener('touchend', this._endHandler, false);\n window.addEventListener('mousemove', this._moveHandler, false);\n document.addEventListener('wheel', this._moveHandler, false);\n window.addEventListener('touchmove', this._moveHandler, { capture: true, passive: false });\n this._dragDropper.dropTargets.forEach(t => {\n t.addEventListener('mouseenter', this._enterHandler, false);\n t.addEventListener('mouseleave', this._leaveHandler, false);\n });\n // is `_element` a dynamic one belonging to a repeater item?\n var repItem = Repeater.findItemContext(this._element, 0, null);\n if (repItem) {\n if (repItem.dom && repItem.dom.length === 1 && repItem.dom[0] === this._element) {\n this._repeaterItem = repItem;\n }\n this._sourceRepeater = repItem.repeater;\n }\n //\n this._bootstrap(initArgs.placeholder, initArgs.data);\n }\n // #region PRIVATE UTILS\n _getLogicalData(node) {\n if (node instanceof RepeaterItem)\n return node.item;\n if (node instanceof HTMLElement)\n return node.dataset;\n return node;\n }\n _getPhysicalData(node) {\n if (node instanceof PacemRepeaterItem)\n return node.dom;\n return [node];\n }\n _createFloater(src, origin) {\n const dragger = this._dragDropper;\n let floater = src;\n if (dragger.mode != DragDataMode.Self) {\n floater = floater.cloneNode(true);\n CustomElementUtils.stripObservedAttributes(floater);\n if (floater instanceof HTMLElement || floater instanceof SVGElement) {\n Utils.addClass(floater, PCSS + '-drag-floater');\n CustomElementUtils.findAncestorShell(this._element).appendChild(floater);\n floater.style.position = 'absolute';\n let pos = { left: origin.x + floater.clientWidth / 2, top: origin.y - floater.clientHeight / 2 };\n // if cloned the original element then preserve dimensions\n if (src === this._element || src.classList.contains('drag-floater-resize')) {\n let size = Utils.offset(this._element);\n floater.style.boxSizing = 'border-box';\n floater.style.width = size.width + 'px';\n floater.style.height = size.height + 'px';\n pos = { left: size.left, top: size.top };\n }\n // positioning\n floater.style.left = `${pos.left}px`;\n floater.style.top = `${pos.top}px`;\n }\n }\n if (floater instanceof HTMLElement || floater instanceof SVGElement) {\n floater.style.pointerEvents = 'none';\n }\n return floater;\n }\n _findTargetRepeaterItem(dropTarget, nextSibling) {\n var repItem = Repeater.findItemContext(nextSibling, 0, null);\n if (!Utils.isNull(repItem)) {\n return { repeater: repItem.repeater, index: repItem.index };\n }\n else {\n var repeater = null, index = -1;\n //\n if (dropTarget instanceof PacemRepeaterElement)\n repeater = dropTarget;\n else\n repeater = CustomElementUtils.findAncestorOfType(dropTarget, PacemRepeaterElement);\n //\n if (!Utils.isNull(repeater))\n return { repeater: repeater, index: (repeater.datasource && repeater.datasource.length) || 0 };\n }\n return null;\n }\n /**\n * Finds the physical next sibling given a container and dragging event arguments.\n * @param target Container\n * @param args Event arguments\n */\n _findNextSibling(target, args) {\n var lastX = 0, lastY = 0;\n const children = Array.from(target.children), length = children.length;\n // first hit tested element\n const hover = document.elementFromPoint(args.currentPosition.x - Utils.scrollLeft, args.currentPosition.y - Utils.scrollTop);\n // hit tested sibling (to spot)\n let hoverElement;\n // 1. hit tested element is the drop target (container)\n if (hover === target) {\n this._currentHover = hoverElement = args.placeholder;\n return hoverElement.parentElement === target ? hoverElement.nextElementSibling : null;\n }\n // loop until the parent element is the drop target\n var hoverSibling = hover;\n while (hoverSibling.parentElement != target && hoverSibling.parentElement != null) {\n hoverSibling = hoverSibling.parentElement;\n }\n // 2. hit tested element is the moving placeholder or is outside a drop target\n if (hoverSibling.parentElement != target || hoverSibling === args.placeholder) {\n this._currentHover = hoverElement = args.placeholder;\n return hoverElement.nextElementSibling;\n }\n // 3. hit tested element has changed\n if (hoverSibling != this._currentHover) {\n hoverElement = this._currentHover;\n const from = children.indexOf(hoverElement), to = children.indexOf(hoverSibling);\n this._currentHover = hoverSibling;\n return from > to ? hoverSibling : hoverSibling.nextElementSibling;\n }\n // 4. just return something\n return hoverSibling;\n }\n /**\n * This method is computationally heavy due to forced reflow!\n */\n _insertChild(targetContainer, args) {\n const drag = args.placeholder || args.element, drop = args.target, nextSibling = this._findNextSibling(drop, args);\n if (drag.nextSibling != nextSibling || drag.parentElement != drop) {\n if (Utils.isNull(nextSibling) || nextSibling.parentElement == targetContainer) {\n // TODO: change logic (try to move elements around with css transforms)\n targetContainer.insertBefore(drag, nextSibling);\n this._logFn(LogLevel.Info, `Positioned before ${(nextSibling && (nextSibling.id || nextSibling.constructor.name)) || \"null\"} for drop`);\n }\n }\n }\n _bootstrap(placeholder, dataObj) {\n var el = this._element, dragger = this._dragDropper, origin, args;\n if (!Utils.isNull(origin = GET_VAL(el, MOUSE_DOWN))) {\n this._started = false;\n DEL_VAL(el, MOUSE_DOWN);\n Utils.addClass(el, PCSS + '-dragging');\n let style = getComputedStyle(el), initialDelta = { x: 0, y: 0 }, css = Utils.deserializeTransform(style);\n //\n initialDelta.x += css.e;\n initialDelta.y += css.f;\n // === floater (first)\n let floater = this._createFloater(dragger.floater || el, origin);\n // === placeholder (then)\n if (Utils.isNull(placeholder)) {\n switch (dragger.mode) {\n case DragDataMode.Alias:\n placeholder = el;\n break;\n case DragDataMode.Copy:\n placeholder = el.cloneNode(true);\n break;\n }\n }\n // add peculiar css class\n if (!Utils.isNull(placeholder)) {\n Utils.addClass(placeholder, 'drag-placeholder');\n }\n // inside a repeater? freeze the item\n if (!Utils.isNull(this._repeaterItem) && !Utils.isNull(placeholder)) {\n CustomElementUtils.freezeObservedAttributes(placeholder);\n }\n const data = dataObj || this._getLogicalData(this._repeaterItem || el);\n // setup args\n args = {\n element: el,\n placeholder: placeholder || el,\n data,\n startTime: Date.now(),\n origin,\n initialDelta,\n currentPosition: origin,\n floater\n };\n SET_VAL(el, DRAGGING, args);\n }\n }\n dispose() {\n this._dragDropper.dropTargets.forEach(t => {\n t.removeEventListener('mouseenter', this._enterHandler, false);\n t.removeEventListener('mouseleave', this._leaveHandler, false);\n });\n window.removeEventListener('mouseup', this._endHandler, false);\n window.removeEventListener('touchend', this._endHandler, false);\n window.removeEventListener('mousemove', this._moveHandler, false);\n document.removeEventListener('wheel', this._moveHandler, false);\n window.removeEventListener('touchmove', this._moveHandler, { capture: true });\n }\n}\n/**\n * Pacem Drag & Drop element adapter.\n */\nlet PacemDragDropElement = class PacemDragDropElement extends PacemBehavior {\n constructor() {\n super(...arguments);\n this._startHandler = (evt) => {\n // sudden exit when disabled\n if (this.disabled) {\n return;\n }\n // only events with trusted interaction\n if (!evt.isTrusted) {\n return;\n }\n // check the handle selector\n if (!Utils.isNullOrEmpty(this.handleSelector)\n && evt.currentTarget.querySelector(this.handleSelector) !== evt.target) {\n return;\n }\n const el = evt.currentTarget, coords = CustomEventUtils.getEventCoordinates(evt), origin = coords.page;\n let element = el;\n let args = DragDropInitEventArgsClass.fromArgs({\n element: element,\n placeholder: null,\n currentPosition: origin,\n origin: origin,\n initialDelta: { x: 0, y: 0 },\n startTime: null,\n floater: null,\n data: null\n });\n // init event might be prevented\n const initEvent = new DragDropEvent(DragDropEventType.Init, args, { cancelable: true }, evt);\n this.dispatchEvent(initEvent);\n if (initEvent.defaultPrevented) {\n return;\n }\n // fair to go...\n // stop propagation\n avoidHandler(evt);\n const lockFn = () => {\n el.removeEventListener('mouseup', unlockFn, false);\n el.removeEventListener('touchend', unlockFn, false);\n this.log(LogLevel.Info, 'Drag locked!');\n SET_VAL(el, MOUSE_DOWN, origin);\n SET_VAL(el, DELEGATE, new DragElementDelegate({\n element: element, dragDrop: this, placeholder: args.placeholder, data: args.data,\n }, (level, message, category) => this.log.apply(this, [level, message, category])));\n };\n const unlockFn = (evt) => {\n this.log(LogLevel.Info, 'Drag avoided!');\n clearTimeout(toHandle);\n };\n const toHandle = setTimeout(lockFn, this.lockTimeout);\n el.addEventListener('mouseup', unlockFn, false);\n el.addEventListener('touchend', unlockFn, false);\n };\n /** Gets or sets the amount of milliseconds to wait, while pressing on the draggable object, until the object itself must be considered \"locked to drag\". */\n this.lockTimeout = 100;\n /** Gets or sets the drop targets (array of elements). */\n this.dropTargets = [];\n /** Gets or sets the drag mode (\"self\", \"alias\", \"copy\"). */\n this.mode = DragDataMode.Self;\n }\n decorate(element) {\n const options = { capture: false, passive: false };\n // TODO: add special effects starting the drag process after a while (timeout) the element is pressed. \n element.addEventListener('mousedown', this._startHandler, false);\n element.addEventListener('touchstart', this._startHandler, options);\n }\n undecorate(element) {\n const options = { capture: false, passive: false };\n element.removeEventListener('mousedown', this._startHandler, false);\n element.removeEventListener('touchstart', this._startHandler, options);\n }\n addEventListener(type, listener, useCapture) {\n super.addEventListener(type, listener, useCapture);\n }\n removeEventListener(type, listener, useCapture) {\n super.removeEventListener(type, listener, useCapture);\n }\n dispatchEvent(evt) {\n if (evt.type === DragDropEventType.End) {\n DEL_VAL(evt.detail.element, MOUSE_DOWN);\n DEL_VAL(evt.detail.element, DELEGATE);\n }\n return super.dispatchEvent(evt);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDragDropElement.prototype, \"lockTimeout\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemDragDropElement.prototype, \"dropTargets\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDragDropElement.prototype, \"mode\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemDragDropElement.prototype, \"floater\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDragDropElement.prototype, \"dropBehavior\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDragDropElement.prototype, \"spillBehavior\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDragDropElement.prototype, \"handleSelector\", void 0);\nPacemDragDropElement = __decorate([\n CustomElement({ tagName: P + '-drag-drop' })\n], PacemDragDropElement);\nexport { PacemDragDropElement };\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 { LogLevel, Utils, P, PCSS, CustomElement, Watch, PropertyConverters } from './_default-imports';\nimport { Point } from '@pacem/pacem-foundation';\nimport { RescaleEventType, RescaleEvent, RescaleEventArgsClass, RescaleHandle } from '../../ui/rescale';\nimport { PacemBehavior } from '../behavior';\nimport { CustomElementUtils } from '../../utils-customelement';\nimport { CustomEventUtils } from '../../utils-customevent';\nimport { avoidHandler } from '../../utils';\n//namespace Pacem.Components {\nclass RescaleElementDelegate {\n constructor(_element, _type, _rescaler, _logFn) {\n this._element = _element;\n this._type = _type;\n this._rescaler = _rescaler;\n this._logFn = _logFn;\n this._startTime = Date.now();\n this._moveHandler = (evt) => {\n evt.stopPropagation();\n const el = this._element, origin = this._origin, rescaler = this._rescaler, handle = this._type, keepProportions = rescaler.keepProportions, minWidth = rescaler.minWidth || 0, minHeight = rescaler.minHeight || 0, maxWidth = rescaler.maxWidth || Number.MAX_SAFE_INTEGER, maxHeight = rescaler.maxHeight || Number.MAX_SAFE_INTEGER, currentPosition = (evt instanceof MouseEvent ? { x: evt.pageX, y: evt.pageY } : { x: evt.touches[0].pageX, y: evt.touches[0].pageY }), position = { x: currentPosition.x, y: currentPosition.y }, origRect = this._rect;\n switch (handle) {\n case 'top':\n case 'bottom':\n position.x = origin.x;\n break;\n case 'left':\n case 'right':\n position.y = origin.y;\n break;\n }\n this._position = position;\n const delta = { x: position.x - origin.x, y: position.y - origin.y };\n var desiredRect;\n if (keepProportions) {\n const A = { x: origRect.x, y: origRect.y }, B = { x: origRect.x + origRect.width, y: origRect.y }, C = { x: origRect.x + origRect.width, y: origRect.y + origRect.height }, D = { x: origRect.x, y: origRect.y + origRect.height }, cos = Point.distance(C, D) / Point.distance(C, A), sin = Point.distance(A, D) / Point.distance(C, A), AC = Point.distance(A, C), proj = (v1, v2) => (v1.x * v2.x + v1.y * v2.y) / AC;\n switch (handle) {\n case \"topleft\":\n const vCA = Point.subtract(C, A);\n const dotCA = proj(Point.subtract(C, position), vCA);\n const topLeft = { x: C.x - dotCA * cos, y: C.y - dotCA * sin };\n desiredRect = { x: topLeft.x, y: topLeft.y, width: C.x - topLeft.x, height: C.y - topLeft.y };\n break;\n case \"topright\":\n const vDB = Point.subtract(D, B);\n const dotDB = proj(Point.subtract(D, position), vDB);\n const topRight = { x: D.x + dotDB * cos, y: D.y - dotDB * sin };\n desiredRect = { x: D.x, y: topRight.y, width: topRight.x - D.x, height: D.y - topRight.y };\n break;\n case \"bottomleft\":\n const vBD = Point.subtract(B, D);\n const dotBD = proj(Point.subtract(B, position), vBD);\n const bottomLeft = { x: B.x - dotBD * cos, y: B.y + dotBD * sin };\n desiredRect = { x: bottomLeft.x, y: B.y, width: B.x - bottomLeft.x, height: bottomLeft.y - B.y };\n break;\n default:\n const vAC = Point.subtract(A, C);\n const dotAC = proj(Point.subtract(A, position), vAC);\n const bottomRight = { x: A.x + dotAC * cos, y: A.y + dotAC * sin };\n desiredRect = { x: A.x, y: A.y, width: bottomRight.x - A.x, height: bottomRight.y - A.y };\n break;\n }\n }\n else {\n // compute bottomright as default\n desiredRect = { x: this._rect.x, y: this._rect.y, width: this._rect.width + delta.x, height: this._rect.height + delta.y };\n if (handle.startsWith('top')) {\n desiredRect.y = this._rect.y + delta.y;\n desiredRect.height = this._rect.height - delta.y;\n }\n if (handle.endsWith('left')) {\n desiredRect.x = this._rect.x + delta.x;\n desiredRect.width = this._rect.width - delta.x;\n }\n }\n this._logFn(LogLevel.Log, `handle: ${handle}, origin: ${JSON.stringify(origin)}, currentPosition: ${JSON.stringify(currentPosition)}`, `Rescaling`);\n this._logFn(LogLevel.Log, `delta: ${JSON.stringify(delta)}, position: ${JSON.stringify(position)}`, `Rescaling`);\n this._logFn(LogLevel.Log, `from: ${JSON.stringify(this._rect)}, to: ${JSON.stringify(desiredRect)}`, `Rescaling`);\n // check constraints\n let horizontally = desiredRect.width >= minWidth && desiredRect.width <= maxWidth, vertically = desiredRect.height >= minHeight && desiredRect.height <= maxHeight;\n // if proportions are constrained and one fails, then both fail\n if (keepProportions && (!horizontally || !vertically)) {\n horizontally = vertically = false;\n }\n if (!horizontally) {\n // reset to the last valid horizontal configuration\n desiredRect.x = this._targetRect.x;\n desiredRect.width = this._targetRect.width;\n }\n if (!vertically) {\n // reset to the last valid vertical configuration\n desiredRect.y = this._targetRect.y;\n desiredRect.height = this._targetRect.height;\n }\n if (horizontally || vertically) {\n // dispatch\n const args = {\n currentPosition: position, element: el,\n handle: handle, origin: origin, targetRect: desiredRect, startTime: this._startTime\n };\n let rescaleEvt = new RescaleEvent(RescaleEventType.Rescale, RescaleEventArgsClass.fromArgs(args), { cancelable: true }, evt);\n rescaler.dispatchEvent(rescaleEvt);\n if (!rescaleEvt.defaultPrevented) {\n // render resize\n const m = this._originalTransform;\n el.style.transform = `matrix(${m.a},${m.b},${m.c},${m.d},${(m.e + desiredRect.x - this._rect.x)},${(m.f + desiredRect.y - this._rect.y)})`;\n el.style.width = desiredRect.width + 'px';\n el.style.height = desiredRect.height + 'px';\n }\n // store targetRect\n this._targetRect = desiredRect;\n }\n };\n this._endHandler = (e) => {\n e.stopPropagation();\n const handle = this._type;\n let evt = new RescaleEvent(RescaleEventType.End, RescaleEventArgsClass.fromArgs({\n element: this._element, origin: this._origin,\n handle: handle, startTime: this._startTime, currentPosition: this._position, targetRect: this._targetRect\n }), {}, e);\n // body\n Utils.removeClass(document.body, PCSS + '-rescaling rescale-' + handle);\n this._rescaler.dispatchEvent(evt);\n DEL_VAL(this._element, DELEGATE);\n window.removeEventListener('mouseup', this._endHandler, false);\n window.removeEventListener('touchend', this._endHandler, false);\n window.removeEventListener('mousemove', this._moveHandler, false);\n window.removeEventListener('touchmove', this._moveHandler, false);\n };\n window.addEventListener('mouseup', this._endHandler, false);\n window.addEventListener('touchend', this._endHandler, false);\n window.addEventListener('mousemove', this._moveHandler, false);\n window.addEventListener('touchmove', this._moveHandler, false);\n this._origin =\n this._position =\n GET_VAL(_element, MOUSE_DOWN);\n this._rect =\n this._targetRect =\n Utils.offsetRect(_element);\n //\n this._originalTransform = Utils.deserializeTransform(getComputedStyle(_element));\n // body\n Utils.addClass(document.body, PCSS + '-rescaling rescale-' + _type);\n }\n}\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst DEL_VAL = CustomElementUtils.deleteAttachedPropertyValue;\nconst HANDLES = 'top right bottom left topleft topright bottomright bottomleft'.split(' ');\nconst RESCALE_FRAME = 'pacem:rescale:frame';\nconst MOUSE_DOWN = 'pacem:rescale:origin';\nconst DELEGATE = 'pacem:rescale:delegate';\nlet PacemRescaleElement = class PacemRescaleElement extends PacemBehavior {\n constructor() {\n super(...arguments);\n this._bag = [];\n this._startHandler = (evt) => {\n evt.stopPropagation();\n const coords = CustomEventUtils.getEventCoordinates(evt);\n const el = evt.currentTarget, origin = coords.page;\n const type = /rescale-(.+)/.exec(el['className'])[1];\n // start\n const target = el.parentElement;\n const initEvent = new RescaleEvent(RescaleEventType.Start, RescaleEventArgsClass.fromArgs({\n currentPosition: origin,\n origin: origin, element: target, handle: type, startTime: Date.now()\n }), { cancelable: true }, evt);\n this.dispatchEvent(initEvent);\n // canceled?\n if (initEvent.defaultPrevented) {\n return;\n }\n // stop evt propagation (may cause page reload on touch/mobile devices)\n avoidHandler(evt);\n SET_VAL(target, MOUSE_DOWN, origin);\n SET_VAL(target, DELEGATE, new RescaleElementDelegate(target, type, this, \n /* logging */ (level, message, category) => this.log.apply(this, [level, message, category])));\n };\n }\n decorate(element) {\n const el = element, css = getComputedStyle(el);\n Utils.addClass(el, PCSS + '-rescalable');\n this._setFrame(el);\n }\n undecorate(element) {\n const el = element;\n Utils.removeClass(el, PCSS + '-rescalable');\n //\n this._removeFrame(el);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._syncHandles();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'disabled':\n case 'handles':\n case 'keepProportions':\n this._syncHandles();\n break;\n }\n }\n _syncHandles() {\n const handles = this.handles || [RescaleHandle.All];\n const all = handles.find(h => h === RescaleHandle.All) != null;\n const disabled = this.disabled;\n const keepProportions = this.keepProportions;\n for (let el of this._bag) {\n let frame = GET_VAL(el, RESCALE_FRAME);\n frame.top.hidden = disabled || (!all && handles.find(h => h === RescaleHandle.Top) == null);\n frame.bottom.hidden = disabled || (!all && handles.find(h => h === RescaleHandle.Bottom) == null);\n frame.left.hidden = disabled || (!all && handles.find(h => h === RescaleHandle.Left) == null);\n frame.right.hidden = disabled || (!all && handles.find(h => h === RescaleHandle.Right) == null);\n frame.topleft.hidden = frame.top.hidden || frame.left.hidden;\n frame.topright.hidden = frame.top.hidden || frame.right.hidden;\n frame.bottomleft.hidden = frame.bottom.hidden || frame.left.hidden;\n frame.bottomright.hidden = frame.bottom.hidden || frame.right.hidden;\n if (keepProportions) {\n frame.top.hidden =\n frame.bottom.hidden =\n frame.left.hidden =\n frame.right.hidden = true;\n }\n }\n }\n _setFrame(el) {\n let frame = {};\n for (let type of HANDLES) {\n const handle = frame[type] = document.createElement('div');\n Utils.addClass(handle, PCSS + '-rescale rescale-' + type);\n el.setAttribute('pacem', '');\n el.appendChild(handle);\n handle.addEventListener('mousedown', this._startHandler, false);\n handle.addEventListener('touchstart', this._startHandler, { capture: false, passive: true });\n }\n SET_VAL(el, RESCALE_FRAME, frame);\n this._bag.push(el);\n this._syncHandles();\n }\n _removeFrame(el) {\n const frame = GET_VAL(el, RESCALE_FRAME);\n for (var type in frame) {\n const handle = frame[type];\n handle.removeEventListener('mousedown', this._startHandler, false);\n handle.removeEventListener('touchstart', this._startHandler, { capture: false });\n handle.remove();\n }\n DEL_VAL(el, RESCALE_FRAME);\n this._bag.splice(this._bag.indexOf(el), 1);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.StringArray })\n], PacemRescaleElement.prototype, \"handles\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRescaleElement.prototype, \"minWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRescaleElement.prototype, \"maxWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRescaleElement.prototype, \"minHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRescaleElement.prototype, \"maxHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemRescaleElement.prototype, \"keepProportions\", void 0);\nPacemRescaleElement = __decorate([\n CustomElement({ tagName: P + '-rescale' })\n], PacemRescaleElement);\nexport { PacemRescaleElement };\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 { LogLevel, Utils, P, PCSS, CustomElement, Watch, PropertyConverters } from './_default-imports';\nimport { Matrix2D, Angle, Numbers } from '@pacem/pacem-foundation';\nimport { RotateEvent, RotateEventArgsClass, RotateEventType } from '../../ui/rotate';\nimport { CustomElementUtils } from '../../utils-customelement';\nimport { CustomEventUtils } from '../../utils-customevent';\nimport { avoidHandler } from '../../utils';\nimport { PacemBehavior } from '../behavior';\n//namespace Pacem.Components {\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst DEL_VAL = CustomElementUtils.deleteAttachedPropertyValue;\nconst MOUSE_DOWN = 'pacem:rotate:origin';\nconst DELEGATE = 'pacem:rotate:delegate';\nconst OFFSET = 'pacem:rotate:offset';\nconst PIVOT = 'pacem:rotate:center';\nconst TWO_PI = 2 * Math.PI;\nclass RotateElementDelegate {\n constructor(_element, _rotator, _logFn) {\n this._element = _element;\n this._rotator = _rotator;\n this._logFn = _logFn;\n this._startTime = Date.now();\n this._moveHandler = (evt) => {\n evt.stopPropagation();\n const el = this._element, previousPosition = this._previousPosition, rotator = this._rotator, minRotation = rotator.minRotation, maxRotation = rotator.maxRotation, currentPosition = (evt instanceof MouseEvent ? { x: evt.pageX, y: evt.pageY } : { x: evt.touches[0].pageX, y: evt.touches[0].pageY }), pivot = this._pivot;\n var currentAngle = this._computeAngle(pivot, currentPosition, previousPosition) + this._previousAngle;\n var renderedAngle = this._constraintAngle(currentAngle, rotator.step);\n this._logFn(LogLevel.Log, `previousPosition: ${JSON.stringify(previousPosition)}, currentPosition: ${JSON.stringify(currentPosition)}`, `Rotating`);\n if (currentAngle > maxRotation) {\n currentAngle = maxRotation;\n }\n while (renderedAngle > maxRotation && rotator.step > 0) {\n this._logFn(LogLevel.Log, `angle: ${renderedAngle} constrained to max: ${maxRotation}`, `Rotating`);\n renderedAngle -= rotator.step;\n }\n if (currentAngle < minRotation) {\n currentAngle = minRotation;\n }\n while (renderedAngle < minRotation && rotator.step > 0) {\n this._logFn(LogLevel.Log, `angle: ${renderedAngle} constrained to min: ${minRotation}`, `Rotating`);\n renderedAngle += rotator.step;\n }\n this._logFn(LogLevel.Log, `angle: ${renderedAngle}, origin: ${JSON.stringify(this._originalPosition)}, current: ${JSON.stringify(currentPosition)}`, `Rotating`);\n if (renderedAngle != this._previousRenderedAngle) {\n let evtRot = new RotateEvent(RotateEventType.Rotate, RotateEventArgsClass.fromArgs({\n element: this._element, origin: this._originalPosition, startTime: this._startTime, currentPosition: currentPosition, rotation: renderedAngle, center: this._pivot\n }), { cancelable: true }, evt);\n this._rotator.dispatchEvent(evtRot);\n if (!evtRot.defaultPrevented) {\n const m0 = this._originalTransform;\n const m = Matrix2D.rotate(m0, renderedAngle - this._originalAngle);\n el.style.transform = `matrix(${m.a}, ${m.b}, ${m.c}, ${m.d}, ${m.e}, ${m.f})`;\n SET_VAL(this._element, OFFSET, renderedAngle);\n }\n this._previousRenderedAngle = renderedAngle;\n }\n // step\n this._previousPosition = currentPosition;\n this._previousAngle = currentAngle;\n };\n this._endHandler = (e) => {\n e.stopPropagation();\n let evt = new RotateEvent(RotateEventType.End, RotateEventArgsClass.fromArgs({\n element: this._element, origin: this._originalPosition, startTime: this._startTime, currentPosition: this._previousPosition, rotation: this._previousAngle, center: this._pivot\n }), {}, e);\n // body\n this._rotator.dispatchEvent(evt);\n DEL_VAL(this._element, DELEGATE);\n window.removeEventListener('mouseup', this._endHandler, false);\n window.removeEventListener('touchend', this._endHandler, false);\n window.removeEventListener('mousemove', this._moveHandler, false);\n window.removeEventListener('touchmove', this._moveHandler, false);\n };\n window.addEventListener('mouseup', this._endHandler, false);\n window.addEventListener('touchend', this._endHandler, false);\n window.addEventListener('mousemove', this._moveHandler, false);\n window.addEventListener('touchmove', this._moveHandler, false);\n this._originalPosition = this._previousPosition = GET_VAL(_element, MOUSE_DOWN);\n this._originalAngle = this._previousAngle = this._previousRenderedAngle = GET_VAL(_element, OFFSET, 0);\n this._pivot = GET_VAL(_element, PIVOT);\n //\n this._originalTransform = Utils.Css.deserializeTransform(_element);\n }\n _computeAngle(pivot, start, current) {\n return Angle.angleBetween(pivot, start, current);\n }\n _constraintAngle(x, step) {\n if (step > 0) {\n return Numbers.round(x, step);\n }\n return x;\n }\n}\nlet PacemRotateElement = class PacemRotateElement extends PacemBehavior {\n constructor() {\n super(...arguments);\n this._startHandler = (evt) => {\n if (this.disabled) {\n return;\n }\n const coords = CustomEventUtils.getEventCoordinates(evt);\n const el = evt.currentTarget, origin = coords.page;\n const bbox = Utils.offsetRect(el), w2 = bbox.width / 2.0, h2 = bbox.height / 2.0;\n var pivot = this.center;\n if (Utils.isNull(pivot)) {\n pivot = { x: bbox.x + w2, y: bbox.y + h2 };\n el.style.transformOrigin = '50% 50%';\n }\n else {\n const offX = bbox.x + w2 - pivot.x, offY = bbox.y + h2 - pivot.y;\n el.style.transformOrigin = `${-offX}px ${-offY}px`;\n }\n // start\n const initEvent = new RotateEvent(RotateEventType.Start, RotateEventArgsClass.fromArgs({\n currentPosition: origin, rotation: GET_VAL(el, OFFSET, 0), center: pivot,\n origin: origin, element: el, startTime: Date.now()\n }), { cancelable: true }, evt);\n this.dispatchEvent(initEvent);\n // canceled?\n if (initEvent.defaultPrevented) {\n return;\n }\n // stop evt propagation (may cause page reload on touch/mobile devices)\n avoidHandler(evt);\n SET_VAL(el, MOUSE_DOWN, origin);\n SET_VAL(el, PIVOT, pivot);\n SET_VAL(el, DELEGATE, new RotateElementDelegate(el, this, \n /* logging */ (level, message, category) => this.log.apply(this, [level, message, category])));\n };\n }\n decorate(element) {\n const el = element;\n Utils.addClass(el, PCSS + '-rotatable');\n const options = { capture: false, passive: false };\n element.addEventListener('mousedown', this._startHandler, false);\n element.addEventListener('touchstart', this._startHandler, options);\n }\n undecorate(element) {\n const el = element;\n Utils.removeClass(el, PCSS + '-rotatable');\n const options = { capture: false, passive: false };\n element.removeEventListener('mousedown', this._startHandler, false);\n element.removeEventListener('touchstart', this._startHandler, options);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRotateElement.prototype, \"step\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRotateElement.prototype, \"minRotation\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRotateElement.prototype, \"maxRotation\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemRotateElement.prototype, \"center\", void 0);\nPacemRotateElement = __decorate([\n CustomElement({ tagName: P + '-rotate' })\n], PacemRotateElement);\nexport { PacemRotateElement };\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 { Utils, P, PCSS, CustomElement, Watch, PropertyConverters } from './_default-imports';\nimport { Matrix2D } from '@pacem/pacem-foundation';\nimport { SwipeEvent, SwipeEventArgsClass, SwipeEventType } from '../../ui/swipe';\nimport { CustomElementUtils } from '../../utils-customelement';\nimport { CustomEventUtils } from '../../utils-customevent';\nimport { PacemBehavior } from '../behavior';\n//namespace Pacem.Components {\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst DEL_VAL = CustomElementUtils.deleteAttachedPropertyValue;\nconst PREPARING_LABEL = 'pacem:swipe:preparing';\nconst DELEGATE_LABEL = 'pacem:swipe:delegate';\nconst DEFAULT_OPTIONS = { fling: 400, inertia: 8, start: 32, autoresetSpans: false, bouncy: true };\nclass SwipeElementDelegate {\n constructor(_element, _swiper, _init, _logFn) {\n this._element = _element;\n this._swiper = _swiper;\n this._init = _init;\n this._logFn = _logFn;\n this._moveHandler = (evt) => {\n const samples = this.#samples;\n const state = this._buildStateFromUiEvent(evt);\n samples.push(this.#state = state);\n while (samples.length > 0\n && state.timestamp - samples[0].timestamp > 100) {\n samples.shift();\n }\n const args = this._buildSwipeArgsFromState(state); // SwipeEventArgsClass.fromArgs({ position: state.position, element: this._element, t0: this._init, timestamp: state.timestamp });\n const swipeEvt = new SwipeEvent(SwipeEventType.Pan, args, { cancelable: true, bubbles: false });\n const swiper = this._swiper;\n swiper.dispatchEvent(swipeEvt);\n if (!swipeEvt.defaultPrevented) {\n let { delta } = this._delta(this._init, state);\n if (!swiper.options.bouncy) {\n // clamp delta just in case\n const snaps = swiper.snaps.slice().sort();\n const snapFirst = snaps[0], snapLast = snaps[snaps.length - 1];\n const dir = this._swiper.direction;\n const { x, y } = delta;\n const deltaX = x.clamp(snapFirst, snapLast), deltaY = y.clamp(snapFirst, snapLast);\n delta = dir === 'vertical'\n ? { x: 0, y: deltaY }\n : { x: deltaX, y: 0 };\n }\n this._animateOffsetBy(delta, 0);\n }\n };\n this._endHandler = (evt) => {\n // detach move listener\n window.removeEventListener('pointermove', this._moveHandler);\n // estimate goal\n if (Utils.isNull(this.#state)) {\n console.log('How come?!');\n }\n else {\n const args = this._buildSwipeArgsFromState();\n const swipeEvt = new SwipeEvent(SwipeEventType.Swipe, args, { cancelable: true, bubbles: false });\n const swiper = this._swiper;\n swiper.dispatchEvent(swipeEvt);\n if (!swipeEvt.defaultPrevented) {\n const swipe1Evt = new SwipeEvent((\"swipe\" + args.direction), args, { cancelable: true, bubbles: false });\n swiper.dispatchEvent(swipe1Evt);\n if (!swipe1Evt.defaultPrevented) {\n // if the predicted distance is greater than the original position + half the distance to the nearest snap,\n const snaps = swiper.snaps ?? [0.0];\n snaps.sort();\n const target = swiper.options.bouncy ? args.predictedDelta : args.predictedDelta.clamp(snaps[0], snaps[snaps.length - 1]);\n // then animate toward that target,\n // otherwise bounce back\n const snap = snaps.reduce((acc, v) => {\n const distance = Math.abs(v - target);\n const current = Math.abs(acc - target);\n return distance < current ? v : acc;\n }, 0);\n const vertical = swiper.direction === 'vertical';\n const duration = args.predictedDuration;\n const delta0 = vertical ? { x: 0, y: target } : { x: target, y: 0 };\n // centralized swipeanimationend dispatcher\n const swipeAnimationEnd = () => {\n const swipe2Evt = new SwipeEvent(SwipeEventType.SwipeAnimationEnd, args, { cancelable: false, bubbles: false });\n if (swiper.dispatchEvent(swipe2Evt)) {\n return swipe2Evt;\n }\n return null;\n };\n if (snap.isCloseTo(0)) {\n this._animateOffsetBy(delta0, duration).then(() => {\n this._animateOffsetBy({ x: 0, y: 0 }, .3, 'cubic-bezier(.37,-0.01,.34,1.43)').then(() => swipeAnimationEnd());\n });\n }\n else {\n // animation to reach the predicted offset (if does not exceed the target snap, then void)\n const doesNotExceed = (snap - target) * (snap - args.delta) >= 0;\n const delta1 = vertical ? { x: 0, y: snap } : { x: snap, y: 0 };\n // animation that reaches the correct snap\n const animation = () => this._animateOffsetBy(delta1, doesNotExceed ? duration : .2, 'cubic-bezier(0,0,0,1)');\n const promise = () => doesNotExceed ? Promise.resolve() : this._animateOffsetBy(delta0, duration);\n promise().then(() => animation().then(() => {\n // generic \n swipeAnimationEnd();\n // specific\n const swipe3Evt = new SwipeEvent((\"swipe\" + args.direction + \"animationend\"), args, { cancelable: false, bubbles: false });\n swiper.dispatchEvent(swipe3Evt);\n }));\n }\n if (this.#options.autoresetSpans) {\n this._swiper.snaps = snaps.map(s => s - snap);\n }\n }\n }\n }\n this.dispose();\n };\n this.#samples = [];\n const el = _element;\n this.#options = Utils.extend({}, DEFAULT_OPTIONS, _swiper.options ?? {});\n this.#originalTransform = Utils.deserializeTransform(getComputedStyle(el));\n window.addEventListener('pointermove', this._moveHandler, false);\n window.addEventListener('pointerup', this._endHandler, false);\n window.addEventListener('pointercancel', this._endHandler, false);\n }\n _serializeTransformMatrix(m) {\n return `matrix3d(${m.a},${m.b},0,0,${m.c},${m.d},0,0,0,0,1,0,${m.e},${m.f},0,1)`;\n }\n _animateOffsetBy(delta, seconds, easing = Utils.Css.getVariableValue(`--${PCSS}-easing-out-sine`)) {\n const m = Matrix2D.translate(this.#originalTransform, delta);\n const time = Math.min(.3, seconds) * 1000;\n const element = this._element;\n const t = this._serializeTransformMatrix(m);\n return new Promise((resolve, _) => {\n const animation = element.animate([\n { transform: t }\n ], {\n fill: 'forwards',\n duration: time, easing\n });\n const callback = (e) => {\n animation.removeEventListener('finish', callback);\n animation.commitStyles();\n animation.cancel();\n resolve();\n };\n animation.addEventListener('finish', callback, false);\n });\n }\n _buildStateFromUiEvent(evt) {\n const coords = CustomEventUtils.getEventCoordinates(evt);\n const now = performance.now();\n const state = {\n position: coords.client,\n timestamp: now,\n };\n return state;\n }\n _buildSwipeArgsFromState(state = this.#state) {\n const options = this.#options;\n const speed = this.speed;\n const dir = this._swiper.direction;\n const vertical = dir === 'vertical';\n const horizontalspeed = vertical ? 0 : speed, verticalspeed = vertical ? speed : 0;\n // console.log(\"state:\");\n // console.log(state.position);\n // console.log(\"init:\");\n // console.log(this._init);\n // console.log(`vertical: ${vertical}`);\n // console.log(`h speed: ${horizontalspeed}`);\n // console.log(`v speed: ${verticalspeed}`);\n const args = SwipeEventArgsClass.fromArgs({\n position: state.position, element: this._element, t0: this._init, timestamp: state.timestamp, inertia: options.inertia, fling: options.fling,\n horizontalspeed, verticalspeed, vertical\n });\n //console.log(args);\n return args;\n }\n _delta(s0, s1) {\n const { position: { x: x0, y: y0 }, timestamp: t0 } = s0;\n const { position: { x: x1, y: y1 }, timestamp: t1 } = s1;\n const dir = this._swiper.direction;\n const delta = dir === 'vertical'\n ? { x: 0, y: y1 - y0 }\n : { x: x1 - x0, y: 0 };\n return { delta, time: t1 - t0 };\n }\n /** pixels/second */\n get speed() {\n const samples = this.#samples;\n if (samples.length < 2) {\n return 0;\n }\n const s0 = samples[0], s1 = samples[samples.length - 1];\n const { delta, time } = this._delta(s0, s1);\n const dt = time / 1000;\n const ds = delta.x + delta.y /* either x or y is 0, then this is a legit (and convenient) way to compute the magnitude */;\n return dt > 0 ? ds / dt : 0;\n }\n #options;\n #samples;\n #originalTransform;\n #state;\n dispose() {\n const el = this._element;\n DEL_VAL(el, DELEGATE_LABEL);\n window.removeEventListener('pointercancel', this._endHandler);\n window.removeEventListener('pointerup', this._endHandler);\n }\n}\nlet PacemSwipeElement = class PacemSwipeElement extends PacemBehavior {\n constructor() {\n super(...arguments);\n this._prepareHandler = (evt) => {\n if (this.disabled) {\n return;\n }\n const coords = CustomEventUtils.getEventCoordinates(evt);\n const el = evt.currentTarget, origin = coords.client;\n // check the handle selector\n const hs = this.handleSelector;\n if (!Utils.isNullOrEmpty(hs)\n && el.querySelector(hs) !== evt.target) {\n return;\n }\n evt.stopPropagation();\n SET_VAL(el, PREPARING_LABEL, { position: origin, timestamp: performance.now() });\n SET_VAL(window, PREPARING_LABEL, el);\n window.addEventListener('pointermove', this._startHandler, false);\n window.addEventListener('pointerup', this._undoHandler, false);\n };\n this._startHandler = (evt) => {\n const el = GET_VAL(window, PREPARING_LABEL); // evt.currentTarget; // wrong! targets Window!\n const init = GET_VAL(el, PREPARING_LABEL);\n if (Utils.isNull(init)) {\n this._undo(el);\n return;\n }\n const coords = CustomEventUtils.getEventCoordinates(evt);\n const { x, y } = coords.client;\n const { position: { x: x0, y: y0 } } = init;\n const direction = this.direction || 'horizontal';\n const vertical = direction === 'vertical';\n const delta = vertical\n ? y - y0\n : x - x0;\n const options = this.#options, { start: threshold } = options;\n if (Math.abs(delta) > threshold) {\n // reset detection handlers\n // and remove attached data\n this._undo(el);\n // attach actual swipe delegate\n const swiper = this;\n const delegate = new SwipeElementDelegate(el, swiper, init, (level, message, category) => { swiper.log(level, message, category); });\n SET_VAL(el, DELEGATE_LABEL, delegate);\n }\n };\n this._undoHandler = (evt) => {\n const el = evt.currentTarget;\n this._undo(el);\n };\n }\n decorate(element) {\n // https://docs.microsoft.com/en-us/microsoft-edge/dev-guide/dom/pointer-events\n if (element instanceof HTMLElement || element instanceof SVGElement) {\n Utils.addClass(element, PCSS + '-swipe');\n }\n element.addEventListener('pointerdown', this._prepareHandler, false);\n }\n undecorate(element) {\n if (element instanceof HTMLElement || element instanceof SVGElement) {\n Utils.removeClass(element, PCSS + '-swipe');\n }\n element.removeEventListener('pointerdown', this._prepareHandler, false);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setOptions();\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 'options':\n this._setOptions(val);\n break;\n }\n }\n #options;\n _setOptions(options = this.options) {\n this.#options = Utils.extend({}, DEFAULT_OPTIONS, options ?? {});\n }\n _undo(el) {\n window.removeEventListener('pointermove', this._startHandler);\n window.removeEventListener('pointerup', this._undoHandler);\n DEL_VAL(el, PREPARING_LABEL);\n DEL_VAL(window, PREPARING_LABEL);\n }\n};\n__decorate([\n Watch({\n emit: false, reflectBack: true, converter: {\n convert: (attr, _) => attr.match(/[-+]?[\\d\\.]+/g).map(i => parseFloat(i)),\n convertBack: (prop, _) => prop?.join(' ')\n }\n })\n], PacemSwipeElement.prototype, \"snaps\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true })\n], PacemSwipeElement.prototype, \"direction\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemSwipeElement.prototype, \"options\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true })\n], PacemSwipeElement.prototype, \"handleSelector\", void 0);\nPacemSwipeElement = __decorate([\n CustomElement({ tagName: P + '-swipe' })\n], PacemSwipeElement);\nexport { PacemSwipeElement };\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 { TweenService, Easings } from '../../animations';\nimport { PropertyConverters } from '../../converters';\nimport { PacemItemElement } from '../basic';\nimport { Watch } from '../../decorators';\n//namespace Pacem.Components {\nconst EasingConverter = {\n convert: (attr) => Easings[attr] ?? Easings.linear\n};\nexport class AnimationElement extends PacemItemElement {\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], AnimationElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], AnimationElement.prototype, \"property\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], AnimationElement.prototype, \"delay\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], AnimationElement.prototype, \"duration\", void 0);\n__decorate([\n Watch({ emit: false, converter: EasingConverter })\n], AnimationElement.prototype, \"easing\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], AnimationElement.prototype, \"iterations\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], AnimationElement.prototype, \"direction\", void 0);\nexport class TweenAnimationElement extends AnimationElement {\n constructor(_tweener = new TweenService()) {\n super();\n this._tweener = _tweener;\n }\n get tweener() {\n return this._tweener;\n }\n #cancelToken = false;\n startAnimation() {\n this.#cancelToken = false;\n return new Promise((resolve, _) => {\n this._tweener\n .run(.0, 1.0, this.duration ?? 0, this.delay ?? 0, this.easing ?? Easings.linear, (t, v) => {\n if (!this.#cancelToken) {\n this.target[this.property] = this.tweenInterpolationCallback(t, v);\n }\n })\n .then(resolve);\n });\n }\n cancelAnimation() {\n this.#cancelToken = true;\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 { Colors } from '@pacem/pacem-foundation';\nimport { Utils } from '../../utils';\nimport { PropertyConverters } from '../../converters';\nimport { Watch, CustomElement } from '../../decorators';\nimport { P } from '../../prefix';\nimport { TweenAnimationElement } from './animation';\n//namespace Pacem.Components {\nconst DEFAULT_FROM = { h: 0, l: 0, s: 0.5, a: 1 };\nconst DEFAULT_TO = { h: 0, l: 1, s: 0.5, a: 1 };\nlet PacemColorAnimationElement = class PacemColorAnimationElement extends TweenAnimationElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'from':\n this._precomputeFrom(val);\n break;\n case 'to':\n this._precomputeTo(val);\n break;\n }\n }\n }\n #from = DEFAULT_FROM;\n #to = DEFAULT_TO;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._precomputeColors();\n }\n _precomputeColors() {\n this._precomputeFrom();\n this._precomputeTo();\n }\n _precomputeFrom(v = this.from) {\n this.#from = this._precomputeColor(v) ?? DEFAULT_FROM;\n }\n _precomputeTo(v = this.to) {\n this.#to = this._precomputeColor(v) ?? DEFAULT_FROM;\n }\n _precomputeColor(clr) {\n if (!Utils.isNullOrEmpty(clr)) {\n try {\n return this._parseColor(clr);\n }\n catch {\n return null;\n }\n }\n }\n _parseColor(clr) {\n return Colors.hsl(Colors.parse(clr));\n }\n tweenInterpolationCallback(time, progress) {\n const from = this.#from, to = this.#to;\n const hsla = {\n h: (to.h - from.h) * progress + from.h,\n s: (to.s - from.s) * progress + from.s,\n l: (to.l - from.l) * progress + from.l,\n a: (to.a - from.a) * progress + from.a\n };\n return Colors.stringify(hsla);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemColorAnimationElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemColorAnimationElement.prototype, \"to\", void 0);\nPacemColorAnimationElement = __decorate([\n CustomElement({ tagName: P + '-color-animation' })\n], PacemColorAnimationElement);\nexport { PacemColorAnimationElement };\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 { PropertyConverters } from '../../converters';\nimport { Watch, CustomElement } from '../../decorators';\nimport { P } from '../../prefix';\nimport { TweenAnimationElement } from './animation';\n//namespace Pacem.Components {\nconst DEFAULT_FROM = 0;\nconst DEFAULT_TO = 1;\nlet PacemNumberAnimationElement = class PacemNumberAnimationElement extends TweenAnimationElement {\n tweenInterpolationCallback(time, progress) {\n const to = this.to ?? DEFAULT_TO, from = this.from ?? DEFAULT_FROM;\n return (to - from) * progress + from;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemNumberAnimationElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemNumberAnimationElement.prototype, \"to\", void 0);\nPacemNumberAnimationElement = __decorate([\n CustomElement({ tagName: P + '-number-animation' })\n], PacemNumberAnimationElement);\nexport { PacemNumberAnimationElement };\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 { PropertyConverters } from '../../converters';\nimport { Watch, CustomElement } from '../../decorators';\nimport { P } from '../../prefix';\nimport { TweenAnimationElement } from './animation';\n//namespace Pacem.Components {\nconst DEFAULT_FROM = { x: 0, y: 0 };\nconst DEFAULT_TO = { x: 1, y: 1 };\nlet PacemPointAnimationElement = class PacemPointAnimationElement extends TweenAnimationElement {\n tweenInterpolationCallback(time, progress) {\n const to = this.to ?? DEFAULT_TO, from = this.from ?? DEFAULT_FROM;\n return {\n x: (to.x - from.x) * progress + from.x,\n y: (to.y - from.y) * progress + from.y\n };\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemPointAnimationElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemPointAnimationElement.prototype, \"to\", void 0);\nPacemPointAnimationElement = __decorate([\n CustomElement({ tagName: P + '-point-animation' })\n], PacemPointAnimationElement);\nexport { PacemPointAnimationElement };\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 { Utils } from '../../utils';\nimport { PropertyConverters } from '../../converters';\nimport { PacemItemsContainerElement } from '../basic';\nimport { Watch, CustomElement } from '../../decorators';\nimport { P } from '../../prefix';\nimport { AnimationElement } from './animation';\n//namespace Pacem.Components {\nlet PacemStoryboardElement = class PacemStoryboardElement extends PacemItemsContainerElement {\n validate(item) {\n return item instanceof AnimationElement;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._animate();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'datasource':\n this._buildDatasourceFromDatasource(val);\n break;\n case 'items':\n this._buildDatasourceFromItems(val);\n break;\n case '_adaptedDatasource':\n case 'autostart':\n this._animate();\n break;\n }\n }\n }\n _buildDatasourceFromItems(items = this.items) {\n this._adaptedDatasource = items || [];\n }\n _buildDatasourceFromDatasource(ds = this.datasource) {\n this._adaptedDatasource = ds || [];\n }\n _animate(start = this.autostart) {\n const ds = this._adaptedDatasource;\n const promises = [];\n if (start && !Utils.isNullOrEmpty(ds)) {\n for (let timeline of ds) {\n promises.push(timeline.startAnimation());\n }\n }\n return Promise.all(promises);\n }\n cancelAnimation() {\n const ds = this._adaptedDatasource || [];\n for (let timeline of ds) {\n timeline.cancelAnimation();\n }\n }\n startAnimation() {\n return this._animate(true);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemStoryboardElement.prototype, \"autostart\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemStoryboardElement.prototype, \"duration\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemStoryboardElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemStoryboardElement.prototype, \"_adaptedDatasource\", void 0);\nPacemStoryboardElement = __decorate([\n CustomElement({ tagName: P + '-storyboard' })\n], PacemStoryboardElement);\nexport { PacemStoryboardElement };\n","//namespace Pacem {\nexport const Defaults = {\n USE_SHADOW_ROOT: /*'attachShadow' in Element.prototype &&*/ false /* <- wait until html-imports */\n};\n//}\n","//namespace Pacem.RegularExpressions {\nexport const EMPTY_MATCHER = /a^/;\nexport class Regex {\n /**\n * Splits an input string into segments based on a matching pattern.\n * @param input Input string\n * @param pattern RegExp pattern\n */\n static split(input, pattern) {\n var matches, index = 0, trunks = [];\n while ((matches = pattern.exec(input)) != null) {\n trunks.push({ value: input.substr(index, matches.index - index), match: false, index: index });\n let length = matches[0].length;\n trunks.push({ value: input.substr(matches.index, length), match: true, index: matches.index });\n index = matches.index + length;\n }\n if (index < input.length)\n trunks.push({ value: input.substr(index, input.length - index), match: false, index: index });\n return trunks;\n }\n}\n//}\n","/// <reference path=\"decorators.ts\" />\n//namespace Pacem {\nvar __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 { PCSS } from './prefix';\nimport { Utils } from './utils';\nimport { CustomElementUtils } from './utils-customelement';\nimport { Transformer } from './decorators';\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nfunction buildDiffOptions(modeOrOutput, outputOrCssAdd, cssAddOrRemove, cssRemoveIfAny) {\n let mode = 'char';\n let output = 'full';\n let cssAdd;\n let cssRemove;\n if (['line', 'word', 'char'].includes(modeOrOutput)) {\n mode = modeOrOutput;\n output = outputOrCssAdd;\n cssAdd = cssAddOrRemove;\n cssRemove = cssRemoveIfAny;\n }\n else {\n output = modeOrOutput;\n cssAdd = outputOrCssAdd;\n cssRemove = cssAddOrRemove;\n }\n return {\n mode,\n output,\n cssAdd: cssAdd ?? 'fill-green-container',\n cssRemove: cssRemove ?? 'fill-red-container',\n };\n}\nclass Transforms {\n static highlight(src, query, css = PCSS + '-highlight') {\n if (!query || !src)\n return src;\n let output = src.substring(0);\n const trunks = query.substring(0).split(' ');\n for (var j = 0; j < trunks.length; j++) {\n const trunk = escapeRegExp(trunks[j]);\n const regex = new RegExp('(?![^<>]*>)' + trunk, 'gi');\n output = output.replace(regex, function (piece, index, whole) {\n var startTagNdx, endTagIndex;\n if ((startTagNdx = whole.indexOf('<', index)) != (endTagIndex = whole.indexOf('</', index)) || startTagNdx == -1)\n return '<span class=\"' + css + '\">' + piece + '</span>';\n return piece;\n });\n }\n return output;\n }\n static diff(a, b, modeOrOutput = 'full', outputOrCssAdd, cssAddOrRemove, cssRemoveIfAny) {\n const { mode, output, cssAdd, cssRemove } = buildDiffOptions(modeOrOutput, outputOrCssAdd, cssAddOrRemove, cssRemoveIfAny);\n const tokens = Utils.diff(a, b, mode);\n return tokens.reduce((acc, token) => {\n const t = token.type;\n if (t === '=') {\n acc += token.value;\n }\n else if (t === '+' && output !== 'left' || t === '-' && output !== 'right') {\n const lines = token.value.split(/\\r?\\n/);\n const lUpperBound = lines.length - 1;\n for (let l = 0; l <= lUpperBound; l++) {\n const line = lines[l];\n if (!Utils.isNullOrEmpty(line) || l < lUpperBound) {\n const css = t === '-' ? cssRemove : cssAdd;\n acc += `<span class=\"${PCSS}-token ${css} text-prewrap\">${line || ' '}</span>`;\n }\n if (l < lUpperBound) {\n acc += '\\n';\n }\n }\n }\n return acc;\n }, '');\n }\n static padleft(src, length, pad) {\n return Utils.leftPad('' + src, length, pad);\n }\n static size(src) {\n // TODO: use logarithms\n if (!(src > 0))\n return '-';\n if (src < 1024 /* 1kB */)\n return src + ' B';\n if (src < 1_048_576 /* 1MB */)\n return (src / 1024).toFixed(2) + ' kB';\n if (src < 1_073_741_824 /* 1GB */)\n return (src / 1_048_576).toFixed(2) + ' MB';\n return (src / 1_073_741_824).toFixed(2) + ' GB';\n }\n static decToDeg(src, degSeparator = '° ', minSeparator = '\\' ', secSeparator = '\"') {\n const sign = Math.sign(src);\n src = Math.abs(src);\n const deg = Math.floor(src), min0 = (src - deg) * 60, min = Math.floor(min0), sec0 = (min0 - min) * 60, sec = Math.floor(sec0);\n return (sign < 0 ? '-' : '') + deg + degSeparator + min + minSeparator + sec + secSeparator;\n }\n static date(src, format, culture) {\n var date = Utils.parseDate(src), lang = culture || navigator.language;\n if (Utils.isNull(format) || typeof format === 'string') {\n switch (format) {\n case 'iso':\n return date.toISOString();\n case 'isodate':\n return date.toISOString().substring(0, 10);\n case 'localdate':\n return `${date.getFullYear()}-${Utils.leftPad(date.getMonth() + 1, 2, '0')}-${Utils.leftPad(date.getDate(), 2, '0')}`;\n case 'time':\n case 'localtime':\n return date.toLocaleTimeString(lang, { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false });\n case 'full':\n const offset = -(date.getTimezoneOffset() / 60);\n var utc = '';\n if (offset != 0)\n utc = ' (UTC' + ((offset > 0 ? '+' : '-') + Math.abs(offset).toLocaleString()) + ')';\n return date.toLocaleString(lang) + utc;\n default:\n return date.toLocaleDateString(lang);\n }\n }\n else {\n return date.toLocaleString(culture, format);\n }\n }\n static timespan(start, end, format, culture) {\n const startDate = Utils.parseDate(start), endDate = Utils.parseDate(end), span = endDate.valueOf() - startDate.valueOf(), sign = span < 0 ? '-' : '', elapsed = Math.abs(span);\n if (typeof format === 'object') {\n const adj = { timeZone: 'UTC', hour12: false }, tweakedFormat = Utils.extend(adj, format);\n return (sign || (format.sign ? '+' : '')) + Intl.DateTimeFormat(culture ?? navigator.language, tweakedFormat).format(elapsed);\n }\n // legacy output\n const msecsPerDay = 86400000, msecsPerHr = 3600000, msecsPerMin = 60000, days = Math.floor(elapsed / msecsPerDay), hrs = Math.floor((elapsed % msecsPerDay) / msecsPerHr), mins = Math.floor((elapsed % msecsPerHr) / msecsPerMin), secs = Math.floor((elapsed % msecsPerMin) / 1000), msecs = Math.floor(elapsed % 1000);\n return `${sign}${days}d ${hrs}h ${mins}m ${secs}s ${msecs}ms`;\n }\n static currency(src, currency, culture) {\n return new Intl.NumberFormat(culture ?? navigator.language, { style: 'currency', currency: currency }).format(src);\n }\n static number(src, formatOrCulture, culture) {\n if (typeof formatOrCulture === 'string') {\n return new Intl.NumberFormat(formatOrCulture || navigator.language).format(src);\n }\n return new Intl.NumberFormat(culture ?? navigator.language, formatOrCulture).format(src);\n }\n static filter(src, filter) {\n return src.filter(filter);\n }\n static orderby(src, prop) {\n return src.sort((a, b) => {\n if (!Utils.isNullOrEmpty(prop)) {\n a = a[prop];\n b = b[prop];\n }\n return a > b ? 1 : (a < b ? -1 : 0);\n });\n }\n // #region RegExp\n static isMatch(input, pattern, flags) {\n return new RegExp(pattern, flags).test(input);\n }\n // #endregion\n // #region shortcuts from 'Utils'\n static isEmpty(obj) {\n return Utils.isEmpty(obj);\n }\n static isNull(obj) {\n return Utils.isNull(obj);\n }\n static isNullOrEmpty(obj) {\n return Utils.isNullOrEmpty(obj);\n }\n static getCssVariable(name) {\n return Utils.Css.getVariableValue(name);\n }\n static getQuerystring(name) {\n return Utils.URIs.parseQuery()[name];\n }\n // #endregion\n // #region shortcuts from 'CustomElementUtils'\n static importThemeWebFonts() {\n return CustomElementUtils.Theme.importWebFonts();\n }\n static findHostContext(element) {\n return CustomElementUtils.findHostContext(element);\n }\n}\n__decorate([\n Transformer()\n], Transforms, \"highlight\", null);\n__decorate([\n Transformer()\n], Transforms, \"diff\", null);\n__decorate([\n Transformer()\n], Transforms, \"padleft\", null);\n__decorate([\n Transformer()\n], Transforms, \"size\", null);\n__decorate([\n Transformer()\n], Transforms, \"decToDeg\", null);\n__decorate([\n Transformer()\n], Transforms, \"date\", null);\n__decorate([\n Transformer()\n], Transforms, \"timespan\", null);\n__decorate([\n Transformer()\n], Transforms, \"currency\", null);\n__decorate([\n Transformer()\n], Transforms, \"number\", null);\n__decorate([\n Transformer()\n], Transforms, \"filter\", null);\n__decorate([\n Transformer()\n], Transforms, \"orderby\", null);\n__decorate([\n Transformer('regex.')\n], Transforms, \"isMatch\", null);\n__decorate([\n Transformer()\n], Transforms, \"isEmpty\", null);\n__decorate([\n Transformer()\n], Transforms, \"isNull\", null);\n__decorate([\n Transformer()\n], Transforms, \"isNullOrEmpty\", null);\n__decorate([\n Transformer('cssvar')\n], Transforms, \"getCssVariable\", null);\n__decorate([\n Transformer('querystring')\n], Transforms, \"getQuerystring\", null);\n__decorate([\n Transformer()\n], Transforms, \"importThemeWebFonts\", null);\n__decorate([\n Transformer('host')\n], Transforms, \"findHostContext\", null);\n//}\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["pi_half","Math","PI","EASINGS","linear","t","sineIn","sin","sineOut","sineInOut","expoIn","pow","E","expoOut","log","expoInOut","Easings","assembleEasing","fn","css","output","DeepCloner","constructor","clone","obj","_clone","seen","WeakMap","Element","FileSystemHandle","File","Array","isArray","map","Date","valueOf","RegExp","has","get","shallow2Deep","Object","assign","set","keys","forEach","k","REF_ID","JsonFunctionConversion","JsonFnStore","this","_jsonFnWeakMap","_jsonFnMap","Map","store","weak","key","Keys","uniqueCode","retrieve","remove","delete","Json","_options","serialize","options","_serialize","deserialize","json","_deserialize","flat","_flatten","JSON","stringify","sort","hasRefs","parse","value","elPattern","fnPattern","regexPattern","fnRefPattern","arr","exec","length","regex","lastPipe","lastIndexOf","substr","document","getElementById","eval","_revive","increment","WeakSet","id","source","flags","i","add","indexOf","push","functions","Reference","Plain","hashTable","refPattern","revive","entity","test","DeferPromise","deferred","me","promise","Promise","resolve","reject","then","onCompleted","onFailed","callback","success","error","defer","PACEM_CORE_DEFAULT","DEFAULT_DOWNLOAD_FILENAME","stopPropagationHandler","evt","stopPropagation","preventDefaultHandler","preventDefault","avoidHandler","SEGMENT_PATTERN","ROUTE_SEGMENT_PATTERN","Utils","core","root","window","Configuration","customElements","uniqueId","randomString","parseDate","input","Dates","copyToClipboard","navigator","clipboard","writeText","el","createElement","style","opacity","body","appendChild","select","execCommand","e","now","isLeapYear","daysInMonth","isDate","dateOnly","addMonths","addDays","daysBetween","colorize","elementOrRgb","rgb","hsl0","realRgb","rgba","filter","HTMLElement","Colors","r","g","b","hsl","h","s","l","element","cssEscape","escape","replace","Css","getVariableValue","name","getComputedStyle","documentElement","getPropertyValue","setVariable","setProperty","isClassDefined","pattern","j","styleSheets","sheet","item","rules","cssRules","rule","selectorText","DOMException","console","warn","href","deserializeTransform","mij","a","c","d","x","y","matches","transform","split","parseFloat","f","leftPad","Strings","formatString","format","diff","stripHTML","html","DOMParser","parseFromString","textContent","Blobs","toDataURL","blobToDataURL","fromDataURL","dataURLToBlob","toText","blobToText","fromText","textToBlob","Images","load","Imaging","loadImage","resize","resizeImage","src","img","Image","complete","onload","onerror","blob","dataURL","encoding","content","type","maxWidth","maxHeight","quality","origWidth","width","origHeight","height","cnv","ctx","getContext","origRatio","targetHeight","targetWidth","jpeg","newUrl","fillStyle","fillRect","cropImageOntoCanvas","canvas","_","cropImage","url","crossOrigin","ev","getUserMediaFunctions","_getUserMedia","fns","sourceWidth","sourceHeight","imageSmoothingEnabled","tgetW","tgetH","cnvW","cnvH","w","drawImage","abs","_domURL","URL","snapshotElement","background","drawCanvas","isNullOrEmpty","toBlob","HTMLCanvasElement","loadPromises","addLoadPromise","p","resolve0","fetch","HTMLImageElement","baseVal","setAttribute","recSetupCopy","copy","applyCss","SVGImageElement","srcCanvas","cssText","replaceWith","copyCanvas","childLength","children","copy1","src1","tagName","SVGElement","svg","cloneNode","all","execute","doc","implementation","createHTMLDocument","write","outerHTML","namespaceURI","node","evaluate","localName","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","createElementNS","size","offset","toString","innerHTML","data","XMLSerializer","serializeToString","encodeURIComponent","download","arg0","arg1","mime","filename","credentials","headers","response","ok","headerName","header","results","join","reason","text","Error","fanchor","createObjectURL","createEvent","event","initEvent","dispatchEvent","click","isDOMReady","readyState","onDOMReady","listener","addEventListener","moveChildren","target","moveItems","childNodes","nodes","ref","dom","NodeList","insertBefore","unshift","is","selector","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","call","lang","language","jsonSortStringify","isNull","Browsers","detect","cookies","cookie","retval","pair","keyval","trim","defineProperty","configurable","enumerable","writable","decodeURIComponent","Cookies","getAll","async","cookieName","cookieStore","nameValues","domain","path","maxAge","toFixed","expires","partitioned","sameSite","secure","isVisible","checkVisibility","checkOpacity","checkVisibilityCSS","visibility","clientWidth","clientHeight","hasClass","className","classList","contains","addClass","DOMTokenList","prototype","apply","removeClass","toggleClass","on","hasPart","partName","part","addPart","removePart","togglePart","rect","getBoundingClientRect","top","round","scrollTop","left","scrollLeft","offsetRect","naturalOffsetTop","offsetTop","offsetParent","naturalOffsetLeft","naturalOffset","offsetWidth","offsetHeight","naturalOffsetRect","scrollTo","scrollY","scrollX","windowSize","win","innerWidth","innerHeight","addAnimationEndCallback","timeout","clearTimeout","handle","removeEventListener","setTimeout","waitForAnimationEnd","idle","msecs","accelerateCallback","interval","pace","min","token","cancel","int","last","isEmpty","NullChecker","Node","val","areSemanticallyEqual","v1","v2","extend","undefined","fromResult","v","fromResultAsync","task","requestAnimationFrame","readonlyCopy","slice","freeze","URIs","parameters","removeMatchedParameters","rpl","ndx","index","substring","optPattern","optArr","wholeMatch","endsWith","appendQuery","removeNullEntries","hash","char","query","parseQuery","location","search","URLSearchParams","hasMandatoryTemplateSegments","parseRoute","pathTemplate","tmpl","trunks","res","res1","prop","optional","charAt","regArr","protocol","parseState","metadata","fullPath","$path","$pathname","$querystring","$query","$hash","parseHash","tmplIndex","findIndex","tmplItem","splice","getApiResult","hasOwnProperty","result","EventKeyModifier","CustomEventUtils","isInstanceOf","getEventCoordinates","touches","changedTouches","page","pageX","pageY","screen","screenX","screenY","client","clientX","clientY","getEventKeyModifiers","which","MouseEvent","button","shiftKey","altKey","ctrlKey","metaKey","matchModifiers","args","lowerCaseModifiers","from","toLowerCase","fixEdgeCustomEventSubClassInstance","setPrototypeOf","CustomTypedEvent","CustomEvent","detail","eventInit","super","isEventInit","CustomUIEvent","orig","Event","originalEvent","modifiers","TouchEvent","coords","AttributeChangeEventName","AttributeChangeEvent","PropertyChangeEventName","PropertyChangeEvent","AnimationEvent","AnimationEndEvent","AnimationStartEvent","TweenService","run","to","duration","delay","easing","start","performance","end","ct","Timer","fps","_run","delta","stop","cancelAnimationFrame","HttpMethod","FetchResultEventName","FetchErrorEventName","FetchSuccessEventName","Fetcher","status","noop","StatusCodeError","statusCode","statusText","Response","req","processTime","_status","_body","_text","responseText","_type","responseType","_allHeadersRaw","getAllResponseHeaders","_processTime","_headers","_parseHeaders","date","Http","request","_this","method","Get","progress","accessToken","stopWatch","params","XMLHttpRequest","withCredentials","lengthComputable","pct","loaded","total","err","toUpperCase","Post","open","setRequestHeader","kvp","send","post","DragDataMode","DropBehavior","DropTargetMissedBehavior","DragDropEventType","RescaleHandle","RescaleEventType","RotateEventType","SwipeEventType","DragDropEventArgsBaseClass","_builder","currentPosition","origin","initialDelta","startTime","floater","Point","subtract","DragDropInitEventArgsClass","placeholder","fromArgs","builder","DragDropEventArgsClass","_placeholder","_data","DragDropEvent","RescaleEventArgsClass","targetRect","RescaleEvent","RotateEventArgsClass","rotation","center","RotateEvent","SwipeEventArgsClass","isVertical","verticalspeed","horizontalspeed","vertical","direction","speed","position","t0","x0","y0","flinging","fling","predictedDelta","inertia","predictedDuration","SwipeEvent","CurrentIndexChangeEvent","Type","Function","WATCH_PROPS_VAR","INSTANCE_BINDINGS_VAR","INSTANCE_HOST_VAR","INSTANCE_SCOPE_VAR","P","prefix","PCSS","TemplateElement","PACEM_BAG","bindingPattern","CustomElementUtils","polyfilling","camelToKebab","camelCased","kebabToCamel","kebabCased","m","getWatchedProperties","includeInherited","properties","chain","pblic","getAttachedPropertyValue","startsWith","concat","getPrototypeOf","getWatchedProperty","find","importjs","integrity","crossorigin","attrs","import","head","getElementsByTagName","importcss","rel","appendTo","_p","_imports","attr","script","querySelector","Theme","importWebFonts","downloadFont","fontFace","fonts","promises","atLeast1FontFaceReady","check","count","ready","setAttachedPropertyValue","propKey","getOwnPropertyDescriptor","bag","deleteAttachedPropertyValue","ensureValue","resolvePath","scope","parent","t2","property","current","set_val","repItem","RepeaterItem","getRepeaterItem","repeater","datasource","_findScopeContextLegacy","parentNode","ownerDocument","shadowRoot","findScopeContext","getRootNode","findAncestor","predicate","host","findAncestorShell","findAncestorOfType","ctor","findDescendants","firstOnly","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","nextNode","n","currentNode","findFirstDescendant","any","findAll","querySelectorAll","findPreviousSiblingOrAncestorOfType","upLevels","levels","previousSibling","findPreviousSiblingOrAncestor","assignHostContext","template","SHOW_DOCUMENT_FRAGMENT","findHostContext","logFn","isConnected","parentElement","isBindingAttribute","extractBindingAttributeExpression","parseBindingAttribute","expression","mode","expr","Expression","dependencies","twowayAllowed","ensureMember","o","attributes","original","stripObservedAttributes","avoidObservedAttributes","freezeObservedAttributes","revertFn","reverted","removeAttribute","GET_VAL","SET_VAL","REPEATERITEM_PLACEHOLDER","Repeater","findItemContext","findUpwards","RepeaterItem$1","isRepeaterItem","CONTEXT_PREFIX","stringPattern","safetyPattern","variablePattern","_pending","_independent","_dependencies","functionBody","_fnBody","voidBody","_voidBody","pending","independent","_fn","_args","evaluateAsync","evaluatePlus","argNames","argValues","_pendingExpression","_getPendingExpressionSingleton","xpr","stringMatches","context","$this","strings","trunk","processedTrunk","mwhole","mstart","melem","cmpRef","propArray","dotIndex","furtherParts","pathRegexArray","lastChar","itemRef","melem0","constexpr","elem","retexpr","LogLevel","NonePropertyConverter","convert","StringPropertyConverter","convertBack","StringArrayPropertyConverter","NumberPropertyConverter","BooleanPropertyConverter","BooleanStrictPropertyConverter","DateTimePropertyConverter","toISOString","DatePropertyConverter","JsonPropertyConverter","EvalPropertyConverter","ElementPropertyConverter","retryConversionWhenReady","PointPropertyConverter","SizePropertyConverter","Size","RectPropertyConverter","Rect","PropertyConverters","None","String","StringArray","Number","Boolean","BooleanStrict","Datetime","Eval","DefaultComparer","old","DEL_VAL","WATCH_PROP_PREFIX","WATCH_VERS_PROP","WATCH_BIND_PREFIX","INSTANCE_CHILDREN_VAR","HAS_BIND_PREFIX","HAS_TEMPLATE_VAR","HASBEEN_TEMPLATED_VAR","INSTANCE_PROMISE_VAR","INSTANCE_READY_VAR","INSTANCE_ONREADY_VAR","processBinding","binding","deps","dep","mapped","propertyName","retrieveTemplateAndWaitForDOMReady","config","on_load","templateUrl","message","retrieveDescendantTemplateActivationPromises","CustomElement","OBS_ATTR_PROP","extraObserved","proto","originalConnectedCallback","connectedCallback","originalViewActivatedCallback","viewActivatedCallback","useShadowDOM","shadow","originalContent","currentContent","firstChild","placeholders","ph","nextSibling","removeChild","attachShadow","currentChildren","append","converter","attrName","getAttribute","todo","attrNameBind","attrValueBind","fireViewActivated","originalDisconnectedCallback","disconnectedCallback","originalAttributeChangedCallback","attributeChangedCallback","attributeName","oldValue","currentValue","firstChange","plainAttrName","executeRightAway","executeDelayed","originalPropertyChangedCallback","propertyChangedCallback","bindingType","emit","reflectBack","getNamedItem","sval","define","whenDefined","DefaultPropertyConverter","Watch","descriptor","comparer","setter","propref","ver","propver","getter","onChange","debounce","decorateArray","instance","methods","pop","copyWithin","shift","setterCore","oldVal","newVal","ViewChild","findElement","nodelist","dict","Concurrent","originalMethod","bufferKey","lockKey","buffer","Debounce","keyFactory","handleKey","Throttle","argsKey","reset","lastArgs","Transforms$1","register","_set","segments","segment","methodName","Transformer","Transforms","__decorate","decorators","desc","arguments","Reflect","decorate","PacemEventTarget","_isReady","emitHandler","disabled","defaultPrevented","_emitCore","Debug","attrBody","$event","cancelable","isReady","first","Log","ret","level","category","logger","refreshBindings","RepeaterItemCreateEventName","RepeaterItemRemoveEventName","RepeaterItemEvent","RepeaterItemCreateEvent","RepeaterItemRemoveEvent","STD_EVENTS","ElementAriaAttributes","_element","ariaAttrs","_aria","toObject","ElementAria","role","PacemElement","aria","cssBag","parts","_tabIndex","behaviors","static","emittedEventTypes","stdEvtsMemoizer","behavior","unregister","cssClass","newBag","cssPart","hidingCss","animCss","hide","title","tabIndex","cssDis","PacemContentElement","_fillContent","_isContentNullOrEmpty","DocumentFragment","childElementCount","_original","sanitize","PacemUnsafeContentElement","PacemSafeContentElement","_sanitizeLegacy","HTMLScriptElement","scriptBlockPattern","PacemAdapter","_propertyChangeHandler","masterPropertyChangedCallback","master","initialized","_adjustFocusIndex","currentIndex","previousIndex","itemPropertyChangedCallback","initializeCallback","destroyCallback","initialize","adapted","destroy","items","ndxStart","max","_getAvailable","_getNextAvailable","_getPreviousAvailable","step","isClose","isPrevious","isNext","previous","loop","prev","next","PacemAnnihilatorElement","PacemBeforeunloadElement","_unloadingHandler","msg","active","returnValue","confirm","PacemBroadcastChannelProxyElement","autosend","_messageHandler","bubbles","_errorHandler","_initializeChannel","_disposeChannel","channel","postMessage","channelName","BroadcastChannel","close","PacemBrowserDetectElement","_detect","browser","version","userAgent","oldName","oldVersion","EXPIRATION_FIELD","Storage","_getStorage","persistent","localStorage","sessionStorage","_parseValue","storage","getItem","removeItem","setPropertyValue","storedValue","exp","setItem","clear","removeProperty","PacemDataElement","_handle","_flag","model","throttle","persistAs","DockMode","PacemDockElement","_tweener","Top","transitionDuration","dock","_doDock","_animate","transition","time","_setOffset","_resetOffset","_compute","Bottom","marginBottom","parseInt","bottom","marginTop","cmp","state","Info","PacemTransferProxyElement","_dom","_children","moveContent","proxy","PacemBodyProxyElement","PacemShellProxyElement","PacemElementProxyElement","EmitEvent","_originalEvent","ElementOrWindowConverter","PacemEventProxyElement","_emitHandler","_observe","_unobserve","capture","ABORT_MESSAGE","PacemFetchElement","autofetch","_delayAndConditionallyFetch","diffByValues","_abortPending","aborter","abort","ongoing","fetching","_me","contentType","cache","searchParams","signal","AbortController","as","_acceptFetchResult","Warn","StateEvent","PacemHistoryElement","history","_handleStateChange","maxlength","HistoryService","_synchronize","redo","undo","canUndo","canRedo","PacemHtmlProxyElement","_html","_update","PacemIfElement","PacemItemElement","container","_container","findContainer","PacemItemsContainerElement","isItemsContainer","object","ItemRegisterEventName","ItemUnregisterEventName","ItemRegisterEvent","ItemUnregisterEvent","ItemsContainerRegistrar","PacemCrossItemsContainerElement","validate","_registrar","PacemIterableElement","PacemIterativeElement","iter","adapter","_checkIndex","REMOVE_VALUE","EMPTY_VALUE","PacemLayoutProxyElement","shell","layout","PacemMetaProxyElement","nameBased","itemprop","escapedKey","meta","PacemOnlineStatusElement","_onlineHandler","online","onLine","PacemPanelElement","CommandEventName","CommandEvent","PacemTemplateProxyElement","PacemRepeaterElement_1","ItemEvent","srcEvent","ItemCommandEvent","CustomItemCommandEvent","commandName","commandArgument","PacemRepeaterElement","_childItems","_fragment","createDocumentFragment","_setupItem","_refreshItemTemplateHandler","_itemTemplate","_databind","_removeItems","_setItem","frag","_item","_childTemplatePlaceholder","redrawEventually","fromIndex","toIndex","exceeding","databind","holder","_onCommand","_buildupItemTemplate","HTMLTemplateElement","oldPlaceholder","RepeaterItemBase","_repeater","_template","_holder","createComment","_alterEgos","_setScopeValue","owner","fieldName","defineProperties","tmplRef","tmplParent","clonedTmpl","Comment","Text","alterEgo","ResizeEventName","ResizeEvent","BORDER_BOX","box","PacemResizeElement","_checkSizeHandler","_assignSizeDebounced","_target","_start","_observer","oldTarget","unobserve","newTarget","observe","_stop","watchPosition","_startWatchIntensively","ResizeObserver","entries","changed","entry","contentRect","disconnect","_checkSize","_previousHeight","_previousWidth","_previousLeft","_previousTop","_dispatchResize","currentSize","RouterNavigatingEventName","RouterNavigateEventName","RouterNavigateEvent","RouterNavigatingEvent","CHECK_PATTERN","PacemRouterElement","_onPopState","cancelingNavigation","_stringifyMergedState","_segmentateUrl","_parseState","navigate","poppingState","pathname","pushState","scrollRestoration","replaceState","referrer","stateCopy","newState","_parseTemplate","q","ScrollEventName","ScrollEvent","PacemScrollOrchestrator","global","scrollers","scrollHandler","_scroll","vport","scrlls","scroller","ORCHESTRATOR","PacemScrollAwareElement","base64ToUint8Array","base64","repeat","rawData","atob","Uint8Array","charCodeAt","PacemServiceWorkerProxyElement","_tryRegister","_tryUnregister","reg","registration","serviceWorker","pushManager","getSubscription","sub","pushSubscription","unsubscribe","subscription","refresh","subscribe","publicKey","userVisibleOnly","applicationServerKey","Notification","permission","KEYEVT","matchesKeyCombination","combo","accumulator","modifierPattern","regExc","pieces","charEquals","piece","KeyboardShortcutExecuteEventName","PacemShortcutElement","_accumulator","_shortcutHandler","combination","_addHandler","_removeHandler","PacemSpanElement","PacemStyleProxyElement","_style","cssReady","_idleWhileReady","_fetch","setInterval","clearInterval","resp","PacemTextElement","nodeValue","PacemTimerElement","_restart","PacemTitleProxyElement","PacemTweenElement","started","PacemAnimationEvent","PacemViewportOrchestrator","_global","viewports","_checkHandler","_oncheck","vports","isElementVisible","ignoreHorizontal","vportSize","vWidth","vHeight","right","tget","newviz","visible","PacemViewportAwareElement","PacemWebWorkerProxyElement","_initializeWorker","_disposeWorker","worker","_worker","Worker","terminate","PacemBehavior","undecorate","MOUSE_DOWN","DRAGGING","DELEGATE","DragElementDelegate","initArgs","_logFn","_started","_enterHandler","_currentTarget","_leaveHandler","_revertTrackedTarget","_moveHandler","dragger","_dragDropper","dropBehavior","InsertChild","dropTargets","Start","isMouseFlag","moveEvt","Drag","hover","elementsFromPoint","Out","evt0","Over","Copy","_insertChild","_endHandler","fnDispose","pointerEvents","Self","dropping","Drop","_repeaterItem","sourceRepeater","_sourceRepeater","isDraggingRepeaterItem","targetRepItem","_findTargetRepeaterItem","nextElementSibling","targetRepeater","isCopying","isDroppingRepeaterItem","moveWithin","spillBehavior","Remove","End","drag","Revert","tgetPos","srcPos","Matrix2D","translate","scale","dispose","dragDrop","passive","_bootstrap","_getLogicalData","dataset","_getPhysicalData","PacemRepeaterItem","_createFloater","pos","boxSizing","dropTarget","_findNextSibling","elementFromPoint","hoverElement","_currentHover","hoverSibling","targetContainer","drop","dataObj","Alias","PacemDragDropElement","_startHandler","isTrusted","handleSelector","currentTarget","Init","unlockFn","toHandle","lockTimeout","useCapture","RescaleElementDelegate","_rescaler","_startTime","_origin","rescaler","keepProportions","minWidth","minHeight","MAX_SAFE_INTEGER","origRect","_rect","_position","desiredRect","A","B","C","D","cos","distance","AC","proj","vCA","dotCA","topLeft","vDB","dotDB","topRight","vBD","dotBD","bottomLeft","vAC","dotAC","bottomRight","horizontally","vertically","_targetRect","rescaleEvt","Rescale","_originalTransform","HANDLES","RESCALE_FRAME","PacemRescaleElement","_bag","_setFrame","_removeFrame","_syncHandles","handles","All","frame","hidden","Left","Right","topleft","topright","bottomleft","bottomright","OFFSET","PIVOT","RotateElementDelegate","_rotator","previousPosition","_previousPosition","rotator","minRotation","maxRotation","pivot","_pivot","currentAngle","_computeAngle","_previousAngle","renderedAngle","_constraintAngle","_originalPosition","_previousRenderedAngle","evtRot","Rotate","m0","rotate","_originalAngle","Angle","angleBetween","Numbers","PacemRotateElement","bbox","w2","h2","transformOrigin","offX","offY","PREPARING_LABEL","DELEGATE_LABEL","DEFAULT_OPTIONS","autoresetSpans","bouncy","SwipeElementDelegate","_swiper","_init","samples","_buildStateFromUiEvent","timestamp","_buildSwipeArgsFromState","swipeEvt","Pan","swiper","_delta","snaps","snapFirst","snapLast","dir","deltaX","clamp","deltaY","_animateOffsetBy","Swipe","swipe1Evt","snap","reduce","acc","delta0","swipeAnimationEnd","swipe2Evt","SwipeAnimationEnd","isCloseTo","doesNotExceed","delta1","animation","swipe3Evt","originalTransform","_serializeTransformMatrix","seconds","animate","fill","commitStyles","s0","s1","x1","y1","t1","dt","ds","PacemSwipeElement","_prepareHandler","hs","_undoHandler","init","_undo","threshold","delegate","_setOptions","match","EasingConverter","AnimationElement","TweenAnimationElement","tweener","cancelToken","startAnimation","tweenInterpolationCallback","cancelAnimation","DEFAULT_FROM","DEFAULT_TO","PacemColorAnimationElement","_precomputeFrom","_precomputeTo","_precomputeColors","_precomputeColor","clr","_parseColor","hsla","PacemNumberAnimationElement","PacemPointAnimationElement","PacemStoryboardElement","_buildDatasourceFromDatasource","_buildDatasourceFromItems","_adaptedDatasource","autostart","timeline","Defaults","USE_SHADOW_ROOT","EMPTY_MATCHER","Regex","escapeRegExp","string","buildDiffOptions","modeOrOutput","outputOrCssAdd","cssAddOrRemove","cssRemoveIfAny","cssAdd","cssRemove","includes","highlight","whole","startTagNdx","lines","lUpperBound","line","padleft","pad","decToDeg","degSeparator","minSeparator","secSeparator","sign","deg","floor","min0","sec0","culture","toLocaleString","getFullYear","getMonth","getDate","toLocaleTimeString","hour","minute","second","hour12","getTimezoneOffset","utc","toLocaleDateString","timespan","startDate","span","elapsed","adj","timeZone","tweakedFormat","Intl","DateTimeFormat","msecsPerDay","msecsPerHr","currency","NumberFormat","number","formatOrCulture","orderby","isMatch","getCssVariable","getQuerystring","importThemeWebFonts","DeepMerger","merge","Output"],"mappings":"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"}
|