@pacem/pacem 1.0.0-abel → 1.0.0-amaldi
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/pacem-2d.js +3 -3
- package/dist/browser/pacem-2d.js.map +0 -5
- package/dist/browser/pacem-2d.min.js +3 -3
- package/dist/browser/pacem-2d.min.js.map +0 -5
- package/dist/browser/pacem-3d.js +341 -341
- package/dist/browser/pacem-3d.js.map +1 -6
- package/dist/browser/pacem-3d.min.js +3 -3
- package/dist/browser/pacem-3d.min.js.map +1 -6
- package/dist/browser/pacem-charts.js +3 -3
- package/dist/browser/pacem-charts.js.map +0 -5
- package/dist/browser/pacem-charts.min.js +3 -3
- package/dist/browser/pacem-charts.min.js.map +0 -5
- package/dist/browser/pacem-cms.js +107 -107
- package/dist/browser/pacem-cms.js.map +1 -6
- package/dist/browser/pacem-cms.min.js +3 -3
- package/dist/browser/pacem-cms.min.js.map +1 -6
- package/dist/browser/pacem-core.js +21 -7
- package/dist/browser/pacem-core.js.map +1 -6
- package/dist/browser/pacem-core.min.js +4 -4
- package/dist/browser/pacem-core.min.js.map +1 -6
- package/dist/browser/pacem-foundation.js +3 -3
- package/dist/browser/pacem-foundation.js.map +0 -5
- package/dist/browser/pacem-foundation.min.js +3 -3
- package/dist/browser/pacem-foundation.min.js.map +0 -5
- package/dist/browser/pacem-fx.js +19 -19
- package/dist/browser/pacem-fx.js.map +1 -6
- package/dist/browser/pacem-fx.min.js +3 -3
- package/dist/browser/pacem-fx.min.js.map +1 -6
- package/dist/browser/pacem-logging.js +3 -3
- package/dist/browser/pacem-logging.js.map +0 -5
- package/dist/browser/pacem-logging.min.js +3 -3
- package/dist/browser/pacem-logging.min.js.map +0 -5
- package/dist/browser/pacem-maps.js +3 -3
- package/dist/browser/pacem-maps.js.map +0 -5
- package/dist/browser/pacem-maps.min.js +3 -3
- package/dist/browser/pacem-maps.min.js.map +0 -5
- package/dist/browser/pacem-media.js +3 -3
- package/dist/browser/pacem-media.js.map +0 -5
- package/dist/browser/pacem-media.min.js +3 -3
- package/dist/browser/pacem-media.min.js.map +0 -5
- package/dist/browser/pacem-networking.js +3 -3
- package/dist/browser/pacem-networking.js.map +0 -5
- package/dist/browser/pacem-networking.min.js +3 -3
- package/dist/browser/pacem-networking.min.js.map +0 -5
- package/dist/browser/pacem-numerical.js +3 -3
- package/dist/browser/pacem-numerical.js.map +0 -5
- package/dist/browser/pacem-numerical.min.js +3 -3
- package/dist/browser/pacem-numerical.min.js.map +0 -5
- package/dist/browser/pacem-plus.js +77 -77
- package/dist/browser/pacem-plus.js.map +1 -6
- package/dist/browser/pacem-plus.min.js +3 -3
- package/dist/browser/pacem-plus.min.js.map +1 -6
- package/dist/browser/pacem-scaffolding.js +11 -8
- package/dist/browser/pacem-scaffolding.js.map +1 -6
- package/dist/browser/pacem-scaffolding.min.js +4 -4
- package/dist/browser/pacem-scaffolding.min.js.map +1 -6
- package/dist/browser/pacem-ui.js +37 -26
- package/dist/browser/pacem-ui.js.map +1 -6
- package/dist/browser/pacem-ui.min.js +4 -4
- package/dist/browser/pacem-ui.min.js.map +1 -6
- package/dist/bundle/pacem.min.mjs +40 -38
- package/dist/bundle/pacem.mjs +58 -32
- package/dist/bundle/pacem.mjs.map +2 -7
- package/dist/typings/index.d.ts +5 -3
- package/dist/vscode.html-custom.json +4834 -0
- package/package.json +9 -8
|
@@ -1,6 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @pacem/pacem v1.0.0-abel (https://js.pacem.it)
|
|
3
|
-
* Copyright 2026 Pacem (https://pacem.it)
|
|
4
|
-
* Licensed under Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
{"version":3,"file":"pacem-scaffolding.min.js","sources":["../esm/types.js","../esm/openapi/types.js","../esm/openapi/swagger.js","../esm/openapi/openapi3.js","../esm/openapi/openapi.js","../esm/l10n.js","../esm/form.js","../esm/types-components.js","../esm/char-counter.js","../esm/contenteditable.js","../esm/contenteditable/types.js","../esm/contenteditable/historycommand.js","../esm/contenteditable/linkcommand.js","../esm/contenteditable/imagecommand.js","../esm/contenteditable/execcommand.js","../esm/contenteditable/utils.js","../esm/contenteditable/aligncommand.js","../esm/contenteditable/placeholdercommand.js","../esm/contenteditable/wrapcommand.js","../esm/calendar-picker.js","../esm/checkbox.js","../esm/checkbox-list.js","../esm/childform.js","../esm/datetime-picker.js","../esm/validators.js","../esm/formfield.js","../esm/geolocate.js","../esm/hierarchy.js","../esm/input.js","../esm/input-chars.js","../esm/input-color.js","../esm/input-email.js","../esm/input-file.js","../esm/input-hidden.js","../esm/snapshot.js","../esm/input-image.js","../esm/input-number.js","../esm/input-password.js","../esm/input-search.js","../esm/input-tel.js","../esm/input-text.js","../esm/input-url.js","../esm/latlng.js","../esm/namevalue-list.js","../esm/property-picker.js","../esm/radio.js","../esm/radio-list.js","../esm/select.js","../esm/slider.js","../esm/suggest.js","../esm/tags.js","../esm/textarea.js","../esm/textarea-markdown.js","../esm/index-iife.js"],"sourcesContent":["import { CustomTypedEvent } from '@pacem/pacem-core';\nexport const FieldChangeEventName = 'change';\nexport class FieldChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super(FieldChangeEventName, args, { bubbles: true, cancelable: false });\n }\n}\n//}\n",";\nexport var ApiParameterType;\n(function (ApiParameterType) {\n ApiParameterType[\"String\"] = \"string\";\n ApiParameterType[\"Number\"] = \"number\";\n ApiParameterType[\"Datetime\"] = \"datetime\";\n ApiParameterType[\"Boolean\"] = \"boolean\";\n ApiParameterType[\"Binary\"] = \"binary\";\n ApiParameterType[\"Object\"] = \"object\";\n})(ApiParameterType || (ApiParameterType = {}));\nexport class ApiParserBase {\n async load(url, headers) {\n let resp = await fetch(url, {\n mode: 'cors', credentials: 'omit', headers: headers\n });\n try {\n let json = await resp.json();\n return this.parse(json, url);\n }\n catch (e) {\n return null;\n }\n }\n}\nconst $refPattern = /^#\\/(definitions|components\\/schemas)\\/(.+)$/;\nexport function getOpenApiDefinition(manifest, $ref) {\n var rec = $refPattern.exec($ref);\n if (rec && rec.length > 2) {\n return { name: rec[2], schema: manifest.definitions[rec[2]] };\n }\n return null;\n}\n//}\n","import { Net } from '@pacem/pacem-core';\nimport { ApiParserBase, ApiParameterType } from './types';\n//namespace Pacem.Scaffolding.OpenApi {\nconst ApiMethod = Net.HttpMethod;\nexport class SwaggerParser extends ApiParserBase {\n _findDefinitionName(definitionHashTag) {\n var pattern = /#\\/definitions\\/(.+)/;\n var arr = pattern.exec(definitionHashTag);\n if (arr == null || arr.length < 2)\n return definitionHashTag;\n return arr[1];\n }\n parse(content, url) {\n let j = content;\n if (typeof j === 'string') {\n j = JSON.parse(j);\n }\n const json = j;\n let definitions = {};\n for (let def in json.definitions) {\n let name = this._findDefinitionName(def);\n definitions[name] = json.definitions[def];\n }\n let baseUrl = '';\n if (json.host && json.schemes.length > 0) {\n baseUrl = json.schemes[0] + '://' + json.host + json.basePath;\n }\n else if (url) {\n // add scheme, host and basePath just-in-case\n let parsed = /^(https?):\\/\\/([^\\/]+)/.exec(url);\n if (parsed && parsed.length) {\n if (!(json.schemes) && parsed.length > 1) {\n json.schemes = [parsed[1]];\n }\n if (!json.host && parsed.length > 2) {\n json.host = parsed[2];\n json.basePath = '';\n }\n baseUrl = parsed[0];\n }\n }\n else {\n console.warn('Not able to find a base url from the OpenApi specs.');\n }\n let retval = { endpoints: [], definitions: definitions, baseUrl: baseUrl };\n for (let path in json.paths) {\n let src = json.paths[path];\n for (let method of [ApiMethod.Get, ApiMethod.Delete, ApiMethod.Post, ApiMethod.Put]) {\n let op = src[method.toLowerCase()];\n if (op) {\n let endpoint = this._tryGetEndpoint(json, op, path, method);\n retval.endpoints.push(endpoint);\n }\n }\n }\n return retval;\n }\n _tryGetEndpoint(json, op, path, method) {\n return {\n response: this._tryGetResponse(json, op),\n path: path,\n method: method,\n parameters: this._tryGetParameters(json, op)\n };\n }\n _translateType(type, format) {\n switch (type) {\n case 'number':\n case 'integer':\n return ApiParameterType.Number;\n case 'boolean':\n return ApiParameterType.Boolean;\n case 'string':\n switch (format) {\n case 'date':\n case 'date-time':\n return ApiParameterType.Datetime;\n case 'byte':\n return ApiParameterType.Binary;\n case 'binary':\n throw `Binary octets not supported.`;\n }\n return ApiParameterType.String;\n }\n return ApiParameterType.String;\n }\n _tryGetParameters(json, operation) {\n return (operation.parameters || []).map(p => {\n const pb = p;\n let retval = {\n name: pb.name,\n required: pb.required || false\n };\n let type = p.type;\n if (p.schema) {\n let pbody = p;\n retval.type = ApiParameterType.Object;\n let name = retval.fullType = this._findDefinitionName(pbody.schema.$ref);\n retval.meta = json.definitions[name];\n }\n else if (type) {\n retval.type = this._translateType(type, p.format);\n }\n return retval;\n });\n }\n _tryGetResponse(json, operation) {\n let ok = operation.responses['200'];\n if (!ok || !ok.schema)\n return null;\n let type = ok.schema.type || 'object', meta, name;\n if (ok.schema.$ref) {\n name = this._findDefinitionName(ok.schema.$ref);\n meta = json.definitions[name];\n }\n else {\n meta = ok.schema;\n if (ok.schema.items) {\n if (ok.schema.items.hasOwnProperty('$ref')) {\n name = this._findDefinitionName(ok.schema.items.$ref);\n meta = json.definitions[name];\n }\n else {\n meta = ok.schema.items;\n }\n }\n }\n return { type: type, fullType: name, meta: meta };\n }\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { ApiParserBase, ApiParameterType } from './types';\nexport class OpenApi3Parser extends ApiParserBase {\n parse(content, url) {\n let j = content;\n if (typeof j === 'string') {\n j = JSON.parse(j);\n }\n const json = j;\n const endpoints = [];\n const definitions = this._gatherDefinitions(new Map(), json.components.schemas);\n for (let path in json.paths) {\n for (let method in json.paths[path]) {\n const endpoint = json.paths[path][method];\n endpoints.push({\n path,\n method: method.toUpperCase(),\n parameters: this._convertToApiParameters(endpoint.parameters),\n response: this._tryGetResponse(definitions, endpoint.responses)\n });\n }\n }\n return { endpoints, definitions, baseUrl: url };\n }\n _convertToApiParameters(parameters = []) {\n const output = [];\n for (let p of parameters) {\n const schema = p.schema;\n if ('type' in schema) {\n output.push({ name: p.name, required: p.required, type: this._translateType(schema.type, schema['format']) });\n }\n }\n return output;\n }\n _translateType(type, format) {\n switch (type) {\n case 'number':\n case 'integer':\n return ApiParameterType.Number;\n case 'boolean':\n return ApiParameterType.Boolean;\n case 'string':\n switch (format) {\n case 'date':\n case 'date-time':\n return ApiParameterType.Datetime;\n case 'byte':\n return ApiParameterType.Binary;\n case 'binary':\n throw `Binary octets not supported.`;\n }\n return ApiParameterType.String;\n }\n return ApiParameterType.String;\n }\n _gatherDefinitions(memoizer, schemas) {\n const retval = {};\n for (let schema in schemas) {\n retval[schema] = this._findDefinition(memoizer, schemas, schema);\n }\n return retval;\n }\n _findDefinition(memoizer, schemas, type) {\n if (memoizer.has(type)) {\n return memoizer.get(type);\n }\n if (type in schemas) {\n // is that enough?\n const retval = schemas[type];\n memoizer.set(type, retval);\n return retval;\n }\n return null;\n }\n _findDefinitionName(definitionHashTag) {\n var pattern = /#\\/components\\/schemas\\/(.+)/;\n var arr = pattern.exec(definitionHashTag);\n if (arr == null || arr.length < 2)\n return definitionHashTag;\n return arr[1];\n }\n _tryGetResponse(definitions, responses) {\n const operation = { responses };\n let ok = operation.responses['200'];\n if (Utils.isNullOrEmpty(ok && ok.content)) {\n return null;\n }\n let schema;\n for (let mime in ok.content) {\n schema = ok.content[mime].schema;\n break;\n }\n let type = 'object', meta, name;\n if (\"$ref\" in schema) {\n name = this._findDefinitionName(schema.$ref),\n meta = definitions[name];\n }\n else {\n type = schema.type;\n meta = schema;\n if (schema.type === 'array') {\n if ('$ref' in schema.items) {\n name = this._findDefinitionName(schema.items.$ref);\n meta = definitions[name];\n }\n else {\n meta = schema.items;\n }\n }\n }\n return { type, fullType: name, meta };\n }\n}\n","import { SwaggerParser } from './swagger';\nimport { ApiParserBase } from './types';\nimport { OpenApi3Parser } from './openapi3';\n//namespace Pacem.Scaffolding.OpenApi {\nexport class OpenApiParser extends ApiParserBase {\n constructor(_openApi3 = new OpenApi3Parser(), _swagger = new SwaggerParser()) {\n super();\n this._openApi3 = _openApi3;\n this._swagger = _swagger;\n }\n parse(content, url) {\n let j = content;\n if (typeof j === 'string') {\n j = JSON.parse(j);\n }\n const json = j;\n if ('openapi' in json) {\n return this._openApi3.parse(json, url);\n }\n return this._swagger.parse(json, url);\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, Transformer } from '@pacem/pacem-core';\nconst DefaultFormLocalizationOptions = {\n display: (displayProp, prop, dictionary) => dictionary[`${displayProp}_${prop}`],\n validator: (validatorType, validatorTypeIndex, prop, dictionary) => dictionary['validator_' + validatorType + '_' + prop] ?? dictionary['validator_' + validatorType + validatorTypeIndex + '_' + prop],\n commandTooltip: (commandName, dictionary) => dictionary['command_tooltip_' + commandName]\n};\nexport class Forms {\n /**\n * Localizes the metadata of a form **in place** using a translation dictionary.\n *\n * @param metadata The default metadata.\n * @param dictionary The translation dictionary.\n * @param options Custom replacement strategy, just in case.\n * @returns The localized metadata.\n */\n static localizeMetadata(metadata, dictionary, options) {\n return Forms._localizeMetadata(metadata, dictionary, options);\n }\n static _localizeMetadata(metadata, dictionary, options, prefix = '') {\n options = Utils.extend({}, DefaultFormLocalizationOptions, options);\n for (let prop of metadata.props) {\n // child form\n if ('props' in prop && typeof prop.props === 'object' && !Utils.isArray(prop.props)) {\n const pre = prefix + prop.prop + '.';\n prop.props = Forms._localizeMetadata(prop.props, dictionary, options, pre);\n }\n const display = prop.display = prop.display ?? {};\n const property = prefix + prop.prop;\n display.name = options.display('name', property, dictionary) ?? display.name;\n display.watermark = options.display('watermark', property, dictionary) ?? display.watermark;\n display.description = options.display('description', property, dictionary) ?? display.description;\n if (!Utils.isNullOrEmpty(prop.commands)) {\n for (let command of prop.commands) {\n const tooltip = options.commandTooltip(command.name, dictionary);\n if (!Utils.isNullOrEmpty(tooltip)) {\n command.tooltip = tooltip;\n }\n }\n }\n if (!Utils.isNullOrEmpty(prop.validators)) {\n const memoizer = {};\n for (let validator of prop.validators) {\n const type = validator.type;\n if (typeof type === 'string') {\n const index = memoizer[type] = (memoizer[type] ?? -1) + 1;\n const errorMessage = options.validator(type, index, property, dictionary);\n if (!Utils.isNullOrEmpty(errorMessage)) {\n validator['errorMessage'] = errorMessage;\n }\n }\n }\n }\n }\n return metadata;\n }\n}\n__decorate([\n Transformer('forms.localizeMetadata')\n], Forms, \"localizeMetadata\", null);\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, CustomTypedEvent, CommandEventName, Components, Net, Debounce, avoidHandler, PropertyChangeEvent, PropertyChangeEventName, DeferPromise, Logging, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemModelElement } from './types-components';\nimport { FieldChangeEventName } from './types';\nexport const FormSubmitEventName = 'submit';\nexport const FormResetEventName = 'reset';\nexport class FormSubmitEvent extends CustomTypedEvent {\n constructor(args) {\n super(FormSubmitEventName, args, { bubbles: true, cancelable: true });\n }\n}\nexport class FormResetEvent extends Event {\n constructor() {\n super(FormResetEventName, { bubbles: true, cancelable: true });\n }\n}\nconst EMITTABLE_EVENT_TYPES = ['download' /* < dedicated, for the upload custom element */, FieldChangeEventName /* expose */, CommandEventName];\nconst SUBMIT_CANCELLATION_TOKEN = false;\nexport class FormEventEmitter {\n constructor(_element) {\n this._element = _element;\n this._itemEmitHandler = (e) => {\n // handle the actual event first\n this._element.handle(e);\n if (e.type === CommandEventName) {\n // then command-specific event, name being 'item' + command name in lowercase (e.g. 'itemdelete', 'itemselect', ...)\n const evt = e;\n this._element.handle(new CustomEvent('item' + evt.detail.commandName.toLowerCase(), { detail: evt.detail.commandArgument }));\n }\n };\n }\n start() {\n EMITTABLE_EVENT_TYPES.forEach(t => this._element.addEventListener(t, this._itemEmitHandler, false));\n }\n stop() {\n EMITTABLE_EVENT_TYPES.forEach(t => this._element.removeEventListener(t, this._itemEmitHandler, false));\n }\n}\nexport class PacemFormRelevantElement extends Components.PacemElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.form = CustomElementUtils.findAncestorOfType(this, PacemFormElement);\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemFormRelevantElement.prototype, \"form\", void 0);\nlet PacemFormElement = class PacemFormElement extends PacemFormRelevantElement {\n constructor() {\n super('form');\n this.method = Net.HttpMethod.Post;\n this._emitter = null;\n this._buttons = { submit: undefined, reset: undefined };\n this.#fetching = false;\n this._keyupHandler = (evt) => {\n if (evt.keyCode === /* Enter */ 13\n // no modifiers\n && !evt.shiftKey && !evt.ctrlKey && !evt.altKey && !evt.metaKey) {\n let btn = evt.currentTarget.querySelector(P + '-button[type=submit]');\n if (!Utils.isNull(btn) && Utils.isVisible(btn) && !btn.disabled) {\n btn.click();\n }\n }\n };\n this._submit = (fetcher, evt) => {\n if (!Utils.isNull(evt)) {\n avoidHandler(evt);\n }\n Promise.all(this._validateAllFields()).then(p => {\n if (p.findIndex(f => f === false) === -1) {\n this.submit(fetcher).then(_ => {\n // successful submission here\n this.setPristine();\n }, _ => {\n // catch rejected/canceled\n });\n }\n });\n };\n this._reset = (evt) => {\n if (!Utils.isNull(evt))\n avoidHandler(evt);\n var resetEvt = new FormResetEvent();\n this.dispatchEvent(resetEvt);\n if (resetEvt.defaultPrevented) {\n return;\n }\n // reset\n // fields first\n for (var field in this._fields) {\n var fld = this._fields[field];\n if (fld instanceof PacemModelElement)\n fld.reset();\n }\n // then sub-forms\n for (var form of this._subForms) {\n form._reset();\n }\n };\n this._fields = {};\n this._validators = {};\n this._subForms = [];\n this._fieldPropertyChanged = (evt) => {\n switch (evt.detail.propertyName) {\n case 'value':\n // validate:\n let model = evt.target;\n this._checkFieldValidity(model.name);\n break;\n case 'dirty':\n this._checkDirtyness();\n break;\n case 'valid':\n this._checkValidity();\n break;\n }\n };\n this._validatorPropertyChanged = (evt) => {\n const validator = evt.target, name = validator.watch;\n if (evt.detail.propertyName === 'invalid') {\n let model = this._fields[validator.watch];\n if (validator.invalid)\n model.valid = false;\n else\n this._checkFieldValidity(name);\n }\n else {\n this._checkFieldValidity(name);\n }\n };\n /** Gets or sets whether to hint invalid fields even if still pristine (default 'true').\n * When 'true' - and form is autogenerated - the submit button status is tightly bound to the form valid state. */\n this.suddenValidation = true;\n /** Gets or sets whether the form should show - when autogenerated - the reset button. */\n this.resettable = true;\n this._emitter = new FormEventEmitter(this);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if ((name === 'method' && this.autogenerate === true && !Utils.isNullOrEmpty(this.metadata)) ||\n (name === 'metadata' && this.autogenerate === true) ||\n (name === 'autogenerate' && val === true && this.metadata && (this.metadata['props'] || this.metadata).length > 0)) {\n this._buildUpForm();\n }\n else {\n switch (name) {\n case 'readonly':\n //this._lockSubForms(val);\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.form && this.form.registerSubForm(this);\n this._checkValidity();\n this.addEventListener('keyup', this._keyupHandler, false);\n this._emitter.start();\n }\n disconnectedCallback() {\n this._emitter.stop();\n this.removeEventListener('keyup', this._keyupHandler, false);\n this.form && this.form.unregisterSubForm(this);\n super.disconnectedCallback();\n }\n _buildUpForm() {\n const key = '_' + Utils.uniqueCode();\n const uid = this.id = (this.id || key);\n const f_uid = 'fetch' + key;\n //\n const form = document.createElement('form');\n form.id = \"form\" + key;\n form.className = PCSS + '-form';\n form.setAttribute('pacem', '');\n form.setAttribute('novalidate', '');\n const html = `<${P}-repeater datasource=\"{{ #${uid}.metadata && (#${uid}.metadata.props || #${uid}.metadata) }}\">\r\n <${P}-panel css=\"{{ #${uid}.metadata.display && #${uid}.metadata.display.css }}\" css-class=\"{{ (#${uid}.metadata.display && #${uid}.metadata.display.cssClass || []).concat(#${uid}.suddenValidation ? [] : ['lazy-validation']) }}\" class=\"${PCSS}-animatable-list ${PCSS}-list-appear\">\r\n <template>\r\n <${P}-form-field fetch-credentials=\"{{ #${uid}.fetchCredentials }}\" fetch-headers=\"{{ #${uid}.fetchHeaders }}\"\r\n logger=\"{{ #${uid}.logger }}\" entity=\"{{ #${uid}.entity, twoway }}\" \r\n metadata=\"{{ ^item }}\" readonly=\"{{ #${uid}.readonly || ^item.isReadOnly }}\"></${P}-form-field>\r\n </template>\r\n </${P}-panel>\r\n</${P}-repeater>\r\n<${P}-fetch logger=\"{{ #${uid}.logger }}\" id=\"${f_uid}\" method=\"${this.method}\" credentials=\"{{ #${uid}.fetchCredentials }}\" headers=\"{{ #${uid}.fetchHeaders }}\"></${P}-fetch> \r\n<div class=\"${PCSS}-buttonset buttons\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button logger=\"{{ #${uid}.logger }}\" on-click=\"#${uid}._submit(#${uid}.fetcher || #${f_uid}, $event)\" type=\"submit\" hide=\"{{ #${uid}.readonly || $pacem.isNullOrEmpty(#${uid}.action) || !$pacem.isNull(#${uid}.form) }}\"\r\nclass=\"button primary button-size size-small\"\r\ncss-class=\"{{ {'buttonset-last': !#${uid}.resettable || !#${uid}.dirty || !$pacem.isNull(#${uid}.form) } }}\" \r\ndisabled=\"{{ (#${uid}.suddenValidation && (!(#${uid}.valid && #${uid}.dirty))) || #${uid}.fetching }}\">\r\n <${P}-panel class=\"submit-spinner ${PCSS}-anim anim-pop\" hide=\"{{ !#${uid}.fetching }}\"><i class=\"${PCSS}-icon ${PCSS}-anim anim-rotate rotate-uniform display-block\">refresh</i></${P}-panel>\r\n <${P}-text text=\"{{ #${uid}.submitCaption || 'OK' }}\"></${P}-text>\r\n </${P}-button>\r\n <${P}-button logger=\"{{ #${uid}.logger }}\" on-click=\"#${uid}._reset($event)\" type=\"reset\" class=\"button button-size size-small\" css-class=\"{{ {'buttonset-first': #${uid}.readonly || $pacem.isNullOrEmpty(#${uid}.action) || !$pacem.isNull(#${uid}.form)} }}\" hide=\"{{ !#${uid}.resettable || #${uid}.readonly || !#${uid}.dirty || !Pacem.Utils.isNull(#${uid}.form) }}\" disabled=\"{{ #${uid}.fetching }}\">\r\n <${P}-text text=\"{{ #${uid}.resetCaption || 'Reset' }}\"></${P}-text>\r\n </${P}-button>\r\n</div></div>`;\n // buttons are kept hidden if...\n form.innerHTML = html;\n this.innerHTML = '';\n this.appendChild(form);\n form.addEventListener('submit', avoidHandler, false);\n const old = this._buttons;\n const val = this._buttons = {\n submit: form.lastElementChild.firstElementChild.firstElementChild,\n reset: form.lastElementChild.firstElementChild.lastElementChild\n };\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'formButtons', currentValue: val, oldValue: old }));\n }\n /** Gets the 'submit' and 'reset' form buttons. */\n get formButtons() {\n return this._buttons;\n }\n #fetching;\n get fetching() {\n return this.#fetching;\n }\n /**\n * Submits the form data via a provided fetcher.\n * @param fetcher The fetching delegate.\n */\n submit(fetcher) {\n return new Promise((resolve, reject) => {\n if (Utils.isNull(fetcher)) {\n reject(`Fetcher cannot be null while submitting a form.`);\n }\n this._submitInternally(fetcher).then(result => {\n this.dispatchEvent(new CustomEvent(\"success\", { detail: result }));\n resolve(result);\n }, err => {\n if (err !== SUBMIT_CANCELLATION_TOKEN) {\n this.dispatchEvent(new CustomEvent(\"fail\", { detail: err }));\n }\n reject(err);\n });\n });\n }\n /** Resets the form to its pristine values. */\n reset() {\n this._reset();\n }\n _submitInternally(fetcher, args) {\n if (Utils.isNull(fetcher))\n throw `Fetcher cannot be null while submitting a form.`;\n var deferred = DeferPromise.defer();\n const entity = this.entity, entityName = this.entityName;\n var model = {};\n if (!Utils.isNullOrEmpty(entityName)) {\n model[entityName] = entity;\n }\n else {\n model = entity;\n }\n var args = { parameters: model, fields: this._getAllFields() };\n // allow to inject some logic while submitting...\n var submitEvt = new FormSubmitEvent(args);\n this.dispatchEvent(submitEvt);\n if (submitEvt.defaultPrevented) {\n // rejection using `false` identifies a canceled submission.\n deferred.reject(SUBMIT_CANCELLATION_TOKEN);\n }\n else {\n // ...use the output parameters\n fetcher.parameters = Utils.extend({}, submitEvt.detail.parameters);\n // a) fetcher 'success' event listener\n const fnSuccess = (evt) => {\n fetcher.removeEventListener(Net.FetchSuccessEventName, fnSuccess, false);\n fetcher.removeEventListener(Net.FetchErrorEventName, fnError, false);\n const r = evt.detail, empty = Net.Fetcher.isEmpty(r);\n if (empty) {\n // if no content gets fetched (e.g. '204') then resolve right here (because it won't enter 'fnResult')\n fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false);\n this.success = true;\n deferred.resolve({});\n }\n switch (r.status) {\n case 205 /*'Reset Content'*/:\n this._reset();\n break;\n }\n };\n // b) fetcher 'fetchresult' event listener\n const fnResult = (evt) => {\n // remove listeners (others have already been removed in 'fnSuccess')\n fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false);\n //\n var result = evt.detail;\n if (typeof (result) === 'object' && result.hasOwnProperty('success')) {\n // DEPRECATED code branch\n if (result.success === true) {\n this.success = true;\n deferred.resolve(result.result || {});\n }\n else {\n this.fail = true;\n deferred.reject(result.error);\n }\n }\n else {\n this.success = true;\n deferred.resolve(result);\n }\n };\n // c) fetcher 'error' event listener\n const fnError = (evt) => {\n // remove listeners\n fetcher.removeEventListener(Net.FetchSuccessEventName, fnSuccess, false);\n fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false);\n fetcher.removeEventListener(Net.FetchErrorEventName, fnError, false);\n this.fail = true;\n const response = evt.detail;\n deferred.reject(response);\n };\n // fetcher propertychange event listener\n const fnPropChange = (evt) => {\n switch (evt.detail.propertyName) {\n case 'fetching':\n if (evt.detail.currentValue === true) {\n Utils.addClass(this, PCSS + '-fetching');\n this.#fetching = true;\n this.dispatchEvent(new PropertyChangeEvent({ currentValue: true, oldValue: false, propertyName: 'fetching' }));\n }\n else {\n this.#fetching = false;\n this.dispatchEvent(new PropertyChangeEvent({ currentValue: false, oldValue: true, propertyName: 'fetching' }));\n Utils.removeClass(this, PCSS + '-fetching');\n fetcher.removeEventListener(PropertyChangeEventName, fnPropChange, false);\n }\n break;\n }\n };\n fetcher.addEventListener(PropertyChangeEventName, fnPropChange, false);\n fetcher.addEventListener(Net.FetchSuccessEventName, fnSuccess, false);\n fetcher.addEventListener(Net.FetchResultEventName, fnResult, false);\n fetcher.addEventListener(Net.FetchErrorEventName, fnError, false);\n if (!Utils.isNullOrEmpty(this.action)) {\n fetcher.url = this.action;\n }\n // is it an 'inert' PacemFetchElement?\n if (fetcher instanceof Components.PacemFetchElement && !fetcher.autofetch) {\n fetcher.fetch();\n }\n this.success = this.fail = false;\n }\n //\n return deferred.promise;\n }\n _getAllFields(accumulator = {}) {\n Utils.extend(accumulator, this._fields);\n for (var form of this._subForms) {\n form._getAllFields(accumulator);\n }\n return accumulator;\n }\n /** Modifies the state of the current entity programmatically. */\n apply(state) {\n if (Utils.isNullOrEmpty(state)) {\n return;\n }\n this.entity = Utils.extend({}, this.entity, state);\n for (let name in state) {\n this.setDirty(name);\n }\n }\n /** Sets the current form (or the fields of it having the specified names) in a pristine state. */\n setPristine(...names) {\n this._setAs(false, ...names);\n }\n /** Sets the current form (or the fields of it having the specified names) in a dirty state. */\n setDirty(...names) {\n this._setAs(true, ...names);\n }\n _setAs(dirty, ...names) {\n const hasNames = !Utils.isEmpty(names);\n for (let field in this._fields) {\n if (!hasNames || names.indexOf(field) >= 0) {\n const fld = this._fields[field];\n if (fld instanceof PacemModelElement) {\n dirty ? fld.setDirty() : fld.setPristine();\n }\n }\n }\n for (let form of this._subForms) {\n dirty ? form.setDirty(...names) : form.setPristine(...names);\n }\n }\n _checkFieldValidity(name) {\n if (!this.suddenValidation) {\n return Promise.resolve(null);\n }\n if (name in this._fields) {\n return this._validateField(name, false);\n }\n return Promise.resolve(false);\n }\n // @Concurrent()\n validate(name) {\n if (!Utils.isNullOrEmpty(name)) {\n return this._validateField(name, false);\n }\n else {\n return Promise.all(this._validateAllFields()).then(b => !b.some(b0 => b0 === false));\n }\n }\n _validateAllFields(setAsDirty = true) {\n const tasks = [];\n for (let field in this._fields) {\n tasks.push(this._validateField(field, setAsDirty));\n }\n for (let sub of this._subForms) {\n Array.prototype.push.apply(tasks, sub._validateAllFields(setAsDirty));\n }\n return tasks;\n }\n // Remove Concurrent from here, better check the closure for params in @Concurrent\n //@Concurrent()\n _validateField(name, setAsDirty) {\n return new Promise((resolve, _) => {\n var model = this._fields[name];\n if (model) {\n var validators = this._validators[model.name];\n if (validators && validators.length > 0) {\n this.log(Logging.LogLevel.Log, `Computing \"${model.name}\" validity.`);\n Promise.all(validators.map(v => v.validate(model.value)\n .then(_ => !(v.invalid = !_))))\n .then(results => {\n let valid = true;\n for (var result of results) {\n if (result === false) {\n valid = false;\n // set dirty only when not valid\n if (setAsDirty) {\n model.setDirty();\n }\n break;\n }\n }\n this.log(Logging.LogLevel.Log, `Property \"${model.name}\" turns out to be ${(valid ? '' : 'not ')}valid.`);\n resolve(model.valid = valid);\n });\n }\n else {\n this.log(Logging.LogLevel.Log, `Property \"${model.name}\" has no validators.`);\n resolve(model.valid = true);\n }\n }\n else {\n this.log(Logging.LogLevel.Log, `Property \"${name}\" has no fields in this form.`);\n resolve(true);\n }\n });\n }\n // #region FORM HIERARCHY validity/dirtyness\n _checkDirtyness() {\n let dirty = false;\n for (var model in this._fields) {\n if (this._fields[model].dirty === true) {\n dirty = true;\n break;\n }\n }\n if ( /* still */dirty === false) {\n for (var form of this._subForms) {\n if (form.dirty) {\n dirty = true;\n break;\n }\n }\n }\n this.dirty = dirty;\n }\n ;\n _checkValidity() {\n let valid = true;\n for (var model in this._fields) {\n this.log(Logging.LogLevel.Log, `Checking \"${model}\" validity.`);\n if (this._fields[model].valid === false) {\n this.log(Logging.LogLevel.Log, `\"${model}\" is not valid.`);\n valid = false;\n break;\n }\n }\n if ( /* still */valid === true) {\n for (var form of this._subForms) {\n if (!form.valid) {\n valid = false;\n break;\n }\n }\n }\n this.valid = valid;\n }\n ;\n registerSubForm(form) {\n let arr = this._subForms;\n if (arr.indexOf(form) == -1) {\n form.addEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n arr.push(form);\n this._checkValidity();\n this._checkDirtyness();\n }\n }\n unregisterSubForm(form) {\n let arr = this._subForms, ndx = arr.indexOf(form);\n if (ndx >= 0) {\n form.removeEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n arr.splice(ndx, 1);\n this._checkValidity();\n this._checkDirtyness();\n }\n }\n registerField(name, model) {\n var container = this._fields;\n if (container[name] != model) {\n this.unregisterField(name, false);\n container[name] = model;\n this.log(Logging.LogLevel.Log, `Registering \"${name}\" field.`);\n if (model instanceof HTMLElement) {\n model.addEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n }\n this._checkFieldValidity(name);\n this._checkDirtyness();\n }\n }\n unregisterField(name, check = true) {\n var container = this._fields, current = container[name];\n if (current instanceof HTMLElement) {\n current.removeEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n }\n delete container[name];\n if (current && check === true) {\n this._checkValidity();\n this._checkDirtyness();\n }\n }\n registerValidator(name, validator) {\n var container = this._validators[name] = this._validators[name] || [], index = container.indexOf(validator);\n if (index == -1) {\n container.push(validator);\n if (validator instanceof HTMLElement) {\n validator.addEventListener(PropertyChangeEventName, this._validatorPropertyChanged, false);\n }\n this.log(Logging.LogLevel.Log, `Calling \"${name}\" validity check after validator registration.`);\n // most likely, at this point, the corresponding field isn't available yet.\n this._checkFieldValidity(name);\n }\n }\n unregisterValidator(name, validator) {\n this._unregisterValidator(name, validator, true);\n }\n _unregisterValidator(name, validator, check) {\n var container = this._validators[name] = this._validators[name] || [], index = container.indexOf(validator);\n if (index >= 0) {\n if (validator instanceof HTMLElement) {\n validator.removeEventListener(PropertyChangeEventName, this._validatorPropertyChanged, false);\n }\n container.splice(index, 1);\n if (check) {\n this._checkFieldValidity(name);\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemFormElement.prototype, \"fetcher\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemFormElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"submitCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"resetCaption\", void 0);\n__decorate([\n Debounce(100)\n], PacemFormElement.prototype, \"_buildUpForm\", null);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"valid\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"dirty\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"success\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"fail\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemFormElement.prototype, \"entity\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"entityName\", void 0);\n__decorate([\n Watch()\n], PacemFormElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"autogenerate\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"suddenValidation\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"resettable\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"action\", void 0);\nPacemFormElement = __decorate([\n CustomElement({ tagName: P + '-form' })\n], PacemFormElement);\nexport { PacemFormElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElementUtils, Utils, Components, PropertyConverters, CustomElement, Watch, stopPropagationHandler, DefaultComparer, PropertyChangeEventName, Debounce } from '@pacem/pacem-core';\nimport { FieldChangeEvent } from './types';\nimport { PacemFormRelevantElement } from './form';\nconst ORIGINAL_VALUE_FIELD = 'pacem:model:original-value';\nexport class PacemModelElement extends PacemFormRelevantElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._registerFieldConditionally();\n this._setAsOriginalValue(this.value);\n }\n _registerFieldConditionally() {\n const name = this.name, form = this.form;\n if (!Utils.isNullOrEmpty(name) && !Utils.isNull(form)\n && (!this.hasAttribute('autobind')\n || (this.getAttribute('autobind') !== 'off' && this.getAttribute('autobind') !== 'false'))) {\n form.registerField(name, this);\n // automatic bind value given the field name\n if (!this.hasAttribute('value')) {\n const formId = form.id = form.id || 'frm_' + Utils.uniqueCode();\n this.setAttribute('value', `{{ #${formId}.entity.${name}, twoway }}`);\n }\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'value':\n this.viewValue = this.getViewValue(val);\n break;\n case 'valid':\n if (!val) {\n Utils.addClass(this, PCSS + '-invalid');\n }\n else {\n Utils.removeClass(this, PCSS + '-invalid');\n }\n break;\n case 'dirty':\n if (val) {\n Utils.addClass(this, PCSS + '-dirty');\n }\n else {\n Utils.removeClass(this, PCSS + '-dirty');\n }\n break;\n case 'name':\n let form = this.form;\n if (form != null) {\n if (old)\n form.unregisterField(old);\n }\n this._registerFieldConditionally();\n break;\n case 'form':\n let n = this.name;\n if (!Utils.isNullOrEmpty(n)) {\n if (old != null)\n old.unregisterField(n);\n }\n this._registerFieldConditionally();\n break;\n }\n }\n disconnectedCallback() {\n let name = this.name, form = this.form;\n if (!Utils.isNullOrEmpty(name) && !Utils.isNull(form))\n form.unregisterField(name);\n super.disconnectedCallback();\n }\n get originalValue() {\n return CustomElementUtils.getAttachedPropertyValue(this, ORIGINAL_VALUE_FIELD);\n }\n _setAsOriginalValue(v) {\n CustomElementUtils.setAttachedPropertyValue(this, ORIGINAL_VALUE_FIELD, v);\n }\n reset() {\n this.value = this.originalValue;\n // then\n this.dirty = false;\n }\n setPristine() {\n this._setAsOriginalValue(this.value);\n //\n this.dirty = false;\n }\n setDirty() {\n this.dirty = true;\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModelElement.prototype, \"viewValue\", void 0);\n__decorate([\n Watch({\n converter: {\n convert: (attr, element) => {\n if (!(element instanceof PacemModelElement)) {\n return attr;\n }\n return element.convertValueAttributeToProperty(attr);\n },\n convertBack: (prop) => prop.toString()\n }\n })\n], PacemModelElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModelElement.prototype, \"dirty\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModelElement.prototype, \"valid\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModelElement.prototype, \"name\", void 0);\nexport class PacemBaseElement extends PacemModelElement {\n constructor() {\n super(...arguments);\n this.focusHandler = (evt) => {\n const focusFieldgroup = (add = true) => {\n // TODO: re-think, since this is an ugly workaround just to properly set the outline and borders of the fieldgroup \n if (Utils.hasClass(this.parentElement, '.' + PCSS + '-fieldgroup')) {\n (add ? Utils.addClass : Utils.removeClass).apply(this, [this.parentElement, PCSS + '-focus']);\n }\n };\n const blurFieldgroup = () => focusFieldgroup(false);\n switch (evt.type) {\n case 'focus':\n Utils.addClass(this, PCSS + '-focus');\n focusFieldgroup();\n this._preFocusValue = this.value;\n break;\n case 'blur':\n Utils.removeClass(this, PCSS + '-focus');\n blurFieldgroup();\n break;\n }\n if (evt.bubbles)\n this.emit(evt);\n else\n this.dispatchEvent(new FocusEvent(evt.type));\n };\n this.changeHandler = (evt) => {\n const val = this.value;\n this.onChange(evt).then(v => {\n if (!this.compareValuePropertyValues(val, v)) {\n this.dispatchEvent(new FieldChangeEvent({\n fieldName: this.name,\n oldValue: val,\n currentValue: v,\n firstChange: !this.dirty\n }));\n this.dirty = true;\n }\n }, _ => {\n // do nothing\n });\n };\n this.keydownHandler = (evt) => {\n stopPropagationHandler(evt);\n };\n this.keyupHandler = (evt) => {\n switch (evt.keyCode) {\n case /* Esc */ 27:\n stopPropagationHandler(evt);\n // choose between reset and set\n if (this.compareValuePropertyValues(this.originalValue, this._preFocusValue)) {\n this.reset();\n }\n else {\n this.value = this._preFocusValue;\n }\n this.blur();\n break;\n case /* Enter */ 13:\n if (this.preventKeyboardSubmit) {\n stopPropagationHandler(evt);\n }\n break;\n }\n };\n }\n compareValuePropertyValues(old, val) {\n return DefaultComparer(old, val);\n }\n get preventKeyboardSubmit() {\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'required':\n case 'disabled':\n case 'autofocus':\n case 'placeholder':\n case 'readonly':\n for (let inputField of this.inputFields) {\n val ? inputField.setAttribute(name, val) : inputField.removeAttribute(name);\n }\n break;\n //case 'name':\n case 'tabOrder':\n for (let inputField of this.inputFields) {\n inputField.setAttribute('tabindex', val);\n }\n break;\n case 'value':\n this.acceptValue(val);\n break;\n }\n if (name === 'required'\n || name === 'disabled'\n || name === 'readonly') {\n let className = `${PCSS}-${name}`;\n val ? Utils.addClass(this, className) : Utils.removeClass(this, className);\n }\n if (name === 'readonly') {\n this.toggleReadonlyView(val);\n }\n // aria-... attributes\n else if (name === 'required') {\n this.aria.attributes.set('required', !!val + '');\n }\n else if (name === 'valid') {\n // Specs say that 'aria-invalid' on required attributes SHOULD NOT be set before submission, \n // think about a 'submitted state'(?) to check against...\n this.aria.attributes.set('invalid', (!val && !!this.dirty) + '');\n }\n }\n registerInputFields(inputFields = this.inputFields) {\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let inputField of inputFields) {\n inputField.addEventListener('focus', this.focusHandler, false);\n inputField.addEventListener('blur', this.focusHandler, false);\n inputField.addEventListener('change', this.changeHandler, false);\n // avoid interference with other handlers (e.g. cref UI.PacemAdapterElement)\n inputField.addEventListener('keydown', this.keydownHandler, false);\n inputField.addEventListener('keyup', this.keyupHandler, false);\n inputField.addEventListener('mousedown', stopPropagationHandler, false);\n inputField.addEventListener('touchstart', stopPropagationHandler, { passive: false, capture: false });\n }\n }\n unregisterInputFields(inputFields = this.inputFields) {\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let inputField of inputFields) {\n if (Utils.isNull(inputField))\n continue;\n inputField.removeEventListener('touchstart', stopPropagationHandler, { capture: false });\n inputField.removeEventListener('keydown', this.keydownHandler, false);\n inputField.removeEventListener('keyup', this.keyupHandler, false);\n inputField.removeEventListener('mousedown', stopPropagationHandler, false);\n //\n inputField.removeEventListener('change', this.changeHandler, false);\n inputField.removeEventListener('focus', this.focusHandler, false);\n inputField.removeEventListener('blur', this.focusHandler, false);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.toggleReadonlyView(this.readonly || false);\n // aria-attribute\n if (!Utils.isNullOrEmpty(this.id)) {\n const label = document.querySelector(`label[for=${this.id}]`);\n if (label) {\n if (label.id) {\n this.aria.attributes.set('labelledby', label.id);\n }\n else {\n this.aria.attributes.set('label', label.textContent);\n }\n }\n else {\n this.aria.attributes.remove('labelledby');\n this.aria.attributes.remove('label');\n }\n ;\n }\n // add handlers\n this.registerInputFields();\n }\n disconnectedCallback() {\n // remove handlers\n this.unregisterInputFields();\n super.disconnectedCallback();\n }\n focus() {\n const fields = this.inputFields;\n if (fields && fields.length) {\n fields[0].focus();\n }\n }\n blur() {\n const fields = this.inputFields;\n if (!Utils.isNullOrEmpty(fields)) {\n for (let field of fields) {\n field.blur();\n }\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseElement.prototype, \"required\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseElement.prototype, \"autofocus\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBaseElement.prototype, \"name\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBaseElement.prototype, \"placeholder\", void 0);\nexport class PacemItemElement extends Components.PacemElement {\n #container;\n /** @overridable */\n findContainer() {\n return CustomElementUtils.findAncestor(this, n => n instanceof PacemItemsContainerBaseElement);\n }\n get container() {\n return this.#container;\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 class PacemItemsContainerBaseElement extends PacemBaseElement {\n /**\n * Registers a new item among the items.\n * @param item {PacemDataItemElement} Item to be enrolled\n */\n register(item) {\n let flag = true;\n if (Utils.isNull(this.items)) {\n this.items = [item];\n }\n else if (this.items.indexOf(item) === -1) {\n this.items.push(item);\n }\n else {\n flag = false;\n }\n return flag;\n }\n /**\n * Removes an existing element from the items.\n * @param item {PacemDataItemElement} Item to be removed\n */\n unregister(item) {\n const ndx = !Utils.isNull(this.items) && this.items.indexOf(item);\n if (ndx >= 0) {\n this.items.splice(ndx, 1)[0];\n return true;\n }\n return false;\n }\n}\n__decorate([\n Watch( /* can only be databound or assigned at runtime */)\n], PacemItemsContainerBaseElement.prototype, \"items\", void 0);\nlet PacemDataItemElement = class PacemDataItemElement extends PacemItemElement {\n};\n__decorate([\n Watch({\n converter: {\n convert: (attr, element) => {\n // boolean?\n if (attr === 'true')\n return true;\n if (attr === 'false')\n return false;\n // number?\n let num = parseFloat(attr);\n if (!isNaN(num))\n return num;\n // date?\n let date = Utils.Dates.parse(attr);\n if (Utils.Dates.isDate(date))\n return date;\n return attr;\n },\n convertBack: (prop) => prop.toString()\n }\n })\n], PacemDataItemElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDataItemElement.prototype, \"label\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemDataItemElement.prototype, \"disabled\", void 0);\nPacemDataItemElement = __decorate([\n CustomElement({ tagName: P + '-data-item' })\n], PacemDataItemElement);\nexport { PacemDataItemElement };\nexport class PacemDataSourceElement extends PacemItemsContainerBaseElement {\n constructor(multipleChoice = false) {\n super();\n this.multipleChoice = multipleChoice;\n this._itemPropertyChangedHandler = (evt) => {\n this.databind();\n };\n }\n /**\n * Registers a new item among the items.\n * @param item {PacemDataItemElement} Item to be enrolled\n */\n register(item) {\n const flag = super.register(item);\n if (flag) {\n item.addEventListener(PropertyChangeEventName, this._itemPropertyChangedHandler, false);\n }\n return flag;\n }\n /**\n * Removes an existing element from the items.\n * @param item {PacemDataItemElement} Item to be removed\n */\n unregister(item) {\n const flag = super.register(item);\n if (flag) {\n item.removeEventListener(PropertyChangeEventName, this._itemPropertyChangedHandler, false);\n }\n return flag;\n }\n buildAdaptedDatasource(ds = this.datasource) {\n return ds && ds.map(i => this.mapEntityToItem(i));\n }\n databind(datasource = this.buildAdaptedDatasource(this.datasource)) {\n if (Utils.isNull(datasource) && Utils.isNull(this.adaptedDatasource))\n return;\n const ds = this.adaptedDatasource = datasource || []; /*\n .map(i => this.mapEntityToItem(i))*/\n ;\n if (Utils.isNullOrEmpty(ds.filter(i => this.isDataSourceItemSelected(i))))\n this.handleDatasourceMismatch(ds);\n }\n handleDatasourceMismatch(datasource) {\n this.value = undefined;\n }\n /**\n * Checks wether the provided `item` matches the control's criteria for a selected option against a provided value (which defaults to control's value).\n * @param item {any} item to check against\n * @param value {any} value to match\n */\n isItemSelected(item, value = this.value) {\n if (Utils.isNullOrEmpty(value)) {\n return false;\n }\n const v = this.mapEntityToValue(item), c = this.compareBy;\n if (this.multipleChoice && Utils.isArray(value))\n return !Utils.isNull(value.find(j => \n // caution: numbers and strings might be compared, ease the comparison by loosing equality constraints: `===` to `==`.\n j /* value item */ == /*=*/ v /* datasource item */ || (typeof j === 'object' && !Utils.isNullOrEmpty(c) && c in v && c in j && v[c] == /*=*/ j[c])));\n else if (!this.multipleChoice) {\n return value == /*=*/ v || (typeof value === 'object' && !Utils.isNullOrEmpty(c) && c in v && c in value && v[c] == /*=*/ value[c]);\n }\n else {\n return false;\n }\n }\n /**\n * Checks wether the provided `item` matches the control's criteria for a selected option against a provided value (which defaults to control's value).\n * @param item {DataSourceItem} item to check against\n * @param value {any} value to match\n */\n isDataSourceItemSelected(item, value = this.value) {\n if (Utils.isNullOrEmpty(value)) {\n return false;\n }\n if (item.disabled) {\n return false;\n }\n const c = this.compareBy;\n if (this.multipleChoice && Utils.isArray(value)) {\n // caution: numbers and strings might be compared, ease the comparison by loosing equality constraints: `===` to `==`.\n let found = value.find(j => j == /*=*/ item.value || (typeof j === 'object' && !Utils.isNullOrEmpty(c) && c in j && !Utils.isNullOrEmpty(item.value) && c in item.value && j[c] == /*=*/ item.value[c]));\n return !Utils.isNull(found);\n }\n else if (!this.multipleChoice && !Utils.isNullOrEmpty(item.value)) {\n return value == /*=*/ item.value || (typeof value === 'object' && !Utils.isNullOrEmpty(c) && c in value && !Utils.isNullOrEmpty(item.value) && c in item.value && value[c] == /*=*/ item.value[c]);\n }\n else {\n return false;\n }\n }\n mapEntityToValue(entity) {\n if (entity == null) {\n throw 'entity cannot be null';\n }\n // declared\n if (entity instanceof PacemDataItemElement) {\n return entity.value;\n }\n // databound\n let value = entity, prop;\n if (prop = this.valueProperty) {\n value = entity[prop];\n }\n return value;\n }\n mapEntityToViewValue(entity) {\n if (entity == null)\n throw 'entity cannot be null';\n // declared\n if (entity instanceof PacemDataItemElement) {\n return entity.label || entity.value;\n }\n // databound\n let viewValue = entity.toString(), prop;\n if (prop = this.textProperty) {\n viewValue = entity[prop];\n }\n return viewValue;\n }\n mapEntityToItem(entity) {\n if (entity == null) {\n throw 'entity cannot be null';\n }\n // declared\n if (entity instanceof PacemDataItemElement) {\n return { value: entity.value, viewValue: entity.label || entity.value, disabled: entity.disabled, data: entity };\n }\n // databound\n let disabled = false;\n const disabledProp = this.disabledProperty;\n if (!Utils.isNullOrEmpty(disabledProp)) {\n disabled = entity[disabledProp] || false;\n }\n return { value: this.mapEntityToValue(entity), viewValue: this.mapEntityToViewValue(entity), disabled: disabled, data: entity };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n case 'textProperty':\n case 'disabledProperty':\n case 'valueProperty':\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n this.databind();\n // refresh view value, since it depends on selected items.\n this.viewValue = this.getViewValue(this.value);\n });\n break;\n case 'items':\n cancelAnimationFrame(this._handleItems);\n this._handleItems = requestAnimationFrame(() => {\n this.datasource = this.items;\n });\n break;\n }\n }\n getViewValue(val) {\n if (Utils.isNullOrEmpty(this.datasource)) {\n return undefined;\n }\n return this.datasource.filter(i => this.isItemSelected(i)).map(i => this.mapEntityToViewValue(i)).join(', ');\n }\n convertValueAttributeToProperty(attr) {\n if (this.multipleChoice) {\n return attr.split(',').map(i => i.trim());\n }\n return attr;\n }\n compareValuePropertyValues(old, val) {\n return DefaultComparer(old, val);\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemDataSourceElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"valueProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"textProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"disabledProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"compareBy\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemDataSourceElement.prototype, \"adaptedDatasource\", void 0);\n__decorate([\n Debounce(true)\n], PacemDataSourceElement.prototype, \"databind\", null);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, CustomElement, Defaults, P, PCSS, PropertyConverters, Watch } from '@pacem/pacem-core';\n//namespace Pacem.Components.Scaffolding {\nexport const CHAR_COUNTER_CHILD = `<${P}-char-count hide=\"{{ :host.readonly || !(:host.minlength > 0 || :host.maxlength > 0) }}\" minlength=\"{{ :host.minlength }}\" maxlength=\"{{ :host.maxlength }}\" string=\"{{ :host.value }}\"></${P}-char-count>`;\nlet PacemCharCountElement = class PacemCharCountElement extends Components.PacemElement {\n _isValid(v) {\n const l = this._length(v);\n if (this.minlength > 0 && l < this.minlength)\n return false;\n if (this.maxlength > 0 && l > this.maxlength)\n return false;\n return true;\n }\n _length(s) {\n return (s && s.length) || 0;\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemCharCountElement.prototype, \"minlength\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemCharCountElement.prototype, \"maxlength\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCharCountElement.prototype, \"string\", void 0);\nPacemCharCountElement = __decorate([\n CustomElement({\n tagName: P + '-char-count',\n shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-char-count\" css-class=\"{{ {'valid': :host._isValid(:host.string), 'invalid': !:host._isValid(:host.string) } }}\">\r\n <${P}-span hide=\"{{ !(:host.minlength > 0) }}\" class=\"${PCSS}-char-min\" content=\"{{ :host.minlength }}\"></${P}-span>\r\n <${P}-span class=\"${PCSS}-char-curr\" content=\"{{ :host._length(:host.string) || '0' }}\"></${P}-span>\r\n <${P}-span hide=\"{{ !(:host.maxlength > 0) }}\" class=\"${PCSS}-char-max\" content=\"{{ :host.maxlength }}\"></${P}-span>\r\n</${P}-panel>`\n })\n], PacemCharCountElement);\nexport { PacemCharCountElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomTypedEvent, CustomEventUtils, Debounce, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyChangeEvent, PropertyChangeEventName } from '@pacem/pacem-core';\nimport { HistoryService } from '@pacem/pacem-foundation';\nimport { PacemItemElement, PacemItemsContainerBaseElement } from './types-components';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nconst EXECUTECOMMAND_NAME = 'execute';\nconst EMPTY_CONTENT = '<p><br></p>';\nclass ContenteditableChangeEvent extends CustomTypedEvent {\n constructor(html) {\n super('contenteditablechange', { html: html });\n }\n}\nexport class PacemContenteditableCommandElement extends PacemItemElement {\n constructor() {\n super(...arguments);\n this._containerPropChangeHandler = (evt) => {\n const p = evt.detail;\n this.containerPropertyChangedCallback(p.propertyName, p.oldValue, p.currentValue, p.firstChange);\n };\n }\n execCommand(...args) {\n const me = this;\n if (me.disabled) {\n return;\n }\n me.exec.apply(me, args).then(_ => {\n me.dispatchEvent(new Event(EXECUTECOMMAND_NAME));\n }, e => {\n console.error(e);\n });\n }\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, PCSS + '-contenteditable-command');\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const cnt = this.container;\n if (!Utils.isNull(cnt)) {\n this.contentElement = cnt.contentElement;\n cnt.addEventListener(PropertyChangeEventName, this._containerPropChangeHandler, false);\n }\n }\n disconnectedCallback() {\n const cnt = this.container;\n if (!Utils.isNull(cnt)) {\n cnt.removeEventListener(PropertyChangeEventName, this._containerPropChangeHandler, false);\n }\n super.disconnectedCallback();\n }\n containerPropertyChangedCallback(name, old, val, first) {\n if (name === 'range') {\n this.range = val;\n }\n }\n}\n__decorate([\n Watch()\n], PacemContenteditableCommandElement.prototype, \"range\", void 0);\n__decorate([\n Watch()\n], PacemContenteditableCommandElement.prototype, \"contentElement\", void 0);\nfunction isFileCommand(obj) {\n return obj instanceof PacemContenteditableCommandElement && 'pasteCallback' in obj && typeof obj['pasteCallback'] === 'function';\n}\nfunction isElement(node) {\n return node?.nodeType == Node.ELEMENT_NODE;\n}\nlet PacemContenteditableElement = class PacemContenteditableElement extends PacemItemsContainerBaseElement {\n constructor() {\n super('rich text editor');\n this._focusHandler = (evt) => {\n this._ensureInteractiveMarkup();\n };\n this._blurHandler = (evt) => {\n // clean up the output\n const container = this._container;\n for (let command of this.items) {\n command.cleanUp(container);\n }\n this._checkChangedHandler(evt);\n };\n this._pasteHandler = (evt) => {\n // I'll manage it myself!\n evt.preventDefault();\n const range = this.range, files = evt.clipboardData.files;\n if (!Utils.isNull(range) && files.length === 0) {\n const text = evt.clipboardData.getData('text/plain');\n const plainText = text.replace(/</gi, '<').replace(/\\n/gi, '<br />');\n const frag = range.createContextualFragment(plainText);\n range.deleteContents();\n range.insertNode(frag);\n this._checkChangedHandler(evt);\n }\n else {\n for (let j = 0; j < files.length; j++) {\n const f = files.item(j);\n for (let cmd of this.items) {\n if (isFileCommand(cmd)) {\n cmd.pasteCallback(f).then(_ => this._checkChangedHandler(evt), _ => { });\n }\n }\n }\n // this._checkAndSynchronizeHandler(evt);\n }\n };\n this._shortcutHandler = (evt) => {\n // prevent any default shortcut combo apart from 'copy', 'cut' and 'paste' (mainly due to the clipboard access limitations)\n if (evt.ctrlKey && ['C', 'V', 'X'].indexOf(evt.key?.toUpperCase()) === -1) {\n // Let it manage it only if the relevant command is available\n evt.preventDefault();\n }\n };\n this._inputHandler = (evt) => {\n this._fixRangeMarkup();\n this._checkChangedHandler(evt);\n };\n this._checkChangedHandler = (evt) => {\n const container = this._container, inputHtml = container.innerHTML;\n var html = inputHtml;\n if (Utils.isNullOrEmpty(inputHtml)\n || inputHtml === '<br>'\n || inputHtml === EMPTY_CONTENT) {\n container.innerHTML = EMPTY_CONTENT;\n html = '';\n }\n if (html != this.value) {\n this.changeHandler(new ContenteditableChangeEvent(html));\n if (this.value != this.#history.current) {\n this._updateHistory();\n }\n }\n // fire history change in any case\n this._fireHistoryChange();\n };\n this._selectionChangeHandler = (evt) => {\n const selection = document.getSelection();\n if (selection && selection.anchorNode && this._container.contains(selection.anchorNode)) {\n const range = selection.getRangeAt(0);\n this.range = range.cloneRange();\n }\n else {\n this.range = null;\n }\n };\n //this._workspace = document.createElement('div');\n }\n #history;\n get history() {\n return this.#history;\n }\n reset() {\n super.reset();\n this.#history.reset();\n this._fireHistoryChange();\n }\n _fireHistoryChange() {\n const h = this.#history;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'history', oldValue: h, currentValue: h }));\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n toggleReadonlyView(readonly) {\n this._dashboard.hidden = readonly;\n if (readonly) {\n this._container.removeAttribute('contenteditable');\n }\n else {\n this._container.setAttribute('contenteditable', 'true');\n document.execCommand(\"defaultParagraphSeparator\", false, \"p\");\n }\n }\n register(item) {\n if (super.register(item)) {\n item.addEventListener(EXECUTECOMMAND_NAME, this._checkChangedHandler, false);\n return true;\n }\n return false;\n }\n unregister(item) {\n if (super.unregister(item)) {\n item.removeEventListener(EXECUTECOMMAND_NAME, this._checkChangedHandler, false);\n return true;\n }\n return false;\n }\n /** @override */\n get preventKeyboardSubmit() {\n return true;\n }\n get inputFields() {\n return [this._container];\n }\n get contentElement() {\n return this._container;\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, ContenteditableChangeEvent)) {\n const html = this.value = evt.detail.html;\n resolve(html);\n // find a less-instrusive way to call this...\n this._selectionChangeHandler(evt);\n }\n else\n resolve(this.value);\n });\n }\n _fixRangeMarkup() {\n const range = this.range, fnDownwards = (node) => {\n node.childNodes.forEach(i => fnDownwards(i));\n if (isElement(node) && node.tagName === 'SPAN') {\n Element.prototype.replaceWith.apply(node, Array.from(node.childNodes));\n }\n else if (node instanceof HTMLElement) {\n node.removeAttribute('style');\n }\n }, fn = (node) => {\n let element = node;\n if (!isElement(element)) {\n element = node.parentElement;\n }\n fnDownwards(element);\n };\n if (!Utils.isNull(range)) {\n fn(range.commonAncestorContainer);\n }\n }\n _ensureInteractiveMarkup() {\n const workspace = this._container, nodes = workspace.childNodes, childCount = nodes.length;\n if (childCount == 0 || workspace.innerHTML === EMPTY_CONTENT) {\n workspace.innerHTML = EMPTY_CONTENT;\n }\n else {\n let node, range;\n const closeRange = (n) => {\n range.setEndAfter(n);\n const p = document.createElement('p');\n range.surroundContents(p);\n };\n for (let j = 0; j < childCount; j++) {\n node = nodes.item(j);\n if (!(node instanceof Element)) {\n if (Utils.isNull(range)) {\n range = document.createRange();\n range.setStartBefore(node);\n }\n }\n else if (range) {\n closeRange(node.previousSibling);\n range = null;\n }\n }\n // open range?\n if (!Utils.isNull(range)) {\n closeRange(node);\n }\n }\n }\n _updateHistory() {\n this.#history.push(this.value);\n this._fireHistoryChange();\n }\n acceptValue(val) {\n if (!Utils.isNull(this._container) && /*the following `if` statement prevents from flashing the content and writing backwards!*/ val != this._container.innerHTML) {\n this._container.innerHTML = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this._container;\n this.#history = new HistoryService(this.value);\n container.addEventListener('blur', this._blurHandler, false);\n container.addEventListener('keydown', this._shortcutHandler, false);\n container.addEventListener('focus', this._focusHandler, false);\n container.addEventListener('input', this._inputHandler, false);\n container.addEventListener('paste', this._pasteHandler, false);\n document.addEventListener('selectionchange', this._selectionChangeHandler, false);\n }\n disconnectedCallback() {\n document.removeEventListener('selectionchange', this._selectionChangeHandler, false);\n const container = this._container;\n if (!Utils.isNull(container)) {\n container.removeEventListener('keydown', this._shortcutHandler, false);\n container.removeEventListener('blur', this._blurHandler, false);\n container.removeEventListener('focus', this._focusHandler, false);\n container.removeEventListener('input', this._inputHandler, false);\n container.removeEventListener('paste', this._pasteHandler, false);\n }\n super.disconnectedCallback();\n }\n getViewValue(val) {\n return val;\n }\n};\n__decorate([\n ViewChild(\"div[pacem]\")\n], PacemContenteditableElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(\"div[dashboard]\")\n], PacemContenteditableElement.prototype, \"_dashboard\", void 0);\n__decorate([\n Watch()\n], PacemContenteditableElement.prototype, \"range\", void 0);\n__decorate([\n Debounce(500)\n], PacemContenteditableElement.prototype, \"_updateHistory\", null);\nPacemContenteditableElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-contenteditable ${PCSS}-viewfinder\">\r\n <div contenteditable=\"true\" role=\"presenter\" pacem></div>\r\n</div>${CHAR_COUNTER_CHILD}\r\n<div dashboard>\r\n <${P}-content></${P}-content>\r\n</div>`\n })\n], PacemContenteditableElement);\nexport { PacemContenteditableElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PropertyConverters, Utils, Watch } from '@pacem/pacem-core';\nimport { PacemContenteditableCommandElement } from '../contenteditable';\n//namespace Pacem.Components.Scaffolding {\nexport class PacemContenteditableButtonCommandElement extends PacemContenteditableCommandElement {\n cleanUp(_) {\n // do nothing\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'range') {\n this.active = !Utils.isNull(val);\n }\n }\n getTooltip(altText = this.altText, shortcut = this.keyboardShortcut) {\n const hint = altText;\n if (Utils.isNullOrEmpty(shortcut)) {\n return hint;\n }\n return `${hint} (${shortcut})`;\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableButtonCommandElement.prototype, \"icon\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableButtonCommandElement.prototype, \"keyboardShortcut\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableButtonCommandElement.prototype, \"altText\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemContenteditableButtonCommandElement.prototype, \"active\", void 0);\nexport const CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE = `<${P}-button disabled=\"{{ !:host.active }}\" css-class=\"{{ {'text-primary': :host.isRelevant(:host.range)} }}\" tooltip=\"{{ :host.getTooltip(:host.altText, :host.keyboardShortcut) }}\" class=\"button\" on-click=\":host.execCommand()\"><${P}-icon class=\"text-rootsize\" icon=\"{{ :host.icon }}\"></${P}-icon></${P}-button>\r\n <${P}-shortcut disabled=\"{{ !:host.active }}\" target=\"{{ :host.contentElement }}\" combination=\"{{ :host.keyboardShortcut }}\" on-execute=\":host.execCommand()\"></${P}-shortcut>`;\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\n//namespace Pacem.Components.Scaffolding {\nlet PacemContenteditableHistoryCommandElement = class PacemContenteditableHistoryCommandElement extends PacemContenteditableButtonCommandElement {\n exec() {\n return new Promise((resolve, _) => {\n const history = this.container?.history;\n if (!Utils.isNull(history)) {\n switch (this.command) {\n case 'redo':\n if (history.canRedo) {\n history.redo();\n resolve();\n }\n break;\n default:\n if (history.canUndo) {\n history.undo();\n resolve();\n }\n break;\n }\n this.contentElement.innerHTML = history.current;\n }\n });\n }\n isRelevant(_) {\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'command':\n this.icon = this.icon || val;\n this.altText = val;\n this.keyboardShortcut = this.keyboardShortcut || ('Ctrl+' + (val === 'redo' ? 'Y' : 'Z'));\n break;\n }\n }\n containerPropertyChangedCallback(name, old, val, first) {\n super.containerPropertyChangedCallback(name, old, val, first);\n const c = this.container, h = c.history;\n if (name === 'range' || name === 'history') {\n // override 'active' state setting\n this.active = !Utils.isNull(c.range) &&\n ((this.command === 'redo' && h?.canRedo) || (this.command !== 'redo' && h?.canUndo));\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true })\n], PacemContenteditableHistoryCommandElement.prototype, \"command\", void 0);\nPacemContenteditableHistoryCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-historycommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableHistoryCommandElement);\nexport { PacemContenteditableHistoryCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils } from './utils';\n//namespace Pacem.Components.Scaffolding {\nlet PacemContenteditableLinkCommandElement = class PacemContenteditableLinkCommandElement extends PacemContenteditableButtonCommandElement {\n isRelevant(range) {\n return !Utils.isNull(ContenteditableUtils.findSurroundingNode(range, HTMLAnchorElement));\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNullOrEmpty(this.altText)) {\n this.altText = 'insert link';\n }\n if (Utils.isNullOrEmpty(this.icon)) {\n this.icon = 'insert_link';\n }\n if (Utils.isNullOrEmpty(this.keyboardShortcut)) {\n this.keyboardShortcut = 'Ctrl+H';\n }\n }\n exec(arg, target = this.target) {\n return new Promise((resolve, reject) => {\n var selection = this.range;\n var anchorNode = ContenteditableUtils.findSurroundingNode(selection, HTMLAnchorElement);\n //console.log('selection: ' + selection);\n var current = \"http://\";\n var regex = /<a.*href=\\\"([^\\\"]*)/;\n if (anchorNode && regex.test(anchorNode.outerHTML)) {\n current = regex.exec(anchorNode.outerHTML)[1];\n }\n //console.log('link: ' + current);\n if (arg === 'current') {\n return current == 'http://' ? '' : current;\n }\n var link = arg || (arg === void 0 && window.prompt('link (empty to unlink):', current));\n if (!link) {\n document.execCommand('unlink');\n }\n else {\n document.execCommand('createLink', false, link);\n anchorNode = ContenteditableUtils.findSurroundingNode(selection, HTMLAnchorElement);\n if (anchorNode) {\n anchorNode.setAttribute('target', target || '_blank');\n }\n }\n resolve();\n });\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemContenteditableLinkCommandElement.prototype, \"target\", void 0);\nPacemContenteditableLinkCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-linkcommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableLinkCommandElement);\nexport { PacemContenteditableLinkCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PCSS, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils, ContenteditableDOMObserver } from './utils';\n//namespace Pacem.Components.Scaffolding {\n//@CustomElement({ tagName: P + '-contenteditable-selectable' })\n//export class PacemContenteditableSelectableBehaviorElement extends Pacem.Behaviors.PacemBehavior {\n// protected decorate(element: Element) {\n// if (element instanceof HTMLElement || element instanceof SVGElement) {\n// Utils.addClass(element, PCSS + '-contenteditable-selectable');\n// }\n// }\n// protected undecorate(element: Element) {\n// if (element instanceof HTMLElement || element instanceof SVGElement) {\n// Utils.removeClass(element, PCSS + '-contenteditable-selectable');\n// }\n// }\n//}\nfunction insertPicture(range, blob) {\n return new Promise((resolve, reject) => {\n Utils.blobToDataURL(blob)\n .then(Utils.loadImage)\n .then(img => {\n const pic = document.createElement('picture');\n pic.setAttribute('contenteditable', 'false');\n img.tabIndex = 0;\n pic.appendChild(img);\n range.deleteContents();\n range.insertNode(pic);\n resolve(pic);\n });\n });\n}\nlet PacemContenteditableImageCommandElement = class PacemContenteditableImageCommandElement extends PacemContenteditableButtonCommandElement {\n constructor() {\n super(...arguments);\n this._setBehaviorHandler = (evt) => {\n const img = evt.target, pic = img.parentElement;\n // this._rescale.register(pic);\n this.range = ContenteditableUtils.select(pic);\n };\n this._disposeBehaviorHandler = (_) => {\n };\n // #endregion\n }\n pasteCallback(f) {\n if (f.type.startsWith('image')) {\n return insertPicture(this.range, f);\n }\n else {\n return Promise.reject();\n }\n }\n cleanUp(content) {\n content.querySelectorAll('picture[contenteditable=false]').forEach(pic => {\n const childCount = pic.childNodes.length;\n for (let j = childCount - 1; j > 0; j--) {\n // remove leftover rescale divs\n pic.childNodes.item(j).remove();\n }\n });\n // legacy leftovers\n content.querySelectorAll('div.' + PCSS + '-rescale').forEach(i => i.remove());\n }\n isRelevant(range) {\n return false;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNullOrEmpty(this.altText)) {\n this.altText = 'insert image';\n }\n if (Utils.isNullOrEmpty(this.icon)) {\n this.icon = 'insert_photo';\n }\n if (Utils.isNullOrEmpty(this.keyboardShortcut)) {\n this.keyboardShortcut = 'Ctrl+Shift+I';\n }\n this._rescale.addEventListener('rescale', this._rescaleImg, false);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._rescale)) {\n this._rescale.removeEventListener('rescale', this._rescaleImg, false);\n this._disposeContainer();\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'disabled':\n if (!Utils.isNull(this._rescale)) {\n this._rescale.disabled = val;\n }\n break;\n case 'contentElement':\n if (old) {\n this._disposeContainer(old);\n }\n if (val) {\n this._initContainer(val);\n }\n break;\n case 'range':\n this._rangeChangeCallback(old, val);\n break;\n }\n }\n exec() {\n return new Promise((resolve, reject) => {\n const file = this._file, range = this.range;\n file.onchange = (evt) => {\n const f = file.files[0];\n if (Utils.isNull(f)) {\n resolve();\n }\n else {\n insertPicture(range, f)\n .then(pic => {\n file.value = '';\n resolve();\n });\n }\n };\n file.click();\n });\n }\n // #region private\n _rescaleImg(evt) {\n evt.preventDefault();\n const pic = evt.detail.element, rect = evt.detail.targetRect, img = pic.firstElementChild;\n img.style.width = rect.width + 'px';\n img.style.height = rect.height + 'px';\n }\n #observer;\n _rangeChangeCallback(old, val) {\n if (!Utils.isNull(old)\n && !old.collapsed\n && old.commonAncestorContainer instanceof Element\n && old.commonAncestorContainer === old.startContainer\n && old.commonAncestorContainer === old.endContainer\n && old.startOffset === (old.endOffset - 1)) {\n const el = old.commonAncestorContainer.childNodes.item(old.startOffset);\n if (el instanceof HTMLPictureElement) {\n this._rescale.unregister(el);\n }\n }\n if (!Utils.isNull(val)\n && !val.collapsed\n && val.commonAncestorContainer instanceof Element\n && val.commonAncestorContainer === val.startContainer\n && val.commonAncestorContainer === val.endContainer\n && val.startOffset === (val.endOffset - 1)) {\n const el = val.commonAncestorContainer.childNodes.item(val.startOffset);\n if (el instanceof HTMLPictureElement) {\n this._rescale.register(el);\n }\n }\n }\n _enhancePictureElement(pic) {\n if (pic.firstElementChild) {\n pic.firstElementChild.addEventListener('focus', this._setBehaviorHandler, false);\n pic.firstElementChild.addEventListener('blur', this._disposeBehaviorHandler, false);\n }\n }\n _downgradePictureElement(pic) {\n if (pic.firstElementChild) {\n // this._rescale.unregister(pic);\n pic.firstElementChild.removeEventListener('focus', this._setBehaviorHandler, false);\n pic.firstElementChild.removeEventListener('blur', this._disposeBehaviorHandler, false);\n }\n }\n _initContainer(contentElement = this.contentElement) {\n this.#observer = new ContenteditableDOMObserver(contentElement, (pic, removed) => {\n if (pic instanceof HTMLPictureElement) {\n if (removed) {\n this._downgradePictureElement(pic);\n }\n else {\n this._enhancePictureElement(pic);\n }\n }\n }, 'picture');\n }\n _disposeContainer(_ = this.contentElement) {\n const observer = this.#observer;\n if (!Utils.isNull(observer)) {\n observer.dispose();\n }\n }\n};\n__decorate([\n ViewChild('input[type=file]')\n], PacemContenteditableImageCommandElement.prototype, \"_file\", void 0);\n__decorate([\n ViewChild(P + \"-rescale\")\n], PacemContenteditableImageCommandElement.prototype, \"_rescale\", void 0);\nPacemContenteditableImageCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-imagecommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<input type=\"file\" accept=\"image/png, image/gif, image/jpeg, image/bmp, image/x-icon\" class=\"${PCSS}-trasparent ${PCSS}-inert\" pacem hidden>` +\n CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE + `<${P}-rescale keep-proportions=\"true\"></${P}-rescale>`\n })\n], PacemContenteditableImageCommandElement);\nexport { PacemContenteditableImageCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PropertyConverters, Utils, Watch } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils } from './utils';\n//namespace Pacem.Components.Scaffolding {\nexport var KnownExecCommand;\n(function (KnownExecCommand) {\n KnownExecCommand[\"Bold\"] = \"bold\";\n KnownExecCommand[\"Italic\"] = \"italic\";\n KnownExecCommand[\"Underline\"] = \"underline\";\n KnownExecCommand[\"StrikeThrough\"] = \"strikeThrough\";\n KnownExecCommand[\"OrderedList\"] = \"insertOrderedList\";\n KnownExecCommand[\"UnorderedList\"] = \"insertUnorderedList\";\n KnownExecCommand[\"JustifyLeft\"] = \"justifyLeft\";\n KnownExecCommand[\"JustifyCenter\"] = \"justifyCenter\";\n KnownExecCommand[\"JustifyRight\"] = \"justifyRight\";\n KnownExecCommand[\"JustifyFull\"] = \"justifyFull\";\n //Copy = 'copy',\n //Cut = 'cut',\n //Paste = 'paste'\n //Undo = 'undo',\n //Redo = 'redo',\n})(KnownExecCommand || (KnownExecCommand = {}));\n;\n/**\n * Returns relevant material icon ligatures\n * @param cmd A known command\n */\nfunction getKnownCommandIcon(cmd) {\n const lower_cmd = cmd?.toLowerCase();\n switch (lower_cmd) {\n case \"bold\":\n case \"italic\":\n return 'format_' + lower_cmd;\n case 'underline':\n return 'format_underlined';\n case 'strikethrough':\n return 'strikethrough_s';\n case 'insertorderedlist':\n return 'format_list_numbered';\n case 'insertunorderedlist':\n return 'format_list_bulleted';\n case 'justifyleft':\n case 'justifyright':\n case 'justifycenter':\n return 'format_align_' + lower_cmd.substr(7 /* 'justify' */);\n case 'justifyfull':\n return 'format_align_justify';\n default:\n return 'help_outline';\n }\n}\nfunction getKnownCommandFilters(cmd, argument) {\n const lower_cmd = cmd?.toLowerCase();\n switch (lower_cmd) {\n case \"bold\":\n return ['b', 'strong'];\n case \"italic\":\n return ['i', 'em'];\n case 'underline':\n return ['u'];\n case 'strikethrough':\n return ['strike', 's', 'del'];\n case 'insertorderedlist':\n return ['ol'];\n case 'insertunorderedlist':\n return ['ul'];\n case 'justifyleft':\n return [{ style: { name: 'text-align', value: 'left' } }];\n case 'justifyright':\n return [{ style: { name: 'text-align', value: 'right' } }];\n case 'justifycenter':\n return [{ style: { name: 'text-align', value: 'center' } }];\n case 'justifyfull':\n return [{ style: { name: 'text-align', value: 'justify' } }];\n case 'formatblock':\n return [argument];\n default:\n return ['none'];\n }\n}\nlet PacemContenteditableExecCommandElement = class PacemContenteditableExecCommandElement extends PacemContenteditableButtonCommandElement {\n _matchRelevance(range, arg) {\n const found = (typeof arg === 'object') ?\n ContenteditableUtils.findSurroundingNode(range, node => node instanceof HTMLElement\n && (Utils.isNullOrEmpty(arg.tagName) || node.tagName === arg.tagName.toUpperCase())\n && node.style[arg.style.name] === arg.style.value)\n : ContenteditableUtils.findSurroundingNode(range, arg);\n return !Utils.isNull(found);\n }\n isRelevant(range) {\n const filters = getKnownCommandFilters(this.command, this.argument);\n for (let f of filters) {\n if (this._matchRelevance(range, f)) {\n return true;\n }\n }\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'command') {\n if (Utils.isNullOrEmpty(this.icon) || this.icon === getKnownCommandIcon(old)) {\n this.icon = getKnownCommandIcon(val);\n }\n if (Utils.isNullOrEmpty(this.altText) || this.altText === old) {\n this.altText = val;\n }\n }\n }\n exec() {\n return new Promise((resolve, _) => {\n // check if selection is around an 'inert' ([contenteditable=false]) element\n const r = this.range, cmdfilter = getKnownCommandFilters(this.command, this.argument)[0];\n if (!Utils.isNull(r)) {\n // #region wrap/unwrap (manages contenteditable=false 'islands')\n const island = ContenteditableUtils.testInertElementWrapping(r);\n if (island.result\n && typeof cmdfilter === 'string' && ['b', 'i', 'strike', 'u'].indexOf(cmdfilter) >= 0) {\n // wrap or remove?\n const wrapper = ContenteditableUtils.findSurroundingNode(r, cmdfilter);\n if (!Utils.isNull(wrapper) && wrapper.childNodes.length === 1) {\n // remove\n const newChild = wrapper.childNodes.item(0), select = island.element;\n wrapper.parentElement.replaceChild(newChild, wrapper);\n ContenteditableUtils.select(select);\n }\n else {\n // wrap\n const n = document.createElement(cmdfilter), select = island.element;\n const frag = r.extractContents();\n r.insertNode(n);\n n.append(frag);\n ContenteditableUtils.select(select);\n }\n }\n // #endregion\n else {\n document.execCommand(this.command, false, this.argument);\n }\n }\n resolve();\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableExecCommandElement.prototype, \"command\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemContenteditableExecCommandElement.prototype, \"argument\", void 0);\nPacemContenteditableExecCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-execcommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableExecCommandElement);\nexport { PacemContenteditableExecCommandElement };\n","import { Utils, PCSS } from '@pacem/pacem-core';\nimport { PacemContenteditableHistoryCommandElement } from './historycommand';\nimport { PacemContenteditableAlignCommandElement } from './aligncommand';\nimport { PacemContenteditableLinkCommandElement } from './linkcommand';\nimport { PacemContenteditableImageCommandElement } from './imagecommand';\nimport { PacemContenteditableExecCommandElement, KnownExecCommand } from './execcommand';\n//namespace Pacem.Components.Scaffolding {\nfunction isRoot(element) {\n return element instanceof HTMLDivElement\n && element.contentEditable === 'true'\n && element.hasAttribute('pacem')\n && element.hasAttribute('role')\n && element.attributes['role'].value === 'presenter';\n}\nexport class ContenteditableDOMObserver {\n constructor(contentElement, mutationCallback, selector = '*[contenteditable=false]') {\n this.#callback = mutationCallback;\n this.#selector = selector;\n this.#mutationObserver = new MutationObserver(list => {\n const fn = (item, removed) => {\n item.childNodes.forEach(i => /* recursion here */ fn(i, removed));\n mutationCallback(item, removed);\n };\n for (let entry of list) {\n const added = entry.addedNodes;\n const removed = entry.removedNodes;\n for (let j = 0; j < added.length; j++) {\n const item = added.item(j);\n fn(item, false);\n }\n for (let j = 0; j < removed.length; j++) {\n const item = removed.item(j);\n fn(item, true);\n }\n }\n });\n this._initContainer(contentElement);\n }\n _initContainer(contentElement) {\n contentElement.querySelectorAll(this.#selector).forEach(el => this.#callback(el));\n this.#mutationObserver.observe(contentElement, { subtree: true, childList: true });\n this.#contentElement = contentElement;\n }\n _disposeContainer(contentElement) {\n const observer = this.#mutationObserver;\n if (!Utils.isNull(observer)) {\n observer.disconnect();\n }\n contentElement.querySelectorAll(this.#selector).forEach(el => this.#callback(el, true));\n }\n dispose() {\n this._disposeContainer(this.#contentElement);\n }\n #selector;\n #callback;\n #contentElement;\n #mutationObserver;\n}\nexport class ContenteditableUtils {\n static getDefaultDashboard() {\n const frag = new DocumentFragment();\n const toolbar0 = document.createElement('div');\n Utils.addClass(toolbar0, PCSS + '-contenteditable-toolbar');\n const undo = new PacemContenteditableHistoryCommandElement();\n undo.command = 'undo';\n undo.keyboardShortcut = \"Ctrl+Z\";\n const redo = new PacemContenteditableHistoryCommandElement();\n redo.command = 'redo';\n redo.keyboardShortcut = \"Ctrl+Y\";\n toolbar0.append(undo, redo);\n const separator0 = document.createElement('div');\n Utils.addClass(separator0, PCSS + '-contenteditable-separator');\n const toolbar1 = document.createElement('div');\n Utils.addClass(toolbar1, PCSS + '-contenteditable-toolbar');\n const bold = new PacemContenteditableExecCommandElement();\n bold.command = KnownExecCommand.Bold;\n bold.keyboardShortcut = \"Ctrl+B\";\n const italic = new PacemContenteditableExecCommandElement();\n italic.command = KnownExecCommand.Italic;\n italic.keyboardShortcut = \"Ctrl+I\";\n const underline = new PacemContenteditableExecCommandElement();\n underline.command = KnownExecCommand.Underline;\n underline.keyboardShortcut = \"Ctrl+U\";\n const strike = new PacemContenteditableExecCommandElement();\n strike.command = KnownExecCommand.StrikeThrough;\n underline.keyboardShortcut = \"Ctrl+K\";\n const ul = new PacemContenteditableExecCommandElement();\n ul.command = KnownExecCommand.UnorderedList;\n const ol = new PacemContenteditableExecCommandElement();\n ol.command = KnownExecCommand.OrderedList;\n const alignLeft = new PacemContenteditableAlignCommandElement();\n alignLeft.align = 'left';\n const alignCenter = new PacemContenteditableAlignCommandElement();\n alignCenter.align = 'center';\n const alignRight = new PacemContenteditableAlignCommandElement();\n alignRight.align = 'right';\n const justify = new PacemContenteditableAlignCommandElement();\n justify.align = 'justify';\n toolbar1.append(bold, italic, underline, strike, ul, ol, alignLeft, alignCenter, alignRight, justify);\n const separator1 = document.createElement('div');\n Utils.addClass(separator1, PCSS + '-contenteditable-separator');\n const toolbar2 = document.createElement('div');\n Utils.addClass(toolbar2, PCSS + '-contenteditable-toolbar');\n const link = new PacemContenteditableLinkCommandElement();\n const img = new PacemContenteditableImageCommandElement();\n toolbar2.append(link, img);\n frag.append(toolbar0, separator0, toolbar1, separator1, toolbar2);\n return frag;\n }\n static findSurroundingNode(range, arg1) {\n var node = range instanceof Node ? range : range.commonAncestorContainer;\n while (node && !(typeof arg1 === 'string' && node instanceof Element && node.tagName === arg1.toUpperCase()\n || typeof arg1 === 'function' && Utils.isNull(arg1.prototype) && arg1(node)\n || typeof arg1 === 'function' && !Utils.isNull(arg1.prototype) && node instanceof arg1)) {\n const parent = node.parentNode;\n if (isRoot(parent)) {\n node = null;\n break;\n }\n node = parent;\n }\n return node;\n }\n static findSurroundingBlockElement(range) {\n return this.findSurroundingNode(range, ContenteditableUtils.isBlockElement);\n }\n static findSurroundingSiblingBlockElements(range) {\n let output = [];\n if (isRoot(range.startContainer)) {\n if (!range.collapsed) {\n const root = range.startContainer;\n for (let k = range.startOffset; k <= range.endOffset; k++) {\n const child = root.children.item(k);\n if (this.isBlockElement(child)) {\n output.push(root.children.item(k));\n }\n }\n }\n return output;\n }\n // simil-collapsed\n if (range.startContainer === range.endContainer) {\n let retval = range.startContainer;\n while (!ContenteditableUtils.isBlockElement(retval) && retval.parentElement.contentEditable != 'true') {\n retval = retval.parentElement;\n }\n return retval instanceof Element ? [retval] :\n (retval.parentElement.contentEditable === 'true' ? [] : [retval.parentElement]);\n }\n // generic\n let root = range.commonAncestorContainer, started = false;\n for (let j = 0; j < root.childNodes.length; j++) {\n const iNode = root.childNodes.item(j);\n const pick = (!started && iNode.contains(range.startContainer))\n || started;\n if (pick && ContenteditableUtils.isBlockElement(iNode)) {\n output.push(iNode);\n started = true;\n if (iNode.contains(range.endContainer)) {\n break;\n }\n }\n }\n return started ? output : (root instanceof Element && !isRoot(root) ? [root] : []);\n }\n static findContainingRootElements(range) {\n const range1 = range.cloneRange(), range2 = range.cloneRange();\n range1.collapse(true);\n range2.collapse();\n let root = this.findSurroundingNode(range1, n => n.parentElement.contentEditable === 'true');\n const retval = [root];\n while (!root.contains(range2.startContainer)) {\n retval.push(root = root.nextElementSibling);\n }\n return retval;\n }\n static isBlockElement(node) {\n return node instanceof Element && !getComputedStyle(node).display.startsWith('inline');\n }\n static select(node, inside = false) {\n const range = document.createRange();\n if (!inside) {\n range.setStartBefore(node);\n range.setEndAfter(node);\n }\n else {\n range.setStart(node, 0);\n range.setEnd(node, node.childNodes.length);\n }\n const selection = document.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n return range;\n }\n static copyAttributes(to, from) {\n const attrs = from.attributes;\n for (let j = 0; j < attrs.length; j++) {\n const attr = attrs.item(j);\n to.setAttribute(attr.name, attr.value);\n }\n }\n /**\n * Checks whether the provided range wraps an 'inert' (contentEditable=false) element, and returns result accordingly.\n * @param range\n */\n static testInertElementWrapping(range) {\n if (!Utils.isNull(range)) {\n const parent = range.startContainer, index = range.startOffset;\n var node;\n if (parent === range.endContainer && index == (range.endOffset - 1) && (node = parent.childNodes.item(index)) instanceof HTMLElement && node.contentEditable === 'false') {\n return { result: true, element: node };\n }\n }\n return { result: false };\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, Defaults, P, PropertyConverters, Utils, Watch } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils } from './utils';\n//namespace Pacem.Components.Scaffolding {\nfunction getAlignIcon(align) {\n return 'format_align_' + align;\n}\nlet PacemContenteditableAlignCommandElement = class PacemContenteditableAlignCommandElement extends PacemContenteditableButtonCommandElement {\n isRelevant(range) {\n const els = ContenteditableUtils.findSurroundingSiblingBlockElements(range);\n if (Utils.isNullOrEmpty(els)) {\n return false;\n }\n const el = els[0], textAlign = getComputedStyle(el).textAlign;\n return textAlign == this.align;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'align') {\n if (Utils.isNullOrEmpty(this.icon) || this.icon === getAlignIcon(old)) {\n this.icon = getAlignIcon(val);\n }\n if (Utils.isNullOrEmpty(this.altText) || this.altText === old) {\n this.altText = val;\n }\n }\n }\n exec() {\n const elements = ContenteditableUtils.findSurroundingSiblingBlockElements(this.range);\n let targetAlign;\n for (let el of elements) {\n if (ContenteditableUtils.isBlockElement(el) && el instanceof HTMLElement) {\n // normalize alignment: pick one element (the 1st one) to rule them all\n if (Utils.isNull(targetAlign)) {\n targetAlign = Utils.hasClass(el, 'text-' + this.align) ? '' : this.align;\n }\n el.style.textAlign = '';\n Utils.removeClass(el, 'text-left text-right text-center text-justify');\n if (!Utils.isEmpty(targetAlign)) {\n Utils.addClass(el, 'text-' + targetAlign);\n }\n }\n }\n return Promise.resolve();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableAlignCommandElement.prototype, \"align\", void 0);\nPacemContenteditableAlignCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-aligncommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableAlignCommandElement);\nexport { PacemContenteditableAlignCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters, ViewChild, PCSS } from '@pacem/pacem-core';\nimport { ContenteditableUtils, ContenteditableDOMObserver } from './utils';\nimport { PacemContenteditableCommandElement } from '../contenteditable';\n//namespace Pacem.Components.Scaffolding {\nfunction insertPlaceholder(range, placeholder) {\n const ins = document.createElement('ins');\n ins.textContent = placeholder;\n ins.setAttribute('contenteditable', 'false');\n // not necessary:\n // ins.style.display = 'inline-block';\n ins.tabIndex = 0;\n range.deleteContents();\n range.insertNode(ins);\n return ins;\n}\nfunction isPlaceholder(node) {\n return node instanceof HTMLModElement && node.tagName === 'INS';\n}\nfunction isRelevant(range) {\n const wraps = ContenteditableUtils.testInertElementWrapping(range);\n if (wraps.result && isPlaceholder(wraps.element)) {\n const element = wraps.element, placeholder = element.textContent;\n return { result: true, element, placeholder };\n }\n return { result: false };\n}\nlet PacemContenteditablePlaceholderElement = class PacemContenteditablePlaceholderElement extends PacemContenteditableCommandElement {\n constructor() {\n super(...arguments);\n this._focusHandler = (evt) => {\n const ins = evt.target;\n this.range = ContenteditableUtils.select(ins);\n };\n // #endregion\n }\n #relevancy;\n #normalizedDatasource;\n cleanUp(content) {\n content.querySelectorAll('ins[contenteditable=false]').forEach(ins => {\n Utils.removeClass(ins, 'placeholder-selected');\n });\n }\n exec(ph) {\n const el = insertPlaceholder(this.range, ph);\n const range = ContenteditableUtils.select(el);\n range.collapse(false);\n return Promise.resolve(el);\n }\n isRelevant(_) {\n return this.#relevancy?.result ?? false;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._fillDropdown();\n this._initContainer();\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._fillDropdown();\n break;\n case 'contentElement':\n if (old) {\n this._disposeContainer(old);\n }\n if (val) {\n this._initContainer(val);\n }\n break;\n case 'range':\n this._changeRelevancy();\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeContainer();\n super.disconnectedCallback();\n }\n _changeRelevancy(range = this.range) {\n const old = this.#relevancy;\n if (!Utils.isNull(old?.element)) {\n Utils.removeClass(old.element, 'placeholder-selected');\n }\n const val = this.#relevancy = isRelevant(range);\n if (!Utils.isNull(val?.element)) {\n Utils.addClass(val.element, 'placeholder-selected');\n }\n if (val.result) {\n this._dropdown.value = val.placeholder;\n }\n else {\n this._dropdown.popout();\n this._dropdown.value = void 0;\n }\n }\n _fillDropdown(datasource = this.datasource || []) {\n const ds = this.#normalizedDatasource = datasource.map(i => { return typeof i === 'string' ? { placeholder: i, definition: i } : i; });\n const dd = this._dropdown;\n dd.textProperty =\n dd.valueProperty = 'placeholder';\n dd.datasource = ds;\n }\n // #region mutation observer\n #observer;\n _initContainer(contentElement = this.contentElement) {\n this.#observer = new ContenteditableDOMObserver(contentElement, (item, removed) => {\n if (isPlaceholder(item)) {\n if (removed) {\n this._downgradePlaceholderElement(item);\n }\n else {\n this._enhancePlaceholderElement(item);\n }\n }\n }, 'ins[contenteditable=false]');\n }\n _disposeContainer(_ = this.contentElement) {\n const observer = this.#observer;\n if (!Utils.isNull(observer)) {\n observer.dispose();\n }\n }\n _enhancePlaceholderElement(ins) {\n ins.addEventListener('focus', this._focusHandler, false);\n }\n _downgradePlaceholderElement(ins) {\n ins.removeEventListener('focus', this._focusHandler, false);\n }\n};\n__decorate([\n ViewChild('template')\n], PacemContenteditablePlaceholderElement.prototype, \"_itemtemplate\", void 0);\n__decorate([\n ViewChild(P + '-suggest')\n], PacemContenteditablePlaceholderElement.prototype, \"_dropdown\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemContenteditablePlaceholderElement.prototype, \"datasource\", void 0);\nPacemContenteditablePlaceholderElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-placeholder', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<template>\r\n<${P}-span text=\"{{ ^item.viewValue }}\" class=\"text-tech\"></${P}-span>\r\n<${P}-markdown hide=\"{{ $pacem.isNullOrEmpty(^item.data.definition) || ^item.viewValue === ^item.data.definition }}\" class=\"${PCSS}-margin margin-0 text-small\" value=\"{{ ^item.data.definition }}\"></${P}-markdown>\r\n</template>\r\n<${P}-suggest placeholder=\"Placeholder\" class=\"pacem-button button\" disabled=\"{{ $pacem.isNull(:host.range) }}\"\r\n on-change=\":host.execCommand($this.value)\"\r\n css-class=\"{{ {'text-primary': :host.isRelevant(:host.range)} }}\" \r\n compare-by=\"placeholder\" text-property=\"placeholder\" itemtemplate=\"{{ ::_itemtemplate }}\" prevent-focus=\"true\" allow-typing=\"false\"></${P}-suggest>`\n })\n], PacemContenteditablePlaceholderElement);\nexport { PacemContenteditablePlaceholderElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { ContenteditableUtils } from './utils';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\n//namespace Pacem.Components.Scaffolding {\nlet PacemContenteditableWrapCommandElement = class PacemContenteditableWrapCommandElement extends PacemContenteditableButtonCommandElement {\n isRelevant(range) {\n return !Utils.isNull(ContenteditableUtils.findSurroundingNode(range, this.tagname));\n }\n exec() {\n return new Promise((resolve, _) => {\n const tagName = this.tagname;\n if (!Utils.isNullOrEmpty(tagName)) {\n const range = this.range;\n const alreadyEl = ContenteditableUtils.findSurroundingNode(range, tagName)\n || ContenteditableUtils.findSurroundingNode(range.startContainer, tagName)\n || ContenteditableUtils.findSurroundingNode(range.endContainer, tagName);\n if (Utils.isNull(alreadyEl)) {\n // WRAP\n const elementsToWrap = ContenteditableUtils.findSurroundingSiblingBlockElements(range);\n if (!Utils.isNullOrEmpty(elementsToWrap)) {\n const newChild = document.createElement(tagName);\n if (elementsToWrap.length === 1) {\n // replace\n const repl = elementsToWrap[0];\n range.setStart(repl, 0);\n range.setEnd(repl, repl.childNodes.length);\n const frag = range.extractContents();\n newChild.append(frag);\n ContenteditableUtils.copyAttributes(newChild, repl);\n repl.parentElement.insertBefore(newChild, repl);\n repl.remove();\n }\n else {\n // wrap\n range.setStartBefore(elementsToWrap[0]);\n range.setEndAfter(elementsToWrap[elementsToWrap.length - 1]);\n const frag = range.extractContents();\n newChild.append(frag);\n range.insertNode(newChild);\n }\n const r = ContenteditableUtils.select(newChild, true);\n r.collapse();\n }\n }\n else {\n // UNWRAP\n range.setStart(alreadyEl, 0);\n range.setEnd(alreadyEl, alreadyEl.childNodes.length);\n // replace or unwrap\n let replace = false;\n const childNodes = alreadyEl.childNodes;\n for (let j = 0; j < childNodes.length; j++) {\n const child = childNodes.item(j);\n if (!ContenteditableUtils.isBlockElement(child)) {\n replace = true;\n break;\n }\n }\n if (replace) {\n const p = document.createElement('p');\n ContenteditableUtils.copyAttributes(p, alreadyEl);\n p.append(range.extractContents());\n alreadyEl.parentNode.replaceChild(p, alreadyEl);\n const r = ContenteditableUtils.select(p, true);\n r.collapse();\n }\n else {\n // unwrap\n alreadyEl.parentNode.replaceChild(range.extractContents(), alreadyEl);\n const r = ContenteditableUtils.select(range.endContainer, true);\n r.collapse();\n }\n }\n }\n resolve();\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableWrapCommandElement.prototype, \"tagname\", void 0);\nPacemContenteditableWrapCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-wrapcommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableWrapCommandElement);\nexport { PacemContenteditableWrapCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, CustomElement, CustomElementUtils, CustomEventUtils, Defaults, P, PCSS, PropertyConverters, stopPropagationHandler, Utils, ViewChild, Watch } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst JsonOrStringConverter = {\n convert: (attr, el) => {\n return /\\{.+\\}/.test(attr) ? PropertyConverters.Json.convert(attr) : PropertyConverters.String.convert(attr);\n },\n convertBack: (prop, el) => {\n if (typeof prop === 'string') {\n return prop;\n }\n return PropertyConverters.Json.convertBack(prop, el);\n }\n};\n// #region MONTH-PICKER (util component)\nfunction buildMonthGrid() {\n let header = '';\n for (let month = 0; month < 12; month++) {\n header += `<div class=\"calendar-month month-${month + 1}\"><${P}-span class=\"month-button text-ellipsed\" on-click=\":host._setMonth(${month})\" css-class=\"{{ { 'selected-month': :host._isSelectedMonth(${month}, :host.month, :host.viewYear), 'this-month': :host._isThisMonth(${month}, :host.viewYear) } }}\" text=\"{{ :host._getMonthLabel(${month}) }}\"></${P}-span></div>`;\n }\n return header;\n}\nlet PacemCalendarMonthPickerElement = class PacemCalendarMonthPickerElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'viewYear':\n this.dispatchEvent(new CustomEvent('viewyearchange', { detail: new Date(val, 0, 1), bubbles: false, cancelable: false }));\n Utils.removeClass(this, \"viewyear-next viewyear-previous\");\n requestAnimationFrame(() => {\n Utils.addClass(this, old > val ? \"viewyear-previous\" : \"viewyear-next\");\n });\n break;\n }\n }\n _getMonthLabel(m) {\n const year = new Date().getFullYear();\n const date = new Date(year, m, 1);\n return date.toLocaleString(Utils.lang(this), { month: 'short' });\n }\n _isThisMonth(m, v = this.viewYear) {\n return this._isSelectedMonth(m, new Date(), v);\n }\n _isSelectedMonth(m, d = this.month, v = this.viewYear) {\n const actual = Utils.parseDate(d);\n if (!Utils.Dates.isDate(actual)) {\n return false;\n }\n const viewYear = v ?? new Date().getFullYear();\n return actual.getMonth() === m && actual.getFullYear() === viewYear;\n }\n _setMonth(m) {\n const year = this.viewYear;\n const date = new Date(year, m, 1);\n this.month = date;\n this.dispatchEvent(new CustomEvent('monthselect', { detail: date, bubbles: false, cancelable: false }));\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarMonthPickerElement.prototype, \"month\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarMonthPickerElement.prototype, \"viewYear\", void 0);\nPacemCalendarMonthPickerElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-month-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-month-picker\">${buildMonthGrid()}</div>`\n })\n], PacemCalendarMonthPickerElement);\nexport { PacemCalendarMonthPickerElement };\nexport class CalendarDateUnselectEvent extends ComponentsUI.UI.DateSelectEvent {\n constructor() {\n super(void 0);\n }\n}\n// #endregion\n// #region YEAR-PICKER (util component)\nconst YEARS_IN_RANGE = 12;\nfunction buildYearGrid() {\n let header = '';\n for (let year = 0; year < YEARS_IN_RANGE; year++) {\n header += `<div class=\"calendar-year year-${year + 1}\"><${P}-span class=\"year-button text-ellipsed\" on-click=\":host._setYear(${year})\" css-class=\"{{ { 'selected-year': :host._isSelectedYear(${year}, :host.year, :host.viewYear), 'this-year': :host._isThisYear(${year}, :host.viewYear) } }}\" text=\"{{ :host._getYearLabel(${year}, :host.viewYear) }}\"></${P}-span></div>`;\n }\n return header;\n}\nfunction rangeFirstYear(y) {\n const mod = y % 10;\n return y - mod;\n}\nlet PacemCalendarYearPickerElement = class PacemCalendarYearPickerElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'viewYear':\n this.dispatchEvent(new CustomEvent('viewyearchange', { detail: new Date(val, 0, 1), bubbles: false, cancelable: false }));\n Utils.removeClass(this, \"viewyear-next viewyear-previous\");\n requestAnimationFrame(() => {\n Utils.addClass(this, old > val ? \"viewyear-previous\" : \"viewyear-next\");\n });\n break;\n }\n }\n _getYearLabel(y, year = this.viewYear) {\n const first = rangeFirstYear(year);\n return '' + (first + y);\n }\n _isThisYear(y, v = this.viewYear) {\n return this._isSelectedYear(y, new Date(), v);\n }\n _isSelectedYear(y, d = this.year, v = this.viewYear) {\n const actual = Utils.parseDate(d);\n if (!Utils.Dates.isDate(actual)) {\n return false;\n }\n const start = rangeFirstYear(v), computed = start + y;\n ;\n return actual.getFullYear() === computed;\n }\n _setYear(y) {\n const v = this.viewYear, first = rangeFirstYear(v);\n const date = new Date(first + y, 0, 1);\n this.year = date;\n this.dispatchEvent(new CustomEvent('yearselect', { detail: date, bubbles: false, cancelable: false }));\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarYearPickerElement.prototype, \"year\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarYearPickerElement.prototype, \"viewYear\", void 0);\nPacemCalendarYearPickerElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-year-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-year-picker\">${buildYearGrid()}</div>`\n })\n], PacemCalendarYearPickerElement);\nexport { PacemCalendarYearPickerElement };\n// #endregion\nfunction buildCalendarHeader() {\n let header = '';\n for (let day = 0; day < 7; day++) {\n header += `<${P}-span class=\"calendar-heading day-${day + 1} text-ellipsed\" text=\"{{ :host._getHeaderLabel(:host._week[${day}]) }}\"></${P}-span>`;\n }\n return `<${P}-panel hide=\"{{ :host.viewmode !== 'calendar' }}\" class=\"calendar-header\">${header}</${P}-panel>`;\n}\nlet PacemCalendarPickerElement = class PacemCalendarPickerElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this.viewmode = 'calendar';\n this.#locked = false;\n this._swipeHandler = (e) => {\n const dir = e.detail.direction;\n switch (dir) {\n case 'left':\n this._next(e);\n break;\n case 'right':\n this._prev(e);\n break;\n }\n };\n this._clearBtnHandler = (evt) => {\n evt.preventDefault();\n this._viewDate = new Date();\n this.changeHandler(new CalendarDateUnselectEvent());\n };\n this._viewDateChangeHandler = (e) => {\n this._onViewDateChange(e);\n };\n this._popCalendarHandler = (e) => {\n if (this.#locked) {\n return;\n }\n this.viewmode = 'calendar';\n const dateValue = Utils.parseDate(this.value);\n this._calendar.viewDate =\n this._monthPicker.month =\n this._yearPicker.year =\n Utils.Dates.isDate(dateValue) ? dateValue : this._calendar.viewDate;\n const offset = Utils.offset(this._input);\n const dropdown = this._dropdown;\n dropdown.style.top = (offset.top + offset.height) + 'px';\n dropdown.style.left = offset.left + 'px';\n dropdown.hidden = false;\n requestAnimationFrame(() => {\n Utils.addClass(dropdown, 'dropdown-in');\n });\n };\n this._hideCalendarHandler = (e) => {\n const path = e.composedPath() || [];\n if (path.indexOf(this._input) >= 0 || path.indexOf(this._dropdown) >= 0) {\n return;\n }\n this._hideCalendar();\n };\n }\n #locked;\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'viewmode':\n case '_viewDate':\n this._onViewDateChange(this._viewDate);\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const dropdown = this._dropdown = this._proxy.dom[0];\n const calendar = this._calendar = dropdown.querySelector(P + '-calendar');\n const monthPicker = this._monthPicker = dropdown.querySelector(P + '-calendar-month-picker');\n const yearPicker = this._yearPicker = dropdown.querySelector(P + '-calendar-year-picker');\n this._monthLabel = dropdown.querySelector('.calendar-month');\n this._yearLabel = dropdown.querySelector('.calendar-year');\n this._rangeLabel = dropdown.querySelector('.calendar-year-range');\n const now = this._calendar.now = new Date();\n const dateValue = Utils.Dates.parse(this.value);\n const hasValue = Utils.Dates.isDate(dateValue);\n const date = hasValue ? dateValue : now;\n calendar.dayLabelFormatter = (d) => {\n return Utils.parseDate(d).toLocaleString(Utils.lang(this), { day: 'numeric' });\n };\n monthPicker.addEventListener('viewyearchange', this._viewDateChangeHandler, false);\n yearPicker.addEventListener('viewyearchange', this._viewDateChangeHandler, false);\n calendar.addEventListener('viewdatechange', this._viewDateChangeHandler, false);\n calendar.viewDate = date;\n calendar.date = dateValue;\n const input = this._input;\n input.addEventListener('focus', this._popCalendarHandler, false);\n input.addEventListener('mousedown', this._popCalendarHandler, false);\n dropdown.addEventListener('mousedown', stopPropagationHandler, false);\n window.document.body.addEventListener('mousedown', this._hideCalendarHandler, true);\n this._clearButton.addEventListener('mousedown', this._clearBtnHandler, false);\n // swiper\n const swiper = new Components.PacemSwipeElement();\n calendar.behaviors.push(swiper);\n monthPicker.behaviors.push(swiper);\n yearPicker.behaviors.push(swiper);\n swiper.addEventListener('swipe', this._swipeHandler, false);\n const body = CustomElementUtils.findAncestorShell(this);\n this._swiper = body.appendChild(swiper);\n }\n disconnectedCallback() {\n const input = this._input;\n if (!Utils.isNull(input)) {\n this._clearButton.removeEventListener('mousedown', this._clearBtnHandler, false);\n input.removeEventListener('focus', this._popCalendarHandler, false);\n input.removeEventListener('mousedown', this._popCalendarHandler, false);\n this._dropdown.removeEventListener('mousedown', stopPropagationHandler, false);\n window.document.body.removeEventListener('mousedown', this._hideCalendarHandler, true);\n this._calendar.removeEventListener('viewdatechange', this._viewDateChangeHandler, false);\n this._monthPicker.removeEventListener('viewyearchange', this._viewDateChangeHandler, false);\n this._yearPicker.removeEventListener('viewyearchange', this._viewDateChangeHandler, false);\n }\n const swiper = this._swiper;\n if (!Utils.isNull(swiper)) {\n const calendar = this._calendar, monthPicker = this._monthPicker, yearPicker = this._yearPicker;\n for (let el of [calendar, monthPicker, yearPicker]) {\n const behaviors = el.behaviors, swipeIndex = behaviors.indexOf(swiper);\n if (swipeIndex >= 0) {\n el.behaviors.splice(swipeIndex, 1);\n }\n }\n swiper.removeEventListener('swipe', this._swipeHandler, false);\n swiper.remove();\n this._swiper = null;\n }\n super.disconnectedCallback();\n }\n _getHeaderLabel(d, mode = this.viewmode) {\n const dte = Utils.parseDate(d);\n if (Utils.Dates.isDate(dte)) {\n return dte.toLocaleString(Utils.lang(this), { weekday: 'narrow' });\n }\n return '...';\n }\n _prev(e) {\n let months = -1;\n switch (this.viewmode) {\n case 'month':\n months = -12;\n break;\n case 'year':\n months = -120;\n break;\n }\n this._jumpMonths(months);\n }\n _next(e) {\n let months = 1;\n switch (this.viewmode) {\n case 'month':\n months = 12;\n break;\n case 'year':\n months = 120;\n break;\n }\n this._jumpMonths(months);\n }\n _jumpMonths(m) {\n const vd = Utils.parseDate(this._viewDate);\n this._viewDate = Utils.Dates.addMonths(vd, m);\n }\n _setMonth(e) {\n this._viewDate = e.detail;\n this.viewmode = 'calendar';\n }\n _setYear(e) {\n this._viewDate = e.detail;\n this.viewmode = 'month';\n }\n _onViewDateChange(e) {\n if (Utils.isNullOrEmpty(e)) {\n return;\n }\n const date = Utils.parseDate(this._viewDate);\n if (Utils.Dates.isDate(date) && !Utils.isNull(this._monthLabel)) {\n switch (this.viewmode) {\n case 'month':\n this._yearLabel.text = date.toLocaleString(Utils.lang(this), { year: 'numeric' });\n break;\n case 'year':\n const fy = rangeFirstYear(date.getFullYear());\n this._rangeLabel.text = `${fy} - ${fy + YEARS_IN_RANGE - 1}`;\n break;\n default:\n this._monthLabel.text = date.toLocaleString(Utils.lang(this), { month: 'long', year: 'numeric' });\n break;\n }\n }\n }\n _hideCalendar() {\n // animation just in case\n Utils.removeClass(this._dropdown, 'dropdown-in');\n Utils.addAnimationEndCallback(this._dropdown, e => {\n this._dropdown.hidden = true;\n Utils.removeClass(this._dropdown, 'dropdown-select');\n }, 250);\n }\n get inputFields() {\n return [this._input];\n }\n toggleReadonlyView(readonly) {\n if (this.isReady) {\n this._input.readOnly = true;\n this._input.hidden = readonly;\n this._span.hide = !readonly;\n }\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, ComponentsUI.UI.DateSelectEvent)) {\n Utils.addClass(this._dropdown, 'dropdown-select');\n const unselecting = CustomEventUtils.isInstanceOf(evt, CalendarDateUnselectEvent);\n if (unselecting) {\n this.#locked = true;\n }\n this.focus();\n this.#locked = false;\n this._hideCalendar();\n resolve(this.value = evt.detail);\n }\n else {\n resolve(this.value);\n }\n });\n }\n acceptValue(val) {\n this._input.value = this.viewValue;\n const calendar = this._calendar;\n if (!Utils.isNull(calendar)) {\n const dateVal = Utils.parseDate(val);\n if (Utils.Dates.isDate(dateVal)) {\n calendar.viewDate = calendar.date = dateVal;\n }\n else {\n calendar.date = void 0;\n }\n }\n }\n getViewValue(value) {\n const v = Utils.Dates.parse(value);\n if (Utils.Dates.isDate(v)) {\n return Utils.core.date(v, this.format || 'short', Utils.lang(this));\n }\n return '';\n }\n compareValuePropertyValues(old, val) {\n const dold = Utils.parseDate(old), dval = Utils.parseDate(val);\n if (Utils.isNullOrEmpty(dold) && Utils.isNullOrEmpty(dval)) {\n return true;\n }\n if (Utils.isNullOrEmpty(dold) || Utils.isNullOrEmpty(dval)) {\n return false;\n }\n return dold.valueOf() == dval.valueOf();\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Datetime.convert(attr);\n }\n};\n__decorate([\n ViewChild(\"input[type=text]\")\n], PacemCalendarPickerElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemCalendarPickerElement.prototype, \"_span\", void 0);\n__decorate([\n ViewChild(`${P}-button[clear]`)\n], PacemCalendarPickerElement.prototype, \"_clearButton\", void 0);\n__decorate([\n ViewChild(P + \"-shell-proxy\")\n], PacemCalendarPickerElement.prototype, \"_proxy\", void 0);\n__decorate([\n Watch({ emit: false, converter: JsonOrStringConverter })\n], PacemCalendarPickerElement.prototype, \"format\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemCalendarPickerElement.prototype, \"disabledRanges\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarPickerElement.prototype, \"weekStart\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarPickerElement.prototype, \"viewmode\", void 0);\n__decorate([\n Watch()\n], PacemCalendarPickerElement.prototype, \"_week\", void 0);\n__decorate([\n Watch()\n], PacemCalendarPickerElement.prototype, \"_viewDate\", void 0);\nPacemCalendarPickerElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-calendar-picker\">\r\n <input type=\"text\" class=\"${PCSS}-input\" /><${P}-span text=\"{{ :host.viewValue }}\" class=\"${PCSS}-readonly\"></${P}-span>\r\n <${P}-button class=\"button-flat ${PCSS}-anim anim-pop anim-sudden anim-quick pos-absolute absolute-right absolute-top display-block ${PCSS}-margin margin-0\"\r\n tab-order=\"-1\"\r\n hide=\"{{ :host.readonly || :host.required || !Pacem.Utils.Dates.isDate(Pacem.Utils.Dates.parse(:host.value)) }}\"\r\n icon-glyph=\"close\"\r\n clear></${P}-button>\r\n</div>\r\n<${P}-shell-proxy>\r\n <div class=\"${PCSS}-calendar-picker-dropdown\" pacem hidden>\r\n <${P}-collapse collapse=\"false\">\r\n <div class=\"dropdown-grid\">\r\n <div class=\"calendar-title\">\r\n <${P}-span class=\"calendar-month calendar-zoom\" on-click=\":host.viewmode = 'month'\" hide=\"{{ :host.viewmode !== 'calendar' }}\"></${P}-span>\r\n <${P}-span class=\"calendar-year calendar-zoom\" on-click=\":host.viewmode = 'year'\" hide=\"{{ :host.viewmode !== 'month' }}\"></${P}-span>\r\n <${P}-span class=\"calendar-year-range\" hide=\"{{ :host.viewmode !== 'year' }}\"></${P}-span>\r\n </div>\r\n <div class=\"calendar-month-nav ${PCSS}-buttonset buttons\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button class=\"button button-size size-auto\" on-click=\":host._prev($event)\" icon-glyph=\"chevron_left\"></${P}-button>\r\n <${P}-button class=\"button button-size size-auto\" on-click=\":host._next($event)\" icon-glyph=\"chevron_right\"></${P}-button>\r\n </div>\r\n </div>\r\n ${buildCalendarHeader()}\r\n <${P}-calendar hide=\"{{ :host.viewmode !== 'calendar' }}\" week=\"{{ :host._week, twoway }}\" view-date=\"{{ :host._viewDate, twoway }}\" week-start=\"{{ :host.weekStart }}\" disabled-ranges=\"{{ :host.disabledRanges }}\" on-dateselect=\"{{ :host.changeHandler($event) }}\"></${P}-calendar>\r\n <${P}-calendar-month-picker hide=\"{{ :host.viewmode !== 'month' }}\" on-monthselect=\":host._setMonth($event)\" month=\"{{ :host.value || Date.now() }}\" view-year=\"{{ :host._viewDate && :host._viewDate.getFullYear() }}\"></${P}-calendar-month-picker>\r\n <${P}-calendar-year-picker hide=\"{{ :host.viewmode !== 'year' }}\" on-yearselect=\":host._setYear($event)\" year=\"{{ :host.value || Date.now() }}\" view-year=\"{{ :host._viewDate && :host._viewDate.getFullYear() }}\"></${P}-calendar-year-picker>\r\n </div>\r\n <${P}-collapse>\r\n </div>\r\n</${P}-shell-proxy>`\n })\n], PacemCalendarPickerElement);\nexport { PacemCalendarPickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PCSS, PropertyConverters, Utils, ViewChild, Watch } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst StringOrBooleanPropertyConverter = {\n convert: (attr) => attr === 'true' ? true : (attr === 'false' ? false : attr),\n convertBack: (prop) => prop.toString()\n};\nlet PacemCheckboxElement = class PacemCheckboxElement extends PacemBaseElement {\n constructor() {\n super('checkbox');\n this.caption = '';\n this._key = '_' + Utils.uniqueCode();\n }\n convertValueAttributeToProperty(attr) {\n StringOrBooleanPropertyConverter.convert(attr) === this.trueValue ? this.trueValue : this.falseValue;\n }\n toggleReadonlyView(readonly) {\n this.span.hidden = !readonly;\n this._checkbox.hidden = this._label.hidden = readonly;\n }\n get inputFields() {\n return [this._checkbox];\n }\n onChange(evt) {\n this.selected = this._checkbox.checked;\n const value = this.value = this.selected ? this.trueValue : this.falseValue;\n return Utils.fromResult(value);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._checkbox.id = this._label.htmlFor = this._key;\n this._synchronizeUi();\n if (this.value /* weak equality to deal with declarative values and conversions */ == this.trueValue)\n this.selected = true;\n else if (this.value /* weak equality to deal with declarative values and conversions */ == this.falseValue)\n this.selected = false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!this.isReady) {\n // the following are only UI-relevant modifications\n return;\n }\n switch (name) {\n case 'caption':\n this._label.hidden = Utils.isNullOrEmpty(val);\n break;\n case 'name':\n this._checkbox.name = val;\n break;\n case 'selected':\n this._synchronizeUi();\n break;\n }\n }\n _synchronizeUi(val = this.selected) {\n if (this._checkbox.checked = val) {\n this.value = this.trueValue;\n Utils.addClass(this, PCSS + '-selected');\n this.aria.attributes.set('checked', 'true');\n }\n else {\n this.value = this.falseValue;\n Utils.removeClass(this, PCSS + '-selected');\n this.aria.attributes.set('checked', 'false');\n }\n }\n acceptValue(val) {\n this.selected = val /* weak equality to deal with declarative values and conversions */ == this.trueValue;\n }\n getViewValue(val) {\n if (!Utils.isNull(val))\n return this.caption;\n return '';\n }\n};\n__decorate([\n ViewChild(\"input[type=checkbox]\")\n], PacemCheckboxElement.prototype, \"_checkbox\", void 0);\n__decorate([\n ViewChild(\"label\")\n], PacemCheckboxElement.prototype, \"_label\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemCheckboxElement.prototype, \"span\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCheckboxElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ emit: false, converter: StringOrBooleanPropertyConverter })\n], PacemCheckboxElement.prototype, \"trueValue\", void 0);\n__decorate([\n Watch({ emit: false, converter: StringOrBooleanPropertyConverter })\n], PacemCheckboxElement.prototype, \"falseValue\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemCheckboxElement.prototype, \"selected\", void 0);\nPacemCheckboxElement = __decorate([\n CustomElement({\n tagName: P + '-checkbox',\n template: `<${P}-span class=\"${PCSS}-readonly ${PCSS}-checkbox\" text=\"{{ :host.caption }}\"></${P}-span>\r\n<input type=\"checkbox\" class=\"${PCSS}-input\" /><label class=\"${PCSS}-label ${PCSS}-checkbox ${PCSS}-viewfinder\" pacem><${P}-span content=\"{{ :host.caption }}\"></${P}-span></label>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemCheckboxElement);\nexport { PacemCheckboxElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PCSS, PropertyChangeEventName, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nlet PacemCheckboxListElement = class PacemCheckboxListElement extends PacemDataSourceElement {\n acceptValue(val) {\n // no need to implement\n }\n constructor() {\n super(true);\n this._selectedUiItems = [];\n this['key'] = '_' + Utils.uniqueCode();\n }\n get inputFields() {\n return [];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'disabled') {\n this._disable.model = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._disable.model = this.disabled;\n }\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._repeater.hidden = readonly;\n }\n _selectionChanged(evt, index, item) {\n if (evt.detail.propertyName === 'selected') {\n let ndx, uiItems = this._selectedUiItems;\n if (evt.detail.currentValue === true) {\n uiItems.push(this.datasource[index]);\n }\n else if ((ndx = uiItems.indexOf(this.datasource[index])) !== -1) {\n uiItems.splice(ndx, 1);\n }\n }\n }\n onChange(evt) {\n const val = this.value = this._selectedUiItems.map(i => this.mapEntityToValue(i));\n return Utils.fromResult(val);\n }\n};\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemCheckboxListElement.prototype, \"_span\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemCheckboxListElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-data')\n], PacemCheckboxListElement.prototype, \"_disable\", void 0);\nPacemCheckboxListElement = __decorate([\n CustomElement({\n tagName: P + '-checkbox-list', template: `<${P}-repeater datasource=\"{{ :host.adaptedDatasource }}\">\r\n <ol class=\"${PCSS}-checkbox-list ${PCSS}-viewfinder\" pacem>\r\n <template>\r\n <li><${P}-checkbox disabled=\"{{ ::_disable.model || ^item.disabled }}\" name=\"{{ :host.key, once }}\" autobind=\"off\" caption=\"{{ ^item.viewValue }}\" true-value=\"{{ ^item.value }}\" selected=\"{{ :host.isDataSourceItemSelected(^item, :host.value) }}\"\r\non-focus=\":host.focusHandler($event)\" on-blur=\":host.focusHandler($event)\"\r\non-${PropertyChangeEventName}=\":host._selectionChanged($event, ^index, ^item)\" on-change=\":host.changeHandler($event)\"></${P}-checkbox></li>\r\n </template>\r\n </ol>\r\n</${P}-repeater><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span><${P}-data></${P}-data><${P}-content></${P}-content>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemCheckboxListElement);\nexport { PacemCheckboxListElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PCSS, PacemEventTarget, PropertyChangeEventName, Components, PropertyConverters, Utils, ViewChild, Watch, UI, avoidHandler } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n/** For internal use ONLY! */\nlet PacemChildFormPropagatorElement = class PacemChildFormPropagatorElement extends PacemEventTarget {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n const prop = this.property, value = this.watch, hasPropDefined = !Utils.isNullOrEmpty(prop), hasModelDefined = !Utils.isNull(this.model);\n if (name === 'watch'\n || name === 'property'\n || (name === 'model' && hasPropDefined && hasModelDefined && Utils.isArray(val) && val.some(i => !(prop in i) || i[prop] !== value))\n || (name === 'model' && hasPropDefined && hasModelDefined && !Utils.isArray(val) && (!(prop in val) || val[prop] !== value))) {\n this._synchronize();\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._synchronize();\n }\n _synchronize() {\n const model = this.model, propagate = this.property, value = this.watch;\n if (Utils.isNullOrEmpty(model) || Utils.isNullOrEmpty(propagate)) {\n return;\n }\n if (Utils.isArray(model)) {\n for (let item of model) {\n item[propagate] = value;\n }\n // trigger change\n this.model = model.slice(0);\n }\n else {\n model[propagate] = value;\n // trigger change\n this.model = Utils.extend({}, model);\n }\n }\n};\n__decorate([\n Watch({ emit: true /* mandatory twoway binding */ })\n], PacemChildFormPropagatorElement.prototype, \"model\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true })\n], PacemChildFormPropagatorElement.prototype, \"property\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemChildFormPropagatorElement.prototype, \"watch\", void 0);\nPacemChildFormPropagatorElement = __decorate([\n CustomElement({ tagName: P + '-childform-propagator' })\n], PacemChildFormPropagatorElement);\nexport { PacemChildFormPropagatorElement };\n/** Represents a sub-form for automatic generation of editing fields for sub-entities. */\nlet PacemChildFormElement = class PacemChildFormElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n /** Internal representation of the entity. */\n this._model = [];\n this._subForms = [];\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n // automatic\n }\n onChange(evt) {\n return new Promise((resolve, _) => {\n var val = this._modelToEntity();\n resolve(this.value = val);\n });\n }\n acceptValue(val) {\n this._entityToModel(val);\n }\n getViewValue(value) {\n return '';\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr, this);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'mode':\n this._entityToModel();\n break;\n }\n }\n _dragStart(evt) {\n var args = evt.detail;\n const size = Utils.offset(args.element), floater = args.floater;\n floater.style.width = size.width + 'px';\n floater.style.height = size.height + 'px';\n }\n _dragEnd(evt) {\n if (this.mode === 'array' /*&& !Utils.isNull(evt.detail.target)*/) {\n this._triggerChange();\n }\n }\n reset() {\n super.reset();\n // once the value/entity with this component is reset\n // it is not necessary to process the subForms\n this._subForms.forEach(f => {\n f.setPristine();\n });\n }\n _itemCreate(evt) {\n const ndx = evt.detail.index, subForms = this._subForms;\n evt.detail.dom[0].childNodes.forEach(e => {\n if (e instanceof Element && e.localName === (P + '-form')) {\n subForms.splice(ndx, subForms.length - ndx, e);\n }\n });\n }\n _itemChange(ndx, evt) {\n if (evt.detail.propertyName === 'entity'\n && Utils.Json.stringify(this._model[ndx]) !== Utils.Json.stringify(evt.detail.currentValue)) {\n this._model.splice(ndx, 1, evt.detail.currentValue);\n this._triggerChange();\n }\n }\n _deleteAt(evt) {\n // prevent the event to bubble (nested scenarios).\n avoidHandler(evt.srcEvent);\n const model = this._model;\n if (this.mode === 'array') {\n model.splice(evt.detail, 1);\n }\n else {\n model.splice(0, model.length);\n }\n this._triggerChange();\n }\n _addItem(evt) {\n const mode = this.mode, model = this._model;\n if (mode === 'array') {\n model.push({});\n }\n else {\n model.splice(0, model.length, {});\n }\n this._triggerChange();\n }\n _triggerChange() {\n this.changeHandler(new Event('change'));\n }\n _entityToModel(entity = this.value) {\n switch (this.mode) {\n case 'array':\n let arr = entity || [];\n if (Utils.isArray(arr)) {\n this._model.cloneFrom(arr);\n }\n break;\n default:\n const model = this._model, length = model.length;\n if (length !== 1 || model[0] !== entity) {\n if (!Utils.isNull(entity)) {\n model.splice(0, length, entity);\n }\n else {\n model.splice(0, length);\n }\n }\n break;\n }\n }\n _modelToEntity(model = this._model) {\n switch (this.mode) {\n case 'array':\n return Utils.clone(model);\n default:\n return model && model.length && model[0] || null;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemChildFormElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemChildFormElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-childform')\n], PacemChildFormElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(P + '-drag-drop')\n], PacemChildFormElement.prototype, \"_dragger\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-childform-item-floater')\n], PacemChildFormElement.prototype, \"_floater\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemChildFormElement.prototype, \"mode\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemChildFormElement.prototype, \"lockItems\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemChildFormElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemChildFormElement.prototype, \"_model\", void 0);\nPacemChildFormElement = __decorate([\n CustomElement({\n tagName: P + '-childform', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater datasource=\"{{ :host._model }}\" on-itemdelete=\":host._deleteAt($event)\" on-${Components.RepeaterItemCreateEventName}=\":host._itemCreate($event)\">\r\n <div class=\"${PCSS}-childform\">\r\n <template>\r\n <${P}-panel class=\"${PCSS}-childform-item\" behaviors=\"{{ [::_dragger] }}\">\r\n <${P}-panel class=\"childform-item-handle ${PCSS}-margin margin-right-1\" hide=\"{{ :host.lockItems || :host.readonly || :host.mode !== 'array' || !(:host._model && :host._model.length > 1) }}\"><i class=\"${PCSS}-icon drag-handle\">drag_handle</i></${P}-panel>\r\n <${P}-panel class=\"childform-item-index text-small\"><${P}-span hide=\"{{ !:host.readonly || :host.mode !== 'array' }}\" class=\"${PCSS}-margin margin-right-1\" text=\"{{ ^index+1 }}\"></${P}-span></${P}-panel>\r\n <${P}-form entity=\"{{ ^item }}\" fetch-headers=\"{{ :host.fetchHeaders }}\" fetch-credentials=\"{{ :host.fetchCredentials }}\" on-${PropertyChangeEventName}=\":host._itemChange(^index, $event)\" readonly=\"{{ :host.readonly }}\" metadata=\"{{ :host.metadata }}\" autogenerate=\"true\" logger=\"{{ :host.logger }}\"></${P}-form>\r\n <${P}-button tab-order=\"-1\" class=\"flat circular circle-small clear ${PCSS}-margin margin-left-1\" hide=\"{{ :host.lockItems || :host.readonly }}\" command-name=\"delete\" command-argument=\"{{ ^index }}\"></${P}-button>\r\n </${P}-panel>\r\n </template>\r\n </div>\r\n <${P}-button tab-order=\"-1\" class=\"flat circular circle-small add\" hide=\"{{ :host.lockItems || :host.readonly || !(:host.mode === 'array' || $pacem.isNullOrEmpty(:host._model)) }}\" on-click=\":host._addItem($event)\"></${P}-button>\r\n</${P}-repeater>\r\n<div class=\"${PCSS}-childform-item-floater ${PCSS}-panel panel-border\">\r\n <div class=\"corner top-left\"></div><div class=\"corner top-right\"></div><div class=\"corner bottom-left\"></div><div class=\"corner bottom-right\"></div>\r\n</div>\r\n<${P}-drag-drop floater=\"{{ ::_floater }}\" disabled=\"{{ :host.lockItems }}\"\r\n on-${UI.DragDropEventType.Start}=\":host._dragStart($event)\"\r\n on-${UI.DragDropEventType.End}=\":host._dragEnd($event)\" \r\n drop-behavior=\"${UI.DropBehavior.InsertChild}\" mode=\"${UI.DragDataMode.Alias}\" handle-selector=\".drag-handle\" drop-targets=\"{{ [::_container] }}\"></${P}-drag-drop>`\n })\n], PacemChildFormElement);\nexport { PacemChildFormElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Logging, PropertyConverters, Debounce, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst emptyVal = '';\nconst JsonOrStringConverter = {\n convert: (attr, el) => {\n return /\\{.+\\}/.test(attr) ? PropertyConverters.Json.convert(attr) : PropertyConverters.String.convert(attr);\n },\n convertBack: (prop, el) => {\n if (typeof prop === 'string') {\n return prop;\n }\n return PropertyConverters.Json.convertBack(prop, el);\n }\n};\n//class DatetimeChangeEvent extends CustomTypedEvent<{ date: Date }> {\n// constructor(date: Date) {\n// super('datetimechange', { date: date });\n// }\n//}\nlet PacemDatetimePickerElement = class PacemDatetimePickerElement extends PacemBaseElement {\n constructor() {\n super();\n this.precision = 'day';\n this._months = [];\n this._dates = [];\n this._a24 = [];\n this._a60 = [];\n this._years = [];\n this.hours = '00';\n this.minutes = '00';\n this.seconds = '00';\n }\n get inputFields() {\n return [this._yearel, this._monthel, this._dateel, this._hourel, this._minel, this._secel];\n }\n toggleReadonlyView(readonly) {\n this._allFields.hidden = readonly;\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Datetime.convert(attr);\n }\n connectedCallback() {\n super.connectedCallback();\n const today = new Date();\n let year = this.year = today.getFullYear();\n this.min = new Date(year - 100, 0, 1);\n this.max = new Date(year + 10, 11, 31);\n this.month = today.getMonth();\n //\n let months = [], hours = [], minutes = [], leftPad = Utils.leftPad;\n // months\n for (let i = 0; i < 12; i++) {\n let date = new Date(year, i, 1), label = date.toLocaleString(Utils.lang(this), { month: \"short\" });\n ;\n months.push({ value: i, date: date, label: label });\n }\n this._months = months;\n // hours\n for (let i = 0; i < 24; i++) {\n hours.push(leftPad(i, 2, '0'));\n }\n this._a24 = hours;\n // minutes/secs\n for (let i = 0; i < 60; i++) {\n minutes.push(leftPad(i, 2, '0'));\n }\n this._a60 = minutes;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'dateValue':\n this.log(Logging.LogLevel.Log, `dateValue changed from ${old} to ${val}`);\n this._disassembleDate(val);\n // this.changeHandler(new DatetimeChangeEvent(val));\n break;\n case 'min':\n case 'max':\n if (!Utils.isNullOrEmpty(this.min)\n && !Utils.isNullOrEmpty(this.max)) {\n this._setupYears();\n }\n break;\n case 'year':\n case 'month':\n this._buildupDates();\n break;\n case 'date':\n case 'hours':\n case 'minutes':\n case 'seconds':\n this._buildup();\n break;\n }\n }\n acceptValue(val) {\n this.dateValue = Utils.parseDate(val);\n }\n _disassembleDate(v) {\n if (!v) {\n this.date = undefined;\n return;\n }\n if (typeof v === 'string')\n v = Utils.parseDate(v);\n const leftPad = (i) => Utils.leftPad(i, 2, '0');\n this.year = v.getFullYear();\n this.month = v.getMonth();\n this.date = v.getDate();\n this.hours = leftPad(v.getHours());\n this.minutes = leftPad(v.getMinutes());\n this.seconds = leftPad(v.getSeconds());\n }\n _setupYears() {\n let years = [];\n const min = Utils.parseDate(this.min), max = Utils.parseDate(this.max);\n for (let i = min.getFullYear(); i <= max.getFullYear(); i++) {\n years.push(i);\n }\n this._years = years;\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n //if (CustomEventUtils.isInstanceOf(evt, DatetimeChangeEvent)) {\n // const date = (<DatetimeChangeEvent>evt).detail.date;\n // resolve(this.value = date); // keep same type (Date or string equivalent)\n //} else {\n // resolve(this.value = Utils.parseDate(this.value));\n //}\n resolve(this.value = this._computeValue());\n });\n }\n _buildupDates(evt) {\n if (evt)\n evt.stopPropagation();\n const v = this, options = { weekday: 'short', day: 'numeric' }, isDate = (k) => {\n try {\n let monthvalue = +v.month, parsed = new Date(+v.year, +v.month, k);\n return parsed.getMonth() == monthvalue;\n }\n catch (e) {\n return false;\n }\n };\n var dates = [];\n if (!Utils.isNullOrEmpty(v.year) && !Utils.isNullOrEmpty(v.month)) {\n let day = 1;\n do {\n let date = new Date(+v.year, +v.month, day), label = date.toLocaleString(Utils.lang(this), options);\n dates.push({ value: day, date: date, label: label, disabled: date < this.min || date > this.max });\n } while (isDate(++day));\n }\n this._dates = dates;\n if (!isDate(+this.date))\n this.date = '';\n else\n this._buildup();\n }\n _computeValue() {\n const v = this;\n if (Utils.isNullOrEmpty(v.year)\n || Utils.isNullOrEmpty(v.month)\n || Utils.isNullOrEmpty(v.date)) {\n return null;\n }\n else {\n //\n try {\n let value = new Date(+v.year, +v.month, +v.date);\n value.setHours(+v.hours);\n value.setMinutes(+v.minutes);\n value.setSeconds(+v.seconds);\n value.setMilliseconds(0);\n if (!Number.isNaN(value.valueOf())) {\n return value;\n }\n else\n return null;\n }\n catch (e) {\n return null;\n }\n }\n }\n _buildup(evt) {\n if (evt)\n evt.stopPropagation();\n //\n this.dateValue = this._computeValue();\n }\n getViewValue(val) {\n const v = /*this.dateValue ||*/ val;\n if (v) {\n return Utils.core.date(v, this.format || (this.precision != 'day' ? 'full' : 'short'), Utils.lang(this));\n }\n return '';\n }\n};\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-year > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_yearel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-month > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_monthel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-date > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_dateel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-hours > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_hourel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-minutes > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_minel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-seconds > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_secel\", void 0);\n__decorate([\n ViewChild(`div.${PCSS}-datetime-picker-fields`)\n], PacemDatetimePickerElement.prototype, \"_allFields\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemDatetimePickerElement.prototype, \"dateValue\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemDatetimePickerElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemDatetimePickerElement.prototype, \"max\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDatetimePickerElement.prototype, \"precision\", void 0);\n__decorate([\n Watch({ emit: false, converter: JsonOrStringConverter })\n], PacemDatetimePickerElement.prototype, \"format\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"_dates\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"_years\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"year\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"month\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"date\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"hours\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"minutes\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"seconds\", void 0);\n__decorate([\n Debounce(10)\n], PacemDatetimePickerElement.prototype, \"_buildup\", null);\nPacemDatetimePickerElement = __decorate([\n CustomElement({\n tagName: P + '-datetime-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-datetime-picker\">\r\n <div class=\"${PCSS}-datetime-picker-fields ${PCSS}-viewfinder\">\r\n\r\n <div class=\"${PCSS}-datetime-picker-year\">\r\n <${P}-select value=\"{{ :host.year, twoway }}\" placeholder=\"...\" datasource=\"{{ :host._years }}\">\r\n </${P}-select></div>\r\n\r\n <div class=\"${PCSS}-datetime-picker-month\">\r\n <${P}-select value=\"{{ :host.month, twoway }}\" placeholder=\"...\" value-property=\"value\" text-property=\"label\" datasource=\"{{ :host._months }}\">\r\n </${P}-select></div>\r\n\r\n <div class=\"${PCSS}-datetime-picker-date\">\r\n <${P}-select value=\"{{ :host.date, twoway }}\" placeholder=\"...\" value-property=\"value\" text-property=\"label\" datasource=\"{{ :host._dates }}\">\r\n </${P}-select></div>\r\n\r\n <${P}-panel class=\"${PCSS}-datetime-picker-hours\" hide=\"{{ :host.precision === 'day' }}\">\r\n <${P}-select value=\"{{ :host.hours, twoway }}\" datasource=\"{{ :host._a24 }}\">\r\n </${P}-select></${P}-panel>\r\n\r\n <${P}-panel class=\"${PCSS}-datetime-picker-minutes\" hide=\"{{ :host.precision === 'day' }}\">\r\n <${P}-select value=\"{{ :host.minutes, twoway }}\" datasource=\"{{ :host._a60 }}\">\r\n </${P}-select></${P}-panel>\r\n\r\n <${P}-panel class=\"${PCSS}-datetime-picker-seconds\" hide=\"{{ :host.precision !== 'second' }}\">\r\n <${P}-select value=\"{{ :host.seconds, twoway }}\" datasource=\"{{ :host._a60 }}\">\r\n </${P}-select></${P}-panel>\r\n\r\n </div>\r\n <${P}-panel class=\"${PCSS}-datetime-picker-preview\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.dateValue) || :host.precision === 'day' || :host.readonly }}\">\r\n <dl>\r\n <dt>local:</dt><dd><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></dd>\r\n <dt>iso:</dt><dd><${P}-text text=\"{{ (:host.dateValue && :host.dateValue.toISOString()) || '' }}\"></${P}-text></dd>\r\n </dl>\r\n </${P}-panel>\r\n <${P}-span class=\"${PCSS}-readonly\" css-class=\"{{ { 'date': :host.precision === 'day', 'datetime': :host.precision !== 'day' } }}\" content=\"{{ :host.viewValue }}\" hide=\"{{ !:host.readonly }}\"></${P}-span>\r\n</div>`\n })\n], PacemDatetimePickerElement);\nexport { PacemDatetimePickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, P, PCSS, CustomElement, ViewChild, Utils, PropertyConverters, Defaults, DeferPromise } from '@pacem/pacem-core';\nimport { PacemFormRelevantElement } from './form';\n// TODO: add warning state\nexport class PacemBaseValidatorElement extends PacemFormRelevantElement {\n constructor() {\n super();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n Utils.addClass(this, PCSS + '-validator');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n let form = this.form;\n switch (name) {\n case 'watch':\n old && form && form.unregisterValidator(val, this);\n form && form.registerValidator(val, this);\n break;\n case 'invalid':\n break;\n case 'form':\n let n = this.watch;\n if (!Utils.isNullOrEmpty(n)) {\n if (old != null)\n old.unregisterValidator(n, this);\n if (val != null)\n val.registerValidator(n, this);\n }\n break;\n case 'disabled':\n this.triggerFormFieldValidation();\n break;\n }\n }\n #easer;\n triggerFormFieldValidation() {\n const form = this.form, watch = this.watch;\n if (!Utils.isNull(form) && !Utils.isNullOrEmpty(watch)) {\n cancelAnimationFrame(this.#easer);\n this.#easer = requestAnimationFrame(() => {\n form.validate(watch);\n });\n }\n }\n validate(val) {\n if (this.disabled) {\n return Utils.fromResult(true);\n }\n return this.evaluate(val);\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseValidatorElement.prototype, \"invalid\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBaseValidatorElement.prototype, \"errorMessage\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemBaseValidatorElement.prototype, \"watch\", void 0);\nexport const BASIC_VALIDATOR_TEMPLATE = `<${P}-span part=\"error-message\" hide=\"{{ !:host.invalid }}\" text=\"{{ :host.errorMessage }}\"></${P}-span>`;\n// #region TEXTUAL\nfunction isValueEmpty(val) {\n return Utils.isNullOrEmpty(val);\n}\nlet PacemRequiredValidatorElement = class PacemRequiredValidatorElement extends PacemBaseValidatorElement {\n evaluate(val) {\n let retval = !isValueEmpty(val);\n return Utils.fromResult(retval);\n }\n};\nPacemRequiredValidatorElement = __decorate([\n CustomElement({ tagName: P + '-required-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemRequiredValidatorElement);\nexport { PacemRequiredValidatorElement };\nlet PacemRegexValidatorElement = class PacemRegexValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && name === 'pattern') {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true, pattern = this.pattern;\n if (!isValueEmpty(val)) {\n retval = new RegExp(pattern).test(val);\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemRegexValidatorElement.prototype, \"pattern\", void 0);\nPacemRegexValidatorElement = __decorate([\n CustomElement({ tagName: P + '-regex-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemRegexValidatorElement);\nexport { PacemRegexValidatorElement };\nlet PacemLengthValidatorElement = class PacemLengthValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'min' || name === 'max')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true;\n if (!isValueEmpty(val)) {\n if (this.min >= 0)\n retval = retval && (val || '').toString().length >= this.min;\n if (this.max >= 0)\n retval = retval && (val || '').toString().length <= this.max;\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemLengthValidatorElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemLengthValidatorElement.prototype, \"max\", void 0);\nPacemLengthValidatorElement = __decorate([\n CustomElement({ tagName: P + '-length-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemLengthValidatorElement);\nexport { PacemLengthValidatorElement };\n// #endregion\n// #region NUMERIC/ORDINAL\nlet PacemRangeValidatorElement = class PacemRangeValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'min' || name === 'max')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true;\n if (!isValueEmpty(val)) {\n let date = val;\n if (val instanceof Date || (typeof val !== 'number' && (date = Utils.parseDate(val)) instanceof Date && isFinite(date.valueOf()))) {\n if (this.min != null)\n retval = retval && date.valueOf() >= Utils.parseDate(this.min).valueOf();\n if (this.max != null)\n retval = retval && date.valueOf() <= Utils.parseDate(this.max).valueOf();\n }\n else {\n if (this.min != null)\n retval = retval && val >= this.min;\n if (this.max != null)\n retval = retval && val <= this.max;\n }\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRangeValidatorElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRangeValidatorElement.prototype, \"max\", void 0);\nPacemRangeValidatorElement = __decorate([\n CustomElement({ tagName: P + '-range-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemRangeValidatorElement);\nexport { PacemRangeValidatorElement };\n// #endregion\n// #region COMPLEX\nlet PacemCompareValidatorElement = class PacemCompareValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'operator' || name === 'to')) {\n this.triggerFormFieldValidation();\n }\n }\n _prepareValuesForComparison(val, other) {\n // gotta manage the case when a stringified datetime is compared with an actual date object.\n if (Utils.Dates.isDate(val) || Utils.Dates.isDate(other)) {\n return [Utils.parseDate(val), Utils.parseDate(other)];\n }\n return [val, other];\n }\n evaluate(val) {\n let retval = true, other = this.to;\n if (!isValueEmpty(val) && !isValueEmpty(other)) {\n const arranged = this._prepareValuesForComparison(val, other);\n val = arranged[0], other = arranged[1];\n switch (this.operator) {\n case 'lessOrEqual':\n retval = val <= other;\n break;\n case 'less':\n retval = val < other;\n break;\n case 'greaterOrEqual':\n retval = val >= other;\n break;\n case 'greater':\n retval = val > other;\n break;\n case 'notEqual':\n retval = val !== other;\n break;\n default:\n retval = val === other;\n break;\n }\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemCompareValidatorElement.prototype, \"operator\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true })\n], PacemCompareValidatorElement.prototype, \"to\", void 0);\nPacemCompareValidatorElement = __decorate([\n CustomElement({ tagName: P + '-compare-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemCompareValidatorElement);\nexport { PacemCompareValidatorElement };\n// #endregion\nlet PacemBinaryValidatorElement = class PacemBinaryValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'pattern' || name === 'maxSize')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true, pattern = this.pattern, maxSize = this.maxSize;\n if (!isValueEmpty(val)) {\n // file name\n if (!Utils.isNullOrEmpty(pattern)) {\n let filename = typeof val === 'string' ? val : val.name;\n retval = new RegExp(pattern, 'i').test(filename);\n }\n // max size\n if (!Utils.isNull(maxSize) && typeof val === 'object' && val.size > 0) {\n retval = retval && val.size <= maxSize;\n }\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinaryValidatorElement.prototype, \"pattern\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinaryValidatorElement.prototype, \"maxSize\", void 0);\nPacemBinaryValidatorElement = __decorate([\n CustomElement({ tagName: P + '-binary-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemBinaryValidatorElement);\nexport { PacemBinaryValidatorElement };\nlet PacemAsyncValidatorElement = class PacemAsyncValidatorElement extends PacemBaseValidatorElement {\n constructor() {\n super(...arguments);\n this._deferredToken = null;\n }\n _evaluateResult() {\n const fetcher = this._fetcher;\n const result = fetcher.result;\n switch (result) {\n case 'true':\n return true;\n break;\n case 'false':\n return false;\n break;\n default: // expect json\n try {\n let json = JSON.parse(result);\n let res = Utils.getApiResult(json);\n return (res || false);\n }\n catch (_) {\n return false;\n }\n }\n }\n _fetch(val) {\n const deferred = this._deferredToken;\n const fetcher = this._fetcher;\n var params = this.parameters || {};\n params[this.watch] = val;\n const request = {\n parameters: params,\n url: this.url,\n as: 'text',\n method: this.method\n };\n const serializedRequest = Utils.jsonSortStringify(request);\n // check changed:\n // assume idempotent with last request.\n const lastRequest = this.#lastRequest;\n let returnLastResult = false;\n if (!Utils.isNullOrEmpty(lastRequest)) {\n returnLastResult = (serializedRequest === lastRequest);\n }\n if (returnLastResult) {\n const result = this._evaluateResult();\n deferred.resolve(result);\n }\n else {\n Utils.extend(fetcher, request);\n // debounce\n clearTimeout(this._debouncer);\n this._debouncer = setTimeout(() => {\n fetcher.fetch().then(_ => {\n const result = this._evaluateResult();\n deferred.resolve(result);\n // memoize last successful request\n this.#lastRequest = serializedRequest;\n }, _ => {\n deferred.resolve(false);\n });\n }, 1000);\n }\n return deferred.promise;\n }\n #lastRequest;\n evaluate(val) {\n if (Utils.isNullOrEmpty(val)) {\n return Utils.fromResult(true);\n }\n else {\n this._deferredToken = this._deferredToken = DeferPromise.defer();\n return this._fetch(val).then(r => {\n this._deferredToken = null;\n return r;\n }, _ => {\n this._deferredToken = null;\n return false;\n });\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'parameters':\n case 'url':\n case 'method':\n case 'fetchCredentials':\n case 'fetchHeaders':\n this.triggerFormFieldValidation();\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAsyncValidatorElement.prototype, \"parameters\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAsyncValidatorElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAsyncValidatorElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAsyncValidatorElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAsyncValidatorElement.prototype, \"method\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemAsyncValidatorElement.prototype, \"_fetcher\", void 0);\nPacemAsyncValidatorElement = __decorate([\n CustomElement({\n tagName: P + '-async-validator',\n template: BASIC_VALIDATOR_TEMPLATE + `<${P}-fetch autofetch=\"false\" throttle=\"true\" credentials=\"{{ :host.fetchCredentials }}\" headers=\"{{ :host.fetchHeaders }}\"></${P}-fetch>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemAsyncValidatorElement);\nexport { PacemAsyncValidatorElement };\nlet PacemCustomValidatorElement = class PacemCustomValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'isValid')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true;\n if (!isValueEmpty(val)) {\n retval = !!this.isValid;\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemCustomValidatorElement.prototype, \"isValid\", void 0);\nPacemCustomValidatorElement = __decorate([\n CustomElement({ tagName: P + '-custom-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemCustomValidatorElement);\nexport { PacemCustomValidatorElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Logging, PropertyConverters, Net, Utils, P, PCSS, CustomElement, Watch, PropertyChangeEvent, PropertyChangeEventName, ViewChild, CustomElementUtils, JsonFunctionConversion } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemFormRelevantElement } from './form';\nimport { ContenteditableUtils } from './contenteditable/utils';\nimport { PacemBaseValidatorElement, PacemLengthValidatorElement, PacemAsyncValidatorElement, PacemBinaryValidatorElement, PacemCompareValidatorElement, PacemCustomValidatorElement, PacemRangeValidatorElement, PacemRegexValidatorElement, PacemRequiredValidatorElement } from './validators';\n//namespace Components.Scaffolding {\nfunction getFormId(key) {\n return 'form' + key;\n}\nfunction patternToString(pattern) {\n return new RegExp(pattern /*.split('\\\\').join('\\\\\\\\')*/).source;\n}\nfunction isKnownValidator(v) {\n return 'errorMessage' in v;\n}\nfunction isValidatorFactory(v) {\n return 'attributes' in v && typeof v.attributes === 'function';\n}\nlet PacemFormFieldElement = class PacemFormFieldElement extends PacemFormRelevantElement {\n constructor(_md = new ComponentsUI.UI.MarkdownService()) {\n super();\n this._md = _md;\n this._entityPropertyChangeHandler = (e) => {\n // nudge entity propertychange notification\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'entity', currentValue: this.entity }));\n };\n this._labelClickHandler = (_) => {\n document.getElementById(this._label.htmlFor).focus();\n };\n this._key = '_' + Utils.uniqueCode();\n }\n get key() {\n return this._key;\n }\n get fetcher() {\n return this._fetcher;\n }\n get field() {\n return this._field;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._buildUpForm();\n this._buildUpFetcher();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'readonly':\n this._ensureBalloon();\n break;\n case 'metadata':\n this._ensureBalloon();\n this._buildUpCss();\n this._buildUpLabel();\n this._buildUpField();\n break;\n case 'entity':\n // In the case that the entity is a HTMLElement,\n // its changes might not propagate correctly.\n // This is a nudgy solution. Explore how to improve\n // `CustomElementUtils.set` as an alternative...\n if (old instanceof HTMLElement) {\n old.removeEventListener(PropertyChangeEventName, this._entityPropertyChangeHandler, false);\n }\n if (val instanceof HTMLElement) {\n val.addEventListener(PropertyChangeEventName, this._entityPropertyChangeHandler, false);\n }\n break;\n }\n }\n disconnectedCallback() {\n if (this.entity instanceof HTMLElement) {\n this.entity.removeEventListener(PropertyChangeEventName, this._entityPropertyChangeHandler, false);\n }\n if (!Utils.isNull(this._label)) {\n this._label.removeEventListener('click', this._labelClickHandler, false);\n }\n if (!Utils.isNull(this._balloon)) {\n this._balloon.remove();\n }\n super.disconnectedCallback();\n }\n _normalizeTooltip() {\n const metadata = this.metadata && this.metadata.extra && this.metadata.extra.tooltip || false;\n if (typeof metadata === 'object') {\n return metadata;\n }\n return { type: metadata };\n }\n _ensureBalloon() {\n var innerText, tooltip;\n const noBalloon = this.readonly\n || ((tooltip = this._normalizeTooltip()).type === false)\n || Utils.isNullOrEmpty(innerText = this.metadata && this.metadata.display && this.metadata.display.description);\n // balloon\n if (Utils.isNull(this._balloon) && !noBalloon) {\n let balloon = document.createElement(P + '-balloon');\n balloon.options = {\n behavior: ComponentsUI.UI.BalloonBehavior.Tooltip,\n trigger: tooltip.trigger || ComponentsUI.UI.BalloonTrigger.Hover,\n position: tooltip.position || ComponentsUI.UI.BalloonPosition.Top,\n hoverDelay: 200, hoverTimeout: 50,\n align: tooltip.align || ComponentsUI.UI.BalloonAlignment.Auto\n };\n Utils.addClass(balloon, PCSS + '-field-tooltip');\n var shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(this._balloon = balloon);\n }\n const balloon = this._balloon;\n if (!Utils.isNull(balloon)) {\n balloon.target = this._label;\n if (!(balloon.disabled = noBalloon)) {\n const content = innerText || '';\n switch (tooltip.type) {\n case 'md':\n case 'markdown':\n balloon.innerHTML = this._md.toHtml(content);\n break;\n case 'html':\n balloon.innerHTML = content;\n break;\n default:\n balloon.innerText = content;\n break;\n }\n }\n }\n }\n _buildUpCss() {\n const display = this.metadata?.display;\n if (Utils.isNull(display)) {\n return;\n }\n if (typeof display.cssClass === 'function') {\n const { cssClassAttr } = display.cssClass(this, '$this', '$this.entity');\n this.setAttribute('css-class', cssClassAttr);\n }\n else {\n this.cssClass = display.cssClass;\n }\n if (typeof display.css === 'function') {\n const { cssAttr } = display.css(this, '$this', '$this.entity');\n this.setAttribute('css', cssAttr);\n }\n else {\n this.css = display.css;\n }\n }\n _buildUpLabel() {\n // label\n const label = this._label, span = label.firstElementChild;\n const meta = this.metadata;\n label.htmlFor = this._key;\n Utils.addClass(label, PCSS + '-label');\n const vals = this.metadata.validators;\n if (vals && vals.find(v => v.type === 'required')) {\n Utils.addClass(label, PCSS + '-required');\n }\n else {\n Utils.removeClass(label, PCSS + '-required');\n }\n //\n if (!Utils.isNull(this._balloon) && !this._balloon.disabled) {\n Utils.addClass(label, PCSS + '-tooltip');\n }\n else {\n Utils.removeClass(label, PCSS + '-tooltip');\n }\n // exploit a pacem-span so that it cleans the htm content up\n if (typeof meta.display?.name === 'function') {\n const { contentAttr } = meta.display.name(this, ':host', ':host.entity', '::_form');\n span.setAttribute('content', contentAttr);\n }\n else {\n span.removeAttribute('content');\n span.content = (meta.display && meta.display.name) || meta.prop;\n }\n label.setAttribute('id', 'label' + this._key);\n label.addEventListener('click', this._labelClickHandler, false);\n }\n // #region Template-called\n _isValueNullOrEmpty(entity = this.entity, metadata = this.metadata) {\n if (Utils.isNull(metadata)) {\n return true;\n }\n const props = metadata.prop.split('.');\n let obj = entity;\n for (let j = 0; j < props.length; j++) {\n const prop = props[j];\n if (Utils.isNullOrEmpty(obj && obj[prop])) {\n return true;\n }\n // next\n obj = obj[prop];\n }\n return false;\n }\n /**\n * Reflects the value onto the entity attribute, if the 'entity' is an instance of HTMLElement.\n */\n _handleValueChange(evt) {\n if (evt.detail.propertyName === 'value') {\n const value = evt.detail.currentValue, prop = this.metadata.prop;\n if (this.entity instanceof HTMLElement) {\n // handle the entity as an element and modify the attribute\n let attr = CustomElementUtils.camelToKebab(prop);\n if (Utils.isNullOrEmpty(value)) {\n this.entity.removeAttribute(attr);\n }\n else {\n this.entity.setAttribute(attr, value.toString());\n }\n }\n else {\n this.entity[prop] = value;\n }\n }\n }\n /**\n * 'Prettifies' the input value (for some specific cases) to be included in an URL segment or query string.\n * @param v Input value\n */\n _adjustDependencyValue(v) {\n if (Utils.Dates.isDate(v)) {\n return Utils.Dates.parse(v).toISOString();\n }\n return v;\n }\n _broadcastFetchResult(v) {\n const field = this;\n this.dispatchEvent(new CustomEvent(\"fetch\", { detail: v, bubbles: true, cancelable: false }));\n }\n // #endregion\n _buildUpFetcher() {\n // fetcher\n var fetcher = this._fetcher;\n fetcher.setAttribute('id', 'fetch' + this._key);\n fetcher.setAttribute('on-fetchresult', ':host._broadcastFetchResult($event.detail)');\n }\n _buildUpForm() {\n // form\n var form = this._form;\n form.setAttribute('id', getFormId(this._key));\n form.setAttribute('sudden-validation', '{{ ::form.suddenValidation }}');\n }\n _buildUpField() {\n if (this._field)\n this._field.remove();\n this._fetcher.removeAttribute('parameters');\n this._fetcher.result =\n this._fetcher.url = null;\n for (var j = this._validators.children.length - 1; j >= 0; j--)\n this._validators.children[j].remove();\n var meta = this.metadata;\n // field\n let tagName = /* setting the default/fallback input element */ P + '-input-text';\n let numericTagName = P + (meta.display && meta.display.ui === 'slider' ? '-slider' : '-input-number');\n let attrs = {\n 'id': this._key, 'name': meta.prop,\n // readonly if property `readonly` set to true OR metadata property is not editable OR parent form's `readonly` property is set to true\n 'readonly': \"{{ :host.readonly || :host.metadata.isReadOnly || ::_form.readonly }}\",\n 'value': `{{ :host.entity.${meta.prop}, twoway }}`,\n 'placeholder': `${((meta.display && meta.display.watermark) || \"\")}`\n };\n // autofocus\n if (meta.extra?.autofocus == true) {\n attrs['on-load'] = 'requestAnimationFrame(() => $this.focus())';\n }\n // fetch data\n let fetchData = meta.extra || {};\n let fetchAttrs = {};\n let disabledAttr = \"false\";\n let dependingClause = '';\n let dependingDisabling = '';\n let dependingParameters = '';\n let dependsOn = [];\n // #region dependency from other props\n if (!Utils.isNullOrEmpty(fetchData.dependsOn)) {\n if (typeof fetchData.dependsOn === 'function') {\n const depAttrs = fetchData.dependsOn(this, ':host', ':host.entity', '$this.entity'), hideAttr = depAttrs.hideAttr;\n if (!Utils.isNullOrEmpty(hideAttr)) {\n this.setAttribute('hide', hideAttr);\n }\n if (!Utils.isNullOrEmpty(depAttrs.disabledAttr)) {\n disabledAttr = depAttrs.disabledAttr;\n if (CustomElementUtils.isBindingAttribute(disabledAttr)) {\n dependingDisabling = CustomElementUtils.extractBindingAttributeExpression(disabledAttr);\n }\n }\n if (!Utils.isNullOrEmpty(depAttrs.parameterAttrs)) {\n const pAttrs = depAttrs.parameterAttrs, parameterPairs = [];\n for (let alias in pAttrs) {\n const propName = pAttrs[alias];\n parameterPairs.push(`${alias}: ${propName}`);\n // exploit this sneaky way...\n dependsOn.push({ prop: propName });\n }\n dependingParameters = parameterPairs.join(', ');\n }\n }\n else {\n dependsOn = fetchData.dependsOn;\n // there should be a better way...\n let disablingClauses = { empty: [], notEqual: {} };\n let hidingClauses = { empty: [], notEqual: {} };\n // fetch\n let namesAndPaths = [];\n let paths = [];\n for (var depends of dependsOn) {\n let path = ':host.entity.' + depends.prop, path2 = '$this.entity.' + depends.prop;\n if (!Utils.isNullOrEmpty(depends.value)) {\n let clause = (p) => p + ' !== ' + JSON.stringify(depends.value);\n (disablingClauses.notEqual[path] = disablingClauses.notEqual[path] || []).push(clause(path));\n if (depends.hide) {\n (hidingClauses.notEqual[path2] = hidingClauses.notEqual[path2] || []).push(clause(path2));\n }\n }\n else if (!depends.optional) {\n let clause = (p) => '$pacem.isNullOrEmpty(' + p + ')';\n disablingClauses.empty.push(clause(path));\n if (depends.hide) {\n hidingClauses.empty.push(clause(path2));\n }\n }\n // fetch\n paths.push(path);\n namesAndPaths.push(`${(depends.alias || depends.prop)}: :host._adjustDependencyValue(${path})`);\n if (!depends.optional) {\n dependingClause += `!$pacem.isNullOrEmpty(${path}) && `;\n }\n }\n dependingParameters = namesAndPaths.join(', ');\n let joinClauses = (d) => {\n let ne = 'false', emp = 'false';\n if (!Utils.isNullOrEmpty(d.notEqual)) {\n // when a value is provided then pick the logical operator when provided.\n // consider to switch semantic (i.e. 'or' -> '&&', 'and' -> '||') due to the 'notEqual' operator.\n // 'and' is assumed to be the default\n const neByProp = [];\n for (let dp in d.notEqual) {\n // same property conditions always concatenated with '&&' (logical and)\n neByProp.push('(' + d.notEqual[dp].join(' && ') + ')');\n }\n // different property clauses should be concatenated with '||' (logical or)\n ne = '(' + neByProp.join(' || ') + ')';\n }\n if (!Utils.isNullOrEmpty(d.empty)) {\n // logical operator doe not affect 'empty' (no 'value' explicitated) deps:\n // empty always means 'BAD', then ANY empty entry would automatically trigger a negative outcome ('||').\n emp = '(' + d.empty.join(' || ') + ')';\n }\n return ne + ' || ' + emp;\n };\n dependingDisabling = joinClauses(disablingClauses);\n disabledAttr = `{{ ${dependingDisabling} }}`;\n // never disable the form-field, NEVER!\n // attrs['disabled'] = disabledAttr; // * BUG\n this.setAttribute('hide', `{{ ${joinClauses(hidingClauses)} }}`);\n }\n }\n // #endregion\n const fn = 'fn';\n const fns = this[fn] = this[fn] || {};\n const spinStaticDatasourceAttr = (source = []) => {\n let args = (dependsOn || []).map(p => ':host.entity.' + p.prop).join(', ');\n const fnKey = 'fn' + Utils.uniqueCode();\n switch (typeof source) {\n case 'function':\n fns[fnKey] = source;\n break;\n default:\n if (Utils.isArray(source)) {\n fns[fnKey] = () => source;\n }\n else {\n throw 'Unsupported source format.';\n }\n break;\n }\n return `{{ :host.${fn}.${fnKey}(${args}) }}`;\n };\n const children = new DocumentFragment();\n let uiHint;\n // metadata\n if (typeof meta.type === 'function' /* < factory */) {\n // build-up meta-structure\n var retval = meta.type(this, ':host', ':host.entity');\n // element must be a registered custom-element (hyphen!)\n if (retval.tagName.indexOf('-') === -1) {\n this.log(Logging.LogLevel.Error, `${tagName} is not an allowed form-field`);\n }\n else {\n // set tagName\n tagName = retval.tagName;\n // set/override attributes\n Utils.extend(attrs, retval.attrs || {});\n // prepare recursive seeding function\n function seedChildren(parent, children) {\n if (!Utils.isNullOrEmpty(children)) {\n for (let child of children) {\n // element must be a registered custom-element (hyphen!)\n if (child.tagName.indexOf('-') === -1) {\n this.log(Logging.LogLevel.Error, `${child.tagName} is not an allowed child element for form-field ${tagName}`);\n continue;\n }\n const el = document.createElement(child.tagName);\n if (!Utils.isNullOrEmpty(child.attrs)) {\n for (let attr in child.attrs) {\n const attrVal = child.attrs[attr];\n el.setAttribute(attr, attrVal);\n }\n }\n if (!Utils.isNullOrEmpty(child.children)) {\n // recursion here\n seedChildren(el, child.children);\n }\n parent.appendChild(el);\n }\n }\n }\n // seed\n seedChildren(children, retval.children);\n }\n }\n else\n switch (uiHint = (meta.display && meta.display.ui)) {\n // remove this (use dataType = 'HTML' instead).\n case 'contentEditable':\n console.warn('`contentEditable` ui hint is deprecated. Lean on `dataType` equal to \\'HTML\\' instead.');\n tagName = P + '-contenteditable';\n children.append(ContenteditableUtils.getDefaultDashboard());\n break;\n case 'snapshot':\n tagName = P + '-snapshot';\n if (fetchData.width > 0) {\n attrs['width'] = '' + fetchData.width;\n }\n if (fetchData.height > 0) {\n attrs['height'] = '' + fetchData.height;\n }\n if (fetchData.quality >= 0) {\n attrs['quality'] = '' + fetchData.quality;\n }\n break;\n case 'chars':\n case 'digits':\n case 'otp':\n tagName = P + '-input-chars';\n if (fetchData.charCount > 0) {\n attrs['charCount'] = '' + fetchData.charCount;\n }\n if (!Utils.isNullOrEmpty(fetchData.inputTransform)) {\n attrs['input-transform'] = fetchData.inputTransform;\n }\n break;\n case 'oneToMany':\n case 'dropdown':\n case 'radioList':\n case 'checkboxList':\n case 'manyToMany':\n if (uiHint === 'oneToMany' || uiHint === 'dropdown') {\n // select\n tagName = P + '-select';\n if (fetchData.preventWheel !== false /* must explicit a 'false': default/empty is true for <select> */) {\n attrs['on-wheel'] = '$event.preventDefault()';\n }\n }\n else {\n // checkboxlist\n delete attrs['placeholder'];\n tagName = P + (uiHint === 'radioList' ? '-radio-list' : '-checkbox-list');\n }\n if (!Utils.isNullOrEmpty(fetchData.textProperty)) {\n attrs['text-property'] = fetchData.textProperty;\n }\n if (!Utils.isNullOrEmpty(fetchData.disabledProperty)) {\n attrs['disabled-property'] = fetchData.disabledProperty;\n }\n if (!Utils.isNullOrEmpty(fetchData.valueProperty)) {\n if (!meta.isComplexType)\n attrs['value-property'] = fetchData.valueProperty;\n else\n attrs['compare-by'] = fetchData.valueProperty;\n }\n if (Utils.isNullOrEmpty(fetchData.source)) {\n // datasource has to be fetched\n this._fetcher.id = `fetch${this._key}`;\n this._fetcher.url = fetchData.sourceUrl;\n this._fetcher.method = fetchData.verb;\n //\n fetchAttrs['parameters'] = `{{ { ${dependingParameters} } }}`;\n fetchAttrs['disabled'] = disabledAttr;\n attrs['datasource'] = `{{ ${dependingClause}Utils.getApiResult(#fetch${this._key}.result) || null }}`;\n }\n else {\n // static datasource provided\n attrs['datasource'] = spinStaticDatasourceAttr(fetchData.source);\n }\n break;\n // experimental (do not include in metadata)\n //case 'hierarchy':\n // // select\n // delete attrs['placeholder'];\n // tagName = P + '-hierarchy';\n // if (!Utils.isNullOrEmpty(fetchData.textProperty)) {\n // attrs['text-property'] = fetchData.textProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.disabledProperty)) {\n // attrs['disabled-property'] = fetchData.disabledProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.parentsProperty)) {\n // attrs['parents-property'] = fetchData.parentsProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.valueProperty)) {\n // attrs['value-property'] = fetchData.valueProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.unlinkCaption)) {\n // attrs['unlink-caption'] = fetchData.unlinkCaption;\n // }\n // if (Utils.isNullOrEmpty(fetchData.source)) {\n // // datasource has to be fetched\n // this._fetcher.id = `fetch${this._key}`;\n // this._fetcher.url = fetchData.sourceUrl;\n // this._fetcher.method = fetchData.verb;\n // //\n // fetchAttrs['parameters'] = `{{ { ${dependingParameters} } }}`;\n // fetchAttrs['disabled'] = disabledAttr;\n // attrs['datasource'] = `{{ ${dependingClause}Utils.getApiResult(#fetch${this._key}.result) || null }}`;\n // } else {\n // // static datasource provided\n // attrs['datasource'] = spinStaticDatasourceAttr(fetchData.source);\n // }\n // break;\n case 'suggest':\n case 'tags':\n case 'autocomplete':\n // autocomplete\n const tags = meta.display.ui === 'tags';\n tagName = P + (tags ? '-tags' : '-suggest');\n this._fetcher.id = `fetch${this._key}`;\n if (!Utils.isNullOrEmpty(fetchData.textProperty)) {\n attrs['text-property'] = fetchData.textProperty;\n }\n let itemValue = `#${this._key}.value`;\n if (!Utils.isNullOrEmpty(fetchData.valueProperty)) {\n attrs['compare-by'] = fetchData.valueProperty;\n if (tags) {\n itemValue = `(${itemValue} && ${itemValue}.${fetchData.valueProperty}) || ''`;\n }\n else {\n if (!meta.isComplexType) {\n attrs['value-property'] = fetchData.valueProperty;\n }\n else {\n itemValue += ` && ${itemValue}.${fetchData.valueProperty}`;\n }\n }\n }\n if (!Utils.isNullOrEmpty(fetchData.sourceUrl)) {\n fetchAttrs['url'] = `${fetchData.sourceUrl}`;\n this._fetcher.method = fetchData.verb;\n //\n if (!Utils.isNullOrEmpty(fetchData.dependsOn)) {\n // deps\n fetchAttrs['parameters'] = `{{ { ${dependingParameters}, q: #${this._key}.hint || '', ${(fetchData.valueProperty || 'value')}: ${itemValue} || '' } }}`;\n fetchAttrs['disabled'] = disabledAttr;\n }\n else {\n // no deps\n fetchAttrs['parameters'] = `{{ {q: #${this._key}.hint || '', ${(fetchData.valueProperty || 'value')}: ${itemValue} || '' } }}`;\n }\n attrs['datasource'] = `{{ ${dependingClause}Utils.getApiResult(#fetch${this._key}.result) || null }}`;\n }\n else {\n // static datasource\n attrs['datasource'] = spinStaticDatasourceAttr(fetchData.source);\n }\n if (tags) {\n // tags\n attrs['allow-new'] = (meta.extra.allowNew === true).toString();\n attrs['allow-duplicates'] = (meta.extra.allowDuplicates === true).toString();\n }\n else {\n // suggest\n if (!Utils.isNullOrEmpty(fetchData.disabledProperty)) {\n attrs['disabled-property'] = fetchData.disabledProperty;\n }\n if (!Utils.isNullOrEmpty(fetchData.itemtemplate)) {\n const itmpl = fetchData.itemtemplate;\n if (itmpl instanceof HTMLElement) {\n attrs['itemtemplate'] = '{{ #' + (itmpl.id = itmpl.id || this._key + '_itemtmpl') + ' }}';\n if (!itmpl.isConnected) {\n this.append(itmpl);\n }\n }\n else {\n attrs['itemtemplate'] = itmpl;\n }\n }\n if (!Utils.isNullOrEmpty(fetchData.filterFields)) {\n const ffields = fetchData.filterFields;\n attrs['filter-fields'] = (Utils.isArray(ffields)) ? ffields.join(' ') : ffields;\n }\n if (!Utils.isNullOrEmpty(fetchData.maxSuggestions)) {\n attrs['max-suggestions'] = fetchData.maxSuggestions.toString();\n }\n }\n break;\n case \"calendar\":\n tagName = P + '-calendar-picker';\n const calendarFormat = meta.display?.format ?? meta.extra?.format;\n if (!Utils.isNullOrEmpty(calendarFormat)) {\n attrs['format'] = '{{ ' + JSON.stringify(calendarFormat) + ' }}';\n }\n if (!Utils.isNullOrEmpty(fetchData.disabledRanges)) {\n attrs['disabled-ranges'] = '{{ ' + JSON.stringify(fetchData.disabledRanges) + ' }}';\n }\n break;\n case \"dictionary\":\n tagName = P + '-namevalue-list';\n attrs['dictionary'] = 'true';\n break;\n case 'switcher':\n if ((meta.type || '').toLowerCase() === 'boolean') {\n attrs['class'] = \"checkbox-switch\";\n }\n else {\n break;\n }\n default:\n let dataType = (meta.dataType || meta.type || '').toLowerCase();\n switch (dataType) {\n // should replace this one:\n //case 'imageurl':\n // tagName = P + '-input-image';\n // const f_id = this._fetcher.id = `fetch${this._key}`;\n // attrs['image-set'] = `{{ Utils.getApiResult(#${f_id}.result) }}`;\n // attrs['on-imagefetchrequest'] = `#${f_id}.url = '${meta.extra.fetchUrl}'; #${f_id}.parameters = { q: $event.detail.hint, skip: $event.detail.skip, take: $event.detail.take }`;\n // attrs['max-width'] = '' + meta.extra.width;\n // attrs['max-height'] = '' + meta.extra.height;\n // attrs['max-thumbnail-height'] = '' + meta.extra.thumbHeight;\n // attrs['max-thumbnail-width'] = '' + meta.extra.thumbWidth;\n // attrs['upload-url'] = meta.extra.uploadUrl;\n // attrs['allow-snapshot'] = '' + meta.extra.snapshot;\n // break;\n case 'upload':\n // upload\n tagName = P + '-upload';\n let uploadExtra = meta.extra || {};\n attrs['url'] = uploadExtra.uploadUrl;\n attrs['parallelism'] = '' + uploadExtra.parallelism;\n attrs['chunk-size'] = '' + uploadExtra.chunkSize;\n attrs['max-image-width'] = '' + uploadExtra.maxImageWidth;\n attrs['max-image-height'] = '' + uploadExtra.maxImageHeight;\n attrs['select-mode'] = uploadExtra.mode ?? 'file';\n break;\n case 'html':\n // contenteditable\n tagName = P + '-contenteditable';\n children.append(ContenteditableUtils.getDefaultDashboard());\n break;\n case 'enumeration':\n // radiobutton list\n tagName = P + '-radio-list';\n attrs['class'] = PCSS + '-radio-list';\n attrs['value-property'] = \"value\";\n attrs['text-property'] = \"caption\";\n attrs['datasource'] = '{{ ' + JSON.stringify(meta.extra.enum) + ' }}';\n delete attrs['placeholder'];\n break;\n case 'password':\n tagName = P + '-input-password';\n break;\n case 'emailaddress':\n tagName = P + '-input-email';\n break;\n case \"color\":\n tagName = P + '-input-color';\n break;\n case \"time\":\n case \"date\":\n case \"datetime\":\n tagName = P + '-datetime-picker';\n delete attrs['placeholder'];\n if (dataType === 'datetime') {\n attrs['precision'] = \"minute\";\n }\n const dateFormat = meta.display?.format ?? meta.extra?.format;\n if (!Utils.isNullOrEmpty(dateFormat)) {\n attrs['format'] = '{{ ' + JSON.stringify(dateFormat) + ' }}';\n }\n if (!Utils.isNullOrEmpty(fetchData.disabledRanges)) {\n attrs['disabled-ranges'] = '{{ ' + JSON.stringify(fetchData.disabledRanges) + ' }}';\n }\n break;\n case \"url\":\n tagName = P + '-input-url';\n break;\n case \"phonenumber\":\n tagName = P + '-input-tel';\n break;\n case \"multilinetext\":\n tagName = P + '-textarea';\n break;\n case \"markdown\":\n tagName = P + '-textarea-markdown';\n break;\n case 'latlng':\n tagName = P + '-latlng';\n if (!Utils.isNullOrEmpty(meta.extra) && typeof meta.extra === 'object' && !Utils.isArray(meta.extra)) {\n attrs['options'] = JSON.stringify(meta.extra);\n }\n break;\n case 'percent':\n case 'percentage':\n case 'currency':\n let defaultFormatOptions = dataType === 'currency' ? { style: 'currency', currency: 'EUR' } : { style: 'percent', maximumFractionDigits: 2 };\n let intl = meta.display?.format ?? defaultFormatOptions;\n attrs['format'] = JSON.stringify(intl);\n default:\n switch ((meta.type || '').toLowerCase()) {\n case \"boolean\":\n tagName = P + '-checkbox';\n //attrs['selected'] = `{{ :host.entity.${meta.prop}, twoway }}`;\n attrs['true-value'] = \"{{ true }}\";\n attrs['false-value'] = \"{{ false }}\";\n attrs['caption'] = attrs['placeholder'];\n //delete attrs['value'];\n delete attrs['placeholder'];\n break;\n case \"byte\":\n attrs['min'] = '0';\n attrs['max'] = '255';\n case \"int16\":\n case \"int32\":\n case \"int64\":\n case \"short\":\n case \"integer\":\n case \"int\":\n case \"long\":\n attrs['step'] = '' + (meta.extra?.step ?? '1');\n tagName = numericTagName;\n const intFormat = meta.display?.format;\n if (!Utils.isNullOrEmpty(intFormat)) {\n attrs['format'] = JSON.stringify(intFormat);\n }\n if (fetchData.preventWheel !== false /* must explicit a 'false': default/empty is true for <input[type=number]> */ && tagName === (P + '-input-number')) {\n attrs['on-wheel'] = '$event.preventDefault()';\n }\n break;\n case \"double\":\n case \"decimal\":\n case \"float\":\n case \"single\":\n case \"number\":\n tagName = numericTagName;\n attrs['step'] = '' + (meta.extra?.step ?? 'any');\n const decimalFormat = meta.display?.format;\n if (!Utils.isNullOrEmpty(decimalFormat)) {\n attrs['format'] = JSON.stringify(decimalFormat);\n }\n if (fetchData.preventWheel !== false /* must explicit a 'false': default/empty is true for <input[type=number]> */ && tagName === (P + '-input-number')) {\n attrs['on-wheel'] = '$event.preventDefault()';\n }\n break;\n default:\n if ((meta.type === 'array' || meta.type === 'object') && !Utils.isNullOrEmpty(meta.props)) {\n tagName = P + '-childform';\n delete attrs['placeholder'];\n attrs['metadata'] = Utils.Json.stringify(meta.props, { functions: JsonFunctionConversion.Reference });\n attrs['mode'] = meta.type;\n attrs['lock-items'] = '' + (meta.extra && meta.extra.lockItems || false);\n attrs['logger'] = '{{ :host.logger }}';\n if (!Utils.isNullOrEmpty(dependsOn)) {\n var extraDom = '';\n for (let d of dependsOn) {\n extraDom += `<${P}-childform-propagator model=\"${attrs[\"value\"]}\" watch=\"{{ :host.entity.${d.prop} }}\" property=\"${(d.alias || d.prop)}\"></${P}-childform-propagator>\\n`;\n }\n this._container.innerHTML = extraDom;\n }\n attrs['fetch-credentials'] = '{{ :host.fetchCredentials }}';\n attrs['fetch-headers'] = '{{ :host.fetchHeaders }}';\n }\n break;\n }\n break;\n }\n break;\n }\n // #region commands\n if (!Utils.isNullOrEmpty(meta.commands)) {\n Utils.addClass(this._container, PCSS + '-fieldgroup');\n const prepend = this._container.appendChild(document.createElement('div')), append = this._container.appendChild(document.createElement('div'));\n Utils.addClass(prepend, `fieldgroup-prepend ${PCSS}-buttonset buttons`);\n Utils.addClass(append, `fieldgroup-append ${PCSS}-buttonset buttons`);\n const disable = dependingDisabling || 'false';\n meta.commands.forEach(cmd => {\n const btn = document.createElement(P + '-button');\n btn.setAttribute('icon-glyph', cmd.icon);\n btn.setAttribute('command-name', cmd.name);\n if (cmd.dependsOnValue) {\n btn.setAttribute('disabled', `{{ (${disable}) || !::_form.valid || $pacem.isNullOrEmpty(:host.entity.${meta.prop}) }}`);\n btn.setAttribute('command-argument', `{{ :host.entity.${meta.prop} }}`);\n }\n else {\n btn.setAttribute('disabled', disabledAttr);\n }\n btn.setAttribute('tooltip', cmd.tooltip);\n if (!Utils.isNullOrEmpty(cmd.cssClass)) {\n Utils.addClass(btn, cmd.cssClass.join(' '));\n }\n (cmd.prepend ? prepend : append).appendChild(btn);\n });\n }\n // #endregion\n // #region validators\n if (!Utils.isNullOrEmpty(meta.validators)) {\n meta.validators.forEach((v) => {\n var validatorElement;\n var params = {};\n var attributes = {};\n if (isKnownValidator(v)) {\n params = v['params'] || {};\n attributes['error-message'] = v.errorMessage;\n }\n if (isValidatorFactory(v)) {\n // preserve static attributes, just in case\n Utils.extend(attributes, v.attributes(this, ':host', ':host.entity'));\n }\n switch (v.type) {\n case 'required':\n attrs['required'] = 'true';\n validatorElement = new PacemRequiredValidatorElement();\n break;\n case 'length':\n let lengthValidator = new PacemLengthValidatorElement();\n validatorElement = lengthValidator;\n let max = params && params['max'];\n let min = params && params['min'];\n if (max != null) {\n attrs['maxlength'] = '' + (lengthValidator.max = max);\n if (tagName === P + '-input-chars') {\n attrs['count'] ??= '' + max;\n }\n }\n else if ('max' in attributes) {\n attrs['max'] = attributes['max'];\n }\n if (min != null) {\n attrs['minlength'] = '' + (lengthValidator.min = min);\n }\n else if ('min' in attributes) {\n attrs['minlength'] = attributes['min'];\n }\n break;\n case 'range':\n let rangeValidator = new PacemRangeValidatorElement();\n validatorElement = rangeValidator;\n let maxNum = params && params['max'];\n let minNum = params && params['min'];\n let isDateTime = tagName === P + '-datetime-picker';\n // TODO: handle calendar-picker\n if (maxNum != null) {\n rangeValidator.max = maxNum;\n attrs['max'] = \"{{ \" + (isDateTime ? \"'\" + maxNum + \"'\" : maxNum) + \" }}\";\n }\n else if ('max' in attributes) {\n attrs['max'] = attributes['max'];\n }\n if (minNum != null) {\n rangeValidator.min = minNum;\n attrs['min'] = \"{{ \" + (isDateTime ? \"'\" + minNum + \"'\" : minNum) + \" }}\";\n }\n else if ('min' in attributes) {\n attrs['min'] = attributes['min'];\n }\n break;\n case 'email':\n let emailValidator = new PacemRegexValidatorElement();\n validatorElement = emailValidator;\n attrs['pattern'] = patternToString(emailValidator.pattern = /^[\\w\\-\\.]+@[\\w\\-\\.]+\\.[a-zA-Z0-9]{2,6}$/);\n break;\n case 'regex':\n let regexValidator = new PacemRegexValidatorElement();\n validatorElement = regexValidator;\n let pattern = params['pattern'];\n pattern ||= attributes['pattern'];\n attrs['pattern'] = patternToString(pattern);\n regexValidator.pattern = pattern;\n break;\n case 'binary':\n let binaryValidator = new PacemBinaryValidatorElement();\n validatorElement = binaryValidator;\n let filePattern = params['pattern'];\n if (filePattern != null) {\n attrs['pattern'] = patternToString(filePattern);\n binaryValidator.pattern = filePattern;\n }\n else if ('pattern' in attributes) {\n attrs['pattern'] = attributes['pattern'];\n }\n let maxSize = params && params['maxSize'];\n if (maxSize != null) {\n binaryValidator.maxSize = maxSize;\n attrs['max-size'] = '' + maxSize;\n }\n else if ('max-size' in attributes) {\n attrs['max-size'] = attributes['max-size'];\n }\n break;\n case 'compare':\n let compareValidator = new PacemCompareValidatorElement();\n validatorElement = compareValidator;\n let comparedToCore = '';\n if ('value' in params) {\n comparedToCore = JSON.stringify(params.value);\n }\n else {\n const toProp = 'to' in params ? params.to : params.toProperty;\n comparedToCore = `:host.entity.${toProp}`;\n }\n const compareToAttr = `{{ ${comparedToCore} }}`;\n compareValidator.setAttribute('to', compareToAttr);\n let operator = compareValidator.operator = params['operator'] || attributes['operator'] || 'equal';\n // In case of `date(time)` try to add some interaction with `datetime-picker`'s min/max props.\n if (tagName === P + '-datetime-picker') {\n switch (operator) {\n case 'lessOrEqual':\n case 'less': // approximation: edge value won't be allowed but will result enabled on the `datetime-picker`\n attrs['max'] = compareToAttr;\n break;\n case 'greaterOrEqual':\n case 'greater': // approximation: edge value won't be allowed but will result enabled on the `datetime-picker`\n attrs['min'] = compareToAttr;\n break;\n }\n } /* // TODO: should accumulate disabled ranges (possible multiple validators)\n else if (tagName === P + '-calendar-picker') {\n //\n switch (operator) {\n case 'lessOrEqual':\n case 'less': // approximation: edge value won't be allowed but will result enabled on the `calendar-picker`\n attrs['disabled-ranges'] = `{{ [{ to: ${comparedToCore} }] }}`;\n break;\n case 'greaterOrEqual':\n case 'greater': // approximation: edge value won't be allowed but will result enabled on the `calendar-picker`\n attrs['disabled-ranges'] = `{{ [{ from: ${comparedToCore} }] }}`;\n break;\n }\n }*/\n break;\n case 'async':\n let asyncValidator = new PacemAsyncValidatorElement();\n validatorElement = asyncValidator;\n asyncValidator.url = params['url'];\n let parameters = [], depOn = params['dependsOn'] || dependsOn;\n parameters.push(`${meta.prop}: :host._adjustDependencyValue(:host.entity.${meta.prop})`);\n for (let depend of depOn || []) {\n parameters.push(`${(depend.alias || depend.prop)}: :host._adjustDependencyValue(:host.entity.${depend.prop})`);\n }\n asyncValidator.setAttribute('parameters', `{{ { ${(parameters.join(', '))} } }}`);\n asyncValidator.method = params['verb'] || Net.HttpMethod.Get;\n asyncValidator.setAttribute('fetch-credentials', '{{ :host.fetchCredentials }}');\n asyncValidator.setAttribute('fetch-headers', '{{ :host.fetchHeaders }}');\n break;\n case 'custom':\n validatorElement = new PacemCustomValidatorElement();\n break;\n default:\n // custom (extra-lib) validator\n if (!Utils.isNullOrEmpty(v.type) && /* must be a custom element */ v.type.indexOf('-') > 0) {\n const tagName = v.type;\n const extern = document.createElement(tagName);\n if (extern instanceof PacemBaseValidatorElement) {\n validatorElement = extern;\n }\n }\n break;\n }\n //\n if (Utils.isNull(validatorElement)) {\n throw `Cannot generate a formfield validator based on type: ${v.type}.`;\n }\n else {\n validatorElement.watch = meta.prop;\n validatorElement.setAttribute('hide', '{{ !this.invalid }}');\n validatorElement.setAttribute('disabled', disabledAttr);\n for (let attrName in attributes) {\n validatorElement.setAttribute(attrName, attributes[attrName]);\n }\n this._validators.appendChild(validatorElement);\n }\n });\n }\n // #endregion\n // #region build-up\n let field = document.createElement(tagName);\n for (var name in attrs) {\n let attr;\n if (!Utils.isNullOrEmpty(attr = attrs[name]))\n field.setAttribute(name, attr);\n }\n field.append(children);\n // #endregion\n this._field = field;\n this._container.insertBefore(field, this._container.firstElementChild);\n for (var name in fetchAttrs) {\n let attr;\n if (!Utils.isNullOrEmpty(attr = fetchAttrs[name]))\n this._fetcher.setAttribute(name, attr);\n }\n // fire propertychange event for bindings' sake...\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'field', currentValue: field }));\n }\n};\n__decorate([\n ViewChild('label')\n], PacemFormFieldElement.prototype, \"_label\", void 0);\n__decorate([\n ViewChild(`div.${PCSS}-input-container`)\n], PacemFormFieldElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemFormFieldElement.prototype, \"_fetcher\", void 0);\n__decorate([\n ViewChild(P + '-form')\n], PacemFormFieldElement.prototype, \"_form\", void 0);\n__decorate([\n ViewChild(P + '-panel.' + PCSS + '-validators')\n], PacemFormFieldElement.prototype, \"_validators\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemFormFieldElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemFormFieldElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemFormFieldElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormFieldElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch()\n], PacemFormFieldElement.prototype, \"entity\", void 0);\nPacemFormFieldElement = __decorate([\n CustomElement({\n tagName: P + '-form-field', template: `<${P}-form class=\"${PCSS}-field\" logger=\"{{ :host.logger }}\" \r\ncss-class=\"{{ {'${PCSS}-fetching': ::_fetcher.fetching, '${PCSS}-dirty': this.dirty, '${PCSS}-invalid': !this.valid, '${PCSS}-editable': !:host.readonly, '${PCSS}-readonly': :host.readonly, '${PCSS}-pristine': !this.dirty, '${PCSS}-valid': this.valid, '${PCSS}-has-value': !:host._isValueNullOrEmpty(:host.entity, :host.metadata) } }}\">\r\n <label class=\"${PCSS}-label\"><${P}-span></${P}-span></label>\r\n <div class=\"${PCSS}-input-container\"></div>\r\n <${P}-fetch debounce=\"300\" logger=\"{{ :host.logger }}\" credentials=\"{{ :host.fetchCredentials }}\" headers=\"{{ :host.fetchHeaders }}\" diff-by-values=\"true\"\r\n on-fetchresult=\":host._broadcastFetchResult($event.detail)\"></${P}-fetch>\r\n <${P}-panel class=\"${PCSS}-validators\" hide=\"{{ ::_form.valid || !::_form.dirty || :host.readonly }}\"></${P}-panel>\r\n</${P}-form>`\n })\n], PacemFormFieldElement);\nexport { PacemFormFieldElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, ViewChild, CustomElement, Watch, Utils, PropertyConverters } from '@pacem/pacem-core';\nimport { Components as ComponentsMaps, Maps } from '@pacem/pacem-maps';\nimport { PacemBaseElement } from './types-components';\nimport { FieldChangeEventName } from './types';\nconst MIN_LENGTH = 3;\nlet PacemGeolocateElement = class PacemGeolocateElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this._dragendHandler = (e) => {\n this._reverseGeocoder.position = e.detail.position;\n };\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n this._setupSuggest();\n this._setupMapMarker();\n }\n onChange(evt) {\n return new Promise((resolve, _) => {\n if (evt.type === 'success' && evt.target === this._reverseGeocoder) {\n const position = this.#marker.position;\n const sorted = evt.detail.sort((a, b) => {\n const da = Maps.MapProjection.distanceBetween(a.position, position), db = Maps.MapProjection.distanceBetween(b.position, position);\n return da < db ? 0 : -1;\n });\n const altitude = sorted[0].position.altitude;\n const value = Utils.extend({}, sorted[0], { position: Utils.extend({ altitude }, position) });\n resolve(this.value = value);\n }\n else if (evt.type === FieldChangeEventName && evt.target === this._suggest) {\n resolve(this.value = this._suggest.value);\n }\n else {\n resolve(this.value);\n }\n });\n }\n fetch(search) {\n if (Maps.LatLng.isLatLng(search)) {\n this.#marker.position =\n this._reverseGeocoder.position = search;\n }\n }\n compareValuePropertyValues(old, any) {\n const pos1 = old?.position ?? Maps.LatLng.Empty, pos2 = any?.position ?? Maps.LatLng.Empty;\n return Maps.LatLng.equals(pos1, pos2);\n }\n acceptValue(val) {\n if (!Utils.isNull(val)) {\n this._datasource.model = [val];\n this._setupMapMarker();\n }\n else {\n this._datasource.model = [];\n }\n this._setupSuggest();\n }\n getViewValue(value) {\n return value?.fullAddress || '';\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr, this);\n }\n #marker;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setup();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'adapter':\n this._setupAdapters(val);\n break;\n case 'map':\n if (old) {\n this._detachMarker(old);\n }\n if (val) {\n this._setupMapMarker(val);\n }\n break;\n case 'icon':\n this._setupMapMarker();\n break;\n case 'plaeholder':\n this._setupSuggest();\n break;\n case 'disabled':\n this._setupMapMarker();\n this._setupSuggest();\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeMarker();\n super.disconnectedCallback();\n }\n _setupAdapters(adapter = this.adapter) {\n const gc = this._geocoder, rvgc = this._reverseGeocoder;\n // setup adapters\n if (!Utils.isNull(gc)) {\n gc.adapter = adapter;\n }\n if (!Utils.isNull(rvgc)) {\n rvgc.adapter = adapter;\n }\n }\n _setupSuggest() {\n const suggest = this._suggest;\n if (!Utils.isNull(suggest)) {\n suggest.placeholder = this.placeholder ?? 'search...';\n suggest.readonly = this.readonly;\n suggest.disabled = this.disabled;\n suggest.value = this.value;\n }\n }\n _detachMarker(map = this.map) {\n const marker = this.#marker;\n if (!Utils.isNull(marker) && marker.map === map) {\n marker.remove();\n }\n }\n _createMarker() {\n const marker = new ComponentsMaps.Maps.PacemMapMarkerElement();\n marker.addEventListener('dragend', this._dragendHandler, false);\n return marker;\n }\n _disposeMarker() {\n const marker = this.#marker;\n if (!Utils.isNull(marker)) {\n marker.removeEventListener('dragend', this._dragendHandler, false);\n }\n }\n _setupMapMarker(map = this.map) {\n const marker = this.#marker || (this.#marker = this._createMarker());\n marker.icon = this.icon;\n marker.draggable = !this.readonly && !this.disabled;\n marker.hide = this.disabled;\n const address = this.value;\n if (address && address.position) {\n marker.position = address.position;\n }\n if (marker.map !== map && !Utils.isNull(map)) {\n map.appendChild(marker);\n }\n }\n _setup() {\n this._setupAdapters();\n this._setupSuggest();\n this._setupMapMarker();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemGeolocateElement.prototype, \"adapter\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemGeolocateElement.prototype, \"map\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemGeolocateElement.prototype, \"icon\", void 0);\n__decorate([\n ViewChild(P + '-data[ds]')\n], PacemGeolocateElement.prototype, \"_datasource\", void 0);\n__decorate([\n ViewChild(P + '-suggest')\n], PacemGeolocateElement.prototype, \"_suggest\", void 0);\n__decorate([\n ViewChild(P + '-map-geocode')\n], PacemGeolocateElement.prototype, \"_geocoder\", void 0);\n__decorate([\n ViewChild(P + '-map-geocode[reverse]')\n], PacemGeolocateElement.prototype, \"_reverseGeocoder\", void 0);\nPacemGeolocateElement = __decorate([\n CustomElement({\n tagName: P + '-geolocate', shadow: false, template: `<${P}-map-geocode search=\"{{ ::_suggest.hint }}\"\r\n disabled=\"{{ (::_suggest.hint || '').length < ${MIN_LENGTH} }}\" on-success=\"::_datasource.model = $event.detail\"></${P}-map-geocode>\r\n<${P}-map-geocode reverse on-success=\":host.changeHandler($event)\"></${P}-map-geocode>\r\n\r\n<${P}-data ds></${P}-data>\r\n\r\n<${P}-suggest on-change=\":host.changeHandler($event)\" datasource=\"{{ ::_datasource.model || [] }}\"\r\n compare-by=\"fullAddress\" text-property=\"fullAddress\"></${P}-suggest>`\n })\n], PacemGeolocateElement);\nexport { PacemGeolocateElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, PropertyConverters, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomEventUtils, CustomElementUtils, avoidHandler, UI } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemBaseElement } from './types-components';\n//namespace Components.Scaffolding {\nclass HierarchyChangeEvent extends CustomEvent {\n constructor(v) {\n super('hierarchychange', { detail: v, bubbles: false, cancelable: false });\n }\n}\nconst HIERARCHYITEM_CSSCLASS = 'hierarchy-item';\nconst HIERARCHYITEM_CSSCLASS_FULL = HIERARCHYITEM_CSSCLASS + ' ' + PCSS + '-anim anim-fade-in anim-sudden';\nconst HIERARCHYITEM_CSSCLASS_ATTR = \"{{ { 'item-disabled' : ^item.disabled } }}\";\nconst BINDER_HIERARCHYDATAKEY = 'pacemHierarchy';\nconst HIERARCHYITEM_CONTENT_CSSCLASS = 'item-content';\nconst HIERARCHYITEM_LINK_CSSCLASS = 'item-link';\nconst HIERARCHYITEM_LINK_CSSCLASS_FULL = HIERARCHYITEM_LINK_CSSCLASS + ' icon-rotate rotate-135';\nconst HIERARCHYITEM_LINK_ICON = 'link';\nconst HIERARCHYITEM_MOVE_CSSCLASS = 'item-move';\nconst HIERARCHYITEM_MOVE_ICON = 'drag_indicator';\nconst DEFAULT_PARENTSPROPERTY = 'parents';\nlet PacemHierarchyElement = class PacemHierarchyElement extends PacemBaseElement {\n getViewValue(value) {\n return '';\n }\n convertValueAttributeToProperty(attr) {\n return Utils.Json.parse(attr);\n }\n constructor() {\n super();\n this.#bindings = new Map();\n this.#dropTargets = new Map();\n this.unlinkCaption = 'Delete';\n this._binderClickHandler = (evt) => {\n const origType = evt.originalEvent.type;\n if (origType === 'mousedown' && evt.originalEvent.button === 1) {\n avoidHandler(evt.originalEvent);\n const binder = evt.srcElement;\n this._unlink(binder);\n }\n else if (origType === 'click' || origType === 'contextmenu') {\n avoidHandler(evt.originalEvent);\n this.#unlinkingBinder = evt.srcElement;\n const balloon = this._balloon;\n balloon.target = { x: evt.pageX, y: evt.pageY };\n balloon.popup();\n }\n };\n // #region drag-drop\n this._dragInitHandler = (evt) => {\n let args = evt.detail;\n const dragger = this._dragger;\n dragger.floater = document.createElement('span');\n dragger.dropTargets = Array.from(this.#dropTargets.keys()).filter(i => i !== args.element);\n if (!Utils.isNull(this.#dragBinder)) {\n this.#dragBinder.remove();\n }\n const binder = this.#dragBinder = new ComponentsUI.UI.PacemBinderElement();\n binder.from = args.element;\n this.#shell.appendChild(binder);\n };\n this._dragStartHandler = (evt) => {\n Utils.addClass(evt.detail.element, 'item-drag');\n };\n this._dragHandler = (evt) => {\n this.#dragBinder.to = evt.detail.currentPosition;\n };\n this._dragEndHandler = (evt) => {\n Utils.removeClass(evt.detail.element, 'item-drag');\n this.#dragBinder.remove();\n this.#dragBinder = null;\n };\n this._dropHandler = (evt) => {\n const source = evt.detail.data, target = this.#dropTargets.get(evt.detail.target);\n // set source as a parent of target\n // just in case (double-check)\n if (!this._isInAncestors(source, target) && !this._isInDescendants(source, target)) {\n // set new relation\n this._compileHierarchy({ source, target });\n }\n };\n this._dragOverHandler = (evt) => {\n const source = evt.detail.data, target = this.#dropTargets.get(evt.detail.target);\n if (target.disabled || this._isInAncestors(source, target) || this._isInDescendants(source, target)) {\n evt.preventDefault();\n }\n };\n this._dragOutHandler = (evt) => {\n };\n // #endregion\n // #region balloon\n this._popoutHandler = (evt) => {\n this._balloon.popout();\n };\n this.#key = Utils.uniqueCode();\n }\n #key;\n #bindings;\n #dragBinder;\n #unlinkingBinder;\n #dropTargets;\n #shell;\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n this._dragger.disabled = readonly;\n if (!Utils.isNull(this._adaptedDatasource)) {\n this._databind();\n }\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, HierarchyChangeEvent)) {\n resolve(this.value = evt.detail);\n }\n resolve(this.value);\n });\n }\n acceptValue(val) {\n // nothing peculiar to do...\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.#shell = CustomElementUtils.findAncestorShell(this);\n this._setupItemTemplate();\n this._setupDragger();\n this._setupBalloon();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n case 'textProperty':\n case 'disabledProperty':\n case 'valueProperty':\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n this._buildAdaptedDatasource();\n });\n break;\n case 'itemtemplate':\n if (!first) {\n this._setupItemTemplate();\n }\n break;\n case '_adaptedDatasource':\n case 'value':\n cancelAnimationFrame(this._handle2);\n this._handle2 = requestAnimationFrame(() => {\n this._databind();\n });\n break;\n }\n }\n disconnectedCallback() {\n this._disposeDragger();\n this._disposeBalloon();\n super.disconnectedCallback();\n }\n _buildAdaptedDatasource(ds = this.datasource) {\n this._adaptedDatasource = ds && ds.map(i => this._mapEntityToItem(i));\n }\n _mapEntityToValue(entity) {\n let value = entity, prop;\n if (prop = this.valueProperty) {\n value = entity[prop];\n }\n return value;\n }\n _mapEntityToViewValue(entity) {\n let viewValue = entity.toString(), prop;\n if (prop = this.textProperty) {\n viewValue = entity[prop];\n }\n return viewValue;\n }\n _mapEntityToItem(entity) {\n if (entity == null) {\n throw new Error('Entity cannot be null');\n }\n // databound\n let disabled = false;\n const disabledProp = this.disabledProperty;\n if (!Utils.isNullOrEmpty(disabledProp)) {\n disabled = entity[disabledProp] || false;\n }\n return { value: this._mapEntityToValue(entity), viewValue: this._mapEntityToViewValue(entity), disabled: disabled, data: entity };\n }\n _unlink(arg) {\n var binder;\n if (arg instanceof ComponentsUI.UI.PacemBinderElement) {\n binder = arg;\n }\n else {\n arg.preventDefault();\n arg.stopPropagation();\n binder = this.#unlinkingBinder;\n }\n const { parent, child } = JSON.parse(binder.dataset[BINDER_HIERARCHYDATAKEY]);\n const ds = this._adaptedDatasource, source = ds.find(i => i.value === parent), target = ds.find(i => i.value === child);\n if (!source.disabled && !target.disabled) {\n this._compileHierarchy({ source, target }, true);\n }\n }\n _buildHierarchyItemDomId(itemId) {\n return `hierarchyitem_${this.#key}_${itemId}`;\n }\n _itemCreate(evt) {\n const item = evt.detail.dom.find(i => i instanceof HTMLElement && i.classList.contains(HIERARCHYITEM_CSSCLASS)), index = evt.detail.index, hierarchyItem = evt.detail.item;\n item.id = this._buildHierarchyItemDomId(hierarchyItem.value);\n if (hierarchyItem.disabled) {\n item.setAttribute('behaviors', '{{ [#' + this._dragger2.id + '] }}');\n }\n else {\n item.setAttribute('behaviors', '{{ [#' + this._dragger.id + ', #' + this._dragger2.id + '] }}');\n }\n for (let parent of hierarchyItem.parents || []) {\n const binder = new ComponentsUI.UI.PacemBinderElement();\n binder.to = item;\n binder.toAnchor = ComponentsUI.UI.BinderAnchor.Top;\n binder.toEnd = ComponentsUI.UI.BinderEnd.Arrow;\n binder.setAttribute('from', '{{ #' + this._buildHierarchyItemDomId(parent.value) + ' }}');\n binder.fromAnchor = ComponentsUI.UI.BinderAnchor.Bottom;\n binder.cssClass = ['hierarchy-binder'];\n binder.interactive = !this.readonly && !hierarchyItem.disabled && !parent.disabled;\n binder.addEventListener(ComponentsUI.UI.BinderInteractionEventName, this._binderClickHandler, false);\n binder.dataset[BINDER_HIERARCHYDATAKEY] = JSON.stringify({ parent: parent.value, child: hierarchyItem.value });\n this.#bindings.set(hierarchyItem.value, binder);\n this.#shell.appendChild(binder);\n }\n if (!this.#dropTargets.has(item)) {\n this.#dropTargets.set(item, hierarchyItem);\n }\n }\n _itemRemove(evt) {\n const item = evt.detail.dom.find(i => i instanceof HTMLElement && i.classList.contains(HIERARCHYITEM_CSSCLASS)), hierarchyItem = evt.detail.item, bindings = this.#bindings;\n if (bindings.has(hierarchyItem.value)) {\n const binder = bindings.get(hierarchyItem.value);\n binder.removeEventListener(ComponentsUI.UI.BinderInteractionEventName, this._binderClickHandler, false);\n binder.remove();\n bindings.delete(hierarchyItem.value);\n }\n if (this.#dropTargets.has(item)) {\n this.#dropTargets.delete(item);\n }\n }\n _setupItemTemplate() {\n if (this.itemtemplate instanceof HTMLTemplateElement) {\n const frag = this.itemtemplate.cloneNode(true).content;\n const tmpl = document.createElement('template');\n const wrapper = document.createElement(P + '-panel');\n wrapper.className = HIERARCHYITEM_CSSCLASS_FULL;\n wrapper.setAttribute('css-class', HIERARCHYITEM_CSSCLASS_ATTR);\n const move = new ComponentsUI.UI.PacemIconElement();\n move.setAttribute('icon', HIERARCHYITEM_MOVE_ICON);\n move.className = HIERARCHYITEM_MOVE_CSSCLASS;\n wrapper.appendChild(move);\n const content = document.createElement('div');\n content.className = HIERARCHYITEM_CONTENT_CSSCLASS;\n content.append(frag);\n wrapper.appendChild(content);\n const link = new ComponentsUI.UI.PacemIconElement();\n link.setAttribute('icon', HIERARCHYITEM_LINK_ICON);\n link.className = HIERARCHYITEM_LINK_CSSCLASS_FULL;\n wrapper.appendChild(link);\n tmpl.content.appendChild(wrapper);\n this._template = tmpl;\n }\n else {\n this._template = this._defaultTemplate;\n }\n }\n _compileHierarchy(relation, remove = false) {\n const value = /* clone to detach any referemce with the original value, thus allowing `reset` */ Utils.clone(this.value || []);\n const newParent = relation.source.value, newChild = relation.target.value;\n const parentsProperty = this.parentsProperty || DEFAULT_PARENTSPROPERTY;\n var found = value.find(i => i[this.valueProperty] === newChild);\n if (remove) {\n if (!Utils.isNull(found)) {\n const parents = found[parentsProperty] || [], ndx = parents.indexOf(newParent);\n if (ndx >= 0) {\n parents.splice(ndx, 1);\n }\n }\n }\n else {\n if (Utils.isNull(found)) {\n found = {};\n found[this.valueProperty] = newChild;\n found[parentsProperty] = [];\n value.push(found);\n }\n found[parentsProperty].push(newParent);\n }\n // cleanup\n this._cleanupHierarchy(value);\n //\n this.changeHandler(new HierarchyChangeEvent(value));\n }\n _cleanupHierarchy(value = []) {\n const valueProperty = this.valueProperty, parentsProperty = this.parentsProperty || DEFAULT_PARENTSPROPERTY;\n const isInAncestors = (sourceId, targetId) => {\n const target = value.find(i => i[valueProperty] == targetId);\n if (Utils.isNull(target) || Utils.isNullOrEmpty(target[parentsProperty])) {\n return false;\n }\n const parents = target[parentsProperty];\n if (parents.indexOf(sourceId) >= 0) {\n return true;\n }\n return parents.some(p => isInAncestors(sourceId, p));\n };\n // bottom-up: if a parent is also an ancestor, then remove the link\n for (let v of value) {\n const parents = v[parentsProperty] || [];\n for (let j = parents.length - 1; j >= 0; j--) {\n const parent = parents[j];\n const otherParents = parents.filter(p0 => p0 !== parent);\n for (let otherParent of otherParents) {\n if (isInAncestors(parent, otherParent)) {\n parents.splice(j, 1);\n break;\n }\n }\n }\n }\n }\n _setupDragger() {\n const dragger = this._dragger;\n dragger.id = 'hierarchy_link_' + this.#key;\n dragger.handleSelector = '.' + HIERARCHYITEM_LINK_CSSCLASS;\n dragger.dropBehavior = UI.DropBehavior.None;\n dragger.spillBehavior = UI.DropTargetMissedBehavior.None;\n dragger.mode = UI.DragDataMode.Copy;\n dragger.addEventListener(UI.DragDropEventType.Drop, this._dropHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Start, this._dragStartHandler, false);\n dragger.addEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Over, this._dragOverHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Out, this._dragOutHandler, false);\n const dragger2 = this._dragger2;\n dragger2.id = 'hierarchy_move_' + this.#key;\n dragger2.mode = UI.DragDataMode.Self;\n dragger2.dropBehavior = UI.DropBehavior.None;\n dragger2.spillBehavior = UI.DropTargetMissedBehavior.None;\n dragger2.handleSelector = '.' + HIERARCHYITEM_MOVE_CSSCLASS;\n }\n _disposeDragger() {\n const dragger = this._dragger;\n if (!Utils.isNull(dragger)) {\n dragger.removeEventListener(UI.DragDropEventType.Drop, this._dropHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Start, this._dragStartHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Over, this._dragOverHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Out, this._dragOutHandler, false);\n }\n }\n _setupBalloon() {\n this._balloon = this._shellProxy.dom.find(i => i instanceof ComponentsUI.UI.PacemBalloonElement);\n window.addEventListener('mousedown', this._popoutHandler, false);\n }\n _disposeBalloon() {\n window.removeEventListener('mousedown', this._popoutHandler, false);\n }\n // #endregion\n _isInAncestors(source, target) {\n if (Utils.isNull(target) || Utils.isNullOrEmpty(target.parents)) {\n return false;\n }\n if (target.parents.indexOf(source) >= 0) {\n return true;\n }\n return target.parents.some(p => this._isInAncestors(source, p));\n }\n _isInDescendants(source, target) {\n return this._isInAncestors(target, source);\n }\n _databind() {\n // clear binders\n this._repeater.datasource = [];\n // check value property\n const valueProperty = this.valueProperty;\n if (Utils.isNullOrEmpty(valueProperty)) {\n throw new Error('Missing valueProperty.');\n }\n // merge datasource and value\n const ds = Utils.clone(this._adaptedDatasource || []), mapping = this.value || [], parentsProperty = this.parentsProperty || DEFAULT_PARENTSPROPERTY;\n for (let item of ds) {\n const found = mapping.find(i => i[valueProperty] === item.value);\n if (!Utils.isNull(found)) {\n item.parents = (found[parentsProperty] || []).map(i => ds.find(i0 => i0.value === i)).filter(i => !Utils.isNull(i));\n }\n }\n // layerize and bind to repeater\n this._databindByParents(ds);\n }\n _databindByParents(ds) {\n // naive algo:\n // find topmost then loop-find direct-only children until no more descendant remains.\n const levelMatrix = [];\n function count() {\n return levelMatrix.reduce((previousLength, item) => previousLength + item.length, 0);\n }\n do {\n if (Utils.isNullOrEmpty(levelMatrix)) {\n // topmost\n const topmost = ds.filter((i) => Utils.isNullOrEmpty(i.parents));\n levelMatrix.push(topmost);\n }\n else {\n // other levels\n const upperLevels = Array.prototype.concat.apply([], levelMatrix), upperLevel = levelMatrix[levelMatrix.length - 1];\n const level = ds.filter((i) => {\n if (Utils.isNullOrEmpty(i.parents)) {\n return false;\n }\n return i.parents.every(p => upperLevels.indexOf(p) >= 0) && i.parents.some(p => upperLevel.indexOf(p) >= 0);\n });\n levelMatrix.push(level);\n }\n } while (count() < ds.length);\n // databind\n this._repeater.datasource = levelMatrix;\n }\n};\n__decorate([\n ViewChild('template[default]')\n], PacemHierarchyElement.prototype, \"_defaultTemplate\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemHierarchyElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-drag-drop')\n], PacemHierarchyElement.prototype, \"_dragger\", void 0);\n__decorate([\n ViewChild(P + '-drag-drop[move]')\n], PacemHierarchyElement.prototype, \"_dragger2\", void 0);\n__decorate([\n ViewChild(P + '-shell-proxy')\n], PacemHierarchyElement.prototype, \"_shellProxy\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemHierarchyElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"valueProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"textProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"disabledProperty\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"unlinkCaption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemHierarchyElement.prototype, \"_adaptedDatasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemHierarchyElement.prototype, \"itemtemplate\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemHierarchyElement.prototype, \"_template\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"parentsProperty\", void 0);\nPacemHierarchyElement = __decorate([\n CustomElement({\n tagName: P + '-hierarchy', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater>\r\n <template>\r\n <${P}-repeater on-${Components.RepeaterItemCreateEventName}=\":host._itemCreate($event)\" on-${Components.RepeaterItemRemoveEventName}=\":host._itemRemove($event)\" datasource=\"{{ ^item }}\">\r\n <div class=\"hierarchy-level\">\r\n <${P}-template-proxy target=\"{{ :host._template }}\"></${P}-template-proxy>\r\n </div>\r\n </${P}-repeater>\r\n </template>\r\n </div>\r\n</${P}-repeater><${P}-content></${P}-content>\r\n<${P}-drag-drop></${P}-drag-drop>\r\n<${P}-drag-drop move></${P}-drag-drop>\r\n<template default>\r\n <${P}-panel class=\"${HIERARCHYITEM_CSSCLASS_FULL} item-default\" css-class=\"${HIERARCHYITEM_CSSCLASS_ATTR}\">\r\n <${P}-icon class=\"${HIERARCHYITEM_MOVE_CSSCLASS}\" icon=\"${HIERARCHYITEM_MOVE_ICON}\"></${P}-icon>\r\n <pacem-span class=\"${HIERARCHYITEM_CONTENT_CSSCLASS}\" content=\"{{ ^item.viewValue }}\"></${P}-span>\r\n <${P}-icon class=\"${HIERARCHYITEM_LINK_CSSCLASS_FULL}\" icon=\"${HIERARCHYITEM_LINK_ICON}\"></${P}-icon>\r\n </${P}-panel>\r\n</template>\r\n<${P}-shell-proxy>\r\n <${P}-balloon options=\"{{ { behavior: ComponentsUI.UI.BalloonBehavior.Inert } }}\">\r\n <${P}-button icon-glyph=\"link_off\" class=\"${PCSS}-margin margin-0 button-flat display-flex flex-middle icon-rotate rotate-135\"\r\n on-click=\":host._unlink($event)\"\r\n on-mousedown=\"$event.stopPropagation()\"\r\n on-mouseup=\"::_balloon.popout()\"><${P}-text class=\"${PCSS}-margin margin-left-1\" text=\"{{ :host.unlinkCaption }}\"></${P}-text></${P}-button>\r\n </${P}-balloon>\r\n</${P}-shell-proxy>`\n })\n], PacemHierarchyElement);\nexport { PacemHierarchyElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Utils, Watch, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nexport var ChangePolicy;\n(function (ChangePolicy) {\n ChangePolicy[\"Input\"] = \"input\";\n ChangePolicy[\"Blur\"] = \"blur\";\n})(ChangePolicy || (ChangePolicy = {}));\nconst INPUT_FIELD_ACTIVATED_PROP = 'pacem:scaffolding:input_field';\nexport class PacemBaseInputElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this.debounce = false;\n this.changePolicy = ChangePolicy.Input;\n this._focusHandler = (evt) => {\n if (!this.autoselect) {\n return;\n }\n let field = /* first field (usually the only one) */ this.inputField;\n for (let f of this.inputFields ?? []) {\n if (f === document.activeElement) {\n field = f;\n break;\n }\n }\n field?.select();\n };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'placeholder':\n for (let inputField of this.inputFields ?? []) {\n inputField.setAttribute(name, val);\n }\n break;\n }\n }\n acceptValue(val) {\n if (this.inputField && val !== this.inputField.value) {\n this.inputField.value = Utils.isNullOrEmpty(val) ? '' : val;\n }\n }\n get inputField() {\n return this.inputFields[0];\n }\n onChange(evt) {\n return new Promise((resolve) => {\n if (this.readonly) {\n resolve(this.value);\n }\n else if (evt.type === 'input' && this.changePolicy === ChangePolicy.Blur) {\n resolve(this.value);\n }\n else {\n //\n const fn = () => {\n const val = this.getValue(this.inputField.value);\n if (val !== this.value) {\n this.value = val;\n // /* DO NOT MESS THE change EVENT DISPATCH */ this.dispatchEvent(new Event('change'));\n }\n resolve(val);\n };\n const d = this.debounce;\n if (typeof d === 'number' && d > 0) {\n clearTimeout(this._handle);\n this._handle = setTimeout(fn, d);\n }\n else if (d === true) {\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(fn);\n }\n else\n requestAnimationFrame(fn);\n }\n });\n }\n ;\n registerInputFields(inputFields = this.inputFields) {\n super.registerInputFields(inputFields);\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let field of inputFields ?? []) {\n if (!(field instanceof HTMLInputElement) && !(field instanceof HTMLTextAreaElement)) {\n continue;\n }\n if (CustomElementUtils.getAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP, 'off') === 'on') {\n continue;\n }\n CustomElementUtils.setAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP, 'on');\n if ('size' in field) {\n // HTMLInputElement only\n field.size = 1;\n }\n field.autocomplete = 'off';\n field.addEventListener('input', this.changeHandler, false);\n field.addEventListener('focus', this._focusHandler, false);\n }\n }\n unregisterInputFields(inputFields = this.inputFields) {\n super.unregisterInputFields(inputFields);\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let field of inputFields ?? []) {\n if (CustomElementUtils.getAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP) !== 'on') {\n continue;\n }\n CustomElementUtils.deleteAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP);\n field.removeEventListener('input', this.changeHandler, false);\n field.removeEventListener('focus', this._focusHandler, false);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.registerInputFields();\n }\n disconnectedCallback() {\n this.unregisterInputFields();\n super.disconnectedCallback();\n }\n}\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => {\n switch (attr) {\n case 'true':\n return true;\n case 'false':\n return false;\n default:\n return parseFloat(attr);\n }\n },\n convertBack: (prop) => prop.toString()\n }\n })\n], PacemBaseInputElement.prototype, \"debounce\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBaseInputElement.prototype, \"changePolicy\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemBaseInputElement.prototype, \"autoselect\", void 0);\nexport class PacemOrdinalInputElement extends PacemBaseInputElement {\n convertValueAttributeToProperty(attr) {\n return parseFloat(attr);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'min':\n case 'max':\n case 'step':\n val != null ? this.inputField.setAttribute(name, val) : this.inputField.removeAttribute(name);\n break;\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemOrdinalInputElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemOrdinalInputElement.prototype, \"max\", void 0);\n__decorate([\n Watch({\n converter: {\n convert: (attr) => {\n const num = parseFloat(attr);\n return isNaN(num) ? 'any' : num;\n },\n convertBack: (val) => val.toString()\n }\n })\n], PacemOrdinalInputElement.prototype, \"step\", void 0);\nexport class PacemTextualInputElement extends PacemBaseInputElement {\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'pattern':\n case 'maxlength':\n case 'minlength':\n val != null ? this.inputField.setAttribute(name, val) : this.inputField.removeAttribute(name);\n break;\n }\n }\n getValue(val) {\n return Utils.isNullOrEmpty(val) ? null : val;\n }\n getViewValue(val) {\n return val;\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTextualInputElement.prototype, \"pattern\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTextualInputElement.prototype, \"minlength\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTextualInputElement.prototype, \"maxlength\", void 0);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Arrays } from '@pacem/pacem-foundation';\nimport { Components, PropertyConverters, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\nlet PacemCharsInputElement = class PacemCharsInputElement extends PacemBaseInputElement {\n constructor() {\n super();\n this.charCount = 6;\n this.inputTransform = 'none';\n this._itemCreateHandler = (e) => {\n const { dom, index } = e.detail;\n const inputField = dom.find(i => i instanceof HTMLInputElement);\n this.#inputs[index] = inputField;\n this.registerInputFields(inputField);\n };\n this.#inputs = [];\n }\n redactViewValue(value = this.value) {\n this.viewValue = this.getViewValue(value);\n }\n getValue(_) {\n const val = this.#inputs.reduce((acc, input) => acc + (Utils.isNullOrEmpty(input.value) ? ' ' : input.value), '');\n switch (this.inputTransform) {\n case 'lowercase':\n return val.toLowerCase();\n case 'uppercase':\n return val.toUpperCase();\n default:\n return val;\n }\n }\n getViewValue(value) {\n const size = this.charCount;\n return this.inputTransform == 'password' ? Arrays.range(size).map(i => '*').join('') : value;\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n toggleReadonlyView(readonly = this.readonly) {\n this._span.hidden = !readonly;\n this._chars.hidden = readonly;\n }\n /** Override base behavior. */\n focus() {\n // check if one of the fields has already focus, if so, do not steal it.\n for (let inputField of this.inputFields ?? []) {\n if (inputField === document.activeElement) {\n if (this.autofocus) {\n inputField.select();\n }\n return;\n }\n }\n super.focus();\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 'charCount':\n this._databind();\n this.redactViewValue();\n break;\n case 'inputTransform':\n this.registerInputFields();\n this.value = this.getValue(this.value);\n break;\n }\n }\n /**\n * Override to apply input transform to all input fields.\n * @param fields\n */\n registerInputFields(fields = this.inputFields) {\n super.registerInputFields(fields);\n if (!Utils.isNull(fields) && !Utils.isArray(fields)) {\n fields = [fields];\n }\n const inputs = this.#inputs;\n for (let inputField of fields ?? []) {\n const ndx = inputs.indexOf(inputField);\n Utils.toggleClass(inputField, 'last-char', ndx === (this.charCount - 1));\n Utils.toggleClass(inputField, 'first-char', ndx === 0);\n if (Utils.isNullOrEmpty(inputField.id)) {\n inputField.setAttribute('id', 'code_' + ndx + '_' + Utils.uniqueCode());\n }\n inputField.value = this.value?.charAt(ndx) || '';\n if (this.inputTransform === 'password') {\n inputField.setAttribute('type', 'password');\n }\n else {\n inputField.setAttribute('type', 'text');\n }\n }\n }\n acceptValue(val) {\n // shadow super method\n // update ui\n const inputs = this.#inputs;\n if (typeof val === 'string') {\n let counter = 0;\n const limit = Math.min(val.length, inputs.length);\n for (let j = 0; j < limit; j++) {\n inputs[j].value = val.charAt(j);\n counter++;\n }\n for (let j = counter; j < inputs.length; j++) {\n inputs[j].value = '';\n }\n }\n }\n onChange(evt) {\n return super.onChange(evt).then(v => {\n const inputs = this.#inputs, index = inputs.indexOf(evt.target);\n if (index >= 0 && index < (inputs.length - 1)) {\n const input = inputs[index];\n if (Utils.isNullOrEmpty(input.value?.trim())) {\n input.value = '';\n }\n else {\n const next = index + 1;\n inputs[next].focus();\n }\n }\n return v;\n });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNull(this.autoselect)) {\n // defaults autoselect to true\n this.autoselect = true;\n }\n this._chars.addEventListener(Components.RepeaterItemCreateEventName, this._itemCreateHandler, false);\n this._databind();\n }\n disconnectedCallback() {\n const repeater = this._chars;\n if (!Utils.isNull(repeater)) {\n repeater.removeEventListener(Components.RepeaterItemCreateEventName, this._itemCreateHandler);\n }\n super.disconnectedCallback();\n }\n _databind() {\n const size = this.charCount, inputs = this.#inputs;\n if (inputs.length > size) {\n super.unregisterInputFields(inputs.splice(size));\n }\n this._chars.datasource = Arrays.range(size);\n }\n #inputs;\n get inputFields() {\n return this.#inputs;\n }\n};\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemCharsInputElement.prototype, \"charCount\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemCharsInputElement.prototype, \"inputTransform\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemCharsInputElement.prototype, \"_chars\", void 0);\n__decorate([\n ViewChild('span.' + PCSS + '-readonly')\n], PacemCharsInputElement.prototype, \"_span\", void 0);\nPacemCharsInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-chars',\n template: `<${P}-repeater class=\"display-flex flex-nowrap\">\r\n <template><input type=\"text\" class=\"${PCSS}-input flex-auto\" maxlength=\"1\" /></template>\r\n </${P}-repeater><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemCharsInputElement);\nexport { PacemCharsInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nlet PacemColorInputElement = class PacemColorInputElement extends PacemBaseElement {\n acceptValue(val) {\n const parsed = this._parseValue(val);\n if (parsed != null) {\n this._tint.value = parsed.tint;\n this._alpha.value = parsed.alpha.toString();\n }\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n onChange(evt) {\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/669685/ (bug open since Aug 2014!)\n const alpha = this._alpha.valueAsNumber || parseInt(this._alpha.value);\n const tint = this._tint.value;\n const value = this.value = this._getValue(tint, alpha);\n return Utils.fromResult(value);\n }\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n this._wrapper.hidden = readonly;\n this._span.hidden = !readonly;\n }\n _getValue(tint, alpha) {\n // #rrggbb\n if (isNaN(alpha) || alpha === 100)\n return tint;\n const rgb = Colors.parse(tint);\n rgb.a = alpha * .01;\n return Colors.stringify(rgb);\n }\n _parseValue(val) {\n const rgb = Colors.parse(val);\n if (Utils.isNullOrEmpty(rgb)) {\n return null;\n }\n return { tint: Colors.stringify({ r: rgb.r, g: rgb.g, b: rgb.b }), alpha: rgb.a * 100 };\n }\n getViewValue(value) {\n return value;\n }\n get inputFields() {\n return [this._tint, this._alpha];\n }\n};\n__decorate([\n ViewChild('input[type=color]')\n], PacemColorInputElement.prototype, \"_tint\", void 0);\n__decorate([\n ViewChild('input[type=number]')\n], PacemColorInputElement.prototype, \"_alpha\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-viewfinder`)\n], PacemColorInputElement.prototype, \"_wrapper\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemColorInputElement.prototype, \"_span\", void 0);\nPacemColorInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-color', template: `<div class=\"${PCSS}-viewfinder\">\r\n<${P}-panel class=\"${PCSS}-input-color\" css=\"{{ { \\'background-color\\': :host.viewValue } }}\"><input type=\"color\" class=\"${PCSS}-input\" /></${P}-panel>\r\n<input class=\"${PCSS}-input\" type=\"number\" min=\"0\" max=\"100\" step=\"1\" value=\"100\" />\r\n</div>\r\n<${P}-span class=\"${PCSS}-readonly\" css=\"{{ { \\'background-color\\': :host.viewValue } }}\"></${P}-span>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemColorInputElement);\nexport { PacemColorInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nlet PacemEmailInputElement = class PacemEmailInputElement extends PacemTextualInputElement {\n toggleReadonlyView(readonly) {\n this.input.hidden = readonly;\n this.anchor.hidden = !readonly;\n }\n get inputFields() {\n return [this.input];\n }\n};\n__decorate([\n ViewChild('input[type=email]')\n], PacemEmailInputElement.prototype, \"input\", void 0);\n__decorate([\n ViewChild(P + '-a')\n], PacemEmailInputElement.prototype, \"anchor\", void 0);\nPacemEmailInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-email',\n template: `<input type=\"email\" class=\"${PCSS}-input ${PCSS}-viewfinder\" />${CHAR_COUNTER_CHILD}<${P}-a class=\"${PCSS}-readonly\" disabled=\"{{ $pacem.isNullOrEmpty(:host.value) }}\" href=\"{{ \\'mailto:\\'+ :host.value }}\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-a>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemEmailInputElement);\nexport { PacemEmailInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomTypedEvent, CustomEventUtils, PropertyConverters, Animations, Utils, stopPropagationHandler, avoidHandler } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\nexport const FileUploadEventName = 'fileupload';\nexport const FileChangeEventName = 'filechange';\nclass StoragePickEvent extends CustomTypedEvent {\n constructor(file) {\n super('pick', file);\n }\n}\nexport class FileUploadEvent extends CustomTypedEvent {\n constructor(file) {\n super(FileUploadEventName, file);\n }\n}\nexport class FileChangeEvent extends CustomTypedEvent {\n constructor(file) {\n super(FileChangeEventName, file);\n }\n}\nconst ERROR_BINDING = '!$pacem.isNullOrEmpty(:host.value) && :host.invalidFile && $pacem.isNullOrEmpty(:host.url)';\nasync function computeDirStats(dir, stats = { files: 0, directories: 0, size: 0 }) {\n for await (let [_, entry] of dir.entries()) {\n if (entry.kind === 'file') {\n stats.files++;\n const file = await entry.getFile();\n stats.size += file.size;\n }\n else {\n stats.directories++;\n await computeDirStats(entry, stats);\n }\n }\n return stats;\n}\nasync function computeFileStats(files) {\n const stats = { files: 0, directories: 0, size: 0 };\n for (let f of files) {\n const file = await f.getFile();\n stats.files++;\n stats.size += file.size;\n }\n return stats;\n}\n/**\n * PacemUploader Component\n */\nlet PacemUploadElement = class PacemUploadElement extends PacemBaseElement {\n constructor(_tweener = new Animations.TweenService()) {\n super();\n this._tweener = _tweener;\n this.undoCaption = 'undo';\n this.retryCaption = 'retry';\n this.clearCaption = 'clear';\n this.uploading = false;\n this.size = 0;\n this.percentage = .0;\n this.complete = false;\n this.failed = false;\n this.invalidFile = false;\n this._fields = {\n 'parallelism': 3,\n 'uid': '',\n 'ongoing': 0,\n 'enqueuer': null,\n 'blob': null,\n 'retryFrom': 0,\n 'chunkSize': 1024 * 128,\n 'undone': false\n };\n }\n convertValueAttributeToProperty(attr) {\n return attr; // better assumptions anyone?\n }\n acceptValue(val) {\n this.percentage = 0;\n this.uploading = false;\n this._fileupload.value = '';\n }\n _getMimeIcon(file = this.value, uploading = this.uploading, mode = this.selectMode ?? 'file') {\n if (uploading) {\n return 'sync';\n }\n const hasValue = !Utils.isNullOrEmpty(file);\n switch (mode) {\n case 'directory':\n case 'directory-picker':\n return hasValue ? 'folder' : 'drive_folder_upload';\n case 'multiple':\n case 'multiple-picker':\n return hasValue ? 'files' : 'upload_file';\n }\n if (Utils.isNullOrEmpty(file)) {\n return 'upload_file';\n }\n var filename = file;\n if (typeof file === 'object') {\n filename = file.name;\n }\n const extPattern = /\\.([\\w]+)(\\s|$)/;\n const match = extPattern.exec(filename);\n if (match && match.length) {\n switch (match[1].toLowerCase()) {\n case 'pdf':\n return 'picture_as_pdf';\n //case 'txt':\n //case 'doc':\n //case 'docx':\n // return '<i class=\"pacem-icon\">collection_text</i>';\n case 'jpg':\n case 'jpeg':\n case 'gif':\n case 'png':\n return 'filter';\n }\n }\n return 'filter_none';\n }\n get blob() {\n return this._fields.blob;\n }\n get inputFields() {\n return [this._fileupload];\n }\n getViewValue(val) {\n const value = this._localValue || val;\n if (Utils.isNullOrEmpty(value)) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n let caption = 'name' in value ? value.name : '';\n if (Utils.isArray(value)) {\n caption = value.map(i => i.name).join(', ');\n }\n const stats = this._stats;\n if (Utils.isNullOrEmpty(stats)) {\n return caption;\n }\n const { size, files } = stats;\n return `${caption}\\n(${files} file${files === 1 ? '' : 's'}, ${Utils.core.size(size)})`;\n }\n toggleReadonlyView(readonly) {\n this._setupInputElement(readonly);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setupInputElement();\n this._fileupload.addEventListener('click', stopPropagationHandler, false);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'selectMode':\n this._setupInputElement();\n }\n }\n }\n disconnectedCallback() {\n if (this._fileupload) {\n this._fileupload.removeEventListener('click', stopPropagationHandler, false);\n }\n super.disconnectedCallback();\n }\n _setupInputElement(readonly = this.readonly, mode = this.selectMode ?? 'file') {\n const input = this._fileupload;\n input.removeAttribute('webkitdirectory');\n input.removeAttribute('multiple');\n input.hidden = readonly;\n switch (mode) {\n case 'directory':\n input.setAttribute('webkitdirectory', 'true');\n break;\n case 'multiple':\n input.setAttribute('multiple', 'true');\n break;\n case 'directory-picker':\n case 'file-picker':\n case 'multiple-picker':\n input.hidden = true;\n break;\n }\n }\n /**\n * Triggered from the component's template.\n */\n _dispatchDownload(evt) {\n avoidHandler(evt);\n const value = /* download the file being currently precessed, if available */ this._localValue || this.value, dispatch = (name) => {\n this.dispatchEvent(new CustomEvent('download', { detail: name, bubbles: true, cancelable: false }));\n };\n if (!Utils.isNullOrEmpty(value)) {\n if (typeof value === 'string') {\n // dispatch outside if url is provided\n dispatch(value);\n }\n else {\n if ('content' in value && !Utils.isNullOrEmpty(value.content)) {\n // download right-away the content when provided\n Utils.download(Utils.dataURLToBlob('data:application/download;base64,' + value.content), value.name, value.type);\n }\n else if ('name' in value) {\n if ('kind' in value) {\n if (value.kind === 'file') {\n value.getFile().then(file => {\n Utils.download(file, file.name, file.type);\n });\n }\n else {\n dispatch(value.name);\n }\n }\n else {\n // dispatch outside if content is empty\n dispatch(value.name);\n }\n }\n }\n }\n }\n reset() {\n super.reset();\n this._localValue = null;\n this.invalidFile = false;\n }\n _validateAll() {\n const stats = this._stats;\n const size = this.maxSize;\n if (size > 0 && size < stats.size) {\n this.invalidFile = true;\n return false;\n }\n // all-righty then\n this.invalidFile = false;\n return true;\n }\n _validateSingleFile(file = this._fileupload.files[0], filename) {\n if (file instanceof File) {\n filename = file.name;\n }\n filename = filename.substring(filename.lastIndexOf('\\\\') + 1);\n // max size exceeded\n const size = this.maxSize;\n if (size > 0 && size < file.size) {\n this.invalidFile = true;\n return false;\n }\n // pattern unmatched\n const pattern = this.pattern;\n if (pattern && !(new RegExp(pattern, 'i').test(filename))) {\n this.invalidFile = true;\n return false;\n }\n // all-righty then\n this.invalidFile = false;\n return true;\n }\n upload(file, filename, state) {\n if (this._validateSingleFile(file, filename)) {\n return this._upload(file, filename, state);\n }\n }\n async _upload(file, filename, state) {\n var uploader = this, fields = uploader._fields;\n if (!file)\n return;\n if (!filename && file instanceof File) {\n filename = file.name;\n }\n uploader.failed = false;\n fields.undone = false;\n fields.ongoing = 0;\n const blob = file, size = uploader.size = blob.size;\n filename = filename.substring(filename.lastIndexOf('\\\\') + 1);\n uploader.percentage = .0;\n uploader.complete = false;\n //\n var request = {\n filename, length: size, action: \"start\", state, type: file.type\n };\n //\n uploader.uploading = true;\n try {\n var r = await uploader._fetch(request);\n if (r.ok) {\n var json = await r.json();\n fields.retryFrom = 0;\n fields.blob = blob;\n fields.uid = json.uid;\n uploader._manage();\n }\n else {\n uploader.uploading = false;\n }\n return r;\n }\n catch (e) {\n uploader.uploading = false;\n }\n finally {\n }\n }\n async _blobToBase64(blob) {\n const result = await Utils.blobToDataURL(blob);\n return result.substring(result.indexOf('base64,') + 7);\n }\n async _doUpload(blob, skip) {\n var uploader = this, fields = uploader._fields;\n fields.ongoing++;\n //\n const chunk = await this._blobToBase64(blob);\n var request = {\n chunk: chunk,\n uid: fields.uid, position: skip,\n action: \"do\"\n };\n try {\n const r = await uploader._fetch(request);\n if (r.ok) {\n fields.ongoing--;\n if (!!fields.undone)\n return;\n const json = await r.json();\n const result = json;\n // parallelism > 1 may cause non-ordered responses\n if (result.percentage > this.percentage) {\n await uploader._tweenPercentage(Math.round(Math.max(1, result.percentage)), 200);\n }\n if (uploader.complete != result.complete) {\n uploader.complete = result.complete;\n if (uploader.complete === true) {\n uploader.uploading = false;\n uploader.changeHandler(new FileUploadEvent(result));\n }\n }\n }\n else {\n // error occurred\n fields.retryFrom = skip;\n uploader.failed = true;\n uploader.uploading = false;\n }\n }\n catch (_) {\n // crash\n fields.retryFrom = skip;\n uploader.failed = true;\n uploader.uploading = false;\n }\n }\n _manage() {\n const fields = this._fields, size = this.size, blob = fields.blob, chunkSize = this.chunkSize || fields.chunkSize;\n var start = fields.retryFrom;\n var end = start + chunkSize;\n //\n fields.enqueuer = setInterval(() => {\n if (start < size && !this.failed) {\n const parallelism = this.parallelism || fields.parallelism;\n if (fields.ongoing >= parallelism)\n return;\n this._doUpload(blob.slice(start, end), start);\n start = end;\n end = start + chunkSize;\n }\n else {\n var input = this._fileupload;\n input.value = '';\n window.clearInterval(fields.enqueuer);\n }\n }, 100);\n }\n async _buildLocalValue(file, filename = file.name, blob = file) {\n return this._localValue = {\n name: filename,\n size: blob.size,\n type: file.type,\n lastModified: Utils.parseDate(file.lastModified).toISOString(),\n content: await this._blobToBase64(blob)\n };\n }\n _canPick(w) {\n return \"showDirectoryPicker\" in w &&\n (() => {\n try {\n return w.self === w.top;\n }\n catch {\n return false;\n }\n })();\n }\n _tryPickDirectory() {\n if (!this._canPick(window)) {\n return;\n }\n window.showDirectoryPicker({ mode: 'read' }).then(directory => {\n this.changeHandler(new StoragePickEvent(directory));\n });\n }\n _tryPickFiles(multiple = this.selectMode === 'multiple-picker', pattern = this.pattern) {\n if (!this._canPick(window)) {\n return;\n }\n window.showOpenFilePicker({ multiple }).then(files => {\n this.changeHandler(new StoragePickEvent(files));\n });\n }\n /**\n * Called from the template.\n * @param evt\n */\n _clickHandler(evt) {\n avoidHandler(evt);\n if (this.readonly) {\n return;\n }\n switch (this.selectMode) {\n case 'directory-picker':\n this._tryPickDirectory();\n break;\n case 'file-picker':\n case 'multiple-picker':\n this._tryPickFiles();\n break;\n }\n }\n async _mimicCompute() {\n // mimic upload\n this.uploading = true; // <- triggers anim\n if (!Utils.isNullOrEmpty(this.value)) {\n this.percentage = 0;\n await Utils.waitForAnimationEnd(this._tuner);\n }\n else {\n await Utils.idle(250);\n }\n await this._tweener.run(0, 100, 500, 0, Animations.Easings.sineInOut, (t, v) => {\n this.percentage = v;\n });\n // reset pct\n this.percentage = .0;\n this.uploading = false;\n }\n onChange(evt) {\n return new Promise(async (resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, FileUploadEvent)) {\n // result of an upload?\n const file = this.value = evt.detail.filename;\n this.dispatchEvent(evt);\n resolve(file);\n }\n else if (CustomEventUtils.isInstanceOf(evt, StoragePickEvent)) {\n // FileSystem API?\n let val = evt.detail;\n let directory, file, files;\n switch (this.selectMode) {\n case 'directory-picker':\n directory = val;\n this._stats = await computeDirStats(directory);\n break;\n case 'multiple-picker':\n case 'file-picker':\n files = val;\n if (files.length === 1) {\n val = files[0];\n }\n this._stats = await computeFileStats(files);\n break;\n default:\n // shouldn't be here\n this._stats = { directories: 0, files: 0, size: 0 };\n break;\n }\n resolve(this.value = this._localValue = val);\n const valid = this._validateAll();\n this.dispatchEvent(new FileChangeEvent({ directory, file, files, valid }));\n }\n else {\n // HTMLInputElement change event\n let input = this._fileupload;\n if (input.files.length === 0) {\n // clear\n this._stats = { directories: 0, files: 0, size: 0 };\n resolve(this.value = null);\n }\n else {\n const files = input.files.length;\n this._stats = { directories: 0, files, size: Array.from(input.files).reduce((acc, file, _) => acc += file.size, 0) };\n if (files > 1) {\n // directory or multiple files\n const selectedFiles = Array.from(input.files);\n resolve(this.value = this._localValue = selectedFiles);\n const valid = this._validateAll();\n this.dispatchEvent(new FileChangeEvent({ files: selectedFiles, valid }));\n }\n else {\n const file = input.files[0], filename = file.name;\n let blob = file;\n // validate file\n if (!this._validateSingleFile(file) && !Utils.isNullOrEmpty(this.url)) {\n // do not start uploads with an invalid file\n resolve(this.value = await this._buildLocalValue(file));\n }\n else {\n if (/\\.(jpe?g|png)$/i.test(filename) && this.maxImageWidth > 0 && this.maxImageHeight > 0) {\n blob = await Utils.Images.resize(blob, this.maxImageWidth, this.maxImageHeight, { quality: .8 });\n }\n await this._buildLocalValue(file, filename, blob);\n if (Utils.isNullOrEmpty(this.url)) {\n // mimic upload\n await this._mimicCompute();\n // no direct upload? set the value to the very File\n resolve(this.value = this._localValue);\n }\n else {\n // upload, then wait for resulting filename (value will be the filename string) \n this._upload(blob, input.value);\n resolve(this.value);\n }\n }\n // dispatch filechange\n this.dispatchEvent(new FileChangeEvent({ valid: !this.invalidFile, file }));\n }\n }\n }\n });\n }\n _fetch(request) {\n return fetch(this.url, {\n method: 'POST', credentials: this.fetchCredentials, headers: Utils.extend({ 'Accept': 'application/json', 'Content-Type': 'application/json' }, this.fetchHeaders || {}), body: JSON.stringify(request)\n });\n }\n async _undo(e) {\n e.preventDefault();\n e.stopPropagation();\n var Uploader = this, fields = Uploader._fields, input = Uploader._fileupload;\n clearInterval(fields.enqueuer);\n var request = {\n action: \"undo\", uid: fields.uid\n };\n try {\n var r = await Uploader._fetch(request);\n if (r.ok) {\n fields.undone = true;\n Uploader.size = 0;\n Uploader._tweenPercentage(.0, 300);\n }\n return r;\n }\n catch (e) {\n }\n finally {\n // This input element accepts a filename, which may only be programmatically set to the empty string(!)\n input.value = '';\n Uploader.uploading = false;\n return r;\n }\n }\n _tweenPercentage(pct, duration = 500) {\n const from = this.percentage;\n return this._tweener.run(from, pct, duration, 0, Animations.Easings.sineInOut, (t, v) => {\n this.percentage = v;\n });\n }\n _retry(e) {\n e.preventDefault();\n e.stopPropagation();\n this.failed = false;\n this._manage();\n }\n _clear(e) {\n e.preventDefault();\n e.stopPropagation();\n this.invalidFile = false;\n const input = this.inputFields[0];\n // https://stackoverflow.com/a/35323290\n input.value = '';\n if (!/safari/i.test(navigator.userAgent)) {\n input.type = '';\n input.type = 'file';\n }\n this.changeHandler(null);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemUploadElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n ViewChild('input[type=file]')\n], PacemUploadElement.prototype, \"_fileupload\", void 0);\n__decorate([\n ViewChild(`${P}-tuner`)\n], PacemUploadElement.prototype, \"_tuner\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"undoCaption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"retryCaption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"clearCaption\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"pattern\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"maxImageWidth\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"parallelism\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"chunkSize\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"maxImageHeight\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"maxSize\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"selectMode\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"uploading\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"size\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"percentage\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"complete\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"failed\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"invalidFile\", void 0);\nPacemUploadElement = __decorate([\n CustomElement({\n tagName: P + '-upload', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-button on-click=\":host._dispatchDownload($event)\" class=\"${PCSS}-upload ${PCSS}-viewfinder flat\" css-class=\"{{ {'upload-chosen': !$pacem.isNullOrEmpty(:host.value) && !:host.uploading, 'upload-error': ${ERROR_BINDING}, 'upload-readonly': :host.readonly } }}\">\r\n\r\n <${P}-panel class=\"upload-button\" hide=\"{{ (:host.uploading || :host.failed) && !$pacem.isNullOrEmpty(:host.url) }}\">\r\n <${P}-button tooltip=\"{{ :host.readonly ? :host.viewValue : 'upload' }}\" class=\"button-circle pos-relative overflow-hidden\"\r\n icon-glyph=\"{{ :host._getMimeIcon(:host.value, :host.uploading, :host.selectMode) }}\"\r\n on-click=\":host._clickHandler($event)\"\r\n on-mouseover=\"$this.iconGlyph = :host._getMimeIcon(:host.readonly ? :host.value : '', :host.uploading, :host.selectMode)\"\r\n on-mouseout=\"$this.iconGlyph = :host._getMimeIcon(:host.value, :host.uploading, :host.selectMode)\"\r\n css-class=\"{{ {'${PCSS}-anim anim-rotate': :host.uploading, 'button-error': :host.invalidFile, 'button-primary': $pacem.isNullOrEmpty(:host.value) && !:host.invalidFile, 'button-success': !Pacem.Utils.isNullOrEmpty(:host.value) && !:host.invalidFile } }}\">\r\n <input type=\"file\" class=\"${PCSS}-transparent ${PCSS}-clickable pos-absolute absolute-left absolute-right absolute-top absolute-bottom\" />\r\n </${P}-button>\r\n </${P}-panel>\r\n <${P}-panel class=\"upload-button\" hide=\"{{ !:host.failed }}\">\r\n <${P}-button class=\"button-circle button-flat\" icon-glyph=\"refresh\"\r\n tooltip=\"{{ :host.retryCaption }}\" on-click=\":host._retry($event)\"><${P}-text text=\"{{ :host.retryCaption }}\"></${P}-text></${P}-button>\r\n </${P}-panel>\r\n <${P}-panel class=\"upload-button\" hide=\"{{ !:host.uploading || $pacem.isNullOrEmpty(:host.url) }}\">\r\n <${P}-button class=\"button-circle button-flat\" icon-glyph=\"clear\" tooltip=\"{{ :host.undoCaption }}\" \r\n on-click=\":host._undo($event)\"><${P}-text text=\"{{ :host.undoCaption }}\"></${P}-text></${P}-button>\r\n </${P}-panel>\r\n\r\n <${P}-span tooltip=\"{{ :host.viewValue }}\"\r\n hide=\"{{ $pacem.isNullOrEmpty(:host.value) || :host.uploading }}\" class=\"upload-data readonly text-reset display-block ${PCSS}-anim text-truncate text-left ${PCSS}-pad pad-right-3\" text=\"{{ :host.viewValue }}\"></${P}-span>\r\n\r\n <${P}-panel class=\"upload-progress hit-none\" hide=\"{{ :host.readonly || (!$pacem.isNullOrEmpty(:host.value) && !:host.uploading) }}\">\r\n <${P}-tuner value=\"{{ :host.percentage }}\" css-class=\"{{ {'tuner-success': !:host.invalidFile, 'tuner-error': :host.invalidFile} }}\" interactive=\"false\"></${P}-tuner>\r\n </${P}-panel>\r\n\r\n <${P}-button class=\"button-circle button-flat clear-button\" icon-glyph=\"clear\" hide=\"{{ $pacem.isNullOrEmpty(:host.value) || :host.uploading }}\" tooltip=\"{{ :host.clearCaption }}\" on-click=\":host._clear($event)\"></${P}-button>\r\n \r\n</${P}-button>`\n })\n], PacemUploadElement);\nexport { PacemUploadElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\nlet PacemHiddenInputElement = class PacemHiddenInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) { }\n get inputFields() {\n return [this.input];\n }\n};\n__decorate([\n ViewChild('input[type=hidden]')\n], PacemHiddenInputElement.prototype, \"input\", void 0);\nPacemHiddenInputElement = __decorate([\n CustomElement({ tagName: P + '-input-hidden', template: '<input type=\"hidden\" />', shadow: Defaults.USE_SHADOW_ROOT })\n], PacemHiddenInputElement);\nexport { PacemHiddenInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomEventUtils, PropertyConverters, Utils, CustomUIEvent, avoidHandler, Logging } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst getUserMediaFunctions = Utils.getUserMediaFunctions();\nexport var SnapshotStep;\n(function (SnapshotStep) {\n SnapshotStep[\"Start\"] = \"start\";\n SnapshotStep[\"Taking\"] = \"taking\";\n SnapshotStep[\"Confirm\"] = \"confirm\";\n})(SnapshotStep || (SnapshotStep = {}));\nclass ConfirmSnapshotEvent extends CustomUIEvent {\n constructor(buffer) {\n super('confirmsnapshot', { buffer });\n }\n}\nlet PacemSnapshotElement = class PacemSnapshotElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this._resizeHandler = (evt) => {\n this._renderValue();\n };\n this.step = SnapshotStep.Start;\n /*const*/ this._canUseWebcam = getUserMediaFunctions.length > 0;\n this._countdown = 0;\n this._webcamInitialized = false;\n this._grabberChangeHandler = (e) => {\n const input = this._grabber;\n if (input.files.length > 0) {\n Utils.blobToDataURL(input.files[0]).then(url => {\n Utils.loadImage(url).then(img => {\n this._shutter(img);\n });\n });\n }\n };\n this._snapshooterClickHandler = (e) => {\n avoidHandler(e);\n this.step = SnapshotStep.Taking;\n };\n this._pickerClickHandler = (e) => {\n avoidHandler(e);\n this._grabber.click();\n };\n this._takerClickHandler = (e) => {\n avoidHandler(e);\n this._countdown = 0;\n this._shutter();\n };\n this._timerClickHandler = (e) => {\n avoidHandler(e);\n this._countdown = 3;\n this._shutter();\n };\n this._confirmerClickHandler = (e) => {\n avoidHandler(e);\n this.changeHandler(new ConfirmSnapshotEvent(this._buffer));\n };\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n // TODO\n }\n onChange(evt) {\n return new Promise((resolve, _) => {\n if (CustomEventUtils.isInstanceOf(evt, ConfirmSnapshotEvent)) {\n resolve(this.value = evt.detail.buffer);\n this.step = SnapshotStep.Start;\n }\n else {\n resolve(this.value);\n }\n });\n }\n acceptValue(val) {\n this._renderValue(val);\n }\n getViewValue(value) {\n return value;\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.String.convert(attr, this);\n }\n get _getUserMedia() {\n return this._canUseWebcam && getUserMediaFunctions[0];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'step':\n switch (val) {\n case SnapshotStep.Start:\n this._buffer = null;\n const input = this._grabber;\n // https://stackoverflow.com/a/35323290\n input.value = '';\n if (!/safari/i.test(navigator.userAgent)) {\n input.type = '';\n input.type = 'file';\n }\n break;\n case SnapshotStep.Taking:\n this._ensureWebcamRunning();\n break;\n }\n break;\n case '_buffer':\n this._renderValue(val || this.value);\n break;\n case 'width':\n case 'height':\n this._syncSize();\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._syncSize();\n this._picker.addEventListener('click', this._pickerClickHandler, false);\n this._snapshooter.addEventListener('click', this._snapshooterClickHandler, false);\n this._taker.addEventListener('click', this._takerClickHandler, false);\n this._timer.addEventListener('click', this._timerClickHandler, false);\n this._confirmer.addEventListener('click', this._confirmerClickHandler, false);\n this._grabber.addEventListener('change', this._grabberChangeHandler, false);\n }\n disconnectedCallback() {\n if (this.isReady) {\n this._picker.removeEventListener('click', this._pickerClickHandler, false);\n this._snapshooter.removeEventListener('click', this._snapshooterClickHandler, false);\n this._taker.removeEventListener('click', this._takerClickHandler, false);\n this._timer.removeEventListener('click', this._timerClickHandler, false);\n this._confirmer.removeEventListener('click', this._confirmerClickHandler, false);\n this._grabber.removeEventListener('change', this._grabberChangeHandler, false);\n }\n super.disconnectedCallback();\n }\n _syncSize() {\n const canvas = this._stage, video = this._player;\n if (!Utils.isNull(canvas) && !Utils.isNull(video)) {\n canvas.style.width = video.style.width = (this.width && this.width + 'px') || '',\n canvas.style.height = video.style.height = (this.height && this.height + 'px') || '';\n this._renderValue(this._buffer || this.value);\n }\n }\n _shutter(el) {\n const me = this, video = this._player, canvas = this._stage;\n me._confirmer.disabled = true;\n if (Utils.isNull(el)) {\n el = me._player;\n }\n var srcWidth, srcHeight;\n if (el instanceof HTMLVideoElement) {\n srcWidth = el.videoWidth;\n srcHeight = el.videoHeight;\n }\n else {\n srcWidth = el.naturalWidth;\n srcHeight = el.naturalHeight;\n }\n if (me._countdown <= 0) {\n var cnv = document.createElement('canvas');\n cnv.width = this.width || canvas.clientWidth;\n cnv.height = this.height || canvas.clientHeight;\n var ctx = cnv.getContext('2d');\n Utils.cropImageOntoCanvas(el, ctx, srcWidth, srcHeight);\n let root = me._root;\n root.insertBefore(cnv, video);\n cnv.className = 'snapshot-brightout';\n setTimeout(function () {\n root.removeChild(cnv);\n }, 1000);\n me._refreshBuffer(cnv.toDataURL()).then((b) => {\n me._setToBeConfirmed(b);\n me._confirmer.disabled = false;\n });\n }\n else\n setTimeout(() => { me._countdown--; this._shutter(); }, 1000);\n }\n _renderValue(val = this.value) {\n let cnv = this._stage;\n if (!Utils.isNull(cnv)) {\n cnv.width = cnv.clientWidth;\n cnv.height = cnv.clientHeight;\n let ctx = cnv.getContext('2d');\n if (Utils.isNullOrEmpty(val)) {\n ctx.clearRect(0, 0, cnv.width, cnv.height);\n }\n else {\n Utils.loadImage(val).then(img => {\n Utils.cropImageOntoCanvas(img, ctx, img.width, img.height);\n });\n }\n }\n }\n _setToBeConfirmed(buffer) {\n this.step = SnapshotStep.Confirm;\n this._buffer = buffer;\n }\n _refreshBuffer(buffer) {\n var cnv = this._stage;\n cnv.width = /*this.width ||*/ cnv.clientWidth;\n cnv.height = /*this.height ||*/ cnv.clientHeight;\n let quality;\n if (this.quality > 0) {\n quality = Math.min(1, Math.max(0, this.quality));\n }\n return Utils.cropImage(buffer, cnv.width, cnv.height, quality);\n }\n _ensureWebcamRunning() {\n if (this._canUseWebcam && !this._webcamInitialized) {\n var me = this;\n me._webcamInitialized = true;\n me._getUserMedia.apply(navigator, [{ video: true /*, audio: false*/ },\n /* success */ function (localMediaStream) {\n var video = me._player;\n // deprecated:\n //video.src = window.URL.createObjectURL(localMediaStream);\n // replaced with:\n video.srcObject = localMediaStream;\n }, /* fail */ function (e) {\n me.log(Logging.LogLevel.Error, (e || e.message).toString());\n }]);\n }\n }\n};\n__decorate([\n ViewChild('.' + PCSS + '-snapshot')\n], PacemSnapshotElement.prototype, \"_root\", void 0);\n__decorate([\n ViewChild('canvas')\n], PacemSnapshotElement.prototype, \"_stage\", void 0);\n__decorate([\n ViewChild('input[type=file]')\n], PacemSnapshotElement.prototype, \"_grabber\", void 0);\n__decorate([\n ViewChild('video')\n], PacemSnapshotElement.prototype, \"_player\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-upload')\n], PacemSnapshotElement.prototype, \"_picker\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-camera')\n], PacemSnapshotElement.prototype, \"_snapshooter\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-take')\n], PacemSnapshotElement.prototype, \"_taker\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-timer3s')\n], PacemSnapshotElement.prototype, \"_timer\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-confirm')\n], PacemSnapshotElement.prototype, \"_confirmer\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSnapshotElement.prototype, \"step\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSnapshotElement.prototype, \"width\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSnapshotElement.prototype, \"height\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSnapshotElement.prototype, \"quality\", void 0);\n__decorate([\n Watch()\n], PacemSnapshotElement.prototype, \"_countdown\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemSnapshotElement.prototype, \"_buffer\", void 0);\nPacemSnapshotElement = __decorate([\n CustomElement({\n tagName: P + '-snapshot',\n shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-snapshot\" \r\ncss-class=\"{{ { \r\n'snapshot-start': :host.step === '${SnapshotStep.Start}',\r\n'snapshot-taking': :host.step === '${SnapshotStep.Taking}', \r\n'snapshot-confirm': :host.step === '${SnapshotStep.Confirm}' } }}\">\r\n\r\n <${P}-resize target=\"{{ ::_stage }}\" on-resize=\":host._resizeHandler($event)\"></${P}-resize>\r\n\r\n <canvas class=\"${PCSS}-viewfinder\"></canvas>\r\n\r\n <video autoplay=\"autoplay\"></video>\r\n\r\n <input type=\"file\" accept=\"image/*\" />\r\n\r\n <div class=\"${PCSS}-buttonset snapshot-step step-start\">\r\n <div class=\"buttonset-center\">\r\n <${P}-button class=\"button snapshot-upload\" icon-glyph=\"upload\"></${P}-button>\r\n <${P}-button class=\"button snapshot-camera\" icon-glyph=\"photo_camera\"></${P}-button> \r\n </div>\r\n </div>\r\n\r\n <div class=\"${PCSS}-buttonset snapshot-step step-taking\">\r\n <div class=\"buttonset-center\">\r\n <${P}-button class=\"button snapshot-undo\" icon-glyph=\"undo\" on-click=\":host.step = '${SnapshotStep.Start}'\"></${P}-button>\r\n <${P}-button class=\"button snapshot-take\" icon-glyph=\"camera\"></${P}-button>\r\n <${P}-button class=\"button snapshot-timer3s\" icon-glyph=\"timer_3\"></${P}-button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"${PCSS}-buttonset snapshot-step step-confirm\">\r\n <div class=\"buttonset-center\">\r\n <${P}-button class=\"button snapshot-undo\" icon-glyph=\"undo\" on-click=\":host.step = '${SnapshotStep.Start}'\"></${P}-button>\r\n <${P}-button class=\"button snapshot-confirm\" icon-glyph=\"done\"></${P}-button>\r\n </div>\r\n </div>\r\n\r\n <${P}-span class=\"snapshot-countdown\" text=\"{{ :host._countdown }}\" hide=\"{{ :host.step !== '${SnapshotStep.Taking}' || !(:host._countdown > 0) }}\"></${P}-span>\r\n <${P}-span hide=\"{{ :host._canUseWebcam }}\"><${P}-content></${P}-content></${P}-span>\r\n\r\n</${P}-panel>`\n })\n], PacemSnapshotElement);\nexport { PacemSnapshotElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomTypedEvent, Components, CustomEventUtils, PropertyConverters, PropertyChangeEventName, Utils, Debounce, avoidHandler } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemBaseElement } from './types-components';\nimport { FileUploadEventName } from './input-file';\nimport { SnapshotStep } from './snapshot';\n//namespace Pacem.Components.Scaffolding {\nexport class Picture {\n}\nexport const ImageFetchRequestEventName = 'imagefetchrequest';\nexport class ImageFetchRequestEvent extends CustomTypedEvent {\n constructor(args) {\n super(ImageFetchRequestEventName, args, { bubbles: true /*, scoped: false */ });\n }\n}\nlet PacemEditImageElement = class PacemEditImageElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._index = 0;\n this.hint = '';\n }\n _uploaderPropertyChangedCallback(evt) {\n const val = evt.detail.currentValue;\n switch (evt.detail.propertyName) {\n case 'percentage':\n this._progressbar.percentage = val * 100.0;\n break;\n case 'uploading':\n if (val)\n this._done(true);\n break;\n }\n }\n _thumbnailUploaderPropertyChangedCallback(evt) {\n const val = evt.detail.currentValue;\n switch (evt.detail.propertyName) {\n case 'percentage':\n this._progressbar.percentage = val * 100.0;\n break;\n case 'uploading':\n this._done(val);\n break;\n }\n }\n _uploaderFileUploadCallback(evt) {\n const uploader = this._uploader;\n const thumbUploader = this._thumbUploader, w = thumbUploader.maxImageWidth, h = thumbUploader.maxImageHeight;\n if (w > 0 && h > 0) {\n var blob = uploader.blob;\n const uid = evt.detail.uid;\n Utils.resizeImage(blob, w, h).then(blob2 => {\n if (blob2 != blob) {\n thumbUploader.upload(blob2, 'thumbnail.jpg', uid);\n return;\n }\n else\n // fallback\n this._done(false);\n });\n }\n else\n // fallback\n this._done(false);\n }\n _done(uploading) {\n if (!uploading) {\n this._imagefetch(0);\n }\n this._repeater.hidden = uploading;\n this._progressbar.hidden = !uploading;\n }\n _snapshotPropertyChangedCallback(evt) {\n switch (evt.detail.propertyName) {\n case 'value':\n const blob = Utils.dataURLToBlob(evt.detail.currentValue);\n this._uploader.upload(blob, 'snapshot.jpg');\n break;\n }\n }\n reset() {\n this._snapshot.step = SnapshotStep.Start;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'imageSet':\n let set = val || { skip: 0, set: [] };\n if (Utils.isNullOrEmpty(this._images) || set.skip === 0)\n this._images = set.set;\n else if (!Utils.isNull(this._images))\n Array.prototype.splice.apply(this._images, [set.skip, this._images.length - set.skip].concat(set.set));\n this._fetching = false;\n break;\n case 'hint':\n if (!first)\n this._imagefetch(0);\n break;\n }\n }\n _imagefetchSuddenly(ndx) {\n this._fetching = true;\n this._imagefetch(ndx);\n }\n _imagefetch(ndx) {\n if (!(ndx >= 0))\n ndx = (this._images && this._images.length) || 0;\n this.dispatchEvent(new ImageFetchRequestEvent({ hint: this.hint, skip: ndx, take: 18 }));\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditImageElement.prototype, \"uploadUrl\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditImageElement.prototype, \"hint\", void 0);\n__decorate([\n Watch()\n], PacemEditImageElement.prototype, \"imageSet\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditImageElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxWidth\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxHeight\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxThumbnailWidth\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxThumbnailHeight\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemEditImageElement.prototype, \"allowSnapshot\", void 0);\n__decorate([\n Watch()\n], PacemEditImageElement.prototype, \"_fetching\", void 0);\n__decorate([\n Watch()\n], PacemEditImageElement.prototype, \"_images\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemEditImageElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-upload[main]')\n], PacemEditImageElement.prototype, \"_uploader\", void 0);\n__decorate([\n ViewChild(P + '-upload[thumb]')\n], PacemEditImageElement.prototype, \"_thumbUploader\", void 0);\n__decorate([\n ViewChild(P + '-snapshot')\n], PacemEditImageElement.prototype, \"_snapshot\", void 0);\n__decorate([\n ViewChild(P + '-progressbar')\n], PacemEditImageElement.prototype, \"_progressbar\", void 0);\n__decorate([\n Debounce(500)\n], PacemEditImageElement.prototype, \"_imagefetch\", null);\nPacemEditImageElement = __decorate([\n CustomElement({\n tagName: P + '-edit-image', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-edit-image\"\r\n css-class=\"{{ {'${PCSS}-snapshot': ::_snapshot.step != '${SnapshotStep.Start}', '${PCSS}-uploading': ::_uploader.uploading, '${PCSS}-upload-enabled': !Pacem.Utils.isNullOrEmpty(:host.uploadUrl), '${PCSS}-snapshot-enabled': !Pacem.Utils.isNullOrEmpty(:host.uploadUrl) && :host.allowSnapshot} }}\">\r\n <div>\r\n <${P}-input-search value=\"{{ :host.hint, twoway }}\"></${P}-input-search>\r\n <${P}-upload main pattern=\".+\\.(jpe?g|png|svg|ico)$\" url=\"{{ :host.uploadUrl }}\"\r\n max-image-width=\"{{ :host.maxWidth }}\" max-image-height=\"{{ :host.maxHeight }}\"\r\n on-${FileUploadEventName}=\":host._uploaderFileUploadCallback($event)\"\r\n on-${PropertyChangeEventName}=\":host._uploaderPropertyChangedCallback($event)\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.uploadUrl) || ::_thumbUploader.uploading }}\"></${P}-upload>\r\n <${P}-upload thumb pattern=\".+\\.(jpe?g|png|svg|ico)$\" url=\"{{ :host.uploadUrl }}\" hide=\"{{ !::_thumbUploader.uploading }}\"\r\n max-image-width=\"{{ :host.maxThumbnailWidth }}\" max-image-height=\"{{ :host.maxThumbnailHeight }}\"\r\n on-${PropertyChangeEventName}=\":host._thumbnailUploaderPropertyChangedCallback($event)\"></${P}-upload>\r\n <${P}-button class=\"${PCSS}-snapshot\" on-click=\"Pacem.avoidHandler($event); ::_snapshot.step = '${SnapshotStep.Taking}'\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.uploadUrl) || !:host.allowSnapshot }}\"></${P}-button>\r\n <${P}-infinite-scroller container=\"{{ ::_repeater }}\" on-fetchmore=\":host._imagefetchSuddenly()\" disabled=\"{{ :host._fetching || :host.disabled || :host._images.length >= :host.imageSet.total }}\"></${P}-infinite-scroller>\r\n <${P}-repeater datasource=\"{{ :host._images }}\">\r\n <template>\r\n <${P}-img css-class=\"{{ {'${PCSS}-selected': ^item.src === :host.value } }}\" on-click=\":host.value = ^item.src\" src=\"{{ ^item.thumb }}\" adapt=\"contain\"></${P}-img>\r\n </template>\r\n </${P}-repeater>\r\n <${P}-progressbar class=\"progressbar-smaller progressbar-accent\" caption=\"{{ ::_thumbUploader.uploading ? 'thumbnail...' : 'uploading...' }}\"></${P}-progressbar>\r\n </div>\r\n <div>\r\n <${P}-snapshot hide=\"{{ !:host.allowSnapshot }}\" on-${PropertyChangeEventName}=\":host._snapshotPropertyChangedCallback($event)\"></${P}-snapshot>\r\n </div>\r\n </${P}-panel>`\n })\n], PacemEditImageElement);\nexport { PacemEditImageElement };\nlet PacemImageInputElement = class PacemImageInputElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this._broadcastFetchRequestEventName = (evt) => {\n this.dispatchEvent(new ImageFetchRequestEvent(evt.detail));\n };\n this._innerValueChangedHandler = (evt) => {\n if (evt.detail.propertyName === 'value' && !Utils.isNull(this._dialog))\n this._dialog.state = evt.detail.currentValue;\n };\n // #endregion\n }\n convertValueAttributeToProperty(attr) {\n return attr; // better assumptions anyone?\n }\n getViewValue(value) {\n return value;\n }\n get inputFields() {\n return [];\n }\n _clear(evt) {\n this.changeHandler(evt);\n }\n onChange(evt) {\n let value = this.value;\n if (CustomEventUtils.isInstanceOf(evt, ComponentsUI.UI.DialogResultEvent)\n && evt.detail.button === ComponentsUI.UI.DialogButton.Ok)\n value = this.value = evt.detail.state;\n else if (evt.target === this._input)\n value = this.value = this._input.value;\n else if (evt.target === this._clearBtn)\n value = this.value = undefined;\n return Utils.fromResult(value);\n }\n toggleReadonlyView(readonly) {\n this._input.hidden = this._editBtn.hide = this._clearBtn.hide = readonly;\n }\n _addDialog() {\n var dialog = document.createElement(P + '-dialog');\n dialog.buttons = ComponentsUI.UI.DialogButtons.OkCancel;\n dialog.addEventListener(ComponentsUI.UI.DialogResultEventName, this.changeHandler, false);\n dialog.appendChild(this._addEditImage());\n document.body.appendChild(dialog);\n //\n return this._dialog = dialog;\n }\n _removeDialog() {\n this._removeEditImage();\n if (!Utils.isNull(this._dialog)) {\n this._dialog.removeEventListener(ComponentsUI.UI.DialogResultEventName, this.changeHandler, false);\n this._dialog.remove();\n }\n }\n _addEditImage() {\n var editImage = document.createElement(P + '-edit-image');\n editImage.disabled = true;\n editImage.addEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n editImage.addEventListener(ImageFetchRequestEventName, this._broadcastFetchRequestEventName, false);\n editImage.uploadUrl = this.uploadUrl;\n editImage.allowSnapshot = this.allowSnapshot;\n editImage.maxWidth = this.maxWidth;\n editImage.maxHeight = this.maxHeight;\n editImage.maxThumbnailHeight = this.maxThumbnailHeight;\n editImage.maxThumbnailWidth = this.maxThumbnailWidth;\n return this._editImage = editImage;\n }\n _removeEditImage() {\n if (!Utils.isNull(this._editImage)) {\n this._editImage.removeEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n this._editImage.removeEventListener(ImageFetchRequestEventName, this._broadcastFetchRequestEventName, false);\n }\n }\n connectedCallback() {\n super.connectedCallback();\n this._addDialog();\n }\n disconnectedCallback() {\n this._removeDialog();\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'uploadUrl':\n if (!Utils.isNull(this._editImage))\n this._editImage.uploadUrl = val;\n break;\n case 'allowSnapshot':\n if (!Utils.isNull(this._editImage))\n this._editImage.allowSnapshot = val;\n break;\n case 'imageSet':\n if (!Utils.isNull(this._editImage))\n this._editImage.imageSet = val;\n break;\n case 'maxThumbnailHeight':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxThumbnailHeight = val;\n break;\n case 'maxThumbnailWidth':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxThumbnailWidth = val;\n break;\n case 'maxHeight':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxHeight = val;\n break;\n case 'maxWidth':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxWidth = val;\n break;\n }\n }\n acceptValue(val) {\n if (!Utils.isNull(this._editImage))\n this._editImage.value = val;\n }\n _update(val) {\n this._image.src = val;\n }\n _retrieve() {\n return this.value;\n }\n _edit(evt) {\n avoidHandler(evt);\n var editImage = this._editImage, state = this.value;\n editImage.disabled = false;\n editImage.reset();\n editImage.value = state;\n this._dialog.open(state).then(args => {\n switch (args.button) {\n case ComponentsUI.UI.DialogButton.Cancel:\n // reset value\n this._update(this.value);\n break;\n case ComponentsUI.UI.DialogButton.Ok:\n // save\n this._update(args.state);\n break;\n }\n this._editImage.disabled = true;\n });\n }\n};\n__decorate([\n ViewChild(P + '-img')\n], PacemImageInputElement.prototype, \"_image\", void 0);\n__decorate([\n ViewChild(P + '-button.' + PCSS + '-edit')\n], PacemImageInputElement.prototype, \"_editBtn\", void 0);\n__decorate([\n ViewChild(P + '-button.' + PCSS + '-clear')\n], PacemImageInputElement.prototype, \"_clearBtn\", void 0);\n__decorate([\n ViewChild(P + '-input-url')\n], PacemImageInputElement.prototype, \"_input\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemImageInputElement.prototype, \"uploadUrl\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemImageInputElement.prototype, \"imageSet\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxThumbnailWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxThumbnailHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemImageInputElement.prototype, \"allowSnapshot\", void 0);\nPacemImageInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-image', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-input-image\"><${P}-img src=\"{{ :host.value }}\" adapt=\"contain\"></${P}-img><div class=\"${PCSS}-input-image-dashboard\">\r\n <${P}-button on-click=\":host._edit($event)\" hide=\"{{ :host.disabled }}\" class=\"${PCSS}-edit\">Edit</${P}-button>\r\n <${P}-button on-click=\":host._clear($event)\" hide=\"{{ :host.disabled }}\" class=\"${PCSS}-clear\">Clear</${P}-button>\r\n</div><${P}-input-url placeholder=\"{{ :host.placeholder }}\" on-change=\":host.changeHandler($event)\" value=\"{{ :host.value }}\"></${P}-input-url>\r\n\r\n <${P}-panel hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.value) }}\">\r\n <dl class=\"${PCSS}-input-image-preview\">\r\n <dt>dimensions:</dt><dd><${P}-text text=\"{{ ::_image.size.width +'x'+ ::_image.size.height }}\"></${P}-text></dd>\r\n <dt>size:</dt><dd><${P}-text text=\"{{ $pacem.size(::_image.size.weight) }}\"></${P}-text></dd>\r\n </dl></${P}-panel>\r\n\r\n</div>`\n })\n], PacemImageInputElement);\nexport { PacemImageInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { PacemOrdinalInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\nlet PacemNumberInputElement = class PacemNumberInputElement extends PacemOrdinalInputElement {\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._input.hidden = readonly;\n }\n get inputFields() {\n return [this._input];\n }\n getViewValue(val) {\n return this.value != null ? this._format(this.value) : undefined;\n }\n _format(v = this.value) {\n const intl = this.format;\n if (!Utils.isNullOrEmpty(intl)) {\n return new Intl.NumberFormat(Utils.lang(this), intl).format(v);\n }\n return v.toString();\n }\n getValue(val) {\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/669685/ (bug open since Aug 2014!)\n const v = this.inputField.valueAsNumber || parseFloat(this.inputField.value);\n return isNaN(v) ? undefined : v;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n var options = { capture: false, passive: false };\n this._input.addEventListener(\"wheel\", this.emitHandler, options);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._input)) {\n var options = { capture: false, passive: false };\n this._input.removeEventListener(\"wheel\", this.emitHandler, options);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild('input[type=number]')\n], PacemNumberInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemNumberInputElement.prototype, \"_span\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemNumberInputElement.prototype, \"format\", void 0);\nPacemNumberInputElement = __decorate([\n CustomElement({ tagName: P + '-input-number', template: `<input type=\"number\" class=\"${PCSS}-input ${PCSS}-viewfinder\" /><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemNumberInputElement);\nexport { PacemNumberInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, avoidHandler, Defaults, ViewChild, Utils } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nlet PacemPasswordInputElement = class PacemPasswordInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n this._togglerMousedownHandler = (evt) => {\n if (evt.button == 0) {\n avoidHandler(evt);\n this.toggleVisibility();\n }\n };\n }\n get inputFields() {\n return [this._input];\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const baseId = this.id ?? '_' + Utils.uniqueCode();\n const inputId = this._input.id = baseId + '_ctrl';\n this._toggler.setAttribute('aria-controls', inputId);\n this._toggler.setAttribute('role', 'button');\n this._syncToggler();\n this._toggler.addEventListener('mousedown', this._togglerMousedownHandler, false);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._toggler)) {\n this._toggler.removeEventListener('mousedown', this._togglerMousedownHandler, false);\n }\n }\n toggleVisibility() {\n const current = this._input.type;\n this._input.type = current === 'password' ? 'text' : 'password';\n this._syncToggler();\n }\n _syncToggler() {\n const collapsed = this._input.type === 'password';\n this._toggler.innerText = collapsed ? 'visibility_off' : 'visibility';\n this._toggler.setAttribute('aria-expanded', (!collapsed).toString());\n }\n toggleReadonlyView(readonly) {\n this._input.hidden = this._toggler.hidden = readonly;\n this._span.hidden = !readonly;\n }\n getViewValue(val) {\n return Utils.leftPad('', Math.floor(8 + 3 * Math.random()), '•');\n }\n};\n__decorate([\n ViewChild('input[type=password]')\n], PacemPasswordInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemPasswordInputElement.prototype, \"_span\", void 0);\n__decorate([\n ViewChild(`i.${PCSS}-icon.${PCSS}-clickable`)\n], PacemPasswordInputElement.prototype, \"_toggler\", void 0);\nPacemPasswordInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-password', template: `<input type=\"password\" class=\"${PCSS}-input ${PCSS}-viewfinder\" /><i class=\"${PCSS}-icon ${PCSS}-clickable\"></i>\r\n${CHAR_COUNTER_CHILD}<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemPasswordInputElement);\nexport { PacemPasswordInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\nlet PacemSearchInputElement = class PacemSearchInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n get inputFields() {\n return [this.input];\n }\n toggleReadonlyView(readonly) {\n // no readonly view provided.\n }\n};\n__decorate([\n ViewChild('input[type=search]')\n], PacemSearchInputElement.prototype, \"input\", void 0);\nPacemSearchInputElement = __decorate([\n CustomElement({ tagName: P + '-input-search', template: '<input type=\"search\" class=\"' + PCSS + '-input\" />', shadow: Defaults.USE_SHADOW_ROOT })\n], PacemSearchInputElement);\nexport { PacemSearchInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\nlet PacemTelInputElement = class PacemTelInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n this.input.hidden = readonly;\n this.anchor.hidden = !readonly;\n }\n get inputFields() {\n return [this.input];\n }\n};\n__decorate([\n ViewChild('input[type=tel]')\n], PacemTelInputElement.prototype, \"input\", void 0);\n__decorate([\n ViewChild(P + '-a')\n], PacemTelInputElement.prototype, \"anchor\", void 0);\nPacemTelInputElement = __decorate([\n CustomElement({ tagName: P + '-input-tel', template: `<input type=\"tel\" class=\"${PCSS}-input\" /><${P}-a class=\"${PCSS}-readonly\" disabled=\"{{ $pacem.isNullOrEmpty(:host.value) }}\" href=\"{{ 'tel:'+ :host.value }}\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-a>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemTelInputElement);\nexport { PacemTelInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nlet PacemTextInputElement = class PacemTextInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._input.hidden = readonly;\n }\n get inputFields() {\n return [this._input];\n }\n};\n__decorate([\n ViewChild('input[type=text]')\n], PacemTextInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild('span.' + PCSS + '-readonly')\n], PacemTextInputElement.prototype, \"_span\", void 0);\nPacemTextInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-text',\n template: `<input type=\"text\" class=\"${PCSS}-input\" />${CHAR_COUNTER_CHILD}<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemTextInputElement);\nexport { PacemTextInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nlet PacemUrlInputElement = class PacemUrlInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n this.input.hidden = readonly;\n this.anchor.hidden = !readonly;\n }\n get inputFields() {\n return [this.input];\n }\n};\n__decorate([\n ViewChild('input[type=url]')\n], PacemUrlInputElement.prototype, \"input\", void 0);\n__decorate([\n ViewChild(P + '-a')\n], PacemUrlInputElement.prototype, \"anchor\", void 0);\nPacemUrlInputElement = __decorate([\n CustomElement({ tagName: P + '-input-url', template: `<input type=\"url\" class=\"${PCSS}-input\" />${CHAR_COUNTER_CHILD}<${P}-a class=\"${PCSS}-readonly\" disabled=\"{{ $pacem.isNullOrEmpty(:host.value) }}\" href=\"{{ :host.value }}\" target=\"_blank\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-a>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemUrlInputElement);\nexport { PacemUrlInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults } from '@pacem/pacem-core';\nimport { Components as ComponentsMaps } from '@pacem/pacem-maps';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nexport const DEFAULT_TILES = \"\";\nexport const DEFAULT_ATTRIBUTION = \"\";\n//const TILES = `//api.mapbox.com/styles/v1/cmerighi/ciwz1gib7002l2prvgpi724nk/tiles/256/{z}/{x}/{y}?access_token=pk.eyJ1IjoiY21lcmlnaGkiLCJhIjoiY2lsZHIxdGJmMDAxOHc4bHowamxpZ2Z2OCJ9.7I7ndF-rAkx_1Sqi0bw3Ew`;\n//const ATTRIBUTION = `Map data © <a href=\"http://openstreetmap.org\">OpenStreetMap</a> contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>, Imagery © <a href=\"http://mapbox.com\">Mapbox</a>`\nconst REVERSE_GEOCODE_URL = 'https://nominatim.openstreetmap.org/reverse';\nlet PacemLatLngElement = class PacemLatLngElement extends PacemBaseElement {\n convertValueAttributeToProperty(attr) {\n const regexArray = /^\\s*([+-]?\\d+\\.?\\d+)[,\\s]\\s*([+-]?\\d+\\.?\\d+)\\s*$/.exec(attr);\n if (regexArray && regexArray.length === 3) {\n return { lat: parseFloat(regexArray[1]), lng: parseFloat(regexArray[2]) };\n }\n throw `Invalid coordinates format for \"${attr}\"`;\n }\n compareValuePropertyValues(old, val) {\n if (old && typeof old.lat === 'number' && typeof old.lng === 'number'\n && val && typeof val.lat === 'number' && typeof val.lng === 'number') {\n return old.lat === val.lat && old.lng === val.lng;\n }\n return false;\n }\n getViewValue(value) {\n return this._getViewValue(value);\n }\n _getViewValue(value, precision = 8) {\n return value && typeof value.lat === 'number' && typeof value.lng === 'number' && value.lat.toFixed(precision) + ',' + value.lng.toFixed(precision) || '';\n }\n get inputFields() {\n return [this._latInput, this._lngInput];\n }\n toggleReadonlyView(readonly) {\n this._inputContainer.hidden = /*\n this._lngInput.hide = this._latInput.hide =*/\n readonly;\n }\n // regex: \n acceptValue(val) {\n let e_val = this._ensureValue(val);\n this._lat = e_val.lat;\n this._lng = e_val.lng;\n }\n _ensureValue(val) {\n return (val && typeof val.lat === 'number' && typeof val.lng === 'number') ? val : ComponentsMaps.Maps.MapConsts.DEFAULT_COORDS;\n }\n onChange(evt) {\n if (evt && evt.type === 'dragend') {\n var mevt = evt;\n // geocoordinate change due to map drag\n this._lat = mevt.detail.position.lat;\n this._lng = mevt.detail.position.lng;\n } // else: geocoordinate change due to text-input\n const lat = this._lat;\n const lng = this._lng;\n if (Utils.isNull(lat) || Utils.isNull(lng))\n return Utils.fromResult(this.value);\n return Utils.fromResult(this.value = { lat: lat, lng: lng });\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'options' && !first) {\n const opts = Utils.clone((val || { provider: 'osm' }));\n this._synchronizeOptions(opts);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._synchronizeOptions();\n }\n _synchronizeOptions(opts = this.options || { provider: 'osm' }) {\n const marker = this._marker, map = this._map;\n marker.icon = opts.icon;\n switch (opts && opts.provider) {\n case 'azure':\n this._azureAdapter.subscriptionKey = opts.apiKey;\n map.adapter = this._azureAdapter;\n break;\n case 'google':\n case 'gmaps':\n this._googleAdapter.apiKey = opts.apiKey;\n map.adapter = this._googleAdapter;\n break;\n default:\n if (!Utils.isNullOrEmpty(opts.attribution)) {\n this._leafletAdapter.attribution = opts.attribution;\n }\n if (!Utils.isNullOrEmpty(opts.tiles)) {\n this._leafletAdapter.tiles = opts.tiles;\n }\n map.adapter = this._leafletAdapter;\n break;\n }\n delete opts['provider'];\n delete opts['icon'];\n delete opts['apiKey'];\n delete opts['attribution'];\n delete opts['tiles'];\n for (let prop in opts) {\n if (prop in map) {\n map[prop] = opts[prop];\n }\n }\n }\n};\n__decorate([\n ViewChild(P + '-map-adapter-leaflet')\n], PacemLatLngElement.prototype, \"_leafletAdapter\", void 0);\n__decorate([\n ViewChild(P + '-map-adapter-azure')\n], PacemLatLngElement.prototype, \"_azureAdapter\", void 0);\n__decorate([\n ViewChild(P + '-map-adapter-google')\n], PacemLatLngElement.prototype, \"_googleAdapter\", void 0);\n__decorate([\n ViewChild(P + '-map')\n], PacemLatLngElement.prototype, \"_map\", void 0);\n__decorate([\n ViewChild(P + '-map-marker')\n], PacemLatLngElement.prototype, \"_marker\", void 0);\n__decorate([\n ViewChild(P + '-input-number:nth-child(1)')\n], PacemLatLngElement.prototype, \"_latInput\", void 0);\n__decorate([\n ViewChild(P + '-input-number:nth-child(2)')\n], PacemLatLngElement.prototype, \"_lngInput\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-latlng-fields`)\n], PacemLatLngElement.prototype, \"_inputContainer\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemLatLngElement.prototype, \"_fetcher\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json, emit: false })\n], PacemLatLngElement.prototype, \"options\", void 0);\n__decorate([\n Watch()\n], PacemLatLngElement.prototype, \"_lat\", void 0);\n__decorate([\n Watch()\n], PacemLatLngElement.prototype, \"_lng\", void 0);\nPacemLatLngElement = __decorate([\n CustomElement({\n tagName: P + '-latlng', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-latlng\">\r\n <div class=\"${PCSS}-latlng-fields ${PCSS}-viewfinder\">\r\n <${P}-input-number class=\"${PCSS}-lat\" value=\"{{ :host._lat, twoway }}\" min=\"-90\" max=\"90\" step=\"{{ 'any' }}\"></${P}-input-number>\r\n <${P}-input-number class=\"${PCSS}-lng\" value=\"{{ :host._lng, twoway }}\" min=\"-180\" max=\"180\" step=\"{{ 'any' }}\"></${P}-input-number>\r\n </div>\r\n <${P}-panel hide=\"{{ Pacem.Utils.isNull(:host.value) || :host.readonly }}\">\r\n <dl class=\"${PCSS}-latlng-preview\">\r\n <dt>decimals:</dt><dd><${P}-text text=\"{{ :host._getViewValue(:host.value, 12) }}\"></${P}-text></dd>\r\n <dt>address:</dt><dd><${P}-text text=\"{{ ::_fetcher.result.display_name || '?' }}\"></${P}-text></dd>\r\n <dt>degrees:</dt><dd><${P}-span css-class=\"{{ {'${PCSS}-lat-north': :host._lat > 0, '${PCSS}-lat-south': :host._lat < 0} }}\" content=\"{{ $pacem.decToDeg(Math.abs(:host._lat)) }}\"></${P}-span>,\r\n <${P}-span css-class=\"{{ {'${PCSS}-lng-east': :host._lng > 0, '${PCSS}-lng-west': :host._lng < 0} }}\" content=\"{{ $pacem.decToDeg(Math.abs(:host._lng)) }}\"></${P}-span></dd>\r\n </dl>\r\n </${P}-panel>\r\n <${P}-span class=\"${PCSS}-readonly\" hide=\"{{ !:host.readonly }}\" content=\"{{ :host.viewValue + ($pacem.isNullOrEmpty(::_fetcher.result.display_name) ? '' : (' <small>'+ ::_fetcher.result.display_name +'</small>')) }}\"></${P}-span>\r\n\r\n <${P}-map-adapter-leaflet></${P}-map-adapter-leaflet>\r\n <${P}-map-adapter-azure></${P}-map-adapter-azure>\r\n <${P}-map-adapter-google></${P}-map-adapter-google>\r\n\r\n <${P}-map adapter=\"{{ ::_adapter }}\">\r\n <${P}-map-marker position=\"{{ :host._ensureValue(:host.value) }}\" on-dragend=\":host.changeHandler($event)\" draggable=\"{{ !:host.readonly }}\"></${P}-map-marker>\r\n </${P}-map>\r\n <${P}-fetch disabled=\"{{ $pacem.isNull(:host.value) }}\" parameters=\"{{ { format: 'json', lat: :host._lat, lon: :host._lng } }}\" url=\"${REVERSE_GEOCODE_URL}\"></${P}-fetch>\r\n</div>`\n })\n], PacemLatLngElement);\nexport { PacemLatLngElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Defaults } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\nimport { ChangePolicy } from './input';\n//namespace Pacem.Components.Scaffolding {\nconst ITEM_TXT_CORE = `change-policy=\"${ChangePolicy.Blur}\" readonly=\"{{ :host.readonly }}\"`;\nfunction isEmpty(nvp) {\n return Utils.isNullOrEmpty(nvp && nvp.name);\n}\nfunction pullEmpty() {\n return { name: '', value: '' };\n}\nlet PacemNameValueListElement = class PacemNameValueListElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this.inputFields = [];\n this._bag = [];\n }\n toggleReadonlyView(readonly) {\n // let the bindings do their job...\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n let val = this._bagToValue(this._bag);\n if (!this.compareValuePropertyValues(val, this.value)) {\n resolve(this.value = val);\n }\n else {\n reject();\n }\n });\n }\n acceptValue(val) {\n this._bag = this._valueToBag(val);\n }\n getViewValue(value) {\n return ''; // unneeded\n }\n compareValuePropertyValues(old, val) {\n return Utils.Json.stringify(old) === Utils.Json.stringify(val);\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'dictionary' && !first) {\n this.value = this._bagToValue();\n }\n }\n _bagToValue(bag = this._bag) {\n if (!this.dictionary) {\n // not a dictionary\n // return an array\n let b = [];\n for (let item of bag || []) {\n if (isEmpty(item)) {\n continue;\n }\n if (b.find(i => i.name === item.name && i.value === item.value)) {\n continue;\n }\n b.push(item);\n }\n return b;\n }\n // dictionary\n // return an object\n let v = {};\n for (let kvp of bag || []) {\n if (kvp.name in v) {\n // skip existing names...\n continue;\n }\n v[kvp.name] = kvp.value;\n }\n return v;\n }\n _valueToBag(val = this.value) {\n const bag = [];\n if (!Utils.isNullOrEmpty(val) && typeof val === 'object') {\n if (this.dictionary && !Utils.isArray(val)) {\n for (let prop in val) {\n bag.push({ name: prop, value: val[prop] });\n }\n }\n else if (!this.dictionary && Utils.isArray(val)) {\n Array.prototype.splice.apply(bag, [0, 0].concat(val.map(i => Utils.clone(i))));\n }\n }\n return !Utils.isNullOrEmpty(bag) ? bag : [pullEmpty()];\n }\n _deleteAt(evt) {\n this._bag.splice(evt.detail, 1);\n this.changeHandler(evt);\n }\n _addItem(evt) {\n const bag = this._bag, lastItem = this._bag[this._bag.length - 1];\n if (Utils.isEmpty(bag) || !isEmpty(lastItem)) {\n bag.push(pullEmpty());\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemNameValueListElement.prototype, \"dictionary\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemNameValueListElement.prototype, \"_bag\", void 0);\nPacemNameValueListElement = __decorate([\n CustomElement({\n tagName: P + '-namevalue-list', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater datasource=\"{{ :host._bag }}\" on-itemdelete=\":host._deleteAt($event)\">\r\n <template>\r\n <div class=\"${PCSS}-fieldset ${PCSS}-margin margin-bottom-1\">\r\n <div class=\"fieldset-auto\">\r\n <div class=\"${PCSS}-fieldgroup\">\r\n <${P}-input-text ${ITEM_TXT_CORE} value=\"{{ ^item.name, twoway }}\" on-change=\":host.changeHandler($event)\"></${P}-input-text>\r\n <div class=\"fieldgroup-prepend\"></div>\r\n </div>\r\n <div class=\"${PCSS}-fieldgroup\">\r\n <${P}-input-text ${ITEM_TXT_CORE} value=\"{{ ^item.value, twoway }}\" on-change=\":host.changeHandler($event)\"></${P}-input-text>\r\n <div class=\"fieldgroup-append\">\r\n <${P}-button class=\"${PCSS}-cell cols-2 flat delete\" hide=\"{{ :host.readonly }}\" command-name=\"delete\" command-argument=\"{{ ^index }}\"></${P}-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </template>\r\n <${P}-button class=\"flat add\" hide=\"{{ :host.readonly }}\" on-click=\":host._addItem($event)\"></${P}-button>\r\n</${P}-repeater>`\n })\n], PacemNameValueListElement);\nexport { PacemNameValueListElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nlet PacemPropertyPickerElement = class PacemPropertyPickerElement extends PacemBaseElement {\n get inputFields() {\n return [this._select];\n }\n toggleReadonlyView(readonly) {\n this._select.readonly = readonly;\n }\n onChange(evt) {\n return Utils.fromResult(this.value = this._select.value);\n }\n acceptValue(val) {\n this._select.value = val;\n }\n getViewValue(value) {\n return this._select.viewValue;\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Element.convert(attr);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._databind();\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._databind();\n break;\n }\n }\n }\n _databind() {\n const props = [], \n // recursive fn\n fnRec = (container, prop, name) => {\n const val = container[prop];\n if (typeof val === 'object' && val != null && !Utils.isArray(val)) {\n for (let key of Object.keys(val)) {\n const fullName = name + '.' + key;\n // add nested\n props.push(fullName);\n // try again (recursively)\n fnRec(val, key, fullName);\n }\n }\n };\n let src = this.target;\n if (!Utils.isNull(src)) {\n let observed = CustomElementUtils.getWatchedProperties(src);\n for (let obs of observed) {\n let name = obs.name;\n // add straight\n props.push(name);\n // dig nested stuff\n fnRec(src, name, name);\n }\n }\n this._select.datasource = props.sort();\n }\n};\n__decorate([\n ViewChild(P + '-select')\n], PacemPropertyPickerElement.prototype, \"_select\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemPropertyPickerElement.prototype, \"target\", void 0);\nPacemPropertyPickerElement = __decorate([\n CustomElement({\n tagName: P + '-property-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-select></${P}-select>`\n })\n], PacemPropertyPickerElement);\nexport { PacemPropertyPickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nlet PacemRadioElement = class PacemRadioElement extends PacemBaseElement {\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n constructor() {\n super();\n this._key = '_' + Utils.uniqueCode();\n }\n toggleReadonlyView(readonly) {\n this.span.hidden = !readonly;\n this._radio.hidden = /*this.label.hidden =*/ readonly;\n }\n get inputFields() {\n return [this._radio];\n }\n onChange(evt) {\n this.selected = this._radio.checked;\n const value = this.selected ? this._radio.value : undefined;\n return Utils.fromResult(value);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._radio.id = this._label.htmlFor = this._key;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'name':\n this._radio.name = val;\n break;\n case 'selected':\n (this._radio.checked = val) ?\n Utils.addClass(this, PCSS + '-selected')\n :\n Utils.removeClass(this, PCSS + '-selected');\n break;\n }\n }\n acceptValue(val) {\n this._radio.value = Utils.isNullOrEmpty(val) ? '' : val;\n }\n getViewValue(val) {\n if (!Utils.isNull(val))\n return this.caption;\n return '';\n }\n};\n__decorate([\n ViewChild(\"input[type=radio]\")\n], PacemRadioElement.prototype, \"_radio\", void 0);\n__decorate([\n ViewChild(\"label\")\n], PacemRadioElement.prototype, \"_label\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemRadioElement.prototype, \"span\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemRadioElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemRadioElement.prototype, \"selected\", void 0);\nPacemRadioElement = __decorate([\n CustomElement({\n tagName: P + '-radio',\n template: `<${P}-span class=\"${PCSS}-readonly ${PCSS}-radio\" text=\"{{ :host.caption }}\"></${P}-span><input type=\"radio\" class=\"${PCSS}-input\" /><label class=\"${PCSS}-label ${PCSS}-radio ${PCSS}-viewfinder\"><${P}-text text=\"{{ :host.caption }}\"></${P}-text></label>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemRadioElement);\nexport { PacemRadioElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PCSS, PropertyChangeEventName, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nlet PacemRadioListElement = class PacemRadioListElement extends PacemDataSourceElement {\n acceptValue(val) {\n // no need to implement\n }\n constructor() {\n super();\n this['key'] = '_' + Utils.uniqueCode();\n }\n get inputFields() {\n return [];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'disabled') {\n this._disable.model = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._disable.model = this.disabled;\n }\n toggleReadonlyView(readonly) {\n this._repeater.hidden = readonly;\n this._span.hidden = !readonly;\n }\n _selectionChanged(evt, index, item) {\n if (evt.detail.propertyName === 'selected' && evt.detail.currentValue === true) {\n this._selectedValue = this.mapEntityToValue(this.datasource[index]);\n this.changeHandler(evt);\n }\n }\n onChange(evt) {\n this.value = this._selectedValue;\n this.databind();\n return Utils.fromResult(this._selectedValue);\n }\n};\n__decorate([\n ViewChild(P + '-repeater')\n], PacemRadioListElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-data')\n], PacemRadioListElement.prototype, \"_disable\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemRadioListElement.prototype, \"_span\", void 0);\nPacemRadioListElement = __decorate([\n CustomElement({\n tagName: P + '-radio-list', template: `<${P}-repeater datasource=\"{{ :host.adaptedDatasource }}\">\r\n <ol class=\"${PCSS}-radio-list ${PCSS}-viewfinder\" pacem>\r\n <template>\r\n <li><${P}-radio disabled=\"{{ ::_disable.model || ^item.disabled }}\" name=\"{{ :host.key, once }}\" autobind=\"off\" caption=\"{{ ^item.viewValue }}\" value=\"{{ ^item.value }}\" selected=\"{{ :host.isDataSourceItemSelected(^item, :host.value) }}\"\r\non-focus=\":host.focusHandler($event)\" on-blur=\":host.focusHandler($event)\"\r\non-${PropertyChangeEventName}=\":host._selectionChanged($event, ^index, ^item)\"></${P}-radio></li>\r\n </template>\r\n </ol>\r\n</${P}-repeater><span class=\"${PCSS}-readonly ${PCSS}-radio\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span><${P}-data></${P}-data><${P}-content></${P}-content>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemRadioListElement);\nexport { PacemRadioListElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, PropertyConverters, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nlet PacemSelectElement = class PacemSelectElement extends PacemDataSourceElement {\n constructor() {\n super(...arguments);\n this.emptyOption = true;\n }\n toggleReadonlyView(readonly) {\n this._repeater.hidden = readonly;\n this._span.hidden = !readonly;\n }\n // no actual need to be idem-potent...\n // (take care in future)\n get inputFields() {\n return [this._select];\n }\n _manageDom(evt) {\n const args = evt.detail, item = args.item;\n let option = args.dom.find(o => o instanceof HTMLOptionElement);\n option.value = item.value;\n option.textContent = item.viewValue;\n option.disabled = item.disabled;\n option.selected = this.isDataSourceItemSelected(item);\n (Utils.isNullOrEmpty(option.value) ? Utils.addClass : Utils.removeClass).apply(this, [option, PCSS + '-watermark']);\n }\n onChange(evt) {\n let select = this._select, selectedIndex = select.selectedIndex, datasource = this.adaptedDatasource, item = selectedIndex >= 0 && datasource[selectedIndex], value;\n if (item != null) {\n value = item.value;\n }\n else\n value = undefined;\n return Utils.fromResult(this.value = value);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n // case 'required':\n case 'placeholder':\n case 'emptyOption':\n this.databind();\n break;\n }\n }\n buildAdaptedDatasource(ds = this.datasource) {\n let adapted = super.buildAdaptedDatasource(ds);\n if (adapted && this.emptyOption) {\n adapted.splice(0, 0, { viewValue: this.placeholder || '', value: undefined, data: undefined });\n }\n return adapted;\n }\n handleDatasourceMismatch(ds) {\n if (this.emptyOption) {\n super.handleDatasourceMismatch(ds);\n }\n else {\n // change value, since it does not exist in database and there's not null/empty fallback...\n if (Utils.isNullOrEmpty(ds)) {\n this.value = void 0;\n }\n else {\n this.value = ds[0].value;\n // ...you'll re-enter the acceptValue procedure with hopefully more luck.\n }\n }\n }\n ;\n acceptValue(val) {\n const ds = this.adaptedDatasource, item = ds && ds.filter(i => this.isDataSourceItemSelected(i, val));\n //let item = this.datasource && this.datasource.filter(i => this.isItemSelected(i));\n if (item && item.length == 1)\n this._select.selectedIndex = ds.indexOf(item[0]);\n else {\n this._select.value = undefined;\n let opts = this._select.options;\n if (opts.length > 0 && Utils.isNullOrEmpty(opts[0].value)) {\n this._select.selectedIndex = 0;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n //select.addEventListener(\"change\", this.changeHandler, false);\n var options = { capture: false, passive: false };\n this._select.addEventListener(\"wheel\", this.emitHandler, options);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._select)) {\n //select.removeEventListener(\"change\", this.changeHandler, false);\n var options = { capture: false, passive: false };\n this._select.removeEventListener(\"wheel\", this.emitHandler, options);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild('select')\n], PacemSelectElement.prototype, \"_select\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemSelectElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemSelectElement.prototype, \"_span\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSelectElement.prototype, \"emptyOption\", void 0);\nPacemSelectElement = __decorate([\n CustomElement({\n tagName: P + '-select', template: `<${P}-repeater datasource=\"{{ :host.adaptedDatasource }}\" on-${Components.RepeaterItemCreateEventName}=\":host._manageDom($event)\">\r\n <select class=\"${PCSS}-select ${PCSS}-viewfinder\">\r\n <template>\r\n <option></option>\r\n </template>\r\n </select>\r\n</${P}-repeater><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span><${P}-content></${P}-content>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemSelectElement);\nexport { PacemSelectElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { P, PCSS, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults, avoidHandler, Components, UI } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n// TODO: exploit 202x features like https://developer.mozilla.org/en-US/docs/Web/CSS/offset-path or https://developer.chrome.com/blog/anchor-positioning-api\nlet PacemSliderElement = class PacemSliderElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this.inputFields = [];\n this._dragHandler = (evt) => {\n evt.preventDefault();\n this._computeAndAssignValue(evt.detail.currentPosition.x, this.changePolicy !== 'end');\n };\n this._endHandler = (evt) => {\n evt.preventDefault();\n this._computeAndAssignValue(evt.detail.currentPosition.x, this.changePolicy === 'end');\n };\n this._startHandler = (evt) => {\n this._thumb.focus();\n };\n this._downHandler = (evt) => {\n const x = evt instanceof MouseEvent ? evt.clientX : evt.touches && evt.touches.length && evt.touches[0].clientX, trackSize = this._trackSize;\n if (!Utils.isNullOrEmpty(trackSize)) {\n this._computeAndAssignValue(x, true);\n }\n };\n this._keydownHandler = (evt) => {\n switch (evt.keyCode) {\n case 39: // right\n case 37: // left\n avoidHandler(evt);\n let forward = evt.keyCode === 39; // TODO: include rtl!\n let step = (typeof this.step !== 'number' ? 1.0 : this.step) * (forward ? 1 : -1);\n let cease = false;\n let ceaseFn = (evt) => {\n cease = true;\n window.removeEventListener('keyup', ceaseFn, false);\n Utils.removeClass(this, 'slider-keydown');\n };\n window.addEventListener('keyup', ceaseFn, false);\n Utils.addClass(this, 'slider-keydown');\n Utils.accelerateCallback(token => {\n if (!(token.cancel = cease)) {\n this._setValue(this.value + step);\n }\n });\n break;\n }\n };\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (evt.type === 'slide') {\n resolve(this.value = evt.detail);\n }\n resolve(this.value);\n });\n }\n _draw(val = this.value) {\n const trackSize = this._trackSize;\n if (Utils.isNull(trackSize)) {\n return;\n }\n const v = Utils.isNullOrEmpty(val) ? this.min : parseFloat(val);\n const percentage = Math.min(1, Math.max(0, (v - this.min) / (this.max - this.min)));\n this._progress.style.transform = `scale(${(percentage)}, 1)`;\n this._thumb.style.transform = `translateX(${Math.round(percentage * trackSize.width)}px)`;\n }\n _format(v) {\n const intl = this.format;\n if (!Utils.isNullOrEmpty(intl)) {\n return new Intl.NumberFormat(Utils.lang(this), intl).format(v);\n }\n // fallback\n let sv = '-';\n if (!Utils.isNull(v)) {\n sv = v.toLocaleString();\n }\n let evt = new CustomEvent(\"formatvalue\", { detail: { value: v } });\n this.dispatchEvent(evt);\n return Utils.isNull(evt.detail.output) ? sv : evt.detail.output;\n }\n acceptValue(val) {\n this._draw(val);\n }\n getViewValue(value) {\n return this._format(value);\n }\n convertValueAttributeToProperty(attr) {\n return parseFloat(attr);\n }\n toggleReadonlyView(readonly) {\n this._thumb.hidden = readonly;\n const css = 'cursor-pointer';\n if (readonly) {\n Utils.removeClass(this._max, css);\n Utils.removeClass(this._min, css);\n }\n else {\n Utils.addClass(this._max, css);\n Utils.addClass(this._min, css);\n }\n }\n _setTrackSize(evt) {\n const size = evt.detail;\n this._trackSize = { x: size.left, y: size.top, width: size.width, height: size.height };\n this._draw(this.value);\n }\n _computeAndAssignValue(x, triggerChange) {\n if (this.readonly || this.disabled) {\n return;\n }\n // constraint to track size to compute the slider value\n const constraint = this._trackSize, step = this.step;\n let perc = (x - constraint.x) / constraint.width;\n let v = (this.max - this.min) * perc + this.min;\n if (typeof step === 'number') {\n v = Math.round(v / step) * step;\n }\n if (triggerChange) {\n this._setValue(v);\n }\n else {\n this._draw(v);\n }\n }\n _setValue(v) {\n if (isNaN(v) || Utils.isNull(v)) {\n // keep in sync with pacem-input-number logic (TODO: centralize code, this is a fix)\n // cast NaN to undefined\n v = undefined;\n }\n else {\n if (!isNaN(this.min) && v < this.min) {\n v = this.min;\n }\n if (!isNaN(this.max) && v > this.max) {\n v = this.max;\n }\n }\n this.changeHandler(new CustomEvent('slide', { detail: v }));\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('mousedown', this._downHandler, false);\n this.addEventListener('touchstart', this._downHandler, { passive: false, capture: false });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._dragger.addEventListener(UI.DragDropEventType.Init, this._startHandler, false);\n this._dragger.addEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n this._dragger.addEventListener(UI.DragDropEventType.End, this._endHandler, false);\n this._thumb.addEventListener('keydown', this._keydownHandler, false);\n this._min.text = this._format(this.min);\n this._max.text = this._format(this.max);\n // balloon\n const balloon = this._shellProxy.dom[0];\n if (!Utils.isNull(balloon)) {\n balloon.target = this._thumb;\n balloon.options = {\n trigger: ComponentsUI.UI.BalloonTrigger.Focus,\n trackPosition: true,\n position: ComponentsUI.UI.BalloonPosition.Top,\n align: ComponentsUI.UI.BalloonAlignment.Center,\n behavior: ComponentsUI.UI.BalloonBehavior.Tooltip,\n hoverDelay: 0, hoverTimeout: 0\n };\n this._syncThumbLabel();\n }\n //\n this._thumb.tabIndex = 0;\n }\n _syncThumbLabel(thumbLabel = this.thumbLabel) {\n const balloon = this._shellProxy.dom[0];\n (thumbLabel ? Utils.addClass : Utils.removeClass).apply(this, [this, 'slider-thumblabel']);\n balloon.disabled = !thumbLabel;\n }\n disconnectedCallback() {\n this.removeEventListener('mousedown', this._downHandler, false);\n this.removeEventListener('touchstart', this._downHandler, { capture: false });\n if (!Utils.isNull(this._dragger)) {\n this._dragger.removeEventListener(UI.DragDropEventType.End, this._endHandler, false);\n this._dragger.removeEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n this._dragger.removeEventListener(UI.DragDropEventType.Init, this._startHandler, false);\n }\n if (!Utils.isNull(this._thumb)) {\n this._thumb.removeEventListener('keydown', this._keydownHandler, false);\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'thumbLabel':\n this._syncThumbLabel(val);\n break;\n case 'min':\n case 'max':\n if (!Utils.isNull(this._max) && !Utils.isNull(this._min)) {\n this._min.text = this._format(this.min);\n this._max.text = this._format(this.max);\n }\n this._setValue(this.value);\n this._draw();\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSliderElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSliderElement.prototype, \"max\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSliderElement.prototype, \"thumbLabel\", void 0);\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => {\n let v = parseFloat(attr);\n if (isNaN(v)) {\n return 'any';\n }\n return v;\n }, convertBack: (v) => (v || '').toString()\n }\n })\n], PacemSliderElement.prototype, \"step\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemSliderElement.prototype, \"changePolicy\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemSliderElement.prototype, \"format\", void 0);\n__decorate([\n ViewChild(`.slider-track`)\n], PacemSliderElement.prototype, \"_track\", void 0);\n__decorate([\n ViewChild(`.slider-progress`)\n], PacemSliderElement.prototype, \"_progress\", void 0);\n__decorate([\n ViewChild(`.slider-thumb`)\n], PacemSliderElement.prototype, \"_thumb\", void 0);\n__decorate([\n ViewChild(`${P}-text[min]`)\n], PacemSliderElement.prototype, \"_min\", void 0);\n__decorate([\n ViewChild(`${P}-text[max]`)\n], PacemSliderElement.prototype, \"_max\", void 0);\n__decorate([\n ViewChild(`${P}-drag-drop`)\n], PacemSliderElement.prototype, \"_dragger\", void 0);\n__decorate([\n ViewChild(`${P}-shell-proxy`)\n], PacemSliderElement.prototype, \"_shellProxy\", void 0);\nPacemSliderElement = __decorate([\n CustomElement({\n tagName: P + '-slider',\n template: `<div class=\"${PCSS}-viewfinder ${PCSS}-slider\"><${P}-text text=\"{{ :host._format(:host.min) }}\" min></${P}-text>\r\n <div class=\"slider-track\"><div class=\"slider-progress\"></div></div>\r\n <${P}-panel class=\"${PCSS}-clickable slider-thumb\" behaviors=\"{{ [::_dragger] }}\">\r\n <div class=\"thumb-label\"></div>\r\n </${P}-panel>\r\n <${P}-text text=\"{{ :host._format(:host.max) }}\" max></${P}-text>\r\n <div class=\"slider-footer\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></div>\r\n </div>\r\n<${P}-drag-drop lock-timeout=\"0\"></${P}-drag-drop><${P}-resize watch-position=\"true\" on-${Components.ResizeEventName}=\":host._setTrackSize($event)\" target=\"{{ ::_track }}\"></${P}-resize>\r\n<${P}-shell-proxy><${P}-balloon class=\"text-center\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-balloon></${P}-shell-proxy>\r\n`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemSliderElement);\nexport { PacemSliderElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomTypedEvent, CustomElement, Watch, ViewChild, Defaults, PCSS, P, Components, PropertyConverters, Utils, avoidHandler, Logging, CustomElementUtils } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nclass SuggestionSelectEvent extends CustomTypedEvent {\n constructor(value) {\n super('suggestionselect', { selectedValue: value });\n }\n}\nconst BALLOON_POPUP_DELAY = 100;\nconst BALLOON_POPOUT_DELAY = 0;\nlet PacemSuggestElement = class PacemSuggestElement extends PacemDataSourceElement {\n constructor() {\n super(...arguments);\n this._toggleBtnHandler = (evt) => {\n evt.preventDefault();\n if (!this.disabled) {\n this._balloon.toggle();\n }\n };\n this._clearBtnHandler = (evt) => {\n evt.preventDefault();\n this.hint = this._input.value = '';\n this.value = void 0;\n this._focus(null);\n this.changeHandler(new SuggestionSelectEvent(null));\n };\n this._balloonPopupHandler = (evt) => {\n Utils.addClass(this._btnArrow, 'rotate-180');\n };\n this._balloonPopoutHandler = (evt) => {\n Utils.removeClass(this._btnArrow, 'rotate-180');\n };\n this._inputHandler = (evt) => {\n switch (evt.keyCode) {\n case 9 /*tab*/:\n case 13 /*enter*/:\n break;\n default:\n this._focus(null);\n this.hint = this._input.value;\n this.changeHandler(new SuggestionSelectEvent(null));\n break;\n }\n };\n this._keyupHandler = (evt) => {\n if (this.#keyupManaged) {\n avoidHandler(evt);\n this.#keyupManaged = false;\n }\n };\n this._focusHandler = (evt) => {\n if (this.preventFocus) {\n // manage the balloon toggle manually (since focus won't be dispatched)\n evt.preventDefault();\n const balloon = this._balloon;\n if (!balloon.visible) {\n this.popup();\n }\n else {\n this.popout();\n }\n }\n const actualHint = this._input.value;\n if (this.viewValue != actualHint) {\n this._databind();\n }\n // now just lean on the balloon's trigger, it will popup eventually...\n };\n this._blurHandler = (evt) => {\n this._undo();\n };\n this.#keyupManaged = false;\n this._keydownHandler = (evt) => {\n var managed = false;\n if (Utils.isNull(this.#selectedItem)) {\n const el = this._findFirstAvailableListItem();\n if (!Utils.isNull(el)) {\n switch (evt.keyCode) {\n case 40: /*arrow down*/\n //case 9: /*tab*/\n //case 13: /* enter */ \n avoidHandler(evt);\n this._focus(el);\n break;\n case 13: /* enter */\n avoidHandler(evt);\n managed = true;\n if (this.#datasource.length === 1) {\n this._select(el);\n }\n else {\n this._focus(el);\n }\n break;\n }\n }\n }\n else {\n var li = this.#selectedItem, cursor = li, target;\n const skipPredicate = (e) => !Utils.isNull(e) && e.localName === 'li' && e.dataset['pacemDisabled'] === 'true', matchPredicate = (e) => !Utils.isNull(e) && e.localName === 'li' && e.dataset['pacemDisabled'] !== 'true';\n switch (evt.keyCode) {\n case 38 /*arrow up*/:\n avoidHandler(evt);\n do {\n cursor = cursor.previousElementSibling;\n if (matchPredicate(cursor)) {\n target = cursor;\n break;\n }\n } while (skipPredicate(cursor));\n target ??= li;\n break;\n case 40 /*arrow down*/:\n avoidHandler(evt);\n do {\n cursor = (cursor.nextElementSibling);\n if (matchPredicate(cursor)) {\n target = cursor;\n break;\n }\n } while (skipPredicate(cursor));\n target ??= li;\n break;\n case 27 /*esc*/:\n avoidHandler(evt);\n this._undo();\n this.popout();\n break;\n case 9 /*tab*/:\n case 13 /*enter*/:\n // case 32 /*space-bar*/:\n avoidHandler(evt);\n managed = true;\n this._select();\n break;\n }\n this._focus(target);\n this.#keyupManaged = managed;\n }\n };\n this._selectHandler = (evt) => {\n avoidHandler(evt);\n this._select(evt.currentTarget);\n };\n }\n get inputFields() {\n return [this._input];\n }\n acceptValue(val) {\n if ( /*!this._isTyping && */(this.allowNew || !Utils.isNullOrEmpty(this.datasource))) {\n this._input.value = this.getViewValue(val) || (this._isTyping ? this._input.value : '');\n }\n }\n getViewValue(val) {\n var superValue = super.getViewValue(val);\n if (Utils.isNullOrEmpty(superValue) && this.allowNew && !Utils.isNullOrEmpty(val)) {\n superValue = this.mapEntityToViewValue(val);\n }\n return superValue;\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n // change triggered elsewhere... (see _afterSelectHandler)\n if (evt.type === 'suggestionselect') {\n const val = evt.detail.selectedValue;\n this.value = val;\n if (val) {\n this.popout();\n }\n resolve(val);\n }\n else {\n // keep the current value\n resolve(this.value);\n }\n });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setDropdownMode();\n this._setupItemTemplate();\n var balloon = this._createBalloon();\n balloon.appendChild(this._repeater);\n this._checkBalloon(balloon);\n const shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(balloon);\n this._balloon = balloon;\n this._input.addEventListener('mousedown', this._focusHandler, false);\n this._input.addEventListener('keydown', this._keydownHandler, false);\n this._input.addEventListener('keyup', this._keyupHandler, false);\n this._input.addEventListener('focus', this._focusHandler, false);\n this._input.addEventListener('blur', this._blurHandler, false);\n this._input.addEventListener('input', this._inputHandler, false);\n this._btnClear.addEventListener('mousedown', this._clearBtnHandler, false);\n this._btnArrow.addEventListener('mousedown', this._toggleBtnHandler, false);\n this._databind();\n this._syncButtons();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (Utils.isNull(this._balloon)) {\n return;\n }\n const typing = this._isTyping;\n switch (name) {\n case 'adaptedDatasource':\n if (!Utils.isNullOrEmpty(val)) {\n if (!typing) {\n this._input.value = this.getViewValue(this.value);\n }\n else {\n this.popup();\n }\n }\n else {\n this.popout();\n }\n break;\n case 'hint':\n if (!typing && val !== this._input.value) {\n this._input.value = val;\n this.#selectedItem = null;\n }\n break;\n case 'readonly':\n // overrides default behavior: attribute synchronization (see `PacemBaseElement` in types.ts)\n this._setDropdownMode();\n // then fall below\n case 'disabled':\n case 'value':\n this._checkBalloon();\n break;\n case 'itemtemplate':\n if (!first) {\n this._setupItemTemplate();\n }\n break;\n case 'allowTyping':\n if (!first) {\n this._setDropdownMode();\n }\n break;\n }\n if (['adaptedDatasource', 'hint', 'value'].indexOf(name) >= 0) {\n this._databind();\n }\n if (['allowTyping', 'value', 'hint'].indexOf(name) >= 0) {\n this._syncButtons();\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._balloon)) {\n this._balloon.removeEventListener('popup', this._balloonPopupHandler, false);\n this._balloon.removeEventListener('popout', this._balloonPopoutHandler, false);\n this._balloon.remove();\n }\n if (!Utils.isNull(this._input)) {\n this._input.removeEventListener('mousedown', this._focusHandler, false);\n this._input.removeEventListener('focus', this._focusHandler, false);\n this._input.removeEventListener('blur', this._blurHandler, false);\n this._input.removeEventListener('keydown', this._keydownHandler, false);\n this._input.removeEventListener('keyup', this._keyupHandler, false);\n this._input.removeEventListener('input', this._inputHandler, false);\n }\n if (!Utils.isNull(this._btnClear)) {\n this._btnClear.removeEventListener('mousedown', this._clearBtnHandler, false);\n }\n if (!Utils.isNull(this._btnArrow)) {\n this._btnArrow.addEventListener('mousedown', this._toggleBtnHandler, false);\n }\n super.disconnectedCallback();\n }\n #datasource;\n _databind() {\n if (!Utils.isNull(this._repeater)) {\n const ds = this.#datasource = this._filter(this.adaptedDatasource, this._input.value);\n this._repeater.datasource = ds;\n }\n }\n _syncButtons() {\n if (!Utils.isNull(this._btnArrow)) {\n // hide=\"{{ !$pacem.isNullOrEmpty(:host.hint || :host.value) || :host.allowTyping !== false }}\"\n this._btnArrow.hide = this.allowTyping !== false || !Utils.isNullOrEmpty(this._input.value || this.value);\n }\n if (!Utils.isNull(this._btnClear)) {\n // hide=\"{{ $pacem.isNullOrEmpty(:host.hint || :host.value) }}\"\n this._btnClear.hide = this.readonly || Utils.isNullOrEmpty(this._input.value || this.value);\n }\n }\n get _isTyping() {\n return Utils.is(this._input, ':focus'); // && this.viewValue !== this._input.value;\n }\n _undo() {\n this._focus(null);\n this.hint = this._input.value = this.getViewValue(this.value) || '';\n }\n _findFirstAvailableListItem() {\n var el;\n if (this._balloon.visible === true && !Utils.isNull(el = this._repeater.querySelector('ol > li'))) {\n while (!Utils.isNull(el) && el.dataset['pacemDisabled'] === 'true' && el.localName === 'li') {\n el = el.nextElementSibling;\n }\n }\n return el;\n }\n #keyupManaged;\n _setDropdownMode(allowTyping = this.allowTyping) {\n this._input.readOnly = !(allowTyping ?? true);\n }\n _setupItemTemplate() {\n if (this.itemtemplate instanceof HTMLTemplateElement) {\n const frag = this.itemtemplate.cloneNode(true).content;\n const tmpl = document.createElement('template');\n const li = document.createElement('li');\n li.append(frag);\n tmpl.content.appendChild(li);\n this._tmplProxy.target = tmpl;\n }\n else {\n this._tmplProxy.target = this._defaultTemplate;\n }\n }\n #selectedItem;\n _focus(el) {\n if (this.preventFocus) {\n return;\n }\n if (Utils.isNull(el)) {\n this.#selectedItem = null;\n return;\n }\n const siblings = el.parentElement.children;\n for (let j = 0; j < siblings.length; j++) {\n const item = siblings.item(j);\n if (item === el) {\n item.dataset['pacemFocused'] = 'true';\n this.#selectedItem = item;\n const input = this._input, viewValue = input.value = JSON.parse(item.dataset['pacemViewValue']);\n input.setSelectionRange(viewValue.length, viewValue.length);\n }\n else {\n delete item.dataset['pacemFocused'];\n }\n }\n }\n _select(el = this.#selectedItem) {\n const value = JSON.parse(el.dataset['pacemValue']), disabled = el.dataset['pacemDisabled'] === 'true';\n if (!disabled) {\n this.changeHandler(new SuggestionSelectEvent(value));\n }\n }\n _filter(ds, hint, value = this.value) {\n let datasource = ds || [];\n //if (!Utils.isNull(value)) {\n // datasource = datasource.filter(i => i.value == value);\n //} else \n if (!Utils.isNullOrEmpty(hint && hint.trim())) {\n const lowerHints = hint.toLowerCase().split(' ');\n let filtered = datasource.filter(i => {\n for (let lowerHint of lowerHints) {\n if (i.viewValue?.toLowerCase().indexOf(lowerHint) >= 0) {\n return true;\n }\n // check the whole 'data' object, just in case\n const filters = this.filterFields;\n if (!Utils.isNullOrEmpty(filters)) {\n const iData = i.data;\n if (typeof iData === 'object' && !Utils.isNullOrEmpty(iData)) {\n for (let filter of filters) {\n const filterStruct = filter.split('.');\n let j = 0;\n let value = iData;\n while (!Utils.isNull(value) && j < filterStruct.length) {\n value = value[filterStruct[j]];\n j++;\n }\n if (Utils.isNullOrEmpty(value)) {\n continue;\n }\n if (value.toString().toLowerCase().indexOf(lowerHint) >= 0) {\n return true;\n }\n }\n }\n }\n }\n return false;\n });\n const concatenate = this.allowNew\n // only concatenate on plain strings...\n && Utils.isNullOrEmpty(this.valueProperty)\n && Utils.isNullOrEmpty(this.textProperty)\n // ...and no matches are available\n && (Utils.isNullOrEmpty(filtered) || Utils.isNull(filtered.find(i => i.viewValue === hint)));\n datasource = concatenate ? [{ value: hint, viewValue: hint, data: hint }].concat(filtered) : filtered;\n }\n let retval = datasource;\n if (this.allowTyping !== false) {\n // max-suggestions enabled only when typing is allowed (default)\n retval = datasource.slice(0, this.maxSuggestions || 10);\n }\n //\n if (this._isTyping) {\n this.popup();\n }\n this._balloon.style.opacity = Utils.isNullOrEmpty(retval) ? '0' : '';\n this.log(Logging.LogLevel.Log, `${retval.length} dropdown suggestion(s), given hint '${hint}' and ${(ds || []).length} datasource items`);\n return retval;\n }\n _itemCreate(evt) {\n const li = evt.detail.dom.find(i => i instanceof HTMLLIElement);\n const item = evt.detail.item;\n const index = evt.detail.index;\n const disabled = item.disabled === true;\n li.tabIndex = disabled ? -1 : 0;\n li.dataset['pacemValue'] = JSON.stringify(item.value);\n li.dataset['pacemViewValue'] = JSON.stringify(item.viewValue);\n li.dataset['pacemDisabled'] = disabled.toString();\n li.addEventListener('mousedown', this._selectHandler, false);\n }\n _itemRemove(evt) {\n const li = evt.detail.dom.find(i => i instanceof HTMLLIElement);\n li.removeEventListener('mousedown', this._selectHandler, false);\n }\n toggleReadonlyView(readonly) {\n this.span.hidden = !readonly;\n this._input.hidden = readonly;\n if (readonly) {\n this._btnClear.hide = this._btnArrow.hide = true;\n }\n else {\n this._syncButtons();\n }\n }\n /*\n Balloon and repeater\n */\n popup(delay = BALLOON_POPUP_DELAY) {\n if (!Utils.isNullOrEmpty(this.adaptedDatasource) && Utils.isVisible(this)) {\n //console.log('Popping up from here...');\n this._balloon?.popup(delay);\n }\n }\n popout(delay = BALLOON_POPOUT_DELAY) {\n this.#selectedItem = null;\n this._balloon?.popout(delay);\n }\n _checkBalloon(balloon = this._balloon) {\n if (!Utils.isNull(balloon)) {\n const hasValue = !Utils.isNullOrEmpty(this.value) && !Utils.isNullOrEmpty(this._input.value) /* && Utils.isNullOrEmpty(this.hint)*/;\n balloon.disabled = hasValue || this.readonly || this.disabled || /* normalize to an actual boolean */ false; // || Pacem.Utils.isNullOrEmpty(this.adaptedDatasource);\n }\n }\n _createBalloon() {\n /*<${ P }-balloon target=\"{{ ::_input }}\" options=\"{ position: 'bottom', align: 'left', behavior: 'inert', hoverDelay: 0 }\"\ndisabled=\"{{ :host.readonly || Pacem.Utils.isNullOrEmpty(:host.adaptedDatasource) }}\">*/\n const balloon = document.createElement(P + '-balloon');\n Utils.addClass(balloon, 'suggest dropdown');\n balloon.options = {\n trackPosition: true,\n trigger: ComponentsUI.UI.BalloonTrigger.Focus,\n position: ComponentsUI.UI.BalloonPosition.VerticalAuto,\n size: ComponentsUI.UI.BalloonSizing.Match,\n align: ComponentsUI.UI.BalloonAlignment.Start,\n behavior: ComponentsUI.UI.BalloonBehavior.Menu, // UI.BalloonBehavior.Inert,\n hoverDelay: BALLOON_POPUP_DELAY, hoverTimeout: BALLOON_POPOUT_DELAY\n };\n balloon.addEventListener('popup', this._balloonPopupHandler, false);\n balloon.addEventListener('popout', this._balloonPopoutHandler, false);\n balloon.target = this._input;\n return balloon;\n }\n};\n__decorate([\n ViewChild('input[type=text]')\n], PacemSuggestElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemSuggestElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemSuggestElement.prototype, \"span\", void 0);\n__decorate([\n ViewChild(`template`)\n], PacemSuggestElement.prototype, \"_defaultTemplate\", void 0);\n__decorate([\n ViewChild(P + '-template-proxy')\n], PacemSuggestElement.prototype, \"_tmplProxy\", void 0);\n__decorate([\n ViewChild(`${P}-button[toggle]`)\n], PacemSuggestElement.prototype, \"_btnArrow\", void 0);\n__decorate([\n ViewChild(`${P}-button[clear]`)\n], PacemSuggestElement.prototype, \"_btnClear\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSuggestElement.prototype, \"hint\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSuggestElement.prototype, \"maxSuggestions\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemSuggestElement.prototype, \"allowTyping\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSuggestElement.prototype, \"preventFocus\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemSuggestElement.prototype, \"itemtemplate\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.StringArray })\n], PacemSuggestElement.prototype, \"filterFields\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSuggestElement.prototype, \"allowNew\", void 0);\nPacemSuggestElement = __decorate([\n CustomElement({\n tagName: P + '-suggest', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-relative\"><input type=\"text\" class=\"${PCSS}-input\" />\r\n<${P}-button clear tab-order=\"-1\"\r\nclass=\"button-flat ${PCSS}-anim anim-pop anim-sudden anim-quick pos-absolute absolute-right absolute-top display-block ${PCSS}-margin margin-0\" \r\n icon-glyph=\"highlight_off\"></${P}-button>\r\n<${P}-button \r\nclass=\"button-flat icon-rotate ${PCSS}-anim anim-pop anim-sudden anim-quick pos-absolute absolute-right absolute-top display-block ${PCSS}-margin margin-0\" \r\n icon-glyph=\"arrow_drop_down\" tab-order=\"-1\" toggle></${P}-button>\r\n</div>\r\n<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>\r\n<${P}-repeater on-${Components.RepeaterItemCreateEventName}=\":host._itemCreate($event)\" on-${Components.RepeaterItemRemoveEventName}=\":host._itemRemove($event)\">\r\n <ol>\r\n <${P}-template-proxy></${P}-template-proxy>\r\n </ol>\r\n</${P}-repeater><${P}-content></${P}-content>\r\n<template>\r\n <li><${P}-span content=\"{{ $pacem.highlight(^item.viewValue, :host.hint) }}\"></${P}-span></li>\r\n</template>`\n })\n], PacemSuggestElement);\nexport { PacemSuggestElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PCSS, Components, CustomTypedEvent, PropertyConverters, Watch, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nclass TagRemoveEvent extends CustomTypedEvent {\n constructor(value) {\n super('tagremove', { index: value });\n }\n}\nclass TagAddEvent extends CustomTypedEvent {\n constructor(value) {\n super('tagadd', { value: value });\n }\n}\nlet PacemTagElement = class PacemTagElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'readonly':\n let readonly = !!val;\n (readonly ? Utils.addClass : Utils.removeClass)(this, 'tag-readonly');\n this._btn.disabled = this._btn.hide = readonly;\n break;\n case 'tag':\n Utils.removeClass(this, 'tag-out');\n break;\n }\n }\n _remove() {\n const tag = this;\n Utils.addClass(tag, 'tag-out');\n Utils.addAnimationEndCallback(tag, () => {\n this.dispatchEvent(new Event(\"remove\"));\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTagElement.prototype, \"tag\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemTagElement.prototype, \"readonly\", void 0);\n__decorate([\n ViewChild(P + '-button')\n], PacemTagElement.prototype, \"_btn\", void 0);\nPacemTagElement = __decorate([\n CustomElement({\n tagName: P + '-tag', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-text text=\"{{ :host.tag }}\"></${P}-text>\r\n <${P}-button on-click=\":host._remove()\"></${P}-button>`\n })\n], PacemTagElement);\nexport { PacemTagElement };\nlet PacemTagsElement = class PacemTagsElement extends PacemDataSourceElement {\n constructor() {\n super(true);\n this.inputFields = [];\n }\n toggleReadonlyView(readonly) {\n this._suggest.readonly = readonly;\n this.querySelector('.tag-new').hidden = readonly;\n }\n _tagRemove(ndx) {\n this.changeHandler(new TagRemoveEvent(ndx));\n }\n _tagAdd(v) {\n this.changeHandler(new TagAddEvent(v));\n // after the - just in case - assignment => reset the suggest component\n }\n handleDatasourceMismatch() {\n // do nothing!\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n case 'textProperty':\n this._suggest[name] = val;\n break;\n case 'valueProperty':\n // DON't pass the value-property to the suggest\n if (!Utils.isNullOrEmpty(val)) {\n throw `Cannot set 'valueProperty' on ${this.constructor.name}s.`;\n }\n break;\n case 'value':\n this._tags.datasource = val;\n break;\n }\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n switch (evt.type) {\n case 'tagremove':\n this._justAddedIndex = -1;\n const trev = evt, ndxrev = trev.detail.index, \n // manipulate a copy of the array (to preserve the originalValue)\n valrev = Utils.clone(this.value);\n const trunk2 = valrev.splice(ndxrev + 1), trunk1 = valrev.splice(0, ndxrev);\n resolve(this.value = trunk1.concat(trunk2));\n break;\n case 'tagadd':\n const value = evt.detail.value, \n // manipulate a copy of the array (to preserve the originalValue)\n valadd = Utils.clone(this.value);\n if ( // no empty items\n !Utils.isNullOrEmpty(value)\n // no duplicated items\n && (this.allowDuplicates || Utils.isNullOrEmpty(valadd && valadd.find(i => this.mapEntityToViewValue(i) == this.mapEntityToViewValue(value))))) {\n let newvalue = (valadd || []).concat([value]);\n resolve(this.value = newvalue);\n this._justAddedIndex = this.value.length - 1;\n setTimeout(() => {\n this._suggest.focus();\n }, 250);\n // this will allow to accept the hint change...\n this._suggest.blur();\n this._suggest.hint = '';\n this._suggest.reset();\n }\n break;\n default:\n resolve(this.value);\n break;\n }\n });\n }\n acceptValue(val) {\n // no need to implement\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTagsElement.prototype, \"hint\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemTagsElement.prototype, \"allowDuplicates\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemTagsElement.prototype, \"allowNew\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTagsElement.prototype, \"_justAddedIndex\", void 0);\n__decorate([\n ViewChild(P + '-suggest')\n], PacemTagsElement.prototype, \"_suggest\", void 0);\n__decorate([\n ViewChild(P + '-repeater.' + PCSS + '-tags')\n], PacemTagsElement.prototype, \"_tags\", void 0);\nPacemTagsElement = __decorate([\n CustomElement({\n tagName: P + '-tags', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater class=\"${PCSS}-tags\">\r\n <ul class=\"${PCSS}-tags ${PCSS}-viewfinder ${PCSS}-list list-unstyled list-inline\">\r\n <template>\r\n <li class=\"${PCSS}-tag\">\r\n <${P}-tag on-remove=\":host._tagRemove(^index)\" css-class=\"{{ { 'tag-in': :host._justAddedIndex === ^index } }}\" tag=\"{{ :host.mapEntityToViewValue(^item) }}\" readonly=\"{{ :host.readonly }}\"></${P}-tag>\r\n </li>\r\n </template>\r\n <li class=\"tag-new\">\r\n <${P}-suggest logger=\"{{ :host.logger }}\" placeholder=\"{{ :host.placeholder }}\" allow-new=\"{{ :host.allowNew }}\" class=\"${PCSS}-tags\" on-change=\":host._tagAdd($this.value)\" hint=\"{{ :host.hint, twoway }}\">\r\n <${P}-content></${P}-content>\r\n </${P}-suggest>\r\n </li>\r\n </ul>\r\n</${P}-repeater>`\n })\n], PacemTagsElement);\nexport { PacemTagsElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nlet PacemTextAreaElement = class PacemTextAreaElement extends PacemTextualInputElement {\n constructor() {\n super(...arguments);\n this.rows = 5;\n this.cols = 50;\n }\n /** @override */\n get preventKeyboardSubmit() {\n return true;\n }\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._input.hidden = readonly;\n }\n get inputFields() {\n return [this._input];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'rows'\n || name === 'cols') {\n this.inputField.setAttribute(name, val);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTextAreaElement.prototype, \"rows\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTextAreaElement.prototype, \"cols\", void 0);\n__decorate([\n ViewChild('textarea')\n], PacemTextAreaElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemTextAreaElement.prototype, \"_span\", void 0);\nPacemTextAreaElement = __decorate([\n CustomElement({ tagName: P + '-textarea', template: `<textarea class=\"${PCSS}-input\" pacem></textarea>${CHAR_COUNTER_CHILD}<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemTextAreaElement);\nexport { PacemTextAreaElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyConverters, preventDefaultHandler } from '@pacem/pacem-core';\nimport { Components } from '@pacem/pacem-ui';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nlet PacemMarkdownTextAreaElement = class PacemMarkdownTextAreaElement extends PacemTextualInputElement {\n constructor(_md = new Components.UI.MarkdownService()) {\n super();\n this._md = _md;\n this.rows = 5;\n this.cols = 50;\n this._keydownHandler = (evt) => {\n if (evt.keyCode === 9 /* tab */) {\n const input = this.input, value = input.value;\n var ndx = input.selectionStart;\n input.value = value.substr(0, ndx) + ' ' + value.substr(ndx);\n preventDefaultHandler(evt);\n }\n };\n }\n toggleReadonlyView(readonly) {\n this.input.hidden = readonly;\n }\n /** @override */\n get preventKeyboardSubmit() {\n return true;\n }\n get inputFields() {\n return [this.input];\n }\n getViewValue(val) {\n return this._md.toHtml(val);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'rows'\n || name === 'cols') {\n this.inputField.setAttribute(name, val);\n }\n else if (name == 'viewValue') {\n this._markdown.innerHTML = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.input.addEventListener(\"keydown\", this._keydownHandler, false);\n }\n disconnectedCallback() {\n this.input &&\n this.input.removeEventListener(\"keydown\", this._keydownHandler, false);\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMarkdownTextAreaElement.prototype, \"rows\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMarkdownTextAreaElement.prototype, \"cols\", void 0);\n__decorate([\n ViewChild('textarea')\n], PacemMarkdownTextAreaElement.prototype, \"input\", void 0);\n__decorate([\n ViewChild(`div.${PCSS}-readonly`)\n], PacemMarkdownTextAreaElement.prototype, \"_markdown\", void 0);\nPacemMarkdownTextAreaElement = __decorate([\n CustomElement({ tagName: P + '-textarea-markdown', template: `<textarea class=\"${PCSS}-input\" pacem></textarea>${CHAR_COUNTER_CHILD}<div class=\"${PCSS}-readonly ${PCSS}-markdown\"></div>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemMarkdownTextAreaElement);\nexport { PacemMarkdownTextAreaElement };\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["FieldChangeEventName","FieldChangeEvent","CustomTypedEvent","constructor","args","super","bubbles","cancelable","ApiParameterType","ApiParserBase","load","url","headers","resp","fetch","mode","credentials","json","this","parse","e","$refPattern","ApiMethod","Net","HttpMethod","SwaggerParser","_findDefinitionName","definitionHashTag","arr","exec","length","content","j","JSON","definitions","def","baseUrl","host","schemes","basePath","parsed","console","warn","retval","endpoints","path","paths","src","method","Get","Delete","Post","Put","op","toLowerCase","endpoint","_tryGetEndpoint","push","response","_tryGetResponse","parameters","_tryGetParameters","_translateType","type","format","Number","Boolean","Datetime","Binary","String","operation","map","p","pb","name","required","schema","pbody","Object","fullType","$ref","meta","ok","responses","items","hasOwnProperty","OpenApi3Parser","_gatherDefinitions","Map","components","schemas","toUpperCase","_convertToApiParameters","output","memoizer","_findDefinition","has","get","set","Utils","isNullOrEmpty","mime","_openApi3","_swagger","manifest","rec","__decorate","decorators","target","key","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","DefaultFormLocalizationOptions","display","displayProp","prop","dictionary","validator","validatorType","validatorTypeIndex","commandTooltip","commandName","Forms","localizeMetadata","metadata","options","_localizeMetadata","prefix","extend","props","isArray","pre","property","watermark","description","commands","command","tooltip","validators","index","errorMessage","Transformer","FormSubmitEventName","FormResetEventName","FormSubmitEvent","FormResetEvent","Event","EMITTABLE_EVENT_TYPES","CommandEventName","SUBMIT_CANCELLATION_TOKEN","FormEventEmitter","_element","_itemEmitHandler","handle","evt","CustomEvent","detail","commandArgument","start","forEach","t","addEventListener","stop","removeEventListener","PacemFormRelevantElement","Components","PacemElement","viewActivatedCallback","form","CustomElementUtils","findAncestorOfType","PacemFormElement","Watch","converter","PropertyConverters","Element","prototype","_emitter","_buttons","submit","undefined","reset","fetching","_keyupHandler","keyCode","shiftKey","ctrlKey","altKey","metaKey","btn","currentTarget","querySelector","P","isNull","isVisible","disabled","click","_submit","fetcher","avoidHandler","Promise","all","_validateAllFields","then","findIndex","f","_","setPristine","_reset","resetEvt","dispatchEvent","defaultPrevented","field","_fields","fld","PacemModelElement","_subForms","_validators","_fieldPropertyChanged","propertyName","model","_checkFieldValidity","_checkDirtyness","_checkValidity","_validatorPropertyChanged","watch","invalid","valid","suddenValidation","resettable","propertyChangedCallback","old","val","first","autogenerate","_buildUpForm","registerSubForm","disconnectedCallback","unregisterSubForm","uniqueCode","uid","id","f_uid","document","createElement","className","PCSS","setAttribute","html","innerHTML","appendChild","lastElementChild","firstElementChild","PropertyChangeEvent","currentValue","oldValue","formButtons","resolve","reject","_submitInternally","result","err","deferred","DeferPromise","defer","entity","entityName","fields","_getAllFields","submitEvt","fnSuccess","FetchSuccessEventName","FetchErrorEventName","fnError","Fetcher","isEmpty","FetchResultEventName","fnResult","success","status","fail","error","fnPropChange","addClass","removeClass","PropertyChangeEventName","action","PacemFetchElement","autofetch","promise","accumulator","apply","state","setDirty","names","_setAs","dirty","hasNames","indexOf","_validateField","validate","b","some","b0","setAsDirty","tasks","sub","Array","log","Logging","LogLevel","Log","v","value","results","ndx","splice","registerField","container","unregisterField","HTMLElement","check","current","registerValidator","unregisterValidator","_unregisterValidator","emit","Json","reflectBack","Debounce","CustomElement","tagName","ORIGINAL_VALUE_FIELD","_registerFieldConditionally","_setAsOriginalValue","hasAttribute","getAttribute","formId","viewValue","getViewValue","n","originalValue","getAttachedPropertyValue","setAttachedPropertyValue","convert","attr","element","convertValueAttributeToProperty","convertBack","toString","PacemBaseElement","focusHandler","focusFieldgroup","add","hasClass","parentElement","_preFocusValue","FocusEvent","changeHandler","onChange","compareValuePropertyValues","fieldName","firstChange","keydownHandler","stopPropagationHandler","keyupHandler","blur","preventKeyboardSubmit","DefaultComparer","inputField","inputFields","removeAttribute","acceptValue","toggleReadonlyView","aria","attributes","registerInputFields","passive","capture","unregisterInputFields","readonly","label","textContent","remove","focus","PacemItemElement","findContainer","findAncestor","PacemItemsContainerBaseElement","register","unregister","item","flag","PacemDataItemElement","num","parseFloat","isNaN","date","Dates","isDate","PacemDataSourceElement","multipleChoice","_itemPropertyChangedHandler","databind","buildAdaptedDatasource","ds","datasource","mapEntityToItem","adaptedDatasource","filter","isDataSourceItemSelected","handleDatasourceMismatch","isItemSelected","mapEntityToValue","compareBy","find","found","valueProperty","mapEntityToViewValue","textProperty","data","disabledProp","disabledProperty","cancelAnimationFrame","_handle","requestAnimationFrame","_handleItems","join","split","trim","CHAR_COUNTER_CHILD","PacemCharCountElement","_isValid","l","_length","minlength","maxlength","s","shadow","Defaults","USE_SHADOW_ROOT","template","EXECUTECOMMAND_NAME","EMPTY_CONTENT","ContenteditableChangeEvent","PacemContenteditableCommandElement","_containerPropChangeHandler","containerPropertyChangedCallback","execCommand","me","connectedCallback","cnt","contentElement","range","isFileCommand","obj","isElement","node","nodeType","Node","ELEMENT_NODE","PacemContenteditableElement","_focusHandler","_ensureInteractiveMarkup","_blurHandler","_container","cleanUp","_checkChangedHandler","_pasteHandler","preventDefault","files","clipboardData","cmd","pasteCallback","plainText","getData","replace","frag","createContextualFragment","deleteContents","insertNode","_shortcutHandler","_inputHandler","_fixRangeMarkup","inputHtml","history","_updateHistory","_fireHistoryChange","_selectionChangeHandler","selection","getSelection","anchorNode","contains","getRangeAt","cloneRange","h","_dashboard","hidden","CustomEventUtils","isInstanceOf","fnDownwards","childNodes","replaceWith","from","fn","commonAncestorContainer","workspace","nodes","childCount","closeRange","setEndAfter","surroundContents","previousSibling","createRange","setStartBefore","HistoryService","ViewChild","PacemContenteditableButtonCommandElement","active","getTooltip","altText","shortcut","keyboardShortcut","hint","CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE","PacemContenteditableHistoryCommandElement","canRedo","redo","canUndo","undo","isRelevant","icon","PacemContenteditableLinkCommandElement","ContenteditableUtils","findSurroundingNode","HTMLAnchorElement","arg","regex","test","outerHTML","link","window","prompt","insertPicture","blob","blobToDataURL","loadImage","img","pic","tabIndex","PacemContenteditableImageCommandElement","_setBehaviorHandler","select","_disposeBehaviorHandler","startsWith","querySelectorAll","_rescale","_rescaleImg","_disposeContainer","_initContainer","_rangeChangeCallback","file","_file","onchange","rect","targetRect","style","width","height","observer","collapsed","startContainer","endContainer","startOffset","endOffset","el","HTMLPictureElement","_enhancePictureElement","_downgradePictureElement","ContenteditableDOMObserver","removed","dispose","KnownExecCommand","getKnownCommandIcon","lower_cmd","substr","getKnownCommandFilters","argument","PacemContenteditableExecCommandElement","_matchRelevance","filters","cmdfilter","island","testInertElementWrapping","wrapper","extractContents","append","newChild","replaceChild","isRoot","HTMLDivElement","contentEditable","mutationCallback","selector","callback","mutationObserver","MutationObserver","list","entry","added","addedNodes","removedNodes","observe","subtree","childList","disconnect","getDefaultDashboard","DocumentFragment","toolbar0","separator0","toolbar1","bold","Bold","italic","Italic","underline","Underline","strike","StrikeThrough","ul","UnorderedList","ol","OrderedList","alignLeft","PacemContenteditableAlignCommandElement","align","alignCenter","alignRight","justify","separator1","toolbar2","arg1","parent","parentNode","findSurroundingBlockElement","isBlockElement","findSurroundingSiblingBlockElements","root","k","child","children","started","iNode","findContainingRootElements","range1","range2","collapse","nextElementSibling","getComputedStyle","inside","setStart","setEnd","removeAllRanges","addRange","copyAttributes","to","attrs","getAlignIcon","els","textAlign","elements","targetAlign","isPlaceholder","HTMLModElement","PacemContenteditablePlaceholderElement","ins","relevancy","normalizedDatasource","ph","placeholder","insertPlaceholder","_fillDropdown","_changeRelevancy","wraps","_dropdown","popout","definition","dd","_downgradePlaceholderElement","_enhancePlaceholderElement","PacemContenteditableWrapCommandElement","tagname","alreadyEl","elementsToWrap","repl","insertBefore","JsonOrStringConverter","PacemCalendarMonthPickerElement","Date","_getMonthLabel","m","year","getFullYear","toLocaleString","lang","month","_isThisMonth","viewYear","_isSelectedMonth","actual","parseDate","getMonth","_setMonth","header","buildMonthGrid","CalendarDateUnselectEvent","ComponentsUI","UI","DateSelectEvent","rangeFirstYear","y","PacemCalendarYearPickerElement","_getYearLabel","_isThisYear","_isSelectedYear","computed","_setYear","buildYearGrid","PacemCalendarPickerElement","viewmode","locked","_swipeHandler","direction","_next","_prev","_clearBtnHandler","_viewDate","_viewDateChangeHandler","_onViewDateChange","_popCalendarHandler","dateValue","_calendar","viewDate","_monthPicker","_yearPicker","offset","_input","dropdown","top","left","_hideCalendarHandler","composedPath","_hideCalendar","_proxy","dom","calendar","monthPicker","yearPicker","_monthLabel","_yearLabel","_rangeLabel","now","dayLabelFormatter","day","input","body","_clearButton","swiper","PacemSwipeElement","behaviors","findAncestorShell","_swiper","swipeIndex","_getHeaderLabel","dte","weekday","months","_jumpMonths","vd","addMonths","text","fy","addAnimationEndCallback","isReady","readOnly","_span","hide","dateVal","core","dold","dval","valueOf","Eval","buildCalendarHeader","StringOrBooleanPropertyConverter","PacemCheckboxElement","caption","_key","trueValue","falseValue","span","_checkbox","_label","selected","checked","fromResult","htmlFor","_synchronizeUi","PacemCheckboxListElement","_selectedUiItems","_disable","_repeater","_selectionChanged","uiItems","PacemChildFormPropagatorElement","PacemEventTarget","hasPropDefined","hasModelDefined","_synchronize","propagate","slice","PacemChildFormElement","_model","_modelToEntity","_entityToModel","_dragStart","size","floater","_dragEnd","_triggerChange","_itemCreate","subForms","localName","_itemChange","stringify","_deleteAt","srcEvent","_addItem","cloneFrom","clone","RepeaterItemCreateEventName","DragDropEventType","Start","End","DropBehavior","InsertChild","DragDataMode","Alias","PacemDatetimePickerElement","precision","_months","_dates","_a24","_a60","_years","hours","minutes","seconds","_yearel","_monthel","_dateel","_hourel","_minel","_secel","_allFields","today","min","max","leftPad","_disassembleDate","_setupYears","_buildupDates","_buildup","getDate","getHours","getMinutes","getSeconds","years","_computeValue","stopPropagation","monthvalue","dates","setHours","setMinutes","setSeconds","setMilliseconds","PacemBaseValidatorElement","triggerFormFieldValidation","easer","evaluate","BASIC_VALIDATOR_TEMPLATE","isValueEmpty","PacemRequiredValidatorElement","PacemRegexValidatorElement","pattern","RegExp","PacemLengthValidatorElement","PacemRangeValidatorElement","isFinite","PacemCompareValidatorElement","_prepareValuesForComparison","other","arranged","operator","PacemBinaryValidatorElement","maxSize","filename","PacemAsyncValidatorElement","_deferredToken","_evaluateResult","_fetcher","getApiResult","_fetch","params","request","as","serializedRequest","jsonSortStringify","lastRequest","returnLastResult","clearTimeout","_debouncer","setTimeout","PacemCustomValidatorElement","isValid","patternToString","source","PacemFormFieldElement","_md","MarkdownService","_entityPropertyChangeHandler","_labelClickHandler","getElementById","_field","_buildUpFetcher","_ensureBalloon","_buildUpCss","_buildUpLabel","_buildUpField","_balloon","_normalizeTooltip","extra","innerText","noBalloon","balloon","behavior","BalloonBehavior","Tooltip","trigger","BalloonTrigger","Hover","position","BalloonPosition","Top","hoverDelay","hoverTimeout","BalloonAlignment","Auto","toHtml","cssClass","cssClassAttr","css","cssAttr","vals","contentAttr","_isValueNullOrEmpty","_handleValueChange","camelToKebab","_adjustDependencyValue","toISOString","_broadcastFetchResult","_form","numericTagName","ui","autofocus","fetchData","fetchAttrs","disabledAttr","dependingClause","dependingDisabling","dependingParameters","dependsOn","depAttrs","hideAttr","isBindingAttribute","extractBindingAttributeExpression","parameterAttrs","pAttrs","parameterPairs","alias","propName","disablingClauses","empty","notEqual","hidingClauses","namesAndPaths","depends","path2","optional","clause","joinClauses","ne","emp","neByProp","dp","fns","spinStaticDatasourceAttr","fnKey","uiHint","Error","seedChildren","attrVal","quality","charCount","inputTransform","preventWheel","isComplexType","sourceUrl","verb","tags","itemValue","allowNew","allowDuplicates","itemtemplate","itmpl","isConnected","filterFields","ffields","maxSuggestions","calendarFormat","disabledRanges","dataType","uploadExtra","uploadUrl","parallelism","chunkSize","maxImageWidth","maxImageHeight","enum","dateFormat","defaultFormatOptions","currency","maximumFractionDigits","intl","step","intFormat","decimalFormat","functions","JsonFunctionConversion","Reference","lockItems","extraDom","prepend","disable","dependsOnValue","validatorElement","isKnownValidator","isValidatorFactory","lengthValidator","rangeValidator","maxNum","minNum","isDateTime","emailValidator","regexValidator","binaryValidator","filePattern","compareValidator","comparedToCore","toProperty","compareToAttr","asyncValidator","depOn","depend","extern","attrName","PacemGeolocateElement","_dragendHandler","_reverseGeocoder","_setupSuggest","_setupMapMarker","marker","sorted","sort","a","Maps","MapProjection","distanceBetween","altitude","_suggest","search","LatLng","isLatLng","any","pos1","Empty","pos2","equals","_datasource","fullAddress","_setup","_setupAdapters","_detachMarker","_disposeMarker","adapter","gc","_geocoder","rvgc","suggest","_createMarker","ComponentsMaps","PacemMapMarkerElement","draggable","address","HierarchyChangeEvent","HIERARCHYITEM_CSSCLASS","HIERARCHYITEM_CSSCLASS_FULL","HIERARCHYITEM_CSSCLASS_ATTR","BINDER_HIERARCHYDATAKEY","HIERARCHYITEM_CONTENT_CSSCLASS","HIERARCHYITEM_LINK_CSSCLASS","HIERARCHYITEM_LINK_CSSCLASS_FULL","HIERARCHYITEM_LINK_ICON","HIERARCHYITEM_MOVE_CSSCLASS","HIERARCHYITEM_MOVE_ICON","DEFAULT_PARENTSPROPERTY","PacemHierarchyElement","bindings","dropTargets","unlinkCaption","_binderClickHandler","origType","originalEvent","button","binder","srcElement","_unlink","unlinkingBinder","x","pageX","pageY","popup","_dragInitHandler","dragger","_dragger","keys","dragBinder","PacemBinderElement","shell","_dragStartHandler","_dragHandler","currentPosition","_dragEndHandler","_dropHandler","_isInAncestors","_isInDescendants","_compileHierarchy","_dragOverHandler","_dragOutHandler","_popoutHandler","_adaptedDatasource","_databind","_setupItemTemplate","_setupDragger","_setupBalloon","_buildAdaptedDatasource","_handle2","_disposeDragger","_disposeBalloon","_mapEntityToItem","_mapEntityToValue","_mapEntityToViewValue","dataset","_buildHierarchyItemDomId","itemId","classList","hierarchyItem","_dragger2","parents","toAnchor","BinderAnchor","toEnd","BinderEnd","Arrow","fromAnchor","Bottom","interactive","BinderInteractionEventName","_itemRemove","delete","HTMLTemplateElement","cloneNode","tmpl","move","PacemIconElement","_template","_defaultTemplate","relation","newParent","parentsProperty","_cleanupHierarchy","isInAncestors","sourceId","targetId","otherParents","p0","otherParent","handleSelector","dropBehavior","None","spillBehavior","DropTargetMissedBehavior","Copy","Drop","Drag","Init","Over","Out","dragger2","Self","_shellProxy","PacemBalloonElement","mapping","i0","_databindByParents","levelMatrix","count","reduce","previousLength","topmost","upperLevels","concat","upperLevel","level","every","RepeaterItemRemoveEventName","ChangePolicy","INPUT_FIELD_ACTIVATED_PROP","PacemBaseInputElement","debounce","changePolicy","Input","autoselect","activeElement","Blur","getValue","HTMLInputElement","HTMLTextAreaElement","autocomplete","deleteAttachedPropertyValue","PacemOrdinalInputElement","PacemTextualInputElement","PacemCharsInputElement","_itemCreateHandler","inputs","redactViewValue","acc","Arrays","_chars","toggleClass","charAt","counter","limit","Math","repeater","PacemColorInputElement","_parseValue","_tint","tint","_alpha","alpha","valueAsNumber","parseInt","_getValue","_wrapper","rgb","Colors","g","PacemEmailInputElement","anchor","FileUploadEventName","FileChangeEventName","StoragePickEvent","FileUploadEvent","FileChangeEvent","async","computeDirStats","dir","stats","directories","entries","kind","getFile","PacemUploadElement","_tweener","Animations","TweenService","undoCaption","retryCaption","clearCaption","uploading","percentage","complete","failed","invalidFile","ongoing","enqueuer","retryFrom","undone","_fileupload","_getMimeIcon","selectMode","hasValue","match","_localValue","_stats","_setupInputElement","_dispatchDownload","dispatch","download","dataURLToBlob","_validateAll","_validateSingleFile","File","substring","lastIndexOf","upload","_upload","uploader","_manage","_blobToBase64","_doUpload","skip","chunk","_tweenPercentage","round","end","setInterval","clearInterval","_buildLocalValue","lastModified","_canPick","w","self","_tryPickDirectory","showDirectoryPicker","directory","_tryPickFiles","multiple","showOpenFilePicker","_clickHandler","_mimicCompute","idle","waitForAnimationEnd","_tuner","run","Easings","sineInOut","computeFileStats","selectedFiles","Images","resize","fetchCredentials","Accept","fetchHeaders","_undo","Uploader","pct","duration","_retry","_clear","navigator","userAgent","PacemHiddenInputElement","getUserMediaFunctions","SnapshotStep","ConfirmSnapshotEvent","CustomUIEvent","buffer","PacemSnapshotElement","_resizeHandler","_renderValue","_canUseWebcam","_countdown","_webcamInitialized","_grabberChangeHandler","_grabber","_shutter","_snapshooterClickHandler","Taking","_pickerClickHandler","_takerClickHandler","_timerClickHandler","_confirmerClickHandler","_buffer","_getUserMedia","_ensureWebcamRunning","_syncSize","_picker","_snapshooter","_taker","_timer","_confirmer","canvas","_stage","video","_player","srcWidth","srcHeight","HTMLVideoElement","videoWidth","videoHeight","naturalWidth","naturalHeight","cnv","clientWidth","clientHeight","ctx","getContext","cropImageOntoCanvas","_root","removeChild","_refreshBuffer","toDataURL","_setToBeConfirmed","clearRect","Confirm","cropImage","localMediaStream","srcObject","message","ImageFetchRequestEventName","ImageFetchRequestEvent","PacemEditImageElement","_index","_uploaderPropertyChangedCallback","_progressbar","_done","_thumbnailUploaderPropertyChangedCallback","_uploaderFileUploadCallback","_uploader","thumbUploader","_thumbUploader","resizeImage","blob2","_imagefetch","_snapshotPropertyChangedCallback","_snapshot","_images","_fetching","_imagefetchSuddenly","take","PacemImageInputElement","_broadcastFetchRequestEventName","_innerValueChangedHandler","_dialog","DialogResultEvent","DialogButton","Ok","_clearBtn","_editBtn","_addDialog","dialog","buttons","DialogButtons","OkCancel","DialogResultEventName","_addEditImage","_removeDialog","_removeEditImage","editImage","allowSnapshot","maxWidth","maxHeight","maxThumbnailHeight","maxThumbnailWidth","_editImage","imageSet","_update","_image","_retrieve","_edit","open","Cancel","PacemNumberInputElement","_format","Intl","NumberFormat","emitHandler","PacemPasswordInputElement","_togglerMousedownHandler","toggleVisibility","baseId","inputId","_toggler","_syncToggler","floor","random","PacemSearchInputElement","PacemTelInputElement","PacemTextInputElement","PacemUrlInputElement","PacemLatLngElement","regexArray","lat","lng","_getViewValue","toFixed","_latInput","_lngInput","_inputContainer","e_val","_ensureValue","_lat","_lng","MapConsts","DEFAULT_COORDS","mevt","opts","provider","_synchronizeOptions","_marker","_map","_azureAdapter","subscriptionKey","apiKey","_googleAdapter","attribution","_leafletAdapter","tiles","ITEM_TXT_CORE","nvp","PacemNameValueListElement","_bag","_bagToValue","_valueToBag","bag","kvp","lastItem","PacemPropertyPickerElement","_select","fnRec","fullName","observed","getWatchedProperties","obs","PacemRadioElement","_radio","PacemRadioListElement","_selectedValue","PacemSelectElement","emptyOption","_manageDom","option","o","HTMLOptionElement","selectedIndex","adapted","PacemSliderElement","_computeAndAssignValue","_endHandler","_startHandler","_thumb","_downHandler","MouseEvent","clientX","touches","trackSize","_trackSize","_keydownHandler","forward","cease","ceaseFn","accelerateCallback","token","cancel","_setValue","_draw","_progress","transform","sv","_max","_min","_setTrackSize","triggerChange","constraint","perc","Focus","trackPosition","Center","_syncThumbLabel","thumbLabel","ResizeEventName","SuggestionSelectEvent","selectedValue","PacemSuggestElement","_toggleBtnHandler","toggle","_focus","_balloonPopupHandler","_btnArrow","_balloonPopoutHandler","keyupManaged","preventFocus","visible","actualHint","managed","selectedItem","_findFirstAvailableListItem","li","cursor","skipPredicate","matchPredicate","previousElementSibling","_selectHandler","_isTyping","superValue","_setDropdownMode","_createBalloon","_checkBalloon","_btnClear","_syncButtons","typing","_filter","allowTyping","is","_tmplProxy","siblings","setSelectionRange","lowerHints","filtered","lowerHint","iData","filterStruct","opacity","HTMLLIElement","delay","VerticalAuto","BalloonSizing","Match","Menu","StringArray","TagRemoveEvent","TagAddEvent","PacemTagElement","_btn","_remove","PacemTagsElement","_tagRemove","_tagAdd","_tags","_justAddedIndex","ndxrev","valrev","trunk2","trunk1","valadd","newvalue","PacemTextAreaElement","rows","cols","PacemMarkdownTextAreaElement","selectionStart","preventDefaultHandler","_markdown","DeepMerger","merge","Output"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pacem-scaffolding.min.js","sources":["../esm/types.js","../esm/openapi/types.js","../esm/openapi/swagger.js","../esm/openapi/openapi3.js","../esm/openapi/openapi.js","../esm/l10n.js","../esm/form.js","../esm/types-components.js","../esm/char-counter.js","../esm/contenteditable.js","../esm/contenteditable/types.js","../esm/contenteditable/historycommand.js","../esm/contenteditable/linkcommand.js","../esm/contenteditable/imagecommand.js","../esm/contenteditable/execcommand.js","../esm/contenteditable/utils.js","../esm/contenteditable/aligncommand.js","../esm/contenteditable/placeholdercommand.js","../esm/contenteditable/wrapcommand.js","../esm/calendar-picker.js","../esm/checkbox.js","../esm/checkbox-list.js","../esm/childform.js","../esm/datetime-picker.js","../esm/validators.js","../esm/formfield.js","../esm/geolocate.js","../esm/hierarchy.js","../esm/input.js","../esm/input-chars.js","../esm/input-color.js","../esm/input-email.js","../esm/input-file.js","../esm/input-hidden.js","../esm/snapshot.js","../esm/input-image.js","../esm/input-number.js","../esm/input-password.js","../esm/input-search.js","../esm/input-tel.js","../esm/input-text.js","../esm/input-url.js","../esm/latlng.js","../esm/namevalue-list.js","../esm/property-picker.js","../esm/radio.js","../esm/radio-list.js","../esm/select.js","../esm/slider.js","../esm/suggest.js","../esm/tags.js","../esm/textarea.js","../esm/textarea-markdown.js","../esm/index-iife.js"],"sourcesContent":["import { CustomTypedEvent } from '@pacem/pacem-core';\nexport const FieldChangeEventName = 'change';\nexport class FieldChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super(FieldChangeEventName, args, { bubbles: true, cancelable: false });\n }\n}\n//}\n",";\nexport var ApiParameterType;\n(function (ApiParameterType) {\n ApiParameterType[\"String\"] = \"string\";\n ApiParameterType[\"Number\"] = \"number\";\n ApiParameterType[\"Datetime\"] = \"datetime\";\n ApiParameterType[\"Boolean\"] = \"boolean\";\n ApiParameterType[\"Binary\"] = \"binary\";\n ApiParameterType[\"Object\"] = \"object\";\n})(ApiParameterType || (ApiParameterType = {}));\nexport class ApiParserBase {\n async load(url, headers) {\n let resp = await fetch(url, {\n mode: 'cors', credentials: 'omit', headers: headers\n });\n try {\n let json = await resp.json();\n return this.parse(json, url);\n }\n catch (e) {\n return null;\n }\n }\n}\nconst $refPattern = /^#\\/(definitions|components\\/schemas)\\/(.+)$/;\nexport function getOpenApiDefinition(manifest, $ref) {\n var rec = $refPattern.exec($ref);\n if (rec && rec.length > 2) {\n return { name: rec[2], schema: manifest.definitions[rec[2]] };\n }\n return null;\n}\n//}\n","import { Net } from '@pacem/pacem-core';\nimport { ApiParserBase, ApiParameterType } from './types';\n//namespace Pacem.Scaffolding.OpenApi {\nconst ApiMethod = Net.HttpMethod;\nexport class SwaggerParser extends ApiParserBase {\n _findDefinitionName(definitionHashTag) {\n var pattern = /#\\/definitions\\/(.+)/;\n var arr = pattern.exec(definitionHashTag);\n if (arr == null || arr.length < 2)\n return definitionHashTag;\n return arr[1];\n }\n parse(content, url) {\n let j = content;\n if (typeof j === 'string') {\n j = JSON.parse(j);\n }\n const json = j;\n let definitions = {};\n for (let def in json.definitions) {\n let name = this._findDefinitionName(def);\n definitions[name] = json.definitions[def];\n }\n let baseUrl = '';\n if (json.host && json.schemes.length > 0) {\n baseUrl = json.schemes[0] + '://' + json.host + json.basePath;\n }\n else if (url) {\n // add scheme, host and basePath just-in-case\n let parsed = /^(https?):\\/\\/([^\\/]+)/.exec(url);\n if (parsed && parsed.length) {\n if (!(json.schemes) && parsed.length > 1) {\n json.schemes = [parsed[1]];\n }\n if (!json.host && parsed.length > 2) {\n json.host = parsed[2];\n json.basePath = '';\n }\n baseUrl = parsed[0];\n }\n }\n else {\n console.warn('Not able to find a base url from the OpenApi specs.');\n }\n let retval = { endpoints: [], definitions: definitions, baseUrl: baseUrl };\n for (let path in json.paths) {\n let src = json.paths[path];\n for (let method of [ApiMethod.Get, ApiMethod.Delete, ApiMethod.Post, ApiMethod.Put]) {\n let op = src[method.toLowerCase()];\n if (op) {\n let endpoint = this._tryGetEndpoint(json, op, path, method);\n retval.endpoints.push(endpoint);\n }\n }\n }\n return retval;\n }\n _tryGetEndpoint(json, op, path, method) {\n return {\n response: this._tryGetResponse(json, op),\n path: path,\n method: method,\n parameters: this._tryGetParameters(json, op)\n };\n }\n _translateType(type, format) {\n switch (type) {\n case 'number':\n case 'integer':\n return ApiParameterType.Number;\n case 'boolean':\n return ApiParameterType.Boolean;\n case 'string':\n switch (format) {\n case 'date':\n case 'date-time':\n return ApiParameterType.Datetime;\n case 'byte':\n return ApiParameterType.Binary;\n case 'binary':\n throw `Binary octets not supported.`;\n }\n return ApiParameterType.String;\n }\n return ApiParameterType.String;\n }\n _tryGetParameters(json, operation) {\n return (operation.parameters || []).map(p => {\n const pb = p;\n let retval = {\n name: pb.name,\n required: pb.required || false\n };\n let type = p.type;\n if (p.schema) {\n let pbody = p;\n retval.type = ApiParameterType.Object;\n let name = retval.fullType = this._findDefinitionName(pbody.schema.$ref);\n retval.meta = json.definitions[name];\n }\n else if (type) {\n retval.type = this._translateType(type, p.format);\n }\n return retval;\n });\n }\n _tryGetResponse(json, operation) {\n let ok = operation.responses['200'];\n if (!ok || !ok.schema)\n return null;\n let type = ok.schema.type || 'object', meta, name;\n if (ok.schema.$ref) {\n name = this._findDefinitionName(ok.schema.$ref);\n meta = json.definitions[name];\n }\n else {\n meta = ok.schema;\n if (ok.schema.items) {\n if (ok.schema.items.hasOwnProperty('$ref')) {\n name = this._findDefinitionName(ok.schema.items.$ref);\n meta = json.definitions[name];\n }\n else {\n meta = ok.schema.items;\n }\n }\n }\n return { type: type, fullType: name, meta: meta };\n }\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { ApiParserBase, ApiParameterType } from './types';\nexport class OpenApi3Parser extends ApiParserBase {\n parse(content, url) {\n let j = content;\n if (typeof j === 'string') {\n j = JSON.parse(j);\n }\n const json = j;\n const endpoints = [];\n const definitions = this._gatherDefinitions(new Map(), json.components.schemas);\n for (let path in json.paths) {\n for (let method in json.paths[path]) {\n const endpoint = json.paths[path][method];\n endpoints.push({\n path,\n method: method.toUpperCase(),\n parameters: this._convertToApiParameters(endpoint.parameters),\n response: this._tryGetResponse(definitions, endpoint.responses)\n });\n }\n }\n return { endpoints, definitions, baseUrl: url };\n }\n _convertToApiParameters(parameters = []) {\n const output = [];\n for (let p of parameters) {\n const schema = p.schema;\n if ('type' in schema) {\n output.push({ name: p.name, required: p.required, type: this._translateType(schema.type, schema['format']) });\n }\n }\n return output;\n }\n _translateType(type, format) {\n switch (type) {\n case 'number':\n case 'integer':\n return ApiParameterType.Number;\n case 'boolean':\n return ApiParameterType.Boolean;\n case 'string':\n switch (format) {\n case 'date':\n case 'date-time':\n return ApiParameterType.Datetime;\n case 'byte':\n return ApiParameterType.Binary;\n case 'binary':\n throw `Binary octets not supported.`;\n }\n return ApiParameterType.String;\n }\n return ApiParameterType.String;\n }\n _gatherDefinitions(memoizer, schemas) {\n const retval = {};\n for (let schema in schemas) {\n retval[schema] = this._findDefinition(memoizer, schemas, schema);\n }\n return retval;\n }\n _findDefinition(memoizer, schemas, type) {\n if (memoizer.has(type)) {\n return memoizer.get(type);\n }\n if (type in schemas) {\n // is that enough?\n const retval = schemas[type];\n memoizer.set(type, retval);\n return retval;\n }\n return null;\n }\n _findDefinitionName(definitionHashTag) {\n var pattern = /#\\/components\\/schemas\\/(.+)/;\n var arr = pattern.exec(definitionHashTag);\n if (arr == null || arr.length < 2)\n return definitionHashTag;\n return arr[1];\n }\n _tryGetResponse(definitions, responses) {\n const operation = { responses };\n let ok = operation.responses['200'];\n if (Utils.isNullOrEmpty(ok && ok.content)) {\n return null;\n }\n let schema;\n for (let mime in ok.content) {\n schema = ok.content[mime].schema;\n break;\n }\n let type = 'object', meta, name;\n if (\"$ref\" in schema) {\n name = this._findDefinitionName(schema.$ref),\n meta = definitions[name];\n }\n else {\n type = schema.type;\n meta = schema;\n if (schema.type === 'array') {\n if ('$ref' in schema.items) {\n name = this._findDefinitionName(schema.items.$ref);\n meta = definitions[name];\n }\n else {\n meta = schema.items;\n }\n }\n }\n return { type, fullType: name, meta };\n }\n}\n","import { SwaggerParser } from './swagger';\nimport { ApiParserBase } from './types';\nimport { OpenApi3Parser } from './openapi3';\n//namespace Pacem.Scaffolding.OpenApi {\nexport class OpenApiParser extends ApiParserBase {\n constructor(_openApi3 = new OpenApi3Parser(), _swagger = new SwaggerParser()) {\n super();\n this._openApi3 = _openApi3;\n this._swagger = _swagger;\n }\n parse(content, url) {\n let j = content;\n if (typeof j === 'string') {\n j = JSON.parse(j);\n }\n const json = j;\n if ('openapi' in json) {\n return this._openApi3.parse(json, url);\n }\n return this._swagger.parse(json, url);\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, Transformer } from '@pacem/pacem-core';\nconst DefaultFormLocalizationOptions = {\n display: (displayProp, prop, dictionary) => dictionary[`${displayProp}_${prop}`],\n validator: (validatorType, validatorTypeIndex, prop, dictionary) => dictionary['validator_' + validatorType + '_' + prop] ?? dictionary['validator_' + validatorType + validatorTypeIndex + '_' + prop],\n commandTooltip: (commandName, dictionary) => dictionary['command_tooltip_' + commandName]\n};\nexport class Forms {\n /**\n * Localizes the metadata of a form **in place** using a translation dictionary.\n *\n * @param metadata The default metadata.\n * @param dictionary The translation dictionary.\n * @param options Custom replacement strategy, just in case.\n * @returns The localized metadata.\n */\n static localizeMetadata(metadata, dictionary, options) {\n return Forms._localizeMetadata(metadata, dictionary, options);\n }\n static _localizeMetadata(metadata, dictionary, options, prefix = '') {\n options = Utils.extend({}, DefaultFormLocalizationOptions, options);\n for (let prop of metadata.props) {\n // child form\n if ('props' in prop && typeof prop.props === 'object' && !Utils.isArray(prop.props)) {\n const pre = prefix + prop.prop + '.';\n prop.props = Forms._localizeMetadata(prop.props, dictionary, options, pre);\n }\n const display = prop.display = prop.display ?? {};\n const property = prefix + prop.prop;\n display.name = options.display('name', property, dictionary) ?? display.name;\n display.watermark = options.display('watermark', property, dictionary) ?? display.watermark;\n display.description = options.display('description', property, dictionary) ?? display.description;\n if (!Utils.isNullOrEmpty(prop.commands)) {\n for (let command of prop.commands) {\n const tooltip = options.commandTooltip(command.name, dictionary);\n if (!Utils.isNullOrEmpty(tooltip)) {\n command.tooltip = tooltip;\n }\n }\n }\n if (!Utils.isNullOrEmpty(prop.validators)) {\n const memoizer = {};\n for (let validator of prop.validators) {\n const type = validator.type;\n if (typeof type === 'string') {\n const index = memoizer[type] = (memoizer[type] ?? -1) + 1;\n const errorMessage = options.validator(type, index, property, dictionary);\n if (!Utils.isNullOrEmpty(errorMessage)) {\n validator['errorMessage'] = errorMessage;\n }\n }\n }\n }\n }\n return metadata;\n }\n}\n__decorate([\n Transformer('forms.localizeMetadata')\n], Forms, \"localizeMetadata\", null);\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, CustomTypedEvent, CommandEventName, Components, Net, Debounce, avoidHandler, PropertyChangeEvent, PropertyChangeEventName, DeferPromise, Logging, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemModelElement } from './types-components';\nimport { FieldChangeEventName } from './types';\nexport const FormSubmitEventName = 'submit';\nexport const FormResetEventName = 'reset';\nexport class FormSubmitEvent extends CustomTypedEvent {\n constructor(args) {\n super(FormSubmitEventName, args, { bubbles: true, cancelable: true });\n }\n}\nexport class FormResetEvent extends Event {\n constructor() {\n super(FormResetEventName, { bubbles: true, cancelable: true });\n }\n}\nconst EMITTABLE_EVENT_TYPES = ['download' /* < dedicated, for the upload custom element */, FieldChangeEventName /* expose */, CommandEventName];\nconst SUBMIT_CANCELLATION_TOKEN = false;\nexport class FormEventEmitter {\n constructor(_element) {\n this._element = _element;\n this._itemEmitHandler = (e) => {\n // handle the actual event first\n this._element.handle(e);\n if (e.type === CommandEventName) {\n // then command-specific event, name being 'item' + command name in lowercase (e.g. 'itemdelete', 'itemselect', ...)\n const evt = e;\n this._element.handle(new CustomEvent('item' + evt.detail.commandName.toLowerCase(), { detail: evt.detail.commandArgument }));\n }\n };\n }\n start() {\n EMITTABLE_EVENT_TYPES.forEach(t => this._element.addEventListener(t, this._itemEmitHandler, false));\n }\n stop() {\n EMITTABLE_EVENT_TYPES.forEach(t => this._element.removeEventListener(t, this._itemEmitHandler, false));\n }\n}\nexport class PacemFormRelevantElement extends Components.PacemElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.form = CustomElementUtils.findAncestorOfType(this, PacemFormElement);\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemFormRelevantElement.prototype, \"form\", void 0);\nlet PacemFormElement = class PacemFormElement extends PacemFormRelevantElement {\n constructor() {\n super('form');\n this.method = Net.HttpMethod.Post;\n this._emitter = null;\n this._buttons = { submit: undefined, reset: undefined };\n this.#fetching = false;\n this._keyupHandler = (evt) => {\n if (evt.keyCode === /* Enter */ 13\n // no modifiers\n && !evt.shiftKey && !evt.ctrlKey && !evt.altKey && !evt.metaKey) {\n let btn = evt.currentTarget.querySelector(P + '-button[type=submit]');\n if (!Utils.isNull(btn) && Utils.isVisible(btn) && !btn.disabled) {\n btn.click();\n }\n }\n };\n this._submit = (fetcher, evt) => {\n if (!Utils.isNull(evt)) {\n avoidHandler(evt);\n }\n Promise.all(this._validateAllFields()).then(p => {\n if (p.findIndex(f => f === false) === -1) {\n this.submit(fetcher).then(_ => {\n // successful submission here\n this.setPristine();\n }, _ => {\n // catch rejected/canceled\n });\n }\n });\n };\n this._reset = (evt) => {\n if (!Utils.isNull(evt))\n avoidHandler(evt);\n var resetEvt = new FormResetEvent();\n this.dispatchEvent(resetEvt);\n if (resetEvt.defaultPrevented) {\n return;\n }\n // reset\n // fields first\n for (var field in this._fields) {\n var fld = this._fields[field];\n if (fld instanceof PacemModelElement)\n fld.reset();\n }\n // then sub-forms\n for (var form of this._subForms) {\n form._reset();\n }\n };\n this._fields = {};\n this._validators = {};\n this._subForms = [];\n this._fieldPropertyChanged = (evt) => {\n switch (evt.detail.propertyName) {\n case 'value':\n // validate:\n let model = evt.target;\n this._checkFieldValidity(model.name);\n break;\n case 'dirty':\n this._checkDirtyness();\n break;\n case 'valid':\n this._checkValidity();\n break;\n }\n };\n this._validatorPropertyChanged = (evt) => {\n const validator = evt.target, name = validator.watch;\n if (evt.detail.propertyName === 'invalid') {\n let model = this._fields[validator.watch];\n if (validator.invalid)\n model.valid = false;\n else\n this._checkFieldValidity(name);\n }\n else {\n this._checkFieldValidity(name);\n }\n };\n /** Gets or sets whether to hint invalid fields even if still pristine (default 'true').\n * When 'true' - and form is autogenerated - the submit button status is tightly bound to the form valid state. */\n this.suddenValidation = true;\n /** Gets or sets whether the form should show - when autogenerated - the reset button. */\n this.resettable = true;\n this._emitter = new FormEventEmitter(this);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if ((name === 'method' && this.autogenerate === true && !Utils.isNullOrEmpty(this.metadata)) ||\n (name === 'metadata' && this.autogenerate === true) ||\n (name === 'autogenerate' && val === true && this.metadata && (this.metadata['props'] || this.metadata).length > 0)) {\n this._buildUpForm();\n }\n else {\n switch (name) {\n case 'readonly':\n //this._lockSubForms(val);\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.form && this.form.registerSubForm(this);\n this._checkValidity();\n this.addEventListener('keyup', this._keyupHandler, false);\n this._emitter.start();\n }\n disconnectedCallback() {\n this._emitter.stop();\n this.removeEventListener('keyup', this._keyupHandler, false);\n this.form && this.form.unregisterSubForm(this);\n super.disconnectedCallback();\n }\n _buildUpForm() {\n const key = '_' + Utils.uniqueCode();\n const uid = this.id = (this.id || key);\n const f_uid = 'fetch' + key;\n //\n const form = document.createElement('form');\n form.id = \"form\" + key;\n form.className = PCSS + '-form';\n form.setAttribute('pacem', '');\n form.setAttribute('novalidate', '');\n const html = `<${P}-repeater datasource=\"{{ #${uid}.metadata && (#${uid}.metadata.props || #${uid}.metadata) }}\">\r\n <${P}-panel css=\"{{ #${uid}.metadata.display && #${uid}.metadata.display.css }}\" css-class=\"{{ (#${uid}.metadata.display && #${uid}.metadata.display.cssClass || []).concat(#${uid}.suddenValidation ? [] : ['lazy-validation']) }}\" class=\"${PCSS}-animatable-list ${PCSS}-list-appear\">\r\n <template>\r\n <${P}-form-field fetch-credentials=\"{{ #${uid}.fetchCredentials }}\" fetch-headers=\"{{ #${uid}.fetchHeaders }}\"\r\n logger=\"{{ #${uid}.logger }}\" entity=\"{{ #${uid}.entity, twoway }}\" \r\n metadata=\"{{ ^item }}\" readonly=\"{{ #${uid}.readonly || ^item.isReadOnly }}\"></${P}-form-field>\r\n </template>\r\n </${P}-panel>\r\n</${P}-repeater>\r\n<${P}-fetch logger=\"{{ #${uid}.logger }}\" id=\"${f_uid}\" method=\"${this.method}\" credentials=\"{{ #${uid}.fetchCredentials }}\" headers=\"{{ #${uid}.fetchHeaders }}\"></${P}-fetch> \r\n<div class=\"${PCSS}-buttonset buttons\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button logger=\"{{ #${uid}.logger }}\" on-click=\"#${uid}._submit(#${uid}.fetcher || #${f_uid}, $event)\" type=\"submit\" hide=\"{{ #${uid}.readonly || $pacem.isNullOrEmpty(#${uid}.action) || !$pacem.isNull(#${uid}.form) }}\"\r\nclass=\"button primary button-size size-small\"\r\ncss-class=\"{{ {'buttonset-last': !#${uid}.resettable || !#${uid}.dirty || !$pacem.isNull(#${uid}.form) } }}\" \r\ndisabled=\"{{ (#${uid}.suddenValidation && (!(#${uid}.valid && #${uid}.dirty))) || #${uid}.fetching }}\">\r\n <${P}-panel class=\"submit-spinner ${PCSS}-anim anim-pop\" hide=\"{{ !#${uid}.fetching }}\"><i class=\"${PCSS}-icon ${PCSS}-anim anim-rotate rotate-uniform display-block\">refresh</i></${P}-panel>\r\n <${P}-text text=\"{{ #${uid}.submitCaption || 'OK' }}\"></${P}-text>\r\n </${P}-button>\r\n <${P}-button logger=\"{{ #${uid}.logger }}\" on-click=\"#${uid}._reset($event)\" type=\"reset\" class=\"button button-size size-small\" css-class=\"{{ {'buttonset-first': #${uid}.readonly || $pacem.isNullOrEmpty(#${uid}.action) || !$pacem.isNull(#${uid}.form)} }}\" hide=\"{{ !#${uid}.resettable || #${uid}.readonly || !#${uid}.dirty || !$pacem.isNull(#${uid}.form) }}\" disabled=\"{{ #${uid}.fetching }}\">\r\n <${P}-text text=\"{{ #${uid}.resetCaption || 'Reset' }}\"></${P}-text>\r\n </${P}-button>\r\n</div></div>`;\n // buttons are kept hidden if...\n form.innerHTML = html;\n this.innerHTML = '';\n this.appendChild(form);\n form.addEventListener('submit', avoidHandler, false);\n const old = this._buttons;\n const val = this._buttons = {\n submit: form.lastElementChild.firstElementChild.firstElementChild,\n reset: form.lastElementChild.firstElementChild.lastElementChild\n };\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'formButtons', currentValue: val, oldValue: old }));\n }\n /** Gets the 'submit' and 'reset' form buttons. */\n get formButtons() {\n return this._buttons;\n }\n #fetching;\n get fetching() {\n return this.#fetching;\n }\n /**\n * Submits the form data via a provided fetcher.\n * @param fetcher The fetching delegate.\n */\n submit(fetcher) {\n return new Promise((resolve, reject) => {\n if (Utils.isNull(fetcher)) {\n reject(`Fetcher cannot be null while submitting a form.`);\n }\n this._submitInternally(fetcher).then(result => {\n this.dispatchEvent(new CustomEvent(\"success\", { detail: result }));\n resolve(result);\n }, err => {\n if (err !== SUBMIT_CANCELLATION_TOKEN) {\n this.dispatchEvent(new CustomEvent(\"fail\", { detail: err }));\n }\n reject(err);\n });\n });\n }\n /** Resets the form to its pristine values. */\n reset() {\n this._reset();\n }\n _submitInternally(fetcher, args) {\n if (Utils.isNull(fetcher))\n throw `Fetcher cannot be null while submitting a form.`;\n var deferred = DeferPromise.defer();\n const entity = this.entity, entityName = this.entityName;\n var model = {};\n if (!Utils.isNullOrEmpty(entityName)) {\n model[entityName] = entity;\n }\n else {\n model = entity;\n }\n var args = { parameters: model, fields: this._getAllFields() };\n // allow to inject some logic while submitting...\n var submitEvt = new FormSubmitEvent(args);\n this.dispatchEvent(submitEvt);\n if (submitEvt.defaultPrevented) {\n // rejection using `false` identifies a canceled submission.\n deferred.reject(SUBMIT_CANCELLATION_TOKEN);\n }\n else {\n // ...use the output parameters\n fetcher.parameters = Utils.extend({}, submitEvt.detail.parameters);\n // a) fetcher 'success' event listener\n const fnSuccess = (evt) => {\n fetcher.removeEventListener(Net.FetchSuccessEventName, fnSuccess, false);\n fetcher.removeEventListener(Net.FetchErrorEventName, fnError, false);\n const r = evt.detail, empty = Net.Fetcher.isEmpty(r);\n if (empty) {\n // if no content gets fetched (e.g. '204') then resolve right here (because it won't enter 'fnResult')\n fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false);\n this.success = true;\n deferred.resolve({});\n }\n switch (r.status) {\n case 205 /*'Reset Content'*/:\n this._reset();\n break;\n }\n };\n // b) fetcher 'fetchresult' event listener\n const fnResult = (evt) => {\n // remove listeners (others have already been removed in 'fnSuccess')\n fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false);\n //\n var result = evt.detail;\n if (typeof (result) === 'object' && result.hasOwnProperty('success')) {\n // DEPRECATED code branch\n if (result.success === true) {\n this.success = true;\n deferred.resolve(result.result || {});\n }\n else {\n this.fail = true;\n deferred.reject(result.error);\n }\n }\n else {\n this.success = true;\n deferred.resolve(result);\n }\n };\n // c) fetcher 'error' event listener\n const fnError = (evt) => {\n // remove listeners\n fetcher.removeEventListener(Net.FetchSuccessEventName, fnSuccess, false);\n fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false);\n fetcher.removeEventListener(Net.FetchErrorEventName, fnError, false);\n this.fail = true;\n const response = evt.detail;\n deferred.reject(response);\n };\n // fetcher propertychange event listener\n const fnPropChange = (evt) => {\n switch (evt.detail.propertyName) {\n case 'fetching':\n if (evt.detail.currentValue === true) {\n Utils.addClass(this, PCSS + '-fetching');\n this.#fetching = true;\n this.dispatchEvent(new PropertyChangeEvent({ currentValue: true, oldValue: false, propertyName: 'fetching' }));\n }\n else {\n this.#fetching = false;\n this.dispatchEvent(new PropertyChangeEvent({ currentValue: false, oldValue: true, propertyName: 'fetching' }));\n Utils.removeClass(this, PCSS + '-fetching');\n fetcher.removeEventListener(PropertyChangeEventName, fnPropChange, false);\n }\n break;\n }\n };\n fetcher.addEventListener(PropertyChangeEventName, fnPropChange, false);\n fetcher.addEventListener(Net.FetchSuccessEventName, fnSuccess, false);\n fetcher.addEventListener(Net.FetchResultEventName, fnResult, false);\n fetcher.addEventListener(Net.FetchErrorEventName, fnError, false);\n if (!Utils.isNullOrEmpty(this.action)) {\n fetcher.url = this.action;\n }\n // is it an 'inert' PacemFetchElement?\n if (fetcher instanceof Components.PacemFetchElement && !fetcher.autofetch) {\n fetcher.fetch();\n }\n this.success = this.fail = false;\n }\n //\n return deferred.promise;\n }\n _getAllFields(accumulator = {}) {\n Utils.extend(accumulator, this._fields);\n for (var form of this._subForms) {\n form._getAllFields(accumulator);\n }\n return accumulator;\n }\n /** Modifies the state of the current entity programmatically. */\n apply(state) {\n if (Utils.isNullOrEmpty(state)) {\n return;\n }\n this.entity = Utils.extend({}, this.entity, state);\n for (let name in state) {\n this.setDirty(name);\n }\n }\n /** Sets the current form (or the fields of it having the specified names) in a pristine state. */\n setPristine(...names) {\n this._setAs(false, ...names);\n }\n /** Sets the current form (or the fields of it having the specified names) in a dirty state. */\n setDirty(...names) {\n this._setAs(true, ...names);\n }\n _setAs(dirty, ...names) {\n const hasNames = !Utils.isEmpty(names);\n for (let field in this._fields) {\n if (!hasNames || names.indexOf(field) >= 0) {\n const fld = this._fields[field];\n if (fld instanceof PacemModelElement) {\n dirty ? fld.setDirty() : fld.setPristine();\n }\n }\n }\n for (let form of this._subForms) {\n dirty ? form.setDirty(...names) : form.setPristine(...names);\n }\n }\n _checkFieldValidity(name) {\n if (!this.suddenValidation) {\n return Promise.resolve(null);\n }\n if (name in this._fields) {\n return this._validateField(name, false);\n }\n return Promise.resolve(false);\n }\n // @Concurrent()\n validate(name) {\n if (!Utils.isNullOrEmpty(name)) {\n return this._validateField(name, false);\n }\n else {\n return Promise.all(this._validateAllFields()).then(b => !b.some(b0 => b0 === false));\n }\n }\n _validateAllFields(setAsDirty = true) {\n const tasks = [];\n for (let field in this._fields) {\n tasks.push(this._validateField(field, setAsDirty));\n }\n for (let sub of this._subForms) {\n Array.prototype.push.apply(tasks, sub._validateAllFields(setAsDirty));\n }\n return tasks;\n }\n // Remove Concurrent from here, better check the closure for params in @Concurrent\n //@Concurrent()\n _validateField(name, setAsDirty) {\n return new Promise((resolve, _) => {\n var model = this._fields[name];\n if (model) {\n var validators = this._validators[model.name];\n if (validators && validators.length > 0) {\n this.log(Logging.LogLevel.Log, `Computing \"${model.name}\" validity.`);\n Promise.all(validators.map(v => v.validate(model.value)\n .then(_ => !(v.invalid = !_))))\n .then(results => {\n let valid = true;\n for (var result of results) {\n if (result === false) {\n valid = false;\n // set dirty only when not valid\n if (setAsDirty) {\n model.setDirty();\n }\n break;\n }\n }\n this.log(Logging.LogLevel.Log, `Property \"${model.name}\" turns out to be ${(valid ? '' : 'not ')}valid.`);\n resolve(model.valid = valid);\n });\n }\n else {\n this.log(Logging.LogLevel.Log, `Property \"${model.name}\" has no validators.`);\n resolve(model.valid = true);\n }\n }\n else {\n this.log(Logging.LogLevel.Log, `Property \"${name}\" has no fields in this form.`);\n resolve(true);\n }\n });\n }\n // #region FORM HIERARCHY validity/dirtyness\n _checkDirtyness() {\n let dirty = false;\n for (var model in this._fields) {\n if (this._fields[model].dirty === true) {\n dirty = true;\n break;\n }\n }\n if ( /* still */dirty === false) {\n for (var form of this._subForms) {\n if (form.dirty) {\n dirty = true;\n break;\n }\n }\n }\n this.dirty = dirty;\n }\n ;\n _checkValidity() {\n let valid = true;\n for (var model in this._fields) {\n this.log(Logging.LogLevel.Log, `Checking \"${model}\" validity.`);\n if (this._fields[model].valid === false) {\n this.log(Logging.LogLevel.Log, `\"${model}\" is not valid.`);\n valid = false;\n break;\n }\n }\n if ( /* still */valid === true) {\n for (var form of this._subForms) {\n if (!form.valid) {\n valid = false;\n break;\n }\n }\n }\n this.valid = valid;\n }\n ;\n registerSubForm(form) {\n let arr = this._subForms;\n if (arr.indexOf(form) == -1) {\n form.addEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n arr.push(form);\n this._checkValidity();\n this._checkDirtyness();\n }\n }\n unregisterSubForm(form) {\n let arr = this._subForms, ndx = arr.indexOf(form);\n if (ndx >= 0) {\n form.removeEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n arr.splice(ndx, 1);\n this._checkValidity();\n this._checkDirtyness();\n }\n }\n registerField(name, model) {\n var container = this._fields;\n if (container[name] != model) {\n this.unregisterField(name, false);\n container[name] = model;\n this.log(Logging.LogLevel.Log, `Registering \"${name}\" field.`);\n if (model instanceof HTMLElement) {\n model.addEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n }\n this._checkFieldValidity(name);\n this._checkDirtyness();\n }\n }\n unregisterField(name, check = true) {\n var container = this._fields, current = container[name];\n if (current instanceof HTMLElement) {\n current.removeEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n }\n delete container[name];\n if (current && check === true) {\n this._checkValidity();\n this._checkDirtyness();\n }\n }\n registerValidator(name, validator) {\n var container = this._validators[name] = this._validators[name] || [], index = container.indexOf(validator);\n if (index == -1) {\n container.push(validator);\n if (validator instanceof HTMLElement) {\n validator.addEventListener(PropertyChangeEventName, this._validatorPropertyChanged, false);\n }\n this.log(Logging.LogLevel.Log, `Calling \"${name}\" validity check after validator registration.`);\n // most likely, at this point, the corresponding field isn't available yet.\n this._checkFieldValidity(name);\n }\n }\n unregisterValidator(name, validator) {\n this._unregisterValidator(name, validator, true);\n }\n _unregisterValidator(name, validator, check) {\n var container = this._validators[name] = this._validators[name] || [], index = container.indexOf(validator);\n if (index >= 0) {\n if (validator instanceof HTMLElement) {\n validator.removeEventListener(PropertyChangeEventName, this._validatorPropertyChanged, false);\n }\n container.splice(index, 1);\n if (check) {\n this._checkFieldValidity(name);\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemFormElement.prototype, \"fetcher\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemFormElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"submitCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"resetCaption\", void 0);\n__decorate([\n Debounce(100)\n], PacemFormElement.prototype, \"_buildUpForm\", null);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"valid\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"dirty\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"success\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"fail\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemFormElement.prototype, \"entity\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"entityName\", void 0);\n__decorate([\n Watch()\n], PacemFormElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"autogenerate\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"suddenValidation\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"resettable\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"action\", void 0);\nPacemFormElement = __decorate([\n CustomElement({ tagName: P + '-form' })\n], PacemFormElement);\nexport { PacemFormElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElementUtils, Utils, Components, PropertyConverters, CustomElement, Watch, stopPropagationHandler, DefaultComparer, PropertyChangeEventName, Debounce } from '@pacem/pacem-core';\nimport { FieldChangeEvent } from './types';\nimport { PacemFormRelevantElement } from './form';\nconst ORIGINAL_VALUE_FIELD = 'pacem:model:original-value';\nexport class PacemModelElement extends PacemFormRelevantElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._registerFieldConditionally();\n this._setAsOriginalValue(this.value);\n }\n _registerFieldConditionally() {\n const name = this.name, form = this.form;\n if (!Utils.isNullOrEmpty(name) && !Utils.isNull(form)\n && (!this.hasAttribute('autobind')\n || (this.getAttribute('autobind') !== 'off' && this.getAttribute('autobind') !== 'false'))) {\n form.registerField(name, this);\n // automatic bind value given the field name\n if (!this.hasAttribute('value')) {\n const formId = form.id = form.id || 'frm_' + Utils.uniqueCode();\n this.setAttribute('value', `{{ #${formId}.entity.${name}, twoway }}`);\n }\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'value':\n this.viewValue = this.getViewValue(val);\n break;\n case 'valid':\n if (!val) {\n Utils.addClass(this, PCSS + '-invalid');\n }\n else {\n Utils.removeClass(this, PCSS + '-invalid');\n }\n break;\n case 'dirty':\n if (val) {\n Utils.addClass(this, PCSS + '-dirty');\n }\n else {\n Utils.removeClass(this, PCSS + '-dirty');\n }\n break;\n case 'name':\n let form = this.form;\n if (form != null) {\n if (old)\n form.unregisterField(old);\n }\n this._registerFieldConditionally();\n break;\n case 'form':\n let n = this.name;\n if (!Utils.isNullOrEmpty(n)) {\n if (old != null)\n old.unregisterField(n);\n }\n this._registerFieldConditionally();\n break;\n }\n }\n disconnectedCallback() {\n let name = this.name, form = this.form;\n if (!Utils.isNullOrEmpty(name) && !Utils.isNull(form))\n form.unregisterField(name);\n super.disconnectedCallback();\n }\n get originalValue() {\n return CustomElementUtils.getAttachedPropertyValue(this, ORIGINAL_VALUE_FIELD);\n }\n _setAsOriginalValue(v) {\n CustomElementUtils.setAttachedPropertyValue(this, ORIGINAL_VALUE_FIELD, v);\n }\n reset() {\n this.value = this.originalValue;\n // then\n this.dirty = false;\n }\n setPristine() {\n this._setAsOriginalValue(this.value);\n //\n this.dirty = false;\n }\n setDirty() {\n this.dirty = true;\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModelElement.prototype, \"viewValue\", void 0);\n__decorate([\n Watch({\n converter: {\n convert: (attr, element) => {\n if (!(element instanceof PacemModelElement)) {\n return attr;\n }\n return element.convertValueAttributeToProperty(attr);\n },\n convertBack: (prop) => prop.toString()\n }\n })\n], PacemModelElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModelElement.prototype, \"dirty\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModelElement.prototype, \"valid\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModelElement.prototype, \"name\", void 0);\nexport class PacemBaseElement extends PacemModelElement {\n constructor() {\n super(...arguments);\n this.focusHandler = (evt) => {\n const focusFieldgroup = (add = true) => {\n // TODO: re-think, since this is an ugly workaround just to properly set the outline and borders of the fieldgroup \n if (Utils.hasClass(this.parentElement, '.' + PCSS + '-fieldgroup')) {\n (add ? Utils.addClass : Utils.removeClass).apply(this, [this.parentElement, PCSS + '-focus']);\n }\n };\n const blurFieldgroup = () => focusFieldgroup(false);\n switch (evt.type) {\n case 'focus':\n Utils.addClass(this, PCSS + '-focus');\n focusFieldgroup();\n this._preFocusValue = this.value;\n break;\n case 'blur':\n Utils.removeClass(this, PCSS + '-focus');\n blurFieldgroup();\n break;\n }\n if (evt.bubbles)\n this.emit(evt);\n else\n this.dispatchEvent(new FocusEvent(evt.type));\n };\n this.changeHandler = (evt) => {\n const val = this.value;\n this.onChange(evt).then(v => {\n if (!this.compareValuePropertyValues(val, v)) {\n this.dispatchEvent(new FieldChangeEvent({\n fieldName: this.name,\n oldValue: val,\n currentValue: v,\n firstChange: !this.dirty\n }));\n this.dirty = true;\n }\n }, _ => {\n // do nothing\n });\n };\n this.keydownHandler = (evt) => {\n stopPropagationHandler(evt);\n };\n this.keyupHandler = (evt) => {\n switch (evt.keyCode) {\n case /* Esc */ 27:\n stopPropagationHandler(evt);\n // choose between reset and set\n if (this.compareValuePropertyValues(this.originalValue, this._preFocusValue)) {\n this.reset();\n }\n else {\n this.value = this._preFocusValue;\n }\n this.blur();\n break;\n case /* Enter */ 13:\n if (this.preventKeyboardSubmit) {\n stopPropagationHandler(evt);\n }\n break;\n }\n };\n }\n compareValuePropertyValues(old, val) {\n return DefaultComparer(old, val);\n }\n get preventKeyboardSubmit() {\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'required':\n case 'disabled':\n case 'autofocus':\n case 'placeholder':\n case 'readonly':\n for (let inputField of this.inputFields) {\n val ? inputField.setAttribute(name, val) : inputField.removeAttribute(name);\n }\n break;\n //case 'name':\n case 'tabOrder':\n for (let inputField of this.inputFields) {\n inputField.setAttribute('tabindex', val);\n }\n break;\n case 'value':\n this.acceptValue(val);\n break;\n }\n if (name === 'required'\n || name === 'disabled'\n || name === 'readonly') {\n let className = `${PCSS}-${name}`;\n val ? Utils.addClass(this, className) : Utils.removeClass(this, className);\n }\n if (name === 'readonly') {\n this.toggleReadonlyView(val);\n }\n // aria-... attributes\n else if (name === 'required') {\n this.aria.attributes.set('required', !!val + '');\n }\n else if (name === 'valid') {\n // Specs say that 'aria-invalid' on required attributes SHOULD NOT be set before submission, \n // think about a 'submitted state'(?) to check against...\n this.aria.attributes.set('invalid', (!val && !!this.dirty) + '');\n }\n }\n registerInputFields(inputFields = this.inputFields) {\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let inputField of inputFields) {\n inputField.addEventListener('focus', this.focusHandler, false);\n inputField.addEventListener('blur', this.focusHandler, false);\n inputField.addEventListener('change', this.changeHandler, false);\n // avoid interference with other handlers (e.g. cref UI.PacemAdapterElement)\n inputField.addEventListener('keydown', this.keydownHandler, false);\n inputField.addEventListener('keyup', this.keyupHandler, false);\n inputField.addEventListener('mousedown', stopPropagationHandler, false);\n inputField.addEventListener('touchstart', stopPropagationHandler, { passive: false, capture: false });\n }\n }\n unregisterInputFields(inputFields = this.inputFields) {\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let inputField of inputFields) {\n if (Utils.isNull(inputField))\n continue;\n inputField.removeEventListener('touchstart', stopPropagationHandler, { capture: false });\n inputField.removeEventListener('keydown', this.keydownHandler, false);\n inputField.removeEventListener('keyup', this.keyupHandler, false);\n inputField.removeEventListener('mousedown', stopPropagationHandler, false);\n //\n inputField.removeEventListener('change', this.changeHandler, false);\n inputField.removeEventListener('focus', this.focusHandler, false);\n inputField.removeEventListener('blur', this.focusHandler, false);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.toggleReadonlyView(this.readonly || false);\n // aria-attribute\n if (!Utils.isNullOrEmpty(this.id)) {\n const label = document.querySelector(`label[for=${this.id}]`);\n if (label) {\n if (label.id) {\n this.aria.attributes.set('labelledby', label.id);\n }\n else {\n this.aria.attributes.set('label', label.textContent);\n }\n }\n else {\n this.aria.attributes.remove('labelledby');\n this.aria.attributes.remove('label');\n }\n ;\n }\n // add handlers\n this.registerInputFields();\n }\n disconnectedCallback() {\n // remove handlers\n this.unregisterInputFields();\n super.disconnectedCallback();\n }\n focus() {\n const fields = this.inputFields;\n if (fields && fields.length) {\n fields[0].focus();\n }\n }\n blur() {\n const fields = this.inputFields;\n if (!Utils.isNullOrEmpty(fields)) {\n for (let field of fields) {\n field.blur();\n }\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseElement.prototype, \"required\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseElement.prototype, \"autofocus\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBaseElement.prototype, \"name\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBaseElement.prototype, \"placeholder\", void 0);\nexport class PacemItemElement extends Components.PacemElement {\n #container;\n /** @overridable */\n findContainer() {\n return CustomElementUtils.findAncestor(this, n => n instanceof PacemItemsContainerBaseElement);\n }\n get container() {\n return this.#container;\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 class PacemItemsContainerBaseElement extends PacemBaseElement {\n /**\n * Registers a new item among the items.\n * @param item {PacemDataItemElement} Item to be enrolled\n */\n register(item) {\n let flag = true;\n if (Utils.isNull(this.items)) {\n this.items = [item];\n }\n else if (this.items.indexOf(item) === -1) {\n this.items.push(item);\n }\n else {\n flag = false;\n }\n return flag;\n }\n /**\n * Removes an existing element from the items.\n * @param item {PacemDataItemElement} Item to be removed\n */\n unregister(item) {\n const ndx = !Utils.isNull(this.items) && this.items.indexOf(item);\n if (ndx >= 0) {\n this.items.splice(ndx, 1)[0];\n return true;\n }\n return false;\n }\n}\n__decorate([\n Watch( /* can only be databound or assigned at runtime */)\n], PacemItemsContainerBaseElement.prototype, \"items\", void 0);\nlet PacemDataItemElement = class PacemDataItemElement extends PacemItemElement {\n};\n__decorate([\n Watch({\n converter: {\n convert: (attr, element) => {\n // boolean?\n if (attr === 'true')\n return true;\n if (attr === 'false')\n return false;\n // number?\n let num = parseFloat(attr);\n if (!isNaN(num))\n return num;\n // date?\n let date = Utils.Dates.parse(attr);\n if (Utils.Dates.isDate(date))\n return date;\n return attr;\n },\n convertBack: (prop) => prop.toString()\n }\n })\n], PacemDataItemElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDataItemElement.prototype, \"label\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemDataItemElement.prototype, \"disabled\", void 0);\nPacemDataItemElement = __decorate([\n CustomElement({ tagName: P + '-data-item' })\n], PacemDataItemElement);\nexport { PacemDataItemElement };\nexport class PacemDataSourceElement extends PacemItemsContainerBaseElement {\n constructor(multipleChoice = false) {\n super();\n this.multipleChoice = multipleChoice;\n this._itemPropertyChangedHandler = (evt) => {\n this.databind();\n };\n }\n /**\n * Registers a new item among the items.\n * @param item {PacemDataItemElement} Item to be enrolled\n */\n register(item) {\n const flag = super.register(item);\n if (flag) {\n item.addEventListener(PropertyChangeEventName, this._itemPropertyChangedHandler, false);\n }\n return flag;\n }\n /**\n * Removes an existing element from the items.\n * @param item {PacemDataItemElement} Item to be removed\n */\n unregister(item) {\n const flag = super.register(item);\n if (flag) {\n item.removeEventListener(PropertyChangeEventName, this._itemPropertyChangedHandler, false);\n }\n return flag;\n }\n buildAdaptedDatasource(ds = this.datasource) {\n return ds && ds.map(i => this.mapEntityToItem(i));\n }\n databind(datasource = this.buildAdaptedDatasource(this.datasource)) {\n if (Utils.isNull(datasource) && Utils.isNull(this.adaptedDatasource))\n return;\n const ds = this.adaptedDatasource = datasource || []; /*\n .map(i => this.mapEntityToItem(i))*/\n ;\n if (Utils.isNullOrEmpty(ds.filter(i => this.isDataSourceItemSelected(i))))\n this.handleDatasourceMismatch(ds);\n }\n handleDatasourceMismatch(datasource) {\n this.value = undefined;\n }\n /**\n * Checks wether the provided `item` matches the control's criteria for a selected option against a provided value (which defaults to control's value).\n * @param item {any} item to check against\n * @param value {any} value to match\n */\n isItemSelected(item, value = this.value) {\n if (Utils.isNullOrEmpty(value)) {\n return false;\n }\n const v = this.mapEntityToValue(item), c = this.compareBy;\n if (this.multipleChoice && Utils.isArray(value))\n return !Utils.isNull(value.find(j => \n // caution: numbers and strings might be compared, ease the comparison by loosing equality constraints: `===` to `==`.\n j /* value item */ == /*=*/ v /* datasource item */ || (typeof j === 'object' && !Utils.isNullOrEmpty(c) && c in v && c in j && v[c] == /*=*/ j[c])));\n else if (!this.multipleChoice) {\n return value == /*=*/ v || (typeof value === 'object' && !Utils.isNullOrEmpty(c) && c in v && c in value && v[c] == /*=*/ value[c]);\n }\n else {\n return false;\n }\n }\n /**\n * Checks wether the provided `item` matches the control's criteria for a selected option against a provided value (which defaults to control's value).\n * @param item {DataSourceItem} item to check against\n * @param value {any} value to match\n */\n isDataSourceItemSelected(item, value = this.value) {\n if (Utils.isNullOrEmpty(value)) {\n return false;\n }\n if (item.disabled) {\n return false;\n }\n const c = this.compareBy;\n if (this.multipleChoice && Utils.isArray(value)) {\n // caution: numbers and strings might be compared, ease the comparison by loosing equality constraints: `===` to `==`.\n let found = value.find(j => j == /*=*/ item.value || (typeof j === 'object' && !Utils.isNullOrEmpty(c) && c in j && !Utils.isNullOrEmpty(item.value) && c in item.value && j[c] == /*=*/ item.value[c]));\n return !Utils.isNull(found);\n }\n else if (!this.multipleChoice && !Utils.isNullOrEmpty(item.value)) {\n return value == /*=*/ item.value || (typeof value === 'object' && !Utils.isNullOrEmpty(c) && c in value && !Utils.isNullOrEmpty(item.value) && c in item.value && value[c] == /*=*/ item.value[c]);\n }\n else {\n return false;\n }\n }\n mapEntityToValue(entity) {\n if (entity == null) {\n throw 'entity cannot be null';\n }\n // declared\n if (entity instanceof PacemDataItemElement) {\n return entity.value;\n }\n // databound\n let value = entity, prop;\n if (prop = this.valueProperty) {\n value = entity[prop];\n }\n return value;\n }\n mapEntityToViewValue(entity) {\n if (entity == null)\n throw 'entity cannot be null';\n // declared\n if (entity instanceof PacemDataItemElement) {\n return entity.label || entity.value;\n }\n // databound\n let viewValue = entity.toString(), prop;\n if (prop = this.textProperty) {\n viewValue = entity[prop];\n }\n return viewValue;\n }\n mapEntityToItem(entity) {\n if (entity == null) {\n throw 'entity cannot be null';\n }\n // declared\n if (entity instanceof PacemDataItemElement) {\n return { value: entity.value, viewValue: entity.label || entity.value, disabled: entity.disabled, data: entity };\n }\n // databound\n let disabled = false;\n const disabledProp = this.disabledProperty;\n if (!Utils.isNullOrEmpty(disabledProp)) {\n disabled = entity[disabledProp] || false;\n }\n return { value: this.mapEntityToValue(entity), viewValue: this.mapEntityToViewValue(entity), disabled: disabled, data: entity };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n case 'textProperty':\n case 'disabledProperty':\n case 'valueProperty':\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n this.databind();\n // refresh view value, since it depends on selected items.\n this.viewValue = this.getViewValue(this.value);\n });\n break;\n case 'items':\n cancelAnimationFrame(this._handleItems);\n this._handleItems = requestAnimationFrame(() => {\n this.datasource = this.items;\n });\n break;\n }\n }\n getViewValue(val) {\n if (Utils.isNullOrEmpty(this.datasource)) {\n return undefined;\n }\n return this.datasource.filter(i => this.isItemSelected(i)).map(i => this.mapEntityToViewValue(i)).join(', ');\n }\n convertValueAttributeToProperty(attr) {\n if (this.multipleChoice) {\n return attr.split(',').map(i => i.trim());\n }\n return attr;\n }\n compareValuePropertyValues(old, val) {\n return DefaultComparer(old, val);\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemDataSourceElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"valueProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"textProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"disabledProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"compareBy\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemDataSourceElement.prototype, \"adaptedDatasource\", void 0);\n__decorate([\n Debounce(true)\n], PacemDataSourceElement.prototype, \"databind\", null);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, CustomElement, Defaults, P, PCSS, PropertyConverters, Watch } from '@pacem/pacem-core';\n//namespace Pacem.Components.Scaffolding {\nexport const CHAR_COUNTER_CHILD = `<${P}-char-count hide=\"{{ :host.readonly || !(:host.minlength > 0 || :host.maxlength > 0) }}\" minlength=\"{{ :host.minlength }}\" maxlength=\"{{ :host.maxlength }}\" string=\"{{ :host.value }}\"></${P}-char-count>`;\nlet PacemCharCountElement = class PacemCharCountElement extends Components.PacemElement {\n _isValid(v) {\n const l = this._length(v);\n if (this.minlength > 0 && l < this.minlength)\n return false;\n if (this.maxlength > 0 && l > this.maxlength)\n return false;\n return true;\n }\n _length(s) {\n return (s && s.length) || 0;\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemCharCountElement.prototype, \"minlength\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemCharCountElement.prototype, \"maxlength\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCharCountElement.prototype, \"string\", void 0);\nPacemCharCountElement = __decorate([\n CustomElement({\n tagName: P + '-char-count',\n shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-char-count\" css-class=\"{{ {'valid': :host._isValid(:host.string), 'invalid': !:host._isValid(:host.string) } }}\">\r\n <${P}-span hide=\"{{ !(:host.minlength > 0) }}\" class=\"${PCSS}-char-min\" content=\"{{ :host.minlength }}\"></${P}-span>\r\n <${P}-span class=\"${PCSS}-char-curr\" content=\"{{ :host._length(:host.string) || '0' }}\"></${P}-span>\r\n <${P}-span hide=\"{{ !(:host.maxlength > 0) }}\" class=\"${PCSS}-char-max\" content=\"{{ :host.maxlength }}\"></${P}-span>\r\n</${P}-panel>`\n })\n], PacemCharCountElement);\nexport { PacemCharCountElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomTypedEvent, CustomEventUtils, Debounce, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyChangeEvent, PropertyChangeEventName } from '@pacem/pacem-core';\nimport { HistoryService } from '@pacem/pacem-foundation';\nimport { PacemItemElement, PacemItemsContainerBaseElement } from './types-components';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nconst EXECUTECOMMAND_NAME = 'execute';\nconst EMPTY_CONTENT = '<p><br></p>';\nclass ContenteditableChangeEvent extends CustomTypedEvent {\n constructor(html) {\n super('contenteditablechange', { html: html });\n }\n}\nexport class PacemContenteditableCommandElement extends PacemItemElement {\n constructor() {\n super(...arguments);\n this._containerPropChangeHandler = (evt) => {\n const p = evt.detail;\n this.containerPropertyChangedCallback(p.propertyName, p.oldValue, p.currentValue, p.firstChange);\n };\n }\n execCommand(...args) {\n const me = this;\n if (me.disabled) {\n return;\n }\n me.exec.apply(me, args).then(_ => {\n me.dispatchEvent(new Event(EXECUTECOMMAND_NAME));\n }, e => {\n console.error(e);\n });\n }\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, PCSS + '-contenteditable-command');\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const cnt = this.container;\n if (!Utils.isNull(cnt)) {\n this.contentElement = cnt.contentElement;\n cnt.addEventListener(PropertyChangeEventName, this._containerPropChangeHandler, false);\n }\n }\n disconnectedCallback() {\n const cnt = this.container;\n if (!Utils.isNull(cnt)) {\n cnt.removeEventListener(PropertyChangeEventName, this._containerPropChangeHandler, false);\n }\n super.disconnectedCallback();\n }\n containerPropertyChangedCallback(name, old, val, first) {\n if (name === 'range') {\n this.range = val;\n }\n }\n}\n__decorate([\n Watch()\n], PacemContenteditableCommandElement.prototype, \"range\", void 0);\n__decorate([\n Watch()\n], PacemContenteditableCommandElement.prototype, \"contentElement\", void 0);\nfunction isFileCommand(obj) {\n return obj instanceof PacemContenteditableCommandElement && 'pasteCallback' in obj && typeof obj['pasteCallback'] === 'function';\n}\nfunction isElement(node) {\n return node?.nodeType == Node.ELEMENT_NODE;\n}\nlet PacemContenteditableElement = class PacemContenteditableElement extends PacemItemsContainerBaseElement {\n constructor() {\n super('rich text editor');\n this._focusHandler = (evt) => {\n this._ensureInteractiveMarkup();\n };\n this._blurHandler = (evt) => {\n // clean up the output\n const container = this._container;\n for (let command of this.items) {\n command.cleanUp(container);\n }\n this._checkChangedHandler(evt);\n };\n this._pasteHandler = (evt) => {\n // I'll manage it myself!\n evt.preventDefault();\n const range = this.range, files = evt.clipboardData.files;\n if (!Utils.isNull(range) && files.length === 0) {\n const text = evt.clipboardData.getData('text/plain');\n const plainText = text.replace(/</gi, '<').replace(/\\n/gi, '<br />');\n const frag = range.createContextualFragment(plainText);\n range.deleteContents();\n range.insertNode(frag);\n this._checkChangedHandler(evt);\n }\n else {\n for (let j = 0; j < files.length; j++) {\n const f = files.item(j);\n for (let cmd of this.items) {\n if (isFileCommand(cmd)) {\n cmd.pasteCallback(f).then(_ => this._checkChangedHandler(evt), _ => { });\n }\n }\n }\n // this._checkAndSynchronizeHandler(evt);\n }\n };\n this._shortcutHandler = (evt) => {\n // prevent any default shortcut combo apart from 'copy', 'cut' and 'paste' (mainly due to the clipboard access limitations)\n if (evt.ctrlKey && ['C', 'V', 'X'].indexOf(evt.key?.toUpperCase()) === -1) {\n // Let it manage it only if the relevant command is available\n evt.preventDefault();\n }\n };\n this._inputHandler = (evt) => {\n this._fixRangeMarkup();\n this._checkChangedHandler(evt);\n };\n this._checkChangedHandler = (evt) => {\n const container = this._container, inputHtml = container.innerHTML;\n var html = inputHtml;\n if (Utils.isNullOrEmpty(inputHtml)\n || inputHtml === '<br>'\n || inputHtml === EMPTY_CONTENT) {\n container.innerHTML = EMPTY_CONTENT;\n html = '';\n }\n if (html != this.value) {\n this.changeHandler(new ContenteditableChangeEvent(html));\n if (this.value != this.#history.current) {\n this._updateHistory();\n }\n }\n // fire history change in any case\n this._fireHistoryChange();\n };\n this._selectionChangeHandler = (evt) => {\n const selection = document.getSelection();\n if (selection && selection.anchorNode && this._container.contains(selection.anchorNode)) {\n const range = selection.getRangeAt(0);\n this.range = range.cloneRange();\n }\n else {\n this.range = null;\n }\n };\n //this._workspace = document.createElement('div');\n }\n #history;\n get history() {\n return this.#history;\n }\n reset() {\n super.reset();\n this.#history.reset();\n this._fireHistoryChange();\n }\n _fireHistoryChange() {\n const h = this.#history;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'history', oldValue: h, currentValue: h }));\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n toggleReadonlyView(readonly) {\n this._dashboard.hidden = readonly;\n if (readonly) {\n this._container.removeAttribute('contenteditable');\n }\n else {\n this._container.setAttribute('contenteditable', 'true');\n document.execCommand(\"defaultParagraphSeparator\", false, \"p\");\n }\n }\n register(item) {\n if (super.register(item)) {\n item.addEventListener(EXECUTECOMMAND_NAME, this._checkChangedHandler, false);\n return true;\n }\n return false;\n }\n unregister(item) {\n if (super.unregister(item)) {\n item.removeEventListener(EXECUTECOMMAND_NAME, this._checkChangedHandler, false);\n return true;\n }\n return false;\n }\n /** @override */\n get preventKeyboardSubmit() {\n return true;\n }\n get inputFields() {\n return [this._container];\n }\n get contentElement() {\n return this._container;\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, ContenteditableChangeEvent)) {\n const html = this.value = evt.detail.html;\n resolve(html);\n // find a less-instrusive way to call this...\n this._selectionChangeHandler(evt);\n }\n else\n resolve(this.value);\n });\n }\n _fixRangeMarkup() {\n const range = this.range, fnDownwards = (node) => {\n node.childNodes.forEach(i => fnDownwards(i));\n if (isElement(node) && node.tagName === 'SPAN') {\n Element.prototype.replaceWith.apply(node, Array.from(node.childNodes));\n }\n else if (node instanceof HTMLElement) {\n node.removeAttribute('style');\n }\n }, fn = (node) => {\n let element = node;\n if (!isElement(element)) {\n element = node.parentElement;\n }\n fnDownwards(element);\n };\n if (!Utils.isNull(range)) {\n fn(range.commonAncestorContainer);\n }\n }\n _ensureInteractiveMarkup() {\n const workspace = this._container, nodes = workspace.childNodes, childCount = nodes.length;\n if (childCount == 0 || workspace.innerHTML === EMPTY_CONTENT) {\n workspace.innerHTML = EMPTY_CONTENT;\n }\n else {\n let node, range;\n const closeRange = (n) => {\n range.setEndAfter(n);\n const p = document.createElement('p');\n range.surroundContents(p);\n };\n for (let j = 0; j < childCount; j++) {\n node = nodes.item(j);\n if (!(node instanceof Element)) {\n if (Utils.isNull(range)) {\n range = document.createRange();\n range.setStartBefore(node);\n }\n }\n else if (range) {\n closeRange(node.previousSibling);\n range = null;\n }\n }\n // open range?\n if (!Utils.isNull(range)) {\n closeRange(node);\n }\n }\n }\n _updateHistory() {\n this.#history.push(this.value);\n this._fireHistoryChange();\n }\n acceptValue(val) {\n if (!Utils.isNull(this._container) && /*the following `if` statement prevents from flashing the content and writing backwards!*/ val != this._container.innerHTML) {\n this._container.innerHTML = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this._container;\n this.#history = new HistoryService(this.value);\n container.addEventListener('blur', this._blurHandler, false);\n container.addEventListener('keydown', this._shortcutHandler, false);\n container.addEventListener('focus', this._focusHandler, false);\n container.addEventListener('input', this._inputHandler, false);\n container.addEventListener('paste', this._pasteHandler, false);\n document.addEventListener('selectionchange', this._selectionChangeHandler, false);\n }\n disconnectedCallback() {\n document.removeEventListener('selectionchange', this._selectionChangeHandler, false);\n const container = this._container;\n if (!Utils.isNull(container)) {\n container.removeEventListener('keydown', this._shortcutHandler, false);\n container.removeEventListener('blur', this._blurHandler, false);\n container.removeEventListener('focus', this._focusHandler, false);\n container.removeEventListener('input', this._inputHandler, false);\n container.removeEventListener('paste', this._pasteHandler, false);\n }\n super.disconnectedCallback();\n }\n getViewValue(val) {\n return val;\n }\n};\n__decorate([\n ViewChild(\"div[pacem]\")\n], PacemContenteditableElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(\"div[dashboard]\")\n], PacemContenteditableElement.prototype, \"_dashboard\", void 0);\n__decorate([\n Watch()\n], PacemContenteditableElement.prototype, \"range\", void 0);\n__decorate([\n Debounce(500)\n], PacemContenteditableElement.prototype, \"_updateHistory\", null);\nPacemContenteditableElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-contenteditable ${PCSS}-viewfinder\">\r\n <div contenteditable=\"true\" role=\"presenter\" pacem></div>\r\n</div>${CHAR_COUNTER_CHILD}\r\n<div dashboard>\r\n <${P}-content></${P}-content>\r\n</div>`\n })\n], PacemContenteditableElement);\nexport { PacemContenteditableElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PropertyConverters, Utils, Watch } from '@pacem/pacem-core';\nimport { PacemContenteditableCommandElement } from '../contenteditable';\n//namespace Pacem.Components.Scaffolding {\nexport class PacemContenteditableButtonCommandElement extends PacemContenteditableCommandElement {\n cleanUp(_) {\n // do nothing\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'range') {\n this.active = !Utils.isNull(val);\n }\n }\n getTooltip(altText = this.altText, shortcut = this.keyboardShortcut) {\n const hint = altText;\n if (Utils.isNullOrEmpty(shortcut)) {\n return hint;\n }\n return `${hint} (${shortcut})`;\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableButtonCommandElement.prototype, \"icon\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableButtonCommandElement.prototype, \"keyboardShortcut\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableButtonCommandElement.prototype, \"altText\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemContenteditableButtonCommandElement.prototype, \"active\", void 0);\nexport const CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE = `<${P}-button disabled=\"{{ !:host.active }}\" css-class=\"{{ {'text-primary': :host.isRelevant(:host.range)} }}\" tooltip=\"{{ :host.getTooltip(:host.altText, :host.keyboardShortcut) }}\" class=\"button\" on-click=\":host.execCommand()\"><${P}-icon class=\"text-rootsize\" icon=\"{{ :host.icon }}\"></${P}-icon></${P}-button>\r\n <${P}-shortcut disabled=\"{{ !:host.active }}\" target=\"{{ :host.contentElement }}\" combination=\"{{ :host.keyboardShortcut }}\" on-execute=\":host.execCommand()\"></${P}-shortcut>`;\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\n//namespace Pacem.Components.Scaffolding {\nlet PacemContenteditableHistoryCommandElement = class PacemContenteditableHistoryCommandElement extends PacemContenteditableButtonCommandElement {\n exec() {\n return new Promise((resolve, _) => {\n const history = this.container?.history;\n if (!Utils.isNull(history)) {\n switch (this.command) {\n case 'redo':\n if (history.canRedo) {\n history.redo();\n resolve();\n }\n break;\n default:\n if (history.canUndo) {\n history.undo();\n resolve();\n }\n break;\n }\n this.contentElement.innerHTML = history.current;\n }\n });\n }\n isRelevant(_) {\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'command':\n this.icon = this.icon || val;\n this.altText = val;\n this.keyboardShortcut = this.keyboardShortcut || ('Ctrl+' + (val === 'redo' ? 'Y' : 'Z'));\n break;\n }\n }\n containerPropertyChangedCallback(name, old, val, first) {\n super.containerPropertyChangedCallback(name, old, val, first);\n const c = this.container, h = c.history;\n if (name === 'range' || name === 'history') {\n // override 'active' state setting\n this.active = !Utils.isNull(c.range) &&\n ((this.command === 'redo' && h?.canRedo) || (this.command !== 'redo' && h?.canUndo));\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true })\n], PacemContenteditableHistoryCommandElement.prototype, \"command\", void 0);\nPacemContenteditableHistoryCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-historycommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableHistoryCommandElement);\nexport { PacemContenteditableHistoryCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils } from './utils';\n//namespace Pacem.Components.Scaffolding {\nlet PacemContenteditableLinkCommandElement = class PacemContenteditableLinkCommandElement extends PacemContenteditableButtonCommandElement {\n isRelevant(range) {\n return !Utils.isNull(ContenteditableUtils.findSurroundingNode(range, HTMLAnchorElement));\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNullOrEmpty(this.altText)) {\n this.altText = 'insert link';\n }\n if (Utils.isNullOrEmpty(this.icon)) {\n this.icon = 'insert_link';\n }\n if (Utils.isNullOrEmpty(this.keyboardShortcut)) {\n this.keyboardShortcut = 'Ctrl+H';\n }\n }\n exec(arg, target = this.target) {\n return new Promise((resolve, reject) => {\n var selection = this.range;\n var anchorNode = ContenteditableUtils.findSurroundingNode(selection, HTMLAnchorElement);\n //console.log('selection: ' + selection);\n var current = \"http://\";\n var regex = /<a.*href=\\\"([^\\\"]*)/;\n if (anchorNode && regex.test(anchorNode.outerHTML)) {\n current = regex.exec(anchorNode.outerHTML)[1];\n }\n //console.log('link: ' + current);\n if (arg === 'current') {\n return current == 'http://' ? '' : current;\n }\n var link = arg || (arg === void 0 && window.prompt('link (empty to unlink):', current));\n if (!link) {\n document.execCommand('unlink');\n }\n else {\n document.execCommand('createLink', false, link);\n anchorNode = ContenteditableUtils.findSurroundingNode(selection, HTMLAnchorElement);\n if (anchorNode) {\n anchorNode.setAttribute('target', target || '_blank');\n }\n }\n resolve();\n });\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemContenteditableLinkCommandElement.prototype, \"target\", void 0);\nPacemContenteditableLinkCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-linkcommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableLinkCommandElement);\nexport { PacemContenteditableLinkCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PCSS, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils, ContenteditableDOMObserver } from './utils';\n//namespace Pacem.Components.Scaffolding {\n//@CustomElement({ tagName: P + '-contenteditable-selectable' })\n//export class PacemContenteditableSelectableBehaviorElement extends Pacem.Behaviors.PacemBehavior {\n// protected decorate(element: Element) {\n// if (element instanceof HTMLElement || element instanceof SVGElement) {\n// Utils.addClass(element, PCSS + '-contenteditable-selectable');\n// }\n// }\n// protected undecorate(element: Element) {\n// if (element instanceof HTMLElement || element instanceof SVGElement) {\n// Utils.removeClass(element, PCSS + '-contenteditable-selectable');\n// }\n// }\n//}\nfunction insertPicture(range, blob) {\n return new Promise((resolve, reject) => {\n Utils.blobToDataURL(blob)\n .then(Utils.loadImage)\n .then(img => {\n const pic = document.createElement('picture');\n pic.setAttribute('contenteditable', 'false');\n img.tabIndex = 0;\n pic.appendChild(img);\n range.deleteContents();\n range.insertNode(pic);\n resolve(pic);\n });\n });\n}\nlet PacemContenteditableImageCommandElement = class PacemContenteditableImageCommandElement extends PacemContenteditableButtonCommandElement {\n constructor() {\n super(...arguments);\n this._setBehaviorHandler = (evt) => {\n const img = evt.target, pic = img.parentElement;\n // this._rescale.register(pic);\n this.range = ContenteditableUtils.select(pic);\n };\n this._disposeBehaviorHandler = (_) => {\n };\n // #endregion\n }\n pasteCallback(f) {\n if (f.type.startsWith('image')) {\n return insertPicture(this.range, f);\n }\n else {\n return Promise.reject();\n }\n }\n cleanUp(content) {\n content.querySelectorAll('picture[contenteditable=false]').forEach(pic => {\n const childCount = pic.childNodes.length;\n for (let j = childCount - 1; j > 0; j--) {\n // remove leftover rescale divs\n pic.childNodes.item(j).remove();\n }\n });\n // legacy leftovers\n content.querySelectorAll('div.' + PCSS + '-rescale').forEach(i => i.remove());\n }\n isRelevant(range) {\n return false;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNullOrEmpty(this.altText)) {\n this.altText = 'insert image';\n }\n if (Utils.isNullOrEmpty(this.icon)) {\n this.icon = 'insert_photo';\n }\n if (Utils.isNullOrEmpty(this.keyboardShortcut)) {\n this.keyboardShortcut = 'Ctrl+Shift+I';\n }\n this._rescale.addEventListener('rescale', this._rescaleImg, false);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._rescale)) {\n this._rescale.removeEventListener('rescale', this._rescaleImg, false);\n this._disposeContainer();\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'disabled':\n if (!Utils.isNull(this._rescale)) {\n this._rescale.disabled = val;\n }\n break;\n case 'contentElement':\n if (old) {\n this._disposeContainer(old);\n }\n if (val) {\n this._initContainer(val);\n }\n break;\n case 'range':\n this._rangeChangeCallback(old, val);\n break;\n }\n }\n exec() {\n return new Promise((resolve, reject) => {\n const file = this._file, range = this.range;\n file.onchange = (evt) => {\n const f = file.files[0];\n if (Utils.isNull(f)) {\n resolve();\n }\n else {\n insertPicture(range, f)\n .then(pic => {\n file.value = '';\n resolve();\n });\n }\n };\n file.click();\n });\n }\n // #region private\n _rescaleImg(evt) {\n evt.preventDefault();\n const pic = evt.detail.element, rect = evt.detail.targetRect, img = pic.firstElementChild;\n img.style.width = rect.width + 'px';\n img.style.height = rect.height + 'px';\n }\n #observer;\n _rangeChangeCallback(old, val) {\n if (!Utils.isNull(old)\n && !old.collapsed\n && old.commonAncestorContainer instanceof Element\n && old.commonAncestorContainer === old.startContainer\n && old.commonAncestorContainer === old.endContainer\n && old.startOffset === (old.endOffset - 1)) {\n const el = old.commonAncestorContainer.childNodes.item(old.startOffset);\n if (el instanceof HTMLPictureElement) {\n this._rescale.unregister(el);\n }\n }\n if (!Utils.isNull(val)\n && !val.collapsed\n && val.commonAncestorContainer instanceof Element\n && val.commonAncestorContainer === val.startContainer\n && val.commonAncestorContainer === val.endContainer\n && val.startOffset === (val.endOffset - 1)) {\n const el = val.commonAncestorContainer.childNodes.item(val.startOffset);\n if (el instanceof HTMLPictureElement) {\n this._rescale.register(el);\n }\n }\n }\n _enhancePictureElement(pic) {\n if (pic.firstElementChild) {\n pic.firstElementChild.addEventListener('focus', this._setBehaviorHandler, false);\n pic.firstElementChild.addEventListener('blur', this._disposeBehaviorHandler, false);\n }\n }\n _downgradePictureElement(pic) {\n if (pic.firstElementChild) {\n // this._rescale.unregister(pic);\n pic.firstElementChild.removeEventListener('focus', this._setBehaviorHandler, false);\n pic.firstElementChild.removeEventListener('blur', this._disposeBehaviorHandler, false);\n }\n }\n _initContainer(contentElement = this.contentElement) {\n this.#observer = new ContenteditableDOMObserver(contentElement, (pic, removed) => {\n if (pic instanceof HTMLPictureElement) {\n if (removed) {\n this._downgradePictureElement(pic);\n }\n else {\n this._enhancePictureElement(pic);\n }\n }\n }, 'picture');\n }\n _disposeContainer(_ = this.contentElement) {\n const observer = this.#observer;\n if (!Utils.isNull(observer)) {\n observer.dispose();\n }\n }\n};\n__decorate([\n ViewChild('input[type=file]')\n], PacemContenteditableImageCommandElement.prototype, \"_file\", void 0);\n__decorate([\n ViewChild(P + \"-rescale\")\n], PacemContenteditableImageCommandElement.prototype, \"_rescale\", void 0);\nPacemContenteditableImageCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-imagecommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<input type=\"file\" accept=\"image/png, image/gif, image/jpeg, image/bmp, image/x-icon\" class=\"${PCSS}-trasparent ${PCSS}-inert\" pacem hidden>` +\n CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE + `<${P}-rescale keep-proportions=\"true\"></${P}-rescale>`\n })\n], PacemContenteditableImageCommandElement);\nexport { PacemContenteditableImageCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PropertyConverters, Utils, Watch } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils } from './utils';\n//namespace Pacem.Components.Scaffolding {\nexport var KnownExecCommand;\n(function (KnownExecCommand) {\n KnownExecCommand[\"Bold\"] = \"bold\";\n KnownExecCommand[\"Italic\"] = \"italic\";\n KnownExecCommand[\"Underline\"] = \"underline\";\n KnownExecCommand[\"StrikeThrough\"] = \"strikeThrough\";\n KnownExecCommand[\"OrderedList\"] = \"insertOrderedList\";\n KnownExecCommand[\"UnorderedList\"] = \"insertUnorderedList\";\n KnownExecCommand[\"JustifyLeft\"] = \"justifyLeft\";\n KnownExecCommand[\"JustifyCenter\"] = \"justifyCenter\";\n KnownExecCommand[\"JustifyRight\"] = \"justifyRight\";\n KnownExecCommand[\"JustifyFull\"] = \"justifyFull\";\n //Copy = 'copy',\n //Cut = 'cut',\n //Paste = 'paste'\n //Undo = 'undo',\n //Redo = 'redo',\n})(KnownExecCommand || (KnownExecCommand = {}));\n;\n/**\n * Returns relevant material icon ligatures\n * @param cmd A known command\n */\nfunction getKnownCommandIcon(cmd) {\n const lower_cmd = cmd?.toLowerCase();\n switch (lower_cmd) {\n case \"bold\":\n case \"italic\":\n return 'format_' + lower_cmd;\n case 'underline':\n return 'format_underlined';\n case 'strikethrough':\n return 'strikethrough_s';\n case 'insertorderedlist':\n return 'format_list_numbered';\n case 'insertunorderedlist':\n return 'format_list_bulleted';\n case 'justifyleft':\n case 'justifyright':\n case 'justifycenter':\n return 'format_align_' + lower_cmd.substr(7 /* 'justify' */);\n case 'justifyfull':\n return 'format_align_justify';\n default:\n return 'help_outline';\n }\n}\nfunction getKnownCommandFilters(cmd, argument) {\n const lower_cmd = cmd?.toLowerCase();\n switch (lower_cmd) {\n case \"bold\":\n return ['b', 'strong'];\n case \"italic\":\n return ['i', 'em'];\n case 'underline':\n return ['u'];\n case 'strikethrough':\n return ['strike', 's', 'del'];\n case 'insertorderedlist':\n return ['ol'];\n case 'insertunorderedlist':\n return ['ul'];\n case 'justifyleft':\n return [{ style: { name: 'text-align', value: 'left' } }];\n case 'justifyright':\n return [{ style: { name: 'text-align', value: 'right' } }];\n case 'justifycenter':\n return [{ style: { name: 'text-align', value: 'center' } }];\n case 'justifyfull':\n return [{ style: { name: 'text-align', value: 'justify' } }];\n case 'formatblock':\n return [argument];\n default:\n return ['none'];\n }\n}\nlet PacemContenteditableExecCommandElement = class PacemContenteditableExecCommandElement extends PacemContenteditableButtonCommandElement {\n _matchRelevance(range, arg) {\n const found = (typeof arg === 'object') ?\n ContenteditableUtils.findSurroundingNode(range, node => node instanceof HTMLElement\n && (Utils.isNullOrEmpty(arg.tagName) || node.tagName === arg.tagName.toUpperCase())\n && node.style[arg.style.name] === arg.style.value)\n : ContenteditableUtils.findSurroundingNode(range, arg);\n return !Utils.isNull(found);\n }\n isRelevant(range) {\n const filters = getKnownCommandFilters(this.command, this.argument);\n for (let f of filters) {\n if (this._matchRelevance(range, f)) {\n return true;\n }\n }\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'command') {\n if (Utils.isNullOrEmpty(this.icon) || this.icon === getKnownCommandIcon(old)) {\n this.icon = getKnownCommandIcon(val);\n }\n if (Utils.isNullOrEmpty(this.altText) || this.altText === old) {\n this.altText = val;\n }\n }\n }\n exec() {\n return new Promise((resolve, _) => {\n // check if selection is around an 'inert' ([contenteditable=false]) element\n const r = this.range, cmdfilter = getKnownCommandFilters(this.command, this.argument)[0];\n if (!Utils.isNull(r)) {\n // #region wrap/unwrap (manages contenteditable=false 'islands')\n const island = ContenteditableUtils.testInertElementWrapping(r);\n if (island.result\n && typeof cmdfilter === 'string' && ['b', 'i', 'strike', 'u'].indexOf(cmdfilter) >= 0) {\n // wrap or remove?\n const wrapper = ContenteditableUtils.findSurroundingNode(r, cmdfilter);\n if (!Utils.isNull(wrapper) && wrapper.childNodes.length === 1) {\n // remove\n const newChild = wrapper.childNodes.item(0), select = island.element;\n wrapper.parentElement.replaceChild(newChild, wrapper);\n ContenteditableUtils.select(select);\n }\n else {\n // wrap\n const n = document.createElement(cmdfilter), select = island.element;\n const frag = r.extractContents();\n r.insertNode(n);\n n.append(frag);\n ContenteditableUtils.select(select);\n }\n }\n // #endregion\n else {\n document.execCommand(this.command, false, this.argument);\n }\n }\n resolve();\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableExecCommandElement.prototype, \"command\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemContenteditableExecCommandElement.prototype, \"argument\", void 0);\nPacemContenteditableExecCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-execcommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableExecCommandElement);\nexport { PacemContenteditableExecCommandElement };\n","import { Utils, PCSS } from '@pacem/pacem-core';\nimport { PacemContenteditableHistoryCommandElement } from './historycommand';\nimport { PacemContenteditableAlignCommandElement } from './aligncommand';\nimport { PacemContenteditableLinkCommandElement } from './linkcommand';\nimport { PacemContenteditableImageCommandElement } from './imagecommand';\nimport { PacemContenteditableExecCommandElement, KnownExecCommand } from './execcommand';\n//namespace Pacem.Components.Scaffolding {\nfunction isRoot(element) {\n return element instanceof HTMLDivElement\n && element.contentEditable === 'true'\n && element.hasAttribute('pacem')\n && element.hasAttribute('role')\n && element.attributes['role'].value === 'presenter';\n}\nexport class ContenteditableDOMObserver {\n constructor(contentElement, mutationCallback, selector = '*[contenteditable=false]') {\n this.#callback = mutationCallback;\n this.#selector = selector;\n this.#mutationObserver = new MutationObserver(list => {\n const fn = (item, removed) => {\n item.childNodes.forEach(i => /* recursion here */ fn(i, removed));\n mutationCallback(item, removed);\n };\n for (let entry of list) {\n const added = entry.addedNodes;\n const removed = entry.removedNodes;\n for (let j = 0; j < added.length; j++) {\n const item = added.item(j);\n fn(item, false);\n }\n for (let j = 0; j < removed.length; j++) {\n const item = removed.item(j);\n fn(item, true);\n }\n }\n });\n this._initContainer(contentElement);\n }\n _initContainer(contentElement) {\n contentElement.querySelectorAll(this.#selector).forEach(el => this.#callback(el));\n this.#mutationObserver.observe(contentElement, { subtree: true, childList: true });\n this.#contentElement = contentElement;\n }\n _disposeContainer(contentElement) {\n const observer = this.#mutationObserver;\n if (!Utils.isNull(observer)) {\n observer.disconnect();\n }\n contentElement.querySelectorAll(this.#selector).forEach(el => this.#callback(el, true));\n }\n dispose() {\n this._disposeContainer(this.#contentElement);\n }\n #selector;\n #callback;\n #contentElement;\n #mutationObserver;\n}\nexport class ContenteditableUtils {\n static getDefaultDashboard() {\n const frag = new DocumentFragment();\n const toolbar0 = document.createElement('div');\n Utils.addClass(toolbar0, PCSS + '-contenteditable-toolbar');\n const undo = new PacemContenteditableHistoryCommandElement();\n undo.command = 'undo';\n undo.keyboardShortcut = \"Ctrl+Z\";\n const redo = new PacemContenteditableHistoryCommandElement();\n redo.command = 'redo';\n redo.keyboardShortcut = \"Ctrl+Y\";\n toolbar0.append(undo, redo);\n const separator0 = document.createElement('div');\n Utils.addClass(separator0, PCSS + '-contenteditable-separator');\n const toolbar1 = document.createElement('div');\n Utils.addClass(toolbar1, PCSS + '-contenteditable-toolbar');\n const bold = new PacemContenteditableExecCommandElement();\n bold.command = KnownExecCommand.Bold;\n bold.keyboardShortcut = \"Ctrl+B\";\n const italic = new PacemContenteditableExecCommandElement();\n italic.command = KnownExecCommand.Italic;\n italic.keyboardShortcut = \"Ctrl+I\";\n const underline = new PacemContenteditableExecCommandElement();\n underline.command = KnownExecCommand.Underline;\n underline.keyboardShortcut = \"Ctrl+U\";\n const strike = new PacemContenteditableExecCommandElement();\n strike.command = KnownExecCommand.StrikeThrough;\n underline.keyboardShortcut = \"Ctrl+K\";\n const ul = new PacemContenteditableExecCommandElement();\n ul.command = KnownExecCommand.UnorderedList;\n const ol = new PacemContenteditableExecCommandElement();\n ol.command = KnownExecCommand.OrderedList;\n const alignLeft = new PacemContenteditableAlignCommandElement();\n alignLeft.align = 'left';\n const alignCenter = new PacemContenteditableAlignCommandElement();\n alignCenter.align = 'center';\n const alignRight = new PacemContenteditableAlignCommandElement();\n alignRight.align = 'right';\n const justify = new PacemContenteditableAlignCommandElement();\n justify.align = 'justify';\n toolbar1.append(bold, italic, underline, strike, ul, ol, alignLeft, alignCenter, alignRight, justify);\n const separator1 = document.createElement('div');\n Utils.addClass(separator1, PCSS + '-contenteditable-separator');\n const toolbar2 = document.createElement('div');\n Utils.addClass(toolbar2, PCSS + '-contenteditable-toolbar');\n const link = new PacemContenteditableLinkCommandElement();\n const img = new PacemContenteditableImageCommandElement();\n toolbar2.append(link, img);\n frag.append(toolbar0, separator0, toolbar1, separator1, toolbar2);\n return frag;\n }\n static findSurroundingNode(range, arg1) {\n var node = range instanceof Node ? range : range.commonAncestorContainer;\n while (node && !(typeof arg1 === 'string' && node instanceof Element && node.tagName === arg1.toUpperCase()\n || typeof arg1 === 'function' && Utils.isNull(arg1.prototype) && arg1(node)\n || typeof arg1 === 'function' && !Utils.isNull(arg1.prototype) && node instanceof arg1)) {\n const parent = node.parentNode;\n if (isRoot(parent)) {\n node = null;\n break;\n }\n node = parent;\n }\n return node;\n }\n static findSurroundingBlockElement(range) {\n return this.findSurroundingNode(range, ContenteditableUtils.isBlockElement);\n }\n static findSurroundingSiblingBlockElements(range) {\n let output = [];\n if (isRoot(range.startContainer)) {\n if (!range.collapsed) {\n const root = range.startContainer;\n for (let k = range.startOffset; k <= range.endOffset; k++) {\n const child = root.children.item(k);\n if (this.isBlockElement(child)) {\n output.push(root.children.item(k));\n }\n }\n }\n return output;\n }\n // simil-collapsed\n if (range.startContainer === range.endContainer) {\n let retval = range.startContainer;\n while (!ContenteditableUtils.isBlockElement(retval) && retval.parentElement.contentEditable != 'true') {\n retval = retval.parentElement;\n }\n return retval instanceof Element ? [retval] :\n (retval.parentElement.contentEditable === 'true' ? [] : [retval.parentElement]);\n }\n // generic\n let root = range.commonAncestorContainer, started = false;\n for (let j = 0; j < root.childNodes.length; j++) {\n const iNode = root.childNodes.item(j);\n const pick = (!started && iNode.contains(range.startContainer))\n || started;\n if (pick && ContenteditableUtils.isBlockElement(iNode)) {\n output.push(iNode);\n started = true;\n if (iNode.contains(range.endContainer)) {\n break;\n }\n }\n }\n return started ? output : (root instanceof Element && !isRoot(root) ? [root] : []);\n }\n static findContainingRootElements(range) {\n const range1 = range.cloneRange(), range2 = range.cloneRange();\n range1.collapse(true);\n range2.collapse();\n let root = this.findSurroundingNode(range1, n => n.parentElement.contentEditable === 'true');\n const retval = [root];\n while (!root.contains(range2.startContainer)) {\n retval.push(root = root.nextElementSibling);\n }\n return retval;\n }\n static isBlockElement(node) {\n return node instanceof Element && !getComputedStyle(node).display.startsWith('inline');\n }\n static select(node, inside = false) {\n const range = document.createRange();\n if (!inside) {\n range.setStartBefore(node);\n range.setEndAfter(node);\n }\n else {\n range.setStart(node, 0);\n range.setEnd(node, node.childNodes.length);\n }\n const selection = document.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n return range;\n }\n static copyAttributes(to, from) {\n const attrs = from.attributes;\n for (let j = 0; j < attrs.length; j++) {\n const attr = attrs.item(j);\n to.setAttribute(attr.name, attr.value);\n }\n }\n /**\n * Checks whether the provided range wraps an 'inert' (contentEditable=false) element, and returns result accordingly.\n * @param range\n */\n static testInertElementWrapping(range) {\n if (!Utils.isNull(range)) {\n const parent = range.startContainer, index = range.startOffset;\n var node;\n if (parent === range.endContainer && index == (range.endOffset - 1) && (node = parent.childNodes.item(index)) instanceof HTMLElement && node.contentEditable === 'false') {\n return { result: true, element: node };\n }\n }\n return { result: false };\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, Defaults, P, PropertyConverters, Utils, Watch } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils } from './utils';\n//namespace Pacem.Components.Scaffolding {\nfunction getAlignIcon(align) {\n return 'format_align_' + align;\n}\nlet PacemContenteditableAlignCommandElement = class PacemContenteditableAlignCommandElement extends PacemContenteditableButtonCommandElement {\n isRelevant(range) {\n const els = ContenteditableUtils.findSurroundingSiblingBlockElements(range);\n if (Utils.isNullOrEmpty(els)) {\n return false;\n }\n const el = els[0], textAlign = getComputedStyle(el).textAlign;\n return textAlign == this.align;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'align') {\n if (Utils.isNullOrEmpty(this.icon) || this.icon === getAlignIcon(old)) {\n this.icon = getAlignIcon(val);\n }\n if (Utils.isNullOrEmpty(this.altText) || this.altText === old) {\n this.altText = val;\n }\n }\n }\n exec() {\n const elements = ContenteditableUtils.findSurroundingSiblingBlockElements(this.range);\n let targetAlign;\n for (let el of elements) {\n if (ContenteditableUtils.isBlockElement(el) && el instanceof HTMLElement) {\n // normalize alignment: pick one element (the 1st one) to rule them all\n if (Utils.isNull(targetAlign)) {\n targetAlign = Utils.hasClass(el, 'text-' + this.align) ? '' : this.align;\n }\n el.style.textAlign = '';\n Utils.removeClass(el, 'text-left text-right text-center text-justify');\n if (!Utils.isEmpty(targetAlign)) {\n Utils.addClass(el, 'text-' + targetAlign);\n }\n }\n }\n return Promise.resolve();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableAlignCommandElement.prototype, \"align\", void 0);\nPacemContenteditableAlignCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-aligncommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableAlignCommandElement);\nexport { PacemContenteditableAlignCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters, ViewChild, PCSS } from '@pacem/pacem-core';\nimport { ContenteditableUtils, ContenteditableDOMObserver } from './utils';\nimport { PacemContenteditableCommandElement } from '../contenteditable';\n//namespace Pacem.Components.Scaffolding {\nfunction insertPlaceholder(range, placeholder) {\n const ins = document.createElement('ins');\n ins.textContent = placeholder;\n ins.setAttribute('contenteditable', 'false');\n // not necessary:\n // ins.style.display = 'inline-block';\n ins.tabIndex = 0;\n range.deleteContents();\n range.insertNode(ins);\n return ins;\n}\nfunction isPlaceholder(node) {\n return node instanceof HTMLModElement && node.tagName === 'INS';\n}\nfunction isRelevant(range) {\n const wraps = ContenteditableUtils.testInertElementWrapping(range);\n if (wraps.result && isPlaceholder(wraps.element)) {\n const element = wraps.element, placeholder = element.textContent;\n return { result: true, element, placeholder };\n }\n return { result: false };\n}\nlet PacemContenteditablePlaceholderElement = class PacemContenteditablePlaceholderElement extends PacemContenteditableCommandElement {\n constructor() {\n super(...arguments);\n this._focusHandler = (evt) => {\n const ins = evt.target;\n this.range = ContenteditableUtils.select(ins);\n };\n // #endregion\n }\n #relevancy;\n #normalizedDatasource;\n cleanUp(content) {\n content.querySelectorAll('ins[contenteditable=false]').forEach(ins => {\n Utils.removeClass(ins, 'placeholder-selected');\n });\n }\n exec(ph) {\n const el = insertPlaceholder(this.range, ph);\n const range = ContenteditableUtils.select(el);\n range.collapse(false);\n return Promise.resolve(el);\n }\n isRelevant(_) {\n return this.#relevancy?.result ?? false;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._fillDropdown();\n this._initContainer();\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._fillDropdown();\n break;\n case 'contentElement':\n if (old) {\n this._disposeContainer(old);\n }\n if (val) {\n this._initContainer(val);\n }\n break;\n case 'range':\n this._changeRelevancy();\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeContainer();\n super.disconnectedCallback();\n }\n _changeRelevancy(range = this.range) {\n const old = this.#relevancy;\n if (!Utils.isNull(old?.element)) {\n Utils.removeClass(old.element, 'placeholder-selected');\n }\n const val = this.#relevancy = isRelevant(range);\n if (!Utils.isNull(val?.element)) {\n Utils.addClass(val.element, 'placeholder-selected');\n }\n if (val.result) {\n this._dropdown.value = val.placeholder;\n }\n else {\n this._dropdown.popout();\n this._dropdown.value = void 0;\n }\n }\n _fillDropdown(datasource = this.datasource || []) {\n const ds = this.#normalizedDatasource = datasource.map(i => { return typeof i === 'string' ? { placeholder: i, definition: i } : i; });\n const dd = this._dropdown;\n dd.textProperty =\n dd.valueProperty = 'placeholder';\n dd.datasource = ds;\n }\n // #region mutation observer\n #observer;\n _initContainer(contentElement = this.contentElement) {\n this.#observer = new ContenteditableDOMObserver(contentElement, (item, removed) => {\n if (isPlaceholder(item)) {\n if (removed) {\n this._downgradePlaceholderElement(item);\n }\n else {\n this._enhancePlaceholderElement(item);\n }\n }\n }, 'ins[contenteditable=false]');\n }\n _disposeContainer(_ = this.contentElement) {\n const observer = this.#observer;\n if (!Utils.isNull(observer)) {\n observer.dispose();\n }\n }\n _enhancePlaceholderElement(ins) {\n ins.addEventListener('focus', this._focusHandler, false);\n }\n _downgradePlaceholderElement(ins) {\n ins.removeEventListener('focus', this._focusHandler, false);\n }\n};\n__decorate([\n ViewChild('template')\n], PacemContenteditablePlaceholderElement.prototype, \"_itemtemplate\", void 0);\n__decorate([\n ViewChild(P + '-suggest')\n], PacemContenteditablePlaceholderElement.prototype, \"_dropdown\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemContenteditablePlaceholderElement.prototype, \"datasource\", void 0);\nPacemContenteditablePlaceholderElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-placeholder', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<template>\r\n<${P}-span text=\"{{ ^item.viewValue }}\" class=\"text-tech\"></${P}-span>\r\n<${P}-markdown hide=\"{{ $pacem.isNullOrEmpty(^item.data.definition) || ^item.viewValue === ^item.data.definition }}\" class=\"${PCSS}-margin margin-0 text-small\" value=\"{{ ^item.data.definition }}\"></${P}-markdown>\r\n</template>\r\n<${P}-suggest placeholder=\"Placeholder\" class=\"pacem-button button\" disabled=\"{{ $pacem.isNull(:host.range) }}\"\r\n on-change=\":host.execCommand($this.value)\"\r\n css-class=\"{{ {'text-primary': :host.isRelevant(:host.range)} }}\" \r\n compare-by=\"placeholder\" text-property=\"placeholder\" itemtemplate=\"{{ ::_itemtemplate }}\" prevent-focus=\"true\" allow-typing=\"false\"></${P}-suggest>`\n })\n], PacemContenteditablePlaceholderElement);\nexport { PacemContenteditablePlaceholderElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { ContenteditableUtils } from './utils';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\n//namespace Pacem.Components.Scaffolding {\nlet PacemContenteditableWrapCommandElement = class PacemContenteditableWrapCommandElement extends PacemContenteditableButtonCommandElement {\n isRelevant(range) {\n return !Utils.isNull(ContenteditableUtils.findSurroundingNode(range, this.tagname));\n }\n exec() {\n return new Promise((resolve, _) => {\n const tagName = this.tagname;\n if (!Utils.isNullOrEmpty(tagName)) {\n const range = this.range;\n const alreadyEl = ContenteditableUtils.findSurroundingNode(range, tagName)\n || ContenteditableUtils.findSurroundingNode(range.startContainer, tagName)\n || ContenteditableUtils.findSurroundingNode(range.endContainer, tagName);\n if (Utils.isNull(alreadyEl)) {\n // WRAP\n const elementsToWrap = ContenteditableUtils.findSurroundingSiblingBlockElements(range);\n if (!Utils.isNullOrEmpty(elementsToWrap)) {\n const newChild = document.createElement(tagName);\n if (elementsToWrap.length === 1) {\n // replace\n const repl = elementsToWrap[0];\n range.setStart(repl, 0);\n range.setEnd(repl, repl.childNodes.length);\n const frag = range.extractContents();\n newChild.append(frag);\n ContenteditableUtils.copyAttributes(newChild, repl);\n repl.parentElement.insertBefore(newChild, repl);\n repl.remove();\n }\n else {\n // wrap\n range.setStartBefore(elementsToWrap[0]);\n range.setEndAfter(elementsToWrap[elementsToWrap.length - 1]);\n const frag = range.extractContents();\n newChild.append(frag);\n range.insertNode(newChild);\n }\n const r = ContenteditableUtils.select(newChild, true);\n r.collapse();\n }\n }\n else {\n // UNWRAP\n range.setStart(alreadyEl, 0);\n range.setEnd(alreadyEl, alreadyEl.childNodes.length);\n // replace or unwrap\n let replace = false;\n const childNodes = alreadyEl.childNodes;\n for (let j = 0; j < childNodes.length; j++) {\n const child = childNodes.item(j);\n if (!ContenteditableUtils.isBlockElement(child)) {\n replace = true;\n break;\n }\n }\n if (replace) {\n const p = document.createElement('p');\n ContenteditableUtils.copyAttributes(p, alreadyEl);\n p.append(range.extractContents());\n alreadyEl.parentNode.replaceChild(p, alreadyEl);\n const r = ContenteditableUtils.select(p, true);\n r.collapse();\n }\n else {\n // unwrap\n alreadyEl.parentNode.replaceChild(range.extractContents(), alreadyEl);\n const r = ContenteditableUtils.select(range.endContainer, true);\n r.collapse();\n }\n }\n }\n resolve();\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableWrapCommandElement.prototype, \"tagname\", void 0);\nPacemContenteditableWrapCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-wrapcommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableWrapCommandElement);\nexport { PacemContenteditableWrapCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, CustomElement, CustomElementUtils, CustomEventUtils, Defaults, P, PCSS, PropertyConverters, stopPropagationHandler, Utils, ViewChild, Watch } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst JsonOrStringConverter = {\n convert: (attr, el) => {\n return /\\{.+\\}/.test(attr) ? PropertyConverters.Json.convert(attr) : PropertyConverters.String.convert(attr);\n },\n convertBack: (prop, el) => {\n if (typeof prop === 'string') {\n return prop;\n }\n return PropertyConverters.Json.convertBack(prop, el);\n }\n};\n// #region MONTH-PICKER (util component)\nfunction buildMonthGrid() {\n let header = '';\n for (let month = 0; month < 12; month++) {\n header += `<div class=\"calendar-month month-${month + 1}\"><${P}-span class=\"month-button text-ellipsed\" on-click=\":host._setMonth(${month})\" css-class=\"{{ { 'selected-month': :host._isSelectedMonth(${month}, :host.month, :host.viewYear), 'this-month': :host._isThisMonth(${month}, :host.viewYear) } }}\" text=\"{{ :host._getMonthLabel(${month}) }}\"></${P}-span></div>`;\n }\n return header;\n}\nlet PacemCalendarMonthPickerElement = class PacemCalendarMonthPickerElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'viewYear':\n this.dispatchEvent(new CustomEvent('viewyearchange', { detail: new Date(val, 0, 1), bubbles: false, cancelable: false }));\n Utils.removeClass(this, \"viewyear-next viewyear-previous\");\n requestAnimationFrame(() => {\n Utils.addClass(this, old > val ? \"viewyear-previous\" : \"viewyear-next\");\n });\n break;\n }\n }\n _getMonthLabel(m) {\n const year = new Date().getFullYear();\n const date = new Date(year, m, 1);\n return date.toLocaleString(Utils.lang(this), { month: 'short' });\n }\n _isThisMonth(m, v = this.viewYear) {\n return this._isSelectedMonth(m, new Date(), v);\n }\n _isSelectedMonth(m, d = this.month, v = this.viewYear) {\n const actual = Utils.parseDate(d);\n if (!Utils.Dates.isDate(actual)) {\n return false;\n }\n const viewYear = v ?? new Date().getFullYear();\n return actual.getMonth() === m && actual.getFullYear() === viewYear;\n }\n _setMonth(m) {\n const year = this.viewYear;\n const date = new Date(year, m, 1);\n this.month = date;\n this.dispatchEvent(new CustomEvent('monthselect', { detail: date, bubbles: false, cancelable: false }));\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarMonthPickerElement.prototype, \"month\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarMonthPickerElement.prototype, \"viewYear\", void 0);\nPacemCalendarMonthPickerElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-month-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-month-picker\">${buildMonthGrid()}</div>`\n })\n], PacemCalendarMonthPickerElement);\nexport { PacemCalendarMonthPickerElement };\nexport class CalendarDateUnselectEvent extends ComponentsUI.UI.DateSelectEvent {\n constructor() {\n super(void 0);\n }\n}\n// #endregion\n// #region YEAR-PICKER (util component)\nconst YEARS_IN_RANGE = 12;\nfunction buildYearGrid() {\n let header = '';\n for (let year = 0; year < YEARS_IN_RANGE; year++) {\n header += `<div class=\"calendar-year year-${year + 1}\"><${P}-span class=\"year-button text-ellipsed\" on-click=\":host._setYear(${year})\" css-class=\"{{ { 'selected-year': :host._isSelectedYear(${year}, :host.year, :host.viewYear), 'this-year': :host._isThisYear(${year}, :host.viewYear) } }}\" text=\"{{ :host._getYearLabel(${year}, :host.viewYear) }}\"></${P}-span></div>`;\n }\n return header;\n}\nfunction rangeFirstYear(y) {\n const mod = y % 10;\n return y - mod;\n}\nlet PacemCalendarYearPickerElement = class PacemCalendarYearPickerElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'viewYear':\n this.dispatchEvent(new CustomEvent('viewyearchange', { detail: new Date(val, 0, 1), bubbles: false, cancelable: false }));\n Utils.removeClass(this, \"viewyear-next viewyear-previous\");\n requestAnimationFrame(() => {\n Utils.addClass(this, old > val ? \"viewyear-previous\" : \"viewyear-next\");\n });\n break;\n }\n }\n _getYearLabel(y, year = this.viewYear) {\n const first = rangeFirstYear(year);\n return '' + (first + y);\n }\n _isThisYear(y, v = this.viewYear) {\n return this._isSelectedYear(y, new Date(), v);\n }\n _isSelectedYear(y, d = this.year, v = this.viewYear) {\n const actual = Utils.parseDate(d);\n if (!Utils.Dates.isDate(actual)) {\n return false;\n }\n const start = rangeFirstYear(v), computed = start + y;\n ;\n return actual.getFullYear() === computed;\n }\n _setYear(y) {\n const v = this.viewYear, first = rangeFirstYear(v);\n const date = new Date(first + y, 0, 1);\n this.year = date;\n this.dispatchEvent(new CustomEvent('yearselect', { detail: date, bubbles: false, cancelable: false }));\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarYearPickerElement.prototype, \"year\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarYearPickerElement.prototype, \"viewYear\", void 0);\nPacemCalendarYearPickerElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-year-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-year-picker\">${buildYearGrid()}</div>`\n })\n], PacemCalendarYearPickerElement);\nexport { PacemCalendarYearPickerElement };\n// #endregion\nfunction buildCalendarHeader() {\n let header = '';\n for (let day = 0; day < 7; day++) {\n header += `<${P}-span class=\"calendar-heading day-${day + 1} text-ellipsed\" text=\"{{ :host._getHeaderLabel(:host._week[${day}]) }}\"></${P}-span>`;\n }\n return `<${P}-panel hide=\"{{ :host.viewmode !== 'calendar' }}\" class=\"calendar-header\">${header}</${P}-panel>`;\n}\nlet PacemCalendarPickerElement = class PacemCalendarPickerElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this.viewmode = 'calendar';\n this.#locked = false;\n this._swipeHandler = (e) => {\n const dir = e.detail.direction;\n switch (dir) {\n case 'left':\n this._next(e);\n break;\n case 'right':\n this._prev(e);\n break;\n }\n };\n this._clearBtnHandler = (evt) => {\n evt.preventDefault();\n this._viewDate = new Date();\n this.changeHandler(new CalendarDateUnselectEvent());\n };\n this._viewDateChangeHandler = (e) => {\n this._onViewDateChange(e);\n };\n this._popCalendarHandler = (e) => {\n if (this.#locked) {\n return;\n }\n this.viewmode = 'calendar';\n const dateValue = Utils.parseDate(this.value);\n this._calendar.viewDate =\n this._monthPicker.month =\n this._yearPicker.year =\n Utils.Dates.isDate(dateValue) ? dateValue : this._calendar.viewDate;\n const offset = Utils.offset(this._input);\n const dropdown = this._dropdown;\n dropdown.style.top = (offset.top + offset.height) + 'px';\n dropdown.style.left = offset.left + 'px';\n dropdown.hidden = false;\n requestAnimationFrame(() => {\n Utils.addClass(dropdown, 'dropdown-in');\n });\n };\n this._hideCalendarHandler = (e) => {\n const path = e.composedPath() || [];\n if (path.indexOf(this._input) >= 0 || path.indexOf(this._dropdown) >= 0) {\n return;\n }\n this._hideCalendar();\n };\n }\n #locked;\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'viewmode':\n case '_viewDate':\n this._onViewDateChange(this._viewDate);\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const dropdown = this._dropdown = this._proxy.dom[0];\n const calendar = this._calendar = dropdown.querySelector(P + '-calendar');\n const monthPicker = this._monthPicker = dropdown.querySelector(P + '-calendar-month-picker');\n const yearPicker = this._yearPicker = dropdown.querySelector(P + '-calendar-year-picker');\n this._monthLabel = dropdown.querySelector('.calendar-month');\n this._yearLabel = dropdown.querySelector('.calendar-year');\n this._rangeLabel = dropdown.querySelector('.calendar-year-range');\n const now = this._calendar.now = new Date();\n const dateValue = Utils.Dates.parse(this.value);\n const hasValue = Utils.Dates.isDate(dateValue);\n const date = hasValue ? dateValue : now;\n calendar.dayLabelFormatter = (d) => {\n return Utils.parseDate(d).toLocaleString(Utils.lang(this), { day: 'numeric' });\n };\n monthPicker.addEventListener('viewyearchange', this._viewDateChangeHandler, false);\n yearPicker.addEventListener('viewyearchange', this._viewDateChangeHandler, false);\n calendar.addEventListener('viewdatechange', this._viewDateChangeHandler, false);\n calendar.viewDate = date;\n calendar.date = dateValue;\n const input = this._input;\n input.addEventListener('focus', this._popCalendarHandler, false);\n input.addEventListener('mousedown', this._popCalendarHandler, false);\n dropdown.addEventListener('mousedown', stopPropagationHandler, false);\n window.document.body.addEventListener('mousedown', this._hideCalendarHandler, true);\n this._clearButton.addEventListener('mousedown', this._clearBtnHandler, false);\n // swiper\n const swiper = new Components.PacemSwipeElement();\n calendar.behaviors.push(swiper);\n monthPicker.behaviors.push(swiper);\n yearPicker.behaviors.push(swiper);\n swiper.addEventListener('swipe', this._swipeHandler, false);\n const body = CustomElementUtils.findAncestorShell(this);\n this._swiper = body.appendChild(swiper);\n }\n disconnectedCallback() {\n const input = this._input;\n if (!Utils.isNull(input)) {\n this._clearButton.removeEventListener('mousedown', this._clearBtnHandler, false);\n input.removeEventListener('focus', this._popCalendarHandler, false);\n input.removeEventListener('mousedown', this._popCalendarHandler, false);\n this._dropdown.removeEventListener('mousedown', stopPropagationHandler, false);\n window.document.body.removeEventListener('mousedown', this._hideCalendarHandler, true);\n this._calendar.removeEventListener('viewdatechange', this._viewDateChangeHandler, false);\n this._monthPicker.removeEventListener('viewyearchange', this._viewDateChangeHandler, false);\n this._yearPicker.removeEventListener('viewyearchange', this._viewDateChangeHandler, false);\n }\n const swiper = this._swiper;\n if (!Utils.isNull(swiper)) {\n const calendar = this._calendar, monthPicker = this._monthPicker, yearPicker = this._yearPicker;\n for (let el of [calendar, monthPicker, yearPicker]) {\n const behaviors = el.behaviors, swipeIndex = behaviors.indexOf(swiper);\n if (swipeIndex >= 0) {\n el.behaviors.splice(swipeIndex, 1);\n }\n }\n swiper.removeEventListener('swipe', this._swipeHandler, false);\n swiper.remove();\n this._swiper = null;\n }\n super.disconnectedCallback();\n }\n _getHeaderLabel(d, mode = this.viewmode) {\n const dte = Utils.parseDate(d);\n if (Utils.Dates.isDate(dte)) {\n return dte.toLocaleString(Utils.lang(this), { weekday: 'narrow' });\n }\n return '...';\n }\n _prev(e) {\n let months = -1;\n switch (this.viewmode) {\n case 'month':\n months = -12;\n break;\n case 'year':\n months = -120;\n break;\n }\n this._jumpMonths(months);\n }\n _next(e) {\n let months = 1;\n switch (this.viewmode) {\n case 'month':\n months = 12;\n break;\n case 'year':\n months = 120;\n break;\n }\n this._jumpMonths(months);\n }\n _jumpMonths(m) {\n const vd = Utils.parseDate(this._viewDate);\n this._viewDate = Utils.Dates.addMonths(vd, m);\n }\n _setMonth(e) {\n this._viewDate = e.detail;\n this.viewmode = 'calendar';\n }\n _setYear(e) {\n this._viewDate = e.detail;\n this.viewmode = 'month';\n }\n _onViewDateChange(e) {\n if (Utils.isNullOrEmpty(e)) {\n return;\n }\n const date = Utils.parseDate(this._viewDate);\n if (Utils.Dates.isDate(date) && !Utils.isNull(this._monthLabel)) {\n switch (this.viewmode) {\n case 'month':\n this._yearLabel.text = date.toLocaleString(Utils.lang(this), { year: 'numeric' });\n break;\n case 'year':\n const fy = rangeFirstYear(date.getFullYear());\n this._rangeLabel.text = `${fy} - ${fy + YEARS_IN_RANGE - 1}`;\n break;\n default:\n this._monthLabel.text = date.toLocaleString(Utils.lang(this), { month: 'long', year: 'numeric' });\n break;\n }\n }\n }\n _hideCalendar() {\n // animation just in case\n Utils.removeClass(this._dropdown, 'dropdown-in');\n Utils.addAnimationEndCallback(this._dropdown, e => {\n this._dropdown.hidden = true;\n Utils.removeClass(this._dropdown, 'dropdown-select');\n }, 250);\n }\n get inputFields() {\n return [this._input];\n }\n toggleReadonlyView(readonly) {\n if (this.isReady) {\n this._input.readOnly = true;\n this._input.hidden = readonly;\n this._span.hide = !readonly;\n }\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, ComponentsUI.UI.DateSelectEvent)) {\n Utils.addClass(this._dropdown, 'dropdown-select');\n const unselecting = CustomEventUtils.isInstanceOf(evt, CalendarDateUnselectEvent);\n if (unselecting) {\n this.#locked = true;\n }\n this.focus();\n this.#locked = false;\n this._hideCalendar();\n resolve(this.value = evt.detail);\n }\n else {\n resolve(this.value);\n }\n });\n }\n acceptValue(val) {\n this._input.value = this.viewValue;\n const calendar = this._calendar;\n if (!Utils.isNull(calendar)) {\n const dateVal = Utils.parseDate(val);\n if (Utils.Dates.isDate(dateVal)) {\n calendar.viewDate = calendar.date = dateVal;\n }\n else {\n calendar.date = void 0;\n }\n }\n }\n getViewValue(value) {\n const v = Utils.Dates.parse(value);\n if (Utils.Dates.isDate(v)) {\n return Utils.core.date(v, this.format || 'short', Utils.lang(this));\n }\n return '';\n }\n compareValuePropertyValues(old, val) {\n const dold = Utils.parseDate(old), dval = Utils.parseDate(val);\n if (Utils.isNullOrEmpty(dold) && Utils.isNullOrEmpty(dval)) {\n return true;\n }\n if (Utils.isNullOrEmpty(dold) || Utils.isNullOrEmpty(dval)) {\n return false;\n }\n return dold.valueOf() == dval.valueOf();\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Datetime.convert(attr);\n }\n};\n__decorate([\n ViewChild(\"input[type=text]\")\n], PacemCalendarPickerElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemCalendarPickerElement.prototype, \"_span\", void 0);\n__decorate([\n ViewChild(`${P}-button[clear]`)\n], PacemCalendarPickerElement.prototype, \"_clearButton\", void 0);\n__decorate([\n ViewChild(P + \"-shell-proxy\")\n], PacemCalendarPickerElement.prototype, \"_proxy\", void 0);\n__decorate([\n Watch({ emit: false, converter: JsonOrStringConverter })\n], PacemCalendarPickerElement.prototype, \"format\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemCalendarPickerElement.prototype, \"disabledRanges\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarPickerElement.prototype, \"weekStart\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarPickerElement.prototype, \"viewmode\", void 0);\n__decorate([\n Watch()\n], PacemCalendarPickerElement.prototype, \"_week\", void 0);\n__decorate([\n Watch()\n], PacemCalendarPickerElement.prototype, \"_viewDate\", void 0);\nPacemCalendarPickerElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-calendar-picker\">\r\n <input type=\"text\" class=\"${PCSS}-input\" /><${P}-span text=\"{{ :host.viewValue }}\" class=\"${PCSS}-readonly\"></${P}-span>\r\n <${P}-button class=\"button-flat ${PCSS}-anim anim-pop anim-sudden anim-quick pos-absolute absolute-right absolute-top display-block ${PCSS}-margin margin-0\"\r\n tab-order=\"-1\"\r\n hide=\"{{ :host.readonly || :host.required || !Pacem.Utils.Dates.isDate(Pacem.Utils.Dates.parse(:host.value)) }}\"\r\n icon-glyph=\"close\"\r\n clear></${P}-button>\r\n</div>\r\n<${P}-shell-proxy>\r\n <div class=\"${PCSS}-calendar-picker-dropdown\" pacem hidden>\r\n <${P}-collapse collapse=\"false\">\r\n <div class=\"dropdown-grid\">\r\n <div class=\"calendar-title\">\r\n <${P}-span class=\"calendar-month calendar-zoom\" on-click=\":host.viewmode = 'month'\" hide=\"{{ :host.viewmode !== 'calendar' }}\"></${P}-span>\r\n <${P}-span class=\"calendar-year calendar-zoom\" on-click=\":host.viewmode = 'year'\" hide=\"{{ :host.viewmode !== 'month' }}\"></${P}-span>\r\n <${P}-span class=\"calendar-year-range\" hide=\"{{ :host.viewmode !== 'year' }}\"></${P}-span>\r\n </div>\r\n <div class=\"calendar-month-nav ${PCSS}-buttonset buttons\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button class=\"button button-size size-auto\" on-click=\":host._prev($event)\" icon-glyph=\"chevron_left\"></${P}-button>\r\n <${P}-button class=\"button button-size size-auto\" on-click=\":host._next($event)\" icon-glyph=\"chevron_right\"></${P}-button>\r\n </div>\r\n </div>\r\n ${buildCalendarHeader()}\r\n <${P}-calendar hide=\"{{ :host.viewmode !== 'calendar' }}\" week=\"{{ :host._week, twoway }}\" view-date=\"{{ :host._viewDate, twoway }}\" week-start=\"{{ :host.weekStart }}\" disabled-ranges=\"{{ :host.disabledRanges }}\" on-dateselect=\"{{ :host.changeHandler($event) }}\"></${P}-calendar>\r\n <${P}-calendar-month-picker hide=\"{{ :host.viewmode !== 'month' }}\" on-monthselect=\":host._setMonth($event)\" month=\"{{ :host.value || Date.now() }}\" view-year=\"{{ :host._viewDate && :host._viewDate.getFullYear() }}\"></${P}-calendar-month-picker>\r\n <${P}-calendar-year-picker hide=\"{{ :host.viewmode !== 'year' }}\" on-yearselect=\":host._setYear($event)\" year=\"{{ :host.value || Date.now() }}\" view-year=\"{{ :host._viewDate && :host._viewDate.getFullYear() }}\"></${P}-calendar-year-picker>\r\n </div>\r\n <${P}-collapse>\r\n </div>\r\n</${P}-shell-proxy>`\n })\n], PacemCalendarPickerElement);\nexport { PacemCalendarPickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PCSS, PropertyConverters, Utils, ViewChild, Watch } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst StringOrBooleanPropertyConverter = {\n convert: (attr) => attr === 'true' ? true : (attr === 'false' ? false : attr),\n convertBack: (prop) => prop.toString()\n};\nlet PacemCheckboxElement = class PacemCheckboxElement extends PacemBaseElement {\n constructor() {\n super('checkbox');\n this.caption = '';\n this._key = '_' + Utils.uniqueCode();\n }\n convertValueAttributeToProperty(attr) {\n StringOrBooleanPropertyConverter.convert(attr) === this.trueValue ? this.trueValue : this.falseValue;\n }\n toggleReadonlyView(readonly) {\n this.span.hidden = !readonly;\n this._checkbox.hidden = this._label.hidden = readonly;\n }\n get inputFields() {\n return [this._checkbox];\n }\n onChange(evt) {\n this.selected = this._checkbox.checked;\n const value = this.value = this.selected ? this.trueValue : this.falseValue;\n return Utils.fromResult(value);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._checkbox.id = this._label.htmlFor = this._key;\n this._synchronizeUi();\n if (this.value /* weak equality to deal with declarative values and conversions */ == this.trueValue)\n this.selected = true;\n else if (this.value /* weak equality to deal with declarative values and conversions */ == this.falseValue)\n this.selected = false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!this.isReady) {\n // the following are only UI-relevant modifications\n return;\n }\n switch (name) {\n case 'caption':\n this._label.hidden = Utils.isNullOrEmpty(val);\n break;\n case 'name':\n this._checkbox.name = val;\n break;\n case 'selected':\n this._synchronizeUi();\n break;\n }\n }\n _synchronizeUi(val = this.selected) {\n if (this._checkbox.checked = val) {\n this.value = this.trueValue;\n Utils.addClass(this, PCSS + '-selected');\n this.aria.attributes.set('checked', 'true');\n }\n else {\n this.value = this.falseValue;\n Utils.removeClass(this, PCSS + '-selected');\n this.aria.attributes.set('checked', 'false');\n }\n }\n acceptValue(val) {\n this.selected = val /* weak equality to deal with declarative values and conversions */ == this.trueValue;\n }\n getViewValue(val) {\n if (!Utils.isNull(val))\n return this.caption;\n return '';\n }\n};\n__decorate([\n ViewChild(\"input[type=checkbox]\")\n], PacemCheckboxElement.prototype, \"_checkbox\", void 0);\n__decorate([\n ViewChild(\"label\")\n], PacemCheckboxElement.prototype, \"_label\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemCheckboxElement.prototype, \"span\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCheckboxElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ emit: false, converter: StringOrBooleanPropertyConverter })\n], PacemCheckboxElement.prototype, \"trueValue\", void 0);\n__decorate([\n Watch({ emit: false, converter: StringOrBooleanPropertyConverter })\n], PacemCheckboxElement.prototype, \"falseValue\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemCheckboxElement.prototype, \"selected\", void 0);\nPacemCheckboxElement = __decorate([\n CustomElement({\n tagName: P + '-checkbox',\n template: `<${P}-span class=\"${PCSS}-readonly ${PCSS}-checkbox\" text=\"{{ :host.caption }}\"></${P}-span>\r\n<input type=\"checkbox\" class=\"${PCSS}-input\" /><label class=\"${PCSS}-label ${PCSS}-checkbox ${PCSS}-viewfinder\" pacem><${P}-span content=\"{{ :host.caption }}\"></${P}-span></label>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemCheckboxElement);\nexport { PacemCheckboxElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PCSS, PropertyChangeEventName, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nlet PacemCheckboxListElement = class PacemCheckboxListElement extends PacemDataSourceElement {\n acceptValue(val) {\n // no need to implement\n }\n constructor() {\n super(true);\n this._selectedUiItems = [];\n this['key'] = '_' + Utils.uniqueCode();\n }\n get inputFields() {\n return [];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'disabled') {\n this._disable.model = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._disable.model = this.disabled;\n }\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._repeater.hidden = readonly;\n }\n _selectionChanged(evt, index, item) {\n if (evt.detail.propertyName === 'selected') {\n let ndx, uiItems = this._selectedUiItems;\n if (evt.detail.currentValue === true) {\n uiItems.push(this.datasource[index]);\n }\n else if ((ndx = uiItems.indexOf(this.datasource[index])) !== -1) {\n uiItems.splice(ndx, 1);\n }\n }\n }\n onChange(evt) {\n const val = this.value = this._selectedUiItems.map(i => this.mapEntityToValue(i));\n return Utils.fromResult(val);\n }\n};\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemCheckboxListElement.prototype, \"_span\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemCheckboxListElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-data')\n], PacemCheckboxListElement.prototype, \"_disable\", void 0);\nPacemCheckboxListElement = __decorate([\n CustomElement({\n tagName: P + '-checkbox-list', template: `<${P}-repeater datasource=\"{{ :host.adaptedDatasource }}\">\r\n <ol class=\"${PCSS}-checkbox-list ${PCSS}-viewfinder\" pacem>\r\n <template>\r\n <li><${P}-checkbox disabled=\"{{ ::_disable.model || ^item.disabled }}\" name=\"{{ :host.key, once }}\" autobind=\"off\" caption=\"{{ ^item.viewValue }}\" true-value=\"{{ ^item.value }}\" selected=\"{{ :host.isDataSourceItemSelected(^item, :host.value) }}\"\r\non-focus=\":host.focusHandler($event)\" on-blur=\":host.focusHandler($event)\"\r\non-${PropertyChangeEventName}=\":host._selectionChanged($event, ^index, ^item)\" on-change=\":host.changeHandler($event)\"></${P}-checkbox></li>\r\n </template>\r\n </ol>\r\n</${P}-repeater><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span><${P}-data></${P}-data><${P}-content></${P}-content>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemCheckboxListElement);\nexport { PacemCheckboxListElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PCSS, PacemEventTarget, PropertyChangeEventName, Components, PropertyConverters, Utils, ViewChild, Watch, UI, avoidHandler } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n/** For internal use ONLY! */\nlet PacemChildFormPropagatorElement = class PacemChildFormPropagatorElement extends PacemEventTarget {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n const prop = this.property, value = this.watch, hasPropDefined = !Utils.isNullOrEmpty(prop), hasModelDefined = !Utils.isNull(this.model);\n if (name === 'watch'\n || name === 'property'\n || (name === 'model' && hasPropDefined && hasModelDefined && Utils.isArray(val) && val.some(i => !(prop in i) || i[prop] !== value))\n || (name === 'model' && hasPropDefined && hasModelDefined && !Utils.isArray(val) && (!(prop in val) || val[prop] !== value))) {\n this._synchronize();\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._synchronize();\n }\n _synchronize() {\n const model = this.model, propagate = this.property, value = this.watch;\n if (Utils.isNullOrEmpty(model) || Utils.isNullOrEmpty(propagate)) {\n return;\n }\n if (Utils.isArray(model)) {\n for (let item of model) {\n item[propagate] = value;\n }\n // trigger change\n this.model = model.slice(0);\n }\n else {\n model[propagate] = value;\n // trigger change\n this.model = Utils.extend({}, model);\n }\n }\n};\n__decorate([\n Watch({ emit: true /* mandatory twoway binding */ })\n], PacemChildFormPropagatorElement.prototype, \"model\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true })\n], PacemChildFormPropagatorElement.prototype, \"property\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemChildFormPropagatorElement.prototype, \"watch\", void 0);\nPacemChildFormPropagatorElement = __decorate([\n CustomElement({ tagName: P + '-childform-propagator' })\n], PacemChildFormPropagatorElement);\nexport { PacemChildFormPropagatorElement };\n/** Represents a sub-form for automatic generation of editing fields for sub-entities. */\nlet PacemChildFormElement = class PacemChildFormElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n /** Internal representation of the entity. */\n this._model = [];\n this._subForms = [];\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n // automatic\n }\n onChange(evt) {\n return new Promise((resolve, _) => {\n var val = this._modelToEntity();\n resolve(this.value = val);\n });\n }\n acceptValue(val) {\n this._entityToModel(val);\n }\n getViewValue(value) {\n return '';\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr, this);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'mode':\n this._entityToModel();\n break;\n }\n }\n _dragStart(evt) {\n var args = evt.detail;\n const size = Utils.offset(args.element), floater = args.floater;\n floater.style.width = size.width + 'px';\n floater.style.height = size.height + 'px';\n }\n _dragEnd(evt) {\n if (this.mode === 'array' /*&& !Utils.isNull(evt.detail.target)*/) {\n this._triggerChange();\n }\n }\n reset() {\n super.reset();\n // once the value/entity with this component is reset\n // it is not necessary to process the subForms\n this._subForms.forEach(f => {\n f.setPristine();\n });\n }\n _itemCreate(evt) {\n const ndx = evt.detail.index, subForms = this._subForms;\n evt.detail.dom[0].childNodes.forEach(e => {\n if (e instanceof Element && e.localName === (P + '-form')) {\n subForms.splice(ndx, subForms.length - ndx, e);\n }\n });\n }\n _itemChange(ndx, evt) {\n if (evt.detail.propertyName === 'entity'\n && Utils.Json.stringify(this._model[ndx]) !== Utils.Json.stringify(evt.detail.currentValue)) {\n this._model.splice(ndx, 1, evt.detail.currentValue);\n this._triggerChange();\n }\n }\n _deleteAt(evt) {\n // prevent the event to bubble (nested scenarios).\n avoidHandler(evt.srcEvent);\n const model = this._model;\n if (this.mode === 'array') {\n model.splice(evt.detail, 1);\n }\n else {\n model.splice(0, model.length);\n }\n this._triggerChange();\n }\n _addItem(evt) {\n const mode = this.mode, model = this._model;\n if (mode === 'array') {\n model.push({});\n }\n else {\n model.splice(0, model.length, {});\n }\n this._triggerChange();\n }\n _triggerChange() {\n this.changeHandler(new Event('change'));\n }\n _entityToModel(entity = this.value) {\n switch (this.mode) {\n case 'array':\n let arr = entity || [];\n if (Utils.isArray(arr)) {\n this._model.cloneFrom(arr);\n }\n break;\n default:\n const model = this._model, length = model.length;\n if (length !== 1 || model[0] !== entity) {\n if (!Utils.isNull(entity)) {\n model.splice(0, length, entity);\n }\n else {\n model.splice(0, length);\n }\n }\n break;\n }\n }\n _modelToEntity(model = this._model) {\n switch (this.mode) {\n case 'array':\n return Utils.clone(model);\n default:\n return model && model.length && model[0] || null;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemChildFormElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemChildFormElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-childform')\n], PacemChildFormElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(P + '-drag-drop')\n], PacemChildFormElement.prototype, \"_dragger\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-childform-item-floater')\n], PacemChildFormElement.prototype, \"_floater\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemChildFormElement.prototype, \"mode\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemChildFormElement.prototype, \"lockItems\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemChildFormElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemChildFormElement.prototype, \"_model\", void 0);\nPacemChildFormElement = __decorate([\n CustomElement({\n tagName: P + '-childform', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater datasource=\"{{ :host._model }}\" on-itemdelete=\":host._deleteAt($event)\" on-${Components.RepeaterItemCreateEventName}=\":host._itemCreate($event)\">\r\n <div class=\"${PCSS}-childform\">\r\n <template>\r\n <${P}-panel class=\"${PCSS}-childform-item\" behaviors=\"{{ [::_dragger] }}\">\r\n <${P}-panel class=\"childform-item-handle ${PCSS}-margin margin-right-1\" hide=\"{{ :host.lockItems || :host.readonly || :host.mode !== 'array' || !(:host._model && :host._model.length > 1) }}\"><i class=\"${PCSS}-icon drag-handle\">drag_handle</i></${P}-panel>\r\n <${P}-panel class=\"childform-item-index text-small\"><${P}-span hide=\"{{ !:host.readonly || :host.mode !== 'array' }}\" class=\"${PCSS}-margin margin-right-1\" text=\"{{ ^index+1 }}\"></${P}-span></${P}-panel>\r\n <${P}-form entity=\"{{ ^item }}\" fetch-headers=\"{{ :host.fetchHeaders }}\" fetch-credentials=\"{{ :host.fetchCredentials }}\" on-${PropertyChangeEventName}=\":host._itemChange(^index, $event)\" readonly=\"{{ :host.readonly }}\" metadata=\"{{ :host.metadata }}\" autogenerate=\"true\" logger=\"{{ :host.logger }}\"></${P}-form>\r\n <${P}-button tab-order=\"-1\" class=\"flat circular circle-small clear ${PCSS}-margin margin-left-1\" hide=\"{{ :host.lockItems || :host.readonly }}\" command-name=\"delete\" command-argument=\"{{ ^index }}\"></${P}-button>\r\n </${P}-panel>\r\n </template>\r\n </div>\r\n <${P}-button tab-order=\"-1\" class=\"flat circular circle-small add\" hide=\"{{ :host.lockItems || :host.readonly || !(:host.mode === 'array' || $pacem.isNullOrEmpty(:host._model)) }}\" on-click=\":host._addItem($event)\"></${P}-button>\r\n</${P}-repeater>\r\n<div class=\"${PCSS}-childform-item-floater ${PCSS}-panel panel-border\">\r\n <div class=\"corner top-left\"></div><div class=\"corner top-right\"></div><div class=\"corner bottom-left\"></div><div class=\"corner bottom-right\"></div>\r\n</div>\r\n<${P}-drag-drop floater=\"{{ ::_floater }}\" disabled=\"{{ :host.lockItems }}\"\r\n on-${UI.DragDropEventType.Start}=\":host._dragStart($event)\"\r\n on-${UI.DragDropEventType.End}=\":host._dragEnd($event)\" \r\n drop-behavior=\"${UI.DropBehavior.InsertChild}\" mode=\"${UI.DragDataMode.Alias}\" handle-selector=\".drag-handle\" drop-targets=\"{{ [::_container] }}\"></${P}-drag-drop>`\n })\n], PacemChildFormElement);\nexport { PacemChildFormElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Logging, PropertyConverters, Debounce, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst emptyVal = '';\nconst JsonOrStringConverter = {\n convert: (attr, el) => {\n return /\\{.+\\}/.test(attr) ? PropertyConverters.Json.convert(attr) : PropertyConverters.String.convert(attr);\n },\n convertBack: (prop, el) => {\n if (typeof prop === 'string') {\n return prop;\n }\n return PropertyConverters.Json.convertBack(prop, el);\n }\n};\n//class DatetimeChangeEvent extends CustomTypedEvent<{ date: Date }> {\n// constructor(date: Date) {\n// super('datetimechange', { date: date });\n// }\n//}\nlet PacemDatetimePickerElement = class PacemDatetimePickerElement extends PacemBaseElement {\n constructor() {\n super();\n this.precision = 'day';\n this._months = [];\n this._dates = [];\n this._a24 = [];\n this._a60 = [];\n this._years = [];\n this.hours = '00';\n this.minutes = '00';\n this.seconds = '00';\n }\n get inputFields() {\n return [this._yearel, this._monthel, this._dateel, this._hourel, this._minel, this._secel];\n }\n toggleReadonlyView(readonly) {\n this._allFields.hidden = readonly;\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Datetime.convert(attr);\n }\n connectedCallback() {\n super.connectedCallback();\n const today = new Date();\n let year = this.year = today.getFullYear();\n this.min = new Date(year - 100, 0, 1);\n this.max = new Date(year + 10, 11, 31);\n this.month = today.getMonth();\n //\n let months = [], hours = [], minutes = [], leftPad = Utils.leftPad;\n // months\n for (let i = 0; i < 12; i++) {\n let date = new Date(year, i, 1), label = date.toLocaleString(Utils.lang(this), { month: \"short\" });\n ;\n months.push({ value: i, date: date, label: label });\n }\n this._months = months;\n // hours\n for (let i = 0; i < 24; i++) {\n hours.push(leftPad(i, 2, '0'));\n }\n this._a24 = hours;\n // minutes/secs\n for (let i = 0; i < 60; i++) {\n minutes.push(leftPad(i, 2, '0'));\n }\n this._a60 = minutes;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'dateValue':\n this.log(Logging.LogLevel.Log, `dateValue changed from ${old} to ${val}`);\n this._disassembleDate(val);\n // this.changeHandler(new DatetimeChangeEvent(val));\n break;\n case 'min':\n case 'max':\n if (!Utils.isNullOrEmpty(this.min)\n && !Utils.isNullOrEmpty(this.max)) {\n this._setupYears();\n }\n break;\n case 'year':\n case 'month':\n this._buildupDates();\n break;\n case 'date':\n case 'hours':\n case 'minutes':\n case 'seconds':\n this._buildup();\n break;\n }\n }\n acceptValue(val) {\n this.dateValue = Utils.parseDate(val);\n }\n _disassembleDate(v) {\n if (!v) {\n this.date = undefined;\n return;\n }\n if (typeof v === 'string')\n v = Utils.parseDate(v);\n const leftPad = (i) => Utils.leftPad(i, 2, '0');\n this.year = v.getFullYear();\n this.month = v.getMonth();\n this.date = v.getDate();\n this.hours = leftPad(v.getHours());\n this.minutes = leftPad(v.getMinutes());\n this.seconds = leftPad(v.getSeconds());\n }\n _setupYears() {\n let years = [];\n const min = Utils.parseDate(this.min), max = Utils.parseDate(this.max);\n for (let i = min.getFullYear(); i <= max.getFullYear(); i++) {\n years.push(i);\n }\n this._years = years;\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n //if (CustomEventUtils.isInstanceOf(evt, DatetimeChangeEvent)) {\n // const date = (<DatetimeChangeEvent>evt).detail.date;\n // resolve(this.value = date); // keep same type (Date or string equivalent)\n //} else {\n // resolve(this.value = Utils.parseDate(this.value));\n //}\n resolve(this.value = this._computeValue());\n });\n }\n _buildupDates(evt) {\n if (evt)\n evt.stopPropagation();\n const v = this, options = { weekday: 'short', day: 'numeric' }, isDate = (k) => {\n try {\n let monthvalue = +v.month, parsed = new Date(+v.year, +v.month, k);\n return parsed.getMonth() == monthvalue;\n }\n catch (e) {\n return false;\n }\n };\n var dates = [];\n if (!Utils.isNullOrEmpty(v.year) && !Utils.isNullOrEmpty(v.month)) {\n let day = 1;\n do {\n let date = new Date(+v.year, +v.month, day), label = date.toLocaleString(Utils.lang(this), options);\n dates.push({ value: day, date: date, label: label, disabled: date < this.min || date > this.max });\n } while (isDate(++day));\n }\n this._dates = dates;\n if (!isDate(+this.date))\n this.date = '';\n else\n this._buildup();\n }\n _computeValue() {\n const v = this;\n if (Utils.isNullOrEmpty(v.year)\n || Utils.isNullOrEmpty(v.month)\n || Utils.isNullOrEmpty(v.date)) {\n return null;\n }\n else {\n //\n try {\n let value = new Date(+v.year, +v.month, +v.date);\n value.setHours(+v.hours);\n value.setMinutes(+v.minutes);\n value.setSeconds(+v.seconds);\n value.setMilliseconds(0);\n if (!Number.isNaN(value.valueOf())) {\n return value;\n }\n else\n return null;\n }\n catch (e) {\n return null;\n }\n }\n }\n _buildup(evt) {\n if (evt)\n evt.stopPropagation();\n //\n this.dateValue = this._computeValue();\n }\n getViewValue(val) {\n const v = /*this.dateValue ||*/ val;\n if (v) {\n return Utils.core.date(v, this.format || (this.precision != 'day' ? 'full' : 'short'), Utils.lang(this));\n }\n return '';\n }\n};\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-year > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_yearel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-month > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_monthel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-date > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_dateel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-hours > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_hourel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-minutes > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_minel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-seconds > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_secel\", void 0);\n__decorate([\n ViewChild(`div.${PCSS}-datetime-picker-fields`)\n], PacemDatetimePickerElement.prototype, \"_allFields\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemDatetimePickerElement.prototype, \"dateValue\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemDatetimePickerElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemDatetimePickerElement.prototype, \"max\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDatetimePickerElement.prototype, \"precision\", void 0);\n__decorate([\n Watch({ emit: false, converter: JsonOrStringConverter })\n], PacemDatetimePickerElement.prototype, \"format\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"_dates\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"_years\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"year\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"month\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"date\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"hours\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"minutes\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"seconds\", void 0);\n__decorate([\n Debounce(10)\n], PacemDatetimePickerElement.prototype, \"_buildup\", null);\nPacemDatetimePickerElement = __decorate([\n CustomElement({\n tagName: P + '-datetime-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-datetime-picker\">\r\n <div class=\"${PCSS}-datetime-picker-fields ${PCSS}-viewfinder\">\r\n\r\n <div class=\"${PCSS}-datetime-picker-year\">\r\n <${P}-select value=\"{{ :host.year, twoway }}\" placeholder=\"...\" datasource=\"{{ :host._years }}\">\r\n </${P}-select></div>\r\n\r\n <div class=\"${PCSS}-datetime-picker-month\">\r\n <${P}-select value=\"{{ :host.month, twoway }}\" placeholder=\"...\" value-property=\"value\" text-property=\"label\" datasource=\"{{ :host._months }}\">\r\n </${P}-select></div>\r\n\r\n <div class=\"${PCSS}-datetime-picker-date\">\r\n <${P}-select value=\"{{ :host.date, twoway }}\" placeholder=\"...\" value-property=\"value\" text-property=\"label\" datasource=\"{{ :host._dates }}\">\r\n </${P}-select></div>\r\n\r\n <${P}-panel class=\"${PCSS}-datetime-picker-hours\" hide=\"{{ :host.precision === 'day' }}\">\r\n <${P}-select value=\"{{ :host.hours, twoway }}\" datasource=\"{{ :host._a24 }}\">\r\n </${P}-select></${P}-panel>\r\n\r\n <${P}-panel class=\"${PCSS}-datetime-picker-minutes\" hide=\"{{ :host.precision === 'day' }}\">\r\n <${P}-select value=\"{{ :host.minutes, twoway }}\" datasource=\"{{ :host._a60 }}\">\r\n </${P}-select></${P}-panel>\r\n\r\n <${P}-panel class=\"${PCSS}-datetime-picker-seconds\" hide=\"{{ :host.precision !== 'second' }}\">\r\n <${P}-select value=\"{{ :host.seconds, twoway }}\" datasource=\"{{ :host._a60 }}\">\r\n </${P}-select></${P}-panel>\r\n\r\n </div>\r\n <${P}-panel class=\"${PCSS}-datetime-picker-preview\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.dateValue) || :host.precision === 'day' || :host.readonly }}\">\r\n <dl>\r\n <dt>local:</dt><dd><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></dd>\r\n <dt>iso:</dt><dd><${P}-text text=\"{{ (:host.dateValue && :host.dateValue.toISOString()) || '' }}\"></${P}-text></dd>\r\n </dl>\r\n </${P}-panel>\r\n <${P}-span class=\"${PCSS}-readonly\" css-class=\"{{ { 'date': :host.precision === 'day', 'datetime': :host.precision !== 'day' } }}\" content=\"{{ :host.viewValue }}\" hide=\"{{ !:host.readonly }}\"></${P}-span>\r\n</div>`\n })\n], PacemDatetimePickerElement);\nexport { PacemDatetimePickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, P, PCSS, CustomElement, ViewChild, Utils, PropertyConverters, Defaults, DeferPromise } from '@pacem/pacem-core';\nimport { PacemFormRelevantElement } from './form';\n// TODO: add warning state\nexport class PacemBaseValidatorElement extends PacemFormRelevantElement {\n constructor() {\n super();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n Utils.addClass(this, PCSS + '-validator');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n let form = this.form;\n switch (name) {\n case 'watch':\n old && form && form.unregisterValidator(val, this);\n form && form.registerValidator(val, this);\n break;\n case 'invalid':\n break;\n case 'form':\n let n = this.watch;\n if (!Utils.isNullOrEmpty(n)) {\n if (old != null)\n old.unregisterValidator(n, this);\n if (val != null)\n val.registerValidator(n, this);\n }\n break;\n case 'disabled':\n this.triggerFormFieldValidation();\n break;\n }\n }\n #easer;\n triggerFormFieldValidation() {\n const form = this.form, watch = this.watch;\n if (!Utils.isNull(form) && !Utils.isNullOrEmpty(watch)) {\n cancelAnimationFrame(this.#easer);\n this.#easer = requestAnimationFrame(() => {\n form.validate(watch);\n });\n }\n }\n validate(val) {\n if (this.disabled) {\n return Utils.fromResult(true);\n }\n return this.evaluate(val);\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseValidatorElement.prototype, \"invalid\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBaseValidatorElement.prototype, \"errorMessage\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemBaseValidatorElement.prototype, \"watch\", void 0);\nexport const BASIC_VALIDATOR_TEMPLATE = `<${P}-span part=\"error-message\" hide=\"{{ !:host.invalid }}\" text=\"{{ :host.errorMessage }}\"></${P}-span>`;\n// #region TEXTUAL\nfunction isValueEmpty(val) {\n return Utils.isNullOrEmpty(val);\n}\nlet PacemRequiredValidatorElement = class PacemRequiredValidatorElement extends PacemBaseValidatorElement {\n evaluate(val) {\n let retval = !isValueEmpty(val);\n return Utils.fromResult(retval);\n }\n};\nPacemRequiredValidatorElement = __decorate([\n CustomElement({ tagName: P + '-required-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemRequiredValidatorElement);\nexport { PacemRequiredValidatorElement };\nlet PacemRegexValidatorElement = class PacemRegexValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && name === 'pattern') {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true, pattern = this.pattern;\n if (!isValueEmpty(val)) {\n retval = new RegExp(pattern).test(val);\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemRegexValidatorElement.prototype, \"pattern\", void 0);\nPacemRegexValidatorElement = __decorate([\n CustomElement({ tagName: P + '-regex-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemRegexValidatorElement);\nexport { PacemRegexValidatorElement };\nlet PacemLengthValidatorElement = class PacemLengthValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'min' || name === 'max')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true;\n if (!isValueEmpty(val)) {\n if (this.min >= 0)\n retval = retval && (val || '').toString().length >= this.min;\n if (this.max >= 0)\n retval = retval && (val || '').toString().length <= this.max;\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemLengthValidatorElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemLengthValidatorElement.prototype, \"max\", void 0);\nPacemLengthValidatorElement = __decorate([\n CustomElement({ tagName: P + '-length-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemLengthValidatorElement);\nexport { PacemLengthValidatorElement };\n// #endregion\n// #region NUMERIC/ORDINAL\nlet PacemRangeValidatorElement = class PacemRangeValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'min' || name === 'max')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true;\n if (!isValueEmpty(val)) {\n let date = val;\n if (val instanceof Date || (typeof val !== 'number' && (date = Utils.parseDate(val)) instanceof Date && isFinite(date.valueOf()))) {\n if (this.min != null)\n retval = retval && date.valueOf() >= Utils.parseDate(this.min).valueOf();\n if (this.max != null)\n retval = retval && date.valueOf() <= Utils.parseDate(this.max).valueOf();\n }\n else {\n if (this.min != null)\n retval = retval && val >= this.min;\n if (this.max != null)\n retval = retval && val <= this.max;\n }\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRangeValidatorElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRangeValidatorElement.prototype, \"max\", void 0);\nPacemRangeValidatorElement = __decorate([\n CustomElement({ tagName: P + '-range-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemRangeValidatorElement);\nexport { PacemRangeValidatorElement };\n// #endregion\n// #region COMPLEX\nlet PacemCompareValidatorElement = class PacemCompareValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'operator' || name === 'to')) {\n this.triggerFormFieldValidation();\n }\n }\n _prepareValuesForComparison(val, other) {\n // gotta manage the case when a stringified datetime is compared with an actual date object.\n if (Utils.Dates.isDate(val) || Utils.Dates.isDate(other)) {\n return [Utils.parseDate(val), Utils.parseDate(other)];\n }\n return [val, other];\n }\n evaluate(val) {\n let retval = true, other = this.to;\n if (!isValueEmpty(val) && !isValueEmpty(other)) {\n const arranged = this._prepareValuesForComparison(val, other);\n val = arranged[0], other = arranged[1];\n switch (this.operator) {\n case 'lessOrEqual':\n retval = val <= other;\n break;\n case 'less':\n retval = val < other;\n break;\n case 'greaterOrEqual':\n retval = val >= other;\n break;\n case 'greater':\n retval = val > other;\n break;\n case 'notEqual':\n retval = val !== other;\n break;\n default:\n retval = val === other;\n break;\n }\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemCompareValidatorElement.prototype, \"operator\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true })\n], PacemCompareValidatorElement.prototype, \"to\", void 0);\nPacemCompareValidatorElement = __decorate([\n CustomElement({ tagName: P + '-compare-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemCompareValidatorElement);\nexport { PacemCompareValidatorElement };\n// #endregion\nlet PacemBinaryValidatorElement = class PacemBinaryValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'pattern' || name === 'maxSize')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true, pattern = this.pattern, maxSize = this.maxSize;\n if (!isValueEmpty(val)) {\n // file name\n if (!Utils.isNullOrEmpty(pattern)) {\n let filename = typeof val === 'string' ? val : val.name;\n retval = new RegExp(pattern, 'i').test(filename);\n }\n // max size\n if (!Utils.isNull(maxSize) && typeof val === 'object' && val.size > 0) {\n retval = retval && val.size <= maxSize;\n }\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinaryValidatorElement.prototype, \"pattern\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinaryValidatorElement.prototype, \"maxSize\", void 0);\nPacemBinaryValidatorElement = __decorate([\n CustomElement({ tagName: P + '-binary-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemBinaryValidatorElement);\nexport { PacemBinaryValidatorElement };\nlet PacemAsyncValidatorElement = class PacemAsyncValidatorElement extends PacemBaseValidatorElement {\n constructor() {\n super(...arguments);\n this._deferredToken = null;\n }\n _evaluateResult() {\n const fetcher = this._fetcher;\n const result = fetcher.result;\n switch (result) {\n case 'true':\n return true;\n break;\n case 'false':\n return false;\n break;\n default: // expect json\n try {\n let json = JSON.parse(result);\n let res = Utils.getApiResult(json);\n return (res || false);\n }\n catch (_) {\n return false;\n }\n }\n }\n _fetch(val) {\n const deferred = this._deferredToken;\n const fetcher = this._fetcher;\n var params = this.parameters || {};\n params[this.watch] = val;\n const request = {\n parameters: params,\n url: this.url,\n as: 'text',\n method: this.method\n };\n const serializedRequest = Utils.jsonSortStringify(request);\n // check changed:\n // assume idempotent with last request.\n const lastRequest = this.#lastRequest;\n let returnLastResult = false;\n if (!Utils.isNullOrEmpty(lastRequest)) {\n returnLastResult = (serializedRequest === lastRequest);\n }\n if (returnLastResult) {\n const result = this._evaluateResult();\n deferred.resolve(result);\n }\n else {\n Utils.extend(fetcher, request);\n // debounce\n clearTimeout(this._debouncer);\n this._debouncer = setTimeout(() => {\n fetcher.fetch().then(_ => {\n const result = this._evaluateResult();\n deferred.resolve(result);\n // memoize last successful request\n this.#lastRequest = serializedRequest;\n }, _ => {\n deferred.resolve(false);\n });\n }, 1000);\n }\n return deferred.promise;\n }\n #lastRequest;\n evaluate(val) {\n if (Utils.isNullOrEmpty(val)) {\n return Utils.fromResult(true);\n }\n else {\n this._deferredToken = this._deferredToken = DeferPromise.defer();\n return this._fetch(val).then(r => {\n this._deferredToken = null;\n return r;\n }, _ => {\n this._deferredToken = null;\n return false;\n });\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'parameters':\n case 'url':\n case 'method':\n case 'fetchCredentials':\n case 'fetchHeaders':\n this.triggerFormFieldValidation();\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAsyncValidatorElement.prototype, \"parameters\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAsyncValidatorElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAsyncValidatorElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAsyncValidatorElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAsyncValidatorElement.prototype, \"method\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemAsyncValidatorElement.prototype, \"_fetcher\", void 0);\nPacemAsyncValidatorElement = __decorate([\n CustomElement({\n tagName: P + '-async-validator',\n template: BASIC_VALIDATOR_TEMPLATE + `<${P}-fetch autofetch=\"false\" throttle=\"true\" credentials=\"{{ :host.fetchCredentials }}\" headers=\"{{ :host.fetchHeaders }}\"></${P}-fetch>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemAsyncValidatorElement);\nexport { PacemAsyncValidatorElement };\nlet PacemCustomValidatorElement = class PacemCustomValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'isValid')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true;\n if (!isValueEmpty(val)) {\n retval = !!this.isValid;\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemCustomValidatorElement.prototype, \"isValid\", void 0);\nPacemCustomValidatorElement = __decorate([\n CustomElement({ tagName: P + '-custom-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemCustomValidatorElement);\nexport { PacemCustomValidatorElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Logging, PropertyConverters, Net, Utils, P, PCSS, CustomElement, Watch, PropertyChangeEvent, PropertyChangeEventName, ViewChild, CustomElementUtils, JsonFunctionConversion } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemFormRelevantElement } from './form';\nimport { ContenteditableUtils } from './contenteditable/utils';\nimport { PacemBaseValidatorElement, PacemLengthValidatorElement, PacemAsyncValidatorElement, PacemBinaryValidatorElement, PacemCompareValidatorElement, PacemCustomValidatorElement, PacemRangeValidatorElement, PacemRegexValidatorElement, PacemRequiredValidatorElement } from './validators';\n//namespace Components.Scaffolding {\nfunction getFormId(key) {\n return 'form' + key;\n}\nfunction patternToString(pattern) {\n return new RegExp(pattern /*.split('\\\\').join('\\\\\\\\')*/).source;\n}\nfunction isKnownValidator(v) {\n return 'errorMessage' in v;\n}\nfunction isValidatorFactory(v) {\n return 'attributes' in v && typeof v.attributes === 'function';\n}\nlet PacemFormFieldElement = class PacemFormFieldElement extends PacemFormRelevantElement {\n constructor(_md = new ComponentsUI.UI.MarkdownService()) {\n super();\n this._md = _md;\n this._entityPropertyChangeHandler = (e) => {\n // nudge entity propertychange notification\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'entity', currentValue: this.entity }));\n };\n this._labelClickHandler = (_) => {\n document.getElementById(this._label.htmlFor).focus();\n };\n this._key = '_' + Utils.uniqueCode();\n }\n get key() {\n return this._key;\n }\n get fetcher() {\n return this._fetcher;\n }\n get field() {\n return this._field;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._buildUpForm();\n this._buildUpFetcher();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'readonly':\n this._ensureBalloon();\n break;\n case 'metadata':\n this._ensureBalloon();\n this._buildUpCss();\n this._buildUpLabel();\n this._buildUpField();\n break;\n case 'entity':\n // In the case that the entity is a HTMLElement,\n // its changes might not propagate correctly.\n // This is a nudgy solution. Explore how to improve\n // `CustomElementUtils.set` as an alternative...\n if (old instanceof HTMLElement) {\n old.removeEventListener(PropertyChangeEventName, this._entityPropertyChangeHandler, false);\n }\n if (val instanceof HTMLElement) {\n val.addEventListener(PropertyChangeEventName, this._entityPropertyChangeHandler, false);\n }\n break;\n }\n }\n disconnectedCallback() {\n if (this.entity instanceof HTMLElement) {\n this.entity.removeEventListener(PropertyChangeEventName, this._entityPropertyChangeHandler, false);\n }\n if (!Utils.isNull(this._label)) {\n this._label.removeEventListener('click', this._labelClickHandler, false);\n }\n if (!Utils.isNull(this._balloon)) {\n this._balloon.remove();\n }\n super.disconnectedCallback();\n }\n _normalizeTooltip() {\n const metadata = this.metadata && this.metadata.extra && this.metadata.extra.tooltip || false;\n if (typeof metadata === 'object') {\n return metadata;\n }\n return { type: metadata };\n }\n _ensureBalloon() {\n var innerText, tooltip;\n const noBalloon = this.readonly\n || ((tooltip = this._normalizeTooltip()).type === false)\n || Utils.isNullOrEmpty(innerText = this.metadata && this.metadata.display && this.metadata.display.description);\n // balloon\n if (Utils.isNull(this._balloon) && !noBalloon) {\n let balloon = document.createElement(P + '-balloon');\n balloon.options = {\n behavior: ComponentsUI.UI.BalloonBehavior.Tooltip,\n trigger: tooltip.trigger || ComponentsUI.UI.BalloonTrigger.Hover,\n position: tooltip.position || ComponentsUI.UI.BalloonPosition.Top,\n hoverDelay: 200, hoverTimeout: 50,\n align: tooltip.align || ComponentsUI.UI.BalloonAlignment.Auto\n };\n Utils.addClass(balloon, PCSS + '-field-tooltip');\n var shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(this._balloon = balloon);\n }\n const balloon = this._balloon;\n if (!Utils.isNull(balloon)) {\n balloon.target = this._label;\n if (!(balloon.disabled = noBalloon)) {\n const content = innerText || '';\n switch (tooltip.type) {\n case 'md':\n case 'markdown':\n balloon.innerHTML = this._md.toHtml(content);\n break;\n case 'html':\n balloon.innerHTML = content;\n break;\n default:\n balloon.innerText = content;\n break;\n }\n }\n }\n }\n _buildUpCss() {\n const display = this.metadata?.display;\n if (Utils.isNull(display)) {\n return;\n }\n if (typeof display.cssClass === 'function') {\n const { cssClassAttr } = display.cssClass(this, '$this', '$this.entity');\n this.setAttribute('css-class', cssClassAttr);\n }\n else {\n this.cssClass = display.cssClass;\n }\n if (typeof display.css === 'function') {\n const { cssAttr } = display.css(this, '$this', '$this.entity');\n this.setAttribute('css', cssAttr);\n }\n else {\n this.css = display.css;\n }\n }\n _buildUpLabel() {\n // label\n const label = this._label, span = label.firstElementChild;\n const meta = this.metadata;\n label.htmlFor = this._key;\n Utils.addClass(label, PCSS + '-label');\n const vals = this.metadata.validators;\n if (vals && vals.find(v => v.type === 'required')) {\n Utils.addClass(label, PCSS + '-required');\n }\n else {\n Utils.removeClass(label, PCSS + '-required');\n }\n //\n if (!Utils.isNull(this._balloon) && !this._balloon.disabled) {\n Utils.addClass(label, PCSS + '-tooltip');\n }\n else {\n Utils.removeClass(label, PCSS + '-tooltip');\n }\n // exploit a pacem-span so that it cleans the htm content up\n if (typeof meta.display?.name === 'function') {\n const { contentAttr } = meta.display.name(this, ':host', ':host.entity', '::_form');\n span.setAttribute('content', contentAttr);\n }\n else {\n span.removeAttribute('content');\n span.content = (meta.display && meta.display.name) || meta.prop;\n }\n label.setAttribute('id', 'label' + this._key);\n label.addEventListener('click', this._labelClickHandler, false);\n }\n // #region Template-called\n _isValueNullOrEmpty(entity = this.entity, metadata = this.metadata) {\n if (Utils.isNull(metadata)) {\n return true;\n }\n const props = metadata.prop.split('.');\n let obj = entity;\n for (let j = 0; j < props.length; j++) {\n const prop = props[j];\n if (Utils.isNullOrEmpty(obj && obj[prop])) {\n return true;\n }\n // next\n obj = obj[prop];\n }\n return false;\n }\n /**\n * Reflects the value onto the entity attribute, if the 'entity' is an instance of HTMLElement.\n */\n _handleValueChange(evt) {\n if (evt.detail.propertyName === 'value') {\n const value = evt.detail.currentValue, prop = this.metadata.prop;\n if (this.entity instanceof HTMLElement) {\n // handle the entity as an element and modify the attribute\n let attr = CustomElementUtils.camelToKebab(prop);\n if (Utils.isNullOrEmpty(value)) {\n this.entity.removeAttribute(attr);\n }\n else {\n this.entity.setAttribute(attr, value.toString());\n }\n }\n else {\n this.entity[prop] = value;\n }\n }\n }\n /**\n * 'Prettifies' the input value (for some specific cases) to be included in an URL segment or query string.\n * @param v Input value\n */\n _adjustDependencyValue(v) {\n if (Utils.Dates.isDate(v)) {\n return Utils.Dates.parse(v).toISOString();\n }\n return v;\n }\n _broadcastFetchResult(v) {\n const field = this;\n this.dispatchEvent(new CustomEvent(\"fetch\", { detail: v, bubbles: true, cancelable: false }));\n }\n // #endregion\n _buildUpFetcher() {\n // fetcher\n var fetcher = this._fetcher;\n fetcher.setAttribute('id', 'fetch' + this._key);\n fetcher.setAttribute('on-fetchresult', ':host._broadcastFetchResult($event.detail)');\n }\n _buildUpForm() {\n // form\n var form = this._form;\n form.setAttribute('id', getFormId(this._key));\n form.setAttribute('sudden-validation', '{{ ::form.suddenValidation }}');\n }\n _apiResult(v) {\n return Utils.getApiResult(v);\n }\n _buildUpField() {\n if (this._field)\n this._field.remove();\n this._fetcher.removeAttribute('parameters');\n this._fetcher.result =\n this._fetcher.url = null;\n for (var j = this._validators.children.length - 1; j >= 0; j--)\n this._validators.children[j].remove();\n var meta = this.metadata;\n // field\n let tagName = /* setting the default/fallback input element */ P + '-input-text';\n let numericTagName = P + (meta.display && meta.display.ui === 'slider' ? '-slider' : '-input-number');\n let attrs = {\n 'id': this._key, 'name': meta.prop,\n // readonly if property `readonly` set to true OR metadata property is not editable OR parent form's `readonly` property is set to true\n 'readonly': \"{{ :host.readonly || :host.metadata.isReadOnly || ::_form.readonly }}\",\n 'value': `{{ :host.entity.${meta.prop}, twoway }}`,\n 'placeholder': `${((meta.display && meta.display.watermark) || \"\")}`\n };\n // autofocus\n if (meta.extra?.autofocus == true) {\n attrs['on-load'] = 'requestAnimationFrame(() => $this.focus())';\n }\n // fetch data\n let fetchData = meta.extra || {};\n let fetchAttrs = {};\n let disabledAttr = \"false\";\n let dependingClause = '';\n let dependingDisabling = '';\n let dependingParameters = '';\n let dependsOn = [];\n // #region dependency from other props\n if (!Utils.isNullOrEmpty(fetchData.dependsOn)) {\n if (typeof fetchData.dependsOn === 'function') {\n const depAttrs = fetchData.dependsOn(this, ':host', ':host.entity', '$this.entity'), hideAttr = depAttrs.hideAttr;\n if (!Utils.isNullOrEmpty(hideAttr)) {\n this.setAttribute('hide', hideAttr);\n }\n if (!Utils.isNullOrEmpty(depAttrs.disabledAttr)) {\n disabledAttr = depAttrs.disabledAttr;\n if (CustomElementUtils.isBindingAttribute(disabledAttr)) {\n dependingDisabling = CustomElementUtils.extractBindingAttributeExpression(disabledAttr);\n }\n }\n if (!Utils.isNullOrEmpty(depAttrs.parameterAttrs)) {\n const pAttrs = depAttrs.parameterAttrs, parameterPairs = [];\n for (let alias in pAttrs) {\n const propName = pAttrs[alias];\n parameterPairs.push(`${alias}: ${propName}`);\n // exploit this sneaky way...\n dependsOn.push({ prop: propName });\n }\n dependingParameters = parameterPairs.join(', ');\n }\n }\n else {\n dependsOn = fetchData.dependsOn;\n // there should be a better way...\n let disablingClauses = { empty: [], notEqual: {} };\n let hidingClauses = { empty: [], notEqual: {} };\n // fetch\n let namesAndPaths = [];\n let paths = [];\n for (var depends of dependsOn) {\n let path = ':host.entity.' + depends.prop, path2 = '$this.entity.' + depends.prop;\n if (!Utils.isNullOrEmpty(depends.value)) {\n let clause = (p) => p + ' !== ' + JSON.stringify(depends.value);\n (disablingClauses.notEqual[path] = disablingClauses.notEqual[path] || []).push(clause(path));\n if (depends.hide) {\n (hidingClauses.notEqual[path2] = hidingClauses.notEqual[path2] || []).push(clause(path2));\n }\n }\n else if (!depends.optional) {\n let clause = (p) => '$pacem.isNullOrEmpty(' + p + ')';\n disablingClauses.empty.push(clause(path));\n if (depends.hide) {\n hidingClauses.empty.push(clause(path2));\n }\n }\n // fetch\n paths.push(path);\n namesAndPaths.push(`${(depends.alias || depends.prop)}: :host._adjustDependencyValue(${path})`);\n if (!depends.optional) {\n dependingClause += `!$pacem.isNullOrEmpty(${path}) && `;\n }\n }\n dependingParameters = namesAndPaths.join(', ');\n let joinClauses = (d) => {\n let ne = 'false', emp = 'false';\n if (!Utils.isNullOrEmpty(d.notEqual)) {\n // when a value is provided then pick the logical operator when provided.\n // consider to switch semantic (i.e. 'or' -> '&&', 'and' -> '||') due to the 'notEqual' operator.\n // 'and' is assumed to be the default\n const neByProp = [];\n for (let dp in d.notEqual) {\n // same property conditions always concatenated with '&&' (logical and)\n neByProp.push('(' + d.notEqual[dp].join(' && ') + ')');\n }\n // different property clauses should be concatenated with '||' (logical or)\n ne = '(' + neByProp.join(' || ') + ')';\n }\n if (!Utils.isNullOrEmpty(d.empty)) {\n // logical operator doe not affect 'empty' (no 'value' explicitated) deps:\n // empty always means 'BAD', then ANY empty entry would automatically trigger a negative outcome ('||').\n emp = '(' + d.empty.join(' || ') + ')';\n }\n return ne + ' || ' + emp;\n };\n dependingDisabling = joinClauses(disablingClauses);\n disabledAttr = `{{ ${dependingDisabling} }}`;\n // never disable the form-field, NEVER!\n // attrs['disabled'] = disabledAttr; // * BUG\n this.setAttribute('hide', `{{ ${joinClauses(hidingClauses)} }}`);\n }\n }\n // #endregion\n const fn = 'fn';\n const fns = this[fn] = this[fn] || {};\n const spinStaticDatasourceAttr = (source = []) => {\n let args = (dependsOn || []).map(p => ':host.entity.' + p.prop).join(', ');\n const fnKey = 'fn' + Utils.uniqueCode();\n switch (typeof source) {\n case 'function':\n fns[fnKey] = source;\n break;\n default:\n if (Utils.isArray(source)) {\n fns[fnKey] = () => source;\n }\n else {\n throw 'Unsupported source format.';\n }\n break;\n }\n return `{{ :host.${fn}.${fnKey}(${args}) }}`;\n };\n const children = new DocumentFragment();\n let uiHint;\n // metadata\n if (typeof meta.type === 'function' /* < factory */) {\n // build-up meta-structure\n var retval = meta.type(this, ':host', ':host.entity');\n // element must be a registered custom-element (hyphen!)\n if (retval.tagName.indexOf('-') === -1) {\n this.log(Logging.LogLevel.Error, `${tagName} is not an allowed form-field`);\n }\n else {\n // set tagName\n tagName = retval.tagName;\n // set/override attributes\n Utils.extend(attrs, retval.attrs || {});\n // prepare recursive seeding function\n function seedChildren(parent, children) {\n if (!Utils.isNullOrEmpty(children)) {\n for (let child of children) {\n // element must be a registered custom-element (hyphen!)\n if (child.tagName.indexOf('-') === -1) {\n this.log(Logging.LogLevel.Error, `${child.tagName} is not an allowed child element for form-field ${tagName}`);\n continue;\n }\n const el = document.createElement(child.tagName);\n if (!Utils.isNullOrEmpty(child.attrs)) {\n for (let attr in child.attrs) {\n const attrVal = child.attrs[attr];\n el.setAttribute(attr, attrVal);\n }\n }\n if (!Utils.isNullOrEmpty(child.children)) {\n // recursion here\n seedChildren(el, child.children);\n }\n parent.appendChild(el);\n }\n }\n }\n // seed\n seedChildren(children, retval.children);\n }\n }\n else\n switch (uiHint = (meta.display && meta.display.ui)) {\n // remove this (use dataType = 'HTML' instead).\n case 'contentEditable':\n console.warn('`contentEditable` ui hint is deprecated. Lean on `dataType` equal to \\'HTML\\' instead.');\n tagName = P + '-contenteditable';\n children.append(ContenteditableUtils.getDefaultDashboard());\n break;\n case 'snapshot':\n tagName = P + '-snapshot';\n if (fetchData.width > 0) {\n attrs['width'] = '' + fetchData.width;\n }\n if (fetchData.height > 0) {\n attrs['height'] = '' + fetchData.height;\n }\n if (fetchData.quality >= 0) {\n attrs['quality'] = '' + fetchData.quality;\n }\n break;\n case 'chars':\n case 'digits':\n case 'otp':\n tagName = P + '-input-chars';\n if (fetchData.charCount > 0) {\n attrs['charCount'] = '' + fetchData.charCount;\n }\n if (!Utils.isNullOrEmpty(fetchData.inputTransform)) {\n attrs['input-transform'] = fetchData.inputTransform;\n }\n break;\n case 'oneToMany':\n case 'dropdown':\n case 'radioList':\n case 'checkboxList':\n case 'manyToMany':\n if (uiHint === 'oneToMany' || uiHint === 'dropdown') {\n // select\n tagName = P + '-select';\n if (fetchData.preventWheel !== false /* must explicit a 'false': default/empty is true for <select> */) {\n attrs['on-wheel'] = '$event.preventDefault()';\n }\n }\n else {\n // checkboxlist\n delete attrs['placeholder'];\n tagName = P + (uiHint === 'radioList' ? '-radio-list' : '-checkbox-list');\n }\n if (!Utils.isNullOrEmpty(fetchData.textProperty)) {\n attrs['text-property'] = fetchData.textProperty;\n }\n if (!Utils.isNullOrEmpty(fetchData.disabledProperty)) {\n attrs['disabled-property'] = fetchData.disabledProperty;\n }\n if (!Utils.isNullOrEmpty(fetchData.valueProperty)) {\n if (!meta.isComplexType)\n attrs['value-property'] = fetchData.valueProperty;\n else\n attrs['compare-by'] = fetchData.valueProperty;\n }\n if (Utils.isNullOrEmpty(fetchData.source)) {\n // datasource has to be fetched\n this._fetcher.id = `fetch${this._key}`;\n this._fetcher.url = fetchData.sourceUrl;\n this._fetcher.method = fetchData.verb;\n //\n fetchAttrs['parameters'] = `{{ { ${dependingParameters} } }}`;\n fetchAttrs['disabled'] = disabledAttr;\n attrs['datasource'] = `{{ ${dependingClause}:host._apiResult(#fetch${this._key}.result) || null }}`;\n }\n else {\n // static datasource provided\n attrs['datasource'] = spinStaticDatasourceAttr(fetchData.source);\n }\n break;\n // experimental (do not include in metadata)\n //case 'hierarchy':\n // // select\n // delete attrs['placeholder'];\n // tagName = P + '-hierarchy';\n // if (!Utils.isNullOrEmpty(fetchData.textProperty)) {\n // attrs['text-property'] = fetchData.textProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.disabledProperty)) {\n // attrs['disabled-property'] = fetchData.disabledProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.parentsProperty)) {\n // attrs['parents-property'] = fetchData.parentsProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.valueProperty)) {\n // attrs['value-property'] = fetchData.valueProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.unlinkCaption)) {\n // attrs['unlink-caption'] = fetchData.unlinkCaption;\n // }\n // if (Utils.isNullOrEmpty(fetchData.source)) {\n // // datasource has to be fetched\n // this._fetcher.id = `fetch${this._key}`;\n // this._fetcher.url = fetchData.sourceUrl;\n // this._fetcher.method = fetchData.verb;\n // //\n // fetchAttrs['parameters'] = `{{ { ${dependingParameters} } }}`;\n // fetchAttrs['disabled'] = disabledAttr;\n // attrs['datasource'] = `{{ ${dependingClause}Pacem.Utils.getApiResult(#fetch${this._key}.result) || null }}`;\n // } else {\n // // static datasource provided\n // attrs['datasource'] = spinStaticDatasourceAttr(fetchData.source);\n // }\n // break;\n case 'suggest':\n case 'tags':\n case 'autocomplete':\n // autocomplete\n const tags = meta.display.ui === 'tags';\n tagName = P + (tags ? '-tags' : '-suggest');\n this._fetcher.id = `fetch${this._key}`;\n if (!Utils.isNullOrEmpty(fetchData.textProperty)) {\n attrs['text-property'] = fetchData.textProperty;\n }\n let itemValue = `#${this._key}.value`;\n if (!Utils.isNullOrEmpty(fetchData.valueProperty)) {\n attrs['compare-by'] = fetchData.valueProperty;\n if (tags) {\n itemValue = `(${itemValue} && ${itemValue}.${fetchData.valueProperty}) || ''`;\n }\n else {\n if (!meta.isComplexType) {\n attrs['value-property'] = fetchData.valueProperty;\n }\n else {\n itemValue += ` && ${itemValue}.${fetchData.valueProperty}`;\n }\n }\n }\n if (!Utils.isNullOrEmpty(fetchData.sourceUrl)) {\n fetchAttrs['url'] = `${fetchData.sourceUrl}`;\n this._fetcher.method = fetchData.verb;\n //\n if (!Utils.isNullOrEmpty(fetchData.dependsOn)) {\n // deps\n fetchAttrs['parameters'] = `{{ { ${dependingParameters}, q: #${this._key}.hint || '', ${(fetchData.valueProperty || 'value')}: ${itemValue} || '' } }}`;\n fetchAttrs['disabled'] = disabledAttr;\n }\n else {\n // no deps\n fetchAttrs['parameters'] = `{{ {q: #${this._key}.hint || '', ${(fetchData.valueProperty || 'value')}: ${itemValue} || '' } }}`;\n }\n attrs['datasource'] = `{{ ${dependingClause}:host._apiResult(#fetch${this._key}.result) || null }}`;\n }\n else {\n // static datasource\n attrs['datasource'] = spinStaticDatasourceAttr(fetchData.source);\n }\n if (tags) {\n // tags\n attrs['allow-new'] = (meta.extra.allowNew === true).toString();\n attrs['allow-duplicates'] = (meta.extra.allowDuplicates === true).toString();\n }\n else {\n // suggest\n if (!Utils.isNullOrEmpty(fetchData.disabledProperty)) {\n attrs['disabled-property'] = fetchData.disabledProperty;\n }\n if (!Utils.isNullOrEmpty(fetchData.itemtemplate)) {\n const itmpl = fetchData.itemtemplate;\n if (itmpl instanceof HTMLElement) {\n attrs['itemtemplate'] = '{{ #' + (itmpl.id = itmpl.id || this._key + '_itemtmpl') + ' }}';\n if (!itmpl.isConnected) {\n this.append(itmpl);\n }\n }\n else {\n attrs['itemtemplate'] = itmpl;\n }\n }\n if (!Utils.isNullOrEmpty(fetchData.filterFields)) {\n const ffields = fetchData.filterFields;\n attrs['filter-fields'] = (Utils.isArray(ffields)) ? ffields.join(' ') : ffields;\n }\n if (!Utils.isNullOrEmpty(fetchData.maxSuggestions)) {\n attrs['max-suggestions'] = fetchData.maxSuggestions.toString();\n }\n }\n break;\n case \"calendar\":\n tagName = P + '-calendar-picker';\n const calendarFormat = meta.display?.format ?? meta.extra?.format;\n if (!Utils.isNullOrEmpty(calendarFormat)) {\n attrs['format'] = '{{ ' + JSON.stringify(calendarFormat) + ' }}';\n }\n if (!Utils.isNullOrEmpty(fetchData.disabledRanges)) {\n attrs['disabled-ranges'] = '{{ ' + JSON.stringify(fetchData.disabledRanges) + ' }}';\n }\n break;\n case \"dictionary\":\n tagName = P + '-namevalue-list';\n attrs['dictionary'] = 'true';\n break;\n case 'switcher':\n if ((meta.type || '').toLowerCase() === 'boolean') {\n attrs['class'] = \"checkbox-switch\";\n }\n else {\n break;\n }\n default:\n let dataType = (meta.dataType || meta.type || '').toLowerCase();\n switch (dataType) {\n // should replace this one:\n //case 'imageurl':\n // tagName = P + '-input-image';\n // const f_id = this._fetcher.id = `fetch${this._key}`;\n // attrs['image-set'] = `{{ Pacem.Utils.getApiResult(#${f_id}.result) }}`;\n // attrs['on-imagefetchrequest'] = `#${f_id}.url = '${meta.extra.fetchUrl}'; #${f_id}.parameters = { q: $event.detail.hint, skip: $event.detail.skip, take: $event.detail.take }`;\n // attrs['max-width'] = '' + meta.extra.width;\n // attrs['max-height'] = '' + meta.extra.height;\n // attrs['max-thumbnail-height'] = '' + meta.extra.thumbHeight;\n // attrs['max-thumbnail-width'] = '' + meta.extra.thumbWidth;\n // attrs['upload-url'] = meta.extra.uploadUrl;\n // attrs['allow-snapshot'] = '' + meta.extra.snapshot;\n // break;\n case 'upload':\n // upload\n tagName = P + '-upload';\n let uploadExtra = meta.extra || {};\n attrs['url'] = uploadExtra.uploadUrl;\n attrs['parallelism'] = '' + uploadExtra.parallelism;\n attrs['chunk-size'] = '' + uploadExtra.chunkSize;\n attrs['max-image-width'] = '' + uploadExtra.maxImageWidth;\n attrs['max-image-height'] = '' + uploadExtra.maxImageHeight;\n attrs['select-mode'] = uploadExtra.mode ?? 'file';\n break;\n case 'html':\n // contenteditable\n tagName = P + '-contenteditable';\n children.append(ContenteditableUtils.getDefaultDashboard());\n break;\n case 'enumeration':\n // radiobutton list\n tagName = P + '-radio-list';\n attrs['class'] = PCSS + '-radio-list';\n attrs['value-property'] = \"value\";\n attrs['text-property'] = \"caption\";\n attrs['datasource'] = '{{ ' + JSON.stringify(meta.extra.enum) + ' }}';\n delete attrs['placeholder'];\n break;\n case 'password':\n tagName = P + '-input-password';\n break;\n case 'emailaddress':\n tagName = P + '-input-email';\n break;\n case \"color\":\n tagName = P + '-input-color';\n break;\n case \"time\":\n case \"date\":\n case \"datetime\":\n tagName = P + '-datetime-picker';\n delete attrs['placeholder'];\n if (dataType === 'datetime') {\n attrs['precision'] = \"minute\";\n }\n const dateFormat = meta.display?.format ?? meta.extra?.format;\n if (!Utils.isNullOrEmpty(dateFormat)) {\n attrs['format'] = '{{ ' + JSON.stringify(dateFormat) + ' }}';\n }\n if (!Utils.isNullOrEmpty(fetchData.disabledRanges)) {\n attrs['disabled-ranges'] = '{{ ' + JSON.stringify(fetchData.disabledRanges) + ' }}';\n }\n break;\n case \"url\":\n tagName = P + '-input-url';\n break;\n case \"phonenumber\":\n tagName = P + '-input-tel';\n break;\n case \"multilinetext\":\n tagName = P + '-textarea';\n break;\n case \"markdown\":\n tagName = P + '-textarea-markdown';\n break;\n case 'latlng':\n tagName = P + '-latlng';\n if (!Utils.isNullOrEmpty(meta.extra) && typeof meta.extra === 'object' && !Utils.isArray(meta.extra)) {\n attrs['options'] = JSON.stringify(meta.extra);\n }\n break;\n case 'percent':\n case 'percentage':\n case 'currency':\n let defaultFormatOptions = dataType === 'currency' ? { style: 'currency', currency: 'EUR' } : { style: 'percent', maximumFractionDigits: 2 };\n let intl = meta.display?.format ?? defaultFormatOptions;\n attrs['format'] = JSON.stringify(intl);\n default:\n switch ((meta.type || '').toLowerCase()) {\n case \"boolean\":\n tagName = P + '-checkbox';\n //attrs['selected'] = `{{ :host.entity.${meta.prop}, twoway }}`;\n attrs['true-value'] = \"{{ true }}\";\n attrs['false-value'] = \"{{ false }}\";\n attrs['caption'] = attrs['placeholder'];\n //delete attrs['value'];\n delete attrs['placeholder'];\n break;\n case \"byte\":\n attrs['min'] = '0';\n attrs['max'] = '255';\n case \"int16\":\n case \"int32\":\n case \"int64\":\n case \"short\":\n case \"integer\":\n case \"int\":\n case \"long\":\n attrs['step'] = '' + (meta.extra?.step ?? '1');\n tagName = numericTagName;\n const intFormat = meta.display?.format;\n if (!Utils.isNullOrEmpty(intFormat)) {\n attrs['format'] = JSON.stringify(intFormat);\n }\n if (fetchData.preventWheel !== false /* must explicit a 'false': default/empty is true for <input[type=number]> */ && tagName === (P + '-input-number')) {\n attrs['on-wheel'] = '$event.preventDefault()';\n }\n break;\n case \"double\":\n case \"decimal\":\n case \"float\":\n case \"single\":\n case \"number\":\n tagName = numericTagName;\n attrs['step'] = '' + (meta.extra?.step ?? 'any');\n const decimalFormat = meta.display?.format;\n if (!Utils.isNullOrEmpty(decimalFormat)) {\n attrs['format'] = JSON.stringify(decimalFormat);\n }\n if (fetchData.preventWheel !== false /* must explicit a 'false': default/empty is true for <input[type=number]> */ && tagName === (P + '-input-number')) {\n attrs['on-wheel'] = '$event.preventDefault()';\n }\n break;\n default:\n if ((meta.type === 'array' || meta.type === 'object') && !Utils.isNullOrEmpty(meta.props)) {\n tagName = P + '-childform';\n delete attrs['placeholder'];\n attrs['metadata'] = Utils.Json.stringify(meta.props, { functions: JsonFunctionConversion.Reference });\n attrs['mode'] = meta.type;\n attrs['lock-items'] = '' + (meta.extra && meta.extra.lockItems || false);\n attrs['logger'] = '{{ :host.logger }}';\n if (!Utils.isNullOrEmpty(dependsOn)) {\n var extraDom = '';\n for (let d of dependsOn) {\n extraDom += `<${P}-childform-propagator model=\"${attrs[\"value\"]}\" watch=\"{{ :host.entity.${d.prop} }}\" property=\"${(d.alias || d.prop)}\"></${P}-childform-propagator>\\n`;\n }\n this._container.innerHTML = extraDom;\n }\n attrs['fetch-credentials'] = '{{ :host.fetchCredentials }}';\n attrs['fetch-headers'] = '{{ :host.fetchHeaders }}';\n }\n break;\n }\n break;\n }\n break;\n }\n // #region commands\n if (!Utils.isNullOrEmpty(meta.commands)) {\n Utils.addClass(this._container, PCSS + '-fieldgroup');\n const prepend = this._container.appendChild(document.createElement('div')), append = this._container.appendChild(document.createElement('div'));\n Utils.addClass(prepend, `fieldgroup-prepend ${PCSS}-buttonset buttons`);\n Utils.addClass(append, `fieldgroup-append ${PCSS}-buttonset buttons`);\n const disable = dependingDisabling || 'false';\n meta.commands.forEach(cmd => {\n const btn = document.createElement(P + '-button');\n btn.setAttribute('icon-glyph', cmd.icon);\n btn.setAttribute('command-name', cmd.name);\n if (cmd.dependsOnValue) {\n btn.setAttribute('disabled', `{{ (${disable}) || !::_form.valid || $pacem.isNullOrEmpty(:host.entity.${meta.prop}) }}`);\n btn.setAttribute('command-argument', `{{ :host.entity.${meta.prop} }}`);\n }\n else {\n btn.setAttribute('disabled', disabledAttr);\n }\n btn.setAttribute('tooltip', cmd.tooltip);\n if (!Utils.isNullOrEmpty(cmd.cssClass)) {\n Utils.addClass(btn, cmd.cssClass.join(' '));\n }\n (cmd.prepend ? prepend : append).appendChild(btn);\n });\n }\n // #endregion\n // #region validators\n if (!Utils.isNullOrEmpty(meta.validators)) {\n meta.validators.forEach((v) => {\n var validatorElement;\n var params = {};\n var attributes = {};\n if (isKnownValidator(v)) {\n params = v['params'] || {};\n attributes['error-message'] = v.errorMessage;\n }\n if (isValidatorFactory(v)) {\n // preserve static attributes, just in case\n Utils.extend(attributes, v.attributes(this, ':host', ':host.entity'));\n }\n switch (v.type) {\n case 'required':\n attrs['required'] = 'true';\n validatorElement = new PacemRequiredValidatorElement();\n break;\n case 'length':\n let lengthValidator = new PacemLengthValidatorElement();\n validatorElement = lengthValidator;\n let max = params && params['max'];\n let min = params && params['min'];\n if (max != null) {\n attrs['maxlength'] = '' + (lengthValidator.max = max);\n if (tagName === P + '-input-chars') {\n attrs['count'] ??= '' + max;\n }\n }\n else if ('max' in attributes) {\n attrs['max'] = attributes['max'];\n }\n if (min != null) {\n attrs['minlength'] = '' + (lengthValidator.min = min);\n }\n else if ('min' in attributes) {\n attrs['minlength'] = attributes['min'];\n }\n break;\n case 'range':\n let rangeValidator = new PacemRangeValidatorElement();\n validatorElement = rangeValidator;\n let maxNum = params && params['max'];\n let minNum = params && params['min'];\n let isDateTime = tagName === P + '-datetime-picker';\n // TODO: handle calendar-picker\n if (maxNum != null) {\n rangeValidator.max = maxNum;\n attrs['max'] = \"{{ \" + (isDateTime ? \"'\" + maxNum + \"'\" : maxNum) + \" }}\";\n }\n else if ('max' in attributes) {\n attrs['max'] = attributes['max'];\n }\n if (minNum != null) {\n rangeValidator.min = minNum;\n attrs['min'] = \"{{ \" + (isDateTime ? \"'\" + minNum + \"'\" : minNum) + \" }}\";\n }\n else if ('min' in attributes) {\n attrs['min'] = attributes['min'];\n }\n break;\n case 'email':\n let emailValidator = new PacemRegexValidatorElement();\n validatorElement = emailValidator;\n attrs['pattern'] = patternToString(emailValidator.pattern = /^[\\w\\-\\.]+@[\\w\\-\\.]+\\.[a-zA-Z0-9]{2,6}$/);\n break;\n case 'regex':\n let regexValidator = new PacemRegexValidatorElement();\n validatorElement = regexValidator;\n let pattern = params['pattern'];\n pattern ||= attributes['pattern'];\n attrs['pattern'] = patternToString(pattern);\n regexValidator.pattern = pattern;\n break;\n case 'binary':\n let binaryValidator = new PacemBinaryValidatorElement();\n validatorElement = binaryValidator;\n let filePattern = params['pattern'];\n if (filePattern != null) {\n attrs['pattern'] = patternToString(filePattern);\n binaryValidator.pattern = filePattern;\n }\n else if ('pattern' in attributes) {\n attrs['pattern'] = attributes['pattern'];\n }\n let maxSize = params && params['maxSize'];\n if (maxSize != null) {\n binaryValidator.maxSize = maxSize;\n attrs['max-size'] = '' + maxSize;\n }\n else if ('max-size' in attributes) {\n attrs['max-size'] = attributes['max-size'];\n }\n break;\n case 'compare':\n let compareValidator = new PacemCompareValidatorElement();\n validatorElement = compareValidator;\n let comparedToCore = '';\n if ('value' in params) {\n comparedToCore = JSON.stringify(params.value);\n }\n else {\n const toProp = 'to' in params ? params.to : params.toProperty;\n comparedToCore = `:host.entity.${toProp}`;\n }\n const compareToAttr = `{{ ${comparedToCore} }}`;\n compareValidator.setAttribute('to', compareToAttr);\n let operator = compareValidator.operator = params['operator'] || attributes['operator'] || 'equal';\n // In case of `date(time)` try to add some interaction with `datetime-picker`'s min/max props.\n if (tagName === P + '-datetime-picker') {\n switch (operator) {\n case 'lessOrEqual':\n case 'less': // approximation: edge value won't be allowed but will result enabled on the `datetime-picker`\n attrs['max'] = compareToAttr;\n break;\n case 'greaterOrEqual':\n case 'greater': // approximation: edge value won't be allowed but will result enabled on the `datetime-picker`\n attrs['min'] = compareToAttr;\n break;\n }\n } /* // TODO: should accumulate disabled ranges (possible multiple validators)\n else if (tagName === P + '-calendar-picker') {\n //\n switch (operator) {\n case 'lessOrEqual':\n case 'less': // approximation: edge value won't be allowed but will result enabled on the `calendar-picker`\n attrs['disabled-ranges'] = `{{ [{ to: ${comparedToCore} }] }}`;\n break;\n case 'greaterOrEqual':\n case 'greater': // approximation: edge value won't be allowed but will result enabled on the `calendar-picker`\n attrs['disabled-ranges'] = `{{ [{ from: ${comparedToCore} }] }}`;\n break;\n }\n }*/\n break;\n case 'async':\n let asyncValidator = new PacemAsyncValidatorElement();\n validatorElement = asyncValidator;\n asyncValidator.url = params['url'];\n let parameters = [], depOn = params['dependsOn'] || dependsOn;\n parameters.push(`${meta.prop}: :host._adjustDependencyValue(:host.entity.${meta.prop})`);\n for (let depend of depOn || []) {\n parameters.push(`${(depend.alias || depend.prop)}: :host._adjustDependencyValue(:host.entity.${depend.prop})`);\n }\n asyncValidator.setAttribute('parameters', `{{ { ${(parameters.join(', '))} } }}`);\n asyncValidator.method = params['verb'] || Net.HttpMethod.Get;\n asyncValidator.setAttribute('fetch-credentials', '{{ :host.fetchCredentials }}');\n asyncValidator.setAttribute('fetch-headers', '{{ :host.fetchHeaders }}');\n break;\n case 'custom':\n validatorElement = new PacemCustomValidatorElement();\n break;\n default:\n // custom (extra-lib) validator\n if (!Utils.isNullOrEmpty(v.type) && /* must be a custom element */ v.type.indexOf('-') > 0) {\n const tagName = v.type;\n const extern = document.createElement(tagName);\n if (extern instanceof PacemBaseValidatorElement) {\n validatorElement = extern;\n }\n }\n break;\n }\n //\n if (Utils.isNull(validatorElement)) {\n throw `Cannot generate a formfield validator based on type: ${v.type}.`;\n }\n else {\n validatorElement.watch = meta.prop;\n validatorElement.setAttribute('hide', '{{ !this.invalid }}');\n validatorElement.setAttribute('disabled', disabledAttr);\n for (let attrName in attributes) {\n validatorElement.setAttribute(attrName, attributes[attrName]);\n }\n this._validators.appendChild(validatorElement);\n }\n });\n }\n // #endregion\n // #region build-up\n let field = document.createElement(tagName);\n for (var name in attrs) {\n let attr;\n if (!Utils.isNullOrEmpty(attr = attrs[name]))\n field.setAttribute(name, attr);\n }\n field.append(children);\n // #endregion\n this._field = field;\n this._container.insertBefore(field, this._container.firstElementChild);\n for (var name in fetchAttrs) {\n let attr;\n if (!Utils.isNullOrEmpty(attr = fetchAttrs[name]))\n this._fetcher.setAttribute(name, attr);\n }\n // fire propertychange event for bindings' sake...\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'field', currentValue: field }));\n }\n};\n__decorate([\n ViewChild('label')\n], PacemFormFieldElement.prototype, \"_label\", void 0);\n__decorate([\n ViewChild(`div.${PCSS}-input-container`)\n], PacemFormFieldElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemFormFieldElement.prototype, \"_fetcher\", void 0);\n__decorate([\n ViewChild(P + '-form')\n], PacemFormFieldElement.prototype, \"_form\", void 0);\n__decorate([\n ViewChild(P + '-panel.' + PCSS + '-validators')\n], PacemFormFieldElement.prototype, \"_validators\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemFormFieldElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemFormFieldElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemFormFieldElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormFieldElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch()\n], PacemFormFieldElement.prototype, \"entity\", void 0);\nPacemFormFieldElement = __decorate([\n CustomElement({\n tagName: P + '-form-field', template: `<${P}-form class=\"${PCSS}-field\" logger=\"{{ :host.logger }}\" \r\ncss-class=\"{{ {'${PCSS}-fetching': ::_fetcher.fetching, '${PCSS}-dirty': this.dirty, '${PCSS}-invalid': !this.valid, '${PCSS}-editable': !:host.readonly, '${PCSS}-readonly': :host.readonly, '${PCSS}-pristine': !this.dirty, '${PCSS}-valid': this.valid, '${PCSS}-has-value': !:host._isValueNullOrEmpty(:host.entity, :host.metadata) } }}\">\r\n <label class=\"${PCSS}-label\"><${P}-span></${P}-span></label>\r\n <div class=\"${PCSS}-input-container\"></div>\r\n <${P}-fetch debounce=\"300\" logger=\"{{ :host.logger }}\" credentials=\"{{ :host.fetchCredentials }}\" headers=\"{{ :host.fetchHeaders }}\" diff-by-values=\"true\"\r\n on-fetchresult=\":host._broadcastFetchResult($event.detail)\"></${P}-fetch>\r\n <${P}-panel class=\"${PCSS}-validators\" hide=\"{{ ::_form.valid || !::_form.dirty || :host.readonly }}\"></${P}-panel>\r\n</${P}-form>`\n })\n], PacemFormFieldElement);\nexport { PacemFormFieldElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, ViewChild, CustomElement, Watch, Utils, PropertyConverters } from '@pacem/pacem-core';\nimport { Components as ComponentsMaps, Maps } from '@pacem/pacem-maps';\nimport { PacemBaseElement } from './types-components';\nimport { FieldChangeEventName } from './types';\nconst MIN_LENGTH = 3;\nlet PacemGeolocateElement = class PacemGeolocateElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this._dragendHandler = (e) => {\n this._reverseGeocoder.position = e.detail.position;\n };\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n this._setupSuggest();\n this._setupMapMarker();\n }\n onChange(evt) {\n return new Promise((resolve, _) => {\n if (evt.type === 'success' && evt.target === this._reverseGeocoder) {\n const position = this.#marker.position;\n const sorted = evt.detail.sort((a, b) => {\n const da = Maps.MapProjection.distanceBetween(a.position, position), db = Maps.MapProjection.distanceBetween(b.position, position);\n return da < db ? 0 : -1;\n });\n const altitude = sorted[0].position.altitude;\n const value = Utils.extend({}, sorted[0], { position: Utils.extend({ altitude }, position) });\n resolve(this.value = value);\n }\n else if (evt.type === FieldChangeEventName && evt.target === this._suggest) {\n resolve(this.value = this._suggest.value);\n }\n else {\n resolve(this.value);\n }\n });\n }\n fetch(search) {\n if (Maps.LatLng.isLatLng(search)) {\n this.#marker.position =\n this._reverseGeocoder.position = search;\n }\n }\n compareValuePropertyValues(old, any) {\n const pos1 = old?.position ?? Maps.LatLng.Empty, pos2 = any?.position ?? Maps.LatLng.Empty;\n return Maps.LatLng.equals(pos1, pos2);\n }\n acceptValue(val) {\n if (!Utils.isNull(val)) {\n this._datasource.model = [val];\n this._setupMapMarker();\n }\n else {\n this._datasource.model = [];\n }\n this._setupSuggest();\n }\n getViewValue(value) {\n return value?.fullAddress || '';\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr, this);\n }\n #marker;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setup();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'adapter':\n this._setupAdapters(val);\n break;\n case 'map':\n if (old) {\n this._detachMarker(old);\n }\n if (val) {\n this._setupMapMarker(val);\n }\n break;\n case 'icon':\n this._setupMapMarker();\n break;\n case 'plaeholder':\n this._setupSuggest();\n break;\n case 'disabled':\n this._setupMapMarker();\n this._setupSuggest();\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeMarker();\n super.disconnectedCallback();\n }\n _setupAdapters(adapter = this.adapter) {\n const gc = this._geocoder, rvgc = this._reverseGeocoder;\n // setup adapters\n if (!Utils.isNull(gc)) {\n gc.adapter = adapter;\n }\n if (!Utils.isNull(rvgc)) {\n rvgc.adapter = adapter;\n }\n }\n _setupSuggest() {\n const suggest = this._suggest;\n if (!Utils.isNull(suggest)) {\n suggest.placeholder = this.placeholder ?? 'search...';\n suggest.readonly = this.readonly;\n suggest.disabled = this.disabled;\n suggest.value = this.value;\n }\n }\n _detachMarker(map = this.map) {\n const marker = this.#marker;\n if (!Utils.isNull(marker) && marker.map === map) {\n marker.remove();\n }\n }\n _createMarker() {\n const marker = new ComponentsMaps.Maps.PacemMapMarkerElement();\n marker.addEventListener('dragend', this._dragendHandler, false);\n return marker;\n }\n _disposeMarker() {\n const marker = this.#marker;\n if (!Utils.isNull(marker)) {\n marker.removeEventListener('dragend', this._dragendHandler, false);\n }\n }\n _setupMapMarker(map = this.map) {\n const marker = this.#marker || (this.#marker = this._createMarker());\n marker.icon = this.icon;\n marker.draggable = !this.readonly && !this.disabled;\n marker.hide = this.disabled;\n const address = this.value;\n if (address && address.position) {\n marker.position = address.position;\n }\n if (marker.map !== map && !Utils.isNull(map)) {\n map.appendChild(marker);\n }\n }\n _setup() {\n this._setupAdapters();\n this._setupSuggest();\n this._setupMapMarker();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemGeolocateElement.prototype, \"adapter\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemGeolocateElement.prototype, \"map\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemGeolocateElement.prototype, \"icon\", void 0);\n__decorate([\n ViewChild(P + '-data[ds]')\n], PacemGeolocateElement.prototype, \"_datasource\", void 0);\n__decorate([\n ViewChild(P + '-suggest')\n], PacemGeolocateElement.prototype, \"_suggest\", void 0);\n__decorate([\n ViewChild(P + '-map-geocode')\n], PacemGeolocateElement.prototype, \"_geocoder\", void 0);\n__decorate([\n ViewChild(P + '-map-geocode[reverse]')\n], PacemGeolocateElement.prototype, \"_reverseGeocoder\", void 0);\nPacemGeolocateElement = __decorate([\n CustomElement({\n tagName: P + '-geolocate', shadow: false, template: `<${P}-map-geocode search=\"{{ ::_suggest.hint }}\"\r\n disabled=\"{{ (::_suggest.hint || '').length < ${MIN_LENGTH} }}\" on-success=\"::_datasource.model = $event.detail\"></${P}-map-geocode>\r\n<${P}-map-geocode reverse on-success=\":host.changeHandler($event)\"></${P}-map-geocode>\r\n\r\n<${P}-data ds></${P}-data>\r\n\r\n<${P}-suggest on-change=\":host.changeHandler($event)\" datasource=\"{{ ::_datasource.model || [] }}\"\r\n compare-by=\"fullAddress\" text-property=\"fullAddress\"></${P}-suggest>`\n })\n], PacemGeolocateElement);\nexport { PacemGeolocateElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, PropertyConverters, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomEventUtils, CustomElementUtils, avoidHandler, UI } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemBaseElement } from './types-components';\n//namespace Components.Scaffolding {\nclass HierarchyChangeEvent extends CustomEvent {\n constructor(v) {\n super('hierarchychange', { detail: v, bubbles: false, cancelable: false });\n }\n}\nconst HIERARCHYITEM_CSSCLASS = 'hierarchy-item';\nconst HIERARCHYITEM_CSSCLASS_FULL = HIERARCHYITEM_CSSCLASS + ' ' + PCSS + '-anim anim-fade-in anim-sudden';\nconst HIERARCHYITEM_CSSCLASS_ATTR = \"{{ { 'item-disabled' : ^item.disabled } }}\";\nconst BINDER_HIERARCHYDATAKEY = 'pacemHierarchy';\nconst HIERARCHYITEM_CONTENT_CSSCLASS = 'item-content';\nconst HIERARCHYITEM_LINK_CSSCLASS = 'item-link';\nconst HIERARCHYITEM_LINK_CSSCLASS_FULL = HIERARCHYITEM_LINK_CSSCLASS + ' icon-rotate rotate-135';\nconst HIERARCHYITEM_LINK_ICON = 'link';\nconst HIERARCHYITEM_MOVE_CSSCLASS = 'item-move';\nconst HIERARCHYITEM_MOVE_ICON = 'drag_indicator';\nconst DEFAULT_PARENTSPROPERTY = 'parents';\nlet PacemHierarchyElement = class PacemHierarchyElement extends PacemBaseElement {\n getViewValue(value) {\n return '';\n }\n convertValueAttributeToProperty(attr) {\n return Utils.Json.parse(attr);\n }\n constructor() {\n super();\n this.#bindings = new Map();\n this.#dropTargets = new Map();\n this.unlinkCaption = 'Delete';\n this._binderClickHandler = (evt) => {\n const origType = evt.originalEvent.type;\n if (origType === 'mousedown' && evt.originalEvent.button === 1) {\n avoidHandler(evt.originalEvent);\n const binder = evt.srcElement;\n this._unlink(binder);\n }\n else if (origType === 'click' || origType === 'contextmenu') {\n avoidHandler(evt.originalEvent);\n this.#unlinkingBinder = evt.srcElement;\n const balloon = this._balloon;\n balloon.target = { x: evt.pageX, y: evt.pageY };\n balloon.popup();\n }\n };\n // #region drag-drop\n this._dragInitHandler = (evt) => {\n let args = evt.detail;\n const dragger = this._dragger;\n dragger.floater = document.createElement('span');\n dragger.dropTargets = Array.from(this.#dropTargets.keys()).filter(i => i !== args.element);\n if (!Utils.isNull(this.#dragBinder)) {\n this.#dragBinder.remove();\n }\n const binder = this.#dragBinder = new ComponentsUI.UI.PacemBinderElement();\n binder.from = args.element;\n this.#shell.appendChild(binder);\n };\n this._dragStartHandler = (evt) => {\n Utils.addClass(evt.detail.element, 'item-drag');\n };\n this._dragHandler = (evt) => {\n this.#dragBinder.to = evt.detail.currentPosition;\n };\n this._dragEndHandler = (evt) => {\n Utils.removeClass(evt.detail.element, 'item-drag');\n this.#dragBinder.remove();\n this.#dragBinder = null;\n };\n this._dropHandler = (evt) => {\n const source = evt.detail.data, target = this.#dropTargets.get(evt.detail.target);\n // set source as a parent of target\n // just in case (double-check)\n if (!this._isInAncestors(source, target) && !this._isInDescendants(source, target)) {\n // set new relation\n this._compileHierarchy({ source, target });\n }\n };\n this._dragOverHandler = (evt) => {\n const source = evt.detail.data, target = this.#dropTargets.get(evt.detail.target);\n if (target.disabled || this._isInAncestors(source, target) || this._isInDescendants(source, target)) {\n evt.preventDefault();\n }\n };\n this._dragOutHandler = (evt) => {\n };\n // #endregion\n // #region balloon\n this._popoutHandler = (evt) => {\n this._balloon.popout();\n };\n this.#key = Utils.uniqueCode();\n }\n #key;\n #bindings;\n #dragBinder;\n #unlinkingBinder;\n #dropTargets;\n #shell;\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n this._dragger.disabled = readonly;\n if (!Utils.isNull(this._adaptedDatasource)) {\n this._databind();\n }\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, HierarchyChangeEvent)) {\n resolve(this.value = evt.detail);\n }\n resolve(this.value);\n });\n }\n acceptValue(val) {\n // nothing peculiar to do...\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.#shell = CustomElementUtils.findAncestorShell(this);\n this._setupItemTemplate();\n this._setupDragger();\n this._setupBalloon();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n case 'textProperty':\n case 'disabledProperty':\n case 'valueProperty':\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n this._buildAdaptedDatasource();\n });\n break;\n case 'itemtemplate':\n if (!first) {\n this._setupItemTemplate();\n }\n break;\n case '_adaptedDatasource':\n case 'value':\n cancelAnimationFrame(this._handle2);\n this._handle2 = requestAnimationFrame(() => {\n this._databind();\n });\n break;\n }\n }\n disconnectedCallback() {\n this._disposeDragger();\n this._disposeBalloon();\n super.disconnectedCallback();\n }\n _buildAdaptedDatasource(ds = this.datasource) {\n this._adaptedDatasource = ds && ds.map(i => this._mapEntityToItem(i));\n }\n _mapEntityToValue(entity) {\n let value = entity, prop;\n if (prop = this.valueProperty) {\n value = entity[prop];\n }\n return value;\n }\n _mapEntityToViewValue(entity) {\n let viewValue = entity.toString(), prop;\n if (prop = this.textProperty) {\n viewValue = entity[prop];\n }\n return viewValue;\n }\n _mapEntityToItem(entity) {\n if (entity == null) {\n throw new Error('Entity cannot be null');\n }\n // databound\n let disabled = false;\n const disabledProp = this.disabledProperty;\n if (!Utils.isNullOrEmpty(disabledProp)) {\n disabled = entity[disabledProp] || false;\n }\n return { value: this._mapEntityToValue(entity), viewValue: this._mapEntityToViewValue(entity), disabled: disabled, data: entity };\n }\n _unlink(arg) {\n var binder;\n if (arg instanceof ComponentsUI.UI.PacemBinderElement) {\n binder = arg;\n }\n else {\n arg.preventDefault();\n arg.stopPropagation();\n binder = this.#unlinkingBinder;\n }\n const { parent, child } = JSON.parse(binder.dataset[BINDER_HIERARCHYDATAKEY]);\n const ds = this._adaptedDatasource, source = ds.find(i => i.value === parent), target = ds.find(i => i.value === child);\n if (!source.disabled && !target.disabled) {\n this._compileHierarchy({ source, target }, true);\n }\n }\n _buildHierarchyItemDomId(itemId) {\n return `hierarchyitem_${this.#key}_${itemId}`;\n }\n _itemCreate(evt) {\n const item = evt.detail.dom.find(i => i instanceof HTMLElement && i.classList.contains(HIERARCHYITEM_CSSCLASS)), index = evt.detail.index, hierarchyItem = evt.detail.item;\n item.id = this._buildHierarchyItemDomId(hierarchyItem.value);\n if (hierarchyItem.disabled) {\n item.setAttribute('behaviors', '{{ [#' + this._dragger2.id + '] }}');\n }\n else {\n item.setAttribute('behaviors', '{{ [#' + this._dragger.id + ', #' + this._dragger2.id + '] }}');\n }\n for (let parent of hierarchyItem.parents || []) {\n const binder = new ComponentsUI.UI.PacemBinderElement();\n binder.to = item;\n binder.toAnchor = ComponentsUI.UI.BinderAnchor.Top;\n binder.toEnd = ComponentsUI.UI.BinderEnd.Arrow;\n binder.setAttribute('from', '{{ #' + this._buildHierarchyItemDomId(parent.value) + ' }}');\n binder.fromAnchor = ComponentsUI.UI.BinderAnchor.Bottom;\n binder.cssClass = ['hierarchy-binder'];\n binder.interactive = !this.readonly && !hierarchyItem.disabled && !parent.disabled;\n binder.addEventListener(ComponentsUI.UI.BinderInteractionEventName, this._binderClickHandler, false);\n binder.dataset[BINDER_HIERARCHYDATAKEY] = JSON.stringify({ parent: parent.value, child: hierarchyItem.value });\n this.#bindings.set(hierarchyItem.value, binder);\n this.#shell.appendChild(binder);\n }\n if (!this.#dropTargets.has(item)) {\n this.#dropTargets.set(item, hierarchyItem);\n }\n }\n _itemRemove(evt) {\n const item = evt.detail.dom.find(i => i instanceof HTMLElement && i.classList.contains(HIERARCHYITEM_CSSCLASS)), hierarchyItem = evt.detail.item, bindings = this.#bindings;\n if (bindings.has(hierarchyItem.value)) {\n const binder = bindings.get(hierarchyItem.value);\n binder.removeEventListener(ComponentsUI.UI.BinderInteractionEventName, this._binderClickHandler, false);\n binder.remove();\n bindings.delete(hierarchyItem.value);\n }\n if (this.#dropTargets.has(item)) {\n this.#dropTargets.delete(item);\n }\n }\n _setupItemTemplate() {\n if (this.itemtemplate instanceof HTMLTemplateElement) {\n const frag = this.itemtemplate.cloneNode(true).content;\n const tmpl = document.createElement('template');\n const wrapper = document.createElement(P + '-panel');\n wrapper.className = HIERARCHYITEM_CSSCLASS_FULL;\n wrapper.setAttribute('css-class', HIERARCHYITEM_CSSCLASS_ATTR);\n const move = new ComponentsUI.UI.PacemIconElement();\n move.setAttribute('icon', HIERARCHYITEM_MOVE_ICON);\n move.className = HIERARCHYITEM_MOVE_CSSCLASS;\n wrapper.appendChild(move);\n const content = document.createElement('div');\n content.className = HIERARCHYITEM_CONTENT_CSSCLASS;\n content.append(frag);\n wrapper.appendChild(content);\n const link = new ComponentsUI.UI.PacemIconElement();\n link.setAttribute('icon', HIERARCHYITEM_LINK_ICON);\n link.className = HIERARCHYITEM_LINK_CSSCLASS_FULL;\n wrapper.appendChild(link);\n tmpl.content.appendChild(wrapper);\n this._template = tmpl;\n }\n else {\n this._template = this._defaultTemplate;\n }\n }\n _compileHierarchy(relation, remove = false) {\n const value = /* clone to detach any referemce with the original value, thus allowing `reset` */ Utils.clone(this.value || []);\n const newParent = relation.source.value, newChild = relation.target.value;\n const parentsProperty = this.parentsProperty || DEFAULT_PARENTSPROPERTY;\n var found = value.find(i => i[this.valueProperty] === newChild);\n if (remove) {\n if (!Utils.isNull(found)) {\n const parents = found[parentsProperty] || [], ndx = parents.indexOf(newParent);\n if (ndx >= 0) {\n parents.splice(ndx, 1);\n }\n }\n }\n else {\n if (Utils.isNull(found)) {\n found = {};\n found[this.valueProperty] = newChild;\n found[parentsProperty] = [];\n value.push(found);\n }\n found[parentsProperty].push(newParent);\n }\n // cleanup\n this._cleanupHierarchy(value);\n //\n this.changeHandler(new HierarchyChangeEvent(value));\n }\n _cleanupHierarchy(value = []) {\n const valueProperty = this.valueProperty, parentsProperty = this.parentsProperty || DEFAULT_PARENTSPROPERTY;\n const isInAncestors = (sourceId, targetId) => {\n const target = value.find(i => i[valueProperty] == targetId);\n if (Utils.isNull(target) || Utils.isNullOrEmpty(target[parentsProperty])) {\n return false;\n }\n const parents = target[parentsProperty];\n if (parents.indexOf(sourceId) >= 0) {\n return true;\n }\n return parents.some(p => isInAncestors(sourceId, p));\n };\n // bottom-up: if a parent is also an ancestor, then remove the link\n for (let v of value) {\n const parents = v[parentsProperty] || [];\n for (let j = parents.length - 1; j >= 0; j--) {\n const parent = parents[j];\n const otherParents = parents.filter(p0 => p0 !== parent);\n for (let otherParent of otherParents) {\n if (isInAncestors(parent, otherParent)) {\n parents.splice(j, 1);\n break;\n }\n }\n }\n }\n }\n _setupDragger() {\n const dragger = this._dragger;\n dragger.id = 'hierarchy_link_' + this.#key;\n dragger.handleSelector = '.' + HIERARCHYITEM_LINK_CSSCLASS;\n dragger.dropBehavior = UI.DropBehavior.None;\n dragger.spillBehavior = UI.DropTargetMissedBehavior.None;\n dragger.mode = UI.DragDataMode.Copy;\n dragger.addEventListener(UI.DragDropEventType.Drop, this._dropHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Start, this._dragStartHandler, false);\n dragger.addEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Over, this._dragOverHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Out, this._dragOutHandler, false);\n const dragger2 = this._dragger2;\n dragger2.id = 'hierarchy_move_' + this.#key;\n dragger2.mode = UI.DragDataMode.Self;\n dragger2.dropBehavior = UI.DropBehavior.None;\n dragger2.spillBehavior = UI.DropTargetMissedBehavior.None;\n dragger2.handleSelector = '.' + HIERARCHYITEM_MOVE_CSSCLASS;\n }\n _disposeDragger() {\n const dragger = this._dragger;\n if (!Utils.isNull(dragger)) {\n dragger.removeEventListener(UI.DragDropEventType.Drop, this._dropHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Start, this._dragStartHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Over, this._dragOverHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Out, this._dragOutHandler, false);\n }\n }\n _setupBalloon() {\n this._balloon = this._shellProxy.dom.find(i => i instanceof ComponentsUI.UI.PacemBalloonElement);\n window.addEventListener('mousedown', this._popoutHandler, false);\n }\n _disposeBalloon() {\n window.removeEventListener('mousedown', this._popoutHandler, false);\n }\n // #endregion\n _isInAncestors(source, target) {\n if (Utils.isNull(target) || Utils.isNullOrEmpty(target.parents)) {\n return false;\n }\n if (target.parents.indexOf(source) >= 0) {\n return true;\n }\n return target.parents.some(p => this._isInAncestors(source, p));\n }\n _isInDescendants(source, target) {\n return this._isInAncestors(target, source);\n }\n _databind() {\n // clear binders\n this._repeater.datasource = [];\n // check value property\n const valueProperty = this.valueProperty;\n if (Utils.isNullOrEmpty(valueProperty)) {\n throw new Error('Missing valueProperty.');\n }\n // merge datasource and value\n const ds = Utils.clone(this._adaptedDatasource || []), mapping = this.value || [], parentsProperty = this.parentsProperty || DEFAULT_PARENTSPROPERTY;\n for (let item of ds) {\n const found = mapping.find(i => i[valueProperty] === item.value);\n if (!Utils.isNull(found)) {\n item.parents = (found[parentsProperty] || []).map(i => ds.find(i0 => i0.value === i)).filter(i => !Utils.isNull(i));\n }\n }\n // layerize and bind to repeater\n this._databindByParents(ds);\n }\n _databindByParents(ds) {\n // naive algo:\n // find topmost then loop-find direct-only children until no more descendant remains.\n const levelMatrix = [];\n function count() {\n return levelMatrix.reduce((previousLength, item) => previousLength + item.length, 0);\n }\n do {\n if (Utils.isNullOrEmpty(levelMatrix)) {\n // topmost\n const topmost = ds.filter((i) => Utils.isNullOrEmpty(i.parents));\n levelMatrix.push(topmost);\n }\n else {\n // other levels\n const upperLevels = Array.prototype.concat.apply([], levelMatrix), upperLevel = levelMatrix[levelMatrix.length - 1];\n const level = ds.filter((i) => {\n if (Utils.isNullOrEmpty(i.parents)) {\n return false;\n }\n return i.parents.every(p => upperLevels.indexOf(p) >= 0) && i.parents.some(p => upperLevel.indexOf(p) >= 0);\n });\n levelMatrix.push(level);\n }\n } while (count() < ds.length);\n // databind\n this._repeater.datasource = levelMatrix;\n }\n};\n__decorate([\n ViewChild('template[default]')\n], PacemHierarchyElement.prototype, \"_defaultTemplate\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemHierarchyElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-drag-drop')\n], PacemHierarchyElement.prototype, \"_dragger\", void 0);\n__decorate([\n ViewChild(P + '-drag-drop[move]')\n], PacemHierarchyElement.prototype, \"_dragger2\", void 0);\n__decorate([\n ViewChild(P + '-shell-proxy')\n], PacemHierarchyElement.prototype, \"_shellProxy\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemHierarchyElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"valueProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"textProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"disabledProperty\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"unlinkCaption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemHierarchyElement.prototype, \"_adaptedDatasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemHierarchyElement.prototype, \"itemtemplate\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemHierarchyElement.prototype, \"_template\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"parentsProperty\", void 0);\nPacemHierarchyElement = __decorate([\n CustomElement({\n tagName: P + '-hierarchy', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater>\r\n <template>\r\n <${P}-repeater on-${Components.RepeaterItemCreateEventName}=\":host._itemCreate($event)\" on-${Components.RepeaterItemRemoveEventName}=\":host._itemRemove($event)\" datasource=\"{{ ^item }}\">\r\n <div class=\"hierarchy-level\">\r\n <${P}-template-proxy target=\"{{ :host._template }}\"></${P}-template-proxy>\r\n </div>\r\n </${P}-repeater>\r\n </template>\r\n </div>\r\n</${P}-repeater><${P}-content></${P}-content>\r\n<${P}-drag-drop></${P}-drag-drop>\r\n<${P}-drag-drop move></${P}-drag-drop>\r\n<template default>\r\n <${P}-panel class=\"${HIERARCHYITEM_CSSCLASS_FULL} item-default\" css-class=\"${HIERARCHYITEM_CSSCLASS_ATTR}\">\r\n <${P}-icon class=\"${HIERARCHYITEM_MOVE_CSSCLASS}\" icon=\"${HIERARCHYITEM_MOVE_ICON}\"></${P}-icon>\r\n <pacem-span class=\"${HIERARCHYITEM_CONTENT_CSSCLASS}\" content=\"{{ ^item.viewValue }}\"></${P}-span>\r\n <${P}-icon class=\"${HIERARCHYITEM_LINK_CSSCLASS_FULL}\" icon=\"${HIERARCHYITEM_LINK_ICON}\"></${P}-icon>\r\n </${P}-panel>\r\n</template>\r\n<${P}-shell-proxy>\r\n <${P}-balloon options=\"{{ { behavior: ComponentsUI.UI.BalloonBehavior.Inert } }}\">\r\n <${P}-button icon-glyph=\"link_off\" class=\"${PCSS}-margin margin-0 button-flat display-flex flex-middle icon-rotate rotate-135\"\r\n on-click=\":host._unlink($event)\"\r\n on-mousedown=\"$event.stopPropagation()\"\r\n on-mouseup=\"::_balloon.popout()\"><${P}-text class=\"${PCSS}-margin margin-left-1\" text=\"{{ :host.unlinkCaption }}\"></${P}-text></${P}-button>\r\n </${P}-balloon>\r\n</${P}-shell-proxy>`\n })\n], PacemHierarchyElement);\nexport { PacemHierarchyElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Utils, Watch, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nexport var ChangePolicy;\n(function (ChangePolicy) {\n ChangePolicy[\"Input\"] = \"input\";\n ChangePolicy[\"Blur\"] = \"blur\";\n})(ChangePolicy || (ChangePolicy = {}));\nconst INPUT_FIELD_ACTIVATED_PROP = 'pacem:scaffolding:input_field';\nexport class PacemBaseInputElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this.debounce = false;\n this.changePolicy = ChangePolicy.Input;\n this._focusHandler = (evt) => {\n if (!this.autoselect) {\n return;\n }\n let field = /* first field (usually the only one) */ this.inputField;\n for (let f of this.inputFields ?? []) {\n if (f === document.activeElement) {\n field = f;\n break;\n }\n }\n field?.select();\n };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'placeholder':\n for (let inputField of this.inputFields ?? []) {\n inputField.setAttribute(name, val);\n }\n break;\n }\n }\n acceptValue(val) {\n if (this.inputField && val !== this.inputField.value) {\n this.inputField.value = Utils.isNullOrEmpty(val) ? '' : val;\n }\n }\n get inputField() {\n return this.inputFields[0];\n }\n onChange(evt) {\n return new Promise((resolve) => {\n if (this.readonly) {\n resolve(this.value);\n }\n else if (evt.type === 'input' && this.changePolicy === ChangePolicy.Blur) {\n resolve(this.value);\n }\n else {\n //\n const fn = () => {\n const val = this.getValue(this.inputField.value);\n if (val !== this.value) {\n this.value = val;\n // /* DO NOT MESS THE change EVENT DISPATCH */ this.dispatchEvent(new Event('change'));\n }\n resolve(val);\n };\n const d = this.debounce;\n if (typeof d === 'number' && d > 0) {\n clearTimeout(this._handle);\n this._handle = setTimeout(fn, d);\n }\n else if (d === true) {\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(fn);\n }\n else\n requestAnimationFrame(fn);\n }\n });\n }\n ;\n registerInputFields(inputFields = this.inputFields) {\n super.registerInputFields(inputFields);\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let field of inputFields ?? []) {\n if (!(field instanceof HTMLInputElement) && !(field instanceof HTMLTextAreaElement)) {\n continue;\n }\n if (CustomElementUtils.getAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP, 'off') === 'on') {\n continue;\n }\n CustomElementUtils.setAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP, 'on');\n if ('size' in field) {\n // HTMLInputElement only\n field.size = 1;\n }\n field.autocomplete = 'off';\n field.addEventListener('input', this.changeHandler, false);\n field.addEventListener('focus', this._focusHandler, false);\n }\n }\n unregisterInputFields(inputFields = this.inputFields) {\n super.unregisterInputFields(inputFields);\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let field of inputFields ?? []) {\n if (CustomElementUtils.getAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP) !== 'on') {\n continue;\n }\n CustomElementUtils.deleteAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP);\n field.removeEventListener('input', this.changeHandler, false);\n field.removeEventListener('focus', this._focusHandler, false);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.registerInputFields();\n }\n disconnectedCallback() {\n this.unregisterInputFields();\n super.disconnectedCallback();\n }\n}\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => {\n switch (attr) {\n case 'true':\n return true;\n case 'false':\n return false;\n default:\n return parseFloat(attr);\n }\n },\n convertBack: (prop) => prop.toString()\n }\n })\n], PacemBaseInputElement.prototype, \"debounce\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBaseInputElement.prototype, \"changePolicy\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemBaseInputElement.prototype, \"autoselect\", void 0);\nexport class PacemOrdinalInputElement extends PacemBaseInputElement {\n convertValueAttributeToProperty(attr) {\n return parseFloat(attr);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'min':\n case 'max':\n case 'step':\n val != null ? this.inputField.setAttribute(name, val) : this.inputField.removeAttribute(name);\n break;\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemOrdinalInputElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemOrdinalInputElement.prototype, \"max\", void 0);\n__decorate([\n Watch({\n converter: {\n convert: (attr) => {\n const num = parseFloat(attr);\n return isNaN(num) ? 'any' : num;\n },\n convertBack: (val) => val.toString()\n }\n })\n], PacemOrdinalInputElement.prototype, \"step\", void 0);\nexport class PacemTextualInputElement extends PacemBaseInputElement {\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'pattern':\n case 'maxlength':\n case 'minlength':\n val != null ? this.inputField.setAttribute(name, val) : this.inputField.removeAttribute(name);\n break;\n }\n }\n getValue(val) {\n return Utils.isNullOrEmpty(val) ? null : val;\n }\n getViewValue(val) {\n return val;\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTextualInputElement.prototype, \"pattern\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTextualInputElement.prototype, \"minlength\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTextualInputElement.prototype, \"maxlength\", void 0);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Arrays } from '@pacem/pacem-foundation';\nimport { Components, PropertyConverters, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\nlet PacemCharsInputElement = class PacemCharsInputElement extends PacemBaseInputElement {\n constructor() {\n super();\n this.charCount = 6;\n this.inputTransform = 'none';\n this._itemCreateHandler = (e) => {\n const { dom, index } = e.detail;\n const inputField = dom.find(i => i instanceof HTMLInputElement);\n this.#inputs[index] = inputField;\n this.registerInputFields(inputField);\n };\n this.#inputs = [];\n }\n redactViewValue(value = this.value) {\n this.viewValue = this.getViewValue(value);\n }\n getValue(_) {\n const val = this.#inputs.reduce((acc, input) => acc + (Utils.isNullOrEmpty(input.value) ? ' ' : input.value), '');\n switch (this.inputTransform) {\n case 'lowercase':\n return val.toLowerCase();\n case 'uppercase':\n return val.toUpperCase();\n default:\n return val;\n }\n }\n getViewValue(value) {\n const size = this.charCount;\n return this.inputTransform == 'password' ? Arrays.range(size).map(i => '*').join('') : value;\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n toggleReadonlyView(readonly = this.readonly) {\n this._span.hidden = !readonly;\n this._chars.hidden = readonly;\n }\n /** Override base behavior. */\n focus() {\n // check if one of the fields has already focus, if so, do not steal it.\n for (let inputField of this.inputFields ?? []) {\n if (inputField === document.activeElement) {\n if (this.autofocus) {\n inputField.select();\n }\n return;\n }\n }\n super.focus();\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 'charCount':\n this._databind();\n this.redactViewValue();\n break;\n case 'inputTransform':\n this.registerInputFields();\n this.value = this.getValue(this.value);\n break;\n }\n }\n /**\n * Override to apply input transform to all input fields.\n * @param fields\n */\n registerInputFields(fields = this.inputFields) {\n super.registerInputFields(fields);\n if (!Utils.isNull(fields) && !Utils.isArray(fields)) {\n fields = [fields];\n }\n const inputs = this.#inputs;\n for (let inputField of fields ?? []) {\n const ndx = inputs.indexOf(inputField);\n Utils.toggleClass(inputField, 'last-char', ndx === (this.charCount - 1));\n Utils.toggleClass(inputField, 'first-char', ndx === 0);\n if (Utils.isNullOrEmpty(inputField.id)) {\n inputField.setAttribute('id', 'code_' + ndx + '_' + Utils.uniqueCode());\n }\n inputField.value = this.value?.charAt(ndx) || '';\n if (this.inputTransform === 'password') {\n inputField.setAttribute('type', 'password');\n }\n else {\n inputField.setAttribute('type', 'text');\n }\n }\n }\n acceptValue(val) {\n // shadow super method\n // update ui\n const inputs = this.#inputs;\n if (typeof val === 'string') {\n let counter = 0;\n const limit = Math.min(val.length, inputs.length);\n for (let j = 0; j < limit; j++) {\n inputs[j].value = val.charAt(j);\n counter++;\n }\n for (let j = counter; j < inputs.length; j++) {\n inputs[j].value = '';\n }\n }\n }\n onChange(evt) {\n return super.onChange(evt).then(v => {\n const inputs = this.#inputs, index = inputs.indexOf(evt.target);\n if (index >= 0 && index < (inputs.length - 1)) {\n const input = inputs[index];\n if (Utils.isNullOrEmpty(input.value?.trim())) {\n input.value = '';\n }\n else {\n const next = index + 1;\n inputs[next].focus();\n }\n }\n return v;\n });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNull(this.autoselect)) {\n // defaults autoselect to true\n this.autoselect = true;\n }\n this._chars.addEventListener(Components.RepeaterItemCreateEventName, this._itemCreateHandler, false);\n this._databind();\n }\n disconnectedCallback() {\n const repeater = this._chars;\n if (!Utils.isNull(repeater)) {\n repeater.removeEventListener(Components.RepeaterItemCreateEventName, this._itemCreateHandler);\n }\n super.disconnectedCallback();\n }\n _databind() {\n const size = this.charCount, inputs = this.#inputs;\n if (inputs.length > size) {\n super.unregisterInputFields(inputs.splice(size));\n }\n this._chars.datasource = Arrays.range(size);\n }\n #inputs;\n get inputFields() {\n return this.#inputs;\n }\n};\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemCharsInputElement.prototype, \"charCount\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemCharsInputElement.prototype, \"inputTransform\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemCharsInputElement.prototype, \"_chars\", void 0);\n__decorate([\n ViewChild('span.' + PCSS + '-readonly')\n], PacemCharsInputElement.prototype, \"_span\", void 0);\nPacemCharsInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-chars',\n template: `<${P}-repeater class=\"display-flex flex-nowrap\">\r\n <template><input type=\"text\" class=\"${PCSS}-input flex-auto\" maxlength=\"1\" /></template>\r\n </${P}-repeater><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemCharsInputElement);\nexport { PacemCharsInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nlet PacemColorInputElement = class PacemColorInputElement extends PacemBaseElement {\n acceptValue(val) {\n const parsed = this._parseValue(val);\n if (parsed != null) {\n this._tint.value = parsed.tint;\n this._alpha.value = parsed.alpha.toString();\n }\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n onChange(evt) {\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/669685/ (bug open since Aug 2014!)\n const alpha = this._alpha.valueAsNumber || parseInt(this._alpha.value);\n const tint = this._tint.value;\n const value = this.value = this._getValue(tint, alpha);\n return Utils.fromResult(value);\n }\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n this._wrapper.hidden = readonly;\n this._span.hidden = !readonly;\n }\n _getValue(tint, alpha) {\n // #rrggbb\n if (isNaN(alpha) || alpha === 100)\n return tint;\n const rgb = Colors.parse(tint);\n rgb.a = alpha * .01;\n return Colors.stringify(rgb);\n }\n _parseValue(val) {\n const rgb = Colors.parse(val);\n if (Utils.isNullOrEmpty(rgb)) {\n return null;\n }\n return { tint: Colors.stringify({ r: rgb.r, g: rgb.g, b: rgb.b }), alpha: rgb.a * 100 };\n }\n getViewValue(value) {\n return value;\n }\n get inputFields() {\n return [this._tint, this._alpha];\n }\n};\n__decorate([\n ViewChild('input[type=color]')\n], PacemColorInputElement.prototype, \"_tint\", void 0);\n__decorate([\n ViewChild('input[type=number]')\n], PacemColorInputElement.prototype, \"_alpha\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-viewfinder`)\n], PacemColorInputElement.prototype, \"_wrapper\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemColorInputElement.prototype, \"_span\", void 0);\nPacemColorInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-color', template: `<div class=\"${PCSS}-viewfinder\">\r\n<${P}-panel class=\"${PCSS}-input-color\" css=\"{{ { \\'background-color\\': :host.viewValue } }}\"><input type=\"color\" class=\"${PCSS}-input\" /></${P}-panel>\r\n<input class=\"${PCSS}-input\" type=\"number\" min=\"0\" max=\"100\" step=\"1\" value=\"100\" />\r\n</div>\r\n<${P}-span class=\"${PCSS}-readonly\" css=\"{{ { \\'background-color\\': :host.viewValue } }}\"></${P}-span>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemColorInputElement);\nexport { PacemColorInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nlet PacemEmailInputElement = class PacemEmailInputElement extends PacemTextualInputElement {\n toggleReadonlyView(readonly) {\n this.input.hidden = readonly;\n this.anchor.hidden = !readonly;\n }\n get inputFields() {\n return [this.input];\n }\n};\n__decorate([\n ViewChild('input[type=email]')\n], PacemEmailInputElement.prototype, \"input\", void 0);\n__decorate([\n ViewChild(P + '-a')\n], PacemEmailInputElement.prototype, \"anchor\", void 0);\nPacemEmailInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-email',\n template: `<input type=\"email\" class=\"${PCSS}-input ${PCSS}-viewfinder\" />${CHAR_COUNTER_CHILD}<${P}-a class=\"${PCSS}-readonly\" disabled=\"{{ $pacem.isNullOrEmpty(:host.value) }}\" href=\"{{ \\'mailto:\\'+ :host.value }}\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-a>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemEmailInputElement);\nexport { PacemEmailInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomTypedEvent, CustomEventUtils, PropertyConverters, Animations, Utils, stopPropagationHandler, avoidHandler } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\nexport const FileUploadEventName = 'fileupload';\nexport const FileChangeEventName = 'filechange';\nclass StoragePickEvent extends CustomTypedEvent {\n constructor(file) {\n super('pick', file);\n }\n}\nexport class FileUploadEvent extends CustomTypedEvent {\n constructor(file) {\n super(FileUploadEventName, file);\n }\n}\nexport class FileChangeEvent extends CustomTypedEvent {\n constructor(file) {\n super(FileChangeEventName, file);\n }\n}\nconst ERROR_BINDING = '!$pacem.isNullOrEmpty(:host.value) && :host.invalidFile && $pacem.isNullOrEmpty(:host.url)';\nasync function computeDirStats(dir, stats = { files: 0, directories: 0, size: 0 }) {\n for await (let [_, entry] of dir.entries()) {\n if (entry.kind === 'file') {\n stats.files++;\n const file = await entry.getFile();\n stats.size += file.size;\n }\n else {\n stats.directories++;\n await computeDirStats(entry, stats);\n }\n }\n return stats;\n}\nasync function computeFileStats(files) {\n const stats = { files: 0, directories: 0, size: 0 };\n for (let f of files) {\n const file = await f.getFile();\n stats.files++;\n stats.size += file.size;\n }\n return stats;\n}\n/**\n * PacemUploader Component\n */\nlet PacemUploadElement = class PacemUploadElement extends PacemBaseElement {\n constructor(_tweener = new Animations.TweenService()) {\n super();\n this._tweener = _tweener;\n this.undoCaption = 'undo';\n this.retryCaption = 'retry';\n this.clearCaption = 'clear';\n this.uploading = false;\n this.size = 0;\n this.percentage = .0;\n this.complete = false;\n this.failed = false;\n this.invalidFile = false;\n this._fields = {\n 'parallelism': 3,\n 'uid': '',\n 'ongoing': 0,\n 'enqueuer': null,\n 'blob': null,\n 'retryFrom': 0,\n 'chunkSize': 1024 * 128,\n 'undone': false\n };\n }\n convertValueAttributeToProperty(attr) {\n return attr; // better assumptions anyone?\n }\n acceptValue(val) {\n this.percentage = 0;\n this.uploading = false;\n this._fileupload.value = '';\n }\n _getMimeIcon(file = this.value, uploading = this.uploading, mode = this.selectMode ?? 'file') {\n if (uploading) {\n return 'sync';\n }\n const hasValue = !Utils.isNullOrEmpty(file);\n switch (mode) {\n case 'directory':\n case 'directory-picker':\n return hasValue ? 'folder' : 'drive_folder_upload';\n case 'multiple':\n case 'multiple-picker':\n return hasValue ? 'files' : 'upload_file';\n }\n if (Utils.isNullOrEmpty(file)) {\n return 'upload_file';\n }\n var filename = file;\n if (typeof file === 'object') {\n filename = file.name;\n }\n const extPattern = /\\.([\\w]+)(\\s|$)/;\n const match = extPattern.exec(filename);\n if (match && match.length) {\n switch (match[1].toLowerCase()) {\n case 'pdf':\n return 'picture_as_pdf';\n //case 'txt':\n //case 'doc':\n //case 'docx':\n // return '<i class=\"pacem-icon\">collection_text</i>';\n case 'jpg':\n case 'jpeg':\n case 'gif':\n case 'png':\n return 'filter';\n }\n }\n return 'filter_none';\n }\n get blob() {\n return this._fields.blob;\n }\n get inputFields() {\n return [this._fileupload];\n }\n getViewValue(val) {\n const value = this._localValue || val;\n if (Utils.isNullOrEmpty(value)) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n let caption = 'name' in value ? value.name : '';\n if (Utils.isArray(value)) {\n caption = value.map(i => i.name).join(', ');\n }\n const stats = this._stats;\n if (Utils.isNullOrEmpty(stats)) {\n return caption;\n }\n const { size, files } = stats;\n return `${caption}\\n(${files} file${files === 1 ? '' : 's'}, ${Utils.core.size(size)})`;\n }\n toggleReadonlyView(readonly) {\n this._setupInputElement(readonly);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setupInputElement();\n this._fileupload.addEventListener('click', stopPropagationHandler, false);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'selectMode':\n this._setupInputElement();\n }\n }\n }\n disconnectedCallback() {\n if (this._fileupload) {\n this._fileupload.removeEventListener('click', stopPropagationHandler, false);\n }\n super.disconnectedCallback();\n }\n _setupInputElement(readonly = this.readonly, mode = this.selectMode ?? 'file') {\n const input = this._fileupload;\n input.removeAttribute('webkitdirectory');\n input.removeAttribute('multiple');\n input.hidden = readonly;\n switch (mode) {\n case 'directory':\n input.setAttribute('webkitdirectory', 'true');\n break;\n case 'multiple':\n input.setAttribute('multiple', 'true');\n break;\n case 'directory-picker':\n case 'file-picker':\n case 'multiple-picker':\n input.hidden = true;\n break;\n }\n }\n /**\n * Triggered from the component's template.\n */\n _dispatchDownload(evt) {\n avoidHandler(evt);\n const value = /* download the file being currently precessed, if available */ this._localValue || this.value, dispatch = (name) => {\n this.dispatchEvent(new CustomEvent('download', { detail: name, bubbles: true, cancelable: false }));\n };\n if (!Utils.isNullOrEmpty(value)) {\n if (typeof value === 'string') {\n // dispatch outside if url is provided\n dispatch(value);\n }\n else {\n if ('content' in value && !Utils.isNullOrEmpty(value.content)) {\n // download right-away the content when provided\n Utils.download(Utils.dataURLToBlob('data:application/download;base64,' + value.content), value.name, value.type);\n }\n else if ('name' in value) {\n if ('kind' in value) {\n if (value.kind === 'file') {\n value.getFile().then(file => {\n Utils.download(file, file.name, file.type);\n });\n }\n else {\n dispatch(value.name);\n }\n }\n else {\n // dispatch outside if content is empty\n dispatch(value.name);\n }\n }\n }\n }\n }\n reset() {\n super.reset();\n this._localValue = null;\n this.invalidFile = false;\n }\n _validateAll() {\n const stats = this._stats;\n const size = this.maxSize;\n if (size > 0 && size < stats.size) {\n this.invalidFile = true;\n return false;\n }\n // all-righty then\n this.invalidFile = false;\n return true;\n }\n _validateSingleFile(file = this._fileupload.files[0], filename) {\n if (file instanceof File) {\n filename = file.name;\n }\n filename = filename.substring(filename.lastIndexOf('\\\\') + 1);\n // max size exceeded\n const size = this.maxSize;\n if (size > 0 && size < file.size) {\n this.invalidFile = true;\n return false;\n }\n // pattern unmatched\n const pattern = this.pattern;\n if (pattern && !(new RegExp(pattern, 'i').test(filename))) {\n this.invalidFile = true;\n return false;\n }\n // all-righty then\n this.invalidFile = false;\n return true;\n }\n upload(file, filename, state) {\n if (this._validateSingleFile(file, filename)) {\n return this._upload(file, filename, state);\n }\n }\n async _upload(file, filename, state) {\n var uploader = this, fields = uploader._fields;\n if (!file)\n return;\n if (!filename && file instanceof File) {\n filename = file.name;\n }\n uploader.failed = false;\n fields.undone = false;\n fields.ongoing = 0;\n const blob = file, size = uploader.size = blob.size;\n filename = filename.substring(filename.lastIndexOf('\\\\') + 1);\n uploader.percentage = .0;\n uploader.complete = false;\n //\n var request = {\n filename, length: size, action: \"start\", state, type: file.type\n };\n //\n uploader.uploading = true;\n try {\n var r = await uploader._fetch(request);\n if (r.ok) {\n var json = await r.json();\n fields.retryFrom = 0;\n fields.blob = blob;\n fields.uid = json.uid;\n uploader._manage();\n }\n else {\n uploader.uploading = false;\n }\n return r;\n }\n catch (e) {\n uploader.uploading = false;\n }\n finally {\n }\n }\n async _blobToBase64(blob) {\n const result = await Utils.blobToDataURL(blob);\n return result.substring(result.indexOf('base64,') + 7);\n }\n async _doUpload(blob, skip) {\n var uploader = this, fields = uploader._fields;\n fields.ongoing++;\n //\n const chunk = await this._blobToBase64(blob);\n var request = {\n chunk: chunk,\n uid: fields.uid, position: skip,\n action: \"do\"\n };\n try {\n const r = await uploader._fetch(request);\n if (r.ok) {\n fields.ongoing--;\n if (!!fields.undone)\n return;\n const json = await r.json();\n const result = json;\n // parallelism > 1 may cause non-ordered responses\n if (result.percentage > this.percentage) {\n await uploader._tweenPercentage(Math.round(Math.max(1, result.percentage)), 200);\n }\n if (uploader.complete != result.complete) {\n uploader.complete = result.complete;\n if (uploader.complete === true) {\n uploader.uploading = false;\n uploader.changeHandler(new FileUploadEvent(result));\n }\n }\n }\n else {\n // error occurred\n fields.retryFrom = skip;\n uploader.failed = true;\n uploader.uploading = false;\n }\n }\n catch (_) {\n // crash\n fields.retryFrom = skip;\n uploader.failed = true;\n uploader.uploading = false;\n }\n }\n _manage() {\n const fields = this._fields, size = this.size, blob = fields.blob, chunkSize = this.chunkSize || fields.chunkSize;\n var start = fields.retryFrom;\n var end = start + chunkSize;\n //\n fields.enqueuer = setInterval(() => {\n if (start < size && !this.failed) {\n const parallelism = this.parallelism || fields.parallelism;\n if (fields.ongoing >= parallelism)\n return;\n this._doUpload(blob.slice(start, end), start);\n start = end;\n end = start + chunkSize;\n }\n else {\n var input = this._fileupload;\n input.value = '';\n window.clearInterval(fields.enqueuer);\n }\n }, 100);\n }\n async _buildLocalValue(file, filename = file.name, blob = file) {\n return this._localValue = {\n name: filename,\n size: blob.size,\n type: file.type,\n lastModified: Utils.parseDate(file.lastModified).toISOString(),\n content: await this._blobToBase64(blob)\n };\n }\n _canPick(w) {\n return \"showDirectoryPicker\" in w &&\n (() => {\n try {\n return w.self === w.top;\n }\n catch {\n return false;\n }\n })();\n }\n _tryPickDirectory() {\n if (!this._canPick(window)) {\n return;\n }\n window.showDirectoryPicker({ mode: 'read' }).then(directory => {\n this.changeHandler(new StoragePickEvent(directory));\n });\n }\n _tryPickFiles(multiple = this.selectMode === 'multiple-picker', pattern = this.pattern) {\n if (!this._canPick(window)) {\n return;\n }\n window.showOpenFilePicker({ multiple }).then(files => {\n this.changeHandler(new StoragePickEvent(files));\n });\n }\n /**\n * Called from the template.\n * @param evt\n */\n _clickHandler(evt) {\n avoidHandler(evt);\n if (this.readonly) {\n return;\n }\n switch (this.selectMode) {\n case 'directory-picker':\n this._tryPickDirectory();\n break;\n case 'file-picker':\n case 'multiple-picker':\n this._tryPickFiles();\n break;\n }\n }\n async _mimicCompute() {\n // mimic upload\n this.uploading = true; // <- triggers anim\n if (!Utils.isNullOrEmpty(this.value)) {\n this.percentage = 0;\n await Utils.waitForAnimationEnd(this._tuner);\n }\n else {\n await Utils.idle(250);\n }\n await this._tweener.run(0, 100, 500, 0, Animations.Easings.sineInOut, (t, v) => {\n this.percentage = v;\n });\n // reset pct\n this.percentage = .0;\n this.uploading = false;\n }\n onChange(evt) {\n return new Promise(async (resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, FileUploadEvent)) {\n // result of an upload?\n const file = this.value = evt.detail.filename;\n this.dispatchEvent(evt);\n resolve(file);\n }\n else if (CustomEventUtils.isInstanceOf(evt, StoragePickEvent)) {\n // FileSystem API?\n let val = evt.detail;\n let directory, file, files;\n switch (this.selectMode) {\n case 'directory-picker':\n directory = val;\n this._stats = await computeDirStats(directory);\n break;\n case 'multiple-picker':\n case 'file-picker':\n files = val;\n if (files.length === 1) {\n val = files[0];\n }\n this._stats = await computeFileStats(files);\n break;\n default:\n // shouldn't be here\n this._stats = { directories: 0, files: 0, size: 0 };\n break;\n }\n resolve(this.value = this._localValue = val);\n const valid = this._validateAll();\n this.dispatchEvent(new FileChangeEvent({ directory, file, files, valid }));\n }\n else {\n // HTMLInputElement change event\n let input = this._fileupload;\n if (input.files.length === 0) {\n // clear\n this._stats = { directories: 0, files: 0, size: 0 };\n resolve(this.value = null);\n }\n else {\n const files = input.files.length;\n this._stats = { directories: 0, files, size: Array.from(input.files).reduce((acc, file, _) => acc += file.size, 0) };\n if (files > 1) {\n // directory or multiple files\n const selectedFiles = Array.from(input.files);\n resolve(this.value = this._localValue = selectedFiles);\n const valid = this._validateAll();\n this.dispatchEvent(new FileChangeEvent({ files: selectedFiles, valid }));\n }\n else {\n const file = input.files[0], filename = file.name;\n let blob = file;\n // validate file\n if (!this._validateSingleFile(file) && !Utils.isNullOrEmpty(this.url)) {\n // do not start uploads with an invalid file\n resolve(this.value = await this._buildLocalValue(file));\n }\n else {\n if (/\\.(jpe?g|png)$/i.test(filename) && this.maxImageWidth > 0 && this.maxImageHeight > 0) {\n blob = await Utils.Images.resize(blob, this.maxImageWidth, this.maxImageHeight, { quality: .8 });\n }\n await this._buildLocalValue(file, filename, blob);\n if (Utils.isNullOrEmpty(this.url)) {\n // mimic upload\n await this._mimicCompute();\n // no direct upload? set the value to the very File\n resolve(this.value = this._localValue);\n }\n else {\n // upload, then wait for resulting filename (value will be the filename string) \n this._upload(blob, input.value);\n resolve(this.value);\n }\n }\n // dispatch filechange\n this.dispatchEvent(new FileChangeEvent({ valid: !this.invalidFile, file }));\n }\n }\n }\n });\n }\n _fetch(request) {\n return fetch(this.url, {\n method: 'POST', credentials: this.fetchCredentials, headers: Utils.extend({ 'Accept': 'application/json', 'Content-Type': 'application/json' }, this.fetchHeaders || {}), body: JSON.stringify(request)\n });\n }\n async _undo(e) {\n e.preventDefault();\n e.stopPropagation();\n var Uploader = this, fields = Uploader._fields, input = Uploader._fileupload;\n clearInterval(fields.enqueuer);\n var request = {\n action: \"undo\", uid: fields.uid\n };\n try {\n var r = await Uploader._fetch(request);\n if (r.ok) {\n fields.undone = true;\n Uploader.size = 0;\n Uploader._tweenPercentage(.0, 300);\n }\n return r;\n }\n catch (e) {\n }\n finally {\n // This input element accepts a filename, which may only be programmatically set to the empty string(!)\n input.value = '';\n Uploader.uploading = false;\n return r;\n }\n }\n _tweenPercentage(pct, duration = 500) {\n const from = this.percentage;\n return this._tweener.run(from, pct, duration, 0, Animations.Easings.sineInOut, (t, v) => {\n this.percentage = v;\n });\n }\n _retry(e) {\n e.preventDefault();\n e.stopPropagation();\n this.failed = false;\n this._manage();\n }\n _clear(e) {\n e.preventDefault();\n e.stopPropagation();\n this.invalidFile = false;\n const input = this.inputFields[0];\n // https://stackoverflow.com/a/35323290\n input.value = '';\n if (!/safari/i.test(navigator.userAgent)) {\n input.type = '';\n input.type = 'file';\n }\n this.changeHandler(null);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemUploadElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n ViewChild('input[type=file]')\n], PacemUploadElement.prototype, \"_fileupload\", void 0);\n__decorate([\n ViewChild(`${P}-tuner`)\n], PacemUploadElement.prototype, \"_tuner\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"undoCaption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"retryCaption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"clearCaption\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"pattern\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"maxImageWidth\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"parallelism\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"chunkSize\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"maxImageHeight\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"maxSize\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"selectMode\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"uploading\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"size\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"percentage\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"complete\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"failed\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"invalidFile\", void 0);\nPacemUploadElement = __decorate([\n CustomElement({\n tagName: P + '-upload', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-button on-click=\":host._dispatchDownload($event)\" class=\"${PCSS}-upload ${PCSS}-viewfinder flat\" css-class=\"{{ {'upload-chosen': !$pacem.isNullOrEmpty(:host.value) && !:host.uploading, 'upload-error': ${ERROR_BINDING}, 'upload-readonly': :host.readonly } }}\">\r\n\r\n <${P}-panel class=\"upload-button\" hide=\"{{ (:host.uploading || :host.failed) && !$pacem.isNullOrEmpty(:host.url) }}\">\r\n <${P}-button tooltip=\"{{ :host.readonly ? :host.viewValue : 'upload' }}\" class=\"button-circle pos-relative overflow-hidden\"\r\n icon-glyph=\"{{ :host._getMimeIcon(:host.value, :host.uploading, :host.selectMode) }}\"\r\n on-click=\":host._clickHandler($event)\"\r\n on-mouseover=\"$this.iconGlyph = :host._getMimeIcon(:host.readonly ? :host.value : '', :host.uploading, :host.selectMode)\"\r\n on-mouseout=\"$this.iconGlyph = :host._getMimeIcon(:host.value, :host.uploading, :host.selectMode)\"\r\n css-class=\"{{ {'${PCSS}-anim anim-rotate': :host.uploading, 'button-error': :host.invalidFile, 'button-primary': $pacem.isNullOrEmpty(:host.value) && !:host.invalidFile, 'button-success': !Pacem.Utils.isNullOrEmpty(:host.value) && !:host.invalidFile } }}\">\r\n <input type=\"file\" class=\"${PCSS}-transparent ${PCSS}-clickable pos-absolute absolute-left absolute-right absolute-top absolute-bottom\" />\r\n </${P}-button>\r\n </${P}-panel>\r\n <${P}-panel class=\"upload-button\" hide=\"{{ !:host.failed }}\">\r\n <${P}-button class=\"button-circle button-flat\" icon-glyph=\"refresh\"\r\n tooltip=\"{{ :host.retryCaption }}\" on-click=\":host._retry($event)\"><${P}-text text=\"{{ :host.retryCaption }}\"></${P}-text></${P}-button>\r\n </${P}-panel>\r\n <${P}-panel class=\"upload-button\" hide=\"{{ !:host.uploading || $pacem.isNullOrEmpty(:host.url) }}\">\r\n <${P}-button class=\"button-circle button-flat\" icon-glyph=\"clear\" tooltip=\"{{ :host.undoCaption }}\" \r\n on-click=\":host._undo($event)\"><${P}-text text=\"{{ :host.undoCaption }}\"></${P}-text></${P}-button>\r\n </${P}-panel>\r\n\r\n <${P}-span tooltip=\"{{ :host.viewValue }}\"\r\n hide=\"{{ $pacem.isNullOrEmpty(:host.value) || :host.uploading }}\" class=\"upload-data readonly text-reset display-block ${PCSS}-anim text-truncate text-left ${PCSS}-pad pad-right-3\" text=\"{{ :host.viewValue }}\"></${P}-span>\r\n\r\n <${P}-panel class=\"upload-progress hit-none\" hide=\"{{ :host.readonly || (!$pacem.isNullOrEmpty(:host.value) && !:host.uploading) }}\">\r\n <${P}-tuner value=\"{{ :host.percentage }}\" css-class=\"{{ {'tuner-success': !:host.invalidFile, 'tuner-error': :host.invalidFile} }}\" interactive=\"false\"></${P}-tuner>\r\n </${P}-panel>\r\n\r\n <${P}-button class=\"button-circle button-flat clear-button\" icon-glyph=\"clear\" hide=\"{{ $pacem.isNullOrEmpty(:host.value) || :host.uploading }}\" tooltip=\"{{ :host.clearCaption }}\" on-click=\":host._clear($event)\"></${P}-button>\r\n \r\n</${P}-button>`\n })\n], PacemUploadElement);\nexport { PacemUploadElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\nlet PacemHiddenInputElement = class PacemHiddenInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) { }\n get inputFields() {\n return [this.input];\n }\n};\n__decorate([\n ViewChild('input[type=hidden]')\n], PacemHiddenInputElement.prototype, \"input\", void 0);\nPacemHiddenInputElement = __decorate([\n CustomElement({ tagName: P + '-input-hidden', template: '<input type=\"hidden\" />', shadow: Defaults.USE_SHADOW_ROOT })\n], PacemHiddenInputElement);\nexport { PacemHiddenInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomEventUtils, PropertyConverters, Utils, CustomUIEvent, avoidHandler, Logging } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst getUserMediaFunctions = Utils.getUserMediaFunctions();\nexport var SnapshotStep;\n(function (SnapshotStep) {\n SnapshotStep[\"Start\"] = \"start\";\n SnapshotStep[\"Taking\"] = \"taking\";\n SnapshotStep[\"Confirm\"] = \"confirm\";\n})(SnapshotStep || (SnapshotStep = {}));\nclass ConfirmSnapshotEvent extends CustomUIEvent {\n constructor(buffer) {\n super('confirmsnapshot', { buffer });\n }\n}\nlet PacemSnapshotElement = class PacemSnapshotElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this._resizeHandler = (evt) => {\n this._renderValue();\n };\n this.step = SnapshotStep.Start;\n /*const*/ this._canUseWebcam = getUserMediaFunctions.length > 0;\n this._countdown = 0;\n this._webcamInitialized = false;\n this._grabberChangeHandler = (e) => {\n const input = this._grabber;\n if (input.files.length > 0) {\n Utils.blobToDataURL(input.files[0]).then(url => {\n Utils.loadImage(url).then(img => {\n this._shutter(img);\n });\n });\n }\n };\n this._snapshooterClickHandler = (e) => {\n avoidHandler(e);\n this.step = SnapshotStep.Taking;\n };\n this._pickerClickHandler = (e) => {\n avoidHandler(e);\n this._grabber.click();\n };\n this._takerClickHandler = (e) => {\n avoidHandler(e);\n this._countdown = 0;\n this._shutter();\n };\n this._timerClickHandler = (e) => {\n avoidHandler(e);\n this._countdown = 3;\n this._shutter();\n };\n this._confirmerClickHandler = (e) => {\n avoidHandler(e);\n this.changeHandler(new ConfirmSnapshotEvent(this._buffer));\n };\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n // TODO\n }\n onChange(evt) {\n return new Promise((resolve, _) => {\n if (CustomEventUtils.isInstanceOf(evt, ConfirmSnapshotEvent)) {\n resolve(this.value = evt.detail.buffer);\n this.step = SnapshotStep.Start;\n }\n else {\n resolve(this.value);\n }\n });\n }\n acceptValue(val) {\n this._renderValue(val);\n }\n getViewValue(value) {\n return value;\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.String.convert(attr, this);\n }\n get _getUserMedia() {\n return this._canUseWebcam && getUserMediaFunctions[0];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'step':\n switch (val) {\n case SnapshotStep.Start:\n this._buffer = null;\n const input = this._grabber;\n // https://stackoverflow.com/a/35323290\n input.value = '';\n if (!/safari/i.test(navigator.userAgent)) {\n input.type = '';\n input.type = 'file';\n }\n break;\n case SnapshotStep.Taking:\n this._ensureWebcamRunning();\n break;\n }\n break;\n case '_buffer':\n this._renderValue(val || this.value);\n break;\n case 'width':\n case 'height':\n this._syncSize();\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._syncSize();\n this._picker.addEventListener('click', this._pickerClickHandler, false);\n this._snapshooter.addEventListener('click', this._snapshooterClickHandler, false);\n this._taker.addEventListener('click', this._takerClickHandler, false);\n this._timer.addEventListener('click', this._timerClickHandler, false);\n this._confirmer.addEventListener('click', this._confirmerClickHandler, false);\n this._grabber.addEventListener('change', this._grabberChangeHandler, false);\n }\n disconnectedCallback() {\n if (this.isReady) {\n this._picker.removeEventListener('click', this._pickerClickHandler, false);\n this._snapshooter.removeEventListener('click', this._snapshooterClickHandler, false);\n this._taker.removeEventListener('click', this._takerClickHandler, false);\n this._timer.removeEventListener('click', this._timerClickHandler, false);\n this._confirmer.removeEventListener('click', this._confirmerClickHandler, false);\n this._grabber.removeEventListener('change', this._grabberChangeHandler, false);\n }\n super.disconnectedCallback();\n }\n _syncSize() {\n const canvas = this._stage, video = this._player;\n if (!Utils.isNull(canvas) && !Utils.isNull(video)) {\n canvas.style.width = video.style.width = (this.width && this.width + 'px') || '',\n canvas.style.height = video.style.height = (this.height && this.height + 'px') || '';\n this._renderValue(this._buffer || this.value);\n }\n }\n _shutter(el) {\n const me = this, video = this._player, canvas = this._stage;\n me._confirmer.disabled = true;\n if (Utils.isNull(el)) {\n el = me._player;\n }\n var srcWidth, srcHeight;\n if (el instanceof HTMLVideoElement) {\n srcWidth = el.videoWidth;\n srcHeight = el.videoHeight;\n }\n else {\n srcWidth = el.naturalWidth;\n srcHeight = el.naturalHeight;\n }\n if (me._countdown <= 0) {\n var cnv = document.createElement('canvas');\n cnv.width = this.width || canvas.clientWidth;\n cnv.height = this.height || canvas.clientHeight;\n var ctx = cnv.getContext('2d');\n Utils.cropImageOntoCanvas(el, ctx, srcWidth, srcHeight);\n let root = me._root;\n root.insertBefore(cnv, video);\n cnv.className = 'snapshot-brightout';\n setTimeout(function () {\n root.removeChild(cnv);\n }, 1000);\n me._refreshBuffer(cnv.toDataURL()).then((b) => {\n me._setToBeConfirmed(b);\n me._confirmer.disabled = false;\n });\n }\n else\n setTimeout(() => { me._countdown--; this._shutter(); }, 1000);\n }\n _renderValue(val = this.value) {\n let cnv = this._stage;\n if (!Utils.isNull(cnv)) {\n cnv.width = cnv.clientWidth;\n cnv.height = cnv.clientHeight;\n let ctx = cnv.getContext('2d');\n if (Utils.isNullOrEmpty(val)) {\n ctx.clearRect(0, 0, cnv.width, cnv.height);\n }\n else {\n Utils.loadImage(val).then(img => {\n Utils.cropImageOntoCanvas(img, ctx, img.width, img.height);\n });\n }\n }\n }\n _setToBeConfirmed(buffer) {\n this.step = SnapshotStep.Confirm;\n this._buffer = buffer;\n }\n _refreshBuffer(buffer) {\n var cnv = this._stage;\n cnv.width = /*this.width ||*/ cnv.clientWidth;\n cnv.height = /*this.height ||*/ cnv.clientHeight;\n let quality;\n if (this.quality > 0) {\n quality = Math.min(1, Math.max(0, this.quality));\n }\n return Utils.cropImage(buffer, cnv.width, cnv.height, quality);\n }\n _ensureWebcamRunning() {\n if (this._canUseWebcam && !this._webcamInitialized) {\n var me = this;\n me._webcamInitialized = true;\n me._getUserMedia.apply(navigator, [{ video: true /*, audio: false*/ },\n /* success */ function (localMediaStream) {\n var video = me._player;\n // deprecated:\n //video.src = window.URL.createObjectURL(localMediaStream);\n // replaced with:\n video.srcObject = localMediaStream;\n }, /* fail */ function (e) {\n me.log(Logging.LogLevel.Error, (e || e.message).toString());\n }]);\n }\n }\n};\n__decorate([\n ViewChild('.' + PCSS + '-snapshot')\n], PacemSnapshotElement.prototype, \"_root\", void 0);\n__decorate([\n ViewChild('canvas')\n], PacemSnapshotElement.prototype, \"_stage\", void 0);\n__decorate([\n ViewChild('input[type=file]')\n], PacemSnapshotElement.prototype, \"_grabber\", void 0);\n__decorate([\n ViewChild('video')\n], PacemSnapshotElement.prototype, \"_player\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-upload')\n], PacemSnapshotElement.prototype, \"_picker\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-camera')\n], PacemSnapshotElement.prototype, \"_snapshooter\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-take')\n], PacemSnapshotElement.prototype, \"_taker\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-timer3s')\n], PacemSnapshotElement.prototype, \"_timer\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-confirm')\n], PacemSnapshotElement.prototype, \"_confirmer\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSnapshotElement.prototype, \"step\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSnapshotElement.prototype, \"width\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSnapshotElement.prototype, \"height\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSnapshotElement.prototype, \"quality\", void 0);\n__decorate([\n Watch()\n], PacemSnapshotElement.prototype, \"_countdown\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemSnapshotElement.prototype, \"_buffer\", void 0);\nPacemSnapshotElement = __decorate([\n CustomElement({\n tagName: P + '-snapshot',\n shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-snapshot\" \r\ncss-class=\"{{ { \r\n'snapshot-start': :host.step === '${SnapshotStep.Start}',\r\n'snapshot-taking': :host.step === '${SnapshotStep.Taking}', \r\n'snapshot-confirm': :host.step === '${SnapshotStep.Confirm}' } }}\">\r\n\r\n <${P}-resize target=\"{{ ::_stage }}\" on-resize=\":host._resizeHandler($event)\"></${P}-resize>\r\n\r\n <canvas class=\"${PCSS}-viewfinder\"></canvas>\r\n\r\n <video autoplay=\"autoplay\"></video>\r\n\r\n <input type=\"file\" accept=\"image/*\" />\r\n\r\n <div class=\"${PCSS}-buttonset snapshot-step step-start\">\r\n <div class=\"buttonset-center\">\r\n <${P}-button class=\"button snapshot-upload\" icon-glyph=\"upload\"></${P}-button>\r\n <${P}-button class=\"button snapshot-camera\" icon-glyph=\"photo_camera\"></${P}-button> \r\n </div>\r\n </div>\r\n\r\n <div class=\"${PCSS}-buttonset snapshot-step step-taking\">\r\n <div class=\"buttonset-center\">\r\n <${P}-button class=\"button snapshot-undo\" icon-glyph=\"undo\" on-click=\":host.step = '${SnapshotStep.Start}'\"></${P}-button>\r\n <${P}-button class=\"button snapshot-take\" icon-glyph=\"camera\"></${P}-button>\r\n <${P}-button class=\"button snapshot-timer3s\" icon-glyph=\"timer_3\"></${P}-button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"${PCSS}-buttonset snapshot-step step-confirm\">\r\n <div class=\"buttonset-center\">\r\n <${P}-button class=\"button snapshot-undo\" icon-glyph=\"undo\" on-click=\":host.step = '${SnapshotStep.Start}'\"></${P}-button>\r\n <${P}-button class=\"button snapshot-confirm\" icon-glyph=\"done\"></${P}-button>\r\n </div>\r\n </div>\r\n\r\n <${P}-span class=\"snapshot-countdown\" text=\"{{ :host._countdown }}\" hide=\"{{ :host.step !== '${SnapshotStep.Taking}' || !(:host._countdown > 0) }}\"></${P}-span>\r\n <${P}-span hide=\"{{ :host._canUseWebcam }}\"><${P}-content></${P}-content></${P}-span>\r\n\r\n</${P}-panel>`\n })\n], PacemSnapshotElement);\nexport { PacemSnapshotElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomTypedEvent, Components, CustomEventUtils, PropertyConverters, PropertyChangeEventName, Utils, Debounce, avoidHandler } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemBaseElement } from './types-components';\nimport { FileUploadEventName } from './input-file';\nimport { SnapshotStep } from './snapshot';\n//namespace Pacem.Components.Scaffolding {\nexport class Picture {\n}\nexport const ImageFetchRequestEventName = 'imagefetchrequest';\nexport class ImageFetchRequestEvent extends CustomTypedEvent {\n constructor(args) {\n super(ImageFetchRequestEventName, args, { bubbles: true /*, scoped: false */ });\n }\n}\nlet PacemEditImageElement = class PacemEditImageElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._index = 0;\n this.hint = '';\n }\n _uploaderPropertyChangedCallback(evt) {\n const val = evt.detail.currentValue;\n switch (evt.detail.propertyName) {\n case 'percentage':\n this._progressbar.percentage = val * 100.0;\n break;\n case 'uploading':\n if (val)\n this._done(true);\n break;\n }\n }\n _thumbnailUploaderPropertyChangedCallback(evt) {\n const val = evt.detail.currentValue;\n switch (evt.detail.propertyName) {\n case 'percentage':\n this._progressbar.percentage = val * 100.0;\n break;\n case 'uploading':\n this._done(val);\n break;\n }\n }\n _uploaderFileUploadCallback(evt) {\n const uploader = this._uploader;\n const thumbUploader = this._thumbUploader, w = thumbUploader.maxImageWidth, h = thumbUploader.maxImageHeight;\n if (w > 0 && h > 0) {\n var blob = uploader.blob;\n const uid = evt.detail.uid;\n Utils.resizeImage(blob, w, h).then(blob2 => {\n if (blob2 != blob) {\n thumbUploader.upload(blob2, 'thumbnail.jpg', uid);\n return;\n }\n else\n // fallback\n this._done(false);\n });\n }\n else\n // fallback\n this._done(false);\n }\n _done(uploading) {\n if (!uploading) {\n this._imagefetch(0);\n }\n this._repeater.hidden = uploading;\n this._progressbar.hidden = !uploading;\n }\n _snapshotPropertyChangedCallback(evt) {\n switch (evt.detail.propertyName) {\n case 'value':\n const blob = Utils.dataURLToBlob(evt.detail.currentValue);\n this._uploader.upload(blob, 'snapshot.jpg');\n break;\n }\n }\n reset() {\n this._snapshot.step = SnapshotStep.Start;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'imageSet':\n let set = val || { skip: 0, set: [] };\n if (Utils.isNullOrEmpty(this._images) || set.skip === 0)\n this._images = set.set;\n else if (!Utils.isNull(this._images))\n Array.prototype.splice.apply(this._images, [set.skip, this._images.length - set.skip].concat(set.set));\n this._fetching = false;\n break;\n case 'hint':\n if (!first)\n this._imagefetch(0);\n break;\n }\n }\n _imagefetchSuddenly(ndx) {\n this._fetching = true;\n this._imagefetch(ndx);\n }\n _imagefetch(ndx) {\n if (!(ndx >= 0))\n ndx = (this._images && this._images.length) || 0;\n this.dispatchEvent(new ImageFetchRequestEvent({ hint: this.hint, skip: ndx, take: 18 }));\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditImageElement.prototype, \"uploadUrl\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditImageElement.prototype, \"hint\", void 0);\n__decorate([\n Watch()\n], PacemEditImageElement.prototype, \"imageSet\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditImageElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxWidth\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxHeight\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxThumbnailWidth\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxThumbnailHeight\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemEditImageElement.prototype, \"allowSnapshot\", void 0);\n__decorate([\n Watch()\n], PacemEditImageElement.prototype, \"_fetching\", void 0);\n__decorate([\n Watch()\n], PacemEditImageElement.prototype, \"_images\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemEditImageElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-upload[main]')\n], PacemEditImageElement.prototype, \"_uploader\", void 0);\n__decorate([\n ViewChild(P + '-upload[thumb]')\n], PacemEditImageElement.prototype, \"_thumbUploader\", void 0);\n__decorate([\n ViewChild(P + '-snapshot')\n], PacemEditImageElement.prototype, \"_snapshot\", void 0);\n__decorate([\n ViewChild(P + '-progressbar')\n], PacemEditImageElement.prototype, \"_progressbar\", void 0);\n__decorate([\n Debounce(500)\n], PacemEditImageElement.prototype, \"_imagefetch\", null);\nPacemEditImageElement = __decorate([\n CustomElement({\n tagName: P + '-edit-image', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-edit-image\"\r\n css-class=\"{{ {'${PCSS}-snapshot': ::_snapshot.step != '${SnapshotStep.Start}', '${PCSS}-uploading': ::_uploader.uploading, '${PCSS}-upload-enabled': !Pacem.Utils.isNullOrEmpty(:host.uploadUrl), '${PCSS}-snapshot-enabled': !Pacem.Utils.isNullOrEmpty(:host.uploadUrl) && :host.allowSnapshot} }}\">\r\n <div>\r\n <${P}-input-search value=\"{{ :host.hint, twoway }}\"></${P}-input-search>\r\n <${P}-upload main pattern=\".+\\.(jpe?g|png|svg|ico)$\" url=\"{{ :host.uploadUrl }}\"\r\n max-image-width=\"{{ :host.maxWidth }}\" max-image-height=\"{{ :host.maxHeight }}\"\r\n on-${FileUploadEventName}=\":host._uploaderFileUploadCallback($event)\"\r\n on-${PropertyChangeEventName}=\":host._uploaderPropertyChangedCallback($event)\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.uploadUrl) || ::_thumbUploader.uploading }}\"></${P}-upload>\r\n <${P}-upload thumb pattern=\".+\\.(jpe?g|png|svg|ico)$\" url=\"{{ :host.uploadUrl }}\" hide=\"{{ !::_thumbUploader.uploading }}\"\r\n max-image-width=\"{{ :host.maxThumbnailWidth }}\" max-image-height=\"{{ :host.maxThumbnailHeight }}\"\r\n on-${PropertyChangeEventName}=\":host._thumbnailUploaderPropertyChangedCallback($event)\"></${P}-upload>\r\n <${P}-button class=\"${PCSS}-snapshot\" on-click=\"Pacem.avoidHandler($event); ::_snapshot.step = '${SnapshotStep.Taking}'\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.uploadUrl) || !:host.allowSnapshot }}\"></${P}-button>\r\n <${P}-infinite-scroller container=\"{{ ::_repeater }}\" on-fetchmore=\":host._imagefetchSuddenly()\" disabled=\"{{ :host._fetching || :host.disabled || :host._images.length >= :host.imageSet.total }}\"></${P}-infinite-scroller>\r\n <${P}-repeater datasource=\"{{ :host._images }}\">\r\n <template>\r\n <${P}-img css-class=\"{{ {'${PCSS}-selected': ^item.src === :host.value } }}\" on-click=\":host.value = ^item.src\" src=\"{{ ^item.thumb }}\" adapt=\"contain\"></${P}-img>\r\n </template>\r\n </${P}-repeater>\r\n <${P}-progressbar class=\"progressbar-smaller progressbar-accent\" caption=\"{{ ::_thumbUploader.uploading ? 'thumbnail...' : 'uploading...' }}\"></${P}-progressbar>\r\n </div>\r\n <div>\r\n <${P}-snapshot hide=\"{{ !:host.allowSnapshot }}\" on-${PropertyChangeEventName}=\":host._snapshotPropertyChangedCallback($event)\"></${P}-snapshot>\r\n </div>\r\n </${P}-panel>`\n })\n], PacemEditImageElement);\nexport { PacemEditImageElement };\nlet PacemImageInputElement = class PacemImageInputElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this._broadcastFetchRequestEventName = (evt) => {\n this.dispatchEvent(new ImageFetchRequestEvent(evt.detail));\n };\n this._innerValueChangedHandler = (evt) => {\n if (evt.detail.propertyName === 'value' && !Utils.isNull(this._dialog))\n this._dialog.state = evt.detail.currentValue;\n };\n // #endregion\n }\n convertValueAttributeToProperty(attr) {\n return attr; // better assumptions anyone?\n }\n getViewValue(value) {\n return value;\n }\n get inputFields() {\n return [];\n }\n _clear(evt) {\n this.changeHandler(evt);\n }\n onChange(evt) {\n let value = this.value;\n if (CustomEventUtils.isInstanceOf(evt, ComponentsUI.UI.DialogResultEvent)\n && evt.detail.button === ComponentsUI.UI.DialogButton.Ok)\n value = this.value = evt.detail.state;\n else if (evt.target === this._input)\n value = this.value = this._input.value;\n else if (evt.target === this._clearBtn)\n value = this.value = undefined;\n return Utils.fromResult(value);\n }\n toggleReadonlyView(readonly) {\n this._input.hidden = this._editBtn.hide = this._clearBtn.hide = readonly;\n }\n _addDialog() {\n var dialog = document.createElement(P + '-dialog');\n dialog.buttons = ComponentsUI.UI.DialogButtons.OkCancel;\n dialog.addEventListener(ComponentsUI.UI.DialogResultEventName, this.changeHandler, false);\n dialog.appendChild(this._addEditImage());\n document.body.appendChild(dialog);\n //\n return this._dialog = dialog;\n }\n _removeDialog() {\n this._removeEditImage();\n if (!Utils.isNull(this._dialog)) {\n this._dialog.removeEventListener(ComponentsUI.UI.DialogResultEventName, this.changeHandler, false);\n this._dialog.remove();\n }\n }\n _addEditImage() {\n var editImage = document.createElement(P + '-edit-image');\n editImage.disabled = true;\n editImage.addEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n editImage.addEventListener(ImageFetchRequestEventName, this._broadcastFetchRequestEventName, false);\n editImage.uploadUrl = this.uploadUrl;\n editImage.allowSnapshot = this.allowSnapshot;\n editImage.maxWidth = this.maxWidth;\n editImage.maxHeight = this.maxHeight;\n editImage.maxThumbnailHeight = this.maxThumbnailHeight;\n editImage.maxThumbnailWidth = this.maxThumbnailWidth;\n return this._editImage = editImage;\n }\n _removeEditImage() {\n if (!Utils.isNull(this._editImage)) {\n this._editImage.removeEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n this._editImage.removeEventListener(ImageFetchRequestEventName, this._broadcastFetchRequestEventName, false);\n }\n }\n connectedCallback() {\n super.connectedCallback();\n this._addDialog();\n }\n disconnectedCallback() {\n this._removeDialog();\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'uploadUrl':\n if (!Utils.isNull(this._editImage))\n this._editImage.uploadUrl = val;\n break;\n case 'allowSnapshot':\n if (!Utils.isNull(this._editImage))\n this._editImage.allowSnapshot = val;\n break;\n case 'imageSet':\n if (!Utils.isNull(this._editImage))\n this._editImage.imageSet = val;\n break;\n case 'maxThumbnailHeight':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxThumbnailHeight = val;\n break;\n case 'maxThumbnailWidth':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxThumbnailWidth = val;\n break;\n case 'maxHeight':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxHeight = val;\n break;\n case 'maxWidth':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxWidth = val;\n break;\n }\n }\n acceptValue(val) {\n if (!Utils.isNull(this._editImage))\n this._editImage.value = val;\n }\n _update(val) {\n this._image.src = val;\n }\n _retrieve() {\n return this.value;\n }\n _edit(evt) {\n avoidHandler(evt);\n var editImage = this._editImage, state = this.value;\n editImage.disabled = false;\n editImage.reset();\n editImage.value = state;\n this._dialog.open(state).then(args => {\n switch (args.button) {\n case ComponentsUI.UI.DialogButton.Cancel:\n // reset value\n this._update(this.value);\n break;\n case ComponentsUI.UI.DialogButton.Ok:\n // save\n this._update(args.state);\n break;\n }\n this._editImage.disabled = true;\n });\n }\n};\n__decorate([\n ViewChild(P + '-img')\n], PacemImageInputElement.prototype, \"_image\", void 0);\n__decorate([\n ViewChild(P + '-button.' + PCSS + '-edit')\n], PacemImageInputElement.prototype, \"_editBtn\", void 0);\n__decorate([\n ViewChild(P + '-button.' + PCSS + '-clear')\n], PacemImageInputElement.prototype, \"_clearBtn\", void 0);\n__decorate([\n ViewChild(P + '-input-url')\n], PacemImageInputElement.prototype, \"_input\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemImageInputElement.prototype, \"uploadUrl\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemImageInputElement.prototype, \"imageSet\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxThumbnailWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxThumbnailHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemImageInputElement.prototype, \"allowSnapshot\", void 0);\nPacemImageInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-image', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-input-image\"><${P}-img src=\"{{ :host.value }}\" adapt=\"contain\"></${P}-img><div class=\"${PCSS}-input-image-dashboard\">\r\n <${P}-button on-click=\":host._edit($event)\" hide=\"{{ :host.disabled }}\" class=\"${PCSS}-edit\">Edit</${P}-button>\r\n <${P}-button on-click=\":host._clear($event)\" hide=\"{{ :host.disabled }}\" class=\"${PCSS}-clear\">Clear</${P}-button>\r\n</div><${P}-input-url placeholder=\"{{ :host.placeholder }}\" on-change=\":host.changeHandler($event)\" value=\"{{ :host.value }}\"></${P}-input-url>\r\n\r\n <${P}-panel hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.value) }}\">\r\n <dl class=\"${PCSS}-input-image-preview\">\r\n <dt>dimensions:</dt><dd><${P}-text text=\"{{ ::_image.size.width +'x'+ ::_image.size.height }}\"></${P}-text></dd>\r\n <dt>size:</dt><dd><${P}-text text=\"{{ $pacem.size(::_image.size.weight) }}\"></${P}-text></dd>\r\n </dl></${P}-panel>\r\n\r\n</div>`\n })\n], PacemImageInputElement);\nexport { PacemImageInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { PacemOrdinalInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\nlet PacemNumberInputElement = class PacemNumberInputElement extends PacemOrdinalInputElement {\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._input.hidden = readonly;\n }\n get inputFields() {\n return [this._input];\n }\n getViewValue(val) {\n return this.value != null ? this._format(this.value) : undefined;\n }\n _format(v = this.value) {\n const intl = this.format;\n if (!Utils.isNullOrEmpty(intl)) {\n return new Intl.NumberFormat(Utils.lang(this), intl).format(v);\n }\n return v.toString();\n }\n getValue(val) {\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/669685/ (bug open since Aug 2014!)\n const v = this.inputField.valueAsNumber || parseFloat(this.inputField.value);\n return isNaN(v) ? undefined : v;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n var options = { capture: false, passive: false };\n this._input.addEventListener(\"wheel\", this.emitHandler, options);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._input)) {\n var options = { capture: false, passive: false };\n this._input.removeEventListener(\"wheel\", this.emitHandler, options);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild('input[type=number]')\n], PacemNumberInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemNumberInputElement.prototype, \"_span\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemNumberInputElement.prototype, \"format\", void 0);\nPacemNumberInputElement = __decorate([\n CustomElement({ tagName: P + '-input-number', template: `<input type=\"number\" class=\"${PCSS}-input ${PCSS}-viewfinder\" /><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemNumberInputElement);\nexport { PacemNumberInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, avoidHandler, Defaults, ViewChild, Utils } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nlet PacemPasswordInputElement = class PacemPasswordInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n this._togglerMousedownHandler = (evt) => {\n if (evt.button == 0) {\n avoidHandler(evt);\n this.toggleVisibility();\n }\n };\n }\n get inputFields() {\n return [this._input];\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const baseId = this.id ?? '_' + Utils.uniqueCode();\n const inputId = this._input.id = baseId + '_ctrl';\n this._toggler.setAttribute('aria-controls', inputId);\n this._toggler.setAttribute('role', 'button');\n this._syncToggler();\n this._toggler.addEventListener('mousedown', this._togglerMousedownHandler, false);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._toggler)) {\n this._toggler.removeEventListener('mousedown', this._togglerMousedownHandler, false);\n }\n }\n toggleVisibility() {\n const current = this._input.type;\n this._input.type = current === 'password' ? 'text' : 'password';\n this._syncToggler();\n }\n _syncToggler() {\n const collapsed = this._input.type === 'password';\n this._toggler.innerText = collapsed ? 'visibility_off' : 'visibility';\n this._toggler.setAttribute('aria-expanded', (!collapsed).toString());\n }\n toggleReadonlyView(readonly) {\n this._input.hidden = this._toggler.hidden = readonly;\n this._span.hidden = !readonly;\n }\n getViewValue(val) {\n return Utils.leftPad('', Math.floor(8 + 3 * Math.random()), '•');\n }\n};\n__decorate([\n ViewChild('input[type=password]')\n], PacemPasswordInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemPasswordInputElement.prototype, \"_span\", void 0);\n__decorate([\n ViewChild(`i.${PCSS}-icon.${PCSS}-clickable`)\n], PacemPasswordInputElement.prototype, \"_toggler\", void 0);\nPacemPasswordInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-password', template: `<input type=\"password\" class=\"${PCSS}-input ${PCSS}-viewfinder\" /><i class=\"${PCSS}-icon ${PCSS}-clickable\"></i>\r\n${CHAR_COUNTER_CHILD}<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemPasswordInputElement);\nexport { PacemPasswordInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\nlet PacemSearchInputElement = class PacemSearchInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n get inputFields() {\n return [this.input];\n }\n toggleReadonlyView(readonly) {\n // no readonly view provided.\n }\n};\n__decorate([\n ViewChild('input[type=search]')\n], PacemSearchInputElement.prototype, \"input\", void 0);\nPacemSearchInputElement = __decorate([\n CustomElement({ tagName: P + '-input-search', template: '<input type=\"search\" class=\"' + PCSS + '-input\" />', shadow: Defaults.USE_SHADOW_ROOT })\n], PacemSearchInputElement);\nexport { PacemSearchInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\nlet PacemTelInputElement = class PacemTelInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n this.input.hidden = readonly;\n this.anchor.hidden = !readonly;\n }\n get inputFields() {\n return [this.input];\n }\n};\n__decorate([\n ViewChild('input[type=tel]')\n], PacemTelInputElement.prototype, \"input\", void 0);\n__decorate([\n ViewChild(P + '-a')\n], PacemTelInputElement.prototype, \"anchor\", void 0);\nPacemTelInputElement = __decorate([\n CustomElement({ tagName: P + '-input-tel', template: `<input type=\"tel\" class=\"${PCSS}-input\" /><${P}-a class=\"${PCSS}-readonly\" disabled=\"{{ $pacem.isNullOrEmpty(:host.value) }}\" href=\"{{ 'tel:'+ :host.value }}\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-a>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemTelInputElement);\nexport { PacemTelInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nlet PacemTextInputElement = class PacemTextInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._input.hidden = readonly;\n }\n get inputFields() {\n return [this._input];\n }\n};\n__decorate([\n ViewChild('input[type=text]')\n], PacemTextInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild('span.' + PCSS + '-readonly')\n], PacemTextInputElement.prototype, \"_span\", void 0);\nPacemTextInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-text',\n template: `<input type=\"text\" class=\"${PCSS}-input\" />${CHAR_COUNTER_CHILD}<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemTextInputElement);\nexport { PacemTextInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nlet PacemUrlInputElement = class PacemUrlInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n this.input.hidden = readonly;\n this.anchor.hidden = !readonly;\n }\n get inputFields() {\n return [this.input];\n }\n};\n__decorate([\n ViewChild('input[type=url]')\n], PacemUrlInputElement.prototype, \"input\", void 0);\n__decorate([\n ViewChild(P + '-a')\n], PacemUrlInputElement.prototype, \"anchor\", void 0);\nPacemUrlInputElement = __decorate([\n CustomElement({ tagName: P + '-input-url', template: `<input type=\"url\" class=\"${PCSS}-input\" />${CHAR_COUNTER_CHILD}<${P}-a class=\"${PCSS}-readonly\" disabled=\"{{ $pacem.isNullOrEmpty(:host.value) }}\" href=\"{{ :host.value }}\" target=\"_blank\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-a>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemUrlInputElement);\nexport { PacemUrlInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults } from '@pacem/pacem-core';\nimport { Components as ComponentsMaps } from '@pacem/pacem-maps';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nexport const DEFAULT_TILES = \"\";\nexport const DEFAULT_ATTRIBUTION = \"\";\n//const TILES = `//api.mapbox.com/styles/v1/cmerighi/ciwz1gib7002l2prvgpi724nk/tiles/256/{z}/{x}/{y}?access_token=pk.eyJ1IjoiY21lcmlnaGkiLCJhIjoiY2lsZHIxdGJmMDAxOHc4bHowamxpZ2Z2OCJ9.7I7ndF-rAkx_1Sqi0bw3Ew`;\n//const ATTRIBUTION = `Map data © <a href=\"http://openstreetmap.org\">OpenStreetMap</a> contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>, Imagery © <a href=\"http://mapbox.com\">Mapbox</a>`\nconst REVERSE_GEOCODE_URL = 'https://nominatim.openstreetmap.org/reverse';\nlet PacemLatLngElement = class PacemLatLngElement extends PacemBaseElement {\n convertValueAttributeToProperty(attr) {\n const regexArray = /^\\s*([+-]?\\d+\\.?\\d+)[,\\s]\\s*([+-]?\\d+\\.?\\d+)\\s*$/.exec(attr);\n if (regexArray && regexArray.length === 3) {\n return { lat: parseFloat(regexArray[1]), lng: parseFloat(regexArray[2]) };\n }\n throw `Invalid coordinates format for \"${attr}\"`;\n }\n compareValuePropertyValues(old, val) {\n if (old && typeof old.lat === 'number' && typeof old.lng === 'number'\n && val && typeof val.lat === 'number' && typeof val.lng === 'number') {\n return old.lat === val.lat && old.lng === val.lng;\n }\n return false;\n }\n getViewValue(value) {\n return this._getViewValue(value);\n }\n _getViewValue(value, precision = 8) {\n return value && typeof value.lat === 'number' && typeof value.lng === 'number' && value.lat.toFixed(precision) + ',' + value.lng.toFixed(precision) || '';\n }\n get inputFields() {\n return [this._latInput, this._lngInput];\n }\n toggleReadonlyView(readonly) {\n this._inputContainer.hidden = /*\n this._lngInput.hide = this._latInput.hide =*/\n readonly;\n }\n // regex: \n acceptValue(val) {\n let e_val = this._ensureValue(val);\n this._lat = e_val.lat;\n this._lng = e_val.lng;\n }\n _ensureValue(val) {\n return (val && typeof val.lat === 'number' && typeof val.lng === 'number') ? val : ComponentsMaps.Maps.MapConsts.DEFAULT_COORDS;\n }\n onChange(evt) {\n if (evt && evt.type === 'dragend') {\n var mevt = evt;\n // geocoordinate change due to map drag\n this._lat = mevt.detail.position.lat;\n this._lng = mevt.detail.position.lng;\n } // else: geocoordinate change due to text-input\n const lat = this._lat;\n const lng = this._lng;\n if (Utils.isNull(lat) || Utils.isNull(lng))\n return Utils.fromResult(this.value);\n return Utils.fromResult(this.value = { lat: lat, lng: lng });\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'options' && !first) {\n const opts = Utils.clone((val || { provider: 'osm' }));\n this._synchronizeOptions(opts);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._synchronizeOptions();\n }\n _synchronizeOptions(opts = this.options || { provider: 'osm' }) {\n const marker = this._marker, map = this._map;\n marker.icon = opts.icon;\n switch (opts && opts.provider) {\n case 'azure':\n this._azureAdapter.subscriptionKey = opts.apiKey;\n map.adapter = this._azureAdapter;\n break;\n case 'google':\n case 'gmaps':\n this._googleAdapter.apiKey = opts.apiKey;\n map.adapter = this._googleAdapter;\n break;\n default:\n if (!Utils.isNullOrEmpty(opts.attribution)) {\n this._leafletAdapter.attribution = opts.attribution;\n }\n if (!Utils.isNullOrEmpty(opts.tiles)) {\n this._leafletAdapter.tiles = opts.tiles;\n }\n map.adapter = this._leafletAdapter;\n break;\n }\n delete opts['provider'];\n delete opts['icon'];\n delete opts['apiKey'];\n delete opts['attribution'];\n delete opts['tiles'];\n for (let prop in opts) {\n if (prop in map) {\n map[prop] = opts[prop];\n }\n }\n }\n};\n__decorate([\n ViewChild(P + '-map-adapter-leaflet')\n], PacemLatLngElement.prototype, \"_leafletAdapter\", void 0);\n__decorate([\n ViewChild(P + '-map-adapter-azure')\n], PacemLatLngElement.prototype, \"_azureAdapter\", void 0);\n__decorate([\n ViewChild(P + '-map-adapter-google')\n], PacemLatLngElement.prototype, \"_googleAdapter\", void 0);\n__decorate([\n ViewChild(P + '-map')\n], PacemLatLngElement.prototype, \"_map\", void 0);\n__decorate([\n ViewChild(P + '-map-marker')\n], PacemLatLngElement.prototype, \"_marker\", void 0);\n__decorate([\n ViewChild(P + '-input-number:nth-child(1)')\n], PacemLatLngElement.prototype, \"_latInput\", void 0);\n__decorate([\n ViewChild(P + '-input-number:nth-child(2)')\n], PacemLatLngElement.prototype, \"_lngInput\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-latlng-fields`)\n], PacemLatLngElement.prototype, \"_inputContainer\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemLatLngElement.prototype, \"_fetcher\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json, emit: false })\n], PacemLatLngElement.prototype, \"options\", void 0);\n__decorate([\n Watch()\n], PacemLatLngElement.prototype, \"_lat\", void 0);\n__decorate([\n Watch()\n], PacemLatLngElement.prototype, \"_lng\", void 0);\nPacemLatLngElement = __decorate([\n CustomElement({\n tagName: P + '-latlng', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-latlng\">\r\n <div class=\"${PCSS}-latlng-fields ${PCSS}-viewfinder\">\r\n <${P}-input-number class=\"${PCSS}-lat\" value=\"{{ :host._lat, twoway }}\" min=\"-90\" max=\"90\" step=\"{{ 'any' }}\"></${P}-input-number>\r\n <${P}-input-number class=\"${PCSS}-lng\" value=\"{{ :host._lng, twoway }}\" min=\"-180\" max=\"180\" step=\"{{ 'any' }}\"></${P}-input-number>\r\n </div>\r\n <${P}-panel hide=\"{{ Pacem.Utils.isNull(:host.value) || :host.readonly }}\">\r\n <dl class=\"${PCSS}-latlng-preview\">\r\n <dt>decimals:</dt><dd><${P}-text text=\"{{ :host._getViewValue(:host.value, 12) }}\"></${P}-text></dd>\r\n <dt>address:</dt><dd><${P}-text text=\"{{ ::_fetcher.result.display_name || '?' }}\"></${P}-text></dd>\r\n <dt>degrees:</dt><dd><${P}-span css-class=\"{{ {'${PCSS}-lat-north': :host._lat > 0, '${PCSS}-lat-south': :host._lat < 0} }}\" content=\"{{ $pacem.decToDeg(Math.abs(:host._lat)) }}\"></${P}-span>,\r\n <${P}-span css-class=\"{{ {'${PCSS}-lng-east': :host._lng > 0, '${PCSS}-lng-west': :host._lng < 0} }}\" content=\"{{ $pacem.decToDeg(Math.abs(:host._lng)) }}\"></${P}-span></dd>\r\n </dl>\r\n </${P}-panel>\r\n <${P}-span class=\"${PCSS}-readonly\" hide=\"{{ !:host.readonly }}\" content=\"{{ :host.viewValue + ($pacem.isNullOrEmpty(::_fetcher.result.display_name) ? '' : (' <small>'+ ::_fetcher.result.display_name +'</small>')) }}\"></${P}-span>\r\n\r\n <${P}-map-adapter-leaflet></${P}-map-adapter-leaflet>\r\n <${P}-map-adapter-azure></${P}-map-adapter-azure>\r\n <${P}-map-adapter-google></${P}-map-adapter-google>\r\n\r\n <${P}-map adapter=\"{{ ::_adapter }}\">\r\n <${P}-map-marker position=\"{{ :host._ensureValue(:host.value) }}\" on-dragend=\":host.changeHandler($event)\" draggable=\"{{ !:host.readonly }}\"></${P}-map-marker>\r\n </${P}-map>\r\n <${P}-fetch disabled=\"{{ $pacem.isNull(:host.value) }}\" parameters=\"{{ { format: 'json', lat: :host._lat, lon: :host._lng } }}\" url=\"${REVERSE_GEOCODE_URL}\"></${P}-fetch>\r\n</div>`\n })\n], PacemLatLngElement);\nexport { PacemLatLngElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Defaults } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\nimport { ChangePolicy } from './input';\n//namespace Pacem.Components.Scaffolding {\nconst ITEM_TXT_CORE = `change-policy=\"${ChangePolicy.Blur}\" readonly=\"{{ :host.readonly }}\"`;\nfunction isEmpty(nvp) {\n return Utils.isNullOrEmpty(nvp && nvp.name);\n}\nfunction pullEmpty() {\n return { name: '', value: '' };\n}\nlet PacemNameValueListElement = class PacemNameValueListElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this.inputFields = [];\n this._bag = [];\n }\n toggleReadonlyView(readonly) {\n // let the bindings do their job...\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n let val = this._bagToValue(this._bag);\n if (!this.compareValuePropertyValues(val, this.value)) {\n resolve(this.value = val);\n }\n else {\n reject();\n }\n });\n }\n acceptValue(val) {\n this._bag = this._valueToBag(val);\n }\n getViewValue(value) {\n return ''; // unneeded\n }\n compareValuePropertyValues(old, val) {\n return Utils.Json.stringify(old) === Utils.Json.stringify(val);\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'dictionary' && !first) {\n this.value = this._bagToValue();\n }\n }\n _bagToValue(bag = this._bag) {\n if (!this.dictionary) {\n // not a dictionary\n // return an array\n let b = [];\n for (let item of bag || []) {\n if (isEmpty(item)) {\n continue;\n }\n if (b.find(i => i.name === item.name && i.value === item.value)) {\n continue;\n }\n b.push(item);\n }\n return b;\n }\n // dictionary\n // return an object\n let v = {};\n for (let kvp of bag || []) {\n if (kvp.name in v) {\n // skip existing names...\n continue;\n }\n v[kvp.name] = kvp.value;\n }\n return v;\n }\n _valueToBag(val = this.value) {\n const bag = [];\n if (!Utils.isNullOrEmpty(val) && typeof val === 'object') {\n if (this.dictionary && !Utils.isArray(val)) {\n for (let prop in val) {\n bag.push({ name: prop, value: val[prop] });\n }\n }\n else if (!this.dictionary && Utils.isArray(val)) {\n Array.prototype.splice.apply(bag, [0, 0].concat(val.map(i => Utils.clone(i))));\n }\n }\n return !Utils.isNullOrEmpty(bag) ? bag : [pullEmpty()];\n }\n _deleteAt(evt) {\n this._bag.splice(evt.detail, 1);\n this.changeHandler(evt);\n }\n _addItem(evt) {\n const bag = this._bag, lastItem = this._bag[this._bag.length - 1];\n if (Utils.isEmpty(bag) || !isEmpty(lastItem)) {\n bag.push(pullEmpty());\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemNameValueListElement.prototype, \"dictionary\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemNameValueListElement.prototype, \"_bag\", void 0);\nPacemNameValueListElement = __decorate([\n CustomElement({\n tagName: P + '-namevalue-list', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater datasource=\"{{ :host._bag }}\" on-itemdelete=\":host._deleteAt($event)\">\r\n <template>\r\n <div class=\"${PCSS}-fieldset ${PCSS}-margin margin-bottom-1\">\r\n <div class=\"fieldset-auto\">\r\n <div class=\"${PCSS}-fieldgroup\">\r\n <${P}-input-text ${ITEM_TXT_CORE} value=\"{{ ^item.name, twoway }}\" on-change=\":host.changeHandler($event)\"></${P}-input-text>\r\n <div class=\"fieldgroup-prepend\"></div>\r\n </div>\r\n <div class=\"${PCSS}-fieldgroup\">\r\n <${P}-input-text ${ITEM_TXT_CORE} value=\"{{ ^item.value, twoway }}\" on-change=\":host.changeHandler($event)\"></${P}-input-text>\r\n <div class=\"fieldgroup-append\">\r\n <${P}-button class=\"${PCSS}-cell cols-2 flat delete\" hide=\"{{ :host.readonly }}\" command-name=\"delete\" command-argument=\"{{ ^index }}\"></${P}-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </template>\r\n <${P}-button class=\"flat add\" hide=\"{{ :host.readonly }}\" on-click=\":host._addItem($event)\"></${P}-button>\r\n</${P}-repeater>`\n })\n], PacemNameValueListElement);\nexport { PacemNameValueListElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nlet PacemPropertyPickerElement = class PacemPropertyPickerElement extends PacemBaseElement {\n get inputFields() {\n return [this._select];\n }\n toggleReadonlyView(readonly) {\n this._select.readonly = readonly;\n }\n onChange(evt) {\n return Utils.fromResult(this.value = this._select.value);\n }\n acceptValue(val) {\n this._select.value = val;\n }\n getViewValue(value) {\n return this._select.viewValue;\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Element.convert(attr);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._databind();\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._databind();\n break;\n }\n }\n }\n _databind() {\n const props = [], \n // recursive fn\n fnRec = (container, prop, name) => {\n const val = container[prop];\n if (typeof val === 'object' && val != null && !Utils.isArray(val)) {\n for (let key of Object.keys(val)) {\n const fullName = name + '.' + key;\n // add nested\n props.push(fullName);\n // try again (recursively)\n fnRec(val, key, fullName);\n }\n }\n };\n let src = this.target;\n if (!Utils.isNull(src)) {\n let observed = CustomElementUtils.getWatchedProperties(src);\n for (let obs of observed) {\n let name = obs.name;\n // add straight\n props.push(name);\n // dig nested stuff\n fnRec(src, name, name);\n }\n }\n this._select.datasource = props.sort();\n }\n};\n__decorate([\n ViewChild(P + '-select')\n], PacemPropertyPickerElement.prototype, \"_select\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemPropertyPickerElement.prototype, \"target\", void 0);\nPacemPropertyPickerElement = __decorate([\n CustomElement({\n tagName: P + '-property-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-select></${P}-select>`\n })\n], PacemPropertyPickerElement);\nexport { PacemPropertyPickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nlet PacemRadioElement = class PacemRadioElement extends PacemBaseElement {\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n constructor() {\n super();\n this._key = '_' + Utils.uniqueCode();\n }\n toggleReadonlyView(readonly) {\n this.span.hidden = !readonly;\n this._radio.hidden = /*this.label.hidden =*/ readonly;\n }\n get inputFields() {\n return [this._radio];\n }\n onChange(evt) {\n this.selected = this._radio.checked;\n const value = this.selected ? this._radio.value : undefined;\n return Utils.fromResult(value);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._radio.id = this._label.htmlFor = this._key;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'name':\n this._radio.name = val;\n break;\n case 'selected':\n (this._radio.checked = val) ?\n Utils.addClass(this, PCSS + '-selected')\n :\n Utils.removeClass(this, PCSS + '-selected');\n break;\n }\n }\n acceptValue(val) {\n this._radio.value = Utils.isNullOrEmpty(val) ? '' : val;\n }\n getViewValue(val) {\n if (!Utils.isNull(val))\n return this.caption;\n return '';\n }\n};\n__decorate([\n ViewChild(\"input[type=radio]\")\n], PacemRadioElement.prototype, \"_radio\", void 0);\n__decorate([\n ViewChild(\"label\")\n], PacemRadioElement.prototype, \"_label\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemRadioElement.prototype, \"span\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemRadioElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemRadioElement.prototype, \"selected\", void 0);\nPacemRadioElement = __decorate([\n CustomElement({\n tagName: P + '-radio',\n template: `<${P}-span class=\"${PCSS}-readonly ${PCSS}-radio\" text=\"{{ :host.caption }}\"></${P}-span><input type=\"radio\" class=\"${PCSS}-input\" /><label class=\"${PCSS}-label ${PCSS}-radio ${PCSS}-viewfinder\"><${P}-text text=\"{{ :host.caption }}\"></${P}-text></label>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemRadioElement);\nexport { PacemRadioElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PCSS, PropertyChangeEventName, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nlet PacemRadioListElement = class PacemRadioListElement extends PacemDataSourceElement {\n acceptValue(val) {\n // no need to implement\n }\n constructor() {\n super();\n this['key'] = '_' + Utils.uniqueCode();\n }\n get inputFields() {\n return [];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'disabled') {\n this._disable.model = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._disable.model = this.disabled;\n }\n toggleReadonlyView(readonly) {\n this._repeater.hidden = readonly;\n this._span.hidden = !readonly;\n }\n _selectionChanged(evt, index, item) {\n if (evt.detail.propertyName === 'selected' && evt.detail.currentValue === true) {\n this._selectedValue = this.mapEntityToValue(this.datasource[index]);\n this.changeHandler(evt);\n }\n }\n onChange(evt) {\n this.value = this._selectedValue;\n this.databind();\n return Utils.fromResult(this._selectedValue);\n }\n};\n__decorate([\n ViewChild(P + '-repeater')\n], PacemRadioListElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-data')\n], PacemRadioListElement.prototype, \"_disable\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemRadioListElement.prototype, \"_span\", void 0);\nPacemRadioListElement = __decorate([\n CustomElement({\n tagName: P + '-radio-list', template: `<${P}-repeater datasource=\"{{ :host.adaptedDatasource }}\">\r\n <ol class=\"${PCSS}-radio-list ${PCSS}-viewfinder\" pacem>\r\n <template>\r\n <li><${P}-radio disabled=\"{{ ::_disable.model || ^item.disabled }}\" name=\"{{ :host.key, once }}\" autobind=\"off\" caption=\"{{ ^item.viewValue }}\" value=\"{{ ^item.value }}\" selected=\"{{ :host.isDataSourceItemSelected(^item, :host.value) }}\"\r\non-focus=\":host.focusHandler($event)\" on-blur=\":host.focusHandler($event)\"\r\non-${PropertyChangeEventName}=\":host._selectionChanged($event, ^index, ^item)\"></${P}-radio></li>\r\n </template>\r\n </ol>\r\n</${P}-repeater><span class=\"${PCSS}-readonly ${PCSS}-radio\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span><${P}-data></${P}-data><${P}-content></${P}-content>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemRadioListElement);\nexport { PacemRadioListElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, PropertyConverters, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nlet PacemSelectElement = class PacemSelectElement extends PacemDataSourceElement {\n constructor() {\n super(...arguments);\n this.emptyOption = true;\n }\n toggleReadonlyView(readonly) {\n this._repeater.hidden = readonly;\n this._span.hidden = !readonly;\n }\n // no actual need to be idem-potent...\n // (take care in future)\n get inputFields() {\n return [this._select];\n }\n _manageDom(evt) {\n const args = evt.detail, item = args.item;\n let option = args.dom.find(o => o instanceof HTMLOptionElement);\n option.value = item.value;\n option.textContent = item.viewValue;\n option.disabled = item.disabled;\n option.selected = this.isDataSourceItemSelected(item);\n (Utils.isNullOrEmpty(option.value) ? Utils.addClass : Utils.removeClass).apply(this, [option, PCSS + '-watermark']);\n }\n onChange(evt) {\n let select = this._select, selectedIndex = select.selectedIndex, datasource = this.adaptedDatasource, item = selectedIndex >= 0 && datasource[selectedIndex], value;\n if (item != null) {\n value = item.value;\n }\n else\n value = undefined;\n return Utils.fromResult(this.value = value);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n // case 'required':\n case 'placeholder':\n case 'emptyOption':\n this.databind();\n break;\n }\n }\n buildAdaptedDatasource(ds = this.datasource) {\n let adapted = super.buildAdaptedDatasource(ds);\n if (adapted && this.emptyOption) {\n adapted.splice(0, 0, { viewValue: this.placeholder || '', value: undefined, data: undefined });\n }\n return adapted;\n }\n handleDatasourceMismatch(ds) {\n if (this.emptyOption) {\n super.handleDatasourceMismatch(ds);\n }\n else {\n // change value, since it does not exist in database and there's not null/empty fallback...\n if (Utils.isNullOrEmpty(ds)) {\n this.value = void 0;\n }\n else {\n this.value = ds[0].value;\n // ...you'll re-enter the acceptValue procedure with hopefully more luck.\n }\n }\n }\n ;\n acceptValue(val) {\n const ds = this.adaptedDatasource, item = ds && ds.filter(i => this.isDataSourceItemSelected(i, val));\n //let item = this.datasource && this.datasource.filter(i => this.isItemSelected(i));\n if (item && item.length == 1)\n this._select.selectedIndex = ds.indexOf(item[0]);\n else {\n this._select.value = undefined;\n let opts = this._select.options;\n if (opts.length > 0 && Utils.isNullOrEmpty(opts[0].value)) {\n this._select.selectedIndex = 0;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n //select.addEventListener(\"change\", this.changeHandler, false);\n var options = { capture: false, passive: false };\n this._select.addEventListener(\"wheel\", this.emitHandler, options);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._select)) {\n //select.removeEventListener(\"change\", this.changeHandler, false);\n var options = { capture: false, passive: false };\n this._select.removeEventListener(\"wheel\", this.emitHandler, options);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild('select')\n], PacemSelectElement.prototype, \"_select\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemSelectElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemSelectElement.prototype, \"_span\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSelectElement.prototype, \"emptyOption\", void 0);\nPacemSelectElement = __decorate([\n CustomElement({\n tagName: P + '-select', template: `<${P}-repeater datasource=\"{{ :host.adaptedDatasource }}\" on-${Components.RepeaterItemCreateEventName}=\":host._manageDom($event)\">\r\n <select class=\"${PCSS}-select ${PCSS}-viewfinder\">\r\n <template>\r\n <option></option>\r\n </template>\r\n </select>\r\n</${P}-repeater><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span><${P}-content></${P}-content>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemSelectElement);\nexport { PacemSelectElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { P, PCSS, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults, avoidHandler, Components, UI } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n// TODO: exploit 202x features like https://developer.mozilla.org/en-US/docs/Web/CSS/offset-path or https://developer.chrome.com/blog/anchor-positioning-api\nlet PacemSliderElement = class PacemSliderElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this.inputFields = [];\n this._dragHandler = (evt) => {\n evt.preventDefault();\n this._computeAndAssignValue(evt.detail.currentPosition.x, this.changePolicy !== 'end');\n };\n this._endHandler = (evt) => {\n evt.preventDefault();\n this._computeAndAssignValue(evt.detail.currentPosition.x, this.changePolicy === 'end');\n };\n this._startHandler = (evt) => {\n this._thumb.focus();\n };\n this._downHandler = (evt) => {\n const x = evt instanceof MouseEvent ? evt.clientX : evt.touches && evt.touches.length && evt.touches[0].clientX, trackSize = this._trackSize;\n if (!Utils.isNullOrEmpty(trackSize)) {\n this._computeAndAssignValue(x, true);\n }\n };\n this._keydownHandler = (evt) => {\n switch (evt.keyCode) {\n case 39: // right\n case 37: // left\n avoidHandler(evt);\n let forward = evt.keyCode === 39; // TODO: include rtl!\n let step = (typeof this.step !== 'number' ? 1.0 : this.step) * (forward ? 1 : -1);\n let cease = false;\n let ceaseFn = (evt) => {\n cease = true;\n window.removeEventListener('keyup', ceaseFn, false);\n Utils.removeClass(this, 'slider-keydown');\n };\n window.addEventListener('keyup', ceaseFn, false);\n Utils.addClass(this, 'slider-keydown');\n Utils.accelerateCallback(token => {\n if (!(token.cancel = cease)) {\n this._setValue(this.value + step);\n }\n });\n break;\n }\n };\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (evt.type === 'slide') {\n resolve(this.value = evt.detail);\n }\n resolve(this.value);\n });\n }\n _draw(val = this.value) {\n const trackSize = this._trackSize;\n if (Utils.isNull(trackSize)) {\n return;\n }\n const v = Utils.isNullOrEmpty(val) ? this.min : parseFloat(val);\n const percentage = Math.min(1, Math.max(0, (v - this.min) / (this.max - this.min)));\n this._progress.style.transform = `scale(${(percentage)}, 1)`;\n this._thumb.style.transform = `translateX(${Math.round(percentage * trackSize.width)}px)`;\n }\n _format(v) {\n const intl = this.format;\n if (!Utils.isNullOrEmpty(intl)) {\n return new Intl.NumberFormat(Utils.lang(this), intl).format(v);\n }\n // fallback\n let sv = '-';\n if (!Utils.isNull(v)) {\n sv = v.toLocaleString();\n }\n let evt = new CustomEvent(\"formatvalue\", { detail: { value: v } });\n this.dispatchEvent(evt);\n return Utils.isNull(evt.detail.output) ? sv : evt.detail.output;\n }\n acceptValue(val) {\n this._draw(val);\n }\n getViewValue(value) {\n return this._format(value);\n }\n convertValueAttributeToProperty(attr) {\n return parseFloat(attr);\n }\n toggleReadonlyView(readonly) {\n this._thumb.hidden = readonly;\n const css = 'cursor-pointer';\n if (readonly) {\n Utils.removeClass(this._max, css);\n Utils.removeClass(this._min, css);\n }\n else {\n Utils.addClass(this._max, css);\n Utils.addClass(this._min, css);\n }\n }\n _setTrackSize(evt) {\n const size = evt.detail;\n this._trackSize = { x: size.left, y: size.top, width: size.width, height: size.height };\n this._draw(this.value);\n }\n _computeAndAssignValue(x, triggerChange) {\n if (this.readonly || this.disabled) {\n return;\n }\n // constraint to track size to compute the slider value\n const constraint = this._trackSize, step = this.step;\n let perc = (x - constraint.x) / constraint.width;\n let v = (this.max - this.min) * perc + this.min;\n if (typeof step === 'number') {\n v = Math.round(v / step) * step;\n }\n if (triggerChange) {\n this._setValue(v);\n }\n else {\n this._draw(v);\n }\n }\n _setValue(v) {\n if (isNaN(v) || Utils.isNull(v)) {\n // keep in sync with pacem-input-number logic (TODO: centralize code, this is a fix)\n // cast NaN to undefined\n v = undefined;\n }\n else {\n if (!isNaN(this.min) && v < this.min) {\n v = this.min;\n }\n if (!isNaN(this.max) && v > this.max) {\n v = this.max;\n }\n }\n this.changeHandler(new CustomEvent('slide', { detail: v }));\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('mousedown', this._downHandler, false);\n this.addEventListener('touchstart', this._downHandler, { passive: false, capture: false });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._dragger.addEventListener(UI.DragDropEventType.Init, this._startHandler, false);\n this._dragger.addEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n this._dragger.addEventListener(UI.DragDropEventType.End, this._endHandler, false);\n this._thumb.addEventListener('keydown', this._keydownHandler, false);\n this._min.text = this._format(this.min);\n this._max.text = this._format(this.max);\n // balloon\n const balloon = this._shellProxy.dom[0];\n if (!Utils.isNull(balloon)) {\n balloon.target = this._thumb;\n balloon.options = {\n trigger: ComponentsUI.UI.BalloonTrigger.Focus,\n trackPosition: true,\n position: ComponentsUI.UI.BalloonPosition.Top,\n align: ComponentsUI.UI.BalloonAlignment.Center,\n behavior: ComponentsUI.UI.BalloonBehavior.Tooltip,\n hoverDelay: 0, hoverTimeout: 0\n };\n this._syncThumbLabel();\n }\n //\n this._thumb.tabIndex = 0;\n }\n _syncThumbLabel(thumbLabel = this.thumbLabel) {\n const balloon = this._shellProxy.dom[0];\n (thumbLabel ? Utils.addClass : Utils.removeClass).apply(this, [this, 'slider-thumblabel']);\n balloon.disabled = !thumbLabel;\n }\n disconnectedCallback() {\n this.removeEventListener('mousedown', this._downHandler, false);\n this.removeEventListener('touchstart', this._downHandler, { capture: false });\n if (!Utils.isNull(this._dragger)) {\n this._dragger.removeEventListener(UI.DragDropEventType.End, this._endHandler, false);\n this._dragger.removeEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n this._dragger.removeEventListener(UI.DragDropEventType.Init, this._startHandler, false);\n }\n if (!Utils.isNull(this._thumb)) {\n this._thumb.removeEventListener('keydown', this._keydownHandler, false);\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'thumbLabel':\n this._syncThumbLabel(val);\n break;\n case 'min':\n case 'max':\n if (!Utils.isNull(this._max) && !Utils.isNull(this._min)) {\n this._min.text = this._format(this.min);\n this._max.text = this._format(this.max);\n }\n this._setValue(this.value);\n this._draw();\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSliderElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSliderElement.prototype, \"max\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSliderElement.prototype, \"thumbLabel\", void 0);\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => {\n let v = parseFloat(attr);\n if (isNaN(v)) {\n return 'any';\n }\n return v;\n }, convertBack: (v) => (v || '').toString()\n }\n })\n], PacemSliderElement.prototype, \"step\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemSliderElement.prototype, \"changePolicy\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemSliderElement.prototype, \"format\", void 0);\n__decorate([\n ViewChild(`.slider-track`)\n], PacemSliderElement.prototype, \"_track\", void 0);\n__decorate([\n ViewChild(`.slider-progress`)\n], PacemSliderElement.prototype, \"_progress\", void 0);\n__decorate([\n ViewChild(`.slider-thumb`)\n], PacemSliderElement.prototype, \"_thumb\", void 0);\n__decorate([\n ViewChild(`${P}-text[min]`)\n], PacemSliderElement.prototype, \"_min\", void 0);\n__decorate([\n ViewChild(`${P}-text[max]`)\n], PacemSliderElement.prototype, \"_max\", void 0);\n__decorate([\n ViewChild(`${P}-drag-drop`)\n], PacemSliderElement.prototype, \"_dragger\", void 0);\n__decorate([\n ViewChild(`${P}-shell-proxy`)\n], PacemSliderElement.prototype, \"_shellProxy\", void 0);\nPacemSliderElement = __decorate([\n CustomElement({\n tagName: P + '-slider',\n template: `<div class=\"${PCSS}-viewfinder ${PCSS}-slider\"><${P}-text text=\"{{ :host._format(:host.min) }}\" min></${P}-text>\r\n <div class=\"slider-track\"><div class=\"slider-progress\"></div></div>\r\n <${P}-panel class=\"${PCSS}-clickable slider-thumb\" behaviors=\"{{ [::_dragger] }}\">\r\n <div class=\"thumb-label\"></div>\r\n </${P}-panel>\r\n <${P}-text text=\"{{ :host._format(:host.max) }}\" max></${P}-text>\r\n <div class=\"slider-footer\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></div>\r\n </div>\r\n<${P}-drag-drop lock-timeout=\"0\"></${P}-drag-drop><${P}-resize watch-position=\"true\" on-${Components.ResizeEventName}=\":host._setTrackSize($event)\" target=\"{{ ::_track }}\"></${P}-resize>\r\n<${P}-shell-proxy><${P}-balloon class=\"text-center\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-balloon></${P}-shell-proxy>\r\n`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemSliderElement);\nexport { PacemSliderElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomTypedEvent, CustomElement, Watch, ViewChild, Defaults, PCSS, P, Components, PropertyConverters, Utils, avoidHandler, Logging, CustomElementUtils } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nclass SuggestionSelectEvent extends CustomTypedEvent {\n constructor(value) {\n super('suggestionselect', { selectedValue: value });\n }\n}\nconst BALLOON_POPUP_DELAY = 100;\nconst BALLOON_POPOUT_DELAY = 0;\nlet PacemSuggestElement = class PacemSuggestElement extends PacemDataSourceElement {\n constructor() {\n super(...arguments);\n this._toggleBtnHandler = (evt) => {\n evt.preventDefault();\n if (!this.disabled) {\n this._balloon.toggle();\n }\n };\n this._clearBtnHandler = (evt) => {\n evt.preventDefault();\n this.hint = this._input.value = '';\n this.value = void 0;\n this._focus(null);\n this.changeHandler(new SuggestionSelectEvent(null));\n };\n this._balloonPopupHandler = (evt) => {\n Utils.addClass(this._btnArrow, 'rotate-180');\n };\n this._balloonPopoutHandler = (evt) => {\n Utils.removeClass(this._btnArrow, 'rotate-180');\n };\n this._inputHandler = (evt) => {\n switch (evt.keyCode) {\n case 9 /*tab*/:\n case 13 /*enter*/:\n break;\n default:\n this._focus(null);\n this.hint = this._input.value;\n this.changeHandler(new SuggestionSelectEvent(null));\n break;\n }\n };\n this._keyupHandler = (evt) => {\n if (this.#keyupManaged) {\n avoidHandler(evt);\n this.#keyupManaged = false;\n }\n };\n this._focusHandler = (evt) => {\n if (this.preventFocus) {\n // manage the balloon toggle manually (since focus won't be dispatched)\n evt.preventDefault();\n const balloon = this._balloon;\n if (!balloon.visible) {\n this.popup();\n }\n else {\n this.popout();\n }\n }\n const actualHint = this._input.value;\n if (this.viewValue != actualHint) {\n this._databind();\n }\n // now just lean on the balloon's trigger, it will popup eventually...\n };\n this._blurHandler = (evt) => {\n this._undo();\n };\n this.#keyupManaged = false;\n this._keydownHandler = (evt) => {\n var managed = false;\n if (Utils.isNull(this.#selectedItem)) {\n const el = this._findFirstAvailableListItem();\n if (!Utils.isNull(el)) {\n switch (evt.keyCode) {\n case 40: /*arrow down*/\n //case 9: /*tab*/\n //case 13: /* enter */ \n avoidHandler(evt);\n this._focus(el);\n break;\n case 13: /* enter */\n avoidHandler(evt);\n managed = true;\n if (this.#datasource.length === 1) {\n this._select(el);\n }\n else {\n this._focus(el);\n }\n break;\n }\n }\n }\n else {\n var li = this.#selectedItem, cursor = li, target;\n const skipPredicate = (e) => !Utils.isNull(e) && e.localName === 'li' && e.dataset['pacemDisabled'] === 'true', matchPredicate = (e) => !Utils.isNull(e) && e.localName === 'li' && e.dataset['pacemDisabled'] !== 'true';\n switch (evt.keyCode) {\n case 38 /*arrow up*/:\n avoidHandler(evt);\n do {\n cursor = cursor.previousElementSibling;\n if (matchPredicate(cursor)) {\n target = cursor;\n break;\n }\n } while (skipPredicate(cursor));\n target ??= li;\n break;\n case 40 /*arrow down*/:\n avoidHandler(evt);\n do {\n cursor = (cursor.nextElementSibling);\n if (matchPredicate(cursor)) {\n target = cursor;\n break;\n }\n } while (skipPredicate(cursor));\n target ??= li;\n break;\n case 27 /*esc*/:\n avoidHandler(evt);\n this._undo();\n this.popout();\n break;\n case 9 /*tab*/:\n case 13 /*enter*/:\n // case 32 /*space-bar*/:\n avoidHandler(evt);\n managed = true;\n this._select();\n break;\n }\n this._focus(target);\n this.#keyupManaged = managed;\n }\n };\n this._selectHandler = (evt) => {\n avoidHandler(evt);\n this._select(evt.currentTarget);\n };\n }\n get inputFields() {\n return [this._input];\n }\n acceptValue(val) {\n if ( /*!this._isTyping && */(this.allowNew || !Utils.isNullOrEmpty(this.datasource))) {\n this._input.value = this.getViewValue(val) || (this._isTyping ? this._input.value : '');\n }\n }\n getViewValue(val) {\n var superValue = super.getViewValue(val);\n if (Utils.isNullOrEmpty(superValue) && this.allowNew && !Utils.isNullOrEmpty(val)) {\n superValue = this.mapEntityToViewValue(val);\n }\n return superValue;\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n // change triggered elsewhere... (see _afterSelectHandler)\n if (evt.type === 'suggestionselect') {\n const val = evt.detail.selectedValue;\n this.value = val;\n if (val) {\n this.popout();\n }\n resolve(val);\n }\n else {\n // keep the current value\n resolve(this.value);\n }\n });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setDropdownMode();\n this._setupItemTemplate();\n var balloon = this._createBalloon();\n balloon.appendChild(this._repeater);\n this._checkBalloon(balloon);\n const shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(balloon);\n this._balloon = balloon;\n this._input.addEventListener('mousedown', this._focusHandler, false);\n this._input.addEventListener('keydown', this._keydownHandler, false);\n this._input.addEventListener('keyup', this._keyupHandler, false);\n this._input.addEventListener('focus', this._focusHandler, false);\n this._input.addEventListener('blur', this._blurHandler, false);\n this._input.addEventListener('input', this._inputHandler, false);\n this._btnClear.addEventListener('mousedown', this._clearBtnHandler, false);\n this._btnArrow.addEventListener('mousedown', this._toggleBtnHandler, false);\n this._databind();\n this._syncButtons();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (Utils.isNull(this._balloon)) {\n return;\n }\n const typing = this._isTyping;\n switch (name) {\n case 'adaptedDatasource':\n if (!Utils.isNullOrEmpty(val)) {\n if (!typing) {\n this._input.value = this.getViewValue(this.value);\n }\n else {\n this.popup();\n }\n }\n else {\n this.popout();\n }\n break;\n case 'hint':\n if (!typing && val !== this._input.value) {\n this._input.value = val;\n this.#selectedItem = null;\n }\n break;\n case 'readonly':\n // overrides default behavior: attribute synchronization (see `PacemBaseElement` in types.ts)\n this._setDropdownMode();\n // then fall below\n case 'disabled':\n case 'value':\n this._checkBalloon();\n break;\n case 'itemtemplate':\n if (!first) {\n this._setupItemTemplate();\n }\n break;\n case 'allowTyping':\n if (!first) {\n this._setDropdownMode();\n }\n break;\n }\n if (['adaptedDatasource', 'hint', 'value'].indexOf(name) >= 0) {\n this._databind();\n }\n if (['allowTyping', 'value', 'hint'].indexOf(name) >= 0) {\n this._syncButtons();\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._balloon)) {\n this._balloon.removeEventListener('popup', this._balloonPopupHandler, false);\n this._balloon.removeEventListener('popout', this._balloonPopoutHandler, false);\n this._balloon.remove();\n }\n if (!Utils.isNull(this._input)) {\n this._input.removeEventListener('mousedown', this._focusHandler, false);\n this._input.removeEventListener('focus', this._focusHandler, false);\n this._input.removeEventListener('blur', this._blurHandler, false);\n this._input.removeEventListener('keydown', this._keydownHandler, false);\n this._input.removeEventListener('keyup', this._keyupHandler, false);\n this._input.removeEventListener('input', this._inputHandler, false);\n }\n if (!Utils.isNull(this._btnClear)) {\n this._btnClear.removeEventListener('mousedown', this._clearBtnHandler, false);\n }\n if (!Utils.isNull(this._btnArrow)) {\n this._btnArrow.addEventListener('mousedown', this._toggleBtnHandler, false);\n }\n super.disconnectedCallback();\n }\n #datasource;\n _databind() {\n if (!Utils.isNull(this._repeater)) {\n const ds = this.#datasource = this._filter(this.adaptedDatasource, this._input.value);\n this._repeater.datasource = ds;\n }\n }\n _syncButtons() {\n if (!Utils.isNull(this._btnArrow)) {\n // hide=\"{{ !$pacem.isNullOrEmpty(:host.hint || :host.value) || :host.allowTyping !== false }}\"\n this._btnArrow.hide = this.allowTyping !== false || !Utils.isNullOrEmpty(this._input.value || this.value);\n }\n if (!Utils.isNull(this._btnClear)) {\n // hide=\"{{ $pacem.isNullOrEmpty(:host.hint || :host.value) }}\"\n this._btnClear.hide = this.readonly || Utils.isNullOrEmpty(this._input.value || this.value);\n }\n }\n get _isTyping() {\n return Utils.is(this._input, ':focus'); // && this.viewValue !== this._input.value;\n }\n _undo() {\n this._focus(null);\n this.hint = this._input.value = this.getViewValue(this.value) || '';\n }\n _findFirstAvailableListItem() {\n var el;\n if (this._balloon.visible === true && !Utils.isNull(el = this._repeater.querySelector('ol > li'))) {\n while (!Utils.isNull(el) && el.dataset['pacemDisabled'] === 'true' && el.localName === 'li') {\n el = el.nextElementSibling;\n }\n }\n return el;\n }\n #keyupManaged;\n _setDropdownMode(allowTyping = this.allowTyping) {\n this._input.readOnly = !(allowTyping ?? true);\n }\n _setupItemTemplate() {\n if (this.itemtemplate instanceof HTMLTemplateElement) {\n const frag = this.itemtemplate.cloneNode(true).content;\n const tmpl = document.createElement('template');\n const li = document.createElement('li');\n li.append(frag);\n tmpl.content.appendChild(li);\n this._tmplProxy.target = tmpl;\n }\n else {\n this._tmplProxy.target = this._defaultTemplate;\n }\n }\n #selectedItem;\n _focus(el) {\n if (this.preventFocus) {\n return;\n }\n if (Utils.isNull(el)) {\n this.#selectedItem = null;\n return;\n }\n const siblings = el.parentElement.children;\n for (let j = 0; j < siblings.length; j++) {\n const item = siblings.item(j);\n if (item === el) {\n item.dataset['pacemFocused'] = 'true';\n this.#selectedItem = item;\n const input = this._input, viewValue = input.value = JSON.parse(item.dataset['pacemViewValue']);\n input.setSelectionRange(viewValue.length, viewValue.length);\n }\n else {\n delete item.dataset['pacemFocused'];\n }\n }\n }\n _select(el = this.#selectedItem) {\n const value = JSON.parse(el.dataset['pacemValue']), disabled = el.dataset['pacemDisabled'] === 'true';\n if (!disabled) {\n this.changeHandler(new SuggestionSelectEvent(value));\n }\n }\n _filter(ds, hint, value = this.value) {\n let datasource = ds || [];\n //if (!Utils.isNull(value)) {\n // datasource = datasource.filter(i => i.value == value);\n //} else \n if (!Utils.isNullOrEmpty(hint && hint.trim())) {\n const lowerHints = hint.toLowerCase().split(' ');\n let filtered = datasource.filter(i => {\n for (let lowerHint of lowerHints) {\n if (i.viewValue?.toLowerCase().indexOf(lowerHint) >= 0) {\n return true;\n }\n // check the whole 'data' object, just in case\n const filters = this.filterFields;\n if (!Utils.isNullOrEmpty(filters)) {\n const iData = i.data;\n if (typeof iData === 'object' && !Utils.isNullOrEmpty(iData)) {\n for (let filter of filters) {\n const filterStruct = filter.split('.');\n let j = 0;\n let value = iData;\n while (!Utils.isNull(value) && j < filterStruct.length) {\n value = value[filterStruct[j]];\n j++;\n }\n if (Utils.isNullOrEmpty(value)) {\n continue;\n }\n if (value.toString().toLowerCase().indexOf(lowerHint) >= 0) {\n return true;\n }\n }\n }\n }\n }\n return false;\n });\n const concatenate = this.allowNew\n // only concatenate on plain strings...\n && Utils.isNullOrEmpty(this.valueProperty)\n && Utils.isNullOrEmpty(this.textProperty)\n // ...and no matches are available\n && (Utils.isNullOrEmpty(filtered) || Utils.isNull(filtered.find(i => i.viewValue === hint)));\n datasource = concatenate ? [{ value: hint, viewValue: hint, data: hint }].concat(filtered) : filtered;\n }\n let retval = datasource;\n if (this.allowTyping !== false) {\n // max-suggestions enabled only when typing is allowed (default)\n retval = datasource.slice(0, this.maxSuggestions || 10);\n }\n //\n if (this._isTyping) {\n this.popup();\n }\n this._balloon.style.opacity = Utils.isNullOrEmpty(retval) ? '0' : '';\n this.log(Logging.LogLevel.Log, `${retval.length} dropdown suggestion(s), given hint '${hint}' and ${(ds || []).length} datasource items`);\n return retval;\n }\n _itemCreate(evt) {\n const li = evt.detail.dom.find(i => i instanceof HTMLLIElement);\n const item = evt.detail.item;\n const index = evt.detail.index;\n const disabled = item.disabled === true;\n li.tabIndex = disabled ? -1 : 0;\n li.dataset['pacemValue'] = JSON.stringify(item.value);\n li.dataset['pacemViewValue'] = JSON.stringify(item.viewValue);\n li.dataset['pacemDisabled'] = disabled.toString();\n li.addEventListener('mousedown', this._selectHandler, false);\n }\n _itemRemove(evt) {\n const li = evt.detail.dom.find(i => i instanceof HTMLLIElement);\n li.removeEventListener('mousedown', this._selectHandler, false);\n }\n toggleReadonlyView(readonly) {\n this.span.hidden = !readonly;\n this._input.hidden = readonly;\n if (readonly) {\n this._btnClear.hide = this._btnArrow.hide = true;\n }\n else {\n this._syncButtons();\n }\n }\n /*\n Balloon and repeater\n */\n popup(delay = BALLOON_POPUP_DELAY) {\n if (!Utils.isNullOrEmpty(this.adaptedDatasource) && Utils.isVisible(this)) {\n //console.log('Popping up from here...');\n this._balloon?.popup(delay);\n }\n }\n popout(delay = BALLOON_POPOUT_DELAY) {\n this.#selectedItem = null;\n this._balloon?.popout(delay);\n }\n _checkBalloon(balloon = this._balloon) {\n if (!Utils.isNull(balloon)) {\n const hasValue = !Utils.isNullOrEmpty(this.value) && !Utils.isNullOrEmpty(this._input.value) /* && Utils.isNullOrEmpty(this.hint)*/;\n balloon.disabled = hasValue || this.readonly || this.disabled || /* normalize to an actual boolean */ false; // || Pacem.Utils.isNullOrEmpty(this.adaptedDatasource);\n }\n }\n _createBalloon() {\n /*<${ P }-balloon target=\"{{ ::_input }}\" options=\"{ position: 'bottom', align: 'left', behavior: 'inert', hoverDelay: 0 }\"\ndisabled=\"{{ :host.readonly || Pacem.Utils.isNullOrEmpty(:host.adaptedDatasource) }}\">*/\n const balloon = document.createElement(P + '-balloon');\n Utils.addClass(balloon, 'suggest dropdown');\n balloon.options = {\n trackPosition: true,\n trigger: ComponentsUI.UI.BalloonTrigger.Focus,\n position: ComponentsUI.UI.BalloonPosition.VerticalAuto,\n size: ComponentsUI.UI.BalloonSizing.Match,\n align: ComponentsUI.UI.BalloonAlignment.Start,\n behavior: ComponentsUI.UI.BalloonBehavior.Menu, // UI.BalloonBehavior.Inert,\n hoverDelay: BALLOON_POPUP_DELAY, hoverTimeout: BALLOON_POPOUT_DELAY\n };\n balloon.addEventListener('popup', this._balloonPopupHandler, false);\n balloon.addEventListener('popout', this._balloonPopoutHandler, false);\n balloon.target = this._input;\n return balloon;\n }\n};\n__decorate([\n ViewChild('input[type=text]')\n], PacemSuggestElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemSuggestElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemSuggestElement.prototype, \"span\", void 0);\n__decorate([\n ViewChild(`template`)\n], PacemSuggestElement.prototype, \"_defaultTemplate\", void 0);\n__decorate([\n ViewChild(P + '-template-proxy')\n], PacemSuggestElement.prototype, \"_tmplProxy\", void 0);\n__decorate([\n ViewChild(`${P}-button[toggle]`)\n], PacemSuggestElement.prototype, \"_btnArrow\", void 0);\n__decorate([\n ViewChild(`${P}-button[clear]`)\n], PacemSuggestElement.prototype, \"_btnClear\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSuggestElement.prototype, \"hint\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSuggestElement.prototype, \"maxSuggestions\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemSuggestElement.prototype, \"allowTyping\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSuggestElement.prototype, \"preventFocus\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemSuggestElement.prototype, \"itemtemplate\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.StringArray })\n], PacemSuggestElement.prototype, \"filterFields\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSuggestElement.prototype, \"allowNew\", void 0);\nPacemSuggestElement = __decorate([\n CustomElement({\n tagName: P + '-suggest', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-relative\"><input type=\"text\" class=\"${PCSS}-input\" />\r\n<${P}-button clear tab-order=\"-1\"\r\nclass=\"button-flat ${PCSS}-anim anim-pop anim-sudden anim-quick pos-absolute absolute-right absolute-top display-block ${PCSS}-margin margin-0\" \r\n icon-glyph=\"highlight_off\"></${P}-button>\r\n<${P}-button \r\nclass=\"button-flat icon-rotate ${PCSS}-anim anim-pop anim-sudden anim-quick pos-absolute absolute-right absolute-top display-block ${PCSS}-margin margin-0\" \r\n icon-glyph=\"arrow_drop_down\" tab-order=\"-1\" toggle></${P}-button>\r\n</div>\r\n<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>\r\n<${P}-repeater on-${Components.RepeaterItemCreateEventName}=\":host._itemCreate($event)\" on-${Components.RepeaterItemRemoveEventName}=\":host._itemRemove($event)\">\r\n <ol>\r\n <${P}-template-proxy></${P}-template-proxy>\r\n </ol>\r\n</${P}-repeater><${P}-content></${P}-content>\r\n<template>\r\n <li><${P}-span content=\"{{ $pacem.highlight(^item.viewValue, :host.hint) }}\"></${P}-span></li>\r\n</template>`\n })\n], PacemSuggestElement);\nexport { PacemSuggestElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, Defaults, P, PCSS, Components, CustomTypedEvent, PropertyConverters, Watch, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nclass TagRemoveEvent extends CustomTypedEvent {\n constructor(value) {\n super('tagremove', { index: value });\n }\n}\nclass TagAddEvent extends CustomTypedEvent {\n constructor(value) {\n super('tagadd', { value: value });\n }\n}\nlet PacemTagElement = class PacemTagElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'readonly':\n let readonly = !!val;\n (readonly ? Utils.addClass : Utils.removeClass)(this, 'tag-readonly');\n this._btn.disabled = this._btn.hide = readonly;\n break;\n case 'tag':\n Utils.removeClass(this, 'tag-out');\n break;\n }\n }\n _remove() {\n const tag = this;\n Utils.addClass(tag, 'tag-out');\n Utils.addAnimationEndCallback(tag, () => {\n this.dispatchEvent(new Event(\"remove\"));\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTagElement.prototype, \"tag\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemTagElement.prototype, \"readonly\", void 0);\n__decorate([\n ViewChild(P + '-button')\n], PacemTagElement.prototype, \"_btn\", void 0);\nPacemTagElement = __decorate([\n CustomElement({\n tagName: P + '-tag', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-text text=\"{{ :host.tag }}\"></${P}-text>\r\n <${P}-button on-click=\":host._remove()\"></${P}-button>`\n })\n], PacemTagElement);\nexport { PacemTagElement };\nlet PacemTagsElement = class PacemTagsElement extends PacemDataSourceElement {\n constructor() {\n super(true);\n this.inputFields = [];\n }\n toggleReadonlyView(readonly) {\n this._suggest.readonly = readonly;\n this.querySelector('.tag-new').hidden = readonly;\n }\n _tagRemove(ndx) {\n this.changeHandler(new TagRemoveEvent(ndx));\n }\n _tagAdd(v) {\n this.changeHandler(new TagAddEvent(v));\n // after the - just in case - assignment => reset the suggest component\n }\n handleDatasourceMismatch() {\n // do nothing!\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n case 'textProperty':\n this._suggest[name] = val;\n break;\n case 'valueProperty':\n // DON't pass the value-property to the suggest\n if (!Utils.isNullOrEmpty(val)) {\n throw `Cannot set 'valueProperty' on ${this.constructor.name}s.`;\n }\n break;\n case 'value':\n this._tags.datasource = val;\n break;\n }\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n switch (evt.type) {\n case 'tagremove':\n this._justAddedIndex = -1;\n const trev = evt, ndxrev = trev.detail.index, \n // manipulate a copy of the array (to preserve the originalValue)\n valrev = Utils.clone(this.value);\n const trunk2 = valrev.splice(ndxrev + 1), trunk1 = valrev.splice(0, ndxrev);\n resolve(this.value = trunk1.concat(trunk2));\n break;\n case 'tagadd':\n const value = evt.detail.value, \n // manipulate a copy of the array (to preserve the originalValue)\n valadd = Utils.clone(this.value);\n if ( // no empty items\n !Utils.isNullOrEmpty(value)\n // no duplicated items\n && (this.allowDuplicates || Utils.isNullOrEmpty(valadd && valadd.find(i => this.mapEntityToViewValue(i) == this.mapEntityToViewValue(value))))) {\n let newvalue = (valadd || []).concat([value]);\n resolve(this.value = newvalue);\n this._justAddedIndex = this.value.length - 1;\n setTimeout(() => {\n this._suggest.focus();\n }, 250);\n // this will allow to accept the hint change...\n this._suggest.blur();\n this._suggest.hint = '';\n this._suggest.reset();\n }\n break;\n default:\n resolve(this.value);\n break;\n }\n });\n }\n acceptValue(val) {\n // no need to implement\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTagsElement.prototype, \"hint\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemTagsElement.prototype, \"allowDuplicates\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemTagsElement.prototype, \"allowNew\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTagsElement.prototype, \"_justAddedIndex\", void 0);\n__decorate([\n ViewChild(P + '-suggest')\n], PacemTagsElement.prototype, \"_suggest\", void 0);\n__decorate([\n ViewChild(P + '-repeater.' + PCSS + '-tags')\n], PacemTagsElement.prototype, \"_tags\", void 0);\nPacemTagsElement = __decorate([\n CustomElement({\n tagName: P + '-tags', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater class=\"${PCSS}-tags\">\r\n <ul class=\"${PCSS}-tags ${PCSS}-viewfinder ${PCSS}-list list-unstyled list-inline\">\r\n <template>\r\n <li class=\"${PCSS}-tag\">\r\n <${P}-tag on-remove=\":host._tagRemove(^index)\" css-class=\"{{ { 'tag-in': :host._justAddedIndex === ^index } }}\" tag=\"{{ :host.mapEntityToViewValue(^item) }}\" readonly=\"{{ :host.readonly }}\"></${P}-tag>\r\n </li>\r\n </template>\r\n <li class=\"tag-new\">\r\n <${P}-suggest logger=\"{{ :host.logger }}\" placeholder=\"{{ :host.placeholder }}\" allow-new=\"{{ :host.allowNew }}\" class=\"${PCSS}-tags\" on-change=\":host._tagAdd($this.value)\" hint=\"{{ :host.hint, twoway }}\">\r\n <${P}-content></${P}-content>\r\n </${P}-suggest>\r\n </li>\r\n </ul>\r\n</${P}-repeater>`\n })\n], PacemTagsElement);\nexport { PacemTagsElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nlet PacemTextAreaElement = class PacemTextAreaElement extends PacemTextualInputElement {\n constructor() {\n super(...arguments);\n this.rows = 5;\n this.cols = 50;\n }\n /** @override */\n get preventKeyboardSubmit() {\n return true;\n }\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._input.hidden = readonly;\n }\n get inputFields() {\n return [this._input];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'rows'\n || name === 'cols') {\n this.inputField.setAttribute(name, val);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTextAreaElement.prototype, \"rows\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTextAreaElement.prototype, \"cols\", void 0);\n__decorate([\n ViewChild('textarea')\n], PacemTextAreaElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemTextAreaElement.prototype, \"_span\", void 0);\nPacemTextAreaElement = __decorate([\n CustomElement({ tagName: P + '-textarea', template: `<textarea class=\"${PCSS}-input\" pacem></textarea>${CHAR_COUNTER_CHILD}<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemTextAreaElement);\nexport { PacemTextAreaElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyConverters, preventDefaultHandler } from '@pacem/pacem-core';\nimport { Components } from '@pacem/pacem-ui';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nlet PacemMarkdownTextAreaElement = class PacemMarkdownTextAreaElement extends PacemTextualInputElement {\n constructor(_md = new Components.UI.MarkdownService()) {\n super();\n this._md = _md;\n this.rows = 5;\n this.cols = 50;\n this._keydownHandler = (evt) => {\n if (evt.keyCode === 9 /* tab */) {\n const input = this.input, value = input.value;\n var ndx = input.selectionStart;\n input.value = value.substr(0, ndx) + ' ' + value.substr(ndx);\n preventDefaultHandler(evt);\n }\n };\n }\n toggleReadonlyView(readonly) {\n this.input.hidden = readonly;\n }\n /** @override */\n get preventKeyboardSubmit() {\n return true;\n }\n get inputFields() {\n return [this.input];\n }\n getViewValue(val) {\n return this._md.toHtml(val);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'rows'\n || name === 'cols') {\n this.inputField.setAttribute(name, val);\n }\n else if (name == 'viewValue') {\n this._markdown.innerHTML = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.input.addEventListener(\"keydown\", this._keydownHandler, false);\n }\n disconnectedCallback() {\n this.input &&\n this.input.removeEventListener(\"keydown\", this._keydownHandler, false);\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMarkdownTextAreaElement.prototype, \"rows\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMarkdownTextAreaElement.prototype, \"cols\", void 0);\n__decorate([\n ViewChild('textarea')\n], PacemMarkdownTextAreaElement.prototype, \"input\", void 0);\n__decorate([\n ViewChild(`div.${PCSS}-readonly`)\n], PacemMarkdownTextAreaElement.prototype, \"_markdown\", void 0);\nPacemMarkdownTextAreaElement = __decorate([\n CustomElement({ tagName: P + '-textarea-markdown', template: `<textarea class=\"${PCSS}-input\" pacem></textarea>${CHAR_COUNTER_CHILD}<div class=\"${PCSS}-readonly ${PCSS}-markdown\"></div>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemMarkdownTextAreaElement);\nexport { PacemMarkdownTextAreaElement };\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["FieldChangeEventName","FieldChangeEvent","CustomTypedEvent","constructor","args","super","bubbles","cancelable","ApiParameterType","ApiParserBase","load","url","headers","resp","fetch","mode","credentials","json","this","parse","e","$refPattern","ApiMethod","Net","HttpMethod","SwaggerParser","_findDefinitionName","definitionHashTag","arr","exec","length","content","j","JSON","definitions","def","baseUrl","host","schemes","basePath","parsed","console","warn","retval","endpoints","path","paths","src","method","Get","Delete","Post","Put","op","toLowerCase","endpoint","_tryGetEndpoint","push","response","_tryGetResponse","parameters","_tryGetParameters","_translateType","type","format","Number","Boolean","Datetime","Binary","String","operation","map","p","pb","name","required","schema","pbody","Object","fullType","$ref","meta","ok","responses","items","hasOwnProperty","OpenApi3Parser","_gatherDefinitions","Map","components","schemas","toUpperCase","_convertToApiParameters","output","memoizer","_findDefinition","has","get","set","Utils","isNullOrEmpty","mime","_openApi3","_swagger","manifest","rec","__decorate","decorators","target","key","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","DefaultFormLocalizationOptions","display","displayProp","prop","dictionary","validator","validatorType","validatorTypeIndex","commandTooltip","commandName","Forms","localizeMetadata","metadata","options","_localizeMetadata","prefix","extend","props","isArray","pre","property","watermark","description","commands","command","tooltip","validators","index","errorMessage","Transformer","FormSubmitEventName","FormResetEventName","FormSubmitEvent","FormResetEvent","Event","EMITTABLE_EVENT_TYPES","CommandEventName","SUBMIT_CANCELLATION_TOKEN","FormEventEmitter","_element","_itemEmitHandler","handle","evt","CustomEvent","detail","commandArgument","start","forEach","t","addEventListener","stop","removeEventListener","PacemFormRelevantElement","Components","PacemElement","viewActivatedCallback","form","CustomElementUtils","findAncestorOfType","PacemFormElement","Watch","converter","PropertyConverters","Element","prototype","_emitter","_buttons","submit","undefined","reset","fetching","_keyupHandler","keyCode","shiftKey","ctrlKey","altKey","metaKey","btn","currentTarget","querySelector","P","isNull","isVisible","disabled","click","_submit","fetcher","avoidHandler","Promise","all","_validateAllFields","then","findIndex","f","_","setPristine","_reset","resetEvt","dispatchEvent","defaultPrevented","field","_fields","fld","PacemModelElement","_subForms","_validators","_fieldPropertyChanged","propertyName","model","_checkFieldValidity","_checkDirtyness","_checkValidity","_validatorPropertyChanged","watch","invalid","valid","suddenValidation","resettable","propertyChangedCallback","old","val","first","autogenerate","_buildUpForm","registerSubForm","disconnectedCallback","unregisterSubForm","uniqueCode","uid","id","f_uid","document","createElement","className","PCSS","setAttribute","html","innerHTML","appendChild","lastElementChild","firstElementChild","PropertyChangeEvent","currentValue","oldValue","formButtons","resolve","reject","_submitInternally","result","err","deferred","DeferPromise","defer","entity","entityName","fields","_getAllFields","submitEvt","fnSuccess","FetchSuccessEventName","FetchErrorEventName","fnError","Fetcher","isEmpty","FetchResultEventName","fnResult","success","status","fail","error","fnPropChange","addClass","removeClass","PropertyChangeEventName","action","PacemFetchElement","autofetch","promise","accumulator","apply","state","setDirty","names","_setAs","dirty","hasNames","indexOf","_validateField","validate","b","some","b0","setAsDirty","tasks","sub","Array","log","Logging","LogLevel","Log","v","value","results","ndx","splice","registerField","container","unregisterField","HTMLElement","check","current","registerValidator","unregisterValidator","_unregisterValidator","emit","Json","reflectBack","Debounce","CustomElement","tagName","ORIGINAL_VALUE_FIELD","_registerFieldConditionally","_setAsOriginalValue","hasAttribute","getAttribute","formId","viewValue","getViewValue","n","originalValue","getAttachedPropertyValue","setAttachedPropertyValue","convert","attr","element","convertValueAttributeToProperty","convertBack","toString","PacemBaseElement","focusHandler","focusFieldgroup","add","hasClass","parentElement","_preFocusValue","FocusEvent","changeHandler","onChange","compareValuePropertyValues","fieldName","firstChange","keydownHandler","stopPropagationHandler","keyupHandler","blur","preventKeyboardSubmit","DefaultComparer","inputField","inputFields","removeAttribute","acceptValue","toggleReadonlyView","aria","attributes","registerInputFields","passive","capture","unregisterInputFields","readonly","label","textContent","remove","focus","PacemItemElement","findContainer","findAncestor","PacemItemsContainerBaseElement","register","unregister","item","flag","PacemDataItemElement","num","parseFloat","isNaN","date","Dates","isDate","PacemDataSourceElement","multipleChoice","_itemPropertyChangedHandler","databind","buildAdaptedDatasource","ds","datasource","mapEntityToItem","adaptedDatasource","filter","isDataSourceItemSelected","handleDatasourceMismatch","isItemSelected","mapEntityToValue","compareBy","find","found","valueProperty","mapEntityToViewValue","textProperty","data","disabledProp","disabledProperty","cancelAnimationFrame","_handle","requestAnimationFrame","_handleItems","join","split","trim","CHAR_COUNTER_CHILD","PacemCharCountElement","_isValid","l","_length","minlength","maxlength","s","shadow","Defaults","USE_SHADOW_ROOT","template","EXECUTECOMMAND_NAME","EMPTY_CONTENT","ContenteditableChangeEvent","PacemContenteditableCommandElement","_containerPropChangeHandler","containerPropertyChangedCallback","execCommand","me","connectedCallback","cnt","contentElement","range","isFileCommand","obj","isElement","node","nodeType","Node","ELEMENT_NODE","PacemContenteditableElement","_focusHandler","_ensureInteractiveMarkup","_blurHandler","_container","cleanUp","_checkChangedHandler","_pasteHandler","preventDefault","files","clipboardData","cmd","pasteCallback","plainText","getData","replace","frag","createContextualFragment","deleteContents","insertNode","_shortcutHandler","_inputHandler","_fixRangeMarkup","inputHtml","history","_updateHistory","_fireHistoryChange","_selectionChangeHandler","selection","getSelection","anchorNode","contains","getRangeAt","cloneRange","h","_dashboard","hidden","CustomEventUtils","isInstanceOf","fnDownwards","childNodes","replaceWith","from","fn","commonAncestorContainer","workspace","nodes","childCount","closeRange","setEndAfter","surroundContents","previousSibling","createRange","setStartBefore","HistoryService","ViewChild","PacemContenteditableButtonCommandElement","active","getTooltip","altText","shortcut","keyboardShortcut","hint","CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE","PacemContenteditableHistoryCommandElement","canRedo","redo","canUndo","undo","isRelevant","icon","PacemContenteditableLinkCommandElement","ContenteditableUtils","findSurroundingNode","HTMLAnchorElement","arg","regex","test","outerHTML","link","window","prompt","insertPicture","blob","blobToDataURL","loadImage","img","pic","tabIndex","PacemContenteditableImageCommandElement","_setBehaviorHandler","select","_disposeBehaviorHandler","startsWith","querySelectorAll","_rescale","_rescaleImg","_disposeContainer","_initContainer","_rangeChangeCallback","file","_file","onchange","rect","targetRect","style","width","height","observer","collapsed","startContainer","endContainer","startOffset","endOffset","el","HTMLPictureElement","_enhancePictureElement","_downgradePictureElement","ContenteditableDOMObserver","removed","dispose","KnownExecCommand","getKnownCommandIcon","lower_cmd","substr","getKnownCommandFilters","argument","PacemContenteditableExecCommandElement","_matchRelevance","filters","cmdfilter","island","testInertElementWrapping","wrapper","extractContents","append","newChild","replaceChild","isRoot","HTMLDivElement","contentEditable","mutationCallback","selector","callback","mutationObserver","MutationObserver","list","entry","added","addedNodes","removedNodes","observe","subtree","childList","disconnect","getDefaultDashboard","DocumentFragment","toolbar0","separator0","toolbar1","bold","Bold","italic","Italic","underline","Underline","strike","StrikeThrough","ul","UnorderedList","ol","OrderedList","alignLeft","PacemContenteditableAlignCommandElement","align","alignCenter","alignRight","justify","separator1","toolbar2","arg1","parent","parentNode","findSurroundingBlockElement","isBlockElement","findSurroundingSiblingBlockElements","root","k","child","children","started","iNode","findContainingRootElements","range1","range2","collapse","nextElementSibling","getComputedStyle","inside","setStart","setEnd","removeAllRanges","addRange","copyAttributes","to","attrs","getAlignIcon","els","textAlign","elements","targetAlign","isPlaceholder","HTMLModElement","PacemContenteditablePlaceholderElement","ins","relevancy","normalizedDatasource","ph","placeholder","insertPlaceholder","_fillDropdown","_changeRelevancy","wraps","_dropdown","popout","definition","dd","_downgradePlaceholderElement","_enhancePlaceholderElement","PacemContenteditableWrapCommandElement","tagname","alreadyEl","elementsToWrap","repl","insertBefore","JsonOrStringConverter","PacemCalendarMonthPickerElement","Date","_getMonthLabel","m","year","getFullYear","toLocaleString","lang","month","_isThisMonth","viewYear","_isSelectedMonth","actual","parseDate","getMonth","_setMonth","header","buildMonthGrid","CalendarDateUnselectEvent","ComponentsUI","UI","DateSelectEvent","rangeFirstYear","y","PacemCalendarYearPickerElement","_getYearLabel","_isThisYear","_isSelectedYear","computed","_setYear","buildYearGrid","PacemCalendarPickerElement","viewmode","locked","_swipeHandler","direction","_next","_prev","_clearBtnHandler","_viewDate","_viewDateChangeHandler","_onViewDateChange","_popCalendarHandler","dateValue","_calendar","viewDate","_monthPicker","_yearPicker","offset","_input","dropdown","top","left","_hideCalendarHandler","composedPath","_hideCalendar","_proxy","dom","calendar","monthPicker","yearPicker","_monthLabel","_yearLabel","_rangeLabel","now","dayLabelFormatter","day","input","body","_clearButton","swiper","PacemSwipeElement","behaviors","findAncestorShell","_swiper","swipeIndex","_getHeaderLabel","dte","weekday","months","_jumpMonths","vd","addMonths","text","fy","addAnimationEndCallback","isReady","readOnly","_span","hide","dateVal","core","dold","dval","valueOf","Eval","buildCalendarHeader","StringOrBooleanPropertyConverter","PacemCheckboxElement","caption","_key","trueValue","falseValue","span","_checkbox","_label","selected","checked","fromResult","htmlFor","_synchronizeUi","PacemCheckboxListElement","_selectedUiItems","_disable","_repeater","_selectionChanged","uiItems","PacemChildFormPropagatorElement","PacemEventTarget","hasPropDefined","hasModelDefined","_synchronize","propagate","slice","PacemChildFormElement","_model","_modelToEntity","_entityToModel","_dragStart","size","floater","_dragEnd","_triggerChange","_itemCreate","subForms","localName","_itemChange","stringify","_deleteAt","srcEvent","_addItem","cloneFrom","clone","RepeaterItemCreateEventName","DragDropEventType","Start","End","DropBehavior","InsertChild","DragDataMode","Alias","PacemDatetimePickerElement","precision","_months","_dates","_a24","_a60","_years","hours","minutes","seconds","_yearel","_monthel","_dateel","_hourel","_minel","_secel","_allFields","today","min","max","leftPad","_disassembleDate","_setupYears","_buildupDates","_buildup","getDate","getHours","getMinutes","getSeconds","years","_computeValue","stopPropagation","monthvalue","dates","setHours","setMinutes","setSeconds","setMilliseconds","PacemBaseValidatorElement","triggerFormFieldValidation","easer","evaluate","BASIC_VALIDATOR_TEMPLATE","isValueEmpty","PacemRequiredValidatorElement","PacemRegexValidatorElement","pattern","RegExp","PacemLengthValidatorElement","PacemRangeValidatorElement","isFinite","PacemCompareValidatorElement","_prepareValuesForComparison","other","arranged","operator","PacemBinaryValidatorElement","maxSize","filename","PacemAsyncValidatorElement","_deferredToken","_evaluateResult","_fetcher","getApiResult","_fetch","params","request","as","serializedRequest","jsonSortStringify","lastRequest","returnLastResult","clearTimeout","_debouncer","setTimeout","PacemCustomValidatorElement","isValid","patternToString","source","PacemFormFieldElement","_md","MarkdownService","_entityPropertyChangeHandler","_labelClickHandler","getElementById","_field","_buildUpFetcher","_ensureBalloon","_buildUpCss","_buildUpLabel","_buildUpField","_balloon","_normalizeTooltip","extra","innerText","noBalloon","balloon","behavior","BalloonBehavior","Tooltip","trigger","BalloonTrigger","Hover","position","BalloonPosition","Top","hoverDelay","hoverTimeout","BalloonAlignment","Auto","toHtml","cssClass","cssClassAttr","css","cssAttr","vals","contentAttr","_isValueNullOrEmpty","_handleValueChange","camelToKebab","_adjustDependencyValue","toISOString","_broadcastFetchResult","_form","_apiResult","numericTagName","ui","autofocus","fetchData","fetchAttrs","disabledAttr","dependingClause","dependingDisabling","dependingParameters","dependsOn","depAttrs","hideAttr","isBindingAttribute","extractBindingAttributeExpression","parameterAttrs","pAttrs","parameterPairs","alias","propName","disablingClauses","empty","notEqual","hidingClauses","namesAndPaths","depends","path2","optional","clause","joinClauses","ne","emp","neByProp","dp","fns","spinStaticDatasourceAttr","fnKey","uiHint","Error","seedChildren","attrVal","quality","charCount","inputTransform","preventWheel","isComplexType","sourceUrl","verb","tags","itemValue","allowNew","allowDuplicates","itemtemplate","itmpl","isConnected","filterFields","ffields","maxSuggestions","calendarFormat","disabledRanges","dataType","uploadExtra","uploadUrl","parallelism","chunkSize","maxImageWidth","maxImageHeight","enum","dateFormat","defaultFormatOptions","currency","maximumFractionDigits","intl","step","intFormat","decimalFormat","functions","JsonFunctionConversion","Reference","lockItems","extraDom","prepend","disable","dependsOnValue","validatorElement","isKnownValidator","isValidatorFactory","lengthValidator","rangeValidator","maxNum","minNum","isDateTime","emailValidator","regexValidator","binaryValidator","filePattern","compareValidator","comparedToCore","toProperty","compareToAttr","asyncValidator","depOn","depend","extern","attrName","PacemGeolocateElement","_dragendHandler","_reverseGeocoder","_setupSuggest","_setupMapMarker","marker","sorted","sort","a","Maps","MapProjection","distanceBetween","altitude","_suggest","search","LatLng","isLatLng","any","pos1","Empty","pos2","equals","_datasource","fullAddress","_setup","_setupAdapters","_detachMarker","_disposeMarker","adapter","gc","_geocoder","rvgc","suggest","_createMarker","ComponentsMaps","PacemMapMarkerElement","draggable","address","HierarchyChangeEvent","HIERARCHYITEM_CSSCLASS","HIERARCHYITEM_CSSCLASS_FULL","HIERARCHYITEM_CSSCLASS_ATTR","BINDER_HIERARCHYDATAKEY","HIERARCHYITEM_CONTENT_CSSCLASS","HIERARCHYITEM_LINK_CSSCLASS","HIERARCHYITEM_LINK_CSSCLASS_FULL","HIERARCHYITEM_LINK_ICON","HIERARCHYITEM_MOVE_CSSCLASS","HIERARCHYITEM_MOVE_ICON","DEFAULT_PARENTSPROPERTY","PacemHierarchyElement","bindings","dropTargets","unlinkCaption","_binderClickHandler","origType","originalEvent","button","binder","srcElement","_unlink","unlinkingBinder","x","pageX","pageY","popup","_dragInitHandler","dragger","_dragger","keys","dragBinder","PacemBinderElement","shell","_dragStartHandler","_dragHandler","currentPosition","_dragEndHandler","_dropHandler","_isInAncestors","_isInDescendants","_compileHierarchy","_dragOverHandler","_dragOutHandler","_popoutHandler","_adaptedDatasource","_databind","_setupItemTemplate","_setupDragger","_setupBalloon","_buildAdaptedDatasource","_handle2","_disposeDragger","_disposeBalloon","_mapEntityToItem","_mapEntityToValue","_mapEntityToViewValue","dataset","_buildHierarchyItemDomId","itemId","classList","hierarchyItem","_dragger2","parents","toAnchor","BinderAnchor","toEnd","BinderEnd","Arrow","fromAnchor","Bottom","interactive","BinderInteractionEventName","_itemRemove","delete","HTMLTemplateElement","cloneNode","tmpl","move","PacemIconElement","_template","_defaultTemplate","relation","newParent","parentsProperty","_cleanupHierarchy","isInAncestors","sourceId","targetId","otherParents","p0","otherParent","handleSelector","dropBehavior","None","spillBehavior","DropTargetMissedBehavior","Copy","Drop","Drag","Init","Over","Out","dragger2","Self","_shellProxy","PacemBalloonElement","mapping","i0","_databindByParents","levelMatrix","count","reduce","previousLength","topmost","upperLevels","concat","upperLevel","level","every","RepeaterItemRemoveEventName","ChangePolicy","INPUT_FIELD_ACTIVATED_PROP","PacemBaseInputElement","debounce","changePolicy","Input","autoselect","activeElement","Blur","getValue","HTMLInputElement","HTMLTextAreaElement","autocomplete","deleteAttachedPropertyValue","PacemOrdinalInputElement","PacemTextualInputElement","PacemCharsInputElement","_itemCreateHandler","inputs","redactViewValue","acc","Arrays","_chars","toggleClass","charAt","counter","limit","Math","repeater","PacemColorInputElement","_parseValue","_tint","tint","_alpha","alpha","valueAsNumber","parseInt","_getValue","_wrapper","rgb","Colors","g","PacemEmailInputElement","anchor","FileUploadEventName","FileChangeEventName","StoragePickEvent","FileUploadEvent","FileChangeEvent","async","computeDirStats","dir","stats","directories","entries","kind","getFile","PacemUploadElement","_tweener","Animations","TweenService","undoCaption","retryCaption","clearCaption","uploading","percentage","complete","failed","invalidFile","ongoing","enqueuer","retryFrom","undone","_fileupload","_getMimeIcon","selectMode","hasValue","match","_localValue","_stats","_setupInputElement","_dispatchDownload","dispatch","download","dataURLToBlob","_validateAll","_validateSingleFile","File","substring","lastIndexOf","upload","_upload","uploader","_manage","_blobToBase64","_doUpload","skip","chunk","_tweenPercentage","round","end","setInterval","clearInterval","_buildLocalValue","lastModified","_canPick","w","self","_tryPickDirectory","showDirectoryPicker","directory","_tryPickFiles","multiple","showOpenFilePicker","_clickHandler","_mimicCompute","idle","waitForAnimationEnd","_tuner","run","Easings","sineInOut","computeFileStats","selectedFiles","Images","resize","fetchCredentials","Accept","fetchHeaders","_undo","Uploader","pct","duration","_retry","_clear","navigator","userAgent","PacemHiddenInputElement","getUserMediaFunctions","SnapshotStep","ConfirmSnapshotEvent","CustomUIEvent","buffer","PacemSnapshotElement","_resizeHandler","_renderValue","_canUseWebcam","_countdown","_webcamInitialized","_grabberChangeHandler","_grabber","_shutter","_snapshooterClickHandler","Taking","_pickerClickHandler","_takerClickHandler","_timerClickHandler","_confirmerClickHandler","_buffer","_getUserMedia","_ensureWebcamRunning","_syncSize","_picker","_snapshooter","_taker","_timer","_confirmer","canvas","_stage","video","_player","srcWidth","srcHeight","HTMLVideoElement","videoWidth","videoHeight","naturalWidth","naturalHeight","cnv","clientWidth","clientHeight","ctx","getContext","cropImageOntoCanvas","_root","removeChild","_refreshBuffer","toDataURL","_setToBeConfirmed","clearRect","Confirm","cropImage","localMediaStream","srcObject","message","ImageFetchRequestEventName","ImageFetchRequestEvent","PacemEditImageElement","_index","_uploaderPropertyChangedCallback","_progressbar","_done","_thumbnailUploaderPropertyChangedCallback","_uploaderFileUploadCallback","_uploader","thumbUploader","_thumbUploader","resizeImage","blob2","_imagefetch","_snapshotPropertyChangedCallback","_snapshot","_images","_fetching","_imagefetchSuddenly","take","PacemImageInputElement","_broadcastFetchRequestEventName","_innerValueChangedHandler","_dialog","DialogResultEvent","DialogButton","Ok","_clearBtn","_editBtn","_addDialog","dialog","buttons","DialogButtons","OkCancel","DialogResultEventName","_addEditImage","_removeDialog","_removeEditImage","editImage","allowSnapshot","maxWidth","maxHeight","maxThumbnailHeight","maxThumbnailWidth","_editImage","imageSet","_update","_image","_retrieve","_edit","open","Cancel","PacemNumberInputElement","_format","Intl","NumberFormat","emitHandler","PacemPasswordInputElement","_togglerMousedownHandler","toggleVisibility","baseId","inputId","_toggler","_syncToggler","floor","random","PacemSearchInputElement","PacemTelInputElement","PacemTextInputElement","PacemUrlInputElement","PacemLatLngElement","regexArray","lat","lng","_getViewValue","toFixed","_latInput","_lngInput","_inputContainer","e_val","_ensureValue","_lat","_lng","MapConsts","DEFAULT_COORDS","mevt","opts","provider","_synchronizeOptions","_marker","_map","_azureAdapter","subscriptionKey","apiKey","_googleAdapter","attribution","_leafletAdapter","tiles","ITEM_TXT_CORE","nvp","PacemNameValueListElement","_bag","_bagToValue","_valueToBag","bag","kvp","lastItem","PacemPropertyPickerElement","_select","fnRec","fullName","observed","getWatchedProperties","obs","PacemRadioElement","_radio","PacemRadioListElement","_selectedValue","PacemSelectElement","emptyOption","_manageDom","option","o","HTMLOptionElement","selectedIndex","adapted","PacemSliderElement","_computeAndAssignValue","_endHandler","_startHandler","_thumb","_downHandler","MouseEvent","clientX","touches","trackSize","_trackSize","_keydownHandler","forward","cease","ceaseFn","accelerateCallback","token","cancel","_setValue","_draw","_progress","transform","sv","_max","_min","_setTrackSize","triggerChange","constraint","perc","Focus","trackPosition","Center","_syncThumbLabel","thumbLabel","ResizeEventName","SuggestionSelectEvent","selectedValue","PacemSuggestElement","_toggleBtnHandler","toggle","_focus","_balloonPopupHandler","_btnArrow","_balloonPopoutHandler","keyupManaged","preventFocus","visible","actualHint","managed","selectedItem","_findFirstAvailableListItem","li","cursor","skipPredicate","matchPredicate","previousElementSibling","_selectHandler","_isTyping","superValue","_setDropdownMode","_createBalloon","_checkBalloon","_btnClear","_syncButtons","typing","_filter","allowTyping","is","_tmplProxy","siblings","setSelectionRange","lowerHints","filtered","lowerHint","iData","filterStruct","opacity","HTMLLIElement","delay","VerticalAuto","BalloonSizing","Match","Menu","StringArray","TagRemoveEvent","TagAddEvent","PacemTagElement","_btn","_remove","PacemTagsElement","_tagRemove","_tagAdd","_tags","_justAddedIndex","ndxrev","valrev","trunk2","trunk1","valadd","newvalue","PacemTextAreaElement","rows","cols","PacemMarkdownTextAreaElement","selectionStart","preventDefaultHandler","_markdown","DeepMerger","merge","Output"],"mappings":"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"}
|