@pacem/pacem 1.0.5-bartels → 1.0.5-doppler
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 +1 -1
- package/dist/browser/pacem-2d.min.js +1 -1
- package/dist/browser/pacem-3d.js +1 -1
- package/dist/browser/pacem-3d.min.js +1 -1
- package/dist/browser/pacem-charts.js +1 -1
- package/dist/browser/pacem-charts.min.js +1 -1
- package/dist/browser/pacem-cms.js +1 -1
- package/dist/browser/pacem-cms.min.js +1 -1
- package/dist/browser/pacem-core.js +2 -2
- package/dist/browser/pacem-core.js.map +1 -1
- package/dist/browser/pacem-core.min.js +2 -2
- package/dist/browser/pacem-foundation.js +1 -1
- package/dist/browser/pacem-foundation.min.js +1 -1
- package/dist/browser/pacem-fx.js +1 -1
- package/dist/browser/pacem-fx.min.js +1 -1
- package/dist/browser/pacem-logging.js +1 -1
- package/dist/browser/pacem-logging.min.js +1 -1
- package/dist/browser/pacem-maps.js +1 -1
- package/dist/browser/pacem-maps.min.js +1 -1
- package/dist/browser/pacem-media.js +1 -1
- package/dist/browser/pacem-media.min.js +1 -1
- package/dist/browser/pacem-networking.js +1 -1
- package/dist/browser/pacem-networking.min.js +1 -1
- package/dist/browser/pacem-numerical.js +1 -1
- package/dist/browser/pacem-numerical.min.js +1 -1
- package/dist/browser/pacem-plus.js +1 -1
- package/dist/browser/pacem-plus.min.js +1 -1
- package/dist/browser/pacem-scaffolding.js +1 -1
- package/dist/browser/pacem-scaffolding.min.js +1 -1
- package/dist/browser/pacem-ui.js +1 -1
- package/dist/browser/pacem-ui.min.js +1 -1
- package/dist/bundle/pacem.min.mjs +2 -2
- package/dist/bundle/pacem.mjs +2 -2
- package/dist/bundle/pacem.mjs.map +2 -2
- package/dist/typings/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pacem-core.js","sources":["../esm/trees/deepcloner.js","../esm/trees/json.js","../esm/promise.js","../esm/utils.js","../esm/types.js","../esm/prefix.js","../esm/expression.js","../esm/template.js","../esm/utils-customelement.js","../esm/utils-customevent.js","../esm/events.js","../esm/adapter.js","../esm/command.js","../esm/comparers.js","../esm/converters.js","../esm/net/fetcher.js","../esm/net/http.js","../esm/decorators.js","../esm/defaults.js","../esm/logger.js","../esm/eventtarget.js","../esm/regex.js","../esm/storage.js","../esm/transforms.js","../esm/animations/easings.js","../esm/animations/events.js","../esm/animations/tween-service.js","../esm/animations/timer.js","../esm/ui/drag-drop.js","../esm/ui/rescale.js","../esm/ui/rotate.js","../esm/ui/swipe.js","../esm/components/behavior.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/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/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/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/index-iife.js"],"sourcesContent":["// namespace Pacem {\n/**\n * Recursively clones plain objects, arrays, `Date`s and `RegExp`s, preserving reference cycles/shared\n * references within a single `clone` call (via an internal `WeakMap`). DOM `Element`s, `FileSystemHandle`s\n * and `File`s are returned as-is (not cloned) - they aren't meaningfully deep-cloneable and are typically\n * meant to be referenced, not duplicated.\n */\nexport class DeepCloner {\n constructor() {\n }\n /** Deep-clones `obj`; see {@link DeepCloner} for what gets cloned vs. passed through by reference. */\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}\n/**\n * A `JSON.stringify`/`JSON.parse` superset able to round-trip values plain JSON can't represent: circular/\n * shared object references (`$#ref_N` markers), `RegExp` instances, DOM `Element`s (serialized by `id`\n * and revived via `document.getElementById`, so they must have one), and - depending on\n * {@link JsonSerializationOptions.functions} - functions themselves. The source object is deep-cloned\n * first (via {@link DeepCloner}) so serialization never mutates the input.\n */\nexport class Json {\n constructor(_options) {\n this._options = _options;\n }\n /**\n * Serializes `obj` to a JSON string, extended to support circular/shared references, `RegExp`s,\n * `Element`s (by `id`) and, per `options`, functions.\n * @param obj Value to serialize.\n * @param options Controls how function-valued properties are handled.\n */\n static serialize(obj, options) {\n return new Json(options)._serialize(obj);\n }\n /** Deserializes a string produced by {@link serialize}, restoring references, `RegExp`s, `Element`s and functions. */\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 {\n/**\n * A `PromiseLike<T>` whose resolution is externalized: unlike a plain `Promise`, the executor isn't\n * passed a callback up front - instead, `resolve`/`reject` are exposed for the caller to invoke later,\n * via the {@link defer} static factory. Useful when the completion of an operation is driven by code\n * that doesn't naturally live inside a `Promise` executor (e.g. event callbacks, decorator plumbing).\n */\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 /** Standard `PromiseLike.then`, delegating to the underlying native `Promise`. */\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 /** Registers a fulfillment-only callback (fluent, chainable alternative to `then(callback)`). */\n success(callback) {\n this.promise.then(callback, null);\n return this;\n }\n /** Registers a rejection-only callback (fluent, chainable alternative to `then(null, callback)`). */\n error(callback) {\n this.promise.then(null, callback);\n return this;\n }\n /** Creates a new deferred promise and returns its controller: `{ resolve, reject, promise }`. */\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';\n/** Ready-to-use event listener that only calls `evt.stopPropagation()`; handy as an `addEventListener` callback without allocating a closure. */\nexport const stopPropagationHandler = (evt) => {\n evt.stopPropagation();\n};\n/** Ready-to-use event listener that only calls `evt.preventDefault()`; handy as an `addEventListener` callback without allocating a closure. */\nexport const preventDefaultHandler = (evt) => {\n evt.preventDefault();\n};\n/** Ready-to-use event listener that calls both `evt.preventDefault()` and `evt.stopPropagation()`. */\nexport const avoidHandler = (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n};\nconst SEGMENT_PATTERN = /^\\/[^\\/]+/;\nconst ROUTE_SEGMENT_PATTERN = /\\/\\{([a-z\\$_][\\w]*)\\??\\}/;\n/**\n * The framework's static utility grab-bag: general helpers plus namespaced sub-modules (`Json`, `Dates`,\n * `Css`, `Strings`, `Blobs`, `Images`, `Browsers`, `Cookies`, `URIs`) re-exposing (and in some cases\n * extending) functionality from `@pacem/pacem-foundation`. Also the home of `Utils.core`, the global\n * registry object used for cross-cutting framework state (e.g. registered {@link Transformer}s).\n */\nexport class Utils {\n /** The framework's global scratch/registry object (`window[id]`, where `id` defaults to `'pacem'` and is configurable via `window.Pacem.Configuration.core`); created on first access. Used e.g. to store {@link Transformer}-registered transform functions. */\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 /** The platform's (native or polyfilled) `customElements` registry. */\n static get customElements() {\n return window['customElements'];\n }\n // #region GENERAL\n /** Generates a unique numeric-ish id string. */\n static uniqueId() {\n return Keys.uniqueId();\n }\n /** Generates a unique short code string. */\n static uniqueCode() {\n return Keys.uniqueCode();\n }\n /** Generates a random string of the given `length`. */\n static randomString(length) {\n return Keys.randomString(length);\n }\n /** Parses a date-like value (ISO string, `Date`, or timestamp) into a `Date`. */\n static parseDate(input) {\n return Dates.parse(input);\n }\n /** Writes `input` to the system clipboard, using the async Clipboard API when available and falling back to `document.execCommand('copy')` otherwise. */\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 /** Escapes `input` for safe use as a CSS identifier/selector fragment. */\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 /** Reads a CSS custom property's current value off the document root (`:root`/`html`). */\n getVariableValue(name) {\n return getComputedStyle(document.documentElement).getPropertyValue(name);\n },\n /** Sets a CSS custom property's value on the document root (`:root`/`html`). */\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 /** Parses an element's (or style declaration's) computed `transform: matrix(...)` CSS value into its 2D affine matrix components; identity if unset. */\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 /** Strips HTML markup from `html`, returning its plain-text content. */\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 /** Loads an image from `src` and resolves with the `HTMLImageElement` once ready (or rejects on error). */\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 /** Converts a `Blob` to a `data:` URL string. */\n static blobToDataURL(blob) {\n return Utils.Blobs.toDataURL(blob);\n }\n /** Converts a `data:` URL string back into a `Blob`. */\n static dataURLToBlob(dataURL) {\n return Utils.Blobs.fromDataURL(dataURL);\n }\n /** Reads a `Blob`'s content as text, using the given `encoding` (default UTF-8). */\n static blobToText(blob, encoding) {\n return Utils.Blobs.toText(blob, encoding);\n }\n /** Wraps `content` in a `Blob` of the given MIME `type` (default `'text/plain'`). */\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 /** Returns the list of vendor-prefixed `getUserMedia` implementations available on `navigator`, if any. */\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 /** Whether the document (including module scripts) has fully finished loading (`document.readyState === 'complete'`). */\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 /** Registers `listener` to run once the document (and its resources, e.g. images) has fully loaded (the `window` `'load'` event). */\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 /** Cross-browser `Element.matches(selector)`, falling back to vendor-prefixed variants. */\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 /** Resolves the effective language for `el`: its own `lang` attribute, else the document's, else the browser's. */\n static lang(el) {\n return el.lang || document.documentElement.lang || navigator.language;\n }\n /** JSON-stringifies `obj` (via {@link Json}), or passes through `null`/`undefined` unchanged. */\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 /** Parses a `document.cookie`-style string (or `document.cookie` itself, by default) into a name/value map. */\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 /** Cookie helpers, preferring the native `cookieStore` API when available and falling back to `document.cookie` parsing otherwise. */\n static { this.Cookies = {\n /** Retrieves all cookies (or just `cookieName`, if given) as {@link CookieData} entries. */\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 /** Serializes a {@link CookieData} descriptor into a `document.cookie`-assignable string (including `domain`/`path`/`max-age`/`expires`/`Partitioned`/`SameSite`/`Secure` attributes, as provided). */\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 /** Tests whether `el` is currently visible (via the `checkVisibility` API when available, falling back to a CSS-visibility/size heuristic). */\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 /** Tests whether `el` has `className` set, using `classList` when available (with a regex-based fallback). */\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 /** Adds one or more (space-separated) classes to `el`, using `classList` when available. */\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 /** Removes one or more (space-separated) classes from `el`, using `classList` when available. */\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 /** Adds or removes `className` on `el` depending on `on`; see {@link addClass}/{@link removeClass}. */\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 /** Tests whether `el`'s `part` attribute (CSS Shadow Parts) contains `partName`. */\n static hasPart(el, partName) {\n return el.part.contains(partName);\n }\n /** Adds one or more (space-separated) shadow-part names to `el`'s `part` attribute. */\n static addPart(el, partName) {\n DOMTokenList.prototype.add.apply(el.part, partName.trim().split(' '));\n }\n /** Removes one or more (space-separated) shadow-part names from `el`'s `part` attribute. */\n static removePart(el, partName) {\n DOMTokenList.prototype.remove.apply(el.part, partName.trim().split(' '));\n }\n /** Adds or removes `partName` on `el`'s `part` attribute depending on `on`; see {@link addPart}/{@link removePart}. */\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 /** Sums `offsetTop` up the `offsetParent` chain, giving `el`'s vertical position relative to the document rather than just its nearest positioned ancestor. */\n static naturalOffsetTop(el) {\n return (el?.offsetTop ?? 0) + ((el?.offsetParent && el.offsetParent instanceof HTMLElement) ? this.naturalOffsetTop(el.offsetParent) : 0);\n }\n /** Sums `offsetTop` up the `offsetParent` chain (note: mirrors {@link naturalOffsetTop}'s calculation, not `offsetLeft`), giving `el`'s horizontal position relative to the document. */\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 /** Sets the window's vertical scroll position, keeping the current horizontal position. */\n static set scrollTop(y) {\n window.scrollTo(Utils.scrollLeft, y);\n }\n /** Sets the window's horizontal scroll position, keeping the current vertical position. */\n static set scrollLeft(x) {\n window.scrollTo(x, Utils.scrollTop);\n }\n static scrollTo(x, y = true, smooth = true) {\n const yFirst = Utils.isNull(y) || typeof y === 'boolean';\n const left = yFirst ? Utils.scrollLeft : x;\n const top = yFirst ? x : y;\n const behavior = (yFirst ? y : smooth) ? 'smooth' : 'instant';\n window.scrollTo({ behavior, left, top });\n }\n /** The window's current vertical scroll position, with fallbacks for older browsers. */\n static get scrollTop() {\n return window.scrollY /*window.pageYOffset*/ || document.documentElement.scrollTop || document.body.scrollTop || 0;\n }\n /** The window's current horizontal scroll position, with fallbacks for older browsers. */\n static get scrollLeft() {\n return window.scrollX /*window.pageXOffset*/ || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n }\n /** The window's current viewport size (`{ width, height }`), with fallbacks for older browsers. */\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 /** Tests whether `obj` is \"empty\" (per {@link NullChecker.isEmpty}: `null`/`undefined`/`''`/an empty array or object), excluding DOM `Node`s (which are never considered empty here). */\n static isEmpty(obj) {\n return NullChecker.isEmpty(obj) && !(obj instanceof Node);\n }\n /** Type-guarding test for `obj` being `null` or `undefined`. */\n static isNull(obj) {\n return NullChecker.isNull(obj);\n }\n // legacy\n /** Type-guarding test for `val` being an array. */\n static isArray(val) {\n return Array.isArray(val);\n }\n /** Tests whether `val` is `null`/`undefined` or \"empty\"; see {@link isNull}/{@link isEmpty}. */\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 /** Deep-clones `obj`; see {@link DeepCloner}. */\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 /** Runs `task` on the next animation frame and wraps its result in a `Promise`. */\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 /** URL/route parsing and formatting helpers, chiefly backing the router (`{segment}`/`{segment?}` template resolution, query-string parsing, route metadata). */\n static { this.URIs = {\n /**\n * Substitutes each `{name}`/`{name?}` template segment in `url` with the matching entry of `parameters`\n * (URL-encoded), then strips out any remaining unmatched *optional* segments.\n * @param url URL/route template containing `{name}`/`{name?}` segments.\n * @param parameters Values to substitute, keyed by segment name.\n * @param removeMatchedParameters When `true`, consumed entries are deleted from `parameters`.\n */\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 /**\n * Appends `parameters` to `url`'s query string (or hash fragment, when `hash` is `true`), URL-encoding\n * names and values, and correctly choosing `?`/`&` (or `#`/`&`) as the joining separator.\n * @param url Base URL.\n * @param parameters Values to append, keyed by parameter name.\n * @param removeNullEntries When `true`, entries whose value is `null`/`undefined` are omitted instead of appended as empty.\n * @param hash When `true`, appends to the URL's hash fragment instead of its query string.\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 /** Parses a query string (or a `Location`'s `.search`, defaulting to `window.location`) into a name/value map. */\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 /** Tests whether `url` contains at least one non-optional `{name}` template segment (as opposed to only `{name?}` ones). */\n hasMandatoryTemplateSegments: function (url) {\n return /(^|\\/)\\{\\.*\\}(\\/|$)/.test(url);\n },\n /** Parses a route template's `{name}`/`{name?}` segments into an ordered list of {@link RouteMetadata} descriptors, consumed by {@link parseState}. */\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 /** Splits `url` into its `protocol`, `domain`, `path`, `query` (including leading `?`) and `hash` (including leading `#`) parts, or `null` if it can't be parsed. */\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 /**\n * Builds a {@link RouterState} for `url`, extracting named route segments per `metadata` (see\n * {@link parseRoute}) as top-level properties, alongside the standard `$path`/`$pathname`/`$querystring`/\n * `$query`/`$hash` keys. Throws if a non-optional route segment declared in `metadata` isn't present in `path`.\n * @param metadata Route segment descriptors, as produced by {@link parseRoute}.\n * @param url Full URL/path being navigated to.\n * @param path Path component override; parsed out of `url` via {@link split} when omitted.\n * @param query Query-string override (including leading `?`); parsed out of `url` when omitted.\n * @param hash Hash-fragment override (including leading `#`); parsed out of `url` when omitted.\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","/// <reference path=\"events.ts\" />\n/** Runtime value (aliasing the built-in `Function`) usable where a constructor reference is needed as a value, paired with the {@link Type} interface for typing it. */\nexport const Type = Function;\n;\n// #region CONSTS\n/** Key used to attach, on an element's constructor, the list of its `@Watch`-decorated (watched) property descriptors. */\nexport const WATCH_PROPS_VAR = 'pacem:properties';\n/** Key used to attach, on an element instance, the list of attribute names currently holding a pending (not-yet-evaluable) binding expression. */\nexport const INSTANCE_BINDINGS_VAR = 'pacem:custom-element:bindings';\n/** Key used to attach, on a templated node, a reference to the custom element instance (\"host\") whose template produced it — used to resolve binding expression scope. */\nexport const INSTANCE_HOST_VAR = 'pacem:custom-element:host';\n/** Key used to attach, on an element instance, its binding-expression evaluation scope object. */\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';\n/** The prefix used for CSS custom properties and classes (e.g. `--{PCSS}-font-main`); configurable independently of the element tag prefix {@link P} via `window.Pacem.Configuration.css`, defaults to {@link P}. */\nexport const PCSS = root?.Configuration?.css ?? P;\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\\.\\$]+/; \n/**\n * A parsed, compiled binding expression (the content of a `{{ ... }}` attribute value). Parsing\n * (see {@link parse}) rewrites special tokens found in the source text - `:host.`, `^item`/`^^item`/...,\n * `^index`/`^^index`/..., `#id`, `::hostProp` - into references resolvable at evaluation time, and\n * records each of them as a {@link PropertyDependency} so the owning element can be notified (via\n * {@link PropertyChangeEvent}) and re-evaluate the expression whenever a dependency changes - this is\n * what powers the two-way/live data binding wired up by the {@link CustomElement} decorator.\n * Expressions with no dependencies are flagged `independent` (effectively a constant) and can be\n * evaluated immediately without waiting for the DOM/scope to be ready.\n */\nexport class Expression {\n constructor() {\n this._pending = false;\n this._independent = false;\n }\n /** The resolved property dependencies (element + property + path) this expression re-evaluates on change. Empty for {@link independent} expressions. */\n get dependencies() {\n return this._dependencies;\n }\n /** The compiled function body used by {@link evaluate}/{@link evaluateAsync} (a `return <expr>;` statement, guarded by a try/catch). */\n get functionBody() {\n return this._fnBody;\n }\n /** The compiled function body used by {@link evaluatePlus} (a bare, non-`return`ing statement, guarded by a try/catch) - suited for expressions run for their side effects, e.g. `on-*` event handlers. */\n get voidBody() {\n return this._voidBody;\n }\n /**\n * `true` when this expression couldn't be resolved against a scope yet (the element wasn't connected\n * to a document/shadow-root at parse time) - a shared, inert placeholder singleton returned by\n * {@link parse} in that case; evaluating it is a no-op. Callers should re-parse once the element is ready.\n */\n get pending() {\n return this._pending;\n }\n /** `true` when the expression has no dependencies (a constant) and can be evaluated immediately, without a resolved scope. */\n get independent() {\n return this._independent;\n }\n /** Evaluates the expression and returns its result, swallowing any runtime error (returning `undefined`). */\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 /** Promise-wrapped variant of {@link evaluate} (resolves synchronously with the same result - kept for call-site uniformity with genuinely async evaluation paths). */\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 /**\n * Executes the expression for its side effects (using {@link voidBody}, so no value is returned),\n * with extra named variables merged into scope alongside the expression's own dependencies -\n * used to expose e.g. `$event` to `on-*` event handler expressions.\n * @param args Extra name/value pairs made available to the expression, in addition to its resolved dependencies.\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 /**\n * Parses a binding expression's source text (the bare content of a `{{ ... }}` attribute, without the\n * delimiters - see {@link CustomElementUtils.extractBindingAttributeExpression}) into an {@link Expression},\n * resolving its special tokens against `element`'s scope (see {@link CustomElementUtils.findScopeContext}).\n * Throws if the expression matches the unsafe-code guard (`new`, `window.`, `document.`, `eval(`).\n * @param expression Bare expression source text.\n * @param element Element the expression is bound to; provides the scope special tokens (`:host.`, `#id`, `^item`, ...) resolve against.\n * @returns A constant expression if it has no dependencies; a shared pending placeholder if `element` isn't attached to a scope yet; otherwise a fully resolved expression.\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 {\n/** Marker base class for elements that behave like `<template>` (e.g. a custom template-proxy element), so template-detection logic can treat them the same as a native `HTMLTemplateElement`. */\nexport class TemplateElement extends HTMLElement {\n}\n//}\n","import { 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' } }`\n/**\n * Static grab-bag of low-level helpers underpinning the {@link CustomElement}/{@link Watch} decorators\n * and the binding-expression engine: attached-property storage (a per-instance, non-enumerable \"bag\"\n * used instead of expando properties), attribute/property name conversion, DOM tree traversal, host/\n * scope resolution for templated content, and binding-attribute parsing.\n */\nexport class CustomElementUtils {\n /** `true` when the platform's `customElements` registry is the Custom Elements polyfill rather than a native implementation. */\n static get polyfilling() {\n return customElements instanceof window['CustomElementRegistry'];\n }\n /** Converts a camelCase property name to its kebab-case attribute-name equivalent (e.g. `myProp` → `my-prop`). */\n static camelToKebab(camelCased) {\n return camelCased && camelCased.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n /** Converts a kebab-case attribute name to its camelCase property-name equivalent (e.g. `my-prop` → `myProp`). */\n static kebabToCamel(kebabCased) {\n return kebabCased && kebabCased.replace(/(-[a-z])/g, (m) => {\n return m[1].toUpperCase();\n });\n }\n /** Waits for the specified alement to be ready. */\n static waitForReady(element) {\n return new Promise((resolve, reject) => {\n if (Utils.isNull(element)) {\n reject('Not found.');\n }\n // if (element.isConnected && !(element instanceof PacemEventTarget)){\n // reject('Invalid element.');\n // }\n if (element.isReady) {\n resolve();\n }\n const callback = () => {\n element.removeEventListener('load', callback);\n resolve();\n };\n element.addEventListener('load', callback);\n });\n }\n /** Waits for the specified element to be ready, then executes the provided callback. */\n static whenReady(element, callback) {\n CustomElementUtils.waitForReady(element).then(callback);\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 /** Retrieves a single `@Watch`-decorated property descriptor by name; see {@link getWatchedProperties}. */\n static getWatchedProperty(target, name) {\n return this.getWatchedProperties(target, true).find(p => p.name === name);\n }\n /**\n * Loads a `<script>` tag once (deduplicated by `src`, cached via {@link import}), resolving when it fires `load`.\n * @param src Script URL.\n * @param integrity Optional Subresource Integrity hash.\n * @param crossorigin Whether to set `crossorigin` on the tag.\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 /**\n * Loads a `<link rel=\"stylesheet\">` tag once (deduplicated by `src`, cached via {@link import}), resolving when it fires `load`.\n * @param src Stylesheet URL.\n * @param integrity Optional Subresource Integrity hash.\n * @param crossorigin Whether to set `crossorigin=\"anonymous\"` on the tag.\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 /**\n * Creates (or reuses an already-present, matching) element of `tagName` with the given attributes and\n * appends it to the DOM, returning a promise that resolves once it loads (or rejects on error). Results\n * are cached per `key` (under `Utils.core.imports`) so repeated calls with the same key are a no-op.\n * @param key Cache/dedupe key (typically the resource URL).\n * @param tagName Tag name of the element to create (e.g. `'script'`, `'link'`).\n * @param attrs Attributes to set on the element, also used to build a matching CSS selector to detect a pre-existing element.\n * @param appendTo Node to append the newly created element to, if none was found. Defaults to `document.body`.\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 /** Theming-related helpers. */\n static { this.Theme = {\n /** Downloads the web fonts referenced by the current theme's `--{@link PCSS}-font-*` CSS custom properties, resolving once at least one font face is ready (or after a short timeout). */\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 /**\n * Stores an arbitrary value \"attached\" to `target` under `name`, in a private, non-enumerable bag\n * (rather than as a plain expando property) so it doesn't show up in `for...in`/`Object.keys`/JSON\n * serialization. Setting `value` to `null`/`undefined` removes the entry. See {@link getAttachedPropertyValue}.\n * @param target Object to attach the value to.\n * @param name Key under which the value is stored.\n * @param value Value to store, or `null`/`undefined` to remove the entry.\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 /** Removes a value previously stored via {@link setAttachedPropertyValue}. */\n static deleteAttachedPropertyValue(target, name) {\n CustomElementUtils.setAttachedPropertyValue(target, name, undefined);\n }\n /**\n * Reads a value previously stored via {@link setAttachedPropertyValue}.\n * @param target Object the value is attached to.\n * @param name Key the value is stored under.\n * @param ensureValue If provided and no value is currently stored, this value is stored and returned (lazy-initialization).\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 /**\n * Writes `value` at the given dotted `path`, rooted at `element` (see {@link resolvePath}), triggering\n * the appropriate `propertychange` notification. For paths nested more than one level deep (and not\n * targeting an `HTMLElement`, which fires change notifications autonomously), the whole root property\n * is cloned, mutated and reassigned so that a `propertychange` fires with meaningful old/new values -\n * a plain nested assignment wouldn't otherwise be observed. Repeater-bound `item` paths are special-cased\n * to update the owning {@link Repeater}'s `datasource` array in place.\n * @param element Root element the path is resolved against.\n * @param path Dotted path (e.g. `'foo.bar[0].baz'`) to the target property.\n * @param value New value to assign.\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 /** Reads the value at the given dotted `path`, rooted at `element`; see {@link resolvePath}. */\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 /**\n * Finds the `Document` or `ShadowRoot` that `element` belongs to - used as the root for resolving\n * scoped binding expressions (e.g. `$document`/`$host` lookups). Falls back to the previously-attached\n * scope value (see `INSTANCE_SCOPE_VAR`, set on `connectedCallback`) when `element` is currently\n * disconnected, and to a legacy manual-walk implementation as a last resort (needed under Jasmine tests,\n * where `element.isConnected` never reports `true`).\n * @param element Element to resolve the containing document/shadow-root scope for.\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 /**\n * Walks up from `element` (crossing shadow-root boundaries via the host element) looking for the\n * first ancestor matching `predicate`.\n * @param element Element to start the upward search from.\n * @param predicate Test invoked (as `this`-bound and argument-passed) against each ancestor.\n * @returns The first matching ancestor, or `undefined` if none matches.\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 /** Finds the nearest ancestor \"shell\" element - matching `.{@link PCSS}-body` - or falls back to `document.body`; see {@link findAncestor}. */\n static findAncestorShell(element) {\n return CustomElementUtils.findAncestor(element, el => Utils.is(el, `.${PCSS}-body`) || el === document.body);\n }\n /** Finds the nearest ancestor that is an instance of `ctor`; see {@link findAncestor}. */\n static findAncestorOfType(element, ctor) {\n return CustomElementUtils.findAncestor(element, el => el instanceof ctor);\n }\n /**\n * Collects the descendants of `element` matching `predicate`, via a `TreeWalker` over element nodes.\n * @param element Root element to search from (exclusive - the walker starts on its descendants).\n * @param predicate Test invoked against each descendant element.\n * @param firstOnly When `true`, stops and returns as soon as one match is found.\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 /** Finds the first descendant of `element` matching `predicate`, or `undefined` if none matches; see {@link findDescendants}. */\n static findFirstDescendant(element, predicate) {\n const any = CustomElementUtils.findDescendants(element, predicate, true);\n return Utils.isNullOrEmpty(any) ? void 0 : any[0];\n }\n /**\n * Queries the whole document for elements matching `selector`, additionally filtered by `filter`.\n * @param selector CSS selector to query for. Defaults to `'[pacem]'` (every Pacem custom element, which all carry that attribute once connected).\n * @param filter Extra predicate applied to each matched element. Defaults to accepting everything.\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 /**\n * Tags every element/document-fragment node inside `template`'s content (that isn't already tagged)\n * with `host` under `INSTANCE_HOST_VAR`, so that once cloned and inserted into the DOM, binding\n * expressions in that fragment can resolve back to the custom element instance (\"host\") that owns\n * this template. See {@link findHostContext}.\n * @param host The custom element instance whose template this is.\n * @param template Template whose content's descendants should be tagged.\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 /**\n * Walks up from `element` looking for the nearest ancestor (inclusive) tagged with a host reference\n * via {@link assignHostContext}; this is the custom element instance whose template produced `element`,\n * used to resolve `$host`/scope references in binding expressions. Returns `undefined` (with a console\n * warning) if `element` is disconnected or isn't part of any templated component.\n * @param element Element to resolve the owning host for.\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 /** Tests whether an attribute's raw string value has binding-expression syntax (`{{ ... }}`). */\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 /** Strips the `{{ }}` delimiters off a binding attribute's raw value, returning the bare expression text. Throws if `attr` isn't a valid binding attribute; see {@link isBindingAttribute}. */\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 /**\n * Parses a `{{ ... }}` binding attribute value into an {@link Expression}, recognizing the optional\n * trailing `, twoway` / `, once` modifier and stamping it onto the expression's dependencies (`twoway`\n * only applies when the expression has exactly one dependency that itself allows two-way binding).\n * @param attr Raw binding attribute value, including the `{{ }}` delimiters.\n * @param element Element the expression is evaluated/bound against (used to resolve scope references).\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 /**\n * Defines an own property `name` on `o` with `attributes`, unless `o` already has an own property\n * descriptor for that name (in which case the existing descriptor is returned untouched).\n * @param o Object to define the property on.\n * @param name Property name.\n * @param attributes Property descriptor to apply if the property isn't already defined.\n * @returns The (possibly pre-existing) property descriptor.\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';\n/** Static lookup helpers for locating the {@link RepeaterItem} context a given element belongs to. */\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}\n/**\n * Base class tracking a single rendered repetition of a {@link Repeater}'s template: it associates a\n * DOM placeholder node with the `item`/`index` scope values that template's binding expressions\n * evaluate against, and is itself attached to that placeholder (see {@link getRepeaterItem}) so\n * descendant elements can find their way back to it via {@link findUpwards}.\n */\nexport class RepeaterItem {\n /**\n * Seeks upwards from `element` (previous siblings, then parent, repeated) for the nearest ancestor\n * placeholder tagged as a {@link RepeaterItem}, skipping `upLevels` matches before returning one -\n * this is how deeply-nested repeaters resolve which repetition (of which ancestor repeater) an\n * expression's `^item`/`^^item`/... token refers to.\n * @param element Element to start the upward search from.\n * @param upLevels 0-based number of matching ancestors to skip before returning one (`0` = nearest).\n * @param logFn Called with a warning message if no match is found and `element` is connected to the DOM.\n */\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 /** Tests whether `node` is the placeholder of some {@link RepeaterItem}. */\n static isRepeaterItem(node) {\n return !Utils.isNull(GET_VAL(node, REPEATERITEM_PLACEHOLDER));\n }\n /** Retrieves the {@link RepeaterItem} attached to `node`, if `node` is a repeater-item placeholder; see {@link isRepeaterItem}. */\n static getRepeaterItem(node) {\n return GET_VAL(node, REPEATERITEM_PLACEHOLDER);\n }\n /** @param _placeholder DOM node (typically a comment) that stands in for this repetition and gets tagged so {@link getRepeaterItem} can retrieve this instance back from it. */\n constructor(_placeholder) {\n this._placeholder = _placeholder;\n SET_VAL(_placeholder, REPEATERITEM_PLACEHOLDER, this);\n }\n /** The DOM placeholder node standing in for this repetition. */\n get placeholder() {\n return this._placeholder;\n }\n}\n// }\n","import { Utils } from './utils';\n/** String tokens accepted by {@link CustomEventUtils.matchModifiers} to describe a keyboard/mouse modifier. */\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 = {}));\n/** Static helpers for inspecting and normalizing native/custom events (coordinates, keyboard modifiers, type checks). */\nexport class CustomEventUtils {\n /**\n * Type-guarding check for whether `evt` is an instance of the given event `type`.\n * @param evt Event to test.\n * @param type Event constructor to test against.\n * @returns `true` (narrowing `evt` to `TEvent`) if `evt instanceof type`.\n */\n static isInstanceOf(evt, type) {\n return evt instanceof type;\n // || CustomElementUtils.getAttachedPropertyValue(evt, 'pacem:custom-event') === evt.type;\n }\n /**\n * Extracts page/client/screen coordinates from a mouse or (single-)touch event, using the first\n * active touch (`touches[0]`, falling back to `changedTouches[0]`) for `TouchEvent`s.\n * @param evt Source mouse/touch event, or an already-extracted {@link UIEventLike}.\n * @returns The event's position in all three coordinate systems.\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 /**\n * Extracts the keyboard-modifier flags (and, for mouse events, the pressed button as `which`) from a native event.\n * @param evt Source keyboard/mouse/touch event, or an already-extracted {@link KeyEventLike}.\n * @returns The captured modifier flags.\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 /**\n * Works around a legacy Edge/ChakraCore bug (see {@link https://github.com/Microsoft/ChakraCore/issues/3952})\n * where an instance built via `super(...)` from a `CustomEvent` subclass constructor doesn't correctly\n * pass `instanceof` checks against that subclass; forcibly resets its prototype when so.\n * @param evt Event instance to fix up.\n * @param type The subclass constructor `evt` is supposed to be an instance of.\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 {\n/**\n * Base class for framework custom events whose `detail` payload is strongly typed as `TDetail`.\n * Thin wrapper around the native `CustomEvent<TDetail>` that also works around an old Edge bug\n * (see {@link CustomEventUtils.fixEdgeCustomEventSubClassInstance}) affecting `CustomEvent` subclasses.\n */\nexport class CustomTypedEvent extends CustomEvent /* new in TypeScript v2.7.1 -> */ {\n /**\n * @param type Event name.\n * @param detail Strongly-typed payload, exposed as `event.detail`.\n * @param eventInit Standard `CustomEvent` initialization options (`bubbles`, `cancelable`, `composed`).\n */\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\n/**\n * Base class for UI-originated custom events: like {@link CustomTypedEvent}, but additionally captures\n * the mouse/touch/keyboard modifiers and coordinates of the originating native event (when supplied),\n * exposing them through the {@link UIEventLike} surface (`which`, `altKey`, `pageX`, `clientY`, ...).\n * Useful for events that are re-dispatched/synthesized (e.g. drag & drop) from an original pointer or\n * keyboard event, so that consumers can still inspect that original event's modifiers/position.\n */\nexport class CustomUIEvent extends CustomEvent {\n /**\n * @param type Event name.\n * @param detail Either the strongly-typed payload, or (when it satisfies `CustomEventInit`, i.e. has a `detail` key) the full event-init object.\n * @param eventInit Either standard `CustomEvent` init options, or the original native event this custom event derives from (in which case its coordinates/modifiers get captured).\n * @param orig The original native mouse/touch/keyboard event this custom event derives from, when `eventInit` is itself the init options.\n */\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}\n/** Event name dispatched whenever an observed attribute changes; see {@link AttributeChangeEvent}. */\nexport const AttributeChangeEventName = 'attributechange';\n/**\n * Dispatched by elements registered with the {@link CustomElement} decorator whenever one of their\n * observed attributes changes, mirroring the native `attributeChangedCallback` as a DOM event.\n */\nexport class AttributeChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super(AttributeChangeEventName, args);\n }\n}\n/** Event name dispatched whenever a `@Watch`-decorated property changes value; see {@link PropertyChangeEvent}. */\nexport const PropertyChangeEventName = 'propertychange';\n/**\n * Dispatched whenever a property decorated with {@link Watch} changes value (unless that decorator's\n * `emit` option is set to `false`). This is the mechanism data-bound expressions listen to in order to\n * re-evaluate themselves when one of their dependencies changes.\n */\nexport class PropertyChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super(PropertyChangeEventName, args);\n }\n}\n// #region NAVIGATING\n/** Event name dispatched by a router *before* a navigation is committed; see {@link RouterNavigatingEvent}. Cancelable: calling `preventDefault()` aborts the navigation. */\nexport const RouterNavigatingEventName = 'navigating';\n/** Event name dispatched by a router *after* a navigation has been committed; see {@link RouterNavigateEvent}. */\nexport const RouterNavigateEventName = 'navigate';\n/** Dispatched by a router once it has navigated to a new `path` (not cancelable — the navigation already happened). */\nexport class RouterNavigateEvent extends CustomTypedEvent {\n /** @param path Either the destination path alone, or the full navigation args (path, title, referrer). */\n constructor(path) {\n super(RouterNavigateEventName, typeof path === 'string' ? { path } : path, { cancelable: false, bubbles: false });\n }\n}\n/** Dispatched by a router right before navigating to `path`; cancelable, so a listener can call `preventDefault()` to abort the navigation. */\nexport class RouterNavigatingEvent extends CustomTypedEvent {\n /** @param path Destination path about to be navigated to. */\n constructor(path) {\n super(RouterNavigatingEventName, path, { cancelable: true, bubbles: false });\n }\n}\n// #endregion\n//}\n","import { CustomTypedEvent } from './events';\n/** Dispatched by an {@link Iterative} container whenever its `index` changes. */\nexport class CurrentIndexChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super('currentindexchange', args);\n }\n}\n//}\n","/// <reference path=\"events.ts\" />\nimport { CustomTypedEvent } from './events';\n//namespace Pacem {\n/** Event name dispatched to signal a generic, named command invocation; see {@link CommandEvent}. */\nexport const CommandEventName = 'command';\n/**\n * Bubbling, cancelable event representing a generic UI command (e.g. a button's `command`/`command-argument`\n * attributes), letting ancestor elements handle named actions without wiring a dedicated listener per command.\n */\nexport class CommandEvent extends CustomTypedEvent {\n constructor(args) {\n super(CommandEventName, args, { bubbles: true, cancelable: true });\n }\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","/// <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};\n/**\n * Built-in {@link PropertyConverter} implementations, keyed by the type they convert to/from. Passed as\n * the `converter` option of a {@link Watch}-decorated property (e.g. `@Watch({ converter: PropertyConverters.Number })`)\n * to control how that property's attribute string is parsed and, on change, reflected back.\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","//namespace Pacem.Net {\n/** HTTP verbs accepted by {@link Fetcher.method} / {@link Http}. */\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 = {}));\n/** Event name dispatched with the raw fetch result payload; see {@link Fetcher.result}. */\nexport const FetchResultEventName = 'fetchresult';\n/** Event name dispatched when a {@link Fetcher}'s request fails. */\nexport const FetchErrorEventName = 'error';\n/** Event name dispatched when a {@link Fetcher}'s request completes successfully. */\nexport const FetchSuccessEventName = 'success';\n/** Static helpers for working with fetch `Response`s. */\nexport class Fetcher {\n /** Tests whether a response carries no body (HTTP 204, or an explicit `Content-Length: 0`). */\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 = () => { };\n/** Error thrown by {@link Http.request} when a request fails outright or completes with a non-2xx status. */\nexport class StatusCodeError extends Error {\n /** @param statusCode HTTP status code (`500` for network-level failures). @param statusText Status text / error message. */\n constructor(statusCode, statusText) {\n super(statusText);\n this.statusCode = statusCode;\n }\n /** The HTTP status code that caused this error. */\n get status() {\n return this.statusCode;\n }\n}\n/** Wraps a completed `XMLHttpRequest` produced by {@link Http.request}, exposing its status, headers and body in convenient forms.\n * @deprecated */\nexport class Response {\n /** @param req The completed `XMLHttpRequest`. @param processTime Elapsed request time, in milliseconds. */\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 /** Elapsed request time, in milliseconds. */\n get processTime() {\n return this._processTime;\n }\n /** Response headers, parsed into a name/value map (lazily, on first access). */\n get headers() {\n if (this._headers === undefined && this._allHeadersRaw)\n this._parseHeaders();\n return this._headers;\n }\n /** The `Content-Length` response header, parsed as a number. */\n get size() {\n return +this.headers['Content-Length'];\n }\n /** The `Content-Type` response header. */\n get mime() {\n return this.headers['Content-Type'];\n }\n /** The `Date` response header, parsed into a `Date`. */\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 /** HTTP status code. */\n get status() { return this._status; }\n /** Raw response body as text. */\n get text() { return this._text; }\n /** Response body, typed per `XMLHttpRequest.responseType` (see {@link type}). */\n get content() { return this._body; }\n /** The `XMLHttpRequest.responseType` used for this request. */\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/**\n * Legacy `XMLHttpRequest`-based HTTP client, superseded by the standard `fetch` API and {@link Fetcher}.\n * Kept for backward compatibility.\n * @deprecated\n */\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 { 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}\n/**\n * Class decorator that turns a class extending `HTMLElement` (typically {@link PacemEventTarget}) into a\n * fully-fledged Pacem custom element: it registers the tag with the custom elements registry and wraps\n * the standard `connectedCallback`/`disconnectedCallback`/`attributeChangedCallback`/`propertyChangedCallback`\n * lifecycle hooks (calling through to any hooks already defined on the class) so that:\n *\n * - `observedAttributes` is computed automatically from the class's {@link Watch}-decorated properties\n * (in kebab-case), merged with any statically-declared `observedAttributes`.\n * - On first connection, `config.template`/`config.templateUrl` (if provided) is fetched, parsed and\n * injected — into a Shadow Root when `config.shadow` is `true`, otherwise as light-DOM children,\n * splicing any pre-existing light-DOM content into a `<pacem-content>` placeholder if present.\n * - Attribute changes are converted to property values via each watched property's {@link PropertyConverter},\n * and dispatched as an {@link AttributeChangeEvent}.\n * - Property changes are dispatched as a {@link PropertyChangeEvent} (unless the property's `@Watch`\n * config sets `emit: false`) and, when `reflectBack` is enabled, written back onto the corresponding\n * attribute via the converter's `convertBack`.\n * - Binding expression attributes (`{{ ... }}`) are parsed and kept live: dependent properties are\n * re-evaluated whenever one of the expression's upstream properties fires a {@link PropertyChangeEvent}.\n * - Once the template (and all descendant templated custom elements) have finished rendering, the\n * `cloak` attribute is removed and `viewActivatedCallback` fires — this is the right place for logic\n * that depends on the element's full DOM (light or shadow) being in place.\n *\n * @param config Tag name, optional native `customElements.define` options, and optional template/templateUrl/shadow settings.\n * @returns A class decorator to apply to the custom element's class declaration.\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;\n/**\n * Property decorator that turns a plain class field (or accessor) into a Pacem \"watched\" property:\n * a property whose changes are detected (via reference/value comparison, see {@link DefaultComparer}),\n * optionally converted from/to its corresponding attribute string via a {@link PropertyConverter}\n * (see {@link PropertyConverters}), and notified through `propertyChangedCallback` plus a\n * {@link PropertyChangeEvent} (unless `config.emit` is `false`).\n *\n * Must be paired with the {@link CustomElement} class decorator, which is what actually reads the list\n * of watched properties (via `WATCH_PROPS_VAR`) to compute `observedAttributes` and wire up attribute/\n * property change plumbing — `@Watch` alone, on a class not decorated with `@CustomElement`, only sets\n * up the getter/setter and change notification, with no attribute involvement.\n *\n * Array-valued properties are additionally instrumented: their mutating methods (`push`, `pop`, `splice`,\n * `shift`, `unshift`, `copyWithin`) are patched so in-place mutations also trigger a change notification.\n *\n * @param config Optional behavior: `converter` (attribute↔property conversion, default `PropertyConverters.None`),\n * `emit` (whether to dispatch a {@link PropertyChangeEvent}, default `true`), `debounce` (delay the\n * change notification, either by a fixed number of milliseconds or `true` for one animation frame),\n * and `reflectBack` (write the property value back onto the attribute on change, default `false`).\n * @returns A property decorator to apply to the watched field/accessor.\n */\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}\n/**\n * Property decorator that turns a class field into a lazily-resolved, cached reference to a descendant\n * element matching `selector`. Resolution happens on first read (via `shadowRoot.querySelectorAll` when\n * available, falling back to the element itself), and only nodes whose `INSTANCE_HOST_VAR` points back\n * at `this` are considered — this keeps the lookup scoped to the current element's own template output,\n * skipping over descendants that belong to a nested custom element's own template. The cache is reset\n * whenever the host element reconnects to the DOM (`connectedCallback`, see the {@link CustomElement} decorator).\n *\n * @param selector CSS selector identifying the child element to bind to.\n * @returns A property decorator to apply to the view-child field (read-only; no setter is defined).\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\n/**\n * Method decorator that serializes calls to an async (promise-returning) method on a per-instance basis:\n * while an invocation is in flight, further calls are queued (their arguments buffered) instead of running\n * concurrently, and each queued call gets its own promise that resolves/rejects once it eventually runs.\n * Once the in-flight call settles, the oldest buffered call (if any) is dequeued and executed next.\n * Methods that don't return a promise-like value are simply invoked synchronously with no queuing.\n *\n * @returns A method decorator to apply to an async instance method.\n */\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}\n/**\n * Method decorator that debounces calls to an instance method: repeated calls within the debounce window\n * cancel the previously scheduled invocation and reschedule it, so only the last call in a rapid burst\n * actually runs (with its own arguments), after the window elapses.\n *\n * @param msecs Debounce delay in milliseconds, or `true` to debounce to the next animation frame (`requestAnimationFrame`) instead of a fixed delay. Defaults to `50`.\n * @param keyFactory Computes the per-instance timer key from the method name and call arguments; override to scope debouncing per argument (e.g. debounce separately per id) instead of per method. Defaults to a single shared key per method.\n * @returns A method decorator to apply to the instance method to debounce.\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}\n/**\n * Method decorator that throttles calls to an instance method: the first call in a window runs immediately;\n * further calls arriving before the window elapses are not dropped but coalesced — only the most recent\n * set of arguments is remembered and, once the window elapses, one trailing call runs with those arguments\n * (mirroring a classic \"leading + trailing\" throttle).\n *\n * @param msecs Throttle window in milliseconds, or `true` to use a single animation frame (`requestAnimationFrame`) as the window. Defaults to `50`.\n * @param keyFactory Computes the per-instance timer key from the method name and call arguments; override to scope throttling per argument instead of per method. Defaults to a single shared key per method.\n * @returns A method decorator to apply to the instance method to throttle.\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}\n/**\n * Method decorator that registers a static/instance method as a globally-named {@link TransformFunction},\n * making it callable by name from template binding expressions (e.g. `{{ ^value | myTransform }}`).\n * The registration is global (attached under `Utils.core`, dot-segmented by `name`), not per-instance.\n *\n * @param name Dot-separated registration path (e.g. `'strings.upper'`); segments before the last create/reuse nested namespaces under `Utils.core`. Defaults to the decorated method's own name when omitted.\n * @returns A method decorator to apply to the transform function.\n */\nexport function Transformer(name) {\n return function (target, key, descriptor) {\n const method = descriptor.value;\n Transforms.register(name, method);\n };\n}\n","//namespace Pacem {\n/** Framework-wide default settings. */\nexport const Defaults = {\n USE_SHADOW_ROOT: /*'attachShadow' in Element.prototype &&*/ false /* <- wait until html-imports */\n};\n//}\n","//namespace Pacem.Logging {\n/** Severity levels accepted by {@link Logger.log}, and used by {@link PacemEventTarget.log}. */\nexport var LogLevel;\n(function (LogLevel) {\n /** Fine-grained diagnostic detail. */\n LogLevel[\"Trace\"] = \"trace\";\n /** Development-time diagnostic detail. */\n LogLevel[\"Debug\"] = \"debug\";\n /** Recoverable but noteworthy condition. */\n LogLevel[\"Warn\"] = \"warn\";\n /** Unrecoverable or unexpected failure. */\n LogLevel[\"Error\"] = \"error\";\n /** General informational message. */\n LogLevel[\"Info\"] = \"info\";\n /** Generic/default-severity message. */\n LogLevel[\"Log\"] = \"log\";\n})(LogLevel || (LogLevel = {}));\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 {\n/**\n * Base class for (almost) every Pacem custom element. Extends `HTMLElement` with the framework's\n * common lifecycle/event plumbing: `on-{event-type}` attribute handlers (see {@link emit}), a\n * {@link disabled} property that suppresses both outgoing (`dispatchEvent`) and incoming\n * (`emitHandler`) events, an optional {@link logger} sink, and an {@link isReady} flag toggled once\n * `viewActivatedCallback` has fired (see the {@link CustomElement} decorator for when that happens).\n * Concrete elements are expected to be decorated with `@CustomElement` and typically override\n * `propertyChangedCallback`/`viewActivatedCallback`/`connectedCallback`/`disconnectedCallback`,\n * calling `super.xxxCallback()` first/last as documented on each.\n */\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","//namespace Pacem.RegularExpressions {\n/** A pattern that can never match any string (`/a^/`); useful as a safe no-op default for optional matcher parameters. */\nexport const EMPTY_MATCHER = /a^/;\n/** Static regular-expression helpers. */\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","import { Utils } from './utils';\n//namespace Pacem {\nconst EXPIRATION_FIELD = '_exp';\n/**\n * JSON-serializing wrapper around `sessionStorage`/`localStorage` that transparently supports per-key\n * expiration: values stored with a `duration` are stamped with an expiry timestamp and evicted lazily\n * (checked on the next {@link getPropertyValue} call for that key, not via a timer). Session storage and\n * local storage are treated as a single logical namespace - storing a key in one clears any same-named entry in the other.\n */\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 /**\n * Retrieves a previously stored value by `name`, checking session storage first, then local storage.\n * Returns `null` if not found, or if found but past its expiration.\n * @param name The unique key.\n */\n getPropertyValue(name) {\n return this._parseValue(this._getStorage(false), name)\n || this._parseValue(this._getStorage(true), name);\n }\n /** Clears both session and local storage entirely. */\n clear() {\n var storage = this._getStorage(true);\n storage.clear();\n storage = this._getStorage(false);\n storage.clear();\n }\n ;\n /** Removes a single entry by `name` from both session and local storage. */\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","/// <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}\n/**\n * The framework's built-in library of template-expression transform functions. Each static method here\n * is registered, via the {@link Transformer} decorator, under `Utils.core` (mostly by its own method\n * name - see each method's `@Transformer(...)` name override where present) so it becomes callable by\n * name from binding expressions (e.g. `{{ ^value | size }}`). Not part of the module's exported surface -\n * consumers use these by their registered transform name, not by importing this class.\n */\nclass Transforms {\n /**\n * Wraps every case-insensitive occurrence of each whitespace-separated token of `query` found in `src`\n * (skipping matches inside HTML tags) with a `<span class=\"{css}\">` highlight wrapper.\n * @param src Source HTML/text to search within.\n * @param query Whitespace-separated search terms.\n * @param css CSS class applied to the highlight `<span>`. Defaults to `{PCSS}-highlight`.\n */\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 /** Left-pads `src` (stringified) to `length` characters using `pad`; see {@link Utils.leftPad}. */\n static padleft(src, length, pad) {\n return Utils.leftPad('' + src, length, pad);\n }\n /** Formats a byte count `src` as a human-readable size string (`B`/`kB`/`MB`/`GB`), or `'-'` if not a positive number. */\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 /**\n * Formats a decimal-degrees number `src` as degrees/minutes/seconds (e.g. `41° 53' 24\"`).\n * @param src Decimal degrees value (sign indicates direction).\n * @param degSeparator Text following the degrees component.\n * @param minSeparator Text following the minutes component.\n * @param secSeparator Text following the seconds component.\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 /**\n * Formats a date-like value `src` (parsed via {@link Utils.parseDate}) as text.\n * @param src Date, timestamp, or parseable date string.\n * @param format Either a named shorthand (`'iso'`, `'isodate'`, `'localdate'`, `'time'`/`'localtime'`, `'full'`, or the default locale date format) or an `Intl.DateTimeFormatOptions` object.\n * @param culture BCP 47 locale to format with. Defaults to the browser's language.\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 /**\n * Formats the elapsed time between `start` and `end`.\n * @param start Start date-like value.\n * @param end End date-like value.\n * @param format Either an `Intl.DateTimeFormatOptions` (formatted as a UTC duration, optionally sign-prefixed via `sign: true`), or omitted for the legacy `\"{d}d {h}h {m}m {s}s {ms}ms\"` textual format.\n * @param culture BCP 47 locale to format with (only used with `Intl.DateTimeFormatOptions`). Defaults to the browser's language.\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 /** Formats `src` as a currency amount using `Intl.NumberFormat`. @param currency ISO 4217 currency code. @param culture BCP 47 locale. Defaults to the browser's language. */\n static currency(src, currency, culture) {\n return new Intl.NumberFormat(culture ?? navigator.language, { style: 'currency', currency: currency }).format(src);\n }\n /**\n * Formats `src` as a number using `Intl.NumberFormat`.\n * @param formatOrCulture Either a BCP 47 locale string, or `Intl.NumberFormatOptions` (in which case `culture` supplies the locale).\n * @param culture BCP 47 locale, used only when `formatOrCulture` is a format-options object. Defaults to the browser's language.\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 /** Filters `src` with `filter`; a thin wrapper over `Array.prototype.filter` usable from template expressions. */\n static filter(src, filter) {\n return src.filter(filter);\n }\n /** Sorts `src` in place (ascending, via `>`/`<` comparison), optionally by a property path when items are objects. @param prop Property name to sort by; omit to compare items directly. */\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 /** Tests `input` against a `RegExp` built from `pattern`/`flags`. Registered as `regex.isMatch`. */\n static isMatch(input, pattern, flags) {\n return new RegExp(pattern, flags).test(input);\n }\n // #endregion\n // #region shortcuts from 'Utils'\n /** Template-expression shortcut for {@link Utils.isEmpty}. */\n static isEmpty(obj) {\n return Utils.isEmpty(obj);\n }\n /** Template-expression shortcut for {@link Utils.isNull}. */\n static isNull(obj) {\n return Utils.isNull(obj);\n }\n /** Template-expression shortcut for {@link Utils.isNullOrEmpty}. */\n static isNullOrEmpty(obj) {\n return Utils.isNullOrEmpty(obj);\n }\n /** Reads a CSS custom property's value off the document; see {@link Utils.Css.getVariableValue}. Registered as `cssvar`. */\n static getCssVariable(name) {\n return Utils.Css.getVariableValue(name);\n }\n /** Reads a query-string parameter's value off the current URL; see {@link Utils.URIs.parseQuery}. Registered as `querystring`. */\n static getQuerystring(name) {\n return Utils.URIs.parseQuery()[name];\n }\n // #endregion\n // #region shortcuts from 'CustomElementUtils'\n /** Template-expression shortcut for {@link CustomElementUtils.Theme}'s `importWebFonts`. */\n static importThemeWebFonts() {\n return CustomElementUtils.Theme.importWebFonts();\n }\n /** Template-expression shortcut for {@link CustomElementUtils.findHostContext}. Registered as `host`. */\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","// 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}\n/**\n* Collection of ready-made {@link Easing} functions, each paired with its CSS timing-function equivalent.\n*/\nexport const Easings = {\n /** No easing: progress is proportional to elapsed time. */\n linear: assembleEasing(EASINGS.linear, \"linear\"),\n /** Sine ease-in: starts slow, accelerates towards the end. */\n sineIn: assembleEasing(EASINGS.sineIn, 'cubic-bezier(0.12, 0, 0.39, 0)'),\n /** Sine ease-out: starts fast, decelerates towards the end. */\n sineOut: assembleEasing(EASINGS.sineOut, 'cubic-bezier(0.61, 1, 0.88, 1)'),\n /** Sine ease-in-out: accelerates then decelerates, symmetric around the midpoint. */\n sineInOut: assembleEasing(EASINGS.sineInOut, 'cubic-bezier(0.37, 0, 0.63, 1)'),\n // TODO: set correct pairing\n /** Exponential ease-in: starts very slow, accelerates sharply towards the end. */\n expoIn: assembleEasing(EASINGS.expoIn, 'cubic-bezier(0.7, 0, 0.84, 0)'),\n /** Exponential ease-out: starts very fast, decelerates sharply towards the end. */\n expoOut: assembleEasing(EASINGS.expoOut, 'cubic-bezier(0.16, 1, 0.3, 1)'),\n /** Exponential ease-in-out: sharp acceleration then sharp deceleration, symmetric around the midpoint. */\n expoInOut: assembleEasing(EASINGS.expoInOut, 'cubic-bezier(0.87, 0, 0.13, 1)'),\n};\n//}\n","import { CustomTypedEvent } from '../events';\n/**\n* `step` event dispatched on every animation frame of a running tween, carrying the current progress and value.\n*/\nexport class AnimationEvent extends CustomTypedEvent {\n constructor(args) {\n super(\"step\", args);\n }\n}\n/**\n* `end` event dispatched once a tween/animation completes.\n*/\nexport class AnimationEndEvent extends CustomEvent {\n constructor() {\n super('end');\n }\n}\n/**\n* `start` event dispatched when a tween/animation begins.\n*/\nexport class AnimationStartEvent extends CustomEvent {\n constructor() {\n super('start');\n }\n}\n//}\n","//namespace Pacem.Animations {\nimport { Easings } from './easings';\n/**\n* Runs `requestAnimationFrame`-driven numeric tweens between two values, invoking a callback on each frame.\n*/\nexport class TweenService {\n /**\n * Tweens a numeric value from `from` to `to` over `duration` milliseconds, invoking `callback` on every animation frame.\n * @param from Starting value.\n * @param to Ending value.\n * @param duration Tween duration, in milliseconds.\n * @param delay Delay before the tween starts, in milliseconds (default `0`).\n * @param easing Easing function applied to the normalized `[0,1]` time (defaults to {@link Easings.linear}).\n * @param callback Invoked on every frame (and once more with `time === 1.0`) with the normalized time and the current value.\n * @returns A promise resolved when the tween completes.\n */\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 {\n/**\n* `requestAnimationFrame`-driven timer that invokes a callback at (approximately) a given frame rate.\n* Instances are created via the static {@link Timer.run} factory rather than `new`.\n*/\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 /**\n * Creates and starts a new {@link Timer}.\n * @param callback Invoked on every tick with the current frame timestamp.\n * @param fps Target frame rate, in frames per second (default `60`).\n */\n static run(callback, fps = 60) {\n return new Timer(callback, fps);\n }\n /** Stops the timer, cancelling any pending animation frame. */\n stop() {\n cancelAnimationFrame(this.#handle);\n }\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 = {}));\n/**\n* Base class shared by the drag & drop event-args classes; wraps a {@link DragDropEventArgs} builder and exposes its common, read-only facets.\n*/\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}\n/**\n* Event args dispatched with the {@link DragDropEventType.Init} event, mutable so listeners can override\n* the `placeholder` and `data` before the drag actually starts.\n*/\nexport class DragDropInitEventArgsClass extends DragDropEventArgsBaseClass {\n constructor(_builder) {\n super(_builder);\n this.placeholder = _builder.placeholder;\n this.data = _builder.data;\n }\n /** Builds a new {@link DragDropInitEventArgsClass} out of a plain {@link DragDropEventArgs} builder. */\n static fromArgs(builder) {\n return new DragDropInitEventArgsClass(Utils.extend({}, builder));\n }\n}\n/**\n* Read-only event args dispatched with the drag/drop lifecycle events other than `draginit` (start, drag, drop, over, out, end).\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 /** @readonly Gets the element used as a dragging placeholder. */\n get placeholder() {\n return this._placeholder;\n }\n /** @readonly Gets the logical payload being dragged. */\n get data() {\n return this._data;\n }\n /** Builds a new {@link DragDropEventArgsClass} out of a plain {@link DragDropEventArgs} builder. */\n static fromArgs(builder) {\n return new DragDropEventArgsClass(Utils.extend({}, builder));\n }\n}\n/**\n* Custom UI event dispatched throughout the drag & drop lifecycle (see {@link DragDropEventType}).\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 {\n/**\n* Enumerates the resize handles a {@link Rescaler} can expose around a rescalable element.\n*/\nexport var RescaleHandle;\n(function (RescaleHandle) {\n /** All four sides/corners are enabled. */\n RescaleHandle[\"All\"] = \"all\";\n /** The top edge (and its corners) is enabled. */\n RescaleHandle[\"Top\"] = \"top\";\n /** The left edge (and its corners) is enabled. */\n RescaleHandle[\"Left\"] = \"left\";\n /** The right edge (and its corners) is enabled. */\n RescaleHandle[\"Right\"] = \"right\";\n /** The bottom edge (and its corners) is enabled. */\n RescaleHandle[\"Bottom\"] = \"bottom\";\n})(RescaleHandle || (RescaleHandle = {}));\n/**\n* Enumerates the events dispatched throughout the rescale gesture lifecycle.\n*/\nexport var RescaleEventType;\n(function (RescaleEventType) {\n /** First rescaling act. */\n RescaleEventType[\"Start\"] = \"rescalestart\";\n /** Any rescaling act. */\n RescaleEventType[\"Rescale\"] = \"rescale\";\n /** Terminating the rescaling activities. */\n RescaleEventType[\"End\"] = \"rescaleend\";\n})(RescaleEventType || (RescaleEventType = {}));\n/**\n* Read-only event args dispatched with the rescale gesture lifecycle events.\n*/\nexport class RescaleEventArgsClass {\n constructor(_builder) {\n this._builder = _builder;\n }\n /** @readonly Gets the current pointer position. */\n get currentPosition() {\n return this._builder.currentPosition;\n }\n /** @readonly Gets the rectangle the element is being resized to. */\n get targetRect() {\n return this._builder.targetRect;\n }\n /** @readonly Gets the element being resized. */\n get element() {\n return this._builder.element;\n }\n /** @readonly Gets the handle being dragged (see {@link RescaleHandle}). */\n get handle() {\n return this._builder.handle;\n }\n /** Builds a new {@link RescaleEventArgsClass} out of a plain {@link RescaleEventArgs} builder. */\n static fromArgs(builder) {\n return new RescaleEventArgsClass(Utils.extend({}, builder));\n }\n}\n/**\n* Custom UI event dispatched throughout the rescale gesture lifecycle (see {@link RescaleEventType}).\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';\n/**\n* Enumerates the events dispatched throughout the rotate gesture lifecycle.\n*/\nexport var RotateEventType;\n(function (RotateEventType) {\n /** First rotating act. */\n RotateEventType[\"Start\"] = \"rotatestart\";\n /** Any rotating act. */\n RotateEventType[\"Rotate\"] = \"rotate\";\n /** Terminating the rotating activities. */\n RotateEventType[\"End\"] = \"rotateend\";\n})(RotateEventType || (RotateEventType = {}));\n/**\n* Read-only event args dispatched with the rotate gesture lifecycle events.\n*/\nexport class RotateEventArgsClass {\n constructor(_builder) {\n this._builder = _builder;\n }\n /** @readonly Gets the current pointer position. */\n get currentPosition() {\n return this._builder.currentPosition;\n }\n /** @readonly Gets the current rotation, in radians. */\n get rotation() {\n return this._builder.rotation;\n }\n /** @readonly Gets the element being rotated. */\n get element() {\n return this._builder.element;\n }\n /** @readonly Gets the pivot point the element is rotating around. */\n get center() {\n return this._builder.center;\n }\n /** Builds a new {@link RotateEventArgsClass} out of a plain {@link RotateEventArgs} builder. */\n static fromArgs(builder) {\n return new RotateEventArgsClass(Utils.extend({}, builder));\n }\n}\n/**\n* Custom UI event dispatched throughout the rotate gesture lifecycle (see {@link RotateEventType}).\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';\n/**\n* Enumerates the events dispatched throughout the swipe gesture lifecycle.\n*/\nexport var SwipeEventType;\n(function (SwipeEventType) {\n /** Dispatched when the swipe gesture ends (release). */\n SwipeEventType[\"Swipe\"] = \"swipe\";\n /** Dispatched while the pointer is dragging the element around. */\n SwipeEventType[\"Pan\"] = \"pan\";\n /** Dispatched when the swipe ends and its resolved direction is leftward. */\n SwipeEventType[\"SwipeLeft\"] = \"swipeleft\";\n /** Dispatched when the swipe ends and its resolved direction is rightward. */\n SwipeEventType[\"SwipeRight\"] = \"swiperight\";\n /** Dispatched when the swipe ends and its resolved direction is upward. */\n SwipeEventType[\"SwipeUp\"] = \"swipeup\";\n /** Dispatched when the swipe ends and its resolved direction is downward. */\n SwipeEventType[\"SwipeDown\"] = \"swipedown\";\n // end of swipe animation\n /** Dispatched when the snap/bounce-back animation following a swipe completes. */\n SwipeEventType[\"SwipeAnimationEnd\"] = \"swipeanimationend\";\n /** Dispatched when the snap/bounce-back animation following a leftward swipe completes. */\n SwipeEventType[\"SwipeLeftAnimationEnd\"] = \"swipeleftanimationend\";\n /** Dispatched when the snap/bounce-back animation following a rightward swipe completes. */\n SwipeEventType[\"SwipeRightAnimationEnd\"] = \"swiperightanimationend\";\n /** Dispatched when the snap/bounce-back animation following an upward swipe completes. */\n SwipeEventType[\"SwipeUpAnimationEnd\"] = \"swipeupanimationend\";\n /** Dispatched when the snap/bounce-back animation following a downward swipe completes. */\n SwipeEventType[\"SwipeDownAnimationEnd\"] = \"swipedownanimationend\";\n})(SwipeEventType || (SwipeEventType = {}));\n/**\n* Read-only event args dispatched with the swipe gesture lifecycle events.\n*/\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 /** @readonly Gets the resolved swipe direction (`'up'`, `'down'`, `'left'` or `'right'`). */\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 /** @readonly Gets the element being swiped. */\n get element() {\n return this._builder.element;\n }\n /** Builds a new {@link SwipeEventArgsClass} out of a plain {@link SwipeEventArgs} builder. */\n static fromArgs(builder) {\n return new SwipeEventArgsClass(Utils.extend({}, builder));\n }\n}\n/**\n* Custom typed event dispatched throughout the swipe gesture lifecycle (see {@link SwipeEventType}).\n*/\nexport class SwipeEvent extends CustomTypedEvent {\n constructor(type, args, eventInit) {\n super(type, args, eventInit);\n }\n}\n//}\n","import { PacemEventTarget } from '../eventtarget';\n//namespace Pacem.Behaviors{\n/**\n* Base class for the \"behavior\" custom elements (drag & drop, swipe, rotate, rescale, ...) that attach\n* gesture-driven functionality to a set of registered elements without rendering anything of their own.\n*/\nexport class PacemBehavior extends PacemEventTarget {\n #items = new WeakSet();\n /**\n * Registers an element with this behavior, decorating it if it wasn't already registered.\n * @param element Element to register.\n */\n register(element) {\n var container = this.#items;\n if (!container.has(element)) {\n container.add(element);\n this.decorate(element);\n }\n }\n /**\n * Unregisters a previously registered element, undecorating it.\n * @param element Element to unregister.\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 /** @readonly Determines whether the given element is currently registered with this behavior. */\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 { 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', 'pointerdown', 'mouseup', 'pointerup', '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}\n/** Common base class for Pacem custom elements: adds ARIA support, CSS class/part/style bags, visibility, tab order and behaviors. */\nexport class PacemElement extends PacemEventTarget {\n constructor(role, aria) {\n super();\n this.#cssBag = [];\n this.#parts = [];\n this._tabIndex = -1;\n /** Gets or sets the list of behaviors to attach to this element. */\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);\n/** Base class for elements whose (sanitized) inner content is driven by a `content` property, restoring the original markup on disconnect. */\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);\n/** {@link PacemContentElement} variant that renders `content` verbatim, without any sanitization. */\nexport class PacemUnsafeContentElement extends PacemContentElement {\n sanitize(html) {\n return html;\n }\n}\n/** {@link PacemContentElement} variant that strips out `<script>` blocks (and, for `Node` content, `<script>` elements) before rendering `content`. */\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';\n/** Base class for pluggable adapters that drive the focus/navigation behavior of a {@link PacemIterativeElement}. */\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 /**\n * Sets the master's index to the closest available item to the provided one.\n * @param ndx Desired index\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 {\n/** Removes itself from the DOM as soon as it gets connected; handy to strip out placeholder markup at runtime. */\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 {\n/** Warns the user (native `beforeunload` prompt or router-driven confirm dialog) before leaving the page. */\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 {\n/** Wraps a {@link BroadcastChannel}, sending/receiving messages to/from other same-origin browsing contexts. */\nlet PacemBroadcastChannelProxyElement = class PacemBroadcastChannelProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Gets or sets whether to automatically send `message` as soon as it changes (default `true`). */\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 /**\n * Posts a message through the channel.\n * @param message Message to send; defaults to the current `message` property\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 {\n/** Detects the name and version of the current (or a provided) browser user agent. */\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 /** @readonly Gets the detected browser name. */\n get browser() {\n return this.#browser;\n }\n /** @readonly Gets the detected browser version. */\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","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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 {\n/** Holds an arbitrary data model, optionally persisting it to local storage and debouncing/throttling change notifications. */\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 {\n/** Base class for elements that move their own content to another DOM location, restoring nothing on disconnect. */\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};\n/** Listens for an arbitrary DOM event on a `target` element (or `window`) and re-dispatches it as its own `emit` event. */\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.\";\n/** Declarative wrapper around the `fetch()` API, debouncing/aborting requests as its properties change and exposing the parsed `result`. */\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 /** Gets or sets the debounce delay (in milliseconds) applied before auto-triggered fetches (default `100`). */\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}\n/** Keeps track of an undo/redo-capable history of an arbitrary state. */\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 /** Moves the state forward one step, if `canRedo` is `true`. */\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 /** Clears the history stack, keeping only the current state. */\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 /** Moves the state back one step, if `canUndo` is `true`. */\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 {\n/** Sets (or removes) an attribute on the document's root `<html>` element. */\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 {\n/** Conditionally shows or clears its own inner content, restoring the original markup whenever `match` becomes truthy again. */\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 {\n/** Base class for elements that register themselves against an ancestor {@link PacemItemsContainerElement}. */\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);\n/** Base class for container elements holding a registry of {@link PacemItemElement} children. */\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 {\n/** Base class for items belonging to a {@link PacemIterativeElement}, forwarding their property changes to the master's `adapter`. */\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}\n/** Base class for container elements whose items are driven by a pluggable {@link PacemAdapter}, tracking a `current` `index`. */\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';\n/** Sets (or removes) an attribute on the closest ancestor shell element, e.g. to drive layout-wide CSS state. */\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 {\n/** Creates, updates or removes a `<meta>` element in the document `<head>`, keyed by either `name` or `itemprop`. */\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 {\n/** Tracks the browser's network connectivity (`navigator.onLine`), updating `online` on `online`/`offline` events. */\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 {\n/** Plain generic-purpose container element, useful as a databinding/behaviors host wherever a `<div>` would do. */\nlet PacemPanelElement = class PacemPanelElement extends PacemSafeContentElement {\n};\nPacemPanelElement = __decorate([\n CustomElement({ tagName: P + '-panel' })\n], PacemPanelElement);\nexport { PacemPanelElement };\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 {\n/** Redirects consumers (e.g. {@link PacemRepeaterElement}) to an external `<template>` element, firing a `templatechange` event when it changes. */\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 * Repeats its `<template>` content once per `datasource` item, keeping the rendered items in sync as the datasource changes.\n * @example\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 /** Removes the rendered item at the given index. */\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 /** Forces a full re-render of the items against the current `datasource`. */\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' };\n/** Observes size (and, optionally, position) changes of itself or a `target` element, firing a `resize` event accordingly. */\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 /** @readonly Gets the last measured size (and position, if `watchPosition` is set) of the observed target. */\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 { RouterNavigateEvent, RouterNavigatingEvent } from '../../events';\n//namespace Pacem.Components {\nconst CHECK_PATTERN = /^([\\w\\.]:)?\\/\\/[^\\/]+/;\n/** Client-side router: parses/generates paths against a template and drives the browser History API. */\nlet PacemRouterElement = class PacemRouterElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._onScroll = (e) => {\n const scrollRestoration = this.scrollRestoration ?? true;\n if (!scrollRestoration) {\n return;\n }\n const y = Math.floor(Utils.scrollTop);\n window.history.replaceState(Utils.extend({}, window.history.state, { $scrollY: y }), document.title);\n };\n this._onPopState = (evt) => {\n if (!Utils.isNull(evt.state) && !this.#cancelingNavigation) {\n const state = evt.state;\n // navigate and scroll, just in case\n this.path = state.$path;\n }\n };\n }\n #cancelingNavigation;\n #template;\n /**\n * Merges the provided partial state into the current one and returns the resulting parsed {@link RouterState}, without navigating.\n * @param state Piece of new state to be merged\n */\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 const newState = !poppingState\n ? Utils.extend({ $scrollY: 0 }, state)\n : Utils.extend({ $scrollY: 0 }, window.history.state /* < may include `$scrollY` */, state);\n // this one actually does trigger the navigation in the outer world\n // 'cause it is usually bound to a PacemViewElement 'url'\n this.state = newState;\n window.history.scrollRestoration = (this.scrollRestoration ?? true) ? 'manual' : 'auto';\n if (poppingState) {\n window.history.replaceState(newState, document.title);\n }\n else {\n window.history.pushState(newState, 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 document.addEventListener('scroll', this._onScroll, 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 document.removeEventListener('scroll', this._onScroll, false);\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);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemRouterElement.prototype, \"scrollRestoration\", 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}\n/** Registers a service worker and manages its (optional) Push API subscription. */\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 /**\n * Unsubscribes from push notifications.\n * @param subscription Subscription to cancel; defaults to the current `pushSubscription`\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 /**\n * Subscribes to push notifications through the registered service worker.\n * @param publicKey VAPID public key (base64url or raw bytes); defaults to `publicKey`\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\";\n/** Listens for a keyboard shortcut (optionally chorded, e.g. `\"ctrl+k, s\"`) on a target and fires an `execute` event when matched. */\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 {\n/** Sets its own `textContent` to the `text` property, escaping any markup. */\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 {\n/** Injects a `<style>` element into the document `<head>`, populated either inline (`cssText`) or by fetching `src`. */\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 {\n/** Renders the `text` property as its own plain-text content, replacing any existing child markup. */\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 {\n/** Fires a `tick` event on a regular interval, as long as it's enabled and `interval` is greater than zero. */\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 {\n/** Sets `document.title` to `value` whenever it changes. */\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 {\n/** Animates a numeric `value` from `from` to `to` over `duration`, dispatching animation lifecycle events along the way. */\nlet PacemTweenElement = class PacemTweenElement extends PacemEventTarget {\n constructor(_tweener = new TweenService()) {\n super();\n this._tweener = _tweener;\n /** Gets or sets the animation duration, in milliseconds (default `1000`). */\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 /** Starts the animation programmatically and returns a promise resolved once it completes. */\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 {\n/** Wraps a {@link Worker}, sending/receiving messages to/from a web worker script. */\nlet PacemWebWorkerProxyElement = class PacemWebWorkerProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Gets or sets whether to automatically send `message` as soon as it changes (default `true`). */\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 /**\n * Posts a message to the worker.\n * @param message Message to send; defaults to the current `message` property\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","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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: implements {@link DragDropper} on top of {@link PacemBehavior} to make\n * registered elements draggable and, optionally, sortable/droppable onto {@link dropTargets}.\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 /** Wires up the `mousedown`/`touchstart` listeners that arm the drag gesture on the given element. */\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 /** Removes the listeners set up by {@link decorate}. */\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 /** Registers a listener for a {@link DragDropEventType} lifecycle event. */\n addEventListener(type, listener, useCapture) {\n super.addEventListener(type, listener, useCapture);\n }\n /** Unregisters a listener previously added for a {@link DragDropEventType} lifecycle event. */\n removeEventListener(type, listener, useCapture) {\n super.removeEventListener(type, listener, useCapture);\n }\n /** Dispatches a {@link DragDropEvent}, clearing internal per-element bookkeeping once the drag ends. */\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';\n/**\n * Pacem Rescale element adapter: implements {@link Rescaler} on top of {@link PacemBehavior}, decorating\n * registered elements with draggable resize handles (see {@link RescaleHandle}).\n */\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 /** Adds the resize-handle frame (see {@link RescaleHandle}) around the given element. */\n decorate(element) {\n const el = element, css = getComputedStyle(el);\n Utils.addClass(el, PCSS + '-rescalable');\n this._setFrame(el);\n }\n /** Removes the resize-handle frame set up by {@link decorate}. */\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}\n/**\n * Pacem Rotate element adapter: implements {@link Rotator} on top of {@link PacemBehavior} to make\n * registered elements rotatable around a pivot point via mouse/touch drag.\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 /** Wires up the `mousedown`/`touchstart` listeners that arm the rotate gesture on the given element. */\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 /** Removes the listeners set up by {@link decorate}. */\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}\n/**\n * Pacem Swipe element adapter: implements {@link Swiper} on top of {@link PacemBehavior} to make\n * registered elements draggable along one axis, with snap points and fling/bounce-back detection.\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 /** Wires up the `pointerdown` listener that arms the swipe gesture on the given element. */\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 /** Removes the listener set up by {@link decorate}. */\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};\n/**\n* Abstract base class for the `@CustomElement` animation items (color/number/point animations) that can be\n* hosted within a {@link PacemStoryboardElement}. Implements {@link Timeline}.\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);\n/**\n* Base class for animation elements that interpolate their `from`/`to` value via {@link TweenService}.\n* Concrete subclasses only need to supply {@link tweenInterpolationCallback} to map normalized progress to a value of type `T`.\n*/\nexport class TweenAnimationElement extends AnimationElement {\n constructor(_tweener = new TweenService()) {\n super();\n this._tweener = _tweener;\n }\n /** @readonly Gets the {@link TweenService} instance driving this animation. */\n get tweener() {\n return this._tweener;\n }\n #cancelToken = false;\n /** Starts (or restarts) the tween and returns a promise resolved once it completes. */\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 /** Cancels the running tween. */\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 };\n/** Animates a CSS color `target[property]` from `from` to `to` (interpolated in HSLA space) over `duration`. */\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 /** @inheritdoc */\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;\n/** Animates a numeric `target[property]` from `from` to `to` over `duration`. */\nlet PacemNumberAnimationElement = class PacemNumberAnimationElement extends TweenAnimationElement {\n /** @inheritdoc */\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 };\n/** Animates a {@link Point} `target[property]` from `from` to `to` over `duration`. */\nlet PacemPointAnimationElement = class PacemPointAnimationElement extends TweenAnimationElement {\n /** @inheritdoc */\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 {\n/**\n * Groups one or more {@link Timeline}s (either {@link AnimationElement} child items or an explicit\n * `datasource`) and starts/cancels them together, optionally on view activation via `autostart`.\n */\nlet PacemStoryboardElement = class PacemStoryboardElement extends PacemItemsContainerElement {\n /** @inheritdoc */\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 /** Cancels every running {@link Timeline} in this storyboard. */\n cancelAnimation() {\n const ds = this._adaptedDatasource || [];\n for (let timeline of ds) {\n timeline.cancelAnimation();\n }\n }\n /** Starts (or restarts) every {@link Timeline} in this storyboard. */\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","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["Keys","Dates","Colors","Strings","Blobs","Imaging","detect","NullChecker","RepeaterItem","GET_VAL","SET_VAL","Point","Size","Rect","DEL_VAL","Transforms","__decorate","this","HistoryService","RepeaterItemBase","ORCHESTRATOR","PacemAnimationEvent","MOUSE_DOWN","DELEGATE","Matrix2D","PacemRepeaterItem","Angle","Numbers","DEFAULT_FROM","DEFAULT_TO","DeepMerger"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pacem-core.js","sources":["../esm/trees/deepcloner.js","../esm/trees/json.js","../esm/promise.js","../esm/utils.js","../esm/types.js","../esm/prefix.js","../esm/expression.js","../esm/template.js","../esm/utils-customelement.js","../esm/utils-customevent.js","../esm/events.js","../esm/adapter.js","../esm/command.js","../esm/comparers.js","../esm/converters.js","../esm/net/fetcher.js","../esm/net/http.js","../esm/decorators.js","../esm/defaults.js","../esm/logger.js","../esm/eventtarget.js","../esm/regex.js","../esm/storage.js","../esm/transforms.js","../esm/animations/easings.js","../esm/animations/events.js","../esm/animations/tween-service.js","../esm/animations/timer.js","../esm/ui/drag-drop.js","../esm/ui/rescale.js","../esm/ui/rotate.js","../esm/ui/swipe.js","../esm/components/behavior.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/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/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/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/index-iife.js"],"sourcesContent":["// namespace Pacem {\n/**\n * Recursively clones plain objects, arrays, `Date`s and `RegExp`s, preserving reference cycles/shared\n * references within a single `clone` call (via an internal `WeakMap`). DOM `Element`s, `FileSystemHandle`s\n * and `File`s are returned as-is (not cloned) - they aren't meaningfully deep-cloneable and are typically\n * meant to be referenced, not duplicated.\n */\nexport class DeepCloner {\n constructor() {\n }\n /** Deep-clones `obj`; see {@link DeepCloner} for what gets cloned vs. passed through by reference. */\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}\n/**\n * A `JSON.stringify`/`JSON.parse` superset able to round-trip values plain JSON can't represent: circular/\n * shared object references (`$#ref_N` markers), `RegExp` instances, DOM `Element`s (serialized by `id`\n * and revived via `document.getElementById`, so they must have one), and - depending on\n * {@link JsonSerializationOptions.functions} - functions themselves. The source object is deep-cloned\n * first (via {@link DeepCloner}) so serialization never mutates the input.\n */\nexport class Json {\n constructor(_options) {\n this._options = _options;\n }\n /**\n * Serializes `obj` to a JSON string, extended to support circular/shared references, `RegExp`s,\n * `Element`s (by `id`) and, per `options`, functions.\n * @param obj Value to serialize.\n * @param options Controls how function-valued properties are handled.\n */\n static serialize(obj, options) {\n return new Json(options)._serialize(obj);\n }\n /** Deserializes a string produced by {@link serialize}, restoring references, `RegExp`s, `Element`s and functions. */\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 {\n/**\n * A `PromiseLike<T>` whose resolution is externalized: unlike a plain `Promise`, the executor isn't\n * passed a callback up front - instead, `resolve`/`reject` are exposed for the caller to invoke later,\n * via the {@link defer} static factory. Useful when the completion of an operation is driven by code\n * that doesn't naturally live inside a `Promise` executor (e.g. event callbacks, decorator plumbing).\n */\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 /** Standard `PromiseLike.then`, delegating to the underlying native `Promise`. */\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 /** Registers a fulfillment-only callback (fluent, chainable alternative to `then(callback)`). */\n success(callback) {\n this.promise.then(callback, null);\n return this;\n }\n /** Registers a rejection-only callback (fluent, chainable alternative to `then(null, callback)`). */\n error(callback) {\n this.promise.then(null, callback);\n return this;\n }\n /** Creates a new deferred promise and returns its controller: `{ resolve, reject, promise }`. */\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';\n/** Ready-to-use event listener that only calls `evt.stopPropagation()`; handy as an `addEventListener` callback without allocating a closure. */\nexport const stopPropagationHandler = (evt) => {\n evt.stopPropagation();\n};\n/** Ready-to-use event listener that only calls `evt.preventDefault()`; handy as an `addEventListener` callback without allocating a closure. */\nexport const preventDefaultHandler = (evt) => {\n evt.preventDefault();\n};\n/** Ready-to-use event listener that calls both `evt.preventDefault()` and `evt.stopPropagation()`. */\nexport const avoidHandler = (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n};\nconst SEGMENT_PATTERN = /^\\/[^\\/]+/;\nconst ROUTE_SEGMENT_PATTERN = /\\/\\{([a-z\\$_][\\w]*)\\??\\}/;\n/**\n * The framework's static utility grab-bag: general helpers plus namespaced sub-modules (`Json`, `Dates`,\n * `Css`, `Strings`, `Blobs`, `Images`, `Browsers`, `Cookies`, `URIs`) re-exposing (and in some cases\n * extending) functionality from `@pacem/pacem-foundation`. Also the home of `Utils.core`, the global\n * registry object used for cross-cutting framework state (e.g. registered {@link Transformer}s).\n */\nexport class Utils {\n /** The framework's global scratch/registry object (`window[id]`, where `id` defaults to `'pacem'` and is configurable via `window.Pacem.Configuration.core`); created on first access. Used e.g. to store {@link Transformer}-registered transform functions. */\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 /** The platform's (native or polyfilled) `customElements` registry. */\n static get customElements() {\n return window['customElements'];\n }\n // #region GENERAL\n /** Generates a unique numeric-ish id string. */\n static uniqueId() {\n return Keys.uniqueId();\n }\n /** Generates a unique short code string. */\n static uniqueCode() {\n return Keys.uniqueCode();\n }\n /** Generates a random string of the given `length`. */\n static randomString(length) {\n return Keys.randomString(length);\n }\n /** Parses a date-like value (ISO string, `Date`, or timestamp) into a `Date`. */\n static parseDate(input) {\n return Dates.parse(input);\n }\n /** Writes `input` to the system clipboard, using the async Clipboard API when available and falling back to `document.execCommand('copy')` otherwise. */\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 /** Escapes `input` for safe use as a CSS identifier/selector fragment. */\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 /** Reads a CSS custom property's current value off the document root (`:root`/`html`). */\n getVariableValue(name) {\n return getComputedStyle(document.documentElement).getPropertyValue(name);\n },\n /** Sets a CSS custom property's value on the document root (`:root`/`html`). */\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 /** Parses an element's (or style declaration's) computed `transform: matrix(...)` CSS value into its 2D affine matrix components; identity if unset. */\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 /** Strips HTML markup from `html`, returning its plain-text content. */\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 /** Loads an image from `src` and resolves with the `HTMLImageElement` once ready (or rejects on error). */\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 /** Converts a `Blob` to a `data:` URL string. */\n static blobToDataURL(blob) {\n return Utils.Blobs.toDataURL(blob);\n }\n /** Converts a `data:` URL string back into a `Blob`. */\n static dataURLToBlob(dataURL) {\n return Utils.Blobs.fromDataURL(dataURL);\n }\n /** Reads a `Blob`'s content as text, using the given `encoding` (default UTF-8). */\n static blobToText(blob, encoding) {\n return Utils.Blobs.toText(blob, encoding);\n }\n /** Wraps `content` in a `Blob` of the given MIME `type` (default `'text/plain'`). */\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 /** Returns the list of vendor-prefixed `getUserMedia` implementations available on `navigator`, if any. */\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 /** Whether the document (including module scripts) has fully finished loading (`document.readyState === 'complete'`). */\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 /** Registers `listener` to run once the document (and its resources, e.g. images) has fully loaded (the `window` `'load'` event). */\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 /** Cross-browser `Element.matches(selector)`, falling back to vendor-prefixed variants. */\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 /** Resolves the effective language for `el`: its own `lang` attribute, else the document's, else the browser's. */\n static lang(el) {\n return el.lang || document.documentElement.lang || navigator.language;\n }\n /** JSON-stringifies `obj` (via {@link Json}), or passes through `null`/`undefined` unchanged. */\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 /** Parses a `document.cookie`-style string (or `document.cookie` itself, by default) into a name/value map. */\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 /** Cookie helpers, preferring the native `cookieStore` API when available and falling back to `document.cookie` parsing otherwise. */\n static { this.Cookies = {\n /** Retrieves all cookies (or just `cookieName`, if given) as {@link CookieData} entries. */\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 /** Serializes a {@link CookieData} descriptor into a `document.cookie`-assignable string (including `domain`/`path`/`max-age`/`expires`/`Partitioned`/`SameSite`/`Secure` attributes, as provided). */\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 /** Tests whether `el` is currently visible (via the `checkVisibility` API when available, falling back to a CSS-visibility/size heuristic). */\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 /** Tests whether `el` has `className` set, using `classList` when available (with a regex-based fallback). */\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 /** Adds one or more (space-separated) classes to `el`, using `classList` when available. */\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 /** Removes one or more (space-separated) classes from `el`, using `classList` when available. */\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 /** Adds or removes `className` on `el` depending on `on`; see {@link addClass}/{@link removeClass}. */\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 /** Tests whether `el`'s `part` attribute (CSS Shadow Parts) contains `partName`. */\n static hasPart(el, partName) {\n return el.part.contains(partName);\n }\n /** Adds one or more (space-separated) shadow-part names to `el`'s `part` attribute. */\n static addPart(el, partName) {\n DOMTokenList.prototype.add.apply(el.part, partName.trim().split(' '));\n }\n /** Removes one or more (space-separated) shadow-part names from `el`'s `part` attribute. */\n static removePart(el, partName) {\n DOMTokenList.prototype.remove.apply(el.part, partName.trim().split(' '));\n }\n /** Adds or removes `partName` on `el`'s `part` attribute depending on `on`; see {@link addPart}/{@link removePart}. */\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 /** Sums `offsetTop` up the `offsetParent` chain, giving `el`'s vertical position relative to the document rather than just its nearest positioned ancestor. */\n static naturalOffsetTop(el) {\n return (el?.offsetTop ?? 0) + ((el?.offsetParent && el.offsetParent instanceof HTMLElement) ? this.naturalOffsetTop(el.offsetParent) : 0);\n }\n /** Sums `offsetTop` up the `offsetParent` chain (note: mirrors {@link naturalOffsetTop}'s calculation, not `offsetLeft`), giving `el`'s horizontal position relative to the document. */\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 /** Sets the window's vertical scroll position, keeping the current horizontal position. */\n static set scrollTop(y) {\n window.scrollTo(Utils.scrollLeft, y);\n }\n /** Sets the window's horizontal scroll position, keeping the current vertical position. */\n static set scrollLeft(x) {\n window.scrollTo(x, Utils.scrollTop);\n }\n static scrollTo(x, y = true, smooth = true) {\n const yFirst = Utils.isNull(y) || typeof y === 'boolean';\n const left = yFirst ? Utils.scrollLeft : x;\n const top = yFirst ? x : y;\n const behavior = (yFirst ? y : smooth) ? 'smooth' : 'instant';\n window.scrollTo({ behavior, left, top });\n }\n /** The window's current vertical scroll position, with fallbacks for older browsers. */\n static get scrollTop() {\n return window.scrollY /*window.pageYOffset*/ || document.documentElement.scrollTop || document.body.scrollTop || 0;\n }\n /** The window's current horizontal scroll position, with fallbacks for older browsers. */\n static get scrollLeft() {\n return window.scrollX /*window.pageXOffset*/ || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n }\n /** The window's current viewport size (`{ width, height }`), with fallbacks for older browsers. */\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 /** Tests whether `obj` is \"empty\" (per {@link NullChecker.isEmpty}: `null`/`undefined`/`''`/an empty array or object), excluding DOM `Node`s (which are never considered empty here). */\n static isEmpty(obj) {\n return NullChecker.isEmpty(obj) && !(obj instanceof Node);\n }\n /** Type-guarding test for `obj` being `null` or `undefined`. */\n static isNull(obj) {\n return NullChecker.isNull(obj);\n }\n // legacy\n /** Type-guarding test for `val` being an array. */\n static isArray(val) {\n return Array.isArray(val);\n }\n /** Tests whether `val` is `null`/`undefined` or \"empty\"; see {@link isNull}/{@link isEmpty}. */\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 /** Deep-clones `obj`; see {@link DeepCloner}. */\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 /** Runs `task` on the next animation frame and wraps its result in a `Promise`. */\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 /** URL/route parsing and formatting helpers, chiefly backing the router (`{segment}`/`{segment?}` template resolution, query-string parsing, route metadata). */\n static { this.URIs = {\n /**\n * Substitutes each `{name}`/`{name?}` template segment in `url` with the matching entry of `parameters`\n * (URL-encoded), then strips out any remaining unmatched *optional* segments.\n * @param url URL/route template containing `{name}`/`{name?}` segments.\n * @param parameters Values to substitute, keyed by segment name.\n * @param removeMatchedParameters When `true`, consumed entries are deleted from `parameters`.\n */\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 /**\n * Appends `parameters` to `url`'s query string (or hash fragment, when `hash` is `true`), URL-encoding\n * names and values, and correctly choosing `?`/`&` (or `#`/`&`) as the joining separator.\n * @param url Base URL.\n * @param parameters Values to append, keyed by parameter name.\n * @param removeNullEntries When `true`, entries whose value is `null`/`undefined` are omitted instead of appended as empty.\n * @param hash When `true`, appends to the URL's hash fragment instead of its query string.\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 /** Parses a query string (or a `Location`'s `.search`, defaulting to `window.location`) into a name/value map. */\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 /** Tests whether `url` contains at least one non-optional `{name}` template segment (as opposed to only `{name?}` ones). */\n hasMandatoryTemplateSegments: function (url) {\n return /(^|\\/)\\{\\.*\\}(\\/|$)/.test(url);\n },\n /** Parses a route template's `{name}`/`{name?}` segments into an ordered list of {@link RouteMetadata} descriptors, consumed by {@link parseState}. */\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 /** Splits `url` into its `protocol`, `domain`, `path`, `query` (including leading `?`) and `hash` (including leading `#`) parts, or `null` if it can't be parsed. */\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 /**\n * Builds a {@link RouterState} for `url`, extracting named route segments per `metadata` (see\n * {@link parseRoute}) as top-level properties, alongside the standard `$path`/`$pathname`/`$querystring`/\n * `$query`/`$hash` keys. Throws if a non-optional route segment declared in `metadata` isn't present in `path`.\n * @param metadata Route segment descriptors, as produced by {@link parseRoute}.\n * @param url Full URL/path being navigated to.\n * @param path Path component override; parsed out of `url` via {@link split} when omitted.\n * @param query Query-string override (including leading `?`); parsed out of `url` when omitted.\n * @param hash Hash-fragment override (including leading `#`); parsed out of `url` when omitted.\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","/// <reference path=\"events.ts\" />\n/** Runtime value (aliasing the built-in `Function`) usable where a constructor reference is needed as a value, paired with the {@link Type} interface for typing it. */\nexport const Type = Function;\n;\n// #region CONSTS\n/** Key used to attach, on an element's constructor, the list of its `@Watch`-decorated (watched) property descriptors. */\nexport const WATCH_PROPS_VAR = 'pacem:properties';\n/** Key used to attach, on an element instance, the list of attribute names currently holding a pending (not-yet-evaluable) binding expression. */\nexport const INSTANCE_BINDINGS_VAR = 'pacem:custom-element:bindings';\n/** Key used to attach, on a templated node, a reference to the custom element instance (\"host\") whose template produced it — used to resolve binding expression scope. */\nexport const INSTANCE_HOST_VAR = 'pacem:custom-element:host';\n/** Key used to attach, on an element instance, its binding-expression evaluation scope object. */\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';\n/** The prefix used for CSS custom properties and classes (e.g. `--{PCSS}-font-main`); configurable independently of the element tag prefix {@link P} via `window.Pacem.Configuration.css`, defaults to {@link P}. */\nexport const PCSS = root?.Configuration?.css ?? P;\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\\.\\$]+/; \n/**\n * A parsed, compiled binding expression (the content of a `{{ ... }}` attribute value). Parsing\n * (see {@link parse}) rewrites special tokens found in the source text - `:host.`, `^item`/`^^item`/...,\n * `^index`/`^^index`/..., `#id`, `::hostProp` - into references resolvable at evaluation time, and\n * records each of them as a {@link PropertyDependency} so the owning element can be notified (via\n * {@link PropertyChangeEvent}) and re-evaluate the expression whenever a dependency changes - this is\n * what powers the two-way/live data binding wired up by the {@link CustomElement} decorator.\n * Expressions with no dependencies are flagged `independent` (effectively a constant) and can be\n * evaluated immediately without waiting for the DOM/scope to be ready.\n */\nexport class Expression {\n constructor() {\n this._pending = false;\n this._independent = false;\n }\n /** The resolved property dependencies (element + property + path) this expression re-evaluates on change. Empty for {@link independent} expressions. */\n get dependencies() {\n return this._dependencies;\n }\n /** The compiled function body used by {@link evaluate}/{@link evaluateAsync} (a `return <expr>;` statement, guarded by a try/catch). */\n get functionBody() {\n return this._fnBody;\n }\n /** The compiled function body used by {@link evaluatePlus} (a bare, non-`return`ing statement, guarded by a try/catch) - suited for expressions run for their side effects, e.g. `on-*` event handlers. */\n get voidBody() {\n return this._voidBody;\n }\n /**\n * `true` when this expression couldn't be resolved against a scope yet (the element wasn't connected\n * to a document/shadow-root at parse time) - a shared, inert placeholder singleton returned by\n * {@link parse} in that case; evaluating it is a no-op. Callers should re-parse once the element is ready.\n */\n get pending() {\n return this._pending;\n }\n /** `true` when the expression has no dependencies (a constant) and can be evaluated immediately, without a resolved scope. */\n get independent() {\n return this._independent;\n }\n /** Evaluates the expression and returns its result, swallowing any runtime error (returning `undefined`). */\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 /** Promise-wrapped variant of {@link evaluate} (resolves synchronously with the same result - kept for call-site uniformity with genuinely async evaluation paths). */\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 /**\n * Executes the expression for its side effects (using {@link voidBody}, so no value is returned),\n * with extra named variables merged into scope alongside the expression's own dependencies -\n * used to expose e.g. `$event` to `on-*` event handler expressions.\n * @param args Extra name/value pairs made available to the expression, in addition to its resolved dependencies.\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 /**\n * Parses a binding expression's source text (the bare content of a `{{ ... }}` attribute, without the\n * delimiters - see {@link CustomElementUtils.extractBindingAttributeExpression}) into an {@link Expression},\n * resolving its special tokens against `element`'s scope (see {@link CustomElementUtils.findScopeContext}).\n * Throws if the expression matches the unsafe-code guard (`new`, `window.`, `document.`, `eval(`).\n * @param expression Bare expression source text.\n * @param element Element the expression is bound to; provides the scope special tokens (`:host.`, `#id`, `^item`, ...) resolve against.\n * @returns A constant expression if it has no dependencies; a shared pending placeholder if `element` isn't attached to a scope yet; otherwise a fully resolved expression.\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 {\n/** Marker base class for elements that behave like `<template>` (e.g. a custom template-proxy element), so template-detection logic can treat them the same as a native `HTMLTemplateElement`. */\nexport class TemplateElement extends HTMLElement {\n}\n//}\n","import { 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' } }`\n/**\n * Static grab-bag of low-level helpers underpinning the {@link CustomElement}/{@link Watch} decorators\n * and the binding-expression engine: attached-property storage (a per-instance, non-enumerable \"bag\"\n * used instead of expando properties), attribute/property name conversion, DOM tree traversal, host/\n * scope resolution for templated content, and binding-attribute parsing.\n */\nexport class CustomElementUtils {\n /** `true` when the platform's `customElements` registry is the Custom Elements polyfill rather than a native implementation. */\n static get polyfilling() {\n return customElements instanceof window['CustomElementRegistry'];\n }\n /** Converts a camelCase property name to its kebab-case attribute-name equivalent (e.g. `myProp` → `my-prop`). */\n static camelToKebab(camelCased) {\n return camelCased && camelCased.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n /** Converts a kebab-case attribute name to its camelCase property-name equivalent (e.g. `my-prop` → `myProp`). */\n static kebabToCamel(kebabCased) {\n return kebabCased && kebabCased.replace(/(-[a-z])/g, (m) => {\n return m[1].toUpperCase();\n });\n }\n /** Waits for the specified alement to be ready. */\n static waitForReady(element) {\n return new Promise((resolve, reject) => {\n if (Utils.isNull(element)) {\n reject('Not found.');\n }\n // if (element.isConnected && !(element instanceof PacemEventTarget)){\n // reject('Invalid element.');\n // }\n if (element.isReady) {\n resolve();\n }\n const callback = () => {\n element.removeEventListener('load', callback);\n resolve();\n };\n element.addEventListener('load', callback);\n });\n }\n /** Waits for the specified element to be ready, then executes the provided callback. */\n static whenReady(element, callback) {\n CustomElementUtils.waitForReady(element).then(callback);\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 /** Retrieves a single `@Watch`-decorated property descriptor by name; see {@link getWatchedProperties}. */\n static getWatchedProperty(target, name) {\n return this.getWatchedProperties(target, true).find(p => p.name === name);\n }\n /**\n * Loads a `<script>` tag once (deduplicated by `src`, cached via {@link import}), resolving when it fires `load`.\n * @param src Script URL.\n * @param integrity Optional Subresource Integrity hash.\n * @param crossorigin Whether to set `crossorigin` on the tag.\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 /**\n * Loads a `<link rel=\"stylesheet\">` tag once (deduplicated by `src`, cached via {@link import}), resolving when it fires `load`.\n * @param src Stylesheet URL.\n * @param integrity Optional Subresource Integrity hash.\n * @param crossorigin Whether to set `crossorigin=\"anonymous\"` on the tag.\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 /**\n * Creates (or reuses an already-present, matching) element of `tagName` with the given attributes and\n * appends it to the DOM, returning a promise that resolves once it loads (or rejects on error). Results\n * are cached per `key` (under `Utils.core.imports`) so repeated calls with the same key are a no-op.\n * @param key Cache/dedupe key (typically the resource URL).\n * @param tagName Tag name of the element to create (e.g. `'script'`, `'link'`).\n * @param attrs Attributes to set on the element, also used to build a matching CSS selector to detect a pre-existing element.\n * @param appendTo Node to append the newly created element to, if none was found. Defaults to `document.body`.\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 /** Theming-related helpers. */\n static { this.Theme = {\n /** Downloads the web fonts referenced by the current theme's `--{@link PCSS}-font-*` CSS custom properties, resolving once at least one font face is ready (or after a short timeout). */\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 /**\n * Stores an arbitrary value \"attached\" to `target` under `name`, in a private, non-enumerable bag\n * (rather than as a plain expando property) so it doesn't show up in `for...in`/`Object.keys`/JSON\n * serialization. Setting `value` to `null`/`undefined` removes the entry. See {@link getAttachedPropertyValue}.\n * @param target Object to attach the value to.\n * @param name Key under which the value is stored.\n * @param value Value to store, or `null`/`undefined` to remove the entry.\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 /** Removes a value previously stored via {@link setAttachedPropertyValue}. */\n static deleteAttachedPropertyValue(target, name) {\n CustomElementUtils.setAttachedPropertyValue(target, name, undefined);\n }\n /**\n * Reads a value previously stored via {@link setAttachedPropertyValue}.\n * @param target Object the value is attached to.\n * @param name Key the value is stored under.\n * @param ensureValue If provided and no value is currently stored, this value is stored and returned (lazy-initialization).\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 = Utils.isNull(ref) ? null : 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 /**\n * Writes `value` at the given dotted `path`, rooted at `element` (see {@link resolvePath}), triggering\n * the appropriate `propertychange` notification. For paths nested more than one level deep (and not\n * targeting an `HTMLElement`, which fires change notifications autonomously), the whole root property\n * is cloned, mutated and reassigned so that a `propertychange` fires with meaningful old/new values -\n * a plain nested assignment wouldn't otherwise be observed. Repeater-bound `item` paths are special-cased\n * to update the owning {@link Repeater}'s `datasource` array in place.\n * @param element Root element the path is resolved against.\n * @param path Dotted path (e.g. `'foo.bar[0].baz'`) to the target property.\n * @param value New value to assign.\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 /** Reads the value at the given dotted `path`, rooted at `element`; see {@link resolvePath}. */\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 /**\n * Finds the `Document` or `ShadowRoot` that `element` belongs to - used as the root for resolving\n * scoped binding expressions (e.g. `$document`/`$host` lookups). Falls back to the previously-attached\n * scope value (see `INSTANCE_SCOPE_VAR`, set on `connectedCallback`) when `element` is currently\n * disconnected, and to a legacy manual-walk implementation as a last resort (needed under Jasmine tests,\n * where `element.isConnected` never reports `true`).\n * @param element Element to resolve the containing document/shadow-root scope for.\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 /**\n * Walks up from `element` (crossing shadow-root boundaries via the host element) looking for the\n * first ancestor matching `predicate`.\n * @param element Element to start the upward search from.\n * @param predicate Test invoked (as `this`-bound and argument-passed) against each ancestor.\n * @returns The first matching ancestor, or `undefined` if none matches.\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 /** Finds the nearest ancestor \"shell\" element - matching `.{@link PCSS}-body` - or falls back to `document.body`; see {@link findAncestor}. */\n static findAncestorShell(element) {\n return CustomElementUtils.findAncestor(element, el => Utils.is(el, `.${PCSS}-body`) || el === document.body);\n }\n /** Finds the nearest ancestor that is an instance of `ctor`; see {@link findAncestor}. */\n static findAncestorOfType(element, ctor) {\n return CustomElementUtils.findAncestor(element, el => el instanceof ctor);\n }\n /**\n * Collects the descendants of `element` matching `predicate`, via a `TreeWalker` over element nodes.\n * @param element Root element to search from (exclusive - the walker starts on its descendants).\n * @param predicate Test invoked against each descendant element.\n * @param firstOnly When `true`, stops and returns as soon as one match is found.\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 /** Finds the first descendant of `element` matching `predicate`, or `undefined` if none matches; see {@link findDescendants}. */\n static findFirstDescendant(element, predicate) {\n const any = CustomElementUtils.findDescendants(element, predicate, true);\n return Utils.isNullOrEmpty(any) ? void 0 : any[0];\n }\n /**\n * Queries the whole document for elements matching `selector`, additionally filtered by `filter`.\n * @param selector CSS selector to query for. Defaults to `'[pacem]'` (every Pacem custom element, which all carry that attribute once connected).\n * @param filter Extra predicate applied to each matched element. Defaults to accepting everything.\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 /**\n * Tags every element/document-fragment node inside `template`'s content (that isn't already tagged)\n * with `host` under `INSTANCE_HOST_VAR`, so that once cloned and inserted into the DOM, binding\n * expressions in that fragment can resolve back to the custom element instance (\"host\") that owns\n * this template. See {@link findHostContext}.\n * @param host The custom element instance whose template this is.\n * @param template Template whose content's descendants should be tagged.\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 /**\n * Walks up from `element` looking for the nearest ancestor (inclusive) tagged with a host reference\n * via {@link assignHostContext}; this is the custom element instance whose template produced `element`,\n * used to resolve `$host`/scope references in binding expressions. Returns `undefined` (with a console\n * warning) if `element` is disconnected or isn't part of any templated component.\n * @param element Element to resolve the owning host for.\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 /** Tests whether an attribute's raw string value has binding-expression syntax (`{{ ... }}`). */\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 /** Strips the `{{ }}` delimiters off a binding attribute's raw value, returning the bare expression text. Throws if `attr` isn't a valid binding attribute; see {@link isBindingAttribute}. */\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 /**\n * Parses a `{{ ... }}` binding attribute value into an {@link Expression}, recognizing the optional\n * trailing `, twoway` / `, once` modifier and stamping it onto the expression's dependencies (`twoway`\n * only applies when the expression has exactly one dependency that itself allows two-way binding).\n * @param attr Raw binding attribute value, including the `{{ }}` delimiters.\n * @param element Element the expression is evaluated/bound against (used to resolve scope references).\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 /**\n * Defines an own property `name` on `o` with `attributes`, unless `o` already has an own property\n * descriptor for that name (in which case the existing descriptor is returned untouched).\n * @param o Object to define the property on.\n * @param name Property name.\n * @param attributes Property descriptor to apply if the property isn't already defined.\n * @returns The (possibly pre-existing) property descriptor.\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';\n/** Static lookup helpers for locating the {@link RepeaterItem} context a given element belongs to. */\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}\n/**\n * Base class tracking a single rendered repetition of a {@link Repeater}'s template: it associates a\n * DOM placeholder node with the `item`/`index` scope values that template's binding expressions\n * evaluate against, and is itself attached to that placeholder (see {@link getRepeaterItem}) so\n * descendant elements can find their way back to it via {@link findUpwards}.\n */\nexport class RepeaterItem {\n /**\n * Seeks upwards from `element` (previous siblings, then parent, repeated) for the nearest ancestor\n * placeholder tagged as a {@link RepeaterItem}, skipping `upLevels` matches before returning one -\n * this is how deeply-nested repeaters resolve which repetition (of which ancestor repeater) an\n * expression's `^item`/`^^item`/... token refers to.\n * @param element Element to start the upward search from.\n * @param upLevels 0-based number of matching ancestors to skip before returning one (`0` = nearest).\n * @param logFn Called with a warning message if no match is found and `element` is connected to the DOM.\n */\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 /** Tests whether `node` is the placeholder of some {@link RepeaterItem}. */\n static isRepeaterItem(node) {\n return !Utils.isNull(GET_VAL(node, REPEATERITEM_PLACEHOLDER));\n }\n /** Retrieves the {@link RepeaterItem} attached to `node`, if `node` is a repeater-item placeholder; see {@link isRepeaterItem}. */\n static getRepeaterItem(node) {\n return GET_VAL(node, REPEATERITEM_PLACEHOLDER);\n }\n /** @param _placeholder DOM node (typically a comment) that stands in for this repetition and gets tagged so {@link getRepeaterItem} can retrieve this instance back from it. */\n constructor(_placeholder) {\n this._placeholder = _placeholder;\n SET_VAL(_placeholder, REPEATERITEM_PLACEHOLDER, this);\n }\n /** The DOM placeholder node standing in for this repetition. */\n get placeholder() {\n return this._placeholder;\n }\n}\n// }\n","import { Utils } from './utils';\n/** String tokens accepted by {@link CustomEventUtils.matchModifiers} to describe a keyboard/mouse modifier. */\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 = {}));\n/** Static helpers for inspecting and normalizing native/custom events (coordinates, keyboard modifiers, type checks). */\nexport class CustomEventUtils {\n /**\n * Type-guarding check for whether `evt` is an instance of the given event `type`.\n * @param evt Event to test.\n * @param type Event constructor to test against.\n * @returns `true` (narrowing `evt` to `TEvent`) if `evt instanceof type`.\n */\n static isInstanceOf(evt, type) {\n return evt instanceof type;\n // || CustomElementUtils.getAttachedPropertyValue(evt, 'pacem:custom-event') === evt.type;\n }\n /**\n * Extracts page/client/screen coordinates from a mouse or (single-)touch event, using the first\n * active touch (`touches[0]`, falling back to `changedTouches[0]`) for `TouchEvent`s.\n * @param evt Source mouse/touch event, or an already-extracted {@link UIEventLike}.\n * @returns The event's position in all three coordinate systems.\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 /**\n * Extracts the keyboard-modifier flags (and, for mouse events, the pressed button as `which`) from a native event.\n * @param evt Source keyboard/mouse/touch event, or an already-extracted {@link KeyEventLike}.\n * @returns The captured modifier flags.\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 /**\n * Works around a legacy Edge/ChakraCore bug (see {@link https://github.com/Microsoft/ChakraCore/issues/3952})\n * where an instance built via `super(...)` from a `CustomEvent` subclass constructor doesn't correctly\n * pass `instanceof` checks against that subclass; forcibly resets its prototype when so.\n * @param evt Event instance to fix up.\n * @param type The subclass constructor `evt` is supposed to be an instance of.\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 {\n/**\n * Base class for framework custom events whose `detail` payload is strongly typed as `TDetail`.\n * Thin wrapper around the native `CustomEvent<TDetail>` that also works around an old Edge bug\n * (see {@link CustomEventUtils.fixEdgeCustomEventSubClassInstance}) affecting `CustomEvent` subclasses.\n */\nexport class CustomTypedEvent extends CustomEvent /* new in TypeScript v2.7.1 -> */ {\n /**\n * @param type Event name.\n * @param detail Strongly-typed payload, exposed as `event.detail`.\n * @param eventInit Standard `CustomEvent` initialization options (`bubbles`, `cancelable`, `composed`).\n */\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\n/**\n * Base class for UI-originated custom events: like {@link CustomTypedEvent}, but additionally captures\n * the mouse/touch/keyboard modifiers and coordinates of the originating native event (when supplied),\n * exposing them through the {@link UIEventLike} surface (`which`, `altKey`, `pageX`, `clientY`, ...).\n * Useful for events that are re-dispatched/synthesized (e.g. drag & drop) from an original pointer or\n * keyboard event, so that consumers can still inspect that original event's modifiers/position.\n */\nexport class CustomUIEvent extends CustomEvent {\n /**\n * @param type Event name.\n * @param detail Either the strongly-typed payload, or (when it satisfies `CustomEventInit`, i.e. has a `detail` key) the full event-init object.\n * @param eventInit Either standard `CustomEvent` init options, or the original native event this custom event derives from (in which case its coordinates/modifiers get captured).\n * @param orig The original native mouse/touch/keyboard event this custom event derives from, when `eventInit` is itself the init options.\n */\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}\n/** Event name dispatched whenever an observed attribute changes; see {@link AttributeChangeEvent}. */\nexport const AttributeChangeEventName = 'attributechange';\n/**\n * Dispatched by elements registered with the {@link CustomElement} decorator whenever one of their\n * observed attributes changes, mirroring the native `attributeChangedCallback` as a DOM event.\n */\nexport class AttributeChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super(AttributeChangeEventName, args);\n }\n}\n/** Event name dispatched whenever a `@Watch`-decorated property changes value; see {@link PropertyChangeEvent}. */\nexport const PropertyChangeEventName = 'propertychange';\n/**\n * Dispatched whenever a property decorated with {@link Watch} changes value (unless that decorator's\n * `emit` option is set to `false`). This is the mechanism data-bound expressions listen to in order to\n * re-evaluate themselves when one of their dependencies changes.\n */\nexport class PropertyChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super(PropertyChangeEventName, args);\n }\n}\n// #region NAVIGATING\n/** Event name dispatched by a router *before* a navigation is committed; see {@link RouterNavigatingEvent}. Cancelable: calling `preventDefault()` aborts the navigation. */\nexport const RouterNavigatingEventName = 'navigating';\n/** Event name dispatched by a router *after* a navigation has been committed; see {@link RouterNavigateEvent}. */\nexport const RouterNavigateEventName = 'navigate';\n/** Dispatched by a router once it has navigated to a new `path` (not cancelable — the navigation already happened). */\nexport class RouterNavigateEvent extends CustomTypedEvent {\n /** @param path Either the destination path alone, or the full navigation args (path, title, referrer). */\n constructor(path) {\n super(RouterNavigateEventName, typeof path === 'string' ? { path } : path, { cancelable: false, bubbles: false });\n }\n}\n/** Dispatched by a router right before navigating to `path`; cancelable, so a listener can call `preventDefault()` to abort the navigation. */\nexport class RouterNavigatingEvent extends CustomTypedEvent {\n /** @param path Destination path about to be navigated to. */\n constructor(path) {\n super(RouterNavigatingEventName, path, { cancelable: true, bubbles: false });\n }\n}\n// #endregion\n//}\n","import { CustomTypedEvent } from './events';\n/** Dispatched by an {@link Iterative} container whenever its `index` changes. */\nexport class CurrentIndexChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super('currentindexchange', args);\n }\n}\n//}\n","/// <reference path=\"events.ts\" />\nimport { CustomTypedEvent } from './events';\n//namespace Pacem {\n/** Event name dispatched to signal a generic, named command invocation; see {@link CommandEvent}. */\nexport const CommandEventName = 'command';\n/**\n * Bubbling, cancelable event representing a generic UI command (e.g. a button's `command`/`command-argument`\n * attributes), letting ancestor elements handle named actions without wiring a dedicated listener per command.\n */\nexport class CommandEvent extends CustomTypedEvent {\n constructor(args) {\n super(CommandEventName, args, { bubbles: true, cancelable: true });\n }\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","/// <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};\n/**\n * Built-in {@link PropertyConverter} implementations, keyed by the type they convert to/from. Passed as\n * the `converter` option of a {@link Watch}-decorated property (e.g. `@Watch({ converter: PropertyConverters.Number })`)\n * to control how that property's attribute string is parsed and, on change, reflected back.\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","//namespace Pacem.Net {\n/** HTTP verbs accepted by {@link Fetcher.method} / {@link Http}. */\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 = {}));\n/** Event name dispatched with the raw fetch result payload; see {@link Fetcher.result}. */\nexport const FetchResultEventName = 'fetchresult';\n/** Event name dispatched when a {@link Fetcher}'s request fails. */\nexport const FetchErrorEventName = 'error';\n/** Event name dispatched when a {@link Fetcher}'s request completes successfully. */\nexport const FetchSuccessEventName = 'success';\n/** Static helpers for working with fetch `Response`s. */\nexport class Fetcher {\n /** Tests whether a response carries no body (HTTP 204, or an explicit `Content-Length: 0`). */\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 = () => { };\n/** Error thrown by {@link Http.request} when a request fails outright or completes with a non-2xx status. */\nexport class StatusCodeError extends Error {\n /** @param statusCode HTTP status code (`500` for network-level failures). @param statusText Status text / error message. */\n constructor(statusCode, statusText) {\n super(statusText);\n this.statusCode = statusCode;\n }\n /** The HTTP status code that caused this error. */\n get status() {\n return this.statusCode;\n }\n}\n/** Wraps a completed `XMLHttpRequest` produced by {@link Http.request}, exposing its status, headers and body in convenient forms.\n * @deprecated */\nexport class Response {\n /** @param req The completed `XMLHttpRequest`. @param processTime Elapsed request time, in milliseconds. */\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 /** Elapsed request time, in milliseconds. */\n get processTime() {\n return this._processTime;\n }\n /** Response headers, parsed into a name/value map (lazily, on first access). */\n get headers() {\n if (this._headers === undefined && this._allHeadersRaw)\n this._parseHeaders();\n return this._headers;\n }\n /** The `Content-Length` response header, parsed as a number. */\n get size() {\n return +this.headers['Content-Length'];\n }\n /** The `Content-Type` response header. */\n get mime() {\n return this.headers['Content-Type'];\n }\n /** The `Date` response header, parsed into a `Date`. */\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 /** HTTP status code. */\n get status() { return this._status; }\n /** Raw response body as text. */\n get text() { return this._text; }\n /** Response body, typed per `XMLHttpRequest.responseType` (see {@link type}). */\n get content() { return this._body; }\n /** The `XMLHttpRequest.responseType` used for this request. */\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/**\n * Legacy `XMLHttpRequest`-based HTTP client, superseded by the standard `fetch` API and {@link Fetcher}.\n * Kept for backward compatibility.\n * @deprecated\n */\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 { 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}\n/**\n * Class decorator that turns a class extending `HTMLElement` (typically {@link PacemEventTarget}) into a\n * fully-fledged Pacem custom element: it registers the tag with the custom elements registry and wraps\n * the standard `connectedCallback`/`disconnectedCallback`/`attributeChangedCallback`/`propertyChangedCallback`\n * lifecycle hooks (calling through to any hooks already defined on the class) so that:\n *\n * - `observedAttributes` is computed automatically from the class's {@link Watch}-decorated properties\n * (in kebab-case), merged with any statically-declared `observedAttributes`.\n * - On first connection, `config.template`/`config.templateUrl` (if provided) is fetched, parsed and\n * injected — into a Shadow Root when `config.shadow` is `true`, otherwise as light-DOM children,\n * splicing any pre-existing light-DOM content into a `<pacem-content>` placeholder if present.\n * - Attribute changes are converted to property values via each watched property's {@link PropertyConverter},\n * and dispatched as an {@link AttributeChangeEvent}.\n * - Property changes are dispatched as a {@link PropertyChangeEvent} (unless the property's `@Watch`\n * config sets `emit: false`) and, when `reflectBack` is enabled, written back onto the corresponding\n * attribute via the converter's `convertBack`.\n * - Binding expression attributes (`{{ ... }}`) are parsed and kept live: dependent properties are\n * re-evaluated whenever one of the expression's upstream properties fires a {@link PropertyChangeEvent}.\n * - Once the template (and all descendant templated custom elements) have finished rendering, the\n * `cloak` attribute is removed and `viewActivatedCallback` fires — this is the right place for logic\n * that depends on the element's full DOM (light or shadow) being in place.\n *\n * @param config Tag name, optional native `customElements.define` options, and optional template/templateUrl/shadow settings.\n * @returns A class decorator to apply to the custom element's class declaration.\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;\n/**\n * Property decorator that turns a plain class field (or accessor) into a Pacem \"watched\" property:\n * a property whose changes are detected (via reference/value comparison, see {@link DefaultComparer}),\n * optionally converted from/to its corresponding attribute string via a {@link PropertyConverter}\n * (see {@link PropertyConverters}), and notified through `propertyChangedCallback` plus a\n * {@link PropertyChangeEvent} (unless `config.emit` is `false`).\n *\n * Must be paired with the {@link CustomElement} class decorator, which is what actually reads the list\n * of watched properties (via `WATCH_PROPS_VAR`) to compute `observedAttributes` and wire up attribute/\n * property change plumbing — `@Watch` alone, on a class not decorated with `@CustomElement`, only sets\n * up the getter/setter and change notification, with no attribute involvement.\n *\n * Array-valued properties are additionally instrumented: their mutating methods (`push`, `pop`, `splice`,\n * `shift`, `unshift`, `copyWithin`) are patched so in-place mutations also trigger a change notification.\n *\n * @param config Optional behavior: `converter` (attribute↔property conversion, default `PropertyConverters.None`),\n * `emit` (whether to dispatch a {@link PropertyChangeEvent}, default `true`), `debounce` (delay the\n * change notification, either by a fixed number of milliseconds or `true` for one animation frame),\n * and `reflectBack` (write the property value back onto the attribute on change, default `false`).\n * @returns A property decorator to apply to the watched field/accessor.\n */\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}\n/**\n * Property decorator that turns a class field into a lazily-resolved, cached reference to a descendant\n * element matching `selector`. Resolution happens on first read (via `shadowRoot.querySelectorAll` when\n * available, falling back to the element itself), and only nodes whose `INSTANCE_HOST_VAR` points back\n * at `this` are considered — this keeps the lookup scoped to the current element's own template output,\n * skipping over descendants that belong to a nested custom element's own template. The cache is reset\n * whenever the host element reconnects to the DOM (`connectedCallback`, see the {@link CustomElement} decorator).\n *\n * @param selector CSS selector identifying the child element to bind to.\n * @returns A property decorator to apply to the view-child field (read-only; no setter is defined).\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\n/**\n * Method decorator that serializes calls to an async (promise-returning) method on a per-instance basis:\n * while an invocation is in flight, further calls are queued (their arguments buffered) instead of running\n * concurrently, and each queued call gets its own promise that resolves/rejects once it eventually runs.\n * Once the in-flight call settles, the oldest buffered call (if any) is dequeued and executed next.\n * Methods that don't return a promise-like value are simply invoked synchronously with no queuing.\n *\n * @returns A method decorator to apply to an async instance method.\n */\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}\n/**\n * Method decorator that debounces calls to an instance method: repeated calls within the debounce window\n * cancel the previously scheduled invocation and reschedule it, so only the last call in a rapid burst\n * actually runs (with its own arguments), after the window elapses.\n *\n * @param msecs Debounce delay in milliseconds, or `true` to debounce to the next animation frame (`requestAnimationFrame`) instead of a fixed delay. Defaults to `50`.\n * @param keyFactory Computes the per-instance timer key from the method name and call arguments; override to scope debouncing per argument (e.g. debounce separately per id) instead of per method. Defaults to a single shared key per method.\n * @returns A method decorator to apply to the instance method to debounce.\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}\n/**\n * Method decorator that throttles calls to an instance method: the first call in a window runs immediately;\n * further calls arriving before the window elapses are not dropped but coalesced — only the most recent\n * set of arguments is remembered and, once the window elapses, one trailing call runs with those arguments\n * (mirroring a classic \"leading + trailing\" throttle).\n *\n * @param msecs Throttle window in milliseconds, or `true` to use a single animation frame (`requestAnimationFrame`) as the window. Defaults to `50`.\n * @param keyFactory Computes the per-instance timer key from the method name and call arguments; override to scope throttling per argument instead of per method. Defaults to a single shared key per method.\n * @returns A method decorator to apply to the instance method to throttle.\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}\n/**\n * Method decorator that registers a static/instance method as a globally-named {@link TransformFunction},\n * making it callable by name from template binding expressions (e.g. `{{ ^value | myTransform }}`).\n * The registration is global (attached under `Utils.core`, dot-segmented by `name`), not per-instance.\n *\n * @param name Dot-separated registration path (e.g. `'strings.upper'`); segments before the last create/reuse nested namespaces under `Utils.core`. Defaults to the decorated method's own name when omitted.\n * @returns A method decorator to apply to the transform function.\n */\nexport function Transformer(name) {\n return function (target, key, descriptor) {\n const method = descriptor.value;\n Transforms.register(name, method);\n };\n}\n","//namespace Pacem {\n/** Framework-wide default settings. */\nexport const Defaults = {\n USE_SHADOW_ROOT: /*'attachShadow' in Element.prototype &&*/ false /* <- wait until html-imports */\n};\n//}\n","//namespace Pacem.Logging {\n/** Severity levels accepted by {@link Logger.log}, and used by {@link PacemEventTarget.log}. */\nexport var LogLevel;\n(function (LogLevel) {\n /** Fine-grained diagnostic detail. */\n LogLevel[\"Trace\"] = \"trace\";\n /** Development-time diagnostic detail. */\n LogLevel[\"Debug\"] = \"debug\";\n /** Recoverable but noteworthy condition. */\n LogLevel[\"Warn\"] = \"warn\";\n /** Unrecoverable or unexpected failure. */\n LogLevel[\"Error\"] = \"error\";\n /** General informational message. */\n LogLevel[\"Info\"] = \"info\";\n /** Generic/default-severity message. */\n LogLevel[\"Log\"] = \"log\";\n})(LogLevel || (LogLevel = {}));\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 {\n/**\n * Base class for (almost) every Pacem custom element. Extends `HTMLElement` with the framework's\n * common lifecycle/event plumbing: `on-{event-type}` attribute handlers (see {@link emit}), a\n * {@link disabled} property that suppresses both outgoing (`dispatchEvent`) and incoming\n * (`emitHandler`) events, an optional {@link logger} sink, and an {@link isReady} flag toggled once\n * `viewActivatedCallback` has fired (see the {@link CustomElement} decorator for when that happens).\n * Concrete elements are expected to be decorated with `@CustomElement` and typically override\n * `propertyChangedCallback`/`viewActivatedCallback`/`connectedCallback`/`disconnectedCallback`,\n * calling `super.xxxCallback()` first/last as documented on each.\n */\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","//namespace Pacem.RegularExpressions {\n/** A pattern that can never match any string (`/a^/`); useful as a safe no-op default for optional matcher parameters. */\nexport const EMPTY_MATCHER = /a^/;\n/** Static regular-expression helpers. */\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","import { Utils } from './utils';\n//namespace Pacem {\nconst EXPIRATION_FIELD = '_exp';\n/**\n * JSON-serializing wrapper around `sessionStorage`/`localStorage` that transparently supports per-key\n * expiration: values stored with a `duration` are stamped with an expiry timestamp and evicted lazily\n * (checked on the next {@link getPropertyValue} call for that key, not via a timer). Session storage and\n * local storage are treated as a single logical namespace - storing a key in one clears any same-named entry in the other.\n */\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 /**\n * Retrieves a previously stored value by `name`, checking session storage first, then local storage.\n * Returns `null` if not found, or if found but past its expiration.\n * @param name The unique key.\n */\n getPropertyValue(name) {\n return this._parseValue(this._getStorage(false), name)\n || this._parseValue(this._getStorage(true), name);\n }\n /** Clears both session and local storage entirely. */\n clear() {\n var storage = this._getStorage(true);\n storage.clear();\n storage = this._getStorage(false);\n storage.clear();\n }\n ;\n /** Removes a single entry by `name` from both session and local storage. */\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","/// <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}\n/**\n * The framework's built-in library of template-expression transform functions. Each static method here\n * is registered, via the {@link Transformer} decorator, under `Utils.core` (mostly by its own method\n * name - see each method's `@Transformer(...)` name override where present) so it becomes callable by\n * name from binding expressions (e.g. `{{ ^value | size }}`). Not part of the module's exported surface -\n * consumers use these by their registered transform name, not by importing this class.\n */\nclass Transforms {\n /**\n * Wraps every case-insensitive occurrence of each whitespace-separated token of `query` found in `src`\n * (skipping matches inside HTML tags) with a `<span class=\"{css}\">` highlight wrapper.\n * @param src Source HTML/text to search within.\n * @param query Whitespace-separated search terms.\n * @param css CSS class applied to the highlight `<span>`. Defaults to `{PCSS}-highlight`.\n */\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 /** Left-pads `src` (stringified) to `length` characters using `pad`; see {@link Utils.leftPad}. */\n static padleft(src, length, pad) {\n return Utils.leftPad('' + src, length, pad);\n }\n /** Formats a byte count `src` as a human-readable size string (`B`/`kB`/`MB`/`GB`), or `'-'` if not a positive number. */\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 /**\n * Formats a decimal-degrees number `src` as degrees/minutes/seconds (e.g. `41° 53' 24\"`).\n * @param src Decimal degrees value (sign indicates direction).\n * @param degSeparator Text following the degrees component.\n * @param minSeparator Text following the minutes component.\n * @param secSeparator Text following the seconds component.\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 /**\n * Formats a date-like value `src` (parsed via {@link Utils.parseDate}) as text.\n * @param src Date, timestamp, or parseable date string.\n * @param format Either a named shorthand (`'iso'`, `'isodate'`, `'localdate'`, `'time'`/`'localtime'`, `'full'`, or the default locale date format) or an `Intl.DateTimeFormatOptions` object.\n * @param culture BCP 47 locale to format with. Defaults to the browser's language.\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 /**\n * Formats the elapsed time between `start` and `end`.\n * @param start Start date-like value.\n * @param end End date-like value.\n * @param format Either an `Intl.DateTimeFormatOptions` (formatted as a UTC duration, optionally sign-prefixed via `sign: true`), or omitted for the legacy `\"{d}d {h}h {m}m {s}s {ms}ms\"` textual format.\n * @param culture BCP 47 locale to format with (only used with `Intl.DateTimeFormatOptions`). Defaults to the browser's language.\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 /** Formats `src` as a currency amount using `Intl.NumberFormat`. @param currency ISO 4217 currency code. @param culture BCP 47 locale. Defaults to the browser's language. */\n static currency(src, currency, culture) {\n return new Intl.NumberFormat(culture ?? navigator.language, { style: 'currency', currency: currency }).format(src);\n }\n /**\n * Formats `src` as a number using `Intl.NumberFormat`.\n * @param formatOrCulture Either a BCP 47 locale string, or `Intl.NumberFormatOptions` (in which case `culture` supplies the locale).\n * @param culture BCP 47 locale, used only when `formatOrCulture` is a format-options object. Defaults to the browser's language.\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 /** Filters `src` with `filter`; a thin wrapper over `Array.prototype.filter` usable from template expressions. */\n static filter(src, filter) {\n return src.filter(filter);\n }\n /** Sorts `src` in place (ascending, via `>`/`<` comparison), optionally by a property path when items are objects. @param prop Property name to sort by; omit to compare items directly. */\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 /** Tests `input` against a `RegExp` built from `pattern`/`flags`. Registered as `regex.isMatch`. */\n static isMatch(input, pattern, flags) {\n return new RegExp(pattern, flags).test(input);\n }\n // #endregion\n // #region shortcuts from 'Utils'\n /** Template-expression shortcut for {@link Utils.isEmpty}. */\n static isEmpty(obj) {\n return Utils.isEmpty(obj);\n }\n /** Template-expression shortcut for {@link Utils.isNull}. */\n static isNull(obj) {\n return Utils.isNull(obj);\n }\n /** Template-expression shortcut for {@link Utils.isNullOrEmpty}. */\n static isNullOrEmpty(obj) {\n return Utils.isNullOrEmpty(obj);\n }\n /** Reads a CSS custom property's value off the document; see {@link Utils.Css.getVariableValue}. Registered as `cssvar`. */\n static getCssVariable(name) {\n return Utils.Css.getVariableValue(name);\n }\n /** Reads a query-string parameter's value off the current URL; see {@link Utils.URIs.parseQuery}. Registered as `querystring`. */\n static getQuerystring(name) {\n return Utils.URIs.parseQuery()[name];\n }\n // #endregion\n // #region shortcuts from 'CustomElementUtils'\n /** Template-expression shortcut for {@link CustomElementUtils.Theme}'s `importWebFonts`. */\n static importThemeWebFonts() {\n return CustomElementUtils.Theme.importWebFonts();\n }\n /** Template-expression shortcut for {@link CustomElementUtils.findHostContext}. Registered as `host`. */\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","// 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}\n/**\n* Collection of ready-made {@link Easing} functions, each paired with its CSS timing-function equivalent.\n*/\nexport const Easings = {\n /** No easing: progress is proportional to elapsed time. */\n linear: assembleEasing(EASINGS.linear, \"linear\"),\n /** Sine ease-in: starts slow, accelerates towards the end. */\n sineIn: assembleEasing(EASINGS.sineIn, 'cubic-bezier(0.12, 0, 0.39, 0)'),\n /** Sine ease-out: starts fast, decelerates towards the end. */\n sineOut: assembleEasing(EASINGS.sineOut, 'cubic-bezier(0.61, 1, 0.88, 1)'),\n /** Sine ease-in-out: accelerates then decelerates, symmetric around the midpoint. */\n sineInOut: assembleEasing(EASINGS.sineInOut, 'cubic-bezier(0.37, 0, 0.63, 1)'),\n // TODO: set correct pairing\n /** Exponential ease-in: starts very slow, accelerates sharply towards the end. */\n expoIn: assembleEasing(EASINGS.expoIn, 'cubic-bezier(0.7, 0, 0.84, 0)'),\n /** Exponential ease-out: starts very fast, decelerates sharply towards the end. */\n expoOut: assembleEasing(EASINGS.expoOut, 'cubic-bezier(0.16, 1, 0.3, 1)'),\n /** Exponential ease-in-out: sharp acceleration then sharp deceleration, symmetric around the midpoint. */\n expoInOut: assembleEasing(EASINGS.expoInOut, 'cubic-bezier(0.87, 0, 0.13, 1)'),\n};\n//}\n","import { CustomTypedEvent } from '../events';\n/**\n* `step` event dispatched on every animation frame of a running tween, carrying the current progress and value.\n*/\nexport class AnimationEvent extends CustomTypedEvent {\n constructor(args) {\n super(\"step\", args);\n }\n}\n/**\n* `end` event dispatched once a tween/animation completes.\n*/\nexport class AnimationEndEvent extends CustomEvent {\n constructor() {\n super('end');\n }\n}\n/**\n* `start` event dispatched when a tween/animation begins.\n*/\nexport class AnimationStartEvent extends CustomEvent {\n constructor() {\n super('start');\n }\n}\n//}\n","//namespace Pacem.Animations {\nimport { Easings } from './easings';\n/**\n* Runs `requestAnimationFrame`-driven numeric tweens between two values, invoking a callback on each frame.\n*/\nexport class TweenService {\n /**\n * Tweens a numeric value from `from` to `to` over `duration` milliseconds, invoking `callback` on every animation frame.\n * @param from Starting value.\n * @param to Ending value.\n * @param duration Tween duration, in milliseconds.\n * @param delay Delay before the tween starts, in milliseconds (default `0`).\n * @param easing Easing function applied to the normalized `[0,1]` time (defaults to {@link Easings.linear}).\n * @param callback Invoked on every frame (and once more with `time === 1.0`) with the normalized time and the current value.\n * @returns A promise resolved when the tween completes.\n */\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 {\n/**\n* `requestAnimationFrame`-driven timer that invokes a callback at (approximately) a given frame rate.\n* Instances are created via the static {@link Timer.run} factory rather than `new`.\n*/\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 /**\n * Creates and starts a new {@link Timer}.\n * @param callback Invoked on every tick with the current frame timestamp.\n * @param fps Target frame rate, in frames per second (default `60`).\n */\n static run(callback, fps = 60) {\n return new Timer(callback, fps);\n }\n /** Stops the timer, cancelling any pending animation frame. */\n stop() {\n cancelAnimationFrame(this.#handle);\n }\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 = {}));\n/**\n* Base class shared by the drag & drop event-args classes; wraps a {@link DragDropEventArgs} builder and exposes its common, read-only facets.\n*/\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}\n/**\n* Event args dispatched with the {@link DragDropEventType.Init} event, mutable so listeners can override\n* the `placeholder` and `data` before the drag actually starts.\n*/\nexport class DragDropInitEventArgsClass extends DragDropEventArgsBaseClass {\n constructor(_builder) {\n super(_builder);\n this.placeholder = _builder.placeholder;\n this.data = _builder.data;\n }\n /** Builds a new {@link DragDropInitEventArgsClass} out of a plain {@link DragDropEventArgs} builder. */\n static fromArgs(builder) {\n return new DragDropInitEventArgsClass(Utils.extend({}, builder));\n }\n}\n/**\n* Read-only event args dispatched with the drag/drop lifecycle events other than `draginit` (start, drag, drop, over, out, end).\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 /** @readonly Gets the element used as a dragging placeholder. */\n get placeholder() {\n return this._placeholder;\n }\n /** @readonly Gets the logical payload being dragged. */\n get data() {\n return this._data;\n }\n /** Builds a new {@link DragDropEventArgsClass} out of a plain {@link DragDropEventArgs} builder. */\n static fromArgs(builder) {\n return new DragDropEventArgsClass(Utils.extend({}, builder));\n }\n}\n/**\n* Custom UI event dispatched throughout the drag & drop lifecycle (see {@link DragDropEventType}).\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 {\n/**\n* Enumerates the resize handles a {@link Rescaler} can expose around a rescalable element.\n*/\nexport var RescaleHandle;\n(function (RescaleHandle) {\n /** All four sides/corners are enabled. */\n RescaleHandle[\"All\"] = \"all\";\n /** The top edge (and its corners) is enabled. */\n RescaleHandle[\"Top\"] = \"top\";\n /** The left edge (and its corners) is enabled. */\n RescaleHandle[\"Left\"] = \"left\";\n /** The right edge (and its corners) is enabled. */\n RescaleHandle[\"Right\"] = \"right\";\n /** The bottom edge (and its corners) is enabled. */\n RescaleHandle[\"Bottom\"] = \"bottom\";\n})(RescaleHandle || (RescaleHandle = {}));\n/**\n* Enumerates the events dispatched throughout the rescale gesture lifecycle.\n*/\nexport var RescaleEventType;\n(function (RescaleEventType) {\n /** First rescaling act. */\n RescaleEventType[\"Start\"] = \"rescalestart\";\n /** Any rescaling act. */\n RescaleEventType[\"Rescale\"] = \"rescale\";\n /** Terminating the rescaling activities. */\n RescaleEventType[\"End\"] = \"rescaleend\";\n})(RescaleEventType || (RescaleEventType = {}));\n/**\n* Read-only event args dispatched with the rescale gesture lifecycle events.\n*/\nexport class RescaleEventArgsClass {\n constructor(_builder) {\n this._builder = _builder;\n }\n /** @readonly Gets the current pointer position. */\n get currentPosition() {\n return this._builder.currentPosition;\n }\n /** @readonly Gets the rectangle the element is being resized to. */\n get targetRect() {\n return this._builder.targetRect;\n }\n /** @readonly Gets the element being resized. */\n get element() {\n return this._builder.element;\n }\n /** @readonly Gets the handle being dragged (see {@link RescaleHandle}). */\n get handle() {\n return this._builder.handle;\n }\n /** Builds a new {@link RescaleEventArgsClass} out of a plain {@link RescaleEventArgs} builder. */\n static fromArgs(builder) {\n return new RescaleEventArgsClass(Utils.extend({}, builder));\n }\n}\n/**\n* Custom UI event dispatched throughout the rescale gesture lifecycle (see {@link RescaleEventType}).\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';\n/**\n* Enumerates the events dispatched throughout the rotate gesture lifecycle.\n*/\nexport var RotateEventType;\n(function (RotateEventType) {\n /** First rotating act. */\n RotateEventType[\"Start\"] = \"rotatestart\";\n /** Any rotating act. */\n RotateEventType[\"Rotate\"] = \"rotate\";\n /** Terminating the rotating activities. */\n RotateEventType[\"End\"] = \"rotateend\";\n})(RotateEventType || (RotateEventType = {}));\n/**\n* Read-only event args dispatched with the rotate gesture lifecycle events.\n*/\nexport class RotateEventArgsClass {\n constructor(_builder) {\n this._builder = _builder;\n }\n /** @readonly Gets the current pointer position. */\n get currentPosition() {\n return this._builder.currentPosition;\n }\n /** @readonly Gets the current rotation, in radians. */\n get rotation() {\n return this._builder.rotation;\n }\n /** @readonly Gets the element being rotated. */\n get element() {\n return this._builder.element;\n }\n /** @readonly Gets the pivot point the element is rotating around. */\n get center() {\n return this._builder.center;\n }\n /** Builds a new {@link RotateEventArgsClass} out of a plain {@link RotateEventArgs} builder. */\n static fromArgs(builder) {\n return new RotateEventArgsClass(Utils.extend({}, builder));\n }\n}\n/**\n* Custom UI event dispatched throughout the rotate gesture lifecycle (see {@link RotateEventType}).\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';\n/**\n* Enumerates the events dispatched throughout the swipe gesture lifecycle.\n*/\nexport var SwipeEventType;\n(function (SwipeEventType) {\n /** Dispatched when the swipe gesture ends (release). */\n SwipeEventType[\"Swipe\"] = \"swipe\";\n /** Dispatched while the pointer is dragging the element around. */\n SwipeEventType[\"Pan\"] = \"pan\";\n /** Dispatched when the swipe ends and its resolved direction is leftward. */\n SwipeEventType[\"SwipeLeft\"] = \"swipeleft\";\n /** Dispatched when the swipe ends and its resolved direction is rightward. */\n SwipeEventType[\"SwipeRight\"] = \"swiperight\";\n /** Dispatched when the swipe ends and its resolved direction is upward. */\n SwipeEventType[\"SwipeUp\"] = \"swipeup\";\n /** Dispatched when the swipe ends and its resolved direction is downward. */\n SwipeEventType[\"SwipeDown\"] = \"swipedown\";\n // end of swipe animation\n /** Dispatched when the snap/bounce-back animation following a swipe completes. */\n SwipeEventType[\"SwipeAnimationEnd\"] = \"swipeanimationend\";\n /** Dispatched when the snap/bounce-back animation following a leftward swipe completes. */\n SwipeEventType[\"SwipeLeftAnimationEnd\"] = \"swipeleftanimationend\";\n /** Dispatched when the snap/bounce-back animation following a rightward swipe completes. */\n SwipeEventType[\"SwipeRightAnimationEnd\"] = \"swiperightanimationend\";\n /** Dispatched when the snap/bounce-back animation following an upward swipe completes. */\n SwipeEventType[\"SwipeUpAnimationEnd\"] = \"swipeupanimationend\";\n /** Dispatched when the snap/bounce-back animation following a downward swipe completes. */\n SwipeEventType[\"SwipeDownAnimationEnd\"] = \"swipedownanimationend\";\n})(SwipeEventType || (SwipeEventType = {}));\n/**\n* Read-only event args dispatched with the swipe gesture lifecycle events.\n*/\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 /** @readonly Gets the resolved swipe direction (`'up'`, `'down'`, `'left'` or `'right'`). */\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 /** @readonly Gets the element being swiped. */\n get element() {\n return this._builder.element;\n }\n /** Builds a new {@link SwipeEventArgsClass} out of a plain {@link SwipeEventArgs} builder. */\n static fromArgs(builder) {\n return new SwipeEventArgsClass(Utils.extend({}, builder));\n }\n}\n/**\n* Custom typed event dispatched throughout the swipe gesture lifecycle (see {@link SwipeEventType}).\n*/\nexport class SwipeEvent extends CustomTypedEvent {\n constructor(type, args, eventInit) {\n super(type, args, eventInit);\n }\n}\n//}\n","import { PacemEventTarget } from '../eventtarget';\n//namespace Pacem.Behaviors{\n/**\n* Base class for the \"behavior\" custom elements (drag & drop, swipe, rotate, rescale, ...) that attach\n* gesture-driven functionality to a set of registered elements without rendering anything of their own.\n*/\nexport class PacemBehavior extends PacemEventTarget {\n #items = new WeakSet();\n /**\n * Registers an element with this behavior, decorating it if it wasn't already registered.\n * @param element Element to register.\n */\n register(element) {\n var container = this.#items;\n if (!container.has(element)) {\n container.add(element);\n this.decorate(element);\n }\n }\n /**\n * Unregisters a previously registered element, undecorating it.\n * @param element Element to unregister.\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 /** @readonly Determines whether the given element is currently registered with this behavior. */\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 { 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', 'pointerdown', 'mouseup', 'pointerup', '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}\n/** Common base class for Pacem custom elements: adds ARIA support, CSS class/part/style bags, visibility, tab order and behaviors. */\nexport class PacemElement extends PacemEventTarget {\n constructor(role, aria) {\n super();\n this.#cssBag = [];\n this.#parts = [];\n this._tabIndex = -1;\n /** Gets or sets the list of behaviors to attach to this element. */\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);\n/** Base class for elements whose (sanitized) inner content is driven by a `content` property, restoring the original markup on disconnect. */\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);\n/** {@link PacemContentElement} variant that renders `content` verbatim, without any sanitization. */\nexport class PacemUnsafeContentElement extends PacemContentElement {\n sanitize(html) {\n return html;\n }\n}\n/** {@link PacemContentElement} variant that strips out `<script>` blocks (and, for `Node` content, `<script>` elements) before rendering `content`. */\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';\n/** Base class for pluggable adapters that drive the focus/navigation behavior of a {@link PacemIterativeElement}. */\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 /**\n * Sets the master's index to the closest available item to the provided one.\n * @param ndx Desired index\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 {\n/** Removes itself from the DOM as soon as it gets connected; handy to strip out placeholder markup at runtime. */\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 {\n/** Warns the user (native `beforeunload` prompt or router-driven confirm dialog) before leaving the page. */\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 {\n/** Wraps a {@link BroadcastChannel}, sending/receiving messages to/from other same-origin browsing contexts. */\nlet PacemBroadcastChannelProxyElement = class PacemBroadcastChannelProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Gets or sets whether to automatically send `message` as soon as it changes (default `true`). */\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 /**\n * Posts a message through the channel.\n * @param message Message to send; defaults to the current `message` property\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 {\n/** Detects the name and version of the current (or a provided) browser user agent. */\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 /** @readonly Gets the detected browser name. */\n get browser() {\n return this.#browser;\n }\n /** @readonly Gets the detected browser version. */\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","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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 {\n/** Holds an arbitrary data model, optionally persisting it to local storage and debouncing/throttling change notifications. */\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 {\n/** Base class for elements that move their own content to another DOM location, restoring nothing on disconnect. */\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};\n/** Listens for an arbitrary DOM event on a `target` element (or `window`) and re-dispatches it as its own `emit` event. */\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.\";\n/** Declarative wrapper around the `fetch()` API, debouncing/aborting requests as its properties change and exposing the parsed `result`. */\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 /** Gets or sets the debounce delay (in milliseconds) applied before auto-triggered fetches (default `100`). */\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}\n/** Keeps track of an undo/redo-capable history of an arbitrary state. */\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 /** Moves the state forward one step, if `canRedo` is `true`. */\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 /** Clears the history stack, keeping only the current state. */\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 /** Moves the state back one step, if `canUndo` is `true`. */\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 {\n/** Sets (or removes) an attribute on the document's root `<html>` element. */\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 {\n/** Conditionally shows or clears its own inner content, restoring the original markup whenever `match` becomes truthy again. */\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 {\n/** Base class for elements that register themselves against an ancestor {@link PacemItemsContainerElement}. */\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);\n/** Base class for container elements holding a registry of {@link PacemItemElement} children. */\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 {\n/** Base class for items belonging to a {@link PacemIterativeElement}, forwarding their property changes to the master's `adapter`. */\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}\n/** Base class for container elements whose items are driven by a pluggable {@link PacemAdapter}, tracking a `current` `index`. */\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';\n/** Sets (or removes) an attribute on the closest ancestor shell element, e.g. to drive layout-wide CSS state. */\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 {\n/** Creates, updates or removes a `<meta>` element in the document `<head>`, keyed by either `name` or `itemprop`. */\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 {\n/** Tracks the browser's network connectivity (`navigator.onLine`), updating `online` on `online`/`offline` events. */\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 {\n/** Plain generic-purpose container element, useful as a databinding/behaviors host wherever a `<div>` would do. */\nlet PacemPanelElement = class PacemPanelElement extends PacemSafeContentElement {\n};\nPacemPanelElement = __decorate([\n CustomElement({ tagName: P + '-panel' })\n], PacemPanelElement);\nexport { PacemPanelElement };\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 {\n/** Redirects consumers (e.g. {@link PacemRepeaterElement}) to an external `<template>` element, firing a `templatechange` event when it changes. */\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 * Repeats its `<template>` content once per `datasource` item, keeping the rendered items in sync as the datasource changes.\n * @example\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 /** Removes the rendered item at the given index. */\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 /** Forces a full re-render of the items against the current `datasource`. */\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' };\n/** Observes size (and, optionally, position) changes of itself or a `target` element, firing a `resize` event accordingly. */\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 /** @readonly Gets the last measured size (and position, if `watchPosition` is set) of the observed target. */\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 { RouterNavigateEvent, RouterNavigatingEvent } from '../../events';\n//namespace Pacem.Components {\nconst CHECK_PATTERN = /^([\\w\\.]:)?\\/\\/[^\\/]+/;\n/** Client-side router: parses/generates paths against a template and drives the browser History API. */\nlet PacemRouterElement = class PacemRouterElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._onScroll = (e) => {\n const scrollRestoration = this.scrollRestoration ?? true;\n if (!scrollRestoration) {\n return;\n }\n const y = Math.floor(Utils.scrollTop);\n window.history.replaceState(Utils.extend({}, window.history.state, { $scrollY: y }), document.title);\n };\n this._onPopState = (evt) => {\n if (!Utils.isNull(evt.state) && !this.#cancelingNavigation) {\n const state = evt.state;\n // navigate and scroll, just in case\n this.path = state.$path;\n }\n };\n }\n #cancelingNavigation;\n #template;\n /**\n * Merges the provided partial state into the current one and returns the resulting parsed {@link RouterState}, without navigating.\n * @param state Piece of new state to be merged\n */\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 const newState = !poppingState\n ? Utils.extend({ $scrollY: 0 }, state)\n : Utils.extend({ $scrollY: 0 }, window.history.state /* < may include `$scrollY` */, state);\n // this one actually does trigger the navigation in the outer world\n // 'cause it is usually bound to a PacemViewElement 'url'\n this.state = newState;\n window.history.scrollRestoration = (this.scrollRestoration ?? true) ? 'manual' : 'auto';\n if (poppingState) {\n window.history.replaceState(newState, document.title);\n }\n else {\n window.history.pushState(newState, 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 document.addEventListener('scroll', this._onScroll, 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 document.removeEventListener('scroll', this._onScroll, false);\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);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemRouterElement.prototype, \"scrollRestoration\", 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}\n/** Registers a service worker and manages its (optional) Push API subscription. */\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 /**\n * Unsubscribes from push notifications.\n * @param subscription Subscription to cancel; defaults to the current `pushSubscription`\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 /**\n * Subscribes to push notifications through the registered service worker.\n * @param publicKey VAPID public key (base64url or raw bytes); defaults to `publicKey`\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\";\n/** Listens for a keyboard shortcut (optionally chorded, e.g. `\"ctrl+k, s\"`) on a target and fires an `execute` event when matched. */\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 {\n/** Sets its own `textContent` to the `text` property, escaping any markup. */\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 {\n/** Injects a `<style>` element into the document `<head>`, populated either inline (`cssText`) or by fetching `src`. */\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 {\n/** Renders the `text` property as its own plain-text content, replacing any existing child markup. */\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 {\n/** Fires a `tick` event on a regular interval, as long as it's enabled and `interval` is greater than zero. */\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 {\n/** Sets `document.title` to `value` whenever it changes. */\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 {\n/** Animates a numeric `value` from `from` to `to` over `duration`, dispatching animation lifecycle events along the way. */\nlet PacemTweenElement = class PacemTweenElement extends PacemEventTarget {\n constructor(_tweener = new TweenService()) {\n super();\n this._tweener = _tweener;\n /** Gets or sets the animation duration, in milliseconds (default `1000`). */\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 /** Starts the animation programmatically and returns a promise resolved once it completes. */\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 {\n/** Wraps a {@link Worker}, sending/receiving messages to/from a web worker script. */\nlet PacemWebWorkerProxyElement = class PacemWebWorkerProxyElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Gets or sets whether to automatically send `message` as soon as it changes (default `true`). */\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 /**\n * Posts a message to the worker.\n * @param message Message to send; defaults to the current `message` property\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","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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: implements {@link DragDropper} on top of {@link PacemBehavior} to make\n * registered elements draggable and, optionally, sortable/droppable onto {@link dropTargets}.\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 /** Wires up the `mousedown`/`touchstart` listeners that arm the drag gesture on the given element. */\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 /** Removes the listeners set up by {@link decorate}. */\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 /** Registers a listener for a {@link DragDropEventType} lifecycle event. */\n addEventListener(type, listener, useCapture) {\n super.addEventListener(type, listener, useCapture);\n }\n /** Unregisters a listener previously added for a {@link DragDropEventType} lifecycle event. */\n removeEventListener(type, listener, useCapture) {\n super.removeEventListener(type, listener, useCapture);\n }\n /** Dispatches a {@link DragDropEvent}, clearing internal per-element bookkeeping once the drag ends. */\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';\n/**\n * Pacem Rescale element adapter: implements {@link Rescaler} on top of {@link PacemBehavior}, decorating\n * registered elements with draggable resize handles (see {@link RescaleHandle}).\n */\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 /** Adds the resize-handle frame (see {@link RescaleHandle}) around the given element. */\n decorate(element) {\n const el = element, css = getComputedStyle(el);\n Utils.addClass(el, PCSS + '-rescalable');\n this._setFrame(el);\n }\n /** Removes the resize-handle frame set up by {@link decorate}. */\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}\n/**\n * Pacem Rotate element adapter: implements {@link Rotator} on top of {@link PacemBehavior} to make\n * registered elements rotatable around a pivot point via mouse/touch drag.\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 /** Wires up the `mousedown`/`touchstart` listeners that arm the rotate gesture on the given element. */\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 /** Removes the listeners set up by {@link decorate}. */\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}\n/**\n * Pacem Swipe element adapter: implements {@link Swiper} on top of {@link PacemBehavior} to make\n * registered elements draggable along one axis, with snap points and fling/bounce-back detection.\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 /** Wires up the `pointerdown` listener that arms the swipe gesture on the given element. */\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 /** Removes the listener set up by {@link decorate}. */\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};\n/**\n* Abstract base class for the `@CustomElement` animation items (color/number/point animations) that can be\n* hosted within a {@link PacemStoryboardElement}. Implements {@link Timeline}.\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);\n/**\n* Base class for animation elements that interpolate their `from`/`to` value via {@link TweenService}.\n* Concrete subclasses only need to supply {@link tweenInterpolationCallback} to map normalized progress to a value of type `T`.\n*/\nexport class TweenAnimationElement extends AnimationElement {\n constructor(_tweener = new TweenService()) {\n super();\n this._tweener = _tweener;\n }\n /** @readonly Gets the {@link TweenService} instance driving this animation. */\n get tweener() {\n return this._tweener;\n }\n #cancelToken = false;\n /** Starts (or restarts) the tween and returns a promise resolved once it completes. */\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 /** Cancels the running tween. */\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 };\n/** Animates a CSS color `target[property]` from `from` to `to` (interpolated in HSLA space) over `duration`. */\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 /** @inheritdoc */\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;\n/** Animates a numeric `target[property]` from `from` to `to` over `duration`. */\nlet PacemNumberAnimationElement = class PacemNumberAnimationElement extends TweenAnimationElement {\n /** @inheritdoc */\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 };\n/** Animates a {@link Point} `target[property]` from `from` to `to` over `duration`. */\nlet PacemPointAnimationElement = class PacemPointAnimationElement extends TweenAnimationElement {\n /** @inheritdoc */\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 {\n/**\n * Groups one or more {@link Timeline}s (either {@link AnimationElement} child items or an explicit\n * `datasource`) and starts/cancels them together, optionally on view activation via `autostart`.\n */\nlet PacemStoryboardElement = class PacemStoryboardElement extends PacemItemsContainerElement {\n /** @inheritdoc */\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 /** Cancels every running {@link Timeline} in this storyboard. */\n cancelAnimation() {\n const ds = this._adaptedDatasource || [];\n for (let timeline of ds) {\n timeline.cancelAnimation();\n }\n }\n /** Starts (or restarts) every {@link Timeline} in this storyboard. */\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","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["Keys","Dates","Colors","Strings","Blobs","Imaging","detect","NullChecker","RepeaterItem","GET_VAL","SET_VAL","Point","Size","Rect","DEL_VAL","Transforms","__decorate","this","HistoryService","RepeaterItemBase","ORCHESTRATOR","PacemAnimationEvent","MOUSE_DOWN","DELEGATE","Matrix2D","PacemRepeaterItem","Angle","Numbers","DEFAULT_FROM","DEFAULT_TO","DeepMerger"],"mappings":"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"}
|