@pacem/pacem 1.0.0-babbage → 1.0.0-bernoulli

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/browser/pacem-2d.js +1 -1
  2. package/dist/browser/pacem-2d.min.js +2 -2
  3. package/dist/browser/pacem-2d.min.js.map +1 -1
  4. package/dist/browser/pacem-3d.js +1 -1
  5. package/dist/browser/pacem-3d.min.js +2 -2
  6. package/dist/browser/pacem-3d.min.js.map +1 -1
  7. package/dist/browser/pacem-charts.js +1 -1
  8. package/dist/browser/pacem-charts.min.js +2 -2
  9. package/dist/browser/pacem-charts.min.js.map +1 -1
  10. package/dist/browser/pacem-cms.js +1 -1
  11. package/dist/browser/pacem-cms.min.js +2 -2
  12. package/dist/browser/pacem-cms.min.js.map +1 -1
  13. package/dist/browser/pacem-core.js +1 -1
  14. package/dist/browser/pacem-core.min.js +2 -2
  15. package/dist/browser/pacem-core.min.js.map +1 -1
  16. package/dist/browser/pacem-foundation.js +1 -1
  17. package/dist/browser/pacem-foundation.min.js +2 -2
  18. package/dist/browser/pacem-foundation.min.js.map +1 -1
  19. package/dist/browser/pacem-fx.js +1 -1
  20. package/dist/browser/pacem-fx.min.js +2 -2
  21. package/dist/browser/pacem-fx.min.js.map +1 -1
  22. package/dist/browser/pacem-logging.js +1 -1
  23. package/dist/browser/pacem-logging.min.js +2 -2
  24. package/dist/browser/pacem-logging.min.js.map +1 -1
  25. package/dist/browser/pacem-maps.js +1 -1
  26. package/dist/browser/pacem-maps.min.js +2 -2
  27. package/dist/browser/pacem-maps.min.js.map +1 -1
  28. package/dist/browser/pacem-media.js +1 -1
  29. package/dist/browser/pacem-media.min.js +2 -2
  30. package/dist/browser/pacem-media.min.js.map +1 -1
  31. package/dist/browser/pacem-networking.js +1 -1
  32. package/dist/browser/pacem-networking.min.js +2 -2
  33. package/dist/browser/pacem-networking.min.js.map +1 -1
  34. package/dist/browser/pacem-numerical.js +1 -1
  35. package/dist/browser/pacem-numerical.min.js +2 -2
  36. package/dist/browser/pacem-numerical.min.js.map +1 -1
  37. package/dist/browser/pacem-plus.js +1 -1
  38. package/dist/browser/pacem-plus.min.js +2 -2
  39. package/dist/browser/pacem-plus.min.js.map +1 -1
  40. package/dist/browser/pacem-scaffolding.js +1 -1
  41. package/dist/browser/pacem-scaffolding.min.js +2 -2
  42. package/dist/browser/pacem-scaffolding.min.js.map +1 -1
  43. package/dist/browser/pacem-ui.js +1 -1
  44. package/dist/browser/pacem-ui.min.js +2 -2
  45. package/dist/browser/pacem-ui.min.js.map +1 -1
  46. package/dist/bundle/pacem.min.mjs +1 -1
  47. package/dist/bundle/pacem.mjs +1 -1
  48. package/dist/typings/index.d.ts +1 -1
  49. package/package.json +1 -1
@@ -1 +1 @@
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, '&lt;').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 &copy; <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":"gCACO,MAAMA,EAAuB,SAC7B,MAAMC,UAAyBC,EAAAA,iBAClC,WAAAC,CAAYC,GACRC,MAAML,EAAsBI,EAAM,CAAEE,SAAS,EAAMC,YAAY,GACnE,ECJG,IAAIC,GACX,SAAWA,GACPA,EAAyB,OAAI,SAC7BA,EAAyB,OAAI,SAC7BA,EAA2B,SAAI,WAC/BA,EAA0B,QAAI,UAC9BA,EAAyB,OAAI,SAC7BA,EAAyB,OAAI,QAChC,CAPD,CAOGA,IAAqBA,EAAmB,CAAA,IACpC,MAAMC,EACT,UAAMC,CAAKC,EAAKC,GACZ,IAAIC,QAAaC,MAAMH,EAAK,CACxBI,KAAM,OAAQC,YAAa,OAAQJ,QAASA,IAEhD,IACI,IAAIK,QAAaJ,EAAKI,OACtB,OAAOC,KAAKC,MAAMF,EAAMN,EAC5B,CACA,MAAOS,GACH,OAAO,IACX,CACJ,EAEJ,MAAMC,EAAc,+CCrBpB,MAAMC,EAAYC,EAAAA,IAAIC,WACf,MAAMC,UAAsBhB,EAC/B,mBAAAiB,CAAoBC,GAChB,IACIC,EADU,uBACIC,KAAKF,GACvB,OAAW,MAAPC,GAAeA,EAAIE,OAAS,EACrBH,EACJC,EAAI,EACf,CACA,KAAAT,CAAMY,EAASpB,GACX,IAAIqB,EAAID,EACS,iBAANC,IACPA,EAAIC,KAAKd,MAAMa,IAEnB,MAAMf,EAAOe,EACb,IAAIE,EAAc,CAAA,EAClB,IAAK,IAAIC,KAAOlB,EAAKiB,YAAa,CAE9BA,EADWhB,KAAKQ,oBAAoBS,IAChBlB,EAAKiB,YAAYC,EACzC,CACA,IAAIC,EAAU,GACd,GAAInB,EAAKoB,MAAQpB,EAAKqB,QAAQR,OAAS,EACnCM,EAAUnB,EAAKqB,QAAQ,GAAK,MAAQrB,EAAKoB,KAAOpB,EAAKsB,cAEpD,GAAI5B,EAAK,CAEV,IAAI6B,EAAS,yBAAyBX,KAAKlB,GACvC6B,GAAUA,EAAOV,UACXb,EAAY,SAAKuB,EAAOV,OAAS,IACnCb,EAAKqB,QAAU,CAACE,EAAO,MAEtBvB,EAAKoB,MAAQG,EAAOV,OAAS,IAC9Bb,EAAKoB,KAAOG,EAAO,GACnBvB,EAAKsB,SAAW,IAEpBH,EAAUI,EAAO,GAEzB,MAEIC,QAAQC,KAAK,uDAEjB,IAAIC,EAAS,CAAEC,UAAW,GAAIV,YAAaA,EAAaE,QAASA,GACjE,IAAK,IAAIS,KAAQ5B,EAAK6B,MAAO,CACzB,IAAIC,EAAM9B,EAAK6B,MAAMD,GACrB,IAAK,IAAIG,IAAU,CAAC1B,EAAU2B,IAAK3B,EAAU4B,OAAQ5B,EAAU6B,KAAM7B,EAAU8B,KAAM,CACjF,IAAIC,EAAKN,EAAIC,EAAOM,eACpB,GAAID,EAAI,CACJ,IAAIE,EAAWrC,KAAKsC,gBAAgBvC,EAAMoC,EAAIR,EAAMG,GACpDL,EAAOC,UAAUa,KAAKF,EAC1B,CACJ,CACJ,CACA,OAAOZ,CACX,CACA,eAAAa,CAAgBvC,EAAMoC,EAAIR,EAAMG,GAC5B,MAAO,CACHU,SAAUxC,KAAKyC,gBAAgB1C,EAAMoC,GACrCR,KAAMA,EACNG,OAAQA,EACRY,WAAY1C,KAAK2C,kBAAkB5C,EAAMoC,GAEjD,CACA,cAAAS,CAAeC,EAAMC,GACjB,OAAQD,GACJ,IAAK,SACL,IAAK,UACD,OAAOvD,EAAiByD,OAC5B,IAAK,UACD,OAAOzD,EAAiB0D,QAC5B,IAAK,SACD,OAAQF,GACJ,IAAK,OACL,IAAK,YACD,OAAOxD,EAAiB2D,SAC5B,IAAK,OACD,OAAO3D,EAAiB4D,OAC5B,IAAK,SACD,KAAM,+BAEd,OAAO5D,EAAiB6D,OAEhC,OAAO7D,EAAiB6D,MAC5B,CACA,iBAAAR,CAAkB5C,EAAMqD,GACpB,OAAQA,EAAUV,YAAc,IAAIW,IAAIC,IACpC,MAAMC,EAAKD,EACX,IAAI7B,EAAS,CACT+B,KAAMD,EAAGC,KACTC,SAAUF,EAAGE,WAAY,GAEzBZ,EAAOS,EAAET,KACb,GAAIS,EAAEI,OAAQ,CACV,IAAIC,EAAQL,EACZ7B,EAAOoB,KAAOvD,EAAiBsE,OAC/B,IAAIJ,EAAO/B,EAAOoC,SAAW7D,KAAKQ,oBAAoBmD,EAAMD,OAAOI,MACnErC,EAAOsC,KAAOhE,EAAKiB,YAAYwC,EACnC,MACSX,IACLpB,EAAOoB,KAAO7C,KAAK4C,eAAeC,EAAMS,EAAER,SAE9C,OAAOrB,GAEf,CACA,eAAAgB,CAAgB1C,EAAMqD,GAClB,IAAIY,EAAKZ,EAAUa,UAAU,KAC7B,IAAKD,IAAOA,EAAGN,OACX,OAAO,KACX,IAAuCK,EAAMP,EAAzCX,EAAOmB,EAAGN,OAAOb,MAAQ,SAiB7B,OAhBImB,EAAGN,OAAOI,MACVN,EAAOxD,KAAKQ,oBAAoBwD,EAAGN,OAAOI,MAC1CC,EAAOhE,EAAKiB,YAAYwC,KAGxBO,EAAOC,EAAGN,OACNM,EAAGN,OAAOQ,QACNF,EAAGN,OAAOQ,MAAMC,eAAe,SAC/BX,EAAOxD,KAAKQ,oBAAoBwD,EAAGN,OAAOQ,MAAMJ,MAChDC,EAAOhE,EAAKiB,YAAYwC,IAGxBO,EAAOC,EAAGN,OAAOQ,QAItB,CAAErB,KAAMA,EAAMgB,SAAUL,EAAMO,KAAMA,EAC/C,EC9HG,MAAMK,UAAuB7E,EAChC,KAAAU,CAAMY,EAASpB,GACX,IAAIqB,EAAID,EACS,iBAANC,IACPA,EAAIC,KAAKd,MAAMa,IAEnB,MAAMf,EAAOe,EACPY,EAAY,GACZV,EAAchB,KAAKqE,mBAAmB,IAAIC,IAAOvE,EAAKwE,WAAWC,SACvE,IAAK,IAAI7C,KAAQ5B,EAAK6B,MAClB,IAAK,IAAIE,KAAU/B,EAAK6B,MAAMD,GAAO,CACjC,MAAMU,EAAWtC,EAAK6B,MAAMD,GAAMG,GAClCJ,EAAUa,KAAK,CACXZ,OACAG,OAAQA,EAAO2C,cACf/B,WAAY1C,KAAK0E,wBAAwBrC,EAASK,YAClDF,SAAUxC,KAAKyC,gBAAgBzB,EAAaqB,EAAS4B,YAE7D,CAEJ,MAAO,CAAEvC,YAAWV,cAAaE,QAASzB,EAC9C,CACA,uBAAAiF,CAAwBhC,EAAa,IACjC,MAAMiC,EAAS,GACf,IAAK,IAAIrB,KAAKZ,EAAY,CACtB,MAAMgB,EAASJ,EAAEI,OACb,SAAUA,GACViB,EAAOpC,KAAK,CAAEiB,KAAMF,EAAEE,KAAMC,SAAUH,EAAEG,SAAUZ,KAAM7C,KAAK4C,eAAec,EAAOb,KAAMa,EAAe,SAEhH,CACA,OAAOiB,CACX,CACA,cAAA/B,CAAeC,EAAMC,GACjB,OAAQD,GACJ,IAAK,SACL,IAAK,UACD,OAAOvD,EAAiByD,OAC5B,IAAK,UACD,OAAOzD,EAAiB0D,QAC5B,IAAK,SACD,OAAQF,GACJ,IAAK,OACL,IAAK,YACD,OAAOxD,EAAiB2D,SAC5B,IAAK,OACD,OAAO3D,EAAiB4D,OAC5B,IAAK,SACD,KAAM,+BAEd,OAAO5D,EAAiB6D,OAEhC,OAAO7D,EAAiB6D,MAC5B,CACA,kBAAAkB,CAAmBO,EAAUJ,GACzB,MAAM/C,EAAS,CAAA,EACf,IAAK,IAAIiC,KAAUc,EACf/C,EAAOiC,GAAU1D,KAAK6E,gBAAgBD,EAAUJ,EAASd,GAE7D,OAAOjC,CACX,CACA,eAAAoD,CAAgBD,EAAUJ,EAAS3B,GAC/B,GAAI+B,EAASE,IAAIjC,GACb,OAAO+B,EAASG,IAAIlC,GAExB,GAAIA,KAAQ2B,EAAS,CAEjB,MAAM/C,EAAS+C,EAAQ3B,GAEvB,OADA+B,EAASI,IAAInC,EAAMpB,GACZA,CACX,CACA,OAAO,IACX,CACA,mBAAAjB,CAAoBC,GAChB,IACIC,EADU,+BACIC,KAAKF,GACvB,OAAW,MAAPC,GAAeA,EAAIE,OAAS,EACrBH,EACJC,EAAI,EACf,CACA,eAAA+B,CAAgBzB,EAAaiD,GAEzB,IAIIP,EAJAM,EADc,CAAEC,aACDA,UAAU,KAC7B,GAAIgB,EAAAA,MAAMC,cAAclB,GAAMA,EAAGnD,SAC7B,OAAO,KAGX,IAAK,IAAIsE,KAAQnB,EAAGnD,QAAS,CACzB6C,EAASM,EAAGnD,QAAQsE,GAAMzB,OAC1B,KACJ,CACA,IAAqBK,EAAMP,EAAvBX,EAAO,SAkBX,MAjBI,SAAUa,GACVF,EAAOxD,KAAKQ,oBAAoBkD,EAAOI,MACnCC,EAAO/C,EAAYwC,KAGvBX,EAAOa,EAAOb,KACdkB,EAAOL,EACa,UAAhBA,EAAOb,OACH,SAAUa,EAAOQ,OACjBV,EAAOxD,KAAKQ,oBAAoBkD,EAAOQ,MAAMJ,MAC7CC,EAAO/C,EAAYwC,IAGnBO,EAAOL,EAAOQ,QAInB,CAAErB,OAAMgB,SAAUL,EAAMO,OACnC,sHC3GG,cAA4BxE,EAC/B,WAAAN,CAAYmG,EAAY,IAAIhB,EAAkBiB,EAAW,IAAI9E,GACzDpB,QACAa,KAAKoF,UAAYA,EACjBpF,KAAKqF,SAAWA,CACpB,CACA,KAAApF,CAAMY,EAASpB,GACX,IAAIqB,EAAID,EACS,iBAANC,IACPA,EAAIC,KAAKd,MAAMa,IAEnB,MAAMf,EAAOe,EACb,MAAI,YAAaf,EACNC,KAAKoF,UAAUnF,MAAMF,EAAMN,GAE/BO,KAAKqF,SAASpF,MAAMF,EAAMN,EACrC,wCHKG,SAA8B6F,EAAUxB,GAC3C,IAAIyB,EAAMpF,EAAYQ,KAAKmD,GAC3B,OAAIyB,GAAOA,EAAI3E,OAAS,EACb,CAAE4C,KAAM+B,EAAI,GAAI7B,OAAQ4B,EAAStE,YAAYuE,EAAI,KAErD,IACX,II/BIC,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAEA,MAAMM,EAAiC,CACnCC,QAAS,CAACC,EAAaC,EAAMC,IAAeA,EAAW,GAAGF,KAAeC,KACzEE,UAAW,CAACC,EAAeC,EAAoBJ,EAAMC,IAAeA,EAAW,aAAeE,EAAgB,IAAMH,IAASC,EAAW,aAAeE,EAAgBC,EAAqB,IAAMJ,GAClMK,eAAgB,CAACC,EAAaL,IAAeA,EAAW,mBAAqBK,IAE1E,MAAMC,EAST,uBAAOC,CAAiBC,EAAUR,EAAYS,GAC1C,OAAOH,EAAMI,kBAAkBF,EAAUR,EAAYS,EACzD,CACA,wBAAOC,CAAkBF,EAAUR,EAAYS,EAASE,EAAS,IAC7DF,EAAUlC,EAAAA,MAAMqC,OAAO,CAAA,EAAIhB,EAAgCa,GAC3D,IAAK,IAAIV,KAAQS,EAASK,MAAO,CAE7B,GAAI,UAAWd,GAA8B,iBAAfA,EAAKc,QAAuBtC,QAAMuC,QAAQf,EAAKc,OAAQ,CACjF,MAAME,EAAMJ,EAASZ,EAAKA,KAAO,IACjCA,EAAKc,MAAQP,EAAMI,kBAAkBX,EAAKc,MAAOb,EAAYS,EAASM,EAC1E,CACA,MAAMlB,EAAUE,EAAKF,QAAUE,EAAKF,SAAW,CAAA,EACzCmB,EAAWL,EAASZ,EAAKA,KAI/B,GAHAF,EAAQ/C,KAAO2D,EAAQZ,QAAQ,OAAQmB,EAAUhB,IAAeH,EAAQ/C,KACxE+C,EAAQoB,UAAYR,EAAQZ,QAAQ,YAAamB,EAAUhB,IAAeH,EAAQoB,UAClFpB,EAAQqB,YAAcT,EAAQZ,QAAQ,cAAemB,EAAUhB,IAAeH,EAAQqB,aACjF3C,EAAAA,MAAMC,cAAcuB,EAAKoB,UAC1B,IAAK,IAAIC,KAAWrB,EAAKoB,SAAU,CAC/B,MAAME,EAAUZ,EAAQL,eAAegB,EAAQtE,KAAMkD,GAChDzB,EAAAA,MAAMC,cAAc6C,KACrBD,EAAQC,QAAUA,EAE1B,CAEJ,IAAK9C,EAAAA,MAAMC,cAAcuB,EAAKuB,YAAa,CACvC,MAAMpD,EAAW,CAAA,EACjB,IAAK,IAAI+B,KAAaF,EAAKuB,WAAY,CACnC,MAAMnF,EAAO8D,EAAU9D,KACvB,GAAoB,iBAATA,EAAmB,CAC1B,MAAMoF,EAAQrD,EAAS/B,IAAS+B,EAAS/B,KAAS,GAAM,EAClDqF,EAAef,EAAQR,UAAU9D,EAAMoF,EAAOP,EAAUhB,GACzDzB,EAAAA,MAAMC,cAAcgD,KACrBvB,EAAwB,aAAIuB,EAEpC,CACJ,CACJ,CACJ,CACA,OAAOhB,CACX,EAEJ1B,EAAW,CACP2C,EAAAA,YAAY,2BACbnB,EAAO,mBAAoB,iJChE1BxB,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIO,MAAMoC,EAAsB,SACtBC,EAAqB,QAC3B,MAAMC,UAAwBtJ,EAAAA,iBACjC,WAAAC,CAAYC,GACRC,MAAMiJ,EAAqBlJ,EAAM,CAAEE,SAAS,EAAMC,YAAY,GAClE,EAEG,MAAMkJ,UAAuBC,MAChC,WAAAvJ,GACIE,MAAMkJ,EAAoB,CAAEjJ,SAAS,EAAMC,YAAY,GAC3D,EAEJ,MAAMoJ,EAAwB,CAAC,WAA6D3J,EAAmC4J,oBACzHC,GAA4B,EAC3B,MAAMC,EACT,WAAA3J,CAAY4J,GACR7I,KAAK6I,SAAWA,EAChB7I,KAAK8I,iBAAoB5I,IAGrB,GADAF,KAAK6I,SAASE,OAAO7I,GACjBA,EAAE2C,OAAS6F,mBAAkB,CAE7B,MAAMM,EAAM9I,EACZF,KAAK6I,SAASE,OAAO,IAAIE,YAAY,OAASD,EAAIE,OAAOnC,YAAY3E,cAAe,CAAE8G,OAAQF,EAAIE,OAAOC,kBAC7G,EAER,CACA,KAAAC,GACIX,EAAsBY,QAAQC,GAAKtJ,KAAK6I,SAASU,iBAAiBD,EAAGtJ,KAAK8I,kBAAkB,GAChG,CACA,IAAAU,GACIf,EAAsBY,QAAQC,GAAKtJ,KAAK6I,SAASY,oBAAoBH,EAAGtJ,KAAK8I,kBAAkB,GACnG,EAEG,MAAMY,UAAiCC,EAAAA,WAAWC,aACrD,qBAAAC,GACI1K,MAAM0K,wBACN7J,KAAK8J,KAAOC,EAAAA,mBAAmBC,mBAAmBhK,KAAMiK,EAC5D,EAEJzE,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBC,WACvCX,EAAyBY,UAAW,eACvC,IAAIL,EAAmB,cAA+BP,EAClD,WAAAzK,GACIE,MAAM,QACNa,KAAK8B,OAASzB,MAAIC,WAAW2B,KAC7BjC,KAAKuK,SAAW,KAChBvK,KAAKwK,SAAW,CAAEC,YAAQC,EAAWC,WAAOD,GAC5C1K,MAAK4K,GAAY,EACjB5K,KAAK6K,cAAiB7B,IAClB,KAAgC,KAA5BA,EAAI8B,SAEA9B,EAAI+B,UAAa/B,EAAIgC,SAAYhC,EAAIiC,QAAWjC,EAAIkC,SAAS,CACjE,IAAIC,EAAMnC,EAAIoC,cAAcC,cAAcC,EAAAA,EAAI,wBACzCrG,EAAAA,MAAMsG,OAAOJ,KAAQlG,EAAAA,MAAMuG,UAAUL,IAASA,EAAIM,UACnDN,EAAIO,OAEZ,GAEJ1L,KAAK2L,QAAU,CAACC,EAAS5C,KAChB/D,EAAAA,MAAMsG,OAAOvC,IACd6C,EAAAA,aAAa7C,GAEjB8C,QAAQC,IAAI/L,KAAKgM,sBAAsBC,KAAK3I,SACpCA,EAAE4I,UAAUC,IAAW,IAANA,IACjBnM,KAAKyK,OAAOmB,GAASK,KAAKG,IAEtBpM,KAAKqM,eACND,UAMfpM,KAAKsM,OAAUtD,IACN/D,EAAAA,MAAMsG,OAAOvC,IACd6C,EAAAA,aAAa7C,GACjB,IAAIuD,EAAW,IAAIhE,EAEnB,GADAvI,KAAKwM,cAAcD,IACfA,EAASE,iBAAb,CAKA,IAAK,IAAIC,KAAS1M,KAAK2M,QAAS,CAC5B,IAAIC,EAAM5M,KAAK2M,QAAQD,GACnBE,aAAeC,GACfD,EAAIjC,OACZ,CAEA,IAAK,IAAIb,KAAQ9J,KAAK8M,UAClBhD,EAAKwC,QAVT,GAaJtM,KAAK2M,QAAU,CAAA,EACf3M,KAAK+M,YAAc,CAAA,EACnB/M,KAAK8M,UAAY,GACjB9M,KAAKgN,sBAAyBhE,IAC1B,OAAQA,EAAIE,OAAO+D,cACf,IAAK,QAED,IAAIC,EAAQlE,EAAItD,OAChB1F,KAAKmN,oBAAoBD,EAAM1J,MAC/B,MACJ,IAAK,QACDxD,KAAKoN,kBACL,MACJ,IAAK,QACDpN,KAAKqN,mBAIjBrN,KAAKsN,0BAA6BtE,IAC9B,MAAMrC,EAAYqC,EAAItD,OAAQlC,EAAOmD,EAAU4G,MAC/C,GAAgC,YAA5BvE,EAAIE,OAAO+D,aAA4B,CACvC,IAAIC,EAAQlN,KAAK2M,QAAQhG,EAAU4G,OAC/B5G,EAAU6G,QACVN,EAAMO,OAAQ,EAEdzN,KAAKmN,oBAAoB3J,EACjC,MAEIxD,KAAKmN,oBAAoB3J,IAKjCxD,KAAK0N,kBAAmB,EAExB1N,KAAK2N,YAAa,EAClB3N,KAAKuK,SAAW,IAAI3B,EAAiB5I,KACzC,CACA,uBAAA4N,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,IAChC,WAATvK,IAA2C,IAAtBxD,KAAKgO,eAA0B/I,QAAMC,cAAclF,KAAKkH,WACpE,aAAT1D,IAA6C,IAAtBxD,KAAKgO,cACnB,iBAATxK,IAAmC,IAARsK,GAAgB9N,KAAKkH,WAAalH,KAAKkH,SAAgB,OAAKlH,KAAKkH,UAAUtG,OAAS,IAChHZ,KAAKiO,cASb,CACA,qBAAApE,GACI1K,MAAM0K,wBACN7J,KAAK8J,MAAQ9J,KAAK8J,KAAKoE,gBAAgBlO,MACvCA,KAAKqN,iBACLrN,KAAKuJ,iBAAiB,QAASvJ,KAAK6K,eAAe,GACnD7K,KAAKuK,SAASnB,OAClB,CACA,oBAAA+E,GACInO,KAAKuK,SAASf,OACdxJ,KAAKyJ,oBAAoB,QAASzJ,KAAK6K,eAAe,GACtD7K,KAAK8J,MAAQ9J,KAAK8J,KAAKsE,kBAAkBpO,MACzCb,MAAMgP,sBACV,CACA,YAAAF,GACI,MAAMtI,EAAM,IAAMV,EAAAA,MAAMoJ,aAClBC,EAAMtO,KAAKuO,GAAMvO,KAAKuO,IAAM5I,EAC5B6I,EAAQ,QAAU7I,EAElBmE,EAAO2E,SAASC,cAAc,QACpC5E,EAAKyE,GAAK,OAAS5I,EACnBmE,EAAK6E,UAAYC,EAAAA,KAAO,QACxB9E,EAAK+E,aAAa,QAAS,IAC3B/E,EAAK+E,aAAa,aAAc,IAChC,MAAMC,EAAO,IAAIxD,gCAA8BgD,mBAAqBA,wBAA0BA,0BAC/FhD,EAAAA,oBAAoBgD,0BAA4BA,8CAAgDA,0BAA4BA,8CAAgDA,6DAA+DM,EAAAA,wBAAwBA,0DAE3PtD,EAAAA,uCAAuCgD,6CAA+CA,+CAC3EA,4BAA8BA,2EACLA,wCAA0ChD,+CAErFA,iBACJA,mBACDA,EAAAA,uBAAuBgD,oBAAsBE,cAAkBxO,KAAK8B,4BAA4BwM,uCAAyCA,wBAA0BhD,EAAAA,0BACxJsD,0EAEHtD,EAAAA,wBAAwBgD,2BAA6BA,cAAgBA,iBAAmBE,uCAA2CF,uCAAyCA,gCAAkCA,kGAEpLA,qBAAuBA,8BAAgCA,kCAC3EA,6BAA+BA,eAAiBA,kBAAoBA,iCACtEhD,mCAAiCsD,EAAAA,kCAAkCN,4BAA8BM,EAAAA,aAAaA,sEAAoEtD,EAAAA,0BAClLA,EAAAA,oBAAoBgD,iCAAmChD,EAAAA,sBAC1DA,yBACDA,EAAAA,wBAAwBgD,2BAA6BA,2GAA6GA,uCAAyCA,gCAAkCA,2BAA6BA,oBAAsBA,mBAAqBA,8BAAgCA,6BAA+BA,iCAChXhD,EAAAA,oBAAoBgD,mCAAqChD,EAAAA,sBAC5DA,4BAGJxB,EAAKiF,UAAYD,EACjB9O,KAAK+O,UAAY,GACjB/O,KAAKgP,YAAYlF,GACjBA,EAAKP,iBAAiB,SAAUsC,EAAAA,cAAc,GAC9C,MAAMgC,EAAM7N,KAAKwK,SACXsD,EAAM9N,KAAKwK,SAAW,CACxBC,OAAQX,EAAKmF,iBAAiBC,kBAAkBA,kBAChDvE,MAAOb,EAAKmF,iBAAiBC,kBAAkBD,kBAEnDjP,KAAKwM,cAAc,IAAI2C,EAAAA,oBAAoB,CAAElC,aAAc,cAAemC,aAActB,EAAKuB,SAAUxB,IAC3G,CAEA,eAAIyB,GACA,OAAOtP,KAAKwK,QAChB,CACAI,GACA,YAAIA,GACA,OAAO5K,MAAK4K,CAChB,CAKA,MAAAH,CAAOmB,GACH,OAAO,IAAIE,QAAQ,CAACyD,EAASC,KACrBvK,EAAAA,MAAMsG,OAAOK,IACb4D,EAAO,mDAEXxP,KAAKyP,kBAAkB7D,GAASK,KAAKyD,IACjC1P,KAAKwM,cAAc,IAAIvD,YAAY,UAAW,CAAEC,OAAQwG,KACxDH,EAAQG,IACTC,IACKA,IAAQhH,GACR3I,KAAKwM,cAAc,IAAIvD,YAAY,OAAQ,CAAEC,OAAQyG,KAEzDH,EAAOG,MAGnB,CAEA,KAAAhF,GACI3K,KAAKsM,QACT,CACA,iBAAAmD,CAAkB7D,EAAS1M,GACvB,GAAI+F,EAAAA,MAAMsG,OAAOK,GACb,KAAM,kDACV,IAAIgE,EAAWC,EAAAA,aAAaC,QAC5B,MAAMC,EAAS/P,KAAK+P,OAAQC,EAAahQ,KAAKgQ,WAC9C,IAAI9C,EAAQ,CAAA,EACPjI,EAAAA,MAAMC,cAAc8K,GAIrB9C,EAAQ6C,EAHR7C,EAAM8C,GAAcD,EAKpB7Q,EAAO,CAAEwD,WAAYwK,EAAO+C,OAAQjQ,KAAKkQ,iBAA7C,IAEIC,EAAY,IAAI7H,EAAgBpJ,GAEpC,GADAc,KAAKwM,cAAc2D,GACfA,EAAU1D,iBAEVmD,EAASJ,OAAO7G,OAEf,CAEDiD,EAAQlJ,WAAauC,QAAMqC,OAAO,CAAA,EAAI6I,EAAUjH,OAAOxG,YAEvD,MAAM0N,EAAapH,IACf4C,EAAQnC,oBAAoBpJ,EAAAA,IAAIgQ,sBAAuBD,GAAW,GAClExE,EAAQnC,oBAAoBpJ,EAAAA,IAAIiQ,oBAAqBC,GAAS,GAC9D,MAAMvK,EAAIgD,EAAIE,OAOd,GAP8B7I,EAAAA,IAAImQ,QAAQC,QAAQzK,KAG9C4F,EAAQnC,oBAAoBpJ,EAAAA,IAAIqQ,qBAAsBC,GAAU,GAChE3Q,KAAK4Q,SAAU,EACfhB,EAASL,QAAQ,KAGZ,MADDvJ,EAAE6K,OAEF7Q,KAAKsM,UAKXqE,EAAY3H,IAEd4C,EAAQnC,oBAAoBpJ,EAAAA,IAAIqQ,qBAAsBC,GAAU,GAEhE,IAAIjB,EAAS1G,EAAIE,OACO,iBAApB,GAAgCwG,EAAOvL,eAAe,YAE/B,IAAnBuL,EAAOkB,SACP5Q,KAAK4Q,SAAU,EACfhB,EAASL,QAAQG,EAAOA,QAAU,CAAA,KAGlC1P,KAAK8Q,MAAO,EACZlB,EAASJ,OAAOE,EAAOqB,SAI3B/Q,KAAK4Q,SAAU,EACfhB,EAASL,QAAQG,KAInBa,EAAWvH,IAEb4C,EAAQnC,oBAAoBpJ,EAAAA,IAAIgQ,sBAAuBD,GAAW,GAClExE,EAAQnC,oBAAoBpJ,EAAAA,IAAIqQ,qBAAsBC,GAAU,GAChE/E,EAAQnC,oBAAoBpJ,EAAAA,IAAIiQ,oBAAqBC,GAAS,GAC9DvQ,KAAK8Q,MAAO,EACZ,MAAMtO,EAAWwG,EAAIE,OACrB0G,EAASJ,OAAOhN,IAGdwO,EAAgBhI,IAClB,GACS,aADDA,EAAIE,OAAO+D,cAEqB,IAA5BjE,EAAIE,OAAOkG,cACXnK,EAAAA,MAAMgM,SAASjR,KAAM4O,EAAAA,KAAO,aAC5B5O,MAAK4K,GAAY,EACjB5K,KAAKwM,cAAc,IAAI2C,EAAAA,oBAAoB,CAAEC,cAAc,EAAMC,UAAU,EAAOpC,aAAc,gBAGhGjN,MAAK4K,GAAY,EACjB5K,KAAKwM,cAAc,IAAI2C,EAAAA,oBAAoB,CAAEC,cAAc,EAAOC,UAAU,EAAMpC,aAAc,cAChGhI,EAAAA,MAAMiM,YAAYlR,KAAM4O,EAAAA,KAAO,aAC/BhD,EAAQnC,oBAAoB0H,0BAAyBH,GAAc,KAKnFpF,EAAQrC,iBAAiB4H,0BAAyBH,GAAc,GAChEpF,EAAQrC,iBAAiBlJ,EAAAA,IAAIgQ,sBAAuBD,GAAW,GAC/DxE,EAAQrC,iBAAiBlJ,EAAAA,IAAIqQ,qBAAsBC,GAAU,GAC7D/E,EAAQrC,iBAAiBlJ,EAAAA,IAAIiQ,oBAAqBC,GAAS,GACtDtL,EAAAA,MAAMC,cAAclF,KAAKoR,UAC1BxF,EAAQnM,IAAMO,KAAKoR,QAGnBxF,aAAmBjC,EAAAA,WAAW0H,oBAAsBzF,EAAQ0F,WAC5D1F,EAAQhM,QAEZI,KAAK4Q,QAAU5Q,KAAK8Q,MAAO,CAC/B,CAEA,OAAOlB,EAAS2B,OACpB,CACA,aAAArB,CAAcsB,EAAc,IAExB,IAAK,IAAI1H,KADT7E,EAAAA,MAAMqC,OAAOkK,EAAaxR,KAAK2M,SACd3M,KAAK8M,WAClBhD,EAAKoG,cAAcsB,GAEvB,OAAOA,CACX,CAEA,KAAAC,CAAMC,GACF,IAAIzM,EAAAA,MAAMC,cAAcwM,GAAxB,CAGA1R,KAAK+P,OAAS9K,QAAMqC,OAAO,CAAA,EAAItH,KAAK+P,OAAQ2B,GAC5C,IAAK,IAAIlO,KAAQkO,EACb1R,KAAK2R,SAASnO,EAHlB,CAKJ,CAEA,WAAA6I,IAAeuF,GACX5R,KAAK6R,QAAO,KAAUD,EAC1B,CAEA,QAAAD,IAAYC,GACR5R,KAAK6R,QAAO,KAASD,EACzB,CACA,MAAAC,CAAOC,KAAUF,GACb,MAAMG,GAAY9M,QAAMwL,QAAQmB,GAChC,IAAK,IAAIlF,KAAS1M,KAAK2M,QACnB,IAAKoF,GAAYH,EAAMI,QAAQtF,IAAU,EAAG,CACxC,MAAME,EAAM5M,KAAK2M,QAAQD,GACrBE,aAAeC,IACfiF,EAAQlF,EAAI+E,WAAa/E,EAAIP,cAErC,CAEJ,IAAK,IAAIvC,KAAQ9J,KAAK8M,UAClBgF,EAAQhI,EAAK6H,YAAYC,GAAS9H,EAAKuC,eAAeuF,EAE9D,CACA,mBAAAzE,CAAoB3J,GAChB,OAAKxD,KAAK0N,iBAGNlK,KAAQxD,KAAK2M,QACN3M,KAAKiS,eAAezO,GAAM,GAE9BsI,QAAQyD,SAAQ,GALZzD,QAAQyD,QAAQ,KAM/B,CAEA,QAAA2C,CAAS1O,GACL,OAAKyB,EAAAA,MAAMC,cAAc1B,GAIdsI,QAAQC,IAAI/L,KAAKgM,sBAAsBC,KAAKkG,IAAMA,EAAEC,KAAKC,IAAa,IAAPA,IAH/DrS,KAAKiS,eAAezO,GAAM,EAKzC,CACA,kBAAAwI,CAAmBsG,GAAa,GAC5B,MAAMC,EAAQ,GACd,IAAK,IAAI7F,KAAS1M,KAAK2M,QACnB4F,EAAMhQ,KAAKvC,KAAKiS,eAAevF,EAAO4F,IAE1C,IAAK,IAAIE,KAAOxS,KAAK8M,UACjB2F,MAAMnI,UAAU/H,KAAKkP,MAAMc,EAAOC,EAAIxG,mBAAmBsG,IAE7D,OAAOC,CACX,CAGA,cAAAN,CAAezO,EAAM8O,GACjB,OAAO,IAAIxG,QAAQ,CAACyD,EAASnD,KACzB,IAAIc,EAAQlN,KAAK2M,QAAQnJ,GACzB,GAAI0J,EAAO,CACP,IAAIlF,EAAahI,KAAK+M,YAAYG,EAAM1J,MACpCwE,GAAcA,EAAWpH,OAAS,GAClCZ,KAAK0S,IAAIC,EAAAA,QAAQC,SAASC,IAAK,cAAc3F,EAAM1J,mBACnDsI,QAAQC,IAAI/D,EAAW3E,IAAIyP,GAAKA,EAAEZ,SAAShF,EAAM6F,OAC5C9G,KAAKG,KAAO0G,EAAEtF,SAAWpB,MACzBH,KAAK+G,IACN,IAAIvF,GAAQ,EACZ,IAAK,IAAIiC,KAAUsD,EACf,IAAe,IAAXtD,EAAkB,CAClBjC,GAAQ,EAEJ6E,GACApF,EAAMyE,WAEV,KACJ,CAEJ3R,KAAK0S,IAAIC,EAAAA,QAAQC,SAASC,IAAK,aAAa3F,EAAM1J,yBAA0BiK,EAAQ,GAAK,gBACzF8B,EAAQrC,EAAMO,MAAQA,OAI1BzN,KAAK0S,IAAIC,EAAAA,QAAQC,SAASC,IAAK,aAAa3F,EAAM1J,4BAClD+L,EAAQrC,EAAMO,OAAQ,GAE9B,MAEIzN,KAAK0S,IAAIC,EAAAA,QAAQC,SAASC,IAAK,aAAarP,kCAC5C+L,GAAQ,IAGpB,CAEA,eAAAnC,GACI,IAAI0E,GAAQ,EACZ,IAAK,IAAI5E,KAASlN,KAAK2M,QACnB,IAAkC,IAA9B3M,KAAK2M,QAAQO,GAAO4E,MAAgB,CACpCA,GAAQ,EACR,KACJ,CAEJ,IAA0B,IAAVA,EACZ,IAAK,IAAIhI,KAAQ9J,KAAK8M,UAClB,GAAIhD,EAAKgI,MAAO,CACZA,GAAQ,EACR,KACJ,CAGR9R,KAAK8R,MAAQA,CACjB,CAEA,cAAAzE,GACI,IAAII,GAAQ,EACZ,IAAK,IAAIP,KAASlN,KAAK2M,QAEnB,GADA3M,KAAK0S,IAAIC,EAAAA,QAAQC,SAASC,IAAK,aAAa3F,iBACV,IAA9BlN,KAAK2M,QAAQO,GAAOO,MAAiB,CACrCzN,KAAK0S,IAAIC,EAAAA,QAAQC,SAASC,IAAK,IAAI3F,oBACnCO,GAAQ,EACR,KACJ,CAEJ,IAA0B,IAAVA,EACZ,IAAK,IAAI3D,KAAQ9J,KAAK8M,UAClB,IAAKhD,EAAK2D,MAAO,CACbA,GAAQ,EACR,KACJ,CAGRzN,KAAKyN,MAAQA,CACjB,CAEA,eAAAS,CAAgBpE,GACZ,IAAIpJ,EAAMV,KAAK8M,WACU,GAArBpM,EAAIsR,QAAQlI,KACZA,EAAKP,iBAAiB4H,EAAAA,wBAAyBnR,KAAKgN,uBAAuB,GAC3EtM,EAAI6B,KAAKuH,GACT9J,KAAKqN,iBACLrN,KAAKoN,kBAEb,CACA,iBAAAgB,CAAkBtE,GACd,IAAIpJ,EAAMV,KAAK8M,UAAWmG,EAAMvS,EAAIsR,QAAQlI,GACxCmJ,GAAO,IACPnJ,EAAKL,oBAAoB0H,EAAAA,wBAAyBnR,KAAKgN,uBAAuB,GAC9EtM,EAAIwS,OAAOD,EAAK,GAChBjT,KAAKqN,iBACLrN,KAAKoN,kBAEb,CACA,aAAA+F,CAAc3P,EAAM0J,GAChB,IAAIkG,EAAYpT,KAAK2M,QACjByG,EAAU5P,IAAS0J,IACnBlN,KAAKqT,gBAAgB7P,GAAM,GAC3B4P,EAAU5P,GAAQ0J,EAClBlN,KAAK0S,IAAIC,EAAAA,QAAQC,SAASC,IAAK,gBAAgBrP,aAC3C0J,aAAiBoG,aACjBpG,EAAM3D,iBAAiB4H,EAAAA,wBAAyBnR,KAAKgN,uBAAuB,GAEhFhN,KAAKmN,oBAAoB3J,GACzBxD,KAAKoN,kBAEb,CACA,eAAAiG,CAAgB7P,EAAM+P,GAAQ,GAC1B,IAAIH,EAAYpT,KAAK2M,QAAS6G,EAAUJ,EAAU5P,GAC9CgQ,aAAmBF,aACnBE,EAAQ/J,oBAAoB0H,EAAAA,wBAAyBnR,KAAKgN,uBAAuB,UAE9EoG,EAAU5P,GACbgQ,IAAqB,IAAVD,IACXvT,KAAKqN,iBACLrN,KAAKoN,kBAEb,CACA,iBAAAqG,CAAkBjQ,EAAMmD,GACpB,IAAIyM,EAAYpT,KAAK+M,YAAYvJ,GAAQxD,KAAK+M,YAAYvJ,IAAS,IACtD,GADkE4P,EAAUpB,QAAQrL,KAE7FyM,EAAU7Q,KAAKoE,GACXA,aAAqB2M,aACrB3M,EAAU4C,iBAAiB4H,EAAAA,wBAAyBnR,KAAKsN,2BAA2B,GAExFtN,KAAK0S,IAAIC,EAAAA,QAAQC,SAASC,IAAK,YAAYrP,mDAE3CxD,KAAKmN,oBAAoB3J,GAEjC,CACA,mBAAAkQ,CAAoBlQ,EAAMmD,GACtB3G,KAAK2T,qBAAqBnQ,EAAMmD,GAAW,EAC/C,CACA,oBAAAgN,CAAqBnQ,EAAMmD,EAAW4M,GAClC,IAAIH,EAAYpT,KAAK+M,YAAYvJ,GAAQxD,KAAK+M,YAAYvJ,IAAS,GAAIyE,EAAQmL,EAAUpB,QAAQrL,GAC7FsB,GAAS,IACLtB,aAAqB2M,aACrB3M,EAAU8C,oBAAoB0H,EAAAA,wBAAyBnR,KAAKsN,2BAA2B,GAE3F8F,EAAUF,OAAOjL,EAAO,GACpBsL,GACAvT,KAAKmN,oBAAoB3J,GAGrC,GAEJgC,EAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBC,WACpDJ,EAAiBK,UAAW,kBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD8G,EAAiBK,UAAW,2BAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpD5J,EAAiBK,UAAW,uBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAE4J,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBjH,UAC1D8G,EAAiBK,UAAW,iBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAE4J,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBjH,UAC1D8G,EAAiBK,UAAW,wBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAE4J,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBjH,UAC1D8G,EAAiBK,UAAW,uBAC/B9E,EAAW,CACPuO,EAAAA,SAAS,MACV9J,EAAiBK,UAAW,eAAgB,MAC/C9E,EAAW,CACP0E,EAAAA,MAAM,CAAE4J,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBpH,WAC1DiH,EAAiBK,UAAW,gBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAE4J,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBpH,WAC1DiH,EAAiBK,UAAW,gBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAE4J,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBpH,WAC1DiH,EAAiBK,UAAW,mBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCiH,EAAiBK,UAAW,kBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCiH,EAAiBK,UAAW,eAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmByJ,QACvC5J,EAAiBK,UAAW,iBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD8G,EAAiBK,UAAW,qBAC/B9E,EAAW,CACP0E,EAAAA,SACDD,EAAiBK,UAAW,mBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBpH,WACpDiH,EAAiBK,UAAW,uBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCiH,EAAiBK,UAAW,2BAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBpH,WACpDiH,EAAiBK,UAAW,qBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC8G,EAAiBK,UAAW,iBAC/BL,EAAmBzE,EAAW,CAC1BwO,EAAAA,cAAc,CAAEC,QAAS3I,EAAAA,EAAI,WAC9BrB,GCpnBH,IAAIzE,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,MAAMkO,EAAuB,6BACtB,MAAMrH,UAA0BnD,EACnC,qBAAAG,GACI1K,MAAM0K,wBACN7J,KAAKmU,8BACLnU,KAAKoU,oBAAoBpU,KAAK+S,MAClC,CACA,2BAAAoB,GACI,MAAM3Q,EAAOxD,KAAKwD,KAAMsG,EAAO9J,KAAK8J,KACpC,KAAK7E,EAAAA,MAAMC,cAAc1B,IAAUyB,EAAAA,MAAMsG,OAAOzB,IACvC9J,KAAKqU,aAAa,cACmB,QAAlCrU,KAAKsU,aAAa,aAA2D,UAAlCtU,KAAKsU,aAAa,eACrExK,EAAKqJ,cAAc3P,EAAMxD,MAEpBA,KAAKqU,aAAa,WAAU,CAC7B,MAAME,EAASzK,EAAKyE,GAAKzE,EAAKyE,IAAM,OAAStJ,EAAAA,MAAMoJ,aACnDrO,KAAK6O,aAAa,QAAS,OAAO0F,YAAiB/Q,eACvD,CAER,CACA,uBAAAoK,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,QACDxD,KAAKwU,UAAYxU,KAAKyU,aAAa3G,GACnC,MACJ,IAAK,QACIA,EAID7I,EAAAA,MAAMiM,YAAYlR,KAAM4O,EAAAA,KAAO,YAH/B3J,EAAAA,MAAMgM,SAASjR,KAAM4O,EAAAA,KAAO,YAKhC,MACJ,IAAK,QACGd,EACA7I,EAAAA,MAAMgM,SAASjR,KAAM4O,EAAAA,KAAO,UAG5B3J,EAAAA,MAAMiM,YAAYlR,KAAM4O,EAAAA,KAAO,UAEnC,MACJ,IAAK,OACD,IAAI9E,EAAO9J,KAAK8J,KACJ,MAARA,GACI+D,GACA/D,EAAKuJ,gBAAgBxF,GAE7B7N,KAAKmU,8BACL,MACJ,IAAK,OACD,IAAIO,EAAI1U,KAAKwD,KACRyB,EAAAA,MAAMC,cAAcwP,IACV,MAAP7G,GACAA,EAAIwF,gBAAgBqB,GAE5B1U,KAAKmU,8BAGjB,CACA,oBAAAhG,GACI,IAAI3K,EAAOxD,KAAKwD,KAAMsG,EAAO9J,KAAK8J,KAC7B7E,EAAAA,MAAMC,cAAc1B,IAAUyB,EAAAA,MAAMsG,OAAOzB,IAC5CA,EAAKuJ,gBAAgB7P,GACzBrE,MAAMgP,sBACV,CACA,iBAAIwG,GACA,OAAO5K,qBAAmB6K,yBAAyB5U,KAAMkU,EAC7D,CACA,mBAAAE,CAAoBtB,GAChB/I,EAAAA,mBAAmB8K,yBAAyB7U,KAAMkU,EAAsBpB,EAC5E,CACA,KAAAnI,GACI3K,KAAK+S,MAAQ/S,KAAK2U,cAElB3U,KAAK8R,OAAQ,CACjB,CACA,WAAAzF,GACIrM,KAAKoU,oBAAoBpU,KAAK+S,OAE9B/S,KAAK8R,OAAQ,CACjB,CACA,QAAAH,GACI3R,KAAK8R,OAAQ,CACjB,EAEJtM,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC0J,EAAkBvC,UAAW,oBAChC9E,EAAW,CACP0E,QAAM,CACFC,UAAW,CACP2K,QAAS,CAACC,EAAMC,IACNA,aAAmBnI,EAGlBmI,EAAQC,gCAAgCF,GAFpCA,EAIfG,YAAczO,GAASA,EAAK0O,eAGrCtI,EAAkBvC,UAAW,gBAChC9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvC6J,EAAkBvC,UAAW,gBAChC9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvC6J,EAAkBvC,UAAW,gBAChC9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC0J,EAAkBvC,UAAW,eACzB,MAAM8K,UAAyBvI,EAClC,WAAA5N,GACIE,SAAS4G,WACT/F,KAAKqV,aAAgBrM,IACjB,MAAMsM,EAAkB,CAACC,GAAM,KAEvBtQ,EAAAA,MAAMuQ,SAASxV,KAAKyV,cAAe,IAAM7G,EAAAA,KAAO,iBAC/C2G,EAAMtQ,EAAAA,MAAMgM,SAAWhM,EAAAA,MAAMiM,aAAaO,MAAMzR,KAAM,CAACA,KAAKyV,cAAe7G,EAAAA,KAAO,YAI3F,OAAQ5F,EAAInG,MACR,IAAK,QACDoC,EAAAA,MAAMgM,SAASjR,KAAM4O,EAAAA,KAAO,UAC5B0G,IACAtV,KAAK0V,eAAiB1V,KAAK+S,MAC3B,MACJ,IAAK,OACD9N,EAAAA,MAAMiM,YAAYlR,KAAM4O,EAAAA,KAAO,UARV0G,GAAgB,GAYzCtM,EAAI5J,QACJY,KAAK4T,KAAK5K,GAEVhJ,KAAKwM,cAAc,IAAImJ,WAAW3M,EAAInG,QAE9C7C,KAAK4V,cAAiB5M,IAClB,MAAM8E,EAAM9N,KAAK+S,MACjB/S,KAAK6V,SAAS7M,GAAKiD,KAAK6G,IACf9S,KAAK8V,2BAA2BhI,EAAKgF,KACtC9S,KAAKwM,cAAc,IAAIzN,EAAiB,CACpCgX,UAAW/V,KAAKwD,KAChB6L,SAAUvB,EACVsB,aAAc0D,EACdkD,aAAchW,KAAK8R,SAEvB9R,KAAK8R,OAAQ,IAElB1F,QAIPpM,KAAKiW,eAAkBjN,IACnBkN,EAAAA,uBAAuBlN,IAE3BhJ,KAAKmW,aAAgBnN,IACjB,OAAQA,EAAI8B,SACR,KAAe,GACXoL,EAAAA,uBAAuBlN,GAEnBhJ,KAAK8V,2BAA2B9V,KAAK2U,cAAe3U,KAAK0V,gBACzD1V,KAAK2K,QAGL3K,KAAK+S,MAAQ/S,KAAK0V,eAEtB1V,KAAKoW,OACL,MACJ,KAAiB,GACTpW,KAAKqW,uBACLH,EAAAA,uBAAuBlN,IAK3C,CACA,0BAAA8M,CAA2BjI,EAAKC,GAC5B,OAAOwI,EAAAA,gBAAgBzI,EAAKC,EAChC,CACA,yBAAIuI,GACA,OAAO,CACX,CACA,uBAAAzI,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,WACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,WACD,IAAK,IAAI+S,KAAcvW,KAAKwW,YACxB1I,EAAMyI,EAAW1H,aAAarL,EAAMsK,GAAOyI,EAAWE,gBAAgBjT,GAE1E,MAEJ,IAAK,WACD,IAAK,IAAI+S,KAAcvW,KAAKwW,YACxBD,EAAW1H,aAAa,WAAYf,GAExC,MACJ,IAAK,QACD9N,KAAK0W,YAAY5I,GAGzB,GAAa,aAATtK,GACY,aAATA,GACS,aAATA,EAAqB,CACxB,IAAImL,EAAY,GAAGC,EAAAA,QAAQpL,IAC3BsK,EAAM7I,EAAAA,MAAMgM,SAASjR,KAAM2O,GAAa1J,QAAMiM,YAAYlR,KAAM2O,EACpE,CACa,aAATnL,EACAxD,KAAK2W,mBAAmB7I,GAGV,aAATtK,EACLxD,KAAK4W,KAAKC,WAAW7R,IAAI,aAAc8I,EAAM,IAE/B,UAATtK,GAGLxD,KAAK4W,KAAKC,WAAW7R,IAAI,YAAa8I,KAAS9N,KAAK8R,OAAS,GAErE,CACA,mBAAAgF,CAAoBN,EAAcxW,KAAKwW,aAC9BvR,EAAAA,MAAMsG,OAAOiL,IAAiBvR,QAAMuC,QAAQgP,KAC7CA,EAAc,CAACA,IAEnB,IAAK,IAAID,KAAcC,EACnBD,EAAWhN,iBAAiB,QAASvJ,KAAKqV,cAAc,GACxDkB,EAAWhN,iBAAiB,OAAQvJ,KAAKqV,cAAc,GACvDkB,EAAWhN,iBAAiB,SAAUvJ,KAAK4V,eAAe,GAE1DW,EAAWhN,iBAAiB,UAAWvJ,KAAKiW,gBAAgB,GAC5DM,EAAWhN,iBAAiB,QAASvJ,KAAKmW,cAAc,GACxDI,EAAWhN,iBAAiB,YAAa2M,EAAAA,wBAAwB,GACjEK,EAAWhN,iBAAiB,aAAc2M,EAAAA,uBAAwB,CAAEa,SAAS,EAAOC,SAAS,GAErG,CACA,qBAAAC,CAAsBT,EAAcxW,KAAKwW,aAChCvR,EAAAA,MAAMsG,OAAOiL,IAAiBvR,QAAMuC,QAAQgP,KAC7CA,EAAc,CAACA,IAEnB,IAAK,IAAID,KAAcC,EACfvR,EAAAA,MAAMsG,OAAOgL,KAEjBA,EAAW9M,oBAAoB,aAAcyM,EAAAA,uBAAwB,CAAEc,SAAS,IAChFT,EAAW9M,oBAAoB,UAAWzJ,KAAKiW,gBAAgB,GAC/DM,EAAW9M,oBAAoB,QAASzJ,KAAKmW,cAAc,GAC3DI,EAAW9M,oBAAoB,YAAayM,EAAAA,wBAAwB,GAEpEK,EAAW9M,oBAAoB,SAAUzJ,KAAK4V,eAAe,GAC7DW,EAAW9M,oBAAoB,QAASzJ,KAAKqV,cAAc,GAC3DkB,EAAW9M,oBAAoB,OAAQzJ,KAAKqV,cAAc,GAElE,CACA,qBAAAxL,GAII,GAHA1K,MAAM0K,wBACN7J,KAAK2W,mBAAmB3W,KAAKkX,WAAY,IAEpCjS,EAAAA,MAAMC,cAAclF,KAAKuO,IAAK,CAC/B,MAAM4I,EAAQ1I,SAASpD,cAAc,aAAarL,KAAKuO,OACnD4I,EACIA,EAAM5I,GACNvO,KAAK4W,KAAKC,WAAW7R,IAAI,aAAcmS,EAAM5I,IAG7CvO,KAAK4W,KAAKC,WAAW7R,IAAI,QAASmS,EAAMC,cAI5CpX,KAAK4W,KAAKC,WAAWQ,OAAO,cAC5BrX,KAAK4W,KAAKC,WAAWQ,OAAO,SAGpC,CAEArX,KAAK8W,qBACT,CACA,oBAAA3I,GAEInO,KAAKiX,wBACL9X,MAAMgP,sBACV,CACA,KAAAmJ,GACI,MAAMrH,EAASjQ,KAAKwW,YAChBvG,GAAUA,EAAOrP,QACjBqP,EAAO,GAAGqH,OAElB,CACA,IAAAlB,GACI,MAAMnG,EAASjQ,KAAKwW,YACpB,IAAKvR,EAAAA,MAAMC,cAAc+K,GACrB,IAAK,IAAIvD,KAASuD,EACdvD,EAAM0J,MAGlB,EAEJ5Q,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCoS,EAAiB9K,UAAW,mBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCoS,EAAiB9K,UAAW,oBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCoS,EAAiB9K,UAAW,mBAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCiS,EAAiB9K,UAAW,eAC/B9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCiS,EAAiB9K,UAAW,sBACxB,MAAMiN,UAAyB5N,EAAAA,WAAWC,aAC7CwJ,GAEA,aAAAoE,GACI,OAAOzN,EAAAA,mBAAmB0N,aAAazX,KAAM0U,GAAKA,aAAagD,EACnE,CACA,aAAItE,GACA,OAAOpT,MAAKoT,CAChB,CACA,qBAAAvJ,GACI1K,MAAM0K,wBACN,MAAMuJ,EAAYpT,MAAKoT,EAAapT,KAAKwX,gBACpCvS,EAAAA,MAAMsG,OAAO6H,IACdA,EAAUuE,SAAS3X,KAE3B,CACA,oBAAAmO,GACSlJ,EAAAA,MAAMsG,OAAOvL,MAAKoT,IACnBpT,MAAKoT,EAAWwE,WAAW5X,MAE/Bb,MAAMgP,sBACV,EAEG,MAAMuJ,UAAuCtC,EAKhD,QAAAuC,CAASE,GACL,IAAIC,GAAO,EAUX,OATI7S,QAAMsG,OAAOvL,KAAKkE,OAClBlE,KAAKkE,MAAQ,CAAC2T,IAEoB,IAA7B7X,KAAKkE,MAAM8N,QAAQ6F,GACxB7X,KAAKkE,MAAM3B,KAAKsV,GAGhBC,GAAO,EAEJA,CACX,CAKA,UAAAF,CAAWC,GACP,MAAM5E,GAAOhO,QAAMsG,OAAOvL,KAAKkE,QAAUlE,KAAKkE,MAAM8N,QAAQ6F,GAC5D,OAAI5E,GAAO,IACPjT,KAAKkE,MAAMgP,OAAOD,EAAK,GAAG,IACnB,EAGf,EAEJzN,EAAW,CACP0E,EAAAA,SACDwN,EAA+BpN,UAAW,gBAC7C,IAAIyN,EAAuB,cAAmCR,IAE9D/R,EAAW,CACP0E,QAAM,CACFC,UAAW,CACP2K,QAAS,CAACC,EAAMC,KAEZ,GAAa,SAATD,EACA,OAAO,EACX,GAAa,UAATA,EACA,OAAO,EAEX,IAAIiD,EAAMC,WAAWlD,GACrB,IAAKmD,MAAMF,GACP,OAAOA,EAEX,IAAIG,EAAOlT,EAAAA,MAAMmT,MAAMnY,MAAM8U,GAC7B,OAAI9P,QAAMmT,MAAMC,OAAOF,GACZA,EACJpD,GAEXG,YAAczO,GAASA,EAAK0O,eAGrC4C,EAAqBzN,UAAW,gBACnC9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC4U,EAAqBzN,UAAW,gBACnC9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvC+U,EAAqBzN,UAAW,mBACnCyN,EAAuBvS,EAAW,CAC9BwO,EAAAA,cAAc,CAAEC,QAAS3I,EAAAA,EAAI,gBAC9ByM,GAEI,MAAMO,UAA+BZ,EACxC,WAAAzY,CAAYsZ,GAAiB,GACzBpZ,QACAa,KAAKuY,eAAiBA,EACtBvY,KAAKwY,4BAA+BxP,IAChChJ,KAAKyY,WAEb,CAKA,QAAAd,CAASE,GACL,MAAMC,EAAO3Y,MAAMwY,SAASE,GAI5B,OAHIC,GACAD,EAAKtO,iBAAiB4H,EAAAA,wBAAyBnR,KAAKwY,6BAA6B,GAE9EV,CACX,CAKA,UAAAF,CAAWC,GACP,MAAMC,EAAO3Y,MAAMwY,SAASE,GAI5B,OAHIC,GACAD,EAAKpO,oBAAoB0H,EAAAA,wBAAyBnR,KAAKwY,6BAA6B,GAEjFV,CACX,CACA,sBAAAY,CAAuBC,EAAK3Y,KAAK4Y,YAC7B,OAAOD,GAAMA,EAAGtV,IAAI+C,GAAKpG,KAAK6Y,gBAAgBzS,GAClD,CACA,QAAAqS,CAASG,EAAa5Y,KAAK0Y,uBAAuB1Y,KAAK4Y,aACnD,GAAI3T,EAAAA,MAAMsG,OAAOqN,IAAe3T,EAAAA,MAAMsG,OAAOvL,KAAK8Y,mBAC9C,OACJ,MAAMH,EAAK3Y,KAAK8Y,kBAAoBF,GAAc,GAG9C3T,EAAAA,MAAMC,cAAcyT,EAAGI,OAAO3S,GAAKpG,KAAKgZ,yBAAyB5S,MACjEpG,KAAKiZ,yBAAyBN,EACtC,CACA,wBAAAM,CAAyBL,GACrB5Y,KAAK+S,WAAQrI,CACjB,CAMA,cAAAwO,CAAerB,EAAM9E,EAAQ/S,KAAK+S,OAC9B,GAAI9N,EAAAA,MAAMC,cAAc6N,GACpB,OAAO,EAEX,MAAMD,EAAI9S,KAAKmZ,iBAAiBtB,GAAO/R,EAAI9F,KAAKoZ,UAChD,OAAIpZ,KAAKuY,gBAAkBtT,QAAMuC,QAAQuL,IAC7B9N,EAAAA,MAAMsG,OAAOwH,EAAMsG,KAAKvY,GAEhCA,GAA4BgS,GAAyC,iBAANhS,IAAmBmE,QAAMC,cAAcY,IAAMA,KAAKgN,GAAKhN,KAAKhF,GAAKgS,EAAEhN,IAAYhF,EAAEgF,MAC1I9F,KAAKuY,iBACJxF,GAAeD,GAAuB,iBAAVC,IAAuB9N,EAAAA,MAAMC,cAAcY,IAAMA,KAAKgN,GAAKhN,KAAKiN,GAASD,EAAEhN,IAAYiN,EAAMjN,GAKxI,CAMA,wBAAAkT,CAAyBnB,EAAM9E,EAAQ/S,KAAK+S,OACxC,GAAI9N,EAAAA,MAAMC,cAAc6N,GACpB,OAAO,EAEX,GAAI8E,EAAKpM,SACL,OAAO,EAEX,MAAM3F,EAAI9F,KAAKoZ,UACf,GAAIpZ,KAAKuY,gBAAkBtT,EAAAA,MAAMuC,QAAQuL,GAAQ,CAE7C,IAAIuG,EAAQvG,EAAMsG,KAAKvY,GAAKA,GAAW+W,EAAK9E,OAAuB,iBAANjS,IAAmBmE,EAAAA,MAAMC,cAAcY,IAAMA,KAAKhF,IAAMmE,EAAAA,MAAMC,cAAc2S,EAAK9E,QAAUjN,KAAK+R,EAAK9E,OAASjS,EAAEgF,IAAY+R,EAAK9E,MAAMjN,IACpM,OAAQb,EAAAA,MAAMsG,OAAO+N,EACzB,CACK,OAAKtZ,KAAKuY,iBAAmBtT,EAAAA,MAAMC,cAAc2S,EAAK9E,SAChDA,GAAe8E,EAAK9E,OAA2B,iBAAVA,IAAuB9N,EAAAA,MAAMC,cAAcY,IAAMA,KAAKiN,IAAU9N,QAAMC,cAAc2S,EAAK9E,QAAUjN,KAAK+R,EAAK9E,OAASA,EAAMjN,IAAY+R,EAAK9E,MAAMjN,GAKvM,CACA,gBAAAqT,CAAiBpJ,GACb,GAAc,MAAVA,EACA,KAAM,wBAGV,GAAIA,aAAkBgI,EAClB,OAAOhI,EAAOgD,MAGlB,IAAoBtM,EAAhBsM,EAAQhD,EAIZ,OAHItJ,EAAOzG,KAAKuZ,iBACZxG,EAAQhD,EAAOtJ,IAEZsM,CACX,CACA,oBAAAyG,CAAqBzJ,GACjB,GAAc,MAAVA,EACA,KAAM,wBAEV,GAAIA,aAAkBgI,EAClB,OAAOhI,EAAOoH,OAASpH,EAAOgD,MAGlC,IAAmCtM,EAA/B+N,EAAYzE,EAAOoF,WAIvB,OAHI1O,EAAOzG,KAAKyZ,gBACZjF,EAAYzE,EAAOtJ,IAEhB+N,CACX,CACA,eAAAqE,CAAgB9I,GACZ,GAAc,MAAVA,EACA,KAAM,wBAGV,GAAIA,aAAkBgI,EAClB,MAAO,CAAEhF,MAAOhD,EAAOgD,MAAOyB,UAAWzE,EAAOoH,OAASpH,EAAOgD,MAAOtH,SAAUsE,EAAOtE,SAAUiO,KAAM3J,GAG5G,IAAItE,GAAW,EACf,MAAMkO,EAAe3Z,KAAK4Z,iBAI1B,OAHK3U,EAAAA,MAAMC,cAAcyU,KACrBlO,EAAWsE,EAAO4J,KAAiB,GAEhC,CAAE5G,MAAO/S,KAAKmZ,iBAAiBpJ,GAASyE,UAAWxU,KAAKwZ,qBAAqBzJ,GAAStE,SAAUA,EAAUiO,KAAM3J,EAC3H,CACA,uBAAAnC,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,aACL,IAAK,eACL,IAAK,mBACL,IAAK,gBACDqW,qBAAqB7Z,KAAK8Z,SAC1B9Z,KAAK8Z,QAAUC,sBAAsB,KACjC/Z,KAAKyY,WAELzY,KAAKwU,UAAYxU,KAAKyU,aAAazU,KAAK+S,SAE5C,MACJ,IAAK,QACD8G,qBAAqB7Z,KAAKga,cAC1Bha,KAAKga,aAAeD,sBAAsB,KACtC/Z,KAAK4Y,WAAa5Y,KAAKkE,QAIvC,CACA,YAAAuQ,CAAa3G,GACT,IAAI7I,QAAMC,cAAclF,KAAK4Y,YAG7B,OAAO5Y,KAAK4Y,WAAWG,OAAO3S,GAAKpG,KAAKkZ,eAAe9S,IAAI/C,IAAI+C,GAAKpG,KAAKwZ,qBAAqBpT,IAAI6T,KAAK,KAC3G,CACA,+BAAAhF,CAAgCF,GAC5B,OAAI/U,KAAKuY,eACExD,EAAKmF,MAAM,KAAK7W,IAAI+C,GAAKA,EAAE+T,QAE/BpF,CACX,CACA,0BAAAe,CAA2BjI,EAAKC,GAC5B,OAAOwI,EAAAA,gBAAgBzI,EAAKC,EAChC,EAEJtI,EAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpDyE,EAAuBhO,UAAW,qBACrC9E,EAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpDmV,EAAuBhO,UAAW,wBACrC9E,EAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpDmV,EAAuBhO,UAAW,uBACrC9E,EAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpDmV,EAAuBhO,UAAW,2BACrC9E,EAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpDmV,EAAuBhO,UAAW,oBACrC9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmByJ,QACvCyE,EAAuBhO,UAAW,4BACrC9E,EAAW,CACPuO,EAAAA,UAAS,IACVuE,EAAuBhO,UAAW,WAAY,MClmBjD,IAAI9E,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAGO,MAAMoU,EAAqB,IAAI9O,EAAAA,8LAA8LA,EAAAA,gBACpO,IAAI+O,EAAwB,cAAoC1Q,EAAAA,WAAWC,aACvE,QAAA0Q,CAASxH,GACL,MAAMyH,EAAIva,KAAKwa,QAAQ1H,GACvB,QAAI9S,KAAKya,UAAY,GAAKF,EAAIva,KAAKya,cAE/Bza,KAAK0a,UAAY,GAAKH,EAAIva,KAAK0a,UAGvC,CACA,OAAAF,CAAQG,GACJ,OAAQA,GAAKA,EAAE/Z,QAAW,CAC9B,GAEJ4E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvCsX,EAAsB/P,UAAW,oBACpC9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvCsX,EAAsB/P,UAAW,oBACpC9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCkX,EAAsB/P,UAAW,iBACpC+P,EAAwB7U,EAAW,CAC/BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,cACbsP,OAAQC,EAAAA,SAASC,gBACjBC,SAAU,IAAIzP,oBAAkBsD,EAAAA,gIACjCtD,EAAAA,qDAAqDsD,sDAAoDtD,EAAAA,iBACzGA,EAAAA,iBAAiBsD,0EAAwEtD,EAAAA,iBACzFA,EAAAA,qDAAqDsD,sDAAoDtD,EAAAA,cAC5GA,EAAAA,cAED+O,GCzCH,IAAI7U,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAMA,MAAMgV,EAAsB,UACtBC,EAAgB,cACtB,MAAMC,UAAmClc,EAAAA,iBACrC,WAAAC,CAAY6P,GACR3P,MAAM,wBAAyB,CAAE2P,KAAMA,GAC3C,EAEG,MAAMqM,UAA2C5D,EACpD,WAAAtY,GACIE,SAAS4G,WACT/F,KAAKob,4BAA+BpS,IAChC,MAAM1F,EAAI0F,EAAIE,OACdlJ,KAAKqb,iCAAiC/X,EAAE2J,aAAc3J,EAAE+L,SAAU/L,EAAE8L,aAAc9L,EAAE0S,aAE5F,CACA,WAAAsF,IAAepc,GACX,MAAMqc,EAAKvb,KACPub,EAAG9P,UAGP8P,EAAG5a,KAAK8Q,MAAM8J,EAAIrc,GAAM+M,KAAKG,IACzBmP,EAAG/O,cAAc,IAAIhE,MAAMwS,KAC5B9a,IACCqB,QAAQwP,MAAM7Q,IAEtB,CACA,iBAAAsb,GACIrc,MAAMqc,oBACNvW,EAAAA,MAAMgM,SAASjR,KAAM4O,EAAAA,KAAO,2BAChC,CACA,qBAAA/E,GACI1K,MAAM0K,wBACN,MAAM4R,EAAMzb,KAAKoT,UACZnO,EAAAA,MAAMsG,OAAOkQ,KACdzb,KAAK0b,eAAiBD,EAAIC,eAC1BD,EAAIlS,iBAAiB4H,EAAAA,wBAAyBnR,KAAKob,6BAA6B,GAExF,CACA,oBAAAjN,GACI,MAAMsN,EAAMzb,KAAKoT,UACZnO,EAAAA,MAAMsG,OAAOkQ,IACdA,EAAIhS,oBAAoB0H,EAAAA,wBAAyBnR,KAAKob,6BAA6B,GAEvFjc,MAAMgP,sBACV,CACA,gCAAAkN,CAAiC7X,EAAMqK,EAAKC,EAAKC,GAChC,UAATvK,IACAxD,KAAK2b,MAAQ7N,EAErB,EAQJ,SAAS8N,EAAcC,GACnB,OAAOA,aAAeV,GAAsC,kBAAmBU,GAAuC,mBAAzBA,EAAmB,aACpH,CACA,SAASC,EAAUC,GACf,OAAOA,GAAMC,UAAYC,KAAKC,YAClC,CAXA1W,EAAW,CACP0E,EAAAA,SACDiR,EAAmC7Q,UAAW,gBACjD9E,EAAW,CACP0E,EAAAA,SACDiR,EAAmC7Q,UAAW,yBAOjD,IAAI6R,EAA8B,cAA0CzE,EACxE,WAAAzY,GACIE,MAAM,oBACNa,KAAKoc,cAAiBpT,IAClBhJ,KAAKqc,4BAETrc,KAAKsc,aAAgBtT,IAEjB,MAAMoK,EAAYpT,KAAKuc,WACvB,IAAK,IAAIzU,KAAW9H,KAAKkE,MACrB4D,EAAQ0U,QAAQpJ,GAEpBpT,KAAKyc,qBAAqBzT,IAE9BhJ,KAAK0c,cAAiB1T,IAElBA,EAAI2T,iBACJ,MAAMhB,EAAQ3b,KAAK2b,MAAOiB,EAAQ5T,EAAI6T,cAAcD,MACpD,GAAK3X,EAAAA,MAAMsG,OAAOoQ,IAA2B,IAAjBiB,EAAMhc,OAS9B,IAAK,IAAIE,EAAI,EAAGA,EAAI8b,EAAMhc,OAAQE,IAAK,CACnC,MAAMqL,EAAIyQ,EAAM/E,KAAK/W,GACrB,IAAK,IAAIgc,KAAO9c,KAAKkE,MACb0X,EAAckB,IACdA,EAAIC,cAAc5Q,GAAGF,KAAKG,GAAKpM,KAAKyc,qBAAqBzT,GAAMoD,MAG3E,KAhB4C,CAC5C,MACM4Q,EADOhU,EAAI6T,cAAcI,QAAQ,cAChBC,QAAQ,MAAO,QAAQA,QAAQ,OAAQ,UACxDC,EAAOxB,EAAMyB,yBAAyBJ,GAC5CrB,EAAM0B,iBACN1B,EAAM2B,WAAWH,GACjBnd,KAAKyc,qBAAqBzT,EAC9B,GAaJhJ,KAAKud,iBAAoBvU,IAEjBA,EAAIgC,UAA+D,IAApD,CAAC,IAAK,IAAK,KAAKgH,QAAQhJ,EAAIrD,KAAKlB,gBAEhDuE,EAAI2T,kBAGZ3c,KAAKwd,cAAiBxU,IAClBhJ,KAAKyd,kBACLzd,KAAKyc,qBAAqBzT,IAE9BhJ,KAAKyc,qBAAwBzT,IACzB,MAAMoK,EAAYpT,KAAKuc,WAAYmB,EAAYtK,EAAUrE,UACzD,IAAID,EAAO4O,GACPzY,EAAAA,MAAMC,cAAcwY,IACH,SAAdA,GACAA,IAAczC,KACjB7H,EAAUrE,UAAYkM,EACtBnM,EAAO,IAEPA,GAAQ9O,KAAK+S,QACb/S,KAAK4V,cAAc,IAAIsF,EAA2BpM,IAC9C9O,KAAK+S,OAAS/S,MAAK2d,EAASnK,SAC5BxT,KAAK4d,kBAIb5d,KAAK6d,sBAET7d,KAAK8d,wBAA2B9U,IAC5B,MAAM+U,EAAYtP,SAASuP,eAC3B,GAAID,GAAaA,EAAUE,YAAcje,KAAKuc,WAAW2B,SAASH,EAAUE,YAAa,CACrF,MAAMtC,EAAQoC,EAAUI,WAAW,GACnCne,KAAK2b,MAAQA,EAAMyC,YACvB,MAEIpe,KAAK2b,MAAQ,KAIzB,CACAgC,GACA,WAAIA,GACA,OAAO3d,MAAK2d,CAChB,CACA,KAAAhT,GACIxL,MAAMwL,QACN3K,MAAK2d,EAAShT,QACd3K,KAAK6d,oBACT,CACA,kBAAAA,GACI,MAAMQ,EAAIre,MAAK2d,EACf3d,KAAKwM,cAAc,IAAI2C,EAAAA,oBAAoB,CAAElC,aAAc,UAAWoC,SAAUgP,EAAGjP,aAAciP,IACrG,CACA,+BAAApJ,CAAgCF,GAC5B,OAAOA,CACX,CACA,kBAAA4B,CAAmBO,GACflX,KAAKse,WAAWC,OAASrH,EACrBA,EACAlX,KAAKuc,WAAW9F,gBAAgB,oBAGhCzW,KAAKuc,WAAW1N,aAAa,kBAAmB,QAChDJ,SAAS6M,YAAY,6BAA6B,EAAO,KAEjE,CACA,QAAA3D,CAASE,GACL,QAAI1Y,MAAMwY,SAASE,KACfA,EAAKtO,iBAAiByR,EAAqBhb,KAAKyc,sBAAsB,IAC/D,EAGf,CACA,UAAA7E,CAAWC,GACP,QAAI1Y,MAAMyY,WAAWC,KACjBA,EAAKpO,oBAAoBuR,EAAqBhb,KAAKyc,sBAAsB,IAClE,EAGf,CAEA,yBAAIpG,GACA,OAAO,CACX,CACA,eAAIG,GACA,MAAO,CAACxW,KAAKuc,WACjB,CACA,kBAAIb,GACA,OAAO1b,KAAKuc,UAChB,CACA,QAAA1G,CAAS7M,GACL,OAAO,IAAI8C,QAAQ,CAACyD,EAASC,KACzB,GAAIgP,mBAAiBC,aAAazV,EAAKkS,GAA6B,CAEhE3L,EADavP,KAAK+S,MAAQ/J,EAAIE,OAAO4F,MAGrC9O,KAAK8d,wBAAwB9U,EACjC,MAEIuG,EAAQvP,KAAK+S,QAEzB,CACA,eAAA0K,GACI,MAAM9B,EAAQ3b,KAAK2b,MAAO+C,EAAe3C,IACrCA,EAAK4C,WAAWtV,QAAQjD,GAAKsY,EAAYtY,IACrC0V,EAAUC,IAA0B,SAAjBA,EAAK9H,QACxB5J,QAAQC,UAAUsU,YAAYnN,MAAMsK,EAAMtJ,MAAMoM,KAAK9C,EAAK4C,aAErD5C,aAAgBzI,aACrByI,EAAKtF,gBAAgB,UASxBxR,EAAAA,MAAMsG,OAAOoQ,IAPV,CAACI,IACL,IAAI/G,EAAU+G,EACTD,EAAU9G,KACXA,EAAU+G,EAAKtG,eAEnBiJ,EAAY1J,IAGZ8J,CAAGnD,EAAMoD,wBAEjB,CACA,wBAAA1C,GACI,MAAM2C,EAAYhf,KAAKuc,WAAY0C,EAAQD,EAAUL,WAAYO,EAAaD,EAAMre,OACpF,GAAkB,GAAdse,GAAmBF,EAAUjQ,YAAckM,EAC3C+D,EAAUjQ,UAAYkM,MAErB,CACD,IAAIc,EAAMJ,EACV,MAAMwD,EAAczK,IAChBiH,EAAMyD,YAAY1K,GAClB,MAAMpR,EAAImL,SAASC,cAAc,KACjCiN,EAAM0D,iBAAiB/b,IAE3B,IAAK,IAAIxC,EAAI,EAAGA,EAAIoe,EAAYpe,IAC5Bib,EAAOkD,EAAMpH,KAAK/W,GACZib,aAAgB1R,QAMbsR,IACLwD,EAAWpD,EAAKuD,iBAChB3D,EAAQ,MAPJ1W,EAAAA,MAAMsG,OAAOoQ,KACbA,EAAQlN,SAAS8Q,cACjB5D,EAAM6D,eAAezD,IAS5B9W,EAAAA,MAAMsG,OAAOoQ,IACdwD,EAAWpD,EAEnB,CACJ,CACA,cAAA6B,GACI5d,MAAK2d,EAASpb,KAAKvC,KAAK+S,OACxB/S,KAAK6d,oBACT,CACA,WAAAnH,CAAY5I,GACH7I,EAAAA,MAAMsG,OAAOvL,KAAKuc,aAA0GzO,GAAO9N,KAAKuc,WAAWxN,YACpJ/O,KAAKuc,WAAWxN,UAAYjB,EAEpC,CACA,qBAAAjE,GACI1K,MAAM0K,wBACN,MAAMuJ,EAAYpT,KAAKuc,WACvBvc,MAAK2d,EAAW,IAAI8B,iBAAezf,KAAK+S,OACxCK,EAAU7J,iBAAiB,OAAQvJ,KAAKsc,cAAc,GACtDlJ,EAAU7J,iBAAiB,UAAWvJ,KAAKud,kBAAkB,GAC7DnK,EAAU7J,iBAAiB,QAASvJ,KAAKoc,eAAe,GACxDhJ,EAAU7J,iBAAiB,QAASvJ,KAAKwd,eAAe,GACxDpK,EAAU7J,iBAAiB,QAASvJ,KAAK0c,eAAe,GACxDjO,SAASlF,iBAAiB,kBAAmBvJ,KAAK8d,yBAAyB,EAC/E,CACA,oBAAA3P,GACIM,SAAShF,oBAAoB,kBAAmBzJ,KAAK8d,yBAAyB,GAC9E,MAAM1K,EAAYpT,KAAKuc,WAClBtX,EAAAA,MAAMsG,OAAO6H,KACdA,EAAU3J,oBAAoB,UAAWzJ,KAAKud,kBAAkB,GAChEnK,EAAU3J,oBAAoB,OAAQzJ,KAAKsc,cAAc,GACzDlJ,EAAU3J,oBAAoB,QAASzJ,KAAKoc,eAAe,GAC3DhJ,EAAU3J,oBAAoB,QAASzJ,KAAKwd,eAAe,GAC3DpK,EAAU3J,oBAAoB,QAASzJ,KAAK0c,eAAe,IAE/Dvd,MAAMgP,sBACV,CACA,YAAAsG,CAAa3G,GACT,OAAOA,CACX,GAEJtI,EAAW,CACPka,EAAAA,UAAU,eACXvD,EAA4B7R,UAAW,qBAC1C9E,EAAW,CACPka,EAAAA,UAAU,mBACXvD,EAA4B7R,UAAW,qBAC1C9E,EAAW,CACP0E,EAAAA,SACDiS,EAA4B7R,UAAW,gBAC1C9E,EAAW,CACPuO,EAAAA,SAAS,MACVoI,EAA4B7R,UAAW,iBAAkB,MAC5D6R,EAA8B3W,EAAW,CACrCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,mBAAoBsP,OAAQC,EAAAA,SAASC,gBAClDC,SAAU,eAAenM,0BAAwBA,EAAAA,2FAEjDwL,4BAED9O,EAAAA,eAAeA,0BAGnB6Q,GCpUH,IAAI3W,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIO,MAAM2Z,UAAiDxE,EAC1D,OAAAqB,CAAQpQ,GAER,CACA,uBAAAwB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACjC,UAATvK,IACAxD,KAAK4f,QAAU3a,QAAMsG,OAAOuC,GAEpC,CACA,UAAA+R,CAAWC,EAAU9f,KAAK8f,QAASC,EAAW/f,KAAKggB,kBAC/C,MAAMC,EAAOH,EACb,OAAI7a,EAAAA,MAAMC,cAAc6a,GACbE,EAEJ,GAAGA,MAASF,IACvB,EAEJva,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCwc,EAAyCrV,UAAW,eACvD9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCwc,EAAyCrV,UAAW,2BACvD9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCwc,EAAyCrV,UAAW,kBACvD9E,EAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvC2c,EAAyCrV,UAAW,iBAChD,MAAM4V,EAAwC,IAAI5U,EAAAA,oOAAoOA,EAAAA,0DAA0DA,EAAAA,YAAYA,oCAC7UA,iKAA+JA,EAAAA,cCxCrL,IAAI9F,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,IAAIma,EAA4C,cAAwDR,EACpG,IAAAhf,GACI,OAAO,IAAImL,QAAQ,CAACyD,EAASnD,KACzB,MAAMuR,EAAU3d,KAAKoT,WAAWuK,QAChC,IAAK1Y,EAAAA,MAAMsG,OAAOoS,GAAU,CACxB,GACS,SADD3d,KAAK8H,QAED6V,EAAQyC,UACRzC,EAAQ0C,OACR9Q,UAIAoO,EAAQ2C,UACR3C,EAAQ4C,OACRhR,KAIZvP,KAAK0b,eAAe3M,UAAY4O,EAAQnK,OAC5C,GAER,CACA,UAAAgN,CAAWpU,GACP,OAAO,CACX,CACA,uBAAAwB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GAErC,YADDvK,EAEAxD,KAAKygB,KAAOzgB,KAAKygB,MAAQ3S,EACzB9N,KAAK8f,QAAUhS,EACf9N,KAAKggB,iBAAmBhgB,KAAKggB,kBAAqB,SAAmB,SAARlS,EAAiB,IAAM,IAGhG,CACA,gCAAAuN,CAAiC7X,EAAMqK,EAAKC,EAAKC,GAC7C5O,MAAMkc,iCAAiC7X,EAAMqK,EAAKC,EAAKC,GACvD,MAAMjI,EAAI9F,KAAKoT,UAAWiL,EAAIvY,EAAE6X,QACnB,UAATna,GAA6B,YAATA,IAEpBxD,KAAK4f,QAAU3a,EAAAA,MAAMsG,OAAOzF,EAAE6V,SACP,SAAjB3b,KAAK8H,SAAsBuW,GAAG+B,SAA8B,SAAjBpgB,KAAK8H,SAAsBuW,GAAGiC,SAEvF,GAEJ9a,EAAW,CACP0E,QAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,OAAQ2Q,aAAa,KACzEqM,EAA0C7V,UAAW,kBACxD6V,EAA4C3a,EAAW,CACnDwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,kCAAmCsP,OAAQC,EAAAA,SAASC,gBACjEC,SAAUmF,KAEfC,GC/DH,IAAI3a,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,IAAI0a,EAAyC,cAAqDf,EAC9F,UAAAa,CAAW7E,GACP,OAAQ1W,EAAAA,MAAMsG,OAAOoV,GAAqBC,oBAAoBjF,EAAOkF,mBACzE,CACA,qBAAAhX,GACI1K,MAAM0K,wBACF5E,QAAMC,cAAclF,KAAK8f,WACzB9f,KAAK8f,QAAU,eAEf7a,QAAMC,cAAclF,KAAKygB,QACzBzgB,KAAKygB,KAAO,eAEZxb,QAAMC,cAAclF,KAAKggB,oBACzBhgB,KAAKggB,iBAAmB,SAEhC,CACA,IAAArf,CAAKmgB,EAAKpb,EAAS1F,KAAK0F,QACpB,OAAO,IAAIoG,QAAQ,CAACyD,EAASC,KACzB,IAAIuO,EAAY/d,KAAK2b,MACjBsC,EAAa0C,GAAqBC,oBAAoB7C,EAAW8C,mBAEjErN,EAAU,UACVuN,EAAQ,sBAKZ,GAJI9C,GAAc8C,EAAMC,KAAK/C,EAAWgD,aACpCzN,EAAUuN,EAAMpgB,KAAKsd,EAAWgD,WAAW,IAGnC,YAARH,EACA,MAAkB,WAAXtN,EAAuB,GAAKA,EAEvC,IAAI0N,EAAOJ,QAAgB,IAARA,GAAkBK,OAAOC,OAAO,0BAA2B5N,GACzE0N,GAIDzS,SAAS6M,YAAY,cAAc,EAAO4F,IAC1CjD,EAAa0C,GAAqBC,oBAAoB7C,EAAW8C,qBAE7D5C,EAAWpP,aAAa,SAAUnJ,GAAU,WANhD+I,SAAS6M,YAAY,UASzB/L,KAER,GAEJ/J,EAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpDud,EAAuCpW,UAAW,iBACrDoW,EAAyClb,EAAW,CAChDwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,+BAAgCsP,OAAQC,EAAAA,SAASC,gBAC9DC,SAAUmF,KAEfQ,GC/DH,IAAIlb,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAkBA,SAASqb,GAAc1F,EAAO2F,GAC1B,OAAO,IAAIxV,QAAQ,CAACyD,EAASC,KACzBvK,EAAAA,MAAMsc,cAAcD,GACfrV,KAAKhH,EAAAA,MAAMuc,WACXvV,KAAKwV,IACN,MAAMC,EAAMjT,SAASC,cAAc,WACnCgT,EAAI7S,aAAa,kBAAmB,SACpC4S,EAAIE,SAAW,EACfD,EAAI1S,YAAYyS,GAChB9F,EAAM0B,iBACN1B,EAAM2B,WAAWoE,GACjBnS,EAAQmS,MAGpB,CACA,IAAIE,GAA0C,cAAsDjC,EAChG,WAAA1gB,GACIE,SAAS4G,WACT/F,KAAK6hB,oBAAuB7Y,IACxB,MAAwB0Y,EAAZ1Y,EAAItD,OAAkB+P,cAElCzV,KAAK2b,MAAQgF,GAAqBmB,OAAOJ,IAE7C1hB,KAAK+hB,wBAA2B3V,KAGpC,CACA,aAAA2Q,CAAc5Q,GACV,OAAIA,EAAEtJ,KAAKmf,WAAW,SACXX,GAAcrhB,KAAK2b,MAAOxP,GAG1BL,QAAQ0D,QAEvB,CACA,OAAAgN,CAAQ3b,GACJA,EAAQohB,iBAAiB,kCAAkC5Y,QAAQqY,IAE/D,IAAK,IAAI5gB,EADU4gB,EAAI/C,WAAW/d,OACR,EAAGE,EAAI,EAAGA,IAEhC4gB,EAAI/C,WAAW9G,KAAK/W,GAAGuW,WAI/BxW,EAAQohB,iBAAiB,OAASrT,OAAO,YAAYvF,QAAQjD,GAAKA,EAAEiR,SACxE,CACA,UAAAmJ,CAAW7E,GACP,OAAO,CACX,CACA,qBAAA9R,GACI1K,MAAM0K,wBACF5E,QAAMC,cAAclF,KAAK8f,WACzB9f,KAAK8f,QAAU,gBAEf7a,QAAMC,cAAclF,KAAKygB,QACzBzgB,KAAKygB,KAAO,gBAEZxb,QAAMC,cAAclF,KAAKggB,oBACzBhgB,KAAKggB,iBAAmB,gBAE5BhgB,KAAKkiB,SAAS3Y,iBAAiB,UAAWvJ,KAAKmiB,aAAa,EAChE,CACA,oBAAAhU,GACSlJ,EAAAA,MAAMsG,OAAOvL,KAAKkiB,YACnBliB,KAAKkiB,SAASzY,oBAAoB,UAAWzJ,KAAKmiB,aAAa,GAC/DniB,KAAKoiB,qBAETjjB,MAAMgP,sBACV,CACA,uBAAAP,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,WACIyB,EAAAA,MAAMsG,OAAOvL,KAAKkiB,YACnBliB,KAAKkiB,SAASzW,SAAWqC,GAE7B,MACJ,IAAK,iBACGD,GACA7N,KAAKoiB,kBAAkBvU,GAEvBC,GACA9N,KAAKqiB,eAAevU,GAExB,MACJ,IAAK,QACD9N,KAAKsiB,qBAAqBzU,EAAKC,GAG3C,CACA,IAAAnN,GACI,OAAO,IAAImL,QAAQ,CAACyD,EAASC,KACzB,MAAM+S,EAAOviB,KAAKwiB,MAAO7G,EAAQ3b,KAAK2b,MACtC4G,EAAKE,SAAYzZ,IACb,MAAMmD,EAAIoW,EAAK3F,MAAM,GACjB3X,EAAAA,MAAMsG,OAAOY,GACboD,IAGA8R,GAAc1F,EAAOxP,GAChBF,KAAKyV,IACNa,EAAKxP,MAAQ,GACbxD,OAIZgT,EAAK7W,SAEb,CAEA,WAAAyW,CAAYnZ,GACRA,EAAI2T,iBACJ,MAAM+E,EAAM1Y,EAAIE,OAAO8L,QAAS0N,EAAO1Z,EAAIE,OAAOyZ,WAAYlB,EAAMC,EAAIxS,kBACxEuS,EAAImB,MAAMC,MAAQH,EAAKG,MAAQ,KAC/BpB,EAAImB,MAAME,OAASJ,EAAKI,OAAS,IACrC,CACAC,GACA,oBAAAT,CAAqBzU,EAAKC,GACtB,IAAK7I,EAAAA,MAAMsG,OAAOsC,KACVA,EAAImV,WACLnV,EAAIkR,mCAAmC1U,SACvCwD,EAAIkR,0BAA4BlR,EAAIoV,gBACpCpV,EAAIkR,0BAA4BlR,EAAIqV,cACpCrV,EAAIsV,cAAiBtV,EAAIuV,UAAY,EAAI,CAC5C,MAAMC,EAAKxV,EAAIkR,wBAAwBJ,WAAW9G,KAAKhK,EAAIsV,aACvDE,aAAcC,oBACdtjB,KAAKkiB,SAAStK,WAAWyL,EAEjC,CACA,IAAKpe,EAAAA,MAAMsG,OAAOuC,KACVA,EAAIkV,WACLlV,EAAIiR,mCAAmC1U,SACvCyD,EAAIiR,0BAA4BjR,EAAImV,gBACpCnV,EAAIiR,0BAA4BjR,EAAIoV,cACpCpV,EAAIqV,cAAiBrV,EAAIsV,UAAY,EAAI,CAC5C,MAAMC,EAAKvV,EAAIiR,wBAAwBJ,WAAW9G,KAAK/J,EAAIqV,aACvDE,aAAcC,oBACdtjB,KAAKkiB,SAASvK,SAAS0L,EAE/B,CACJ,CACA,sBAAAE,CAAuB7B,GACfA,EAAIxS,oBACJwS,EAAIxS,kBAAkB3F,iBAAiB,QAASvJ,KAAK6hB,qBAAqB,GAC1EH,EAAIxS,kBAAkB3F,iBAAiB,OAAQvJ,KAAK+hB,yBAAyB,GAErF,CACA,wBAAAyB,CAAyB9B,GACjBA,EAAIxS,oBAEJwS,EAAIxS,kBAAkBzF,oBAAoB,QAASzJ,KAAK6hB,qBAAqB,GAC7EH,EAAIxS,kBAAkBzF,oBAAoB,OAAQzJ,KAAK+hB,yBAAyB,GAExF,CACA,cAAAM,CAAe3G,EAAiB1b,KAAK0b,gBACjC1b,MAAK+iB,EAAY,IAAIU,GAA2B/H,EAAgB,CAACgG,EAAKgC,KAC9DhC,aAAe4B,qBACXI,EACA1jB,KAAKwjB,yBAAyB9B,GAG9B1hB,KAAKujB,uBAAuB7B,KAGrC,UACP,CACA,iBAAAU,CAAkBhW,EAAIpM,KAAK0b,gBACvB,MAAMqH,EAAW/iB,MAAK+iB,EACjB9d,EAAAA,MAAMsG,OAAOwX,IACdA,EAASY,SAEjB,GAEJne,GAAW,CACPka,EAAAA,UAAU,qBACXkC,GAAwCtX,UAAW,gBACtD9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,aACfsW,GAAwCtX,UAAW,mBACtDsX,GAA0Cpc,GAAW,CACjDwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,gCAAiCsP,OAAQC,EAAAA,SAASC,gBAC/DC,SAAU,gGAAgGnM,EAAAA,mBAAmBA,EAAAA,4BACzHsR,EAAwC,IAAI5U,EAAAA,uCAAuCA,EAAAA,gBAE5FsW,IChNH,IAUWgC,GAVPpe,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EA4BA,SAAS6d,GAAoB/G,GACzB,MAAMgH,EAAYhH,GAAK1a,cACvB,OAAQ0hB,GACJ,IAAK,OACL,IAAK,SACD,MAAO,UAAYA,EACvB,IAAK,YACD,MAAO,oBACX,IAAK,gBACD,MAAO,kBACX,IAAK,oBACD,MAAO,uBACX,IAAK,sBACD,MAAO,uBACX,IAAK,cACL,IAAK,eACL,IAAK,gBACD,MAAO,gBAAkBA,EAAUC,OAAO,GAC9C,IAAK,cACD,MAAO,uBACX,QACI,MAAO,eAEnB,CACA,SAASC,GAAuBlH,EAAKmH,GACjC,MAAMH,EAAYhH,GAAK1a,cACvB,OAAQ0hB,GACJ,IAAK,OACD,MAAO,CAAC,IAAK,UACjB,IAAK,SACD,MAAO,CAAC,IAAK,MACjB,IAAK,YACD,MAAO,CAAC,KACZ,IAAK,gBACD,MAAO,CAAC,SAAU,IAAK,OAC3B,IAAK,oBACD,MAAO,CAAC,MACZ,IAAK,sBACD,MAAO,CAAC,MACZ,IAAK,cACD,MAAO,CAAC,CAAElB,MAAO,CAAEpf,KAAM,aAAcuP,MAAO,UAClD,IAAK,eACD,MAAO,CAAC,CAAE6P,MAAO,CAAEpf,KAAM,aAAcuP,MAAO,WAClD,IAAK,gBACD,MAAO,CAAC,CAAE6P,MAAO,CAAEpf,KAAM,aAAcuP,MAAO,YAClD,IAAK,cACD,MAAO,CAAC,CAAE6P,MAAO,CAAEpf,KAAM,aAAcuP,MAAO,aAClD,IAAK,cACD,MAAO,CAACkR,GACZ,QACI,MAAO,CAAC,QAEpB,EA1EA,SAAWL,GACPA,EAAuB,KAAI,OAC3BA,EAAyB,OAAI,SAC7BA,EAA4B,UAAI,YAChCA,EAAgC,cAAI,gBACpCA,EAA8B,YAAI,oBAClCA,EAAgC,cAAI,sBACpCA,EAA8B,YAAI,cAClCA,EAAgC,cAAI,gBACpCA,EAA+B,aAAI,eACnCA,EAA8B,YAAI,aAMrC,CAhBD,CAgBGA,KAAqBA,GAAmB,CAAA,IA2D3C,IAAIM,GAAyC,cAAqDvE,EAC9F,eAAAwE,CAAgBxI,EAAOmF,GACnB,MAAMxH,EAAwB,iBAARwH,EAClBH,GAAqBC,oBAAoBjF,EAAOI,GAAQA,aAAgBzI,cAChErO,QAAMC,cAAc4b,EAAI7M,UAAY8H,EAAK9H,UAAY6M,EAAI7M,QAAQxP,gBAClEsX,EAAK6G,MAAM9B,EAAI8B,MAAMpf,QAAUsd,EAAI8B,MAAM7P,OAC9C4N,GAAqBC,oBAAoBjF,EAAOmF,GACtD,OAAQ7b,EAAAA,MAAMsG,OAAO+N,EACzB,CACA,UAAAkH,CAAW7E,GACP,MAAMyI,EAAUJ,GAAuBhkB,KAAK8H,QAAS9H,KAAKikB,UAC1D,IAAK,IAAI9X,KAAKiY,EACV,GAAIpkB,KAAKmkB,gBAAgBxI,EAAOxP,GAC5B,OAAO,EAGf,OAAO,CACX,CACA,uBAAAyB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACjC,YAATvK,KACIyB,EAAAA,MAAMC,cAAclF,KAAKygB,OAASzgB,KAAKygB,OAASoD,GAAoBhW,MACpE7N,KAAKygB,KAAOoD,GAAoB/V,KAEhC7I,EAAAA,MAAMC,cAAclF,KAAK8f,UAAY9f,KAAK8f,UAAYjS,KACtD7N,KAAK8f,QAAUhS,GAG3B,CACA,IAAAnN,GACI,OAAO,IAAImL,QAAQ,CAACyD,EAASnD,KAEzB,MAAMpG,EAAIhG,KAAK2b,MAAO0I,EAAYL,GAAuBhkB,KAAK8H,QAAS9H,KAAKikB,UAAU,GACtF,IAAKhf,EAAAA,MAAMsG,OAAOvF,GAAI,CAElB,MAAMse,EAAS3D,GAAqB4D,yBAAyBve,GAC7D,GAAIse,EAAO5U,QACiB,iBAAd2U,GAA0B,CAAC,IAAK,IAAK,SAAU,KAAKrS,QAAQqS,IAAc,EAAG,CAEvF,MAAMG,EAAU7D,GAAqBC,oBAAoB5a,EAAGqe,GAC5D,GAAKpf,EAAAA,MAAMsG,OAAOiZ,IAA0C,IAA9BA,EAAQ7F,WAAW/d,OAM5C,CAED,MAAM8T,EAAIjG,SAASC,cAAc2V,GAAYvC,EAASwC,EAAOtP,QACvDmI,EAAOnX,EAAEye,kBACfze,EAAEsX,WAAW5I,GACbA,EAAEgQ,OAAOvH,GACTwD,GAAqBmB,OAAOA,EAChC,KAb+D,CAE3D,MAAM6C,EAAWH,EAAQ7F,WAAW9G,KAAK,GAAIiK,EAASwC,EAAOtP,QAC7DwP,EAAQ/O,cAAcmP,aAAaD,EAAUH,GAC7C7D,GAAqBmB,OAAOA,EAChC,CASJ,MAGIrT,SAAS6M,YAAYtb,KAAK8H,SAAS,EAAO9H,KAAKikB,SAEvD,CACA1U,KAER,GC7IJ,SAASsV,GAAO7P,GACZ,OAAOA,aAAmB8P,gBACS,SAA5B9P,EAAQ+P,iBACR/P,EAAQX,aAAa,UACrBW,EAAQX,aAAa,SACgB,cAArCW,EAAQ6B,WAAiB,KAAE9D,KACtC,CDyIAvN,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC+gB,GAAuC5Z,UAAW,kBACrD9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD+gB,GAAuC5Z,UAAW,mBACrD4Z,GAAyC1e,GAAW,CAChDwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,+BAAgCsP,OAAQC,EAAAA,SAASC,gBAC9DC,SAAUmF,KAEfgE,ICnJI,MAAMT,GACT,WAAAxkB,CAAYyc,EAAgBsJ,EAAkBC,EAAW,4BACrDjlB,MAAKklB,EAAYF,EACjBhlB,MAAKilB,EAAYA,EACjBjlB,MAAKmlB,EAAoB,IAAIC,iBAAiBC,IAC1C,MAAMvG,EAAK,CAACjH,EAAM6L,KACd7L,EAAK8G,WAAWtV,QAAQjD,GAA0B0Y,EAAG1Y,EAAGsd,IACxDsB,EAAiBnN,EAAM6L,IAE3B,IAAK,IAAI4B,KAASD,EAAM,CACpB,MAAME,EAAQD,EAAME,WACd9B,EAAU4B,EAAMG,aACtB,IAAK,IAAI3kB,EAAI,EAAGA,EAAIykB,EAAM3kB,OAAQE,IAAK,CACnC,MAAM+W,EAAO0N,EAAM1N,KAAK/W,GACxBge,EAAGjH,GAAM,EACb,CACA,IAAK,IAAI/W,EAAI,EAAGA,EAAI4iB,EAAQ9iB,OAAQE,IAAK,CACrC,MAAM+W,EAAO6L,EAAQ7L,KAAK/W,GAC1Bge,EAAGjH,GAAM,EACb,CACJ,IAEJ7X,KAAKqiB,eAAe3G,EACxB,CACA,cAAA2G,CAAe3G,GACXA,EAAeuG,iBAAiBjiB,MAAKilB,GAAW5b,QAAQga,GAAMrjB,MAAKklB,EAAU7B,IAC7ErjB,MAAKmlB,EAAkBO,QAAQhK,EAAgB,CAAEiK,SAAS,EAAMC,WAAW,IAC3E5lB,MAAK0b,EAAkBA,CAC3B,CACA,iBAAA0G,CAAkB1G,GACd,MAAMqH,EAAW/iB,MAAKmlB,EACjBlgB,EAAAA,MAAMsG,OAAOwX,IACdA,EAAS8C,aAEbnK,EAAeuG,iBAAiBjiB,MAAKilB,GAAW5b,QAAQga,GAAMrjB,MAAKklB,EAAU7B,GAAI,GACrF,CACA,OAAAM,GACI3jB,KAAKoiB,kBAAkBpiB,MAAK0b,EAChC,CACAuJ,GACAC,GACAxJ,GACAyJ,GAEG,MAAMxE,GACT,0BAAOmF,GACH,MAAM3I,EAAO,IAAI4I,iBACXC,EAAWvX,SAASC,cAAc,OACxCzJ,EAAAA,MAAMgM,SAAS+U,EAAUpX,EAAAA,KAAO,4BAChC,MAAM2R,EAAO,IAAIJ,EACjBI,EAAKzY,QAAU,OACfyY,EAAKP,iBAAmB,SACxB,MAAMK,EAAO,IAAIF,EACjBE,EAAKvY,QAAU,OACfuY,EAAKL,iBAAmB,SACxBgG,EAAStB,OAAOnE,EAAMF,GACtB,MAAM4F,EAAaxX,SAASC,cAAc,OAC1CzJ,EAAAA,MAAMgM,SAASgV,EAAYrX,EAAAA,KAAO,8BAClC,MAAMsX,EAAWzX,SAASC,cAAc,OACxCzJ,EAAAA,MAAMgM,SAASiV,EAAUtX,EAAAA,KAAO,4BAChC,MAAMuX,EAAO,IAAIjC,GACjBiC,EAAKre,QAAU8b,GAAiBwC,KAChCD,EAAKnG,iBAAmB,SACxB,MAAMqG,EAAS,IAAInC,GACnBmC,EAAOve,QAAU8b,GAAiB0C,OAClCD,EAAOrG,iBAAmB,SAC1B,MAAMuG,EAAY,IAAIrC,GACtBqC,EAAUze,QAAU8b,GAAiB4C,UACrCD,EAAUvG,iBAAmB,SAC7B,MAAMyG,EAAS,IAAIvC,GACnBuC,EAAO3e,QAAU8b,GAAiB8C,cAClCH,EAAUvG,iBAAmB,SAC7B,MAAM2G,EAAK,IAAIzC,GACfyC,EAAG7e,QAAU8b,GAAiBgD,cAC9B,MAAMC,EAAK,IAAI3C,GACf2C,EAAG/e,QAAU8b,GAAiBkD,YAC9B,MAAMC,EAAY,IAAIC,GACtBD,EAAUE,MAAQ,OAClB,MAAMC,EAAc,IAAIF,GACxBE,EAAYD,MAAQ,SACpB,MAAME,EAAa,IAAIH,GACvBG,EAAWF,MAAQ,QACnB,MAAMG,EAAU,IAAIJ,GACpBI,EAAQH,MAAQ,UAChBf,EAASxB,OAAOyB,EAAME,EAAQE,EAAWE,EAAQE,EAAIE,EAAIE,EAAWG,EAAaC,EAAYC,GAC7F,MAAMC,EAAa5Y,SAASC,cAAc,OAC1CzJ,EAAAA,MAAMgM,SAASoW,EAAYzY,EAAAA,KAAO,8BAClC,MAAM0Y,EAAW7Y,SAASC,cAAc,OACxCzJ,EAAAA,MAAMgM,SAASqW,EAAU1Y,EAAAA,KAAO,4BAChC,MAAMsS,EAAO,IAAIR,EACXe,EAAM,IAAIG,GAGhB,OAFA0F,EAAS5C,OAAOxD,EAAMO,GACtBtE,EAAKuH,OAAOsB,EAAUC,EAAYC,EAAUmB,EAAYC,GACjDnK,CACX,CACA,0BAAOyD,CAAoBjF,EAAO4L,GAE9B,IADA,IAAIxL,EAAOJ,aAAiBM,KAAON,EAAQA,EAAMoD,wBAC1ChD,KAA0B,iBAATwL,GAAqBxL,aAAgB1R,SAAW0R,EAAK9H,UAAYsT,EAAK9iB,eACvE,mBAAT8iB,GAAuBtiB,QAAMsG,OAAOgc,EAAKjd,YAAcid,EAAKxL,IACnD,mBAATwL,IAAwBtiB,QAAMsG,OAAOgc,EAAKjd,YAAcyR,aAAgBwL,IAAO,CACzF,MAAMC,EAASzL,EAAK0L,WACpB,GAAI5C,GAAO2C,GAAS,CAChBzL,EAAO,KACP,KACJ,CACAA,EAAOyL,CACX,CACA,OAAOzL,CACX,CACA,kCAAO2L,CAA4B/L,GAC/B,OAAO3b,KAAK4gB,oBAAoBjF,EAAOgF,GAAqBgH,eAChE,CACA,0CAAOC,CAAoCjM,GACvC,IAAIhX,EAAS,GACb,GAAIkgB,GAAOlJ,EAAMsH,gBAAiB,CAC9B,IAAKtH,EAAMqH,UAAW,CAClB,MAAM6E,EAAOlM,EAAMsH,eACnB,IAAK,IAAI6E,EAAInM,EAAMwH,YAAa2E,GAAKnM,EAAMyH,UAAW0E,IAAK,CACvD,MAAMC,EAAQF,EAAKG,SAASnQ,KAAKiQ,GAC7B9nB,KAAK2nB,eAAeI,IACpBpjB,EAAOpC,KAAKslB,EAAKG,SAASnQ,KAAKiQ,GAEvC,CACJ,CACA,OAAOnjB,CACX,CAEA,GAAIgX,EAAMsH,iBAAmBtH,EAAMuH,aAAc,CAC7C,IAAIzhB,EAASka,EAAMsH,eACnB,MAAQtC,GAAqBgH,eAAelmB,IAAmD,QAAxCA,EAAOgU,cAAcsP,iBACxEtjB,EAASA,EAAOgU,cAEpB,OAAOhU,aAAkB4I,QAAU,CAAC5I,GACU,SAAzCA,EAAOgU,cAAcsP,gBAA6B,GAAK,CAACtjB,EAAOgU,cACxE,CAEA,IAAIoS,EAAOlM,EAAMoD,wBAAyBkJ,GAAU,EACpD,IAAK,IAAInnB,EAAI,EAAGA,EAAI+mB,EAAKlJ,WAAW/d,OAAQE,IAAK,CAC7C,MAAMonB,EAAQL,EAAKlJ,WAAW9G,KAAK/W,GAGnC,KAFemnB,GAAWC,EAAMhK,SAASvC,EAAMsH,iBACxCgF,IACKtH,GAAqBgH,eAAeO,KAC5CvjB,EAAOpC,KAAK2lB,GACZD,GAAU,EACNC,EAAMhK,SAASvC,EAAMuH,eACrB,KAGZ,CACA,OAAO+E,EAAUtjB,EAAUkjB,aAAgBxd,UAAYwa,GAAOgD,GAAQ,CAACA,GAAQ,EACnF,CACA,iCAAOM,CAA2BxM,GAC9B,MAAMyM,EAASzM,EAAMyC,aAAciK,EAAS1M,EAAMyC,aAClDgK,EAAOE,UAAS,GAChBD,EAAOC,WACP,IAAIT,EAAO7nB,KAAK4gB,oBAAoBwH,EAAQ1T,GAAyC,SAApCA,EAAEe,cAAcsP,iBACjE,MAAMtjB,EAAS,CAAComB,GAChB,MAAQA,EAAK3J,SAASmK,EAAOpF,iBACzBxhB,EAAOc,KAAKslB,EAAOA,EAAKU,oBAE5B,OAAO9mB,CACX,CACA,qBAAOkmB,CAAe5L,GAClB,OAAOA,aAAgB1R,UAAYme,iBAAiBzM,GAAMxV,QAAQyb,WAAW,SACjF,CACA,aAAOF,CAAO/F,EAAM0M,GAAS,GACzB,MAAM9M,EAAQlN,SAAS8Q,cAClBkJ,GAKD9M,EAAM+M,SAAS3M,EAAM,GACrBJ,EAAMgN,OAAO5M,EAAMA,EAAK4C,WAAW/d,UALnC+a,EAAM6D,eAAezD,GACrBJ,EAAMyD,YAAYrD,IAMtB,MAAMgC,EAAYtP,SAASuP,eAG3B,OAFAD,EAAU6K,kBACV7K,EAAU8K,SAASlN,GACZA,CACX,CACA,qBAAOmN,CAAeC,EAAIlK,GACtB,MAAMmK,EAAQnK,EAAKhI,WACnB,IAAK,IAAI/V,EAAI,EAAGA,EAAIkoB,EAAMpoB,OAAQE,IAAK,CACnC,MAAMiU,EAAOiU,EAAMnR,KAAK/W,GACxBioB,EAAGla,aAAakG,EAAKvR,KAAMuR,EAAKhC,MACpC,CACJ,CAKA,+BAAOwR,CAAyB5I,GAC5B,IAAK1W,EAAAA,MAAMsG,OAAOoQ,GAAQ,CACtB,MAAM6L,EAAS7L,EAAMsH,eAAgBhb,EAAQ0T,EAAMwH,YACnD,IAAIpH,EACJ,GAAIyL,IAAW7L,EAAMuH,cAAgBjb,GAAU0T,EAAMyH,UAAY,IAAOrH,EAAOyL,EAAO7I,WAAW9G,KAAK5P,cAAmBqL,aAAwC,UAAzByI,EAAKgJ,gBACzI,MAAO,CAAErV,QAAQ,EAAMsF,QAAS+G,EAExC,CACA,MAAO,CAAErM,QAAQ,EACrB,ECtNJ,IAAIlK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,SAASijB,GAAahC,GAClB,MAAO,gBAAkBA,CAC7B,CACA,IAAID,GAA0C,cAAsDrH,EAChG,UAAAa,CAAW7E,GACP,MAAMuN,EAAMvI,GAAqBiH,oCAAoCjM,GACrE,GAAI1W,EAAAA,MAAMC,cAAcgkB,GACpB,OAAO,EAEX,MAAM7F,EAAK6F,EAAI,GACf,OAD+BV,iBAAiBnF,GAAI8F,WAChCnpB,KAAKinB,KAC7B,CACA,uBAAArZ,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACjC,UAATvK,KACIyB,EAAAA,MAAMC,cAAclF,KAAKygB,OAASzgB,KAAKygB,OAASwI,GAAapb,MAC7D7N,KAAKygB,KAAOwI,GAAanb,KAEzB7I,EAAAA,MAAMC,cAAclF,KAAK8f,UAAY9f,KAAK8f,UAAYjS,KACtD7N,KAAK8f,QAAUhS,GAG3B,CACA,IAAAnN,GACI,MAAMyoB,EAAWzI,GAAqBiH,oCAAoC5nB,KAAK2b,OAC/E,IAAI0N,EACJ,IAAK,IAAIhG,KAAM+F,EACPzI,GAAqBgH,eAAetE,IAAOA,aAAc/P,cAErDrO,EAAAA,MAAMsG,OAAO8d,KACbA,EAAcpkB,EAAAA,MAAMuQ,SAAS6N,EAAI,QAAUrjB,KAAKinB,OAAS,GAAKjnB,KAAKinB,OAEvE5D,EAAGT,MAAMuG,UAAY,GACrBlkB,QAAMiM,YAAYmS,EAAI,iDACjBpe,EAAAA,MAAMwL,QAAQ4Y,IACfpkB,EAAAA,MAAMgM,SAASoS,EAAI,QAAUgG,IAIzC,OAAOvd,QAAQyD,SACnB,GAEJ/J,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC6jB,GAAwC1c,UAAW,gBACtD0c,GAA0CxhB,GAAW,CACjDwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,gCAAiCsP,OAAQC,EAAAA,SAASC,gBAC/DC,SAAUmF,KAEf8G,IC5DH,IAAIxhB,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAgBA,SAASsjB,GAAcvN,GACnB,OAAOA,aAAgBwN,gBAAmC,QAAjBxN,EAAK9H,OAClD,CASA,IAAIuV,GAAyC,cAAqDrO,EAC9F,WAAAlc,GACIE,SAAS4G,WACT/F,KAAKoc,cAAiBpT,IAClB,MAAMygB,EAAMzgB,EAAItD,OAChB1F,KAAK2b,MAAQgF,GAAqBmB,OAAO2H,GAGjD,CACAC,GACAC,GACA,OAAAnN,CAAQ3b,GACJA,EAAQohB,iBAAiB,8BAA8B5Y,QAAQogB,IAC3DxkB,QAAMiM,YAAYuY,EAAK,yBAE/B,CACA,IAAA9oB,CAAKipB,GACD,MAAMvG,EAvCd,SAA2B1H,EAAOkO,GAC9B,MAAMJ,EAAMhb,SAASC,cAAc,OAQnC,OAPA+a,EAAIrS,YAAcyS,EAClBJ,EAAI5a,aAAa,kBAAmB,SAGpC4a,EAAI9H,SAAW,EACfhG,EAAM0B,iBACN1B,EAAM2B,WAAWmM,GACVA,CACX,CA6BmBK,CAAkB9pB,KAAK2b,MAAOiO,GAGzC,OAFcjJ,GAAqBmB,OAAOuB,GACpCiF,UAAS,GACRxc,QAAQyD,QAAQ8T,EAC3B,CACA,UAAA7C,CAAWpU,GACP,OAAOpM,MAAK0pB,GAAYha,SAAU,CACtC,CACA,qBAAA7F,GACI1K,MAAM0K,wBACN7J,KAAK+pB,gBACL/pB,KAAKqiB,gBACT,CACA,uBAAAzU,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,IACzCA,EACD,OAAQvK,GACJ,IAAK,aACDxD,KAAK+pB,gBACL,MACJ,IAAK,iBACGlc,GACA7N,KAAKoiB,kBAAkBvU,GAEvBC,GACA9N,KAAKqiB,eAAevU,GAExB,MACJ,IAAK,QACD9N,KAAKgqB,mBAIrB,CACA,oBAAA7b,GACInO,KAAKoiB,oBACLjjB,MAAMgP,sBACV,CACA,gBAAA6b,CAAiBrO,EAAQ3b,KAAK2b,OAC1B,MAAM9N,EAAM7N,MAAK0pB,EACZzkB,EAAAA,MAAMsG,OAAOsC,GAAKmH,UACnB/P,EAAAA,MAAMiM,YAAYrD,EAAImH,QAAS,wBAEnC,MAAMlH,EAAM9N,MAAK0pB,EApEzB,SAAoB/N,GAChB,MAAMsO,EAAQtJ,GAAqB4D,yBAAyB5I,GAC5D,GAAIsO,EAAMva,QAAU4Z,GAAcW,EAAMjV,SAAU,CAC9C,MAAMA,EAAUiV,EAAMjV,QACtB,MAAO,CAAEtF,QAAQ,EAAMsF,UAAS6U,YADa7U,EAAQoC,YAEzD,CACA,MAAO,CAAE1H,QAAQ,EACrB,CA6DsC8Q,CAAW7E,GACpC1W,EAAAA,MAAMsG,OAAOuC,GAAKkH,UACnB/P,EAAAA,MAAMgM,SAASnD,EAAIkH,QAAS,wBAE5BlH,EAAI4B,OACJ1P,KAAKkqB,UAAUnX,MAAQjF,EAAI+b,aAG3B7pB,KAAKkqB,UAAUC,SACfnqB,KAAKkqB,UAAUnX,WAAQ,EAE/B,CACA,aAAAgX,CAAcnR,EAAa5Y,KAAK4Y,YAAc,IAC1C,MAAMD,EAAK3Y,MAAK2pB,EAAwB/Q,EAAWvV,IAAI+C,GAA2B,iBAANA,EAAiB,CAAEyjB,YAAazjB,EAAGgkB,WAAYhkB,GAAMA,GAC3HikB,EAAKrqB,KAAKkqB,UAChBG,EAAG5Q,aACC4Q,EAAG9Q,cAAgB,cACvB8Q,EAAGzR,WAAaD,CACpB,CAEAoK,GACA,cAAAV,CAAe3G,EAAiB1b,KAAK0b,gBACjC1b,MAAK+iB,EAAY,IAAIU,GAA2B/H,EAAgB,CAAC7D,EAAM6L,KAC/D4F,GAAczR,KACV6L,EACA1jB,KAAKsqB,6BAA6BzS,GAGlC7X,KAAKuqB,2BAA2B1S,KAGzC,6BACP,CACA,iBAAAuK,CAAkBhW,EAAIpM,KAAK0b,gBACvB,MAAMqH,EAAW/iB,MAAK+iB,EACjB9d,EAAAA,MAAMsG,OAAOwX,IACdA,EAASY,SAEjB,CACA,0BAAA4G,CAA2Bd,GACvBA,EAAIlgB,iBAAiB,QAASvJ,KAAKoc,eAAe,EACtD,CACA,4BAAAkO,CAA6Bb,GACzBA,EAAIhgB,oBAAoB,QAASzJ,KAAKoc,eAAe,EACzD,GAEJ5W,GAAW,CACPka,EAAAA,UAAU,aACX8J,GAAuClf,UAAW,wBACrD9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,aACfke,GAAuClf,UAAW,oBACrD9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpD2V,GAAuClf,UAAW,qBACrDkf,GAAyChkB,GAAW,CAChDwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,+BAAgCsP,OAAQC,EAAAA,SAASC,gBAC9DC,SAAU,gBACfzP,EAAAA,2DAA2DA,eAC3DA,EAAAA,2HAA2HsD,4EAA0EtD,EAAAA,8BAErMA,kZAGmJA,EAAAA,gBAEnJke,IC/JH,IAAIhkB,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,IAAIwkB,GAAyC,cAAqD7K,EAC9F,UAAAa,CAAW7E,GACP,OAAQ1W,EAAAA,MAAMsG,OAAOoV,GAAqBC,oBAAoBjF,EAAO3b,KAAKyqB,SAC9E,CACA,IAAA9pB,GACI,OAAO,IAAImL,QAAQ,CAACyD,EAASnD,KACzB,MAAM6H,EAAUjU,KAAKyqB,QACrB,IAAKxlB,EAAAA,MAAMC,cAAc+O,GAAU,CAC/B,MAAM0H,EAAQ3b,KAAK2b,MACb+O,EAAY/J,GAAqBC,oBAAoBjF,EAAO1H,IAC3D0M,GAAqBC,oBAAoBjF,EAAMsH,eAAgBhP,IAC/D0M,GAAqBC,oBAAoBjF,EAAMuH,aAAcjP,GACpE,GAAIhP,EAAAA,MAAMsG,OAAOmf,GAAY,CAEzB,MAAMC,EAAiBhK,GAAqBiH,oCAAoCjM,GAChF,IAAK1W,EAAAA,MAAMC,cAAcylB,GAAiB,CACtC,MAAMhG,EAAWlW,SAASC,cAAcuF,GACxC,GAA8B,IAA1B0W,EAAe/pB,OAAc,CAE7B,MAAMgqB,EAAOD,EAAe,GAC5BhP,EAAM+M,SAASkC,EAAM,GACrBjP,EAAMgN,OAAOiC,EAAMA,EAAKjM,WAAW/d,QACnC,MAAMuc,EAAOxB,EAAM8I,kBACnBE,EAASD,OAAOvH,GAChBwD,GAAqBmI,eAAenE,EAAUiG,GAC9CA,EAAKnV,cAAcoV,aAAalG,EAAUiG,GAC1CA,EAAKvT,QACT,KACK,CAEDsE,EAAM6D,eAAemL,EAAe,IACpChP,EAAMyD,YAAYuL,EAAeA,EAAe/pB,OAAS,IACzD,MAAMuc,EAAOxB,EAAM8I,kBACnBE,EAASD,OAAOvH,GAChBxB,EAAM2B,WAAWqH,EACrB,CACUhE,GAAqBmB,OAAO6C,GAAU,GAC9C2D,UACN,CACJ,KACK,CAED3M,EAAM+M,SAASgC,EAAW,GAC1B/O,EAAMgN,OAAO+B,EAAWA,EAAU/L,WAAW/d,QAE7C,IAAIsc,GAAU,EACd,MAAMyB,EAAa+L,EAAU/L,WAC7B,IAAK,IAAI7d,EAAI,EAAGA,EAAI6d,EAAW/d,OAAQE,IAAK,CACxC,MAAMinB,EAAQpJ,EAAW9G,KAAK/W,GAC9B,IAAK6f,GAAqBgH,eAAeI,GAAQ,CAC7C7K,GAAU,EACV,KACJ,CACJ,CACA,GAAIA,EAAS,CACT,MAAM5Z,EAAImL,SAASC,cAAc,KACjCiS,GAAqBmI,eAAexlB,EAAGonB,GACvCpnB,EAAEohB,OAAO/I,EAAM8I,mBACfiG,EAAUjD,WAAW7C,aAAathB,EAAGonB,GAC3B/J,GAAqBmB,OAAOxe,GAAG,GACvCglB,UACN,KACK,CAEDoC,EAAUjD,WAAW7C,aAAajJ,EAAM8I,kBAAmBiG,GACjD/J,GAAqBmB,OAAOnG,EAAMuH,cAAc,GACxDoF,UACN,CACJ,CACJ,CACA/Y,KAER,GAEJ/J,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCqnB,GAAuClgB,UAAW,kBACrDkgB,GAAyChlB,GAAW,CAChDwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,+BAAgCsP,OAAQC,EAAAA,SAASC,gBAC9DC,SAAUmF,KAEfsK,IC5FH,IAAIhlB,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,MAAM8kB,GAAwB,CAC1BhW,QAAS,CAACC,EAAMsO,IACL,SAASrC,KAAKjM,GAAQ3K,EAAAA,mBAAmByJ,KAAKiB,QAAQC,GAAQ3K,EAAAA,mBAAmBjH,OAAO2R,QAAQC,GAE3GG,YAAa,CAACzO,EAAM4c,IACI,iBAAT5c,EACAA,EAEJ2D,EAAAA,mBAAmByJ,KAAKqB,YAAYzO,EAAM4c,IAWzD,IAAI0H,GAAkC,cAA8CphB,EAAAA,WAAWC,aAC3F,uBAAAgE,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GAErC,aADDvK,EAEAxD,KAAKwM,cAAc,IAAIvD,YAAY,iBAAkB,CAAEC,OAAQ,IAAI8hB,KAAKld,EAAK,EAAG,GAAI1O,SAAS,EAAOC,YAAY,KAChH4F,QAAMiM,YAAYlR,KAAM,mCACxB+Z,sBAAsB,KAClB9U,EAAAA,MAAMgM,SAASjR,KAAM6N,EAAMC,EAAM,oBAAsB,kBAIvE,CACA,cAAAmd,CAAeC,GACX,MAAMC,GAAO,IAAIH,MAAOI,cAExB,OADa,IAAIJ,KAAKG,EAAMD,EAAG,GACnBG,eAAepmB,QAAMqmB,KAAKtrB,MAAO,CAAEurB,MAAO,SAC1D,CACA,YAAAC,CAAaN,EAAGpY,EAAI9S,KAAKyrB,UACrB,OAAOzrB,KAAK0rB,iBAAiBR,EAAG,IAAIF,KAAQlY,EAChD,CACA,gBAAA4Y,CAAiBR,EAAGrlB,EAAI7F,KAAKurB,MAAOzY,EAAI9S,KAAKyrB,UACzC,MAAME,EAAS1mB,EAAAA,MAAM2mB,UAAU/lB,GAC/B,IAAKZ,EAAAA,MAAMmT,MAAMC,OAAOsT,GACpB,OAAO,EAEX,MAAMF,EAAW3Y,IAAK,IAAIkY,MAAOI,cACjC,OAAOO,EAAOE,aAAeX,GAAKS,EAAOP,gBAAkBK,CAC/D,CACA,SAAAK,CAAUZ,GACN,MAAMC,EAAOnrB,KAAKyrB,SACZtT,EAAO,IAAI6S,KAAKG,EAAMD,EAAG,GAC/BlrB,KAAKurB,MAAQpT,EACbnY,KAAKwM,cAAc,IAAIvD,YAAY,cAAe,CAAEC,OAAQiP,EAAM/Y,SAAS,EAAOC,YAAY,IAClG,GAEJmG,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmB4gB,QACvCD,GAAgCzgB,UAAW,gBAC9C9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmB4gB,QACvCD,GAAgCzgB,UAAW,mBAC9CygB,GAAkCvlB,GAAW,CACzCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,yBAA0BsP,OAAQC,EAAAA,SAASC,gBACxDC,SAAU,eAAenM,EAAAA,sBApDjC,WACI,IAAImd,EAAS,GACb,IAAK,IAAIR,EAAQ,EAAGA,EAAQ,GAAIA,IAC5BQ,GAAU,oCAAoCR,EAAQ,OAAOjgB,EAAAA,uEAAuEigB,gEAAoEA,qEAAyEA,0DAA8DA,YAAgBjgB,EAAAA,gBAEnW,OAAOygB,CACX,CA8CuDC,cAEpDjB,IAEI,MAAMkB,WAAkCC,EAAAA,WAAaC,GAAGC,gBAC3D,WAAAntB,GACIE,WAAM,EACV,EAYJ,SAASktB,GAAeC,GAEpB,OAAOA,EADKA,EAAI,EAEpB,CACA,IAAIC,GAAiC,cAA6C5iB,EAAAA,WAAWC,aACzF,uBAAAgE,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GAErC,aADDvK,EAEAxD,KAAKwM,cAAc,IAAIvD,YAAY,iBAAkB,CAAEC,OAAQ,IAAI8hB,KAAKld,EAAK,EAAG,GAAI1O,SAAS,EAAOC,YAAY,KAChH4F,QAAMiM,YAAYlR,KAAM,mCACxB+Z,sBAAsB,KAClB9U,EAAAA,MAAMgM,SAASjR,KAAM6N,EAAMC,EAAM,oBAAsB,kBAIvE,CACA,aAAA0e,CAAcF,EAAGnB,EAAOnrB,KAAKyrB,UAEzB,MAAO,IADOY,GAAelB,GACRmB,EACzB,CACA,WAAAG,CAAYH,EAAGxZ,EAAI9S,KAAKyrB,UACpB,OAAOzrB,KAAK0sB,gBAAgBJ,EAAG,IAAItB,KAAQlY,EAC/C,CACA,eAAA4Z,CAAgBJ,EAAGzmB,EAAI7F,KAAKmrB,KAAMrY,EAAI9S,KAAKyrB,UACvC,MAAME,EAAS1mB,EAAAA,MAAM2mB,UAAU/lB,GAC/B,IAAKZ,EAAAA,MAAMmT,MAAMC,OAAOsT,GACpB,OAAO,EAEX,MAAiCgB,EAAnBN,GAAevZ,GAAuBwZ,EAEpD,OAAOX,EAAOP,gBAAkBuB,CACpC,CACA,QAAAC,CAASN,GACL,MAAyBve,EAAQse,GAAvBrsB,KAAKyrB,UACTtT,EAAO,IAAI6S,KAAKjd,EAAQue,EAAG,EAAG,GACpCtsB,KAAKmrB,KAAOhT,EACZnY,KAAKwM,cAAc,IAAIvD,YAAY,aAAc,CAAEC,OAAQiP,EAAM/Y,SAAS,EAAOC,YAAY,IACjG,GAEJmG,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmB4gB,QACvCuB,GAA+BjiB,UAAW,eAC7C9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmB4gB,QACvCuB,GAA+BjiB,UAAW,mBAC7CiiB,GAAiC/mB,GAAW,CACxCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,wBAAyBsP,OAAQC,EAAAA,SAASC,gBACvDC,SAAU,eAAenM,EAAAA,qBAxDjC,WACI,IAAImd,EAAS,GACb,IAAK,IAAIZ,EAAO,EAAGA,EAHA,GAGuBA,IACtCY,GAAU,kCAAkCZ,EAAO,OAAO7f,EAAAA,qEAAqE6f,8DAAiEA,kEAAqEA,yDAA4DA,4BAA+B7f,EAAAA,gBAEpW,OAAOygB,CACX,CAkDsDc,cAEnDN,IAUH,IAAIO,GAA6B,cAAyC1X,EACtE,WAAAnW,GACIE,SAAS4G,WACT/F,KAAK+sB,SAAW,WAChB/sB,MAAKgtB,GAAU,EACfhtB,KAAKitB,cAAiB/sB,IAElB,OADYA,EAAEgJ,OAAOgkB,WAEjB,IAAK,OACDltB,KAAKmtB,MAAMjtB,GACX,MACJ,IAAK,QACDF,KAAKotB,MAAMltB,KAIvBF,KAAKqtB,iBAAoBrkB,IACrBA,EAAI2T,iBACJ3c,KAAKstB,UAAY,IAAItC,KACrBhrB,KAAK4V,cAAc,IAAIqW,KAE3BjsB,KAAKutB,uBAA0BrtB,IAC3BF,KAAKwtB,kBAAkBttB,IAE3BF,KAAKytB,oBAAuBvtB,IACxB,GAAIF,MAAKgtB,EACL,OAEJhtB,KAAK+sB,SAAW,WAChB,MAAMW,EAAYzoB,EAAAA,MAAM2mB,UAAU5rB,KAAK+S,OACvC/S,KAAK2tB,UAAUC,SACX5tB,KAAK6tB,aAAatC,MACdvrB,KAAK8tB,YAAY3C,KACblmB,EAAAA,MAAMmT,MAAMC,OAAOqV,GAAaA,EAAY1tB,KAAK2tB,UAAUC,SACvE,MAAMG,EAAS9oB,EAAAA,MAAM8oB,OAAO/tB,KAAKguB,QAC3BC,EAAWjuB,KAAKkqB,UACtB+D,EAASrL,MAAMsL,IAAOH,EAAOG,IAAMH,EAAOjL,OAAU,KACpDmL,EAASrL,MAAMuL,KAAOJ,EAAOI,KAAO,KACpCF,EAAS1P,QAAS,EAClBxE,sBAAsB,KAClB9U,QAAMgM,SAASgd,EAAU,kBAGjCjuB,KAAKouB,qBAAwBluB,IACzB,MAAMyB,EAAOzB,EAAEmuB,gBAAkB,GAC7B1sB,EAAKqQ,QAAQhS,KAAKguB,SAAW,GAAKrsB,EAAKqQ,QAAQhS,KAAKkqB,YAAc,GAGtElqB,KAAKsuB,gBAEb,CACAtB,GACA,uBAAApf,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,WACL,IAAK,YACDxD,KAAKwtB,kBAAkBxtB,KAAKstB,WAGxC,CACA,qBAAAzjB,GACI1K,MAAM0K,wBACN,MAAMokB,EAAWjuB,KAAKkqB,UAAYlqB,KAAKuuB,OAAOC,IAAI,GAC5CC,EAAWzuB,KAAK2tB,UAAYM,EAAS5iB,cAAcC,EAAAA,EAAI,aACvDojB,EAAc1uB,KAAK6tB,aAAeI,EAAS5iB,cAAcC,EAAAA,EAAI,0BAC7DqjB,EAAa3uB,KAAK8tB,YAAcG,EAAS5iB,cAAcC,EAAAA,EAAI,yBACjEtL,KAAK4uB,YAAcX,EAAS5iB,cAAc,mBAC1CrL,KAAK6uB,WAAaZ,EAAS5iB,cAAc,kBACzCrL,KAAK8uB,YAAcb,EAAS5iB,cAAc,wBAC1C,MAAM0jB,EAAM/uB,KAAK2tB,UAAUoB,IAAM,IAAI/D,KAC/B0C,EAAYzoB,EAAAA,MAAMmT,MAAMnY,MAAMD,KAAK+S,OAEnCoF,EADWlT,EAAAA,MAAMmT,MAAMC,OAAOqV,GACZA,EAAYqB,EACpCN,EAASO,kBAAqBnpB,GACnBZ,QAAM2mB,UAAU/lB,GAAGwlB,eAAepmB,EAAAA,MAAMqmB,KAAKtrB,MAAO,CAAEivB,IAAK,YAEtEP,EAAYnlB,iBAAiB,iBAAkBvJ,KAAKutB,wBAAwB,GAC5EoB,EAAWplB,iBAAiB,iBAAkBvJ,KAAKutB,wBAAwB,GAC3EkB,EAASllB,iBAAiB,iBAAkBvJ,KAAKutB,wBAAwB,GACzEkB,EAASb,SAAWzV,EACpBsW,EAAStW,KAAOuV,EAChB,MAAMwB,EAAQlvB,KAAKguB,OACnBkB,EAAM3lB,iBAAiB,QAASvJ,KAAKytB,qBAAqB,GAC1DyB,EAAM3lB,iBAAiB,YAAavJ,KAAKytB,qBAAqB,GAC9DQ,EAAS1kB,iBAAiB,YAAa2M,EAAAA,wBAAwB,GAC/DiL,OAAO1S,SAAS0gB,KAAK5lB,iBAAiB,YAAavJ,KAAKouB,sBAAsB,GAC9EpuB,KAAKovB,aAAa7lB,iBAAiB,YAAavJ,KAAKqtB,kBAAkB,GAEvE,MAAMgC,EAAS,IAAI1lB,EAAAA,WAAW2lB,kBAC9Bb,EAASc,UAAUhtB,KAAK8sB,GACxBX,EAAYa,UAAUhtB,KAAK8sB,GAC3BV,EAAWY,UAAUhtB,KAAK8sB,GAC1BA,EAAO9lB,iBAAiB,QAASvJ,KAAKitB,eAAe,GACrD,MAAMkC,EAAOplB,EAAAA,mBAAmBylB,kBAAkBxvB,MAClDA,KAAKyvB,QAAUN,EAAKngB,YAAYqgB,EACpC,CACA,oBAAAlhB,GACI,MAAM+gB,EAAQlvB,KAAKguB,OACd/oB,EAAAA,MAAMsG,OAAO2jB,KACdlvB,KAAKovB,aAAa3lB,oBAAoB,YAAazJ,KAAKqtB,kBAAkB,GAC1E6B,EAAMzlB,oBAAoB,QAASzJ,KAAKytB,qBAAqB,GAC7DyB,EAAMzlB,oBAAoB,YAAazJ,KAAKytB,qBAAqB,GACjEztB,KAAKkqB,UAAUzgB,oBAAoB,YAAayM,EAAAA,wBAAwB,GACxEiL,OAAO1S,SAAS0gB,KAAK1lB,oBAAoB,YAAazJ,KAAKouB,sBAAsB,GACjFpuB,KAAK2tB,UAAUlkB,oBAAoB,iBAAkBzJ,KAAKutB,wBAAwB,GAClFvtB,KAAK6tB,aAAapkB,oBAAoB,iBAAkBzJ,KAAKutB,wBAAwB,GACrFvtB,KAAK8tB,YAAYrkB,oBAAoB,iBAAkBzJ,KAAKutB,wBAAwB,IAExF,MAAM8B,EAASrvB,KAAKyvB,QACpB,IAAKxqB,EAAAA,MAAMsG,OAAO8jB,GAAS,CACvB,MAAMZ,EAAWzuB,KAAK2tB,UAAWe,EAAc1uB,KAAK6tB,aAAcc,EAAa3uB,KAAK8tB,YACpF,IAAK,IAAIzK,IAAM,CAACoL,EAAUC,EAAaC,GAAa,CAChD,MAAgCe,EAAdrM,EAAGkM,UAAkCvd,QAAQqd,GAC3DK,GAAc,GACdrM,EAAGkM,UAAUrc,OAAOwc,EAAY,EAExC,CACAL,EAAO5lB,oBAAoB,QAASzJ,KAAKitB,eAAe,GACxDoC,EAAOhY,SACPrX,KAAKyvB,QAAU,IACnB,CACAtwB,MAAMgP,sBACV,CACA,eAAAwhB,CAAgB9pB,EAAGhG,EAAOG,KAAK+sB,UAC3B,MAAM6C,EAAM3qB,EAAAA,MAAM2mB,UAAU/lB,GAC5B,OAAIZ,QAAMmT,MAAMC,OAAOuX,GACZA,EAAIvE,eAAepmB,QAAMqmB,KAAKtrB,MAAO,CAAE6vB,QAAS,WAEpD,KACX,CACA,KAAAzC,CAAMltB,GACF,IAAI4vB,GAAS,EACb,OAAQ9vB,KAAK+sB,UACT,IAAK,QACD+C,GAAS,GACT,MACJ,IAAK,OACDA,GAAS,IAGjB9vB,KAAK+vB,YAAYD,EACrB,CACA,KAAA3C,CAAMjtB,GACF,IAAI4vB,EAAS,EACb,OAAQ9vB,KAAK+sB,UACT,IAAK,QACD+C,EAAS,GACT,MACJ,IAAK,OACDA,EAAS,IAGjB9vB,KAAK+vB,YAAYD,EACrB,CACA,WAAAC,CAAY7E,GACR,MAAM8E,EAAK/qB,EAAAA,MAAM2mB,UAAU5rB,KAAKstB,WAChCttB,KAAKstB,UAAYroB,EAAAA,MAAMmT,MAAM6X,UAAUD,EAAI9E,EAC/C,CACA,SAAAY,CAAU5rB,GACNF,KAAKstB,UAAYptB,EAAEgJ,OACnBlJ,KAAK+sB,SAAW,UACpB,CACA,QAAAH,CAAS1sB,GACLF,KAAKstB,UAAYptB,EAAEgJ,OACnBlJ,KAAK+sB,SAAW,OACpB,CACA,iBAAAS,CAAkBttB,GACd,GAAI+E,EAAAA,MAAMC,cAAchF,GACpB,OAEJ,MAAMiY,EAAOlT,EAAAA,MAAM2mB,UAAU5rB,KAAKstB,WAClC,GAAIroB,EAAAA,MAAMmT,MAAMC,OAAOF,KAAUlT,EAAAA,MAAMsG,OAAOvL,KAAK4uB,aAC/C,OAAQ5uB,KAAK+sB,UACT,IAAK,QACD/sB,KAAK6uB,WAAWqB,KAAO/X,EAAKkT,eAAepmB,EAAAA,MAAMqmB,KAAKtrB,MAAO,CAAEmrB,KAAM,YACrE,MACJ,IAAK,OACD,MAAMgF,EAAK9D,GAAelU,EAAKiT,eAC/BprB,KAAK8uB,YAAYoB,KAAO,GAAGC,OAAQA,EAxPhC,GAwPsD,IACzD,MACJ,QACInwB,KAAK4uB,YAAYsB,KAAO/X,EAAKkT,eAAepmB,EAAAA,MAAMqmB,KAAKtrB,MAAO,CAAEurB,MAAO,OAAQJ,KAAM,YAIrG,CACA,aAAAmD,GAEIrpB,EAAAA,MAAMiM,YAAYlR,KAAKkqB,UAAW,eAClCjlB,EAAAA,MAAMmrB,wBAAwBpwB,KAAKkqB,UAAWhqB,IAC1CF,KAAKkqB,UAAU3L,QAAS,EACxBtZ,EAAAA,MAAMiM,YAAYlR,KAAKkqB,UAAW,oBACnC,IACP,CACA,eAAI1T,GACA,MAAO,CAACxW,KAAKguB,OACjB,CACA,kBAAArX,CAAmBO,GACXlX,KAAKqwB,UACLrwB,KAAKguB,OAAOsC,UAAW,EACvBtwB,KAAKguB,OAAOzP,OAASrH,EACrBlX,KAAKuwB,MAAMC,MAAQtZ,EAE3B,CACA,QAAArB,CAAS7M,GACL,OAAO,IAAI8C,QAAQ,CAACyD,EAASC,KACzB,GAAIgP,EAAAA,iBAAiBC,aAAazV,EAAKkjB,EAAAA,WAAaC,GAAGC,iBAAkB,CACrEnnB,EAAAA,MAAMgM,SAASjR,KAAKkqB,UAAW,mBACX1L,EAAAA,iBAAiBC,aAAazV,EAAKijB,MAEnDjsB,MAAKgtB,GAAU,GAEnBhtB,KAAKsX,QACLtX,MAAKgtB,GAAU,EACfhtB,KAAKsuB,gBACL/e,EAAQvP,KAAK+S,MAAQ/J,EAAIE,OAC7B,MAEIqG,EAAQvP,KAAK+S,QAGzB,CACA,WAAA2D,CAAY5I,GACR9N,KAAKguB,OAAOjb,MAAQ/S,KAAKwU,UACzB,MAAMia,EAAWzuB,KAAK2tB,UACtB,IAAK1oB,EAAAA,MAAMsG,OAAOkjB,GAAW,CACzB,MAAMgC,EAAUxrB,EAAAA,MAAM2mB,UAAU9d,GAC5B7I,QAAMmT,MAAMC,OAAOoY,GACnBhC,EAASb,SAAWa,EAAStW,KAAOsY,EAGpChC,EAAStW,UAAO,CAExB,CACJ,CACA,YAAA1D,CAAa1B,GACT,MAAMD,EAAI7N,EAAAA,MAAMmT,MAAMnY,MAAM8S,GAC5B,OAAI9N,QAAMmT,MAAMC,OAAOvF,GACZ7N,QAAMyrB,KAAKvY,KAAKrF,EAAG9S,KAAK8C,QAAU,QAASmC,EAAAA,MAAMqmB,KAAKtrB,OAE1D,EACX,CACA,0BAAA8V,CAA2BjI,EAAKC,GAC5B,MAAM6iB,EAAO1rB,EAAAA,MAAM2mB,UAAU/d,GAAM+iB,EAAO3rB,EAAAA,MAAM2mB,UAAU9d,GAC1D,SAAI7I,EAAAA,MAAMC,cAAcyrB,KAAS1rB,EAAAA,MAAMC,cAAc0rB,MAGjD3rB,EAAAA,MAAMC,cAAcyrB,KAAS1rB,EAAAA,MAAMC,cAAc0rB,IAG9CD,EAAKE,WAAaD,EAAKC,SAClC,CACA,+BAAA5b,CAAgCF,GAC5B,OAAO3K,qBAAmBnH,SAAS6R,QAAQC,EAC/C,GAEJvP,GAAW,CACPka,EAAAA,UAAU,qBACXoN,GAA2BxiB,UAAW,iBACzC9E,GAAW,CACPka,EAAAA,UAAU,IAAI9Q,EAAAA,kBACfke,GAA2BxiB,UAAW,gBACzC9E,GAAW,CACPka,YAAU,GAAGpU,EAAAA,oBACdwhB,GAA2BxiB,UAAW,uBACzC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,iBACfwhB,GAA2BxiB,UAAW,iBACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAW2gB,MACjCgC,GAA2BxiB,UAAW,iBACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmB0mB,QACvChE,GAA2BxiB,UAAW,yBACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC2pB,GAA2BxiB,UAAW,oBACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC2pB,GAA2BxiB,UAAW,mBACzC9E,GAAW,CACP0E,EAAAA,SACD4iB,GAA2BxiB,UAAW,gBACzC9E,GAAW,CACP0E,EAAAA,SACD4iB,GAA2BxiB,UAAW,oBACzCwiB,GAA6BtnB,GAAW,CACpCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,mBAAoBsP,OAAQC,EAAAA,SAASC,gBAClDC,SAAU,eAAenM,2DACDA,EAAAA,kBAAkBtD,EAAAA,8CAA8CsD,EAAAA,oBAAoBtD,mBAC7GA,EAAAA,+BAA+BsD,sGAAoGA,EAAAA,4PAI/GtD,yBAExBA,qCACesD,4DACPtD,+IAGYA,EAAAA,gIAAgIA,mCAChIA,EAAAA,2HAA2HA,mCAC3HA,EAAAA,+EAA+EA,qFAErDsD,0GAEtBtD,EAAAA,4GAA4GA,yCAC5GA,EAAAA,6GAA6GA,oFA7TxI,WACI,IAAIygB,EAAS,GACb,IAAK,IAAIkD,EAAM,EAAGA,EAAM,EAAGA,IACvBlD,GAAU,IAAIzgB,EAAAA,sCAAsC2jB,EAAM,+DAA+DA,aAAe3jB,EAAAA,UAE5I,MAAO,IAAIA,gFAA8EygB,MAAWzgB,EAAAA,UACxG,CA0TkBylB,wBACCzlB,EAAAA,wQAAwQA,mCACxQA,EAAAA,yNAAyNA,gDACzNA,EAAAA,oNAAoNA,2DAE5NA,gCAEPA,EAAAA,oBAEDwhB,IC5dH,IAAItnB,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,MAAMgrB,GAAmC,CACrClc,QAAUC,GAAkB,SAATA,GAAmC,UAATA,GAA2BA,EACxEG,YAAczO,GAASA,EAAK0O,YAEhC,IAAI8b,GAAuB,cAAmC7b,EAC1D,WAAAnW,GACIE,MAAM,YACNa,KAAKkxB,QAAU,GACflxB,KAAKmxB,KAAO,IAAMlsB,EAAAA,MAAMoJ,YAC5B,CACA,+BAAA4G,CAAgCF,GAC5Bic,GAAiClc,QAAQC,KAAU/U,KAAKoxB,UAAYpxB,KAAKoxB,UAAYpxB,KAAKqxB,UAC9F,CACA,kBAAA1a,CAAmBO,GACflX,KAAKsxB,KAAK/S,QAAUrH,EACpBlX,KAAKuxB,UAAUhT,OAASve,KAAKwxB,OAAOjT,OAASrH,CACjD,CACA,eAAIV,GACA,MAAO,CAACxW,KAAKuxB,UACjB,CACA,QAAA1b,CAAS7M,GACLhJ,KAAKyxB,SAAWzxB,KAAKuxB,UAAUG,QAC/B,MAAM3e,EAAQ/S,KAAK+S,MAAQ/S,KAAKyxB,SAAWzxB,KAAKoxB,UAAYpxB,KAAKqxB,WACjE,OAAOpsB,EAAAA,MAAM0sB,WAAW5e,EAC5B,CACA,qBAAAlJ,GACI1K,MAAM0K,wBACN7J,KAAKuxB,UAAUhjB,GAAKvO,KAAKwxB,OAAOI,QAAU5xB,KAAKmxB,KAC/CnxB,KAAK6xB,iBACD7xB,KAAK+S,OAA6E/S,KAAKoxB,UACvFpxB,KAAKyxB,UAAW,EACXzxB,KAAK+S,OAA6E/S,KAAKqxB,aAC5FrxB,KAAKyxB,UAAW,EACxB,CACA,uBAAA7jB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACzC/N,KAAKqwB,QAIV,OAAQ7sB,GACJ,IAAK,UACDxD,KAAKwxB,OAAOjT,OAAStZ,EAAAA,MAAMC,cAAc4I,GACzC,MACJ,IAAK,OACD9N,KAAKuxB,UAAU/tB,KAAOsK,EACtB,MACJ,IAAK,WACD9N,KAAK6xB,iBAGjB,CACA,cAAAA,CAAe/jB,EAAM9N,KAAKyxB,WAClBzxB,KAAKuxB,UAAUG,QAAU5jB,IACzB9N,KAAK+S,MAAQ/S,KAAKoxB,UAClBnsB,EAAAA,MAAMgM,SAASjR,KAAM4O,EAAAA,KAAO,aAC5B5O,KAAK4W,KAAKC,WAAW7R,IAAI,UAAW,UAGpChF,KAAK+S,MAAQ/S,KAAKqxB,WAClBpsB,EAAAA,MAAMiM,YAAYlR,KAAM4O,EAAAA,KAAO,aAC/B5O,KAAK4W,KAAKC,WAAW7R,IAAI,UAAW,SAE5C,CACA,WAAA0R,CAAY5I,GACR9N,KAAKyxB,SAAW3jB,GAA2E9N,KAAKoxB,SACpG,CACA,YAAA3c,CAAa3G,GACT,OAAK7I,EAAAA,MAAMsG,OAAOuC,GAEX,GADI9N,KAAKkxB,OAEpB,GAEJ1rB,GAAW,CACPka,EAAAA,UAAU,yBACXuR,GAAqB3mB,UAAW,oBACnC9E,GAAW,CACPka,EAAAA,UAAU,UACXuR,GAAqB3mB,UAAW,iBACnC9E,GAAW,CACPka,EAAAA,UAAU,IAAI9Q,EAAAA,kBACfqiB,GAAqB3mB,UAAW,eACnC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC8tB,GAAqB3mB,UAAW,kBACnC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAW6mB,MACjCC,GAAqB3mB,UAAW,oBACnC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAW6mB,MACjCC,GAAqB3mB,UAAW,qBACnC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCiuB,GAAqB3mB,UAAW,mBACnC2mB,GAAuBzrB,GAAW,CAC9BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,YACbyP,SAAU,IAAIzP,EAAAA,iBAAiBsD,EAAAA,iBAAiBA,EAAAA,+CAA+CtD,4CACvEsD,EAAAA,+BAA+BA,gBAAcA,EAAAA,iBAAiBA,EAAAA,2BAA2BtD,EAAAA,0CAA0CA,EAAAA,kBAC3JsP,OAAQC,EAAAA,SAASC,mBAEtBmW,IC9GH,IAAIzrB,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,IAAI8rB,GAA2B,cAAuCxZ,EAClE,WAAA5B,CAAY5I,GAEZ,CACA,WAAA7O,GACIE,OAAM,GACNa,KAAK+xB,iBAAmB,GACxB/xB,KAAU,IAAI,IAAMiF,EAAAA,MAAMoJ,YAC9B,CACA,eAAImI,GACA,MAAO,EACX,CACA,uBAAA5I,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACjC,aAATvK,IACAxD,KAAKgyB,SAAS9kB,MAAQY,EAE9B,CACA,qBAAAjE,GACI1K,MAAM0K,wBACN7J,KAAKgyB,SAAS9kB,MAAQlN,KAAKyL,QAC/B,CACA,kBAAAkL,CAAmBO,GACflX,KAAKuwB,MAAMhS,QAAUrH,EACrBlX,KAAKiyB,UAAU1T,OAASrH,CAC5B,CACA,iBAAAgb,CAAkBlpB,EAAKf,EAAO4P,GAC1B,GAAgC,aAA5B7O,EAAIE,OAAO+D,aAA6B,CACxC,IAAIgG,EAAKkf,EAAUnyB,KAAK+xB,kBACQ,IAA5B/oB,EAAIE,OAAOkG,aACX+iB,EAAQ5vB,KAAKvC,KAAK4Y,WAAW3Q,UAEvBgL,EAAMkf,EAAQngB,QAAQhS,KAAK4Y,WAAW3Q,MAC5CkqB,EAAQjf,OAAOD,EAAK,EAE5B,CACJ,CACA,QAAA4C,CAAS7M,GACL,MAAM8E,EAAM9N,KAAK+S,MAAQ/S,KAAK+xB,iBAAiB1uB,IAAI+C,GAAKpG,KAAKmZ,iBAAiB/S,IAC9E,OAAOnB,EAAAA,MAAM0sB,WAAW7jB,EAC5B,GAEJtI,GAAW,CACPka,EAAAA,UAAU,QAAQ9Q,EAAAA,kBACnBkjB,GAAyBxnB,UAAW,gBACvC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,cACfwmB,GAAyBxnB,UAAW,oBACvC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,UACfwmB,GAAyBxnB,UAAW,mBACvCwnB,GAA2BtsB,GAAW,CAClCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,iBAAkByP,SAAU,IAAIzP,EAAAA,0EACpCsD,EAAAA,sBAAsBA,mEAEpBtD,mUAEd6F,EAAAA,sHAAsH7F,yDAGvHA,EAAAA,2BAA2BsD,EAAAA,mBAAmBtD,EAAAA,yCAAyCA,oBAAkBA,EAAAA,YAAYA,EAAAA,WAAWA,EAAAA,eAAeA,EAAAA,aAC3IsP,OAAQC,EAAAA,SAASC,mBAEtBgX,ICzEH,IAAItsB,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,IAAIosB,GAAkC,cAA8CC,mBAChF,uBAAAzkB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,IACzCA,EAAO,CACR,MAAMtH,EAAOzG,KAAK0H,SAAUqL,EAAQ/S,KAAKuN,MAAO+kB,GAAkBrtB,EAAAA,MAAMC,cAAcuB,GAAO8rB,GAAmBttB,EAAAA,MAAMsG,OAAOvL,KAAKkN,QACrH,UAAT1J,GACY,aAATA,GACU,UAATA,GAAoB8uB,GAAkBC,GAAmBttB,EAAAA,MAAMuC,QAAQsG,IAAQA,EAAIsE,KAAKhM,KAAOK,KAAQL,IAAMA,EAAEK,KAAUsM,IAChH,UAATvP,GAAoB8uB,GAAkBC,IAAoBttB,EAAAA,MAAMuC,QAAQsG,OAAWrH,KAAQqH,IAAQA,EAAIrH,KAAUsM,KACrH/S,KAAKwyB,cAEb,CACJ,CACA,qBAAA3oB,GACI1K,MAAM0K,wBACN7J,KAAKwyB,cACT,CACA,YAAAA,GACI,MAAMtlB,EAAQlN,KAAKkN,MAAOulB,EAAYzyB,KAAK0H,SAAUqL,EAAQ/S,KAAKuN,MAClE,IAAItI,EAAAA,MAAMC,cAAcgI,KAAUjI,EAAAA,MAAMC,cAAcutB,GAGtD,GAAIxtB,EAAAA,MAAMuC,QAAQ0F,GAAQ,CACtB,IAAK,IAAI2K,KAAQ3K,EACb2K,EAAK4a,GAAa1f,EAGtB/S,KAAKkN,MAAQA,EAAMwlB,MAAM,EAC7B,MAEIxlB,EAAMulB,GAAa1f,EAEnB/S,KAAKkN,MAAQjI,EAAAA,MAAMqC,OAAO,CAAA,EAAI4F,EAEtC,GAEJ1H,GAAW,CACP0E,QAAM,CAAE0J,MAAM,KACfwe,GAAgC9nB,UAAW,gBAC9C9E,GAAW,CACP0E,QAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,OAAQ2Q,aAAa,KACzEse,GAAgC9nB,UAAW,mBAC9C9E,GAAW,CACP0E,QAAM,CAAE0J,MAAM,KACfwe,GAAgC9nB,UAAW,gBAC9C8nB,GAAkC5sB,GAAW,CACzCwO,EAAAA,cAAc,CAAEC,QAAS3I,EAAAA,EAAI,2BAC9B8mB,IAGH,IAAIO,GAAwB,cAAoCvd,EAC5D,WAAAnW,GACIE,SAAS4G,WAET/F,KAAK4yB,OAAS,GACd5yB,KAAK8M,UAAY,EACrB,CACA,eAAI0J,GACA,MAAO,EACX,CACA,kBAAAG,CAAmBO,GAEnB,CACA,QAAArB,CAAS7M,GACL,OAAO,IAAI8C,QAAQ,CAACyD,EAASnD,KACzB,IAAI0B,EAAM9N,KAAK6yB,iBACftjB,EAAQvP,KAAK+S,MAAQjF,IAE7B,CACA,WAAA4I,CAAY5I,GACR9N,KAAK8yB,eAAehlB,EACxB,CACA,YAAA2G,CAAa1B,GACT,MAAO,EACX,CACA,+BAAAkC,CAAgCF,GAC5B,OAAO3K,EAAAA,mBAAmByJ,KAAKiB,QAAQC,EAAM/U,KACjD,CACA,uBAAA4N,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GAErC,SADDvK,EAEAxD,KAAK8yB,gBAGjB,CACA,UAAAC,CAAW/pB,GACP,IAAI9J,EAAO8J,EAAIE,OACf,MAAM8pB,EAAO/tB,EAAAA,MAAM8oB,OAAO7uB,EAAK8V,SAAUie,EAAU/zB,EAAK+zB,QACxDA,EAAQrQ,MAAMC,MAAQmQ,EAAKnQ,MAAQ,KACnCoQ,EAAQrQ,MAAME,OAASkQ,EAAKlQ,OAAS,IACzC,CACA,QAAAoQ,CAASlqB,GACa,UAAdhJ,KAAKH,MACLG,KAAKmzB,gBAEb,CACA,KAAAxoB,GACIxL,MAAMwL,QAGN3K,KAAK8M,UAAUzD,QAAQ8C,IACnBA,EAAEE,eAEV,CACA,WAAA+mB,CAAYpqB,GACR,MAAMiK,EAAMjK,EAAIE,OAAOjB,MAAOorB,EAAWrzB,KAAK8M,UAC9C9D,EAAIE,OAAOslB,IAAI,GAAG7P,WAAWtV,QAAQnJ,IAC7BA,aAAamK,SAAWnK,EAAEozB,YAAehoB,EAAAA,EAAI,SAC7C+nB,EAASngB,OAAOD,EAAKogB,EAASzyB,OAASqS,EAAK/S,IAGxD,CACA,WAAAqzB,CAAYtgB,EAAKjK,GACmB,WAA5BA,EAAIE,OAAO+D,cACRhI,EAAAA,MAAM4O,KAAK2f,UAAUxzB,KAAK4yB,OAAO3f,MAAUhO,EAAAA,MAAM4O,KAAK2f,UAAUxqB,EAAIE,OAAOkG,gBAC9EpP,KAAK4yB,OAAO1f,OAAOD,EAAK,EAAGjK,EAAIE,OAAOkG,cACtCpP,KAAKmzB,iBAEb,CACA,SAAAM,CAAUzqB,GAEN6C,EAAAA,aAAa7C,EAAI0qB,UACjB,MAAMxmB,EAAQlN,KAAK4yB,OACD,UAAd5yB,KAAKH,KACLqN,EAAMgG,OAAOlK,EAAIE,OAAQ,GAGzBgE,EAAMgG,OAAO,EAAGhG,EAAMtM,QAE1BZ,KAAKmzB,gBACT,CACA,QAAAQ,CAAS3qB,GACL,MAAMnJ,EAAOG,KAAKH,KAAMqN,EAAQlN,KAAK4yB,OACxB,UAAT/yB,EACAqN,EAAM3K,KAAK,IAGX2K,EAAMgG,OAAO,EAAGhG,EAAMtM,OAAQ,CAAA,GAElCZ,KAAKmzB,gBACT,CACA,cAAAA,GACInzB,KAAK4V,cAAc,IAAIpN,MAAM,UACjC,CACA,cAAAsqB,CAAe/iB,EAAS/P,KAAK+S,OACzB,GACS,UADD/S,KAAKH,KACT,CACI,IAAIa,EAAMqP,GAAU,GAChB9K,EAAAA,MAAMuC,QAAQ9G,IACdV,KAAK4yB,OAAOgB,UAAUlzB,EAE1B,KACJ,CACI,MAAMwM,EAAQlN,KAAK4yB,OAAQhyB,EAASsM,EAAMtM,OAC3B,IAAXA,GAAgBsM,EAAM,KAAO6C,IACxB9K,EAAAA,MAAMsG,OAAOwE,GAId7C,EAAMgG,OAAO,EAAGtS,GAHhBsM,EAAMgG,OAAO,EAAGtS,EAAQmP,GAMhC,CAEZ,CACA,cAAA8iB,CAAe3lB,EAAQlN,KAAK4yB,QACxB,MACS,UADD5yB,KAAKH,KAEEoF,EAAAA,MAAM4uB,MAAM3mB,GAEZA,GAASA,EAAMtM,QAAUsM,EAAM,IAAM,IAExD,GAEJ1H,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpDwvB,GAAsBroB,UAAW,2BACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpD8e,GAAsBroB,UAAW,uBACpC9E,GAAW,CACPka,YAAU,IAAM9Q,EAAAA,KAAO,eACxB+jB,GAAsBroB,UAAW,qBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,eACfqnB,GAAsBroB,UAAW,mBACpC9E,GAAW,CACPka,YAAU,IAAM9Q,EAAAA,KAAO,4BACxB+jB,GAAsBroB,UAAW,mBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCwvB,GAAsBroB,UAAW,eACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvC2vB,GAAsBroB,UAAW,oBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmByJ,QACvC8e,GAAsBroB,UAAW,mBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmByJ,QACvC8e,GAAsBroB,UAAW,iBACpCqoB,GAAwBntB,GAAW,CAC/BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,aAAcsP,OAAQC,EAAAA,SAASC,gBAC5CC,SAAU,IAAIzP,EAAAA,yFAAyF3B,EAAAA,WAAWmqB,6EACxGllB,gDAEPtD,EAAAA,kBAAkBsD,wEACdtD,EAAAA,wCAAwCsD,EAAAA,gKAAgKA,EAAAA,2CAA2CtD,4BACnPA,EAAAA,oDAAoDA,EAAAA,wEAAwEsD,EAAAA,uDAAuDtD,EAAAA,YAAYA,4BAC/LA,EAAAA,4HAA4H6F,mLAAiL7F,EAAAA,yBAC7SA,EAAAA,mEAAmEsD,uIAAqItD,EAAAA,wBAC3MA,iDAGLA,EAAAA,wNAAwNA,kBAC3NA,8BACUsD,EAAAA,+BAA+BA,mMAG1CtD,qFACM6gB,EAAAA,GAAG4H,kBAAkBC,4CACrB7H,EAAAA,GAAG4H,kBAAkBE,qDACT9H,EAAAA,GAAG+H,aAAaC,sBAAsBhI,KAAGiI,aAAaC,+EAA+E/oB,EAAAA,kBAEvJqnB,IC3OH,IAAIntB,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,MAAM8kB,GAAwB,CAC1BhW,QAAS,CAACC,EAAMsO,IACL,SAASrC,KAAKjM,GAAQ3K,EAAAA,mBAAmByJ,KAAKiB,QAAQC,GAAQ3K,EAAAA,mBAAmBjH,OAAO2R,QAAQC,GAE3GG,YAAa,CAACzO,EAAM4c,IACI,iBAAT5c,EACAA,EAEJ2D,EAAAA,mBAAmByJ,KAAKqB,YAAYzO,EAAM4c,IAQzD,IAAIiR,GAA6B,cAAyClf,EACtE,WAAAnW,GACIE,QACAa,KAAKu0B,UAAY,MACjBv0B,KAAKw0B,QAAU,GACfx0B,KAAKy0B,OAAS,GACdz0B,KAAK00B,KAAO,GACZ10B,KAAK20B,KAAO,GACZ30B,KAAK40B,OAAS,GACd50B,KAAK60B,MAAQ,KACb70B,KAAK80B,QAAU,KACf90B,KAAK+0B,QAAU,IACnB,CACA,eAAIve,GACA,MAAO,CAACxW,KAAKg1B,QAASh1B,KAAKi1B,SAAUj1B,KAAKk1B,QAASl1B,KAAKm1B,QAASn1B,KAAKo1B,OAAQp1B,KAAKq1B,OACvF,CACA,kBAAA1e,CAAmBO,GACflX,KAAKs1B,WAAW/W,OAASrH,CAC7B,CACA,+BAAAjC,CAAgCF,GAC5B,OAAO3K,qBAAmBnH,SAAS6R,QAAQC,EAC/C,CACA,iBAAAyG,GACIrc,MAAMqc,oBACN,MAAM+Z,EAAQ,IAAIvK,KAClB,IAAIG,EAAOnrB,KAAKmrB,KAAOoK,EAAMnK,cAC7BprB,KAAKw1B,IAAM,IAAIxK,KAAKG,EAAO,IAAK,EAAG,GACnCnrB,KAAKy1B,IAAM,IAAIzK,KAAKG,EAAO,GAAI,GAAI,IACnCnrB,KAAKurB,MAAQgK,EAAM1J,WAEnB,IAAIiE,EAAS,GAAI+E,EAAQ,GAAIC,EAAU,GAAIY,EAAUzwB,EAAAA,MAAMywB,QAE3D,IAAK,IAAItvB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,IAAI+R,EAAO,IAAI6S,KAAKG,EAAM/kB,EAAG,GAAI+Q,EAAQgB,EAAKkT,eAAepmB,EAAAA,MAAMqmB,KAAKtrB,MAAO,CAAEurB,MAAO,UAExFuE,EAAOvtB,KAAK,CAAEwQ,MAAO3M,EAAG+R,KAAMA,EAAMhB,MAAOA,GAC/C,CACAnX,KAAKw0B,QAAU1E,EAEf,IAAK,IAAI1pB,EAAI,EAAGA,EAAI,GAAIA,IACpByuB,EAAMtyB,KAAKmzB,EAAQtvB,EAAG,EAAG,MAE7BpG,KAAK00B,KAAOG,EAEZ,IAAK,IAAIzuB,EAAI,EAAGA,EAAI,GAAIA,IACpB0uB,EAAQvyB,KAAKmzB,EAAQtvB,EAAG,EAAG,MAE/BpG,KAAK20B,KAAOG,CAChB,CACA,uBAAAlnB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,YACDxD,KAAK0S,IAAIC,UAAQC,SAASC,IAAK,0BAA0BhF,QAAUC,KACnE9N,KAAK21B,iBAAiB7nB,GAEtB,MACJ,IAAK,MACL,IAAK,MACI7I,EAAAA,MAAMC,cAAclF,KAAKw1B,MACtBvwB,QAAMC,cAAclF,KAAKy1B,MAC7Bz1B,KAAK41B,cAET,MACJ,IAAK,OACL,IAAK,QACD51B,KAAK61B,gBACL,MACJ,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,UACD71B,KAAK81B,WAGjB,CACA,WAAApf,CAAY5I,GACR9N,KAAK0tB,UAAYzoB,QAAM2mB,UAAU9d,EACrC,CACA,gBAAA6nB,CAAiB7iB,GACb,IAAKA,EAED,YADA9S,KAAKmY,UAAOzN,GAGC,iBAANoI,IACPA,EAAI7N,EAAAA,MAAM2mB,UAAU9Y,IACxB,MAAM4iB,EAAWtvB,GAAMnB,EAAAA,MAAMywB,QAAQtvB,EAAG,EAAG,KAC3CpG,KAAKmrB,KAAOrY,EAAEsY,cACdprB,KAAKurB,MAAQzY,EAAE+Y,WACf7rB,KAAKmY,KAAOrF,EAAEijB,UACd/1B,KAAK60B,MAAQa,EAAQ5iB,EAAEkjB,YACvBh2B,KAAK80B,QAAUY,EAAQ5iB,EAAEmjB,cACzBj2B,KAAK+0B,QAAUW,EAAQ5iB,EAAEojB,aAC7B,CACA,WAAAN,GACI,IAAIO,EAAQ,GACZ,MAAMX,EAAMvwB,EAAAA,MAAM2mB,UAAU5rB,KAAKw1B,KAAMC,EAAMxwB,EAAAA,MAAM2mB,UAAU5rB,KAAKy1B,KAClE,IAAK,IAAIrvB,EAAIovB,EAAIpK,cAAehlB,GAAKqvB,EAAIrK,cAAehlB,IACpD+vB,EAAM5zB,KAAK6D,GAEfpG,KAAK40B,OAASuB,CAClB,CACA,QAAAtgB,CAAS7M,GACL,OAAO,IAAI8C,QAAQ,CAACyD,EAASC,KAOzBD,EAAQvP,KAAK+S,MAAQ/S,KAAKo2B,kBAElC,CACA,aAAAP,CAAc7sB,GACNA,GACAA,EAAIqtB,kBACR,MAAMvjB,EAAI9S,KAAMmH,EAAU,CAAE0oB,QAAS,QAASZ,IAAK,WAAa5W,EAAUyP,IACtE,IACI,IAAIwO,GAAcxjB,EAAEyY,MACpB,OADoC,IAAIP,MAAMlY,EAAEqY,MAAOrY,EAAEyY,MAAOzD,GAClD+D,YAAcyK,CAChC,CACA,MAAOp2B,GACH,OAAO,CACX,GAEJ,IAAIq2B,EAAQ,GACZ,IAAKtxB,EAAAA,MAAMC,cAAc4N,EAAEqY,QAAUlmB,EAAAA,MAAMC,cAAc4N,EAAEyY,OAAQ,CAC/D,IAAI0D,EAAM,EACV,EAAG,CACC,IAAI9W,EAAO,IAAI6S,MAAMlY,EAAEqY,MAAOrY,EAAEyY,MAAO0D,GAAM9X,EAAQgB,EAAKkT,eAAepmB,EAAAA,MAAMqmB,KAAKtrB,MAAOmH,GAC3FovB,EAAMh0B,KAAK,CAAEwQ,MAAOkc,EAAK9W,KAAMA,EAAMhB,MAAOA,EAAO1L,SAAU0M,EAAOnY,KAAKw1B,KAAOrd,EAAOnY,KAAKy1B,KAChG,OAASpd,IAAS4W,GACtB,CACAjvB,KAAKy0B,OAAS8B,EACTle,GAAQrY,KAAKmY,MAGdnY,KAAK81B,WAFL91B,KAAKmY,KAAO,EAGpB,CACA,aAAAie,GACI,MAAMtjB,EAAI9S,KACV,GAAIiF,EAAAA,MAAMC,cAAc4N,EAAEqY,OACnBlmB,QAAMC,cAAc4N,EAAEyY,QACtBtmB,EAAAA,MAAMC,cAAc4N,EAAEqF,MACzB,OAAO,KAIP,IACI,IAAIpF,EAAQ,IAAIiY,MAAMlY,EAAEqY,MAAOrY,EAAEyY,OAAQzY,EAAEqF,MAK3C,OAJApF,EAAMyjB,UAAU1jB,EAAE+hB,OAClB9hB,EAAM0jB,YAAY3jB,EAAEgiB,SACpB/hB,EAAM2jB,YAAY5jB,EAAEiiB,SACpBhiB,EAAM4jB,gBAAgB,GACjB5zB,OAAOmV,MAAMnF,EAAM8d,WAIb,KAHA9d,CAIf,CACA,MAAO7S,GACH,OAAO,IACX,CAER,CACA,QAAA41B,CAAS9sB,GACDA,GACAA,EAAIqtB,kBAERr2B,KAAK0tB,UAAY1tB,KAAKo2B,eAC1B,CACA,YAAA3hB,CAAa3G,GACT,MAAMgF,EAA0BhF,EAChC,OAAIgF,EACO7N,EAAAA,MAAMyrB,KAAKvY,KAAKrF,EAAG9S,KAAK8C,SAA6B,OAAlB9C,KAAKu0B,UAAqB,OAAS,SAAUtvB,EAAAA,MAAMqmB,KAAKtrB,OAE/F,EACX,GAEJwF,GAAW,CACPka,EAAAA,UAAU,IAAM9Q,EAAAA,KAAO,iCAAmCtD,EAAAA,EAAI,YAC/DgpB,GAA2BhqB,UAAW,kBACzC9E,GAAW,CACPka,EAAAA,UAAU,IAAM9Q,EAAAA,KAAO,iCAAmCtD,EAAAA,EAAI,YAC/DgpB,GAA2BhqB,UAAW,mBACzC9E,GAAW,CACPka,EAAAA,UAAU,IAAM9Q,EAAAA,KAAO,iCAAmCtD,EAAAA,EAAI,YAC/DgpB,GAA2BhqB,UAAW,kBACzC9E,GAAW,CACPka,EAAAA,UAAU,IAAM9Q,EAAAA,KAAO,iCAAmCtD,EAAAA,EAAI,YAC/DgpB,GAA2BhqB,UAAW,kBACzC9E,GAAW,CACPka,EAAAA,UAAU,IAAM9Q,EAAAA,KAAO,iCAAmCtD,EAAAA,EAAI,YAC/DgpB,GAA2BhqB,UAAW,iBACzC9E,GAAW,CACPka,EAAAA,UAAU,IAAM9Q,EAAAA,KAAO,iCAAmCtD,EAAAA,EAAI,YAC/DgpB,GAA2BhqB,UAAW,iBACzC9E,GAAW,CACPka,EAAAA,UAAU,OAAO9Q,EAAAA,gCAClB0lB,GAA2BhqB,UAAW,qBACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBnH,YACvCqxB,GAA2BhqB,UAAW,oBACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBnH,YACvCqxB,GAA2BhqB,UAAW,cACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBnH,YACvCqxB,GAA2BhqB,UAAW,cACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCmxB,GAA2BhqB,UAAW,oBACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAW2gB,MACjCwJ,GAA2BhqB,UAAW,iBACzC9E,GAAW,CACP0E,EAAAA,SACDoqB,GAA2BhqB,UAAW,iBACzC9E,GAAW,CACP0E,EAAAA,SACDoqB,GAA2BhqB,UAAW,iBACzC9E,GAAW,CACP0E,EAAAA,SACDoqB,GAA2BhqB,UAAW,eACzC9E,GAAW,CACP0E,EAAAA,SACDoqB,GAA2BhqB,UAAW,gBACzC9E,GAAW,CACP0E,EAAAA,SACDoqB,GAA2BhqB,UAAW,eACzC9E,GAAW,CACP0E,EAAAA,SACDoqB,GAA2BhqB,UAAW,gBACzC9E,GAAW,CACP0E,EAAAA,SACDoqB,GAA2BhqB,UAAW,kBACzC9E,GAAW,CACP0E,EAAAA,SACDoqB,GAA2BhqB,UAAW,kBACzC9E,GAAW,CACPuO,EAAAA,SAAS,KACVugB,GAA2BhqB,UAAW,WAAY,MACrDgqB,GAA6B9uB,GAAW,CACpCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,mBAAoBsP,OAAQC,EAAAA,SAASC,gBAClDC,SAAU,eAAenM,6CACfA,EAAAA,+BAA+BA,0CAE/BA,uCACXtD,yGACCA,wCAEUsD,wCACXtD,wJACCA,wCAEUsD,uCACXtD,sJACCA,6BAEDA,EAAAA,kBAAkBsD,+EAClBtD,sFACCA,EAAAA,cAAcA,sBAEfA,EAAAA,kBAAkBsD,iFAClBtD,wFACCA,EAAAA,cAAcA,sBAEfA,EAAAA,kBAAkBsD,oFAClBtD,wFACCA,EAAAA,cAAcA,kCAGfA,EAAAA,kBAAkBsD,0LAEStD,EAAAA,yCAAyCA,iDAC3CA,EAAAA,kFAAkFA,wCAE1GA,oBACDA,EAAAA,iBAAiBsD,kLAAgLtD,EAAAA,qBAGrMgpB,ICpTH,IAAI9uB,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIO,MAAM4wB,WAAkCltB,EAC3C,WAAAzK,GACIE,OACJ,CACA,qBAAA0K,GACI1K,MAAM0K,wBACN5E,EAAAA,MAAMgM,SAASjR,KAAM4O,EAAAA,KAAO,aAChC,CACA,uBAAAhB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GAC9C,IAAIjE,EAAO9J,KAAK8J,KAChB,OAAQtG,GACJ,IAAK,QACDqK,GAAO/D,GAAQA,EAAK4J,oBAAoB5F,EAAK9N,MAC7C8J,GAAQA,EAAK2J,kBAAkB3F,EAAK9N,MACpC,MACJ,IAAK,UACD,MACJ,IAAK,OACD,IAAI0U,EAAI1U,KAAKuN,MACRtI,EAAAA,MAAMC,cAAcwP,KACV,MAAP7G,GACAA,EAAI6F,oBAAoBgB,EAAG1U,MACpB,MAAP8N,GACAA,EAAI2F,kBAAkBiB,EAAG1U,OAEjC,MACJ,IAAK,WACDA,KAAK62B,6BAGjB,CACAC,GACA,0BAAAD,GACI,MAAM/sB,EAAO9J,KAAK8J,KAAMyD,EAAQvN,KAAKuN,MAChCtI,EAAAA,MAAMsG,OAAOzB,IAAU7E,QAAMC,cAAcqI,KAC5CsM,qBAAqB7Z,MAAK82B,GAC1B92B,MAAK82B,EAAS/c,sBAAsB,KAChCjQ,EAAKoI,SAAS3E,KAG1B,CACA,QAAA2E,CAASpE,GACL,OAAI9N,KAAKyL,SACExG,EAAAA,MAAM0sB,YAAW,GAErB3xB,KAAK+2B,SAASjpB,EACzB,EAEJtI,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvC4zB,GAA0BtsB,UAAW,kBACxC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCyzB,GAA0BtsB,UAAW,uBACxC9E,GAAW,CACP0E,QAAM,CAAE0J,MAAM,EAAOE,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBjH,UACvEyzB,GAA0BtsB,UAAW,gBACjC,MAAM0sB,GAA2B,IAAI1rB,EAAAA,8FAA8FA,EAAAA,UAE1I,SAAS2rB,GAAanpB,GAClB,OAAO7I,EAAAA,MAAMC,cAAc4I,EAC/B,CACA,IAAIopB,GAAgC,cAA4CN,GAC5E,QAAAG,CAASjpB,GACL,IAAIrM,GAAUw1B,GAAanpB,GAC3B,OAAO7I,EAAAA,MAAM0sB,WAAWlwB,EAC5B,GAEJy1B,GAAgC1xB,GAAW,CACvCwO,gBAAc,CAAEC,QAAS3I,EAAAA,EAAI,sBAAuByP,SAAUic,GAA0Bpc,OAAQC,EAAAA,SAASC,mBAC1Goc,IAEH,IAAIC,GAA6B,cAAyCP,GACtE,uBAAAhpB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACzCA,GAAkB,YAATvK,GACVxD,KAAK62B,4BAEb,CACA,QAAAE,CAASjpB,GACL,IAAIrM,GAAS,EAAM21B,EAAUp3B,KAAKo3B,QAIlC,OAHKH,GAAanpB,KACdrM,EAAS,IAAI41B,OAAOD,GAASpW,KAAKlT,IAE/B7I,EAAAA,MAAM0sB,WAAWlwB,EAC5B,GAEJ+D,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpDg0B,GAA2B7sB,UAAW,kBACzC6sB,GAA6B3xB,GAAW,CACpCwO,gBAAc,CAAEC,QAAS3I,EAAAA,EAAI,mBAAoByP,SAAUic,GAA0Bpc,OAAQC,EAAAA,SAASC,mBACvGqc,IAEH,IAAIG,GAA8B,cAA0CV,GACxE,uBAAAhpB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACzCA,GACS,QAATvK,GAA2B,QAATA,GACnBxD,KAAK62B,4BAEb,CACA,QAAAE,CAASjpB,GACL,IAAIrM,GAAS,EAOb,OANKw1B,GAAanpB,KACV9N,KAAKw1B,KAAO,IACZ/zB,EAASA,IAAWqM,GAAO,IAAIqH,WAAWvU,QAAUZ,KAAKw1B,KACzDx1B,KAAKy1B,KAAO,IACZh0B,EAASA,IAAWqM,GAAO,IAAIqH,WAAWvU,QAAUZ,KAAKy1B,MAE1DxwB,EAAAA,MAAM0sB,WAAWlwB,EAC5B,GAEJ+D,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDu0B,GAA4BhtB,UAAW,cAC1C9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDu0B,GAA4BhtB,UAAW,cAC1CgtB,GAA8B9xB,GAAW,CACrCwO,gBAAc,CAAEC,QAAS3I,EAAAA,EAAI,oBAAqByP,SAAUic,GAA0Bpc,OAAQC,EAAAA,SAASC,mBACxGwc,IAIH,IAAIC,GAA6B,cAAyCX,GACtE,uBAAAhpB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACzCA,GACS,QAATvK,GAA2B,QAATA,GACnBxD,KAAK62B,4BAEb,CACA,QAAAE,CAASjpB,GACL,IAAIrM,GAAS,EACb,IAAKw1B,GAAanpB,GAAM,CACpB,IAAIqK,EAAOrK,EACPA,aAAekd,MAAwB,iBAARld,IAAqBqK,EAAOlT,EAAAA,MAAM2mB,UAAU9d,cAAiBkd,MAAQwM,SAASrf,EAAK0Y,YAClG,MAAZ7wB,KAAKw1B,MACL/zB,EAASA,GAAU0W,EAAK0Y,WAAa5rB,QAAM2mB,UAAU5rB,KAAKw1B,KAAK3E,WACnD,MAAZ7wB,KAAKy1B,MACLh0B,EAASA,GAAU0W,EAAK0Y,WAAa5rB,QAAM2mB,UAAU5rB,KAAKy1B,KAAK5E,aAGnD,MAAZ7wB,KAAKw1B,MACL/zB,EAASA,GAAUqM,GAAO9N,KAAKw1B,KACnB,MAAZx1B,KAAKy1B,MACLh0B,EAASA,GAAUqM,GAAO9N,KAAKy1B,KAE3C,CACA,OAAOxwB,EAAAA,MAAM0sB,WAAWlwB,EAC5B,GAEJ+D,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDw0B,GAA2BjtB,UAAW,cACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDw0B,GAA2BjtB,UAAW,cACzCitB,GAA6B/xB,GAAW,CACpCwO,gBAAc,CAAEC,QAAS3I,EAAAA,EAAI,mBAAoByP,SAAUic,GAA0Bpc,OAAQC,EAAAA,SAASC,mBACvGyc,IAIH,IAAIE,GAA+B,cAA2Cb,GAC1E,uBAAAhpB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACzCA,GACS,aAATvK,GAAgC,OAATA,GACxBxD,KAAK62B,4BAEb,CACA,2BAAAa,CAA4B5pB,EAAK6pB,GAE7B,OAAI1yB,EAAAA,MAAMmT,MAAMC,OAAOvK,IAAQ7I,EAAAA,MAAMmT,MAAMC,OAAOsf,GACvC,CAAC1yB,EAAAA,MAAM2mB,UAAU9d,GAAM7I,QAAM2mB,UAAU+L,IAE3C,CAAC7pB,EAAK6pB,EACjB,CACA,QAAAZ,CAASjpB,GACL,IAAIrM,GAAS,EAAMk2B,EAAQ33B,KAAK+oB,GAChC,IAAKkO,GAAanpB,KAASmpB,GAAaU,GAAQ,CAC5C,MAAMC,EAAW53B,KAAK03B,4BAA4B5pB,EAAK6pB,GAEvD,OADA7pB,EAAM8pB,EAAS,GAAID,EAAQC,EAAS,GAC5B53B,KAAK63B,UACT,IAAK,cACDp2B,EAASqM,GAAO6pB,EAChB,MACJ,IAAK,OACDl2B,EAASqM,EAAM6pB,EACf,MACJ,IAAK,iBACDl2B,EAASqM,GAAO6pB,EAChB,MACJ,IAAK,UACDl2B,EAASqM,EAAM6pB,EACf,MACJ,IAAK,WACDl2B,EAASqM,IAAQ6pB,EACjB,MACJ,QACIl2B,EAASqM,IAAQ6pB,EAG7B,CACA,OAAO1yB,EAAAA,MAAM0sB,WAAWlwB,EAC5B,GAEJ+D,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpDs0B,GAA6BntB,UAAW,mBAC3C9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOE,aAAa,KACnC2jB,GAA6BntB,UAAW,aAC3CmtB,GAA+BjyB,GAAW,CACtCwO,gBAAc,CAAEC,QAAS3I,EAAAA,EAAI,qBAAsByP,SAAUic,GAA0Bpc,OAAQC,EAAAA,SAASC,mBACzG2c,IAGH,IAAIK,GAA8B,cAA0ClB,GACxE,uBAAAhpB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACzCA,GACS,YAATvK,GAA+B,YAATA,GACvBxD,KAAK62B,4BAEb,CACA,QAAAE,CAASjpB,GACL,IAAIrM,GAAS,EAAM21B,EAAUp3B,KAAKo3B,QAASW,EAAU/3B,KAAK+3B,QAC1D,IAAKd,GAAanpB,GAAM,CAEpB,IAAK7I,EAAAA,MAAMC,cAAckyB,GAAU,CAC/B,IAAIY,EAA0B,iBAARlqB,EAAmBA,EAAMA,EAAItK,KACnD/B,EAAS,IAAI41B,OAAOD,EAAS,KAAKpW,KAAKgX,EAC3C,EAEK/yB,EAAAA,MAAMsG,OAAOwsB,IAA2B,iBAARjqB,GAAoBA,EAAIklB,KAAO,IAChEvxB,EAASA,GAAUqM,EAAIklB,MAAQ+E,EAEvC,CACA,OAAO9yB,EAAAA,MAAM0sB,WAAWlwB,EAC5B,GAEJ+D,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD20B,GAA4BxtB,UAAW,kBAC1C9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD20B,GAA4BxtB,UAAW,kBAC1CwtB,GAA8BtyB,GAAW,CACrCwO,gBAAc,CAAEC,QAAS3I,EAAAA,EAAI,oBAAqByP,SAAUic,GAA0Bpc,OAAQC,EAAAA,SAASC,mBACxGgd,IAEH,IAAIG,GAA6B,cAAyCrB,GACtE,WAAA33B,GACIE,SAAS4G,WACT/F,KAAKk4B,eAAiB,IAC1B,CACA,eAAAC,GACI,MACMzoB,EADU1P,KAAKo4B,SACE1oB,OACvB,OAAQA,GACJ,IAAK,OACD,OAAO,EAEX,IAAK,QACD,OAAO,EAEX,QACI,IACI,IAAI3P,EAAOgB,KAAKd,MAAMyP,GAEtB,OADUzK,EAAAA,MAAMozB,aAAat4B,KACd,CACnB,CACA,MAAOqM,GACH,OAAO,CACX,EAEZ,CACA,MAAAksB,CAAOxqB,GACH,MAAM8B,EAAW5P,KAAKk4B,eAChBtsB,EAAU5L,KAAKo4B,SACrB,IAAIG,EAASv4B,KAAK0C,YAAc,CAAA,EAChC61B,EAAOv4B,KAAKuN,OAASO,EACrB,MAAM0qB,EAAU,CACZ91B,WAAY61B,EACZ94B,IAAKO,KAAKP,IACVg5B,GAAI,OACJ32B,OAAQ9B,KAAK8B,QAEX42B,EAAoBzzB,EAAAA,MAAM0zB,kBAAkBH,GAG5CI,EAAc54B,MAAK44B,EACzB,IAAIC,GAAmB,EAIvB,GAHK5zB,EAAAA,MAAMC,cAAc0zB,KACrBC,EAAoBH,IAAsBE,GAE1CC,EAAkB,CAClB,MAAMnpB,EAAS1P,KAAKm4B,kBACpBvoB,EAASL,QAAQG,EACrB,MAEIzK,QAAMqC,OAAOsE,EAAS4sB,GAEtBM,aAAa94B,KAAK+4B,YAClB/4B,KAAK+4B,WAAaC,WAAW,KACzBptB,EAAQhM,QAAQqM,KAAKG,IACjB,MAAMsD,EAAS1P,KAAKm4B,kBACpBvoB,EAASL,QAAQG,GAEjB1P,MAAK44B,EAAeF,GACrBtsB,IACCwD,EAASL,SAAQ,MAEtB,KAEP,OAAOK,EAAS2B,OACpB,CACAqnB,GACA,QAAA7B,CAASjpB,GACL,OAAI7I,EAAAA,MAAMC,cAAc4I,GACb7I,EAAAA,MAAM0sB,YAAW,IAGxB3xB,KAAKk4B,eAAiBl4B,KAAKk4B,eAAiBroB,EAAAA,aAAaC,QAClD9P,KAAKs4B,OAAOxqB,GAAK7B,KAAKjG,IACzBhG,KAAKk4B,eAAiB,KACflyB,GACRoG,IACCpM,KAAKk4B,eAAiB,MACf,IAGnB,CACA,uBAAAtqB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,IACzCA,EACD,OAAQvK,GACJ,IAAK,aACL,IAAK,MACL,IAAK,SACL,IAAK,mBACL,IAAK,eACDxD,KAAK62B,6BAIrB,GAEJrxB,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpDokB,GAA2B3tB,UAAW,qBACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpDokB,GAA2B3tB,UAAW,2BACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpDokB,GAA2B3tB,UAAW,uBACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD80B,GAA2B3tB,UAAW,cACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD80B,GAA2B3tB,UAAW,iBACzC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,WACf2sB,GAA2B3tB,UAAW,mBACzC2tB,GAA6BzyB,GAAW,CACpCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,mBACbyP,SAAUic,GAA2B,IAAI1rB,EAAAA,6HAA6HA,EAAAA,WAAYsP,OAAQC,WAASC,mBAExMmd,IAEH,IAAIgB,GAA8B,cAA0CrC,GACxE,uBAAAhpB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACzCA,GACS,YAATvK,GACDxD,KAAK62B,4BAEb,CACA,QAAAE,CAASjpB,GACL,IAAIrM,GAAS,EAIb,OAHKw1B,GAAanpB,KACdrM,IAAWzB,KAAKk5B,SAEbj0B,EAAAA,MAAM0sB,WAAWlwB,EAC5B,GAEJ+D,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBpH,WACpDi2B,GAA4B3uB,UAAW,kBAC1C2uB,GAA8BzzB,GAAW,CACrCwO,gBAAc,CAAEC,QAAS3I,EAAAA,EAAI,oBAAqByP,SAAUic,GAA0Bpc,OAAQC,EAAAA,SAASC,mBACxGme,ICvZH,IAAIzzB,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAUA,SAASmzB,GAAgB/B,GACrB,OAAO,IAAIC,OAAOD,GAAuCgC,MAC7D,CAOA,IAAIC,GAAwB,cAAoC3vB,EAC5D,WAAAzK,CAAYq6B,EAAM,IAAIpN,EAAAA,WAAaC,GAAGoN,iBAClCp6B,QACAa,KAAKs5B,IAAMA,EACXt5B,KAAKw5B,6BAAgCt5B,IAEjCF,KAAKwM,cAAc,IAAI2C,EAAAA,oBAAoB,CAAElC,aAAc,SAAUmC,aAAcpP,KAAK+P,WAE5F/P,KAAKy5B,mBAAsBrtB,IACvBqC,SAASirB,eAAe15B,KAAKwxB,OAAOI,SAASta,SAEjDtX,KAAKmxB,KAAO,IAAMlsB,EAAAA,MAAMoJ,YAC5B,CACA,OAAI1I,GACA,OAAO3F,KAAKmxB,IAChB,CACA,WAAIvlB,GACA,OAAO5L,KAAKo4B,QAChB,CACA,SAAI1rB,GACA,OAAO1M,KAAK25B,MAChB,CACA,qBAAA9vB,GACI1K,MAAM0K,wBACN7J,KAAKiO,eACLjO,KAAK45B,iBACT,CACA,uBAAAhsB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,WACDxD,KAAK65B,iBACL,MACJ,IAAK,WACD75B,KAAK65B,iBACL75B,KAAK85B,cACL95B,KAAK+5B,gBACL/5B,KAAKg6B,gBACL,MACJ,IAAK,SAKGnsB,aAAeyF,aACfzF,EAAIpE,oBAAoB0H,EAAAA,wBAAyBnR,KAAKw5B,8BAA8B,GAEpF1rB,aAAewF,aACfxF,EAAIvE,iBAAiB4H,EAAAA,wBAAyBnR,KAAKw5B,8BAA8B,GAIjG,CACA,oBAAArrB,GACQnO,KAAK+P,kBAAkBuD,aACvBtT,KAAK+P,OAAOtG,oBAAoB0H,EAAAA,wBAAyBnR,KAAKw5B,8BAA8B,GAE3Fv0B,EAAAA,MAAMsG,OAAOvL,KAAKwxB,SACnBxxB,KAAKwxB,OAAO/nB,oBAAoB,QAASzJ,KAAKy5B,oBAAoB,GAEjEx0B,EAAAA,MAAMsG,OAAOvL,KAAKi6B,WACnBj6B,KAAKi6B,SAAS5iB,SAElBlY,MAAMgP,sBACV,CACA,iBAAA+rB,GACI,MAAMhzB,EAAWlH,KAAKkH,UAAYlH,KAAKkH,SAASizB,OAASn6B,KAAKkH,SAASizB,MAAMpyB,UAAW,EACxF,MAAwB,iBAAbb,EACAA,EAEJ,CAAErE,KAAMqE,EACnB,CACA,cAAA2yB,GACI,IAAIO,EAAWryB,EACf,MAAMsyB,EAAYr6B,KAAKkX,WAC+B,KAA7CnP,EAAU/H,KAAKk6B,qBAAqBr3B,MACtCoC,EAAAA,MAAMC,cAAck1B,EAAYp6B,KAAKkH,UAAYlH,KAAKkH,SAASX,SAAWvG,KAAKkH,SAASX,QAAQqB,aAEvG,GAAI3C,EAAAA,MAAMsG,OAAOvL,KAAKi6B,YAAcI,EAAW,CAC3C,IAAIC,EAAU7rB,SAASC,cAAcpD,EAAAA,EAAI,YACzCgvB,EAAQnzB,QAAU,CACdozB,SAAUrO,EAAAA,WAAaC,GAAGqO,gBAAgBC,QAC1CC,QAAS3yB,EAAQ2yB,SAAWxO,EAAAA,WAAaC,GAAGwO,eAAeC,MAC3DC,SAAU9yB,EAAQ8yB,UAAY3O,EAAAA,WAAaC,GAAG2O,gBAAgBC,IAC9DC,WAAY,IAAKC,aAAc,GAC/BhU,MAAOlf,EAAQkf,OAASiF,EAAAA,WAAaC,GAAG+O,iBAAiBC,MAE7Dl2B,EAAAA,MAAMgM,SAASqpB,EAAS1rB,EAAAA,KAAO,kBACnB7E,EAAAA,mBAAmBylB,kBAAkBxvB,MAC3CgP,YAAYhP,KAAKi6B,SAAWK,EACtC,CACA,MAAMA,EAAUt6B,KAAKi6B,SACrB,KAAKh1B,EAAAA,MAAMsG,OAAO+uB,KACdA,EAAQ50B,OAAS1F,KAAKwxB,OAChB8I,EAAQ7uB,SAAW4uB,IAAY,CACjC,MAAMx5B,EAAUu5B,GAAa,GAC7B,OAAQryB,EAAQlF,MACZ,IAAK,KACL,IAAK,WACDy3B,EAAQvrB,UAAY/O,KAAKs5B,IAAI8B,OAAOv6B,GACpC,MACJ,IAAK,OACDy5B,EAAQvrB,UAAYlO,EACpB,MACJ,QACIy5B,EAAQF,UAAYv5B,EAGhC,CAER,CACA,WAAAi5B,GACI,MAAMvzB,EAAUvG,KAAKkH,UAAUX,QAC/B,IAAItB,EAAAA,MAAMsG,OAAOhF,GAAjB,CAGA,GAAgC,mBAArBA,EAAQ80B,SAAyB,CACxC,MAAMC,aAAEA,GAAiB/0B,EAAQ80B,SAASr7B,KAAM,QAAS,gBACzDA,KAAK6O,aAAa,YAAaysB,EACnC,MAEIt7B,KAAKq7B,SAAW90B,EAAQ80B,SAE5B,GAA2B,mBAAhB90B,EAAQg1B,IAAoB,CACnC,MAAMC,QAAEA,GAAYj1B,EAAQg1B,IAAIv7B,KAAM,QAAS,gBAC/CA,KAAK6O,aAAa,MAAO2sB,EAC7B,MAEIx7B,KAAKu7B,IAAMh1B,EAAQg1B,GAbvB,CAeJ,CACA,aAAAxB,GAEI,MAAM5iB,EAAQnX,KAAKwxB,OAAQF,EAAOna,EAAMjI,kBAClCnL,EAAO/D,KAAKkH,SAClBiQ,EAAMya,QAAU5xB,KAAKmxB,KACrBlsB,EAAAA,MAAMgM,SAASkG,EAAOvI,EAAAA,KAAO,UAC7B,MAAM6sB,EAAOz7B,KAAKkH,SAASc,WAe3B,GAdIyzB,GAAQA,EAAKpiB,KAAKvG,GAAgB,aAAXA,EAAEjQ,MACzBoC,EAAAA,MAAMgM,SAASkG,EAAOvI,EAAAA,KAAO,aAG7B3J,EAAAA,MAAMiM,YAAYiG,EAAOvI,EAAAA,KAAO,aAG/B3J,EAAAA,MAAMsG,OAAOvL,KAAKi6B,WAAcj6B,KAAKi6B,SAASxuB,SAI/CxG,EAAAA,MAAMiM,YAAYiG,EAAOvI,EAAAA,KAAO,YAHhC3J,EAAAA,MAAMgM,SAASkG,EAAOvI,EAAAA,KAAO,YAMC,mBAAvB7K,EAAKwC,SAAS/C,KAAqB,CAC1C,MAAMk4B,YAAEA,GAAgB33B,EAAKwC,QAAQ/C,KAAKxD,KAAM,QAAS,eAAgB,WACzEsxB,EAAKziB,aAAa,UAAW6sB,EACjC,MAEIpK,EAAK7a,gBAAgB,WACrB6a,EAAKzwB,QAAWkD,EAAKwC,SAAWxC,EAAKwC,QAAQ/C,MAASO,EAAK0C,KAE/D0Q,EAAMtI,aAAa,KAAM,QAAU7O,KAAKmxB,MACxCha,EAAM5N,iBAAiB,QAASvJ,KAAKy5B,oBAAoB,EAC7D,CAEA,mBAAAkC,CAAoB5rB,EAAS/P,KAAK+P,OAAQ7I,EAAWlH,KAAKkH,UACtD,GAAIjC,EAAAA,MAAMsG,OAAOrE,GACb,OAAO,EAEX,MAAMK,EAAQL,EAAST,KAAKyT,MAAM,KAClC,IAAI2B,EAAM9L,EACV,IAAK,IAAIjP,EAAI,EAAGA,EAAIyG,EAAM3G,OAAQE,IAAK,CACnC,MAAM2F,EAAOc,EAAMzG,GACnB,GAAImE,EAAAA,MAAMC,cAAc2W,GAAOA,EAAIpV,IAC/B,OAAO,EAGXoV,EAAMA,EAAIpV,EACd,CACA,OAAO,CACX,CAIA,kBAAAm1B,CAAmB5yB,GACf,GAAgC,UAA5BA,EAAIE,OAAO+D,aAA0B,CACrC,MAAM8F,EAAQ/J,EAAIE,OAAOkG,aAAc3I,EAAOzG,KAAKkH,SAAST,KAC5D,GAAIzG,KAAK+P,kBAAkBuD,YAAa,CAEpC,IAAIyB,EAAOhL,EAAAA,mBAAmB8xB,aAAap1B,GACvCxB,EAAAA,MAAMC,cAAc6N,GACpB/S,KAAK+P,OAAO0G,gBAAgB1B,GAG5B/U,KAAK+P,OAAOlB,aAAakG,EAAMhC,EAAMoC,WAE7C,MAEInV,KAAK+P,OAAOtJ,GAAQsM,CAE5B,CACJ,CAKA,sBAAA+oB,CAAuBhpB,GACnB,OAAI7N,QAAMmT,MAAMC,OAAOvF,GACZ7N,EAAAA,MAAMmT,MAAMnY,MAAM6S,GAAGipB,cAEzBjpB,CACX,CACA,qBAAAkpB,CAAsBlpB,GAElB9S,KAAKwM,cAAc,IAAIvD,YAAY,QAAS,CAAEC,OAAQ4J,EAAG1T,SAAS,EAAMC,YAAY,IACxF,CAEA,eAAAu6B,GAEI,IAAIhuB,EAAU5L,KAAKo4B,SACnBxsB,EAAQiD,aAAa,KAAM,QAAU7O,KAAKmxB,MAC1CvlB,EAAQiD,aAAa,iBAAkB,6CAC3C,CACA,YAAAZ,GAEI,IAAInE,EAAO9J,KAAKi8B,MAChBnyB,EAAK+E,aAAa,KA5Of,OA4O+B7O,KAAKmxB,MACvCrnB,EAAK+E,aAAa,oBAAqB,gCAC3C,CACA,UAAAqtB,CAAWppB,GACP,OAAO7N,EAAAA,MAAMozB,aAAavlB,EAC9B,CACA,aAAAknB,GACQh6B,KAAK25B,QACL35B,KAAK25B,OAAOtiB,SAChBrX,KAAKo4B,SAAS3hB,gBAAgB,cAC9BzW,KAAKo4B,SAAS1oB,OACV1P,KAAKo4B,SAAS34B,IAAM,KACxB,IAAK,IAAIqB,EAAId,KAAK+M,YAAYib,SAASpnB,OAAS,EAAGE,GAAK,EAAGA,IACvDd,KAAK+M,YAAYib,SAASlnB,GAAGuW,SACjC,IAAItT,EAAO/D,KAAKkH,SAEhB,IAAI+M,EAA2D3I,EAAAA,EAAI,cAC/D6wB,EAAiB7wB,EAAAA,GAAKvH,EAAKwC,SAA+B,WAApBxC,EAAKwC,QAAQ61B,GAAkB,UAAY,iBACjFpT,EAAQ,CACRza,GAAMvO,KAAKmxB,KAAM3tB,KAAQO,EAAK0C,KAE9ByQ,SAAY,wEACZnE,MAAS,mBAAmBhP,EAAK0C,kBACjCojB,YAAe,GAAK9lB,EAAKwC,SAAWxC,EAAKwC,QAAQoB,WAAc,MAGtC,GAAzB5D,EAAKo2B,OAAOkC,YACZrT,EAAM,WAAa,8CAGvB,IAAIsT,EAAYv4B,EAAKo2B,OAAS,CAAA,EAC1BoC,EAAa,CAAA,EACbC,EAAe,QACfC,EAAkB,GAClBC,EAAqB,GACrBC,EAAsB,GACtBC,EAAY,GAEhB,IAAK33B,EAAAA,MAAMC,cAAco3B,EAAUM,WAC/B,GAAmC,mBAAxBN,EAAUM,UAA0B,CAC3C,MAAMC,EAAWP,EAAUM,UAAU58B,KAAM,QAAS,eAAgB,gBAAiB88B,EAAWD,EAASC,SAUzG,GATK73B,EAAAA,MAAMC,cAAc43B,IACrB98B,KAAK6O,aAAa,OAAQiuB,GAEzB73B,EAAAA,MAAMC,cAAc23B,EAASL,gBAC9BA,EAAeK,EAASL,aACpBzyB,EAAAA,mBAAmBgzB,mBAAmBP,KACtCE,EAAqB3yB,EAAAA,mBAAmBizB,kCAAkCR,MAG7Ev3B,EAAAA,MAAMC,cAAc23B,EAASI,gBAAiB,CAC/C,MAAMC,EAASL,EAASI,eAAgBE,EAAiB,GACzD,IAAK,IAAIC,KAASF,EAAQ,CACtB,MAAMG,EAAWH,EAAOE,GACxBD,EAAe56B,KAAK,GAAG66B,MAAUC,KAEjCT,EAAUr6B,KAAK,CAAEkE,KAAM42B,GAC3B,CACAV,EAAsBQ,EAAeljB,KAAK,KAC9C,CACJ,KACK,CACD2iB,EAAYN,EAAUM,UAEtB,IAAIU,EAAmB,CAAEC,MAAO,GAAIC,SAAU,CAAA,GAC1CC,EAAgB,CAAEF,MAAO,GAAIC,SAAU,CAAA,GAEvCE,EAAgB,GAEpB,IAAK,IAAIC,KAAWf,EAAW,CAC3B,IAAIj7B,EAAO,gBAAkBg8B,EAAQl3B,KAAMm3B,EAAQ,gBAAkBD,EAAQl3B,KAC7E,GAAKxB,EAAAA,MAAMC,cAAcy4B,EAAQ5qB,QAO5B,IAAK4qB,EAAQE,SAAU,CACxB,IAAIC,EAAUx6B,GAAM,wBAA0BA,EAAI,IAClDg6B,EAAiBC,MAAMh7B,KAAKu7B,EAAOn8B,IAC/Bg8B,EAAQnN,MACRiN,EAAcF,MAAMh7B,KAAKu7B,EAAOF,GAExC,MAbyC,CACrC,IAAIE,EAAUx6B,GAAMA,EAAI,QAAUvC,KAAKyyB,UAAUmK,EAAQ5qB,QACxDuqB,EAAiBE,SAAS77B,GAAQ27B,EAAiBE,SAAS77B,IAAS,IAAIY,KAAKu7B,EAAOn8B,IAClFg8B,EAAQnN,OACPiN,EAAcD,SAASI,GAASH,EAAcD,SAASI,IAAU,IAAIr7B,KAAKu7B,EAAOF,GAE1F,CAUAF,EAAcn7B,KAAK,GAAIo7B,EAAQP,OAASO,EAAQl3B,sCAAuC9E,MAClFg8B,EAAQE,WACTpB,GAAmB,yBAAyB96B,SAEpD,CACAg7B,EAAsBe,EAAczjB,KAAK,MACzC,IAAI8jB,EAAel4B,IACf,IAAIm4B,EAAK,QAASC,EAAM,QACxB,IAAKh5B,EAAAA,MAAMC,cAAcW,EAAE23B,UAAW,CAIlC,MAAMU,EAAW,GACjB,IAAK,IAAIC,KAAMt4B,EAAE23B,SAEbU,EAAS37B,KAAK,IAAMsD,EAAE23B,SAASW,GAAIlkB,KAAK,QAAU,KAGtD+jB,EAAK,IAAME,EAASjkB,KAAK,QAAU,GACvC,CAMA,OALKhV,EAAAA,MAAMC,cAAcW,EAAE03B,SAGvBU,EAAM,IAAMp4B,EAAE03B,MAAMtjB,KAAK,QAAU,KAEhC+jB,EAAK,OAASC,GAEzBvB,EAAqBqB,EAAYT,GACjCd,EAAe,MAAME,OAGrB18B,KAAK6O,aAAa,OAAQ,MAAMkvB,EAAYN,QAChD,CAGJ,MAAM3e,EAAK,KACLsf,EAAMp+B,KAAK8e,GAAM9e,KAAK8e,IAAO,CAAA,EAC7Buf,EAA2B,CAACjF,EAAS,MACvC,IAAIl6B,GAAQ09B,GAAa,IAAIv5B,IAAIC,GAAK,gBAAkBA,EAAEmD,MAAMwT,KAAK,MACrE,MAAMqkB,EAAQ,KAAOr5B,EAAAA,MAAMoJ,aAC3B,GACS,mBADM+qB,EAEPgF,EAAIE,GAASlF,MAEjB,CACI,IAAIn0B,EAAAA,MAAMuC,QAAQ4xB,GAId,KAAM,6BAHNgF,EAAIE,GAAS,IAAMlF,CAKvB,CAER,MAAO,YAAYta,KAAMwf,KAASp/B,SAEhC8oB,EAAW,IAAIjC,iBACrB,IAAIwY,EAEJ,GAAyB,mBAAdx6B,EAAKlB,KAAqC,CAEjD,IAAIpB,EAASsC,EAAKlB,KAAK7C,KAAM,QAAS,gBAEtC,IAAoC,IAAhCyB,EAAOwS,QAAQjC,QAAQ,KACvBhS,KAAK0S,IAAIC,EAAAA,QAAQC,SAAS4rB,MAAO,GAAGvqB,sCAEnC,CAMD,SAASwqB,EAAajX,EAAQQ,GAC1B,IAAK/iB,EAAAA,MAAMC,cAAc8iB,GACrB,IAAK,IAAID,KAASC,EAAU,CAExB,IAAmC,IAA/BD,EAAM9T,QAAQjC,QAAQ,KAAa,CACnChS,KAAK0S,IAAIC,UAAQC,SAAS4rB,MAAO,GAAGzW,EAAM9T,0DAA0DA,KACpG,QACJ,CACA,MAAMoP,EAAK5U,SAASC,cAAcqZ,EAAM9T,SACxC,IAAKhP,EAAAA,MAAMC,cAAc6iB,EAAMiB,OAC3B,IAAK,IAAIjU,KAAQgT,EAAMiB,MAAO,CAC1B,MAAM0V,EAAU3W,EAAMiB,MAAMjU,GAC5BsO,EAAGxU,aAAakG,EAAM2pB,EAC1B,CAECz5B,EAAAA,MAAMC,cAAc6iB,EAAMC,WAE3ByW,EAAapb,EAAI0E,EAAMC,UAE3BR,EAAOxY,YAAYqU,EACvB,CAER,CA1BApP,EAAUxS,EAAOwS,QAEjBhP,EAAAA,MAAMqC,OAAO0hB,EAAOvnB,EAAOunB,OAAS,CAAA,GA0BpCyV,EAAazW,EAAUvmB,EAAOumB,SAClC,CACJ,MAEI,OAAQuW,EAAUx6B,EAAKwC,SAAWxC,EAAKwC,QAAQ61B,IAE3C,IAAK,kBACD76B,QAAQC,KAAK,wFACbyS,EAAU3I,EAAAA,EAAI,mBACd0c,EAAStD,OAAO/D,GAAqBmF,uBACrC,MACJ,IAAK,WACD7R,EAAU3I,EAAAA,EAAI,YACVgxB,EAAUzZ,MAAQ,IAClBmG,EAAa,MAAI,GAAKsT,EAAUzZ,OAEhCyZ,EAAUxZ,OAAS,IACnBkG,EAAc,OAAI,GAAKsT,EAAUxZ,QAEjCwZ,EAAUqC,SAAW,IACrB3V,EAAe,QAAI,GAAKsT,EAAUqC,SAEtC,MACJ,IAAK,QACL,IAAK,SACL,IAAK,MACD1qB,EAAU3I,EAAAA,EAAI,eACVgxB,EAAUsC,UAAY,IACtB5V,EAAiB,UAAI,GAAKsT,EAAUsC,WAEnC35B,EAAAA,MAAMC,cAAco3B,EAAUuC,kBAC/B7V,EAAM,mBAAqBsT,EAAUuC,gBAEzC,MACJ,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,eACL,IAAK,aACc,cAAXN,GAAqC,aAAXA,GAE1BtqB,EAAU3I,EAAAA,EAAI,WACiB,IAA3BgxB,EAAUwC,eACV9V,EAAM,YAAc,oCAKjBA,EAAmB,YAC1B/U,EAAU3I,EAAAA,GAAgB,cAAXizB,EAAyB,cAAgB,mBAEvDt5B,EAAAA,MAAMC,cAAco3B,EAAU7iB,gBAC/BuP,EAAM,iBAAmBsT,EAAU7iB,cAElCxU,EAAAA,MAAMC,cAAco3B,EAAU1iB,oBAC/BoP,EAAM,qBAAuBsT,EAAU1iB,kBAEtC3U,EAAAA,MAAMC,cAAco3B,EAAU/iB,iBAC1BxV,EAAKg7B,cAGN/V,EAAM,cAAgBsT,EAAU/iB,cAFhCyP,EAAM,kBAAoBsT,EAAU/iB,eAIxCtU,QAAMC,cAAco3B,EAAUlD,SAE9Bp5B,KAAKo4B,SAAS7pB,GAAK,QAAQvO,KAAKmxB,OAChCnxB,KAAKo4B,SAAS34B,IAAM68B,EAAU0C,UAC9Bh/B,KAAKo4B,SAASt2B,OAASw6B,EAAU2C,KAEjC1C,EAAuB,WAAI,QAAQI,SACnCJ,EAAqB,SAAIC,EACzBxT,EAAkB,WAAI,MAAMyT,2BAAyCz8B,KAAKmxB,2BAI1EnI,EAAkB,WAAIqV,EAAyB/B,EAAUlD,QAE7D,MAmCJ,IAAK,UACL,IAAK,OACL,IAAK,eAED,MAAM8F,EAA2B,SAApBn7B,EAAKwC,QAAQ61B,GAC1BnoB,EAAU3I,EAAAA,GAAK4zB,EAAO,QAAU,YAChCl/B,KAAKo4B,SAAS7pB,GAAK,QAAQvO,KAAKmxB,OAC3BlsB,EAAAA,MAAMC,cAAco3B,EAAU7iB,gBAC/BuP,EAAM,iBAAmBsT,EAAU7iB,cAEvC,IAAI0lB,EAAY,IAAIn/B,KAAKmxB,aAkCzB,GAjCKlsB,EAAAA,MAAMC,cAAco3B,EAAU/iB,iBAC/ByP,EAAM,cAAgBsT,EAAU/iB,cAC5B2lB,EACAC,EAAY,IAAIA,QAAgBA,KAAa7C,EAAU/iB,uBAGlDxV,EAAKg7B,cAINI,GAAa,OAAOA,KAAa7C,EAAU/iB,gBAH3CyP,EAAM,kBAAoBsT,EAAU/iB,eAO3CtU,EAAAA,MAAMC,cAAco3B,EAAU0C,WAiB/BhW,EAAkB,WAAIqV,EAAyB/B,EAAUlD,SAhBzDmD,EAAgB,IAAI,GAAGD,EAAU0C,YACjCh/B,KAAKo4B,SAASt2B,OAASw6B,EAAU2C,KAE5Bh6B,EAAAA,MAAMC,cAAco3B,EAAUM,WAO/BL,EAAuB,WAAI,WAAWv8B,KAAKmxB,oBAAqBmL,EAAU/iB,eAAiB,YAAa4lB,gBALxG5C,EAAuB,WAAI,QAAQI,UAA4B38B,KAAKmxB,oBAAqBmL,EAAU/iB,eAAiB,YAAa4lB,eACjI5C,EAAqB,SAAIC,GAM7BxT,EAAkB,WAAI,MAAMyT,2BAAyCz8B,KAAKmxB,2BAM1E+N,EAEAlW,EAAM,eAAwC,IAAxBjlB,EAAKo2B,MAAMiF,UAAmBjqB,WACpD6T,EAAM,sBAAsD,IAA/BjlB,EAAKo2B,MAAMkF,iBAA0BlqB,eAEjE,CAKD,GAHKlQ,EAAAA,MAAMC,cAAco3B,EAAU1iB,oBAC/BoP,EAAM,qBAAuBsT,EAAU1iB,mBAEtC3U,EAAAA,MAAMC,cAAco3B,EAAUgD,cAAe,CAC9C,MAAMC,EAAQjD,EAAUgD,aACpBC,aAAiBjsB,aACjB0V,EAAoB,aAAI,QAAUuW,EAAMhxB,GAAKgxB,EAAMhxB,IAAMvO,KAAKmxB,KAAO,aAAe,MAC/EoO,EAAMC,aACPx/B,KAAK0kB,OAAO6a,IAIhBvW,EAAoB,aAAIuW,CAEhC,CACA,IAAKt6B,EAAAA,MAAMC,cAAco3B,EAAUmD,cAAe,CAC9C,MAAMC,EAAUpD,EAAUmD,aAC1BzW,EAAM,iBAAoB/jB,EAAAA,MAAMuC,QAAQk4B,GAAYA,EAAQzlB,KAAK,KAAOylB,CAC5E,CACKz6B,EAAAA,MAAMC,cAAco3B,EAAUqD,kBAC/B3W,EAAM,mBAAqBsT,EAAUqD,eAAexqB,WAE5D,CACA,MACJ,IAAK,WACDlB,EAAU3I,EAAAA,EAAI,mBACd,MAAMs0B,EAAiB77B,EAAKwC,SAASzD,QAAUiB,EAAKo2B,OAAOr3B,OACtDmC,EAAAA,MAAMC,cAAc06B,KACrB5W,EAAc,OAAI,MAAQjoB,KAAKyyB,UAAUoM,GAAkB,OAE1D36B,EAAAA,MAAMC,cAAco3B,EAAUuD,kBAC/B7W,EAAM,mBAAqB,MAAQjoB,KAAKyyB,UAAU8I,EAAUuD,gBAAkB,OAElF,MACJ,IAAK,aACD5rB,EAAU3I,EAAAA,EAAI,kBACd0d,EAAkB,WAAI,OACtB,MACJ,IAAK,WACD,GAAwC,aAAnCjlB,EAAKlB,MAAQ,IAAIT,cAIlB,MAHA4mB,EAAa,MAAI,kBAKzB,QACI,IAAI8W,GAAY/7B,EAAK+7B,UAAY/7B,EAAKlB,MAAQ,IAAIT,cAClD,OAAQ09B,GAcJ,IAAK,SAED7rB,EAAU3I,EAAAA,EAAI,UACd,IAAIy0B,EAAch8B,EAAKo2B,OAAS,CAAA,EAChCnR,EAAW,IAAI+W,EAAYC,UAC3BhX,EAAmB,YAAI,GAAK+W,EAAYE,YACxCjX,EAAM,cAAgB,GAAK+W,EAAYG,UACvClX,EAAM,mBAAqB,GAAK+W,EAAYI,cAC5CnX,EAAM,oBAAsB,GAAK+W,EAAYK,eAC7CpX,EAAM,eAAiB+W,EAAYlgC,MAAQ,OAC3C,MACJ,IAAK,OAEDoU,EAAU3I,EAAAA,EAAI,mBACd0c,EAAStD,OAAO/D,GAAqBmF,uBACrC,MACJ,IAAK,cAED7R,EAAU3I,EAAAA,EAAI,cACd0d,EAAa,MAAIpa,EAAAA,KAAO,cACxBoa,EAAM,kBAAoB,QAC1BA,EAAM,iBAAmB,UACzBA,EAAkB,WAAI,MAAQjoB,KAAKyyB,UAAUzvB,EAAKo2B,MAAMkG,MAAQ,aACzDrX,EAAmB,YAC1B,MACJ,IAAK,WACD/U,EAAU3I,EAAAA,EAAI,kBACd,MACJ,IAAK,eACD2I,EAAU3I,EAAAA,EAAI,eACd,MACJ,IAAK,QACD2I,EAAU3I,EAAAA,EAAI,eACd,MACJ,IAAK,OACL,IAAK,OACL,IAAK,WACD2I,EAAU3I,EAAAA,EAAI,0BACP0d,EAAmB,YACT,aAAb8W,IACA9W,EAAiB,UAAI,UAEzB,MAAMsX,EAAav8B,EAAKwC,SAASzD,QAAUiB,EAAKo2B,OAAOr3B,OAClDmC,EAAAA,MAAMC,cAAco7B,KACrBtX,EAAc,OAAI,MAAQjoB,KAAKyyB,UAAU8M,GAAc,OAEtDr7B,EAAAA,MAAMC,cAAco3B,EAAUuD,kBAC/B7W,EAAM,mBAAqB,MAAQjoB,KAAKyyB,UAAU8I,EAAUuD,gBAAkB,OAElF,MACJ,IAAK,MACD5rB,EAAU3I,EAAAA,EAAI,aACd,MACJ,IAAK,cACD2I,EAAU3I,EAAAA,EAAI,aACd,MACJ,IAAK,gBACD2I,EAAU3I,EAAAA,EAAI,YACd,MACJ,IAAK,WACD2I,EAAU3I,EAAAA,EAAI,qBACd,MACJ,IAAK,SACD2I,EAAU3I,EAAAA,EAAI,UACTrG,EAAAA,MAAMC,cAAcnB,EAAKo2B,QAAgC,iBAAfp2B,EAAKo2B,OAAuBl1B,EAAAA,MAAMuC,QAAQzD,EAAKo2B,SAC1FnR,EAAe,QAAIjoB,KAAKyyB,UAAUzvB,EAAKo2B,QAE3C,MACJ,IAAK,UACL,IAAK,aACL,IAAK,WACD,IAAIoG,EAAoC,aAAbT,EAA0B,CAAEld,MAAO,WAAY4d,SAAU,OAAU,CAAE5d,MAAO,UAAW6d,sBAAuB,GACrIC,EAAO38B,EAAKwC,SAASzD,QAAUy9B,EACnCvX,EAAc,OAAIjoB,KAAKyyB,UAAUkN,GACrC,QACI,QAAS38B,EAAKlB,MAAQ,IAAIT,eACtB,IAAK,UACD6R,EAAU3I,EAAAA,EAAI,YAEd0d,EAAM,cAAgB,aACtBA,EAAM,eAAiB,cACvBA,EAAe,QAAIA,EAAmB,mBAE/BA,EAAmB,YAC1B,MACJ,IAAK,OACDA,EAAW,IAAI,IACfA,EAAW,IAAI,MACnB,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,MACL,IAAK,OACDA,EAAY,KAAI,IAAMjlB,EAAKo2B,OAAOwG,MAAQ,KAC1C1sB,EAAUkoB,EACV,MAAMyE,EAAY78B,EAAKwC,SAASzD,OAC3BmC,EAAAA,MAAMC,cAAc07B,KACrB5X,EAAc,OAAIjoB,KAAKyyB,UAAUoN,KAEN,IAA3BtE,EAAUwC,cAAwG7qB,IAAa3I,EAAAA,EAAI,kBACnI0d,EAAM,YAAc,2BAExB,MACJ,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,SACD/U,EAAUkoB,EACVnT,EAAY,KAAI,IAAMjlB,EAAKo2B,OAAOwG,MAAQ,OAC1C,MAAME,EAAgB98B,EAAKwC,SAASzD,OAC/BmC,EAAAA,MAAMC,cAAc27B,KACrB7X,EAAc,OAAIjoB,KAAKyyB,UAAUqN,KAEN,IAA3BvE,EAAUwC,cAAwG7qB,IAAa3I,EAAAA,EAAI,kBACnI0d,EAAM,YAAc,2BAExB,MACJ,QACI,IAAmB,UAAdjlB,EAAKlB,MAAkC,WAAdkB,EAAKlB,QAAuBoC,EAAAA,MAAMC,cAAcnB,EAAKwD,OAAQ,CAOvF,GANA0M,EAAU3I,EAAAA,EAAI,oBACP0d,EAAmB,YAC1BA,EAAgB,SAAI/jB,EAAAA,MAAM4O,KAAK2f,UAAUzvB,EAAKwD,MAAO,CAAEu5B,UAAWC,EAAAA,uBAAuBC,YACzFhY,EAAY,KAAIjlB,EAAKlB,KACrBmmB,EAAM,cAAgB,IAAMjlB,EAAKo2B,OAASp2B,EAAKo2B,MAAM8G,YAAa,GAClEjY,EAAc,OAAI,sBACb/jB,EAAAA,MAAMC,cAAc03B,GAAY,CACjC,IAAIsE,EAAW,GACf,IAAK,IAAIr7B,KAAK+2B,EACVsE,GAAY,IAAI51B,EAAAA,iCAAiC0d,EAAa,iCAA6BnjB,EAAEY,sBAAuBZ,EAAEu3B,OAASv3B,EAAEY,WAAY6E,EAAAA,4BAEjJtL,KAAKuc,WAAWxN,UAAYmyB,CAChC,CACAlY,EAAM,qBAAuB,+BAC7BA,EAAM,iBAAmB,0BAC7B,IAQ5B,IAAK/jB,EAAAA,MAAMC,cAAcnB,EAAK8D,UAAW,CACrC5C,EAAAA,MAAMgM,SAASjR,KAAKuc,WAAY3N,EAAAA,KAAO,eACvC,MAAMuyB,EAAUnhC,KAAKuc,WAAWvN,YAAYP,SAASC,cAAc,QAASgW,EAAS1kB,KAAKuc,WAAWvN,YAAYP,SAASC,cAAc,QACxIzJ,EAAAA,MAAMgM,SAASkwB,EAAS,sBAAsBvyB,EAAAA,0BAC9C3J,EAAAA,MAAMgM,SAASyT,EAAQ,qBAAqB9V,EAAAA,0BAC5C,MAAMwyB,EAAU1E,GAAsB,QACtC34B,EAAK8D,SAASwB,QAAQyT,IAClB,MAAM3R,EAAMsD,SAASC,cAAcpD,EAAAA,EAAI,WACvCH,EAAI0D,aAAa,aAAciO,EAAI2D,MACnCtV,EAAI0D,aAAa,eAAgBiO,EAAItZ,MACjCsZ,EAAIukB,gBACJl2B,EAAI0D,aAAa,WAAY,OAAOuyB,6DAAmEr9B,EAAK0C,YAC5G0E,EAAI0D,aAAa,mBAAoB,mBAAmB9K,EAAK0C,YAG7D0E,EAAI0D,aAAa,WAAY2tB,GAEjCrxB,EAAI0D,aAAa,UAAWiO,EAAI/U,SAC3B9C,EAAAA,MAAMC,cAAc4X,EAAIue,WACzBp2B,EAAAA,MAAMgM,SAAS9F,EAAK2R,EAAIue,SAASphB,KAAK,OAEzC6C,EAAIqkB,QAAUA,EAAUzc,GAAQ1V,YAAY7D,IAErD,CAGKlG,EAAAA,MAAMC,cAAcnB,EAAKiE,aAC1BjE,EAAKiE,WAAWqB,QAASyJ,IACrB,IAAIwuB,EACA/I,EAAS,CAAA,EACT1hB,EAAa,CAAA,EASjB,OArzBhB,SAA0B/D,GACtB,MAAO,iBAAkBA,CAC7B,CA2yBoByuB,CAAiBzuB,KACjBylB,EAASzlB,EAAU,QAAK,CAAA,EACxB+D,EAAW,iBAAmB/D,EAAE5K,cA5yBpD,SAA4B4K,GACxB,MAAO,eAAgBA,GAA6B,mBAAjBA,EAAE+D,UACzC,CA4yBoB2qB,CAAmB1uB,IAEnB7N,QAAMqC,OAAOuP,EAAY/D,EAAE+D,WAAW7W,KAAM,QAAS,iBAEjD8S,EAAEjQ,MACN,IAAK,WACDmmB,EAAgB,SAAI,OACpBsY,EAAmB,IAAIpK,GACvB,MACJ,IAAK,SACD,IAAIuK,EAAkB,IAAInK,GAC1BgK,EAAmBG,EACnB,IAAIhM,EAAM8C,GAAUA,EAAY,IAC5B/C,EAAM+C,GAAUA,EAAY,IACrB,MAAP9C,GACAzM,EAAiB,UAAI,IAAMyY,EAAgBhM,IAAMA,GAC7CxhB,IAAY3I,EAAAA,EAAI,iBAChB0d,EAAa,QAAM,GAAKyM,IAGvB,QAAS5e,IACdmS,EAAW,IAAInS,EAAgB,KAExB,MAAP2e,EACAxM,EAAiB,UAAI,IAAMyY,EAAgBjM,IAAMA,GAE5C,QAAS3e,IACdmS,EAAiB,UAAInS,EAAgB,KAEzC,MACJ,IAAK,QACD,IAAI6qB,EAAiB,IAAInK,GACzB+J,EAAmBI,EACnB,IAAIC,EAASpJ,GAAUA,EAAY,IAC/BqJ,EAASrJ,GAAUA,EAAY,IAC/BsJ,EAAa5tB,IAAY3I,EAAAA,EAAI,mBAEnB,MAAVq2B,GACAD,EAAejM,IAAMkM,EACrB3Y,EAAW,IAAI,OAAS6Y,EAAa,IAAMF,EAAS,IAAMA,GAAU,OAE/D,QAAS9qB,IACdmS,EAAW,IAAInS,EAAgB,KAErB,MAAV+qB,GACAF,EAAelM,IAAMoM,EACrB5Y,EAAW,IAAI,OAAS6Y,EAAa,IAAMD,EAAS,IAAMA,GAAU,OAE/D,QAAS/qB,IACdmS,EAAW,IAAInS,EAAgB,KAEnC,MACJ,IAAK,QACD,IAAIirB,EAAiB,IAAI3K,GACzBmK,EAAmBQ,EACnB9Y,EAAe,QAAImQ,GAAgB2I,EAAe1K,QAAU,2CAC5D,MACJ,IAAK,QACD,IAAI2K,EAAiB,IAAI5K,GACzBmK,EAAmBS,EACnB,IAAI3K,EAAUmB,EAAgB,QAC9BnB,IAAYvgB,EAAoB,QAChCmS,EAAe,QAAImQ,GAAgB/B,GACnC2K,EAAe3K,QAAUA,EACzB,MACJ,IAAK,SACD,IAAI4K,EAAkB,IAAIlK,GAC1BwJ,EAAmBU,EACnB,IAAIC,EAAc1J,EAAgB,QACf,MAAf0J,GACAjZ,EAAe,QAAImQ,GAAgB8I,GACnCD,EAAgB5K,QAAU6K,GAErB,YAAaprB,IAClBmS,EAAe,QAAInS,EAAoB,SAE3C,IAAIkhB,EAAUQ,GAAUA,EAAgB,QACzB,MAAXR,GACAiK,EAAgBjK,QAAUA,EAC1B/O,EAAM,YAAc,GAAK+O,GAEpB,aAAclhB,IACnBmS,EAAM,YAAcnS,EAAW,aAEnC,MACJ,IAAK,UACD,IAAIqrB,EAAmB,IAAIzK,GAC3B6J,EAAmBY,EACnB,IAAIC,EAAiB,GACrB,GAAI,UAAW5J,EACX4J,EAAiBphC,KAAKyyB,UAAU+E,EAAOxlB,WAEtC,CAEDovB,EAAiB,gBADF,OAAQ5J,EAASA,EAAOxP,GAAKwP,EAAO6J,YAEvD,CACA,MAAMC,EAAgB,MAAMF,OAC5BD,EAAiBrzB,aAAa,KAAMwzB,GACpC,IAAIxK,EAAWqK,EAAiBrK,SAAWU,EAAiB,UAAK1hB,EAAqB,UAAK,QAE3F,GAAI5C,IAAY3I,EAAAA,EAAI,mBAChB,OAAQusB,GACJ,IAAK,cACL,IAAK,OACD7O,EAAW,IAAIqZ,EACf,MACJ,IAAK,iBACL,IAAK,UACDrZ,EAAW,IAAIqZ,EAiB3B,MACJ,IAAK,QACD,IAAIC,EAAiB,IAAIrK,GACzBqJ,EAAmBgB,EACnBA,EAAe7iC,IAAM84B,EAAY,IACjC,IAAI71B,EAAa,GAAI6/B,EAAQhK,EAAkB,WAAKqE,EACpDl6B,EAAWH,KAAK,GAAGwB,EAAK0C,mDAAmD1C,EAAK0C,SAChF,IAAK,IAAI+7B,KAAUD,GAAS,GACxB7/B,EAAWH,KAAK,GAAIigC,EAAOpF,OAASoF,EAAO/7B,mDAAoD+7B,EAAO/7B,SAE1G67B,EAAezzB,aAAa,aAAc,QAASnM,EAAWuX,KAAK,cACnEqoB,EAAexgC,OAASy2B,EAAa,MAAKl4B,EAAAA,IAAIC,WAAWyB,IACzDugC,EAAezzB,aAAa,oBAAqB,gCACjDyzB,EAAezzB,aAAa,gBAAiB,4BAC7C,MACJ,IAAK,SACDyyB,EAAmB,IAAIrI,GACvB,MACJ,QAEI,IAAKh0B,EAAAA,MAAMC,cAAc4N,EAAEjQ,OAAwCiQ,EAAEjQ,KAAKmP,QAAQ,KAAO,EAAG,CACxF,MAAMiC,EAAUnB,EAAEjQ,KACZ4/B,EAASh0B,SAASC,cAAcuF,GAClCwuB,aAAkB7L,KAClB0K,EAAmBmB,EAE3B,EAIR,GAAIx9B,EAAAA,MAAMsG,OAAO+1B,GACb,KAAM,wDAAwDxuB,EAAEjQ,QAGhEy+B,EAAiB/zB,MAAQxJ,EAAK0C,KAC9B66B,EAAiBzyB,aAAa,OAAQ,uBACtCyyB,EAAiBzyB,aAAa,WAAY2tB,GAC1C,IAAK,IAAIkG,KAAY7rB,EACjByqB,EAAiBzyB,aAAa6zB,EAAU7rB,EAAW6rB,IAEvD1iC,KAAK+M,YAAYiC,YAAYsyB,KAMzC,IAAI50B,EAAQ+B,SAASC,cAAcuF,GACnC,IAAK,IAAIzQ,KAAQwlB,EAAO,CACpB,IAAIjU,GACC9P,EAAAA,MAAMC,cAAc6P,GAAOiU,EAAMxlB,KAClCkJ,EAAMmC,aAAarL,EAAMuR,GACjC,CAKA,IAAK,IAAIvR,KAJTkJ,EAAMgY,OAAOsD,GAEbhoB,KAAK25B,OAASjtB,EACd1M,KAAKuc,WAAWsO,aAAane,EAAO1M,KAAKuc,WAAWrN,mBACnCqtB,EAAY,CACzB,IAAIxnB,GACC9P,EAAAA,MAAMC,cAAc6P,GAAOwnB,EAAW/4B,KACvCxD,KAAKo4B,SAASvpB,aAAarL,EAAMuR,GACzC,CAEA/U,KAAKwM,cAAc,IAAI2C,sBAAoB,CAAElC,aAAc,QAASmC,aAAc1C,IACtF,GAEJlH,GAAW,CACPka,EAAAA,UAAU,UACX2Z,GAAsB/uB,UAAW,iBACpC9E,GAAW,CACPka,EAAAA,UAAU,OAAO9Q,EAAAA,yBAClByqB,GAAsB/uB,UAAW,qBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,WACf+tB,GAAsB/uB,UAAW,mBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,UACf+tB,GAAsB/uB,UAAW,gBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,UAAYsD,EAAAA,KAAO,gBAClCyqB,GAAsB/uB,UAAW,sBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmByJ,QACvCwlB,GAAsB/uB,UAAW,mBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmByJ,QACvCwlB,GAAsB/uB,UAAW,uBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCk2B,GAAsB/uB,UAAW,2BACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCq2B,GAAsB/uB,UAAW,mBACpC9E,GAAW,CACP0E,EAAAA,SACDmvB,GAAsB/uB,UAAW,iBACpC+uB,GAAwB7zB,GAAW,CAC/BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,cAAeyP,SAAU,IAAIzP,EAAAA,iBAAiBsD,+DACjDA,EAAAA,yCAAyCA,EAAAA,6BAA6BA,EAAAA,gCAAgCA,EAAAA,qCAAqCA,EAAAA,oCAAoCA,EAAAA,iCAAiCA,EAAAA,6BAA6BA,yGAC3OA,EAAAA,gBAAgBtD,cAAYA,EAAAA,oCAC9BsD,wCACXtD,+NAC6DA,oBAC7DA,EAAAA,kBAAkBsD,uFAAqFtD,EAAAA,eAC1GA,EAAAA,aAED+tB,IC1iCH,IAAI7zB,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAMA,IAAI28B,GAAwB,cAAoCvtB,EAC5D,WAAAnW,GACIE,SAAS4G,WACT/F,KAAK4iC,gBAAmB1iC,IACpBF,KAAK6iC,iBAAiBhI,SAAW36B,EAAEgJ,OAAO2xB,SAElD,CACA,eAAIrkB,GACA,MAAO,EACX,CACA,kBAAAG,CAAmBO,GACflX,KAAK8iC,gBACL9iC,KAAK+iC,iBACT,CACA,QAAAltB,CAAS7M,GACL,OAAO,IAAI8C,QAAQ,CAACyD,EAASnD,KACzB,GAAiB,YAAbpD,EAAInG,MAAsBmG,EAAItD,SAAW1F,KAAK6iC,iBAAkB,CAChE,MAAMhI,EAAW76B,MAAKgjC,EAAQnI,SACxBoI,EAASj6B,EAAIE,OAAOg6B,KAAK,CAACC,EAAGhxB,IACpBixB,EAAAA,KAAKC,cAAcC,gBAAgBH,EAAEtI,SAAUA,GAAgBuI,EAAAA,KAAKC,cAAcC,gBAAgBnxB,EAAE0oB,SAAUA,GACxG,GAAI,GAEnB0I,EAAWN,EAAO,GAAGpI,SAAS0I,SAC9BxwB,EAAQ9N,EAAAA,MAAMqC,OAAO,CAAA,EAAI27B,EAAO,GAAI,CAAEpI,SAAU51B,EAAAA,MAAMqC,OAAO,CAAEi8B,YAAY1I,KACjFtrB,EAAQvP,KAAK+S,MAAQA,EACzB,MACS/J,EAAInG,OAAS/D,GAAwBkK,EAAItD,SAAW1F,KAAKwjC,SAC9Dj0B,EAAQvP,KAAK+S,MAAQ/S,KAAKwjC,SAASzwB,OAGnCxD,EAAQvP,KAAK+S,QAGzB,CACA,KAAAnT,CAAM6jC,GACEL,OAAKM,OAAOC,SAASF,KACrBzjC,MAAKgjC,EAAQnI,SACT76B,KAAK6iC,iBAAiBhI,SAAW4I,EAE7C,CACA,0BAAA3tB,CAA2BjI,EAAK+1B,GAC5B,MAAMC,EAAOh2B,GAAKgtB,UAAYuI,EAAAA,KAAKM,OAAOI,MAAOC,EAAOH,GAAK/I,UAAYuI,EAAAA,KAAKM,OAAOI,MACrF,OAAOV,EAAAA,KAAKM,OAAOM,OAAOH,EAAME,EACpC,CACA,WAAArtB,CAAY5I,GACH7I,EAAAA,MAAMsG,OAAOuC,GAKd9N,KAAKikC,YAAY/2B,MAAQ,IAJzBlN,KAAKikC,YAAY/2B,MAAQ,CAACY,GAC1B9N,KAAK+iC,mBAKT/iC,KAAK8iC,eACT,CACA,YAAAruB,CAAa1B,GACT,OAAOA,GAAOmxB,aAAe,EACjC,CACA,+BAAAjvB,CAAgCF,GAC5B,OAAO3K,EAAAA,mBAAmByJ,KAAKiB,QAAQC,EAAM/U,KACjD,CACAgjC,GACA,qBAAAn5B,GACI1K,MAAM0K,wBACN7J,KAAKmkC,QACT,CACA,uBAAAv2B,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,IACzCA,EACD,OAAQvK,GACJ,IAAK,UACDxD,KAAKokC,eAAet2B,GACpB,MACJ,IAAK,MACGD,GACA7N,KAAKqkC,cAAcx2B,GAEnBC,GACA9N,KAAK+iC,gBAAgBj1B,GAEzB,MACJ,IAAK,OACD9N,KAAK+iC,kBACL,MACJ,IAAK,aACD/iC,KAAK8iC,gBACL,MACJ,IAAK,WACD9iC,KAAK+iC,kBACL/iC,KAAK8iC,gBAIrB,CACA,oBAAA30B,GACInO,KAAKskC,iBACLnlC,MAAMgP,sBACV,CACA,cAAAi2B,CAAeG,EAAUvkC,KAAKukC,SAC1B,MAAMC,EAAKxkC,KAAKykC,UAAWC,EAAO1kC,KAAK6iC,iBAElC59B,EAAAA,MAAMsG,OAAOi5B,KACdA,EAAGD,QAAUA,GAEZt/B,EAAAA,MAAMsG,OAAOm5B,KACdA,EAAKH,QAAUA,EAEvB,CACA,aAAAzB,GACI,MAAM6B,EAAU3kC,KAAKwjC,SAChBv+B,EAAAA,MAAMsG,OAAOo5B,KACdA,EAAQ9a,YAAc7pB,KAAK6pB,aAAe,YAC1C8a,EAAQztB,SAAWlX,KAAKkX,SACxBytB,EAAQl5B,SAAWzL,KAAKyL,SACxBk5B,EAAQ5xB,MAAQ/S,KAAK+S,MAE7B,CACA,aAAAsxB,CAAchhC,EAAMrD,KAAKqD,KACrB,MAAM2/B,EAAShjC,MAAKgjC,EACf/9B,EAAAA,MAAMsG,OAAOy3B,IAAWA,EAAO3/B,MAAQA,GACxC2/B,EAAO3rB,QAEf,CACA,aAAAutB,GACI,MAAM5B,EAAS,IAAI6B,aAAezB,KAAK0B,sBAEvC,OADA9B,EAAOz5B,iBAAiB,UAAWvJ,KAAK4iC,iBAAiB,GAClDI,CACX,CACA,cAAAsB,GACI,MAAMtB,EAAShjC,MAAKgjC,EACf/9B,EAAAA,MAAMsG,OAAOy3B,IACdA,EAAOv5B,oBAAoB,UAAWzJ,KAAK4iC,iBAAiB,EAEpE,CACA,eAAAG,CAAgB1/B,EAAMrD,KAAKqD,KACvB,MAAM2/B,EAAShjC,MAAKgjC,IAAYhjC,MAAKgjC,EAAUhjC,KAAK4kC,iBACpD5B,EAAOviB,KAAOzgB,KAAKygB,KACnBuiB,EAAO+B,WAAa/kC,KAAKkX,WAAalX,KAAKyL,SAC3Cu3B,EAAOxS,KAAOxwB,KAAKyL,SACnB,MAAMu5B,EAAUhlC,KAAK+S,MACjBiyB,GAAWA,EAAQnK,WACnBmI,EAAOnI,SAAWmK,EAAQnK,UAE1BmI,EAAO3/B,MAAQA,GAAQ4B,EAAAA,MAAMsG,OAAOlI,IACpCA,EAAI2L,YAAYg0B,EAExB,CACA,MAAAmB,GACInkC,KAAKokC,iBACLpkC,KAAK8iC,gBACL9iC,KAAK+iC,iBACT,GAEJv9B,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBC,WACpDs4B,GAAsBr4B,UAAW,kBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBC,WACpDs4B,GAAsBr4B,UAAW,cACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpD8uB,GAAsBr4B,UAAW,eACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,cACfq3B,GAAsBr4B,UAAW,sBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,aACfq3B,GAAsBr4B,UAAW,mBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,iBACfq3B,GAAsBr4B,UAAW,oBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,0BACfq3B,GAAsBr4B,UAAW,2BACpCq4B,GAAwBn9B,GAAW,CAC/BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,aAAcsP,QAAQ,EAAOG,SAAU,IAAIzP,8JACyDA,sBACtHA,EAAAA,oEAAoEA,wBAEpEA,EAAAA,eAAeA,iBAEfA,gKAC0DA,EAAAA,gBAE1Dq3B,ICnMH,IAAIn9B,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,MAAMi/B,WAA6Bh8B,YAC/B,WAAAhK,CAAY6T,GACR3T,MAAM,kBAAmB,CAAE+J,OAAQ4J,EAAG1T,SAAS,EAAOC,YAAY,GACtE,EAEJ,MAAM6lC,GAAyB,iBACzBC,GAA8BD,GAAyB,IAAMt2B,EAAAA,KAAO,iCACpEw2B,GAA8B,6CAC9BC,GAA0B,iBAC1BC,GAAiC,eACjCC,GAA8B,YAC9BC,GAAmCD,GAA8B,0BACjEE,GAA0B,OAC1BC,GAA8B,YAC9BC,GAA0B,iBAC1BC,GAA0B,UAChC,IAAIC,GAAwB,cAAoCzwB,EAC5D,YAAAX,CAAa1B,GACT,MAAO,EACX,CACA,+BAAAkC,CAAgCF,GAC5B,OAAO9P,QAAM4O,KAAK5T,MAAM8U,EAC5B,CACA,WAAA9V,GACIE,QACAa,MAAK8lC,EAAY,IAAIxhC,IACrBtE,MAAK+lC,EAAe,IAAIzhC,IACxBtE,KAAKgmC,cAAgB,SACrBhmC,KAAKimC,oBAAuBj9B,IACxB,MAAMk9B,EAAWl9B,EAAIm9B,cAActjC,KACnC,GAAiB,cAAbqjC,GAAyD,IAA7Bl9B,EAAIm9B,cAAcC,OAAc,CAC5Dv6B,EAAAA,aAAa7C,EAAIm9B,eACjB,MAAME,EAASr9B,EAAIs9B,WACnBtmC,KAAKumC,QAAQF,EACjB,MACK,GAAiB,UAAbH,GAAqC,gBAAbA,EAA4B,CACzDr6B,EAAAA,aAAa7C,EAAIm9B,eACjBnmC,MAAKwmC,EAAmBx9B,EAAIs9B,WAC5B,MAAMhM,EAAUt6B,KAAKi6B,SACrBK,EAAQ50B,OAAS,CAAE+gC,EAAGz9B,EAAI09B,MAAOpa,EAAGtjB,EAAI29B,OACxCrM,EAAQsM,OACZ,GAGJ5mC,KAAK6mC,iBAAoB79B,IACrB,IAAI9J,EAAO8J,EAAIE,OACf,MAAM49B,EAAU9mC,KAAK+mC,SACrBD,EAAQ7T,QAAUxkB,SAASC,cAAc,QACzCo4B,EAAQf,YAActzB,MAAMoM,KAAK7e,MAAK+lC,EAAaiB,QAAQjuB,OAAO3S,GAAKA,IAAMlH,EAAK8V,SAC7E/P,EAAAA,MAAMsG,OAAOvL,MAAKinC,IACnBjnC,MAAKinC,EAAY5vB,SAErB,MAAMgvB,EAASrmC,MAAKinC,EAAc,IAAI/a,EAAAA,WAAaC,GAAG+a,mBACtDb,EAAOxnB,KAAO3f,EAAK8V,QACnBhV,MAAKmnC,EAAOn4B,YAAYq3B,IAE5BrmC,KAAKonC,kBAAqBp+B,IACtB/D,EAAAA,MAAMgM,SAASjI,EAAIE,OAAO8L,QAAS,cAEvChV,KAAKqnC,aAAgBr+B,IACjBhJ,MAAKinC,EAAYle,GAAK/f,EAAIE,OAAOo+B,iBAErCtnC,KAAKunC,gBAAmBv+B,IACpB/D,EAAAA,MAAMiM,YAAYlI,EAAIE,OAAO8L,QAAS,aACtChV,MAAKinC,EAAY5vB,SACjBrX,MAAKinC,EAAc,MAEvBjnC,KAAKwnC,aAAgBx+B,IACjB,MAAMowB,EAASpwB,EAAIE,OAAOwQ,KAAMhU,EAAS1F,MAAK+lC,EAAahhC,IAAIiE,EAAIE,OAAOxD,QAGrE1F,KAAKynC,eAAerO,EAAQ1zB,IAAY1F,KAAK0nC,iBAAiBtO,EAAQ1zB,IAEvE1F,KAAK2nC,kBAAkB,CAAEvO,SAAQ1zB,YAGzC1F,KAAK4nC,iBAAoB5+B,IACrB,MAAMowB,EAASpwB,EAAIE,OAAOwQ,KAAMhU,EAAS1F,MAAK+lC,EAAahhC,IAAIiE,EAAIE,OAAOxD,SACtEA,EAAO+F,UAAYzL,KAAKynC,eAAerO,EAAQ1zB,IAAW1F,KAAK0nC,iBAAiBtO,EAAQ1zB,KACxFsD,EAAI2T,kBAGZ3c,KAAK6nC,gBAAmB7+B,MAIxBhJ,KAAK8nC,eAAkB9+B,IACnBhJ,KAAKi6B,SAAS9P,UAElBnqB,MAAK2F,EAAOV,EAAAA,MAAMoJ,YACtB,CACA1I,GACAmgC,GACAmB,GACAT,GACAT,GACAoB,GACA,eAAI3wB,GACA,MAAO,EACX,CACA,kBAAAG,CAAmBO,GACflX,KAAK+mC,SAASt7B,SAAWyL,EACpBjS,EAAAA,MAAMsG,OAAOvL,KAAK+nC,qBACnB/nC,KAAKgoC,WAEb,CACA,QAAAnyB,CAAS7M,GACL,OAAO,IAAI8C,QAAQ,CAACyD,EAASC,KACrBgP,mBAAiBC,aAAazV,EAAKi8B,KACnC11B,EAAQvP,KAAK+S,MAAQ/J,EAAIE,QAE7BqG,EAAQvP,KAAK+S,QAErB,CACA,WAAA2D,CAAY5I,GAEZ,CACA,qBAAAjE,GACI1K,MAAM0K,wBACN7J,MAAKmnC,EAASp9B,qBAAmBylB,kBAAkBxvB,MACnDA,KAAKioC,qBACLjoC,KAAKkoC,gBACLloC,KAAKmoC,eACT,CACA,uBAAAv6B,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,aACL,IAAK,eACL,IAAK,mBACL,IAAK,gBACDqW,qBAAqB7Z,KAAK8Z,SAC1B9Z,KAAK8Z,QAAUC,sBAAsB,KACjC/Z,KAAKooC,4BAET,MACJ,IAAK,eACIr6B,GACD/N,KAAKioC,qBAET,MACJ,IAAK,qBACL,IAAK,QACDpuB,qBAAqB7Z,KAAKqoC,UAC1BroC,KAAKqoC,SAAWtuB,sBAAsB,KAClC/Z,KAAKgoC,cAIrB,CACA,oBAAA75B,GACInO,KAAKsoC,kBACLtoC,KAAKuoC,kBACLppC,MAAMgP,sBACV,CACA,uBAAAi6B,CAAwBzvB,EAAK3Y,KAAK4Y,YAC9B5Y,KAAK+nC,mBAAqBpvB,GAAMA,EAAGtV,IAAI+C,GAAKpG,KAAKwoC,iBAAiBpiC,GACtE,CACA,iBAAAqiC,CAAkB14B,GACd,IAAoBtJ,EAAhBsM,EAAQhD,EAIZ,OAHItJ,EAAOzG,KAAKuZ,iBACZxG,EAAQhD,EAAOtJ,IAEZsM,CACX,CACA,qBAAA21B,CAAsB34B,GAClB,IAAmCtJ,EAA/B+N,EAAYzE,EAAOoF,WAIvB,OAHI1O,EAAOzG,KAAKyZ,gBACZjF,EAAYzE,EAAOtJ,IAEhB+N,CACX,CACA,gBAAAg0B,CAAiBz4B,GACb,GAAc,MAAVA,EACA,MAAM,IAAIyuB,MAAM,yBAGpB,IAAI/yB,GAAW,EACf,MAAMkO,EAAe3Z,KAAK4Z,iBAI1B,OAHK3U,EAAAA,MAAMC,cAAcyU,KACrBlO,EAAWsE,EAAO4J,KAAiB,GAEhC,CAAE5G,MAAO/S,KAAKyoC,kBAAkB14B,GAASyE,UAAWxU,KAAK0oC,sBAAsB34B,GAAStE,SAAUA,EAAUiO,KAAM3J,EAC7H,CACA,OAAAw2B,CAAQzlB,GACJ,IAAIulB,EACAvlB,aAAeoL,EAAAA,WAAaC,GAAG+a,mBAC/Bb,EAASvlB,GAGTA,EAAInE,iBACJmE,EAAIuV,kBACJgQ,EAASrmC,MAAKwmC,GAElB,MAAMhf,OAAEA,EAAMO,MAAEA,GAAUhnB,KAAKd,MAAMomC,EAAOsC,QAAQtD,KAC9C1sB,EAAK3Y,KAAK+nC,mBAAoB3O,EAASzgB,EAAGU,KAAKjT,GAAKA,EAAE2M,QAAUyU,GAAS9hB,EAASiT,EAAGU,KAAKjT,GAAKA,EAAE2M,QAAUgV,GAC5GqR,EAAO3tB,UAAa/F,EAAO+F,UAC5BzL,KAAK2nC,kBAAkB,CAAEvO,SAAQ1zB,WAAU,EAEnD,CACA,wBAAAkjC,CAAyBC,GACrB,MAAO,iBAAiB7oC,MAAK2F,KAAQkjC,GACzC,CACA,WAAAzV,CAAYpqB,GACH,MAAC6O,EAAO7O,EAAIE,OAAOslB,IAAInV,KAAKjT,GAAKA,aAAakN,aAAelN,EAAE0iC,UAAU5qB,SAASgnB,KAAkCl8B,EAAIE,OAAOjB,MAAM,MAAC8gC,EAAgB//B,EAAIE,OAAO2O,KACtKA,EAAKtJ,GAAKvO,KAAK4oC,yBAAyBG,EAAch2B,OAClDg2B,EAAct9B,SACdoM,EAAKhJ,aAAa,YAAa,QAAU7O,KAAKgpC,UAAUz6B,GAAK,QAG7DsJ,EAAKhJ,aAAa,YAAa,QAAU7O,KAAK+mC,SAASx4B,GAAK,MAAQvO,KAAKgpC,UAAUz6B,GAAK,QAE5F,IAAK,IAAIiZ,KAAUuhB,EAAcE,SAAW,GAAI,CAC5C,MAAM5C,EAAS,IAAIna,aAAaC,GAAG+a,mBACnCb,EAAOtd,GAAKlR,EACZwuB,EAAO6C,SAAWhd,EAAAA,WAAaC,GAAGgd,aAAapO,IAC/CsL,EAAO+C,MAAQld,EAAAA,WAAaC,GAAGkd,UAAUC,MACzCjD,EAAOx3B,aAAa,OAAQ,OAAS7O,KAAK4oC,yBAAyBphB,EAAOzU,OAAS,OACnFszB,EAAOkD,WAAard,EAAAA,WAAaC,GAAGgd,aAAaK,OACjDnD,EAAOhL,SAAW,CAAC,oBACnBgL,EAAOoD,aAAezpC,KAAKkX,WAAa6xB,EAAct9B,WAAa+b,EAAO/b,SAC1E46B,EAAO98B,iBAAiB2iB,aAAaC,GAAGud,2BAA4B1pC,KAAKimC,qBAAqB,GAC9FI,EAAOsC,QAAQtD,IAA2BtkC,KAAKyyB,UAAU,CAAEhM,OAAQA,EAAOzU,MAAOgV,MAAOghB,EAAch2B,QACtG/S,MAAK8lC,EAAU9gC,IAAI+jC,EAAch2B,MAAOszB,GACxCrmC,MAAKmnC,EAAOn4B,YAAYq3B,EAC5B,CACKrmC,MAAK+lC,EAAajhC,IAAI+S,IACvB7X,MAAK+lC,EAAa/gC,IAAI6S,EAAMkxB,EAEpC,CACA,WAAAY,CAAY3gC,GACR,MAAM6O,EAAO7O,EAAIE,OAAOslB,IAAInV,KAAKjT,GAAKA,aAAakN,aAAelN,EAAE0iC,UAAU5qB,SAASgnB,KAA0B6D,EAAgB//B,EAAIE,OAAO2O,KAAMiuB,EAAW9lC,MAAK8lC,EAClK,GAAIA,EAAShhC,IAAIikC,EAAch2B,OAAQ,CACnC,MAAMszB,EAASP,EAAS/gC,IAAIgkC,EAAch2B,OAC1CszB,EAAO58B,oBAAoByiB,aAAaC,GAAGud,2BAA4B1pC,KAAKimC,qBAAqB,GACjGI,EAAOhvB,SACPyuB,EAAS8D,OAAOb,EAAch2B,MAClC,CACI/S,MAAK+lC,EAAajhC,IAAI+S,IACtB7X,MAAK+lC,EAAa6D,OAAO/xB,EAEjC,CACA,kBAAAowB,GACI,GAAIjoC,KAAKs/B,wBAAwBuK,oBAAqB,CAClD,MAAM1sB,EAAOnd,KAAKs/B,aAAawK,WAAU,GAAMjpC,QACzCkpC,EAAOt7B,SAASC,cAAc,YAC9B8V,EAAU/V,SAASC,cAAcpD,EAAAA,EAAI,UAC3CkZ,EAAQ7V,UAAYw2B,GACpB3gB,EAAQ3V,aAAa,YAAau2B,IAClC,MAAM4E,EAAO,IAAI9d,aAAaC,GAAG8d,iBACjCD,EAAKn7B,aAAa,OAAQ82B,IAC1BqE,EAAKr7B,UAAY+2B,GACjBlhB,EAAQxV,YAAYg7B,GACpB,MAAMnpC,EAAU4N,SAASC,cAAc,OACvC7N,EAAQ8N,UAAY22B,GACpBzkC,EAAQ6jB,OAAOvH,GACfqH,EAAQxV,YAAYnO,GACpB,MAAMqgB,EAAO,IAAIgL,aAAaC,GAAG8d,iBACjC/oB,EAAKrS,aAAa,OAAQ42B,IAC1BvkB,EAAKvS,UAAY62B,GACjBhhB,EAAQxV,YAAYkS,GACpB6oB,EAAKlpC,QAAQmO,YAAYwV,GACzBxkB,KAAKkqC,UAAYH,CACrB,MAEI/pC,KAAKkqC,UAAYlqC,KAAKmqC,gBAE9B,CACA,iBAAAxC,CAAkByC,EAAU/yB,GAAS,GACjC,MAAMtE,EAA2F9N,EAAAA,MAAM4uB,MAAM7zB,KAAK+S,OAAS,IACrHs3B,EAAYD,EAAShR,OAAOrmB,MAAO4R,EAAWylB,EAAS1kC,OAAOqN,MAC9Du3B,EAAkBtqC,KAAKsqC,iBAAmB1E,GAChD,IAAItsB,EAAQvG,EAAMsG,KAAKjT,GAAKA,EAAEpG,KAAKuZ,iBAAmBoL,GACtD,GAAItN,GACA,IAAKpS,EAAAA,MAAMsG,OAAO+N,GAAQ,CACtB,MAAM2vB,EAAU3vB,EAAMgxB,IAAoB,GAAIr3B,EAAMg2B,EAAQj3B,QAAQq4B,GAChEp3B,GAAO,GACPg2B,EAAQ/1B,OAAOD,EAAK,EAE5B,OAGIhO,EAAAA,MAAMsG,OAAO+N,MACbA,EAAQ,CAAA,GACFtZ,KAAKuZ,eAAiBoL,EAC5BrL,EAAMgxB,GAAmB,GACzBv3B,EAAMxQ,KAAK+W,IAEfA,EAAMgxB,GAAiB/nC,KAAK8nC,GAGhCrqC,KAAKuqC,kBAAkBx3B,GAEvB/S,KAAK4V,cAAc,IAAIqvB,GAAqBlyB,GAChD,CACA,iBAAAw3B,CAAkBx3B,EAAQ,IACtB,MAAMwG,EAAgBvZ,KAAKuZ,cAAe+wB,EAAkBtqC,KAAKsqC,iBAAmB1E,GAC9E4E,EAAgB,CAACC,EAAUC,KAC7B,MAAMhlC,EAASqN,EAAMsG,KAAKjT,GAAKA,EAAEmT,IAAkBmxB,GACnD,GAAIzlC,EAAAA,MAAMsG,OAAO7F,IAAWT,EAAAA,MAAMC,cAAcQ,EAAO4kC,IACnD,OAAO,EAEX,MAAMrB,EAAUvjC,EAAO4kC,GACvB,OAAIrB,EAAQj3B,QAAQy4B,IAAa,GAG1BxB,EAAQ72B,KAAK9O,GAAKknC,EAAcC,EAAUnnC,KAGrD,IAAK,IAAIwP,KAAKC,EAAO,CACjB,MAAMk2B,EAAUn2B,EAAEw3B,IAAoB,GACtC,IAAK,IAAIxpC,EAAImoC,EAAQroC,OAAS,EAAGE,GAAK,EAAGA,IAAK,CAC1C,MAAM0mB,EAASyhB,EAAQnoC,GACjB6pC,EAAe1B,EAAQlwB,OAAO6xB,GAAMA,IAAOpjB,GACjD,IAAK,IAAIqjB,KAAeF,EACpB,GAAIH,EAAchjB,EAAQqjB,GAAc,CACpC5B,EAAQ/1B,OAAOpS,EAAG,GAClB,KACJ,CAER,CACJ,CACJ,CACA,aAAAonC,GACI,MAAMpB,EAAU9mC,KAAK+mC,SACrBD,EAAQv4B,GAAK,kBAAoBvO,MAAK2F,EACtCmhC,EAAQgE,eAAiB,IAAMvF,GAC/BuB,EAAQiE,aAAe5e,KAAG+H,aAAa8W,KACvClE,EAAQmE,cAAgB9e,KAAG+e,yBAAyBF,KACpDlE,EAAQjnC,KAAOssB,KAAGiI,aAAa+W,KAC/BrE,EAAQv9B,iBAAiB4iB,KAAG4H,kBAAkBqX,KAAMprC,KAAKwnC,cAAc,GACvEV,EAAQv9B,iBAAiB4iB,KAAG4H,kBAAkBsX,KAAMrrC,KAAKqnC,cAAc,GACvEP,EAAQv9B,iBAAiB4iB,KAAG4H,kBAAkBuX,KAAMtrC,KAAK6mC,kBAAkB,GAC3EC,EAAQv9B,iBAAiB4iB,KAAG4H,kBAAkBC,MAAOh0B,KAAKonC,mBAAmB,GAC7EN,EAAQv9B,iBAAiB4iB,KAAG4H,kBAAkBE,IAAKj0B,KAAKunC,iBAAiB,GACzET,EAAQv9B,iBAAiB4iB,KAAG4H,kBAAkBwX,KAAMvrC,KAAK4nC,kBAAkB,GAC3Ed,EAAQv9B,iBAAiB4iB,KAAG4H,kBAAkByX,IAAKxrC,KAAK6nC,iBAAiB,GACzE,MAAM4D,EAAWzrC,KAAKgpC,UACtByC,EAASl9B,GAAK,kBAAoBvO,MAAK2F,EACvC8lC,EAAS5rC,KAAOssB,KAAGiI,aAAasX,KAChCD,EAASV,aAAe5e,KAAG+H,aAAa8W,KACxCS,EAASR,cAAgB9e,KAAG+e,yBAAyBF,KACrDS,EAASX,eAAiB,IAAMpF,EACpC,CACA,eAAA4C,GACI,MAAMxB,EAAU9mC,KAAK+mC,SAChB9hC,EAAAA,MAAMsG,OAAOu7B,KACdA,EAAQr9B,oBAAoB0iB,KAAG4H,kBAAkBqX,KAAMprC,KAAKwnC,cAAc,GAC1EV,EAAQr9B,oBAAoB0iB,KAAG4H,kBAAkBsX,KAAMrrC,KAAKqnC,cAAc,GAC1EP,EAAQr9B,oBAAoB0iB,KAAG4H,kBAAkBuX,KAAMtrC,KAAK6mC,kBAAkB,GAC9EC,EAAQr9B,oBAAoB0iB,KAAG4H,kBAAkBC,MAAOh0B,KAAKonC,mBAAmB,GAChFN,EAAQr9B,oBAAoB0iB,KAAG4H,kBAAkBE,IAAKj0B,KAAKunC,iBAAiB,GAC5ET,EAAQr9B,oBAAoB0iB,KAAG4H,kBAAkBwX,KAAMvrC,KAAK4nC,kBAAkB,GAC9Ed,EAAQr9B,oBAAoB0iB,KAAG4H,kBAAkByX,IAAKxrC,KAAK6nC,iBAAiB,GAEpF,CACA,aAAAM,GACInoC,KAAKi6B,SAAWj6B,KAAK2rC,YAAYnd,IAAInV,KAAKjT,GAAKA,aAAa8lB,aAAaC,GAAGyf,qBAC5EzqB,OAAO5X,iBAAiB,YAAavJ,KAAK8nC,gBAAgB,EAC9D,CACA,eAAAS,GACIpnB,OAAO1X,oBAAoB,YAAazJ,KAAK8nC,gBAAgB,EACjE,CAEA,cAAAL,CAAerO,EAAQ1zB,GACnB,OAAIT,EAAAA,MAAMsG,OAAO7F,KAAWT,EAAAA,MAAMC,cAAcQ,EAAOujC,WAGnDvjC,EAAOujC,QAAQj3B,QAAQonB,IAAW,GAG/B1zB,EAAOujC,QAAQ72B,KAAK9O,GAAKtD,KAAKynC,eAAerO,EAAQ91B,IAChE,CACA,gBAAAokC,CAAiBtO,EAAQ1zB,GACrB,OAAO1F,KAAKynC,eAAe/hC,EAAQ0zB,EACvC,CACA,SAAA4O,GAEIhoC,KAAKiyB,UAAUrZ,WAAa,GAE5B,MAAMW,EAAgBvZ,KAAKuZ,cAC3B,GAAItU,EAAAA,MAAMC,cAAcqU,GACpB,MAAM,IAAIilB,MAAM,0BAGpB,MAAM7lB,EAAK1T,EAAAA,MAAM4uB,MAAM7zB,KAAK+nC,oBAAsB,IAAK8D,EAAU7rC,KAAK+S,OAAS,GAAIu3B,EAAkBtqC,KAAKsqC,iBAAmB1E,GAC7H,IAAK,IAAI/tB,KAAQc,EAAI,CACjB,MAAMW,EAAQuyB,EAAQxyB,KAAKjT,GAAKA,EAAEmT,KAAmB1B,EAAK9E,OACrD9N,EAAAA,MAAMsG,OAAO+N,KACdzB,EAAKoxB,SAAW3vB,EAAMgxB,IAAoB,IAAIjnC,IAAI+C,GAAKuS,EAAGU,KAAKyyB,GAAMA,EAAG/4B,QAAU3M,IAAI2S,OAAO3S,IAAMnB,EAAAA,MAAMsG,OAAOnF,IAExH,CAEApG,KAAK+rC,mBAAmBpzB,EAC5B,CACA,kBAAAozB,CAAmBpzB,GAGf,MAAMqzB,EAAc,GACpB,SAASC,IACL,OAAOD,EAAYE,OAAO,CAACC,EAAgBt0B,IAASs0B,EAAiBt0B,EAAKjX,OAAQ,EACtF,CACA,GACI,GAAIqE,EAAAA,MAAMC,cAAc8mC,GAAc,CAElC,MAAMI,EAAUzzB,EAAGI,OAAQ3S,GAAMnB,EAAAA,MAAMC,cAAckB,EAAE6iC,UACvD+C,EAAYzpC,KAAK6pC,EACrB,KACK,CAED,MAAMC,EAAc55B,MAAMnI,UAAUgiC,OAAO76B,MAAM,GAAIu6B,GAAcO,EAAaP,EAAYA,EAAYprC,OAAS,GAC3G4rC,EAAQ7zB,EAAGI,OAAQ3S,IACjBnB,QAAMC,cAAckB,EAAE6iC,WAGnB7iC,EAAE6iC,QAAQwD,MAAMnpC,GAAK+oC,EAAYr6B,QAAQ1O,IAAM,IAAM8C,EAAE6iC,QAAQ72B,KAAK9O,GAAKipC,EAAWv6B,QAAQ1O,IAAM,KAE7G0oC,EAAYzpC,KAAKiqC,EACrB,QACKP,IAAUtzB,EAAG/X,QAEtBZ,KAAKiyB,UAAUrZ,WAAaozB,CAChC,GAEJxmC,GAAW,CACPka,EAAAA,UAAU,sBACXmmB,GAAsBv7B,UAAW,2BACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,cACfu6B,GAAsBv7B,UAAW,oBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,eACfu6B,GAAsBv7B,UAAW,mBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,qBACfu6B,GAAsBv7B,UAAW,oBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,iBACfu6B,GAAsBv7B,UAAW,sBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpDgyB,GAAsBv7B,UAAW,qBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD0iC,GAAsBv7B,UAAW,wBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD0iC,GAAsBv7B,UAAW,uBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD0iC,GAAsBv7B,UAAW,2BACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC0iC,GAAsBv7B,UAAW,wBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmByJ,QACvCgyB,GAAsBv7B,UAAW,6BACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBC,WACpDw7B,GAAsBv7B,UAAW,uBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBC,WACvCw7B,GAAsBv7B,UAAW,oBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD0iC,GAAsBv7B,UAAW,0BACpCu7B,GAAwBrgC,GAAW,CAC/BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,aAAcsP,OAAQC,EAAAA,SAASC,gBAC5CC,SAAU,IAAIzP,mDAEPA,EAAAA,iBAAiB3B,EAAAA,WAAWmqB,8DAA8DnqB,EAAAA,WAAW+iC,0JAE7FphC,EAAAA,qDAAqDA,8DAE5DA,qDAGZA,EAAAA,eAAeA,iBAAeA,EAAAA,gBAC/BA,EAAAA,iBAAiBA,oBACjBA,EAAAA,sBAAsBA,4CAElBA,EAAAA,kBAAkB65B,+BAAwDC,kBACtE95B,EAAAA,iBAAiBo6B,aAAsCC,SAA8Br6B,yCACnEg6B,yCAAqEh6B,uBACvFA,EAAAA,iBAAiBk6B,aAA2CC,SAA8Bn6B,oBAC7FA,6BAELA,8BACQA,0GACYA,EAAAA,yCAAyCsD,wSAGKtD,EAAAA,iBAAiBsD,EAAAA,iEAAiEtD,EAAAA,YAAYA,0BACvJA,mBACRA,EAAAA,oBAEDu6B,IC3fH,IASW8G,GATPnnC,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,GAKA,SAAW2mC,GACPA,EAAoB,MAAI,QACxBA,EAAmB,KAAI,MAC1B,CAHD,CAGGA,KAAiBA,GAAe,CAAA,IACnC,MAAMC,GAA6B,gCAC5B,MAAMC,WAA8Bz3B,EACvC,WAAAnW,GACIE,SAAS4G,WACT/F,KAAK8sC,UAAW,EAChB9sC,KAAK+sC,aAAeJ,GAAaK,MACjChtC,KAAKoc,cAAiBpT,IAClB,IAAKhJ,KAAKitC,WACN,OAEJ,IAAIvgC,EAAiD1M,KAAKuW,WAC1D,IAAK,IAAIpK,KAAKnM,KAAKwW,aAAe,GAC9B,GAAIrK,IAAMsC,SAASy+B,cAAe,CAC9BxgC,EAAQP,EACR,KACJ,CAEJO,GAAOoV,SAEf,CACA,uBAAAlU,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GAErC,gBADDvK,EAEA,IAAK,IAAI+S,KAAcvW,KAAKwW,aAAe,GACvCD,EAAW1H,aAAarL,EAAMsK,EAI9C,CACA,WAAA4I,CAAY5I,GACJ9N,KAAKuW,YAAczI,IAAQ9N,KAAKuW,WAAWxD,QAC3C/S,KAAKuW,WAAWxD,MAAQ9N,EAAAA,MAAMC,cAAc4I,GAAO,GAAKA,EAEhE,CACA,cAAIyI,GACA,OAAOvW,KAAKwW,YAAY,EAC5B,CACA,QAAAX,CAAS7M,GACL,OAAO,IAAI8C,QAASyD,IAChB,GAAIvP,KAAKkX,SACL3H,EAAQvP,KAAK+S,YAEZ,GAAiB,UAAb/J,EAAInG,MAAoB7C,KAAK+sC,eAAiBJ,GAAaQ,KAChE59B,EAAQvP,KAAK+S,WAEZ,CAED,MAAM+L,EAAK,KACP,MAAMhR,EAAM9N,KAAKotC,SAASptC,KAAKuW,WAAWxD,OACtCjF,IAAQ9N,KAAK+S,QACb/S,KAAK+S,MAAQjF,GAGjByB,EAAQzB,IAENjI,EAAI7F,KAAK8sC,SACE,iBAANjnC,GAAkBA,EAAI,GAC7BizB,aAAa94B,KAAK8Z,SAClB9Z,KAAK8Z,QAAUkf,WAAWla,EAAIjZ,KAEnB,IAANA,GACLgU,qBAAqB7Z,KAAK8Z,SAC1B9Z,KAAK8Z,QAAUC,sBAAsB+E,IAGrC/E,sBAAsB+E,EAC9B,GAER,CAEA,mBAAAhI,CAAoBN,EAAcxW,KAAKwW,aACnCrX,MAAM2X,oBAAoBN,GACrBvR,EAAAA,MAAMsG,OAAOiL,IAAiBvR,QAAMuC,QAAQgP,KAC7CA,EAAc,CAACA,IAEnB,IAAK,IAAI9J,KAAS8J,GAAe,IACvB9J,aAAiB2gC,kBAAuB3gC,aAAiB4gC,sBAG+B,OAA1FvjC,EAAAA,mBAAmB6K,yBAAyBlI,EAAOkgC,GAA4B,SAGnF7iC,EAAAA,mBAAmB8K,yBAAyBnI,EAAOkgC,GAA4B,MAC3E,SAAUlgC,IAEVA,EAAMsmB,KAAO,GAEjBtmB,EAAM6gC,aAAe,MACrB7gC,EAAMnD,iBAAiB,QAASvJ,KAAK4V,eAAe,GACpDlJ,EAAMnD,iBAAiB,QAASvJ,KAAKoc,eAAe,GAE5D,CACA,qBAAAnF,CAAsBT,EAAcxW,KAAKwW,aACrCrX,MAAM8X,sBAAsBT,GACvBvR,EAAAA,MAAMsG,OAAOiL,IAAiBvR,QAAMuC,QAAQgP,KAC7CA,EAAc,CAACA,IAEnB,IAAK,IAAI9J,KAAS8J,GAAe,GAC0D,OAAnFzM,EAAAA,mBAAmB6K,yBAAyBlI,EAAOkgC,MAGvD7iC,qBAAmByjC,4BAA4B9gC,EAAOkgC,IACtDlgC,EAAMjD,oBAAoB,QAASzJ,KAAK4V,eAAe,GACvDlJ,EAAMjD,oBAAoB,QAASzJ,KAAKoc,eAAe,GAE/D,CACA,qBAAAvS,GACI1K,MAAM0K,wBACN7J,KAAK8W,qBACT,CACA,oBAAA3I,GACInO,KAAKiX,wBACL9X,MAAMgP,sBACV,EAEJ3I,GAAW,CACP0E,QAAM,CACF0J,MAAM,EAAOzJ,UAAW,CACpB2K,QAAUC,IACN,OAAQA,GACJ,IAAK,OACD,OAAO,EACX,IAAK,QACD,OAAO,EACX,QACI,OAAOkD,WAAWlD,KAG9BG,YAAczO,GAASA,EAAK0O,eAGrC03B,GAAsBviC,UAAW,mBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD0pC,GAAsBviC,UAAW,uBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBpH,WACpD6pC,GAAsBviC,UAAW,qBAC7B,MAAMmjC,WAAiCZ,GAC1C,+BAAA53B,CAAgCF,GAC5B,OAAOkD,WAAWlD,EACtB,CACA,uBAAAnH,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,MACL,IAAK,MACL,IAAK,OACM,MAAPsK,EAAc9N,KAAKuW,WAAW1H,aAAarL,EAAMsK,GAAO9N,KAAKuW,WAAWE,gBAAgBjT,GAGpG,EAEJgC,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvC0qC,GAAyBnjC,UAAW,cACvC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvC0qC,GAAyBnjC,UAAW,cACvC9E,GAAW,CACP0E,QAAM,CACFC,UAAW,CACP2K,QAAUC,IACN,MAAMiD,EAAMC,WAAWlD,GACvB,OAAOmD,MAAMF,GAAO,MAAQA,GAEhC9C,YAAcpH,GAAQA,EAAIqH,eAGnCs4B,GAAyBnjC,UAAW,eAChC,MAAMojC,WAAiCb,GAC1C,+BAAA53B,CAAgCF,GAC5B,OAAOA,CACX,CACA,uBAAAnH,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,UACL,IAAK,YACL,IAAK,YACM,MAAPsK,EAAc9N,KAAKuW,WAAW1H,aAAarL,EAAMsK,GAAO9N,KAAKuW,WAAWE,gBAAgBjT,GAGpG,CACA,QAAA4pC,CAASt/B,GACL,OAAO7I,EAAAA,MAAMC,cAAc4I,GAAO,KAAOA,CAC7C,CACA,YAAA2G,CAAa3G,GACT,OAAOA,CACX,EAEJtI,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCuqC,GAAyBpjC,UAAW,kBACvC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvC2qC,GAAyBpjC,UAAW,oBACvC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvC2qC,GAAyBpjC,UAAW,oBCtNvC,IAAI9E,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,IAAI2nC,GAAyB,cAAqCd,GAC9D,WAAA5tC,GACIE,QACAa,KAAK4+B,UAAY,EACjB5+B,KAAK6+B,eAAiB,OACtB7+B,KAAK4tC,mBAAsB1tC,IACvB,MAAMsuB,IAAEA,EAAGvmB,MAAEA,GAAU/H,EAAEgJ,OACnBqN,EAAaiY,EAAInV,KAAKjT,GAAKA,aAAainC,kBAC9CrtC,MAAK6tC,EAAQ5lC,GAASsO,EACtBvW,KAAK8W,oBAAoBP,IAE7BvW,MAAK6tC,EAAU,EACnB,CACA,eAAAC,CAAgB/6B,EAAQ/S,KAAK+S,OACzB/S,KAAKwU,UAAYxU,KAAKyU,aAAa1B,EACvC,CACA,QAAAq6B,CAAShhC,GACL,MAAM0B,EAAM9N,MAAK6tC,EAAQ3B,OAAO,CAAC6B,EAAK7e,IAAU6e,GAAO9oC,EAAAA,MAAMC,cAAcgqB,EAAMnc,OAAS,IAAMmc,EAAMnc,OAAQ,IAC9G,OAAQ/S,KAAK6+B,gBACT,IAAK,YACD,OAAO/wB,EAAI1L,cACf,IAAK,YACD,OAAO0L,EAAIrJ,cACf,QACI,OAAOqJ,EAEnB,CACA,YAAA2G,CAAa1B,GACT,MAAMigB,EAAOhzB,KAAK4+B,UAClB,MAA8B,YAAvB5+B,KAAK6+B,eAA+BmP,EAAAA,OAAOryB,MAAMqX,GAAM3vB,IAAI+C,GAAK,KAAK6T,KAAK,IAAMlH,CAC3F,CACA,+BAAAkC,CAAgCF,GAC5B,OAAOA,CACX,CACA,kBAAA4B,CAAmBO,EAAWlX,KAAKkX,UAC/BlX,KAAKuwB,MAAMhS,QAAUrH,EACrBlX,KAAKiuC,OAAO1vB,OAASrH,CACzB,CAEA,KAAAI,GAEI,IAAK,IAAIf,KAAcvW,KAAKwW,aAAe,GACvC,GAAID,IAAe9H,SAASy+B,cAIxB,YAHIltC,KAAKq8B,WACL9lB,EAAWuL,UAKvB3iB,MAAMmY,OACV,CACA,uBAAA1J,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,IAC1CA,EAGJ,OAAQvK,GACJ,IAAK,YACDxD,KAAKgoC,YACLhoC,KAAK8tC,kBACL,MACJ,IAAK,iBACD9tC,KAAK8W,sBACL9W,KAAK+S,MAAQ/S,KAAKotC,SAASptC,KAAK+S,OAG5C,CAKA,mBAAA+D,CAAoB7G,EAASjQ,KAAKwW,aAC9BrX,MAAM2X,oBAAoB7G,GACrBhL,EAAAA,MAAMsG,OAAO0E,IAAYhL,QAAMuC,QAAQyI,KACxCA,EAAS,CAACA,IAEd,MAAM49B,EAAS7tC,MAAK6tC,EACpB,IAAK,IAAIt3B,KAActG,GAAU,GAAI,CACjC,MAAMgD,EAAM46B,EAAO77B,QAAQuE,GAC3BtR,QAAMipC,YAAY33B,EAAY,YAAatD,IAASjT,KAAK4+B,UAAY,GACrE35B,EAAAA,MAAMipC,YAAY33B,EAAY,aAAsB,IAARtD,GACxChO,QAAMC,cAAcqR,EAAWhI,KAC/BgI,EAAW1H,aAAa,KAAM,QAAUoE,EAAM,IAAMhO,EAAAA,MAAMoJ,cAE9DkI,EAAWxD,MAAQ/S,KAAK+S,OAAOo7B,OAAOl7B,IAAQ,GAClB,aAAxBjT,KAAK6+B,eACLtoB,EAAW1H,aAAa,OAAQ,YAGhC0H,EAAW1H,aAAa,OAAQ,OAExC,CACJ,CACA,WAAA6H,CAAY5I,GAGR,MAAM+/B,EAAS7tC,MAAK6tC,EACpB,GAAmB,iBAAR//B,EAAkB,CACzB,IAAIsgC,EAAU,EACd,MAAMC,EAAQC,KAAK9Y,IAAI1nB,EAAIlN,OAAQitC,EAAOjtC,QAC1C,IAAK,IAAIE,EAAI,EAAGA,EAAIutC,EAAOvtC,IACvB+sC,EAAO/sC,GAAGiS,MAAQjF,EAAIqgC,OAAOrtC,GAC7BstC,IAEJ,IAAK,IAAIttC,EAAIstC,EAASttC,EAAI+sC,EAAOjtC,OAAQE,IACrC+sC,EAAO/sC,GAAGiS,MAAQ,EAE1B,CACJ,CACA,QAAA8C,CAAS7M,GACL,OAAO7J,MAAM0W,SAAS7M,GAAKiD,KAAK6G,IAC5B,MAAM+6B,EAAS7tC,MAAK6tC,EAAS5lC,EAAQ4lC,EAAO77B,QAAQhJ,EAAItD,QACxD,GAAIuC,GAAS,GAAKA,EAAS4lC,EAAOjtC,OAAS,EAAI,CAC3C,MAAMsuB,EAAQ2e,EAAO5lC,GACrB,GAAIhD,EAAAA,MAAMC,cAAcgqB,EAAMnc,OAAOoH,QACjC+U,EAAMnc,MAAQ,OAEb,CAED86B,EADa5lC,EAAQ,GACRqP,OACjB,CACJ,CACA,OAAOxE,GAEf,CACA,qBAAAjJ,GACI1K,MAAM0K,wBACF5E,QAAMsG,OAAOvL,KAAKitC,cAElBjtC,KAAKitC,YAAa,GAEtBjtC,KAAKiuC,OAAO1kC,iBAAiBI,EAAAA,WAAWmqB,4BAA6B9zB,KAAK4tC,oBAAoB,GAC9F5tC,KAAKgoC,WACT,CACA,oBAAA75B,GACI,MAAMogC,EAAWvuC,KAAKiuC,OACjBhpC,EAAAA,MAAMsG,OAAOgjC,IACdA,EAAS9kC,oBAAoBE,EAAAA,WAAWmqB,4BAA6B9zB,KAAK4tC,oBAE9EzuC,MAAMgP,sBACV,CACA,SAAA65B,GACI,MAAMhV,EAAOhzB,KAAK4+B,UAAWiP,EAAS7tC,MAAK6tC,EACvCA,EAAOjtC,OAASoyB,GAChB7zB,MAAM8X,sBAAsB42B,EAAO36B,OAAO8f,IAE9ChzB,KAAKiuC,OAAOr1B,WAAao1B,EAAAA,OAAOryB,MAAMqX,EAC1C,CACA6a,GACA,eAAIr3B,GACA,OAAOxW,MAAK6tC,CAChB,GAEJroC,GAAW,CACP0E,QAAM,CAAE0J,MAAM,EAAOE,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBrH,UACvE4qC,GAAuBrjC,UAAW,oBACrC9E,GAAW,CACP0E,QAAM,CAAE0J,MAAM,EAAOE,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBjH,UACvEwqC,GAAuBrjC,UAAW,yBACrC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,cACfqiC,GAAuBrjC,UAAW,iBACrC9E,GAAW,CACPka,YAAU,QAAU9Q,EAAAA,KAAO,cAC5B++B,GAAuBrjC,UAAW,gBACrCqjC,GAAyBnoC,GAAW,CAChCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,eACbyP,SAAU,IAAIzP,+FACwBsD,kEAClCtD,EAAAA,2BAA2BsD,qBAAmBtD,EAAAA,yCAAyCA,EAAAA,iBAC3FsP,OAAQC,EAAAA,SAASC,mBAEtB6yB,ICvLH,IAAInoC,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,IAAIwoC,GAAyB,cAAqCp5B,EAC9D,WAAAsB,CAAY5I,GACR,MAAMxM,EAAStB,KAAKyuC,YAAY3gC,GAClB,MAAVxM,IACAtB,KAAK0uC,MAAM37B,MAAQzR,EAAOqtC,KAC1B3uC,KAAK4uC,OAAO77B,MAAQzR,EAAOutC,MAAM15B,WAEzC,CACA,+BAAAF,CAAgCF,GAC5B,OAAOA,CACX,CACA,QAAAc,CAAS7M,GAEL,MAAM6lC,EAAQ7uC,KAAK4uC,OAAOE,eAAiBC,SAAS/uC,KAAK4uC,OAAO77B,OAC1D47B,EAAO3uC,KAAK0uC,MAAM37B,MAClBA,EAAQ/S,KAAK+S,MAAQ/S,KAAKgvC,UAAUL,EAAME,GAChD,OAAO5pC,EAAAA,MAAM0sB,WAAW5e,EAC5B,CACA,WAAA9T,GACIE,OACJ,CACA,kBAAAwX,CAAmBO,GACflX,KAAKivC,SAAS1wB,OAASrH,EACvBlX,KAAKuwB,MAAMhS,QAAUrH,CACzB,CACA,SAAA83B,CAAUL,EAAME,GAEZ,GAAI32B,MAAM22B,IAAoB,MAAVA,EAChB,OAAOF,EACX,MAAMO,EAAMC,EAAAA,OAAOlvC,MAAM0uC,GAEzB,OADAO,EAAI/L,EAAY,IAAR0L,EACDM,EAAAA,OAAO3b,UAAU0b,EAC5B,CACA,WAAAT,CAAY3gC,GACR,MAAMohC,EAAMC,EAAAA,OAAOlvC,MAAM6N,GACzB,OAAI7I,EAAAA,MAAMC,cAAcgqC,GACb,KAEJ,CAAEP,KAAMQ,EAAAA,OAAO3b,UAAU,CAAExtB,EAAGkpC,EAAIlpC,EAAGopC,EAAGF,EAAIE,EAAGj9B,EAAG+8B,EAAI/8B,IAAM08B,MAAe,IAARK,EAAI/L,EAClF,CACA,YAAA1uB,CAAa1B,GACT,OAAOA,CACX,CACA,eAAIyD,GACA,MAAO,CAACxW,KAAK0uC,MAAO1uC,KAAK4uC,OAC7B,GAEJppC,GAAW,CACPka,EAAAA,UAAU,sBACX8uB,GAAuBlkC,UAAW,gBACrC9E,GAAW,CACPka,EAAAA,UAAU,uBACX8uB,GAAuBlkC,UAAW,iBACrC9E,GAAW,CACPka,EAAAA,UAAU,IAAI9Q,EAAAA,oBACf4/B,GAAuBlkC,UAAW,mBACrC9E,GAAW,CACPka,EAAAA,UAAU,IAAI9Q,EAAAA,kBACf4/B,GAAuBlkC,UAAW,gBACrCkkC,GAAyBhpC,GAAW,CAChCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,eAAgByP,SAAU,eAAenM,EAAAA,uBAC3DtD,EAAAA,kBAAkBsD,EAAAA,oGAAsGA,EAAAA,mBAAmBtD,6BAC9HsD,mFAEbtD,EAAAA,iBAAiBsD,EAAAA,wEAA0EtD,EAAAA,UACtFsP,OAAQC,EAAAA,SAASC,mBAEtB0zB,IC9EH,IAAIhpC,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,IAAIqpC,GAAyB,cAAqC3B,GAC9D,kBAAA/2B,CAAmBO,GACflX,KAAKkvB,MAAM3Q,OAASrH,EACpBlX,KAAKsvC,OAAO/wB,QAAUrH,CAC1B,CACA,eAAIV,GACA,MAAO,CAACxW,KAAKkvB,MACjB,GAEJ1pB,GAAW,CACPka,EAAAA,UAAU,sBACX2vB,GAAuB/kC,UAAW,gBACrC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,OACf+jC,GAAuB/kC,UAAW,iBACrC+kC,GAAyB7pC,GAAW,CAChCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,eACbyP,SAAU,8BAA8BnM,EAAAA,cAAcA,EAAAA,sBAAsBwL,KAAsB9O,gBAAcsD,EAAAA,0GAA4GtD,2CAAyCA,EAAAA,YAAYA,EAAAA,OAAQsP,OAAQC,WAASC,mBAE/Su0B,IC9BH,IAAI7pC,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAGO,MAAMupC,GAAsB,aACtBC,GAAsB,aACnC,MAAMC,WAAyBzwC,EAAAA,iBAC3B,WAAAC,CAAYsjB,GACRpjB,MAAM,OAAQojB,EAClB,EAEG,MAAMmtB,WAAwB1wC,EAAAA,iBACjC,WAAAC,CAAYsjB,GACRpjB,MAAMowC,GAAqBhtB,EAC/B,EAEG,MAAMotB,WAAwB3wC,EAAAA,iBACjC,WAAAC,CAAYsjB,GACRpjB,MAAMqwC,GAAqBjtB,EAC/B,EAGJqtB,eAAeC,GAAgBC,EAAKC,EAAQ,CAAEnzB,MAAO,EAAGozB,YAAa,EAAGhd,KAAM,IAC1E,UAAW,IAAK5mB,EAAGkZ,KAAUwqB,EAAIG,UAC7B,GAAmB,SAAf3qB,EAAM4qB,KAAiB,CACvBH,EAAMnzB,QACN,MAAM2F,QAAa+C,EAAM6qB,UACzBJ,EAAM/c,MAAQzQ,EAAKyQ,IACvB,MAEI+c,EAAMC,oBACAH,GAAgBvqB,EAAOyqB,GAGrC,OAAOA,CACX,CAaA,IAAIK,GAAqB,cAAiCh7B,EACtD,WAAAnW,CAAYoxC,EAAW,IAAIC,EAAAA,WAAWC,cAClCpxC,QACAa,KAAKqwC,SAAWA,EAChBrwC,KAAKwwC,YAAc,OACnBxwC,KAAKywC,aAAe,QACpBzwC,KAAK0wC,aAAe,QACpB1wC,KAAK2wC,WAAY,EACjB3wC,KAAKgzB,KAAO,EACZhzB,KAAK4wC,WAAa,EAClB5wC,KAAK6wC,UAAW,EAChB7wC,KAAK8wC,QAAS,EACd9wC,KAAK+wC,aAAc,EACnB/wC,KAAK2M,QAAU,CACXszB,YAAe,EACf3xB,IAAO,GACP0iC,QAAW,EACXC,SAAY,KACZ3vB,KAAQ,KACR4vB,UAAa,EACbhR,UAAa,OACbiR,QAAU,EAElB,CACA,+BAAAl8B,CAAgCF,GAC5B,OAAOA,CACX,CACA,WAAA2B,CAAY5I,GACR9N,KAAK4wC,WAAa,EAClB5wC,KAAK2wC,WAAY,EACjB3wC,KAAKoxC,YAAYr+B,MAAQ,EAC7B,CACA,YAAAs+B,CAAa9uB,EAAOviB,KAAK+S,MAAO49B,EAAY3wC,KAAK2wC,UAAW9wC,EAAOG,KAAKsxC,YAAc,QAClF,GAAIX,EACA,MAAO,OAEX,MAAMY,GAAYtsC,QAAMC,cAAcqd,GACtC,OAAQ1iB,GACJ,IAAK,YACL,IAAK,mBACD,OAAO0xC,EAAW,SAAW,sBACjC,IAAK,WACL,IAAK,kBACD,OAAOA,EAAW,QAAU,cAEpC,GAAItsC,EAAAA,MAAMC,cAAcqd,GACpB,MAAO,cAEX,IAAIyV,EAAWzV,EACK,iBAATA,IACPyV,EAAWzV,EAAK/e,MAEpB,MACMguC,EADa,kBACM7wC,KAAKq3B,GAC9B,GAAIwZ,GAASA,EAAM5wC,OACf,OAAQ4wC,EAAM,GAAGpvC,eACb,IAAK,MACD,MAAO,iBAKX,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,MACD,MAAO,SAGnB,MAAO,aACX,CACA,QAAIkf,GACA,OAAOthB,KAAK2M,QAAQ2U,IACxB,CACA,eAAI9K,GACA,MAAO,CAACxW,KAAKoxC,YACjB,CACA,YAAA38B,CAAa3G,GACT,MAAMiF,EAAQ/S,KAAKyxC,aAAe3jC,EAClC,GAAI7I,EAAAA,MAAMC,cAAc6N,GACpB,MAAO,GAEX,GAAqB,iBAAVA,EACP,OAAOA,EAEX,IAAIme,EAAU,SAAUne,EAAQA,EAAMvP,KAAO,GACzCyB,EAAAA,MAAMuC,QAAQuL,KACdme,EAAUne,EAAM1P,IAAI+C,GAAKA,EAAE5C,MAAMyW,KAAK,OAE1C,MAAM81B,EAAQ/vC,KAAK0xC,OACnB,GAAIzsC,EAAAA,MAAMC,cAAc6qC,GACpB,OAAO7e,EAEX,MAAM8B,KAAEA,EAAIpW,MAAEA,GAAUmzB,EACxB,MAAO,GAAG7e,OAAatU,SAAuB,IAAVA,EAAc,GAAK,QAAQ3X,QAAMyrB,KAAKsC,KAAKA,KACnF,CACA,kBAAArc,CAAmBO,GACflX,KAAK2xC,mBAAmBz6B,EAC5B,CACA,qBAAArN,GACI1K,MAAM0K,wBACN7J,KAAK2xC,qBACL3xC,KAAKoxC,YAAY7nC,iBAAiB,QAAS2M,EAAAA,wBAAwB,EACvE,CACA,uBAAAtI,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,IACzCA,GAEQ,eADDvK,EAEAxD,KAAK2xC,oBAGrB,CACA,oBAAAxjC,GACQnO,KAAKoxC,aACLpxC,KAAKoxC,YAAY3nC,oBAAoB,QAASyM,EAAAA,wBAAwB,GAE1E/W,MAAMgP,sBACV,CACA,kBAAAwjC,CAAmBz6B,EAAWlX,KAAKkX,SAAUrX,EAAOG,KAAKsxC,YAAc,QACnE,MAAMpiB,EAAQlvB,KAAKoxC,YAInB,OAHAliB,EAAMzY,gBAAgB,mBACtByY,EAAMzY,gBAAgB,YACtByY,EAAM3Q,OAASrH,EACPrX,GACJ,IAAK,YACDqvB,EAAMrgB,aAAa,kBAAmB,QACtC,MACJ,IAAK,WACDqgB,EAAMrgB,aAAa,WAAY,QAC/B,MACJ,IAAK,mBACL,IAAK,cACL,IAAK,kBACDqgB,EAAM3Q,QAAS,EAG3B,CAIA,iBAAAqzB,CAAkB5oC,GACd6C,EAAAA,aAAa7C,GACb,MAAM+J,EAAwE/S,KAAKyxC,aAAezxC,KAAK+S,MAAO8+B,EAAYruC,IACtHxD,KAAKwM,cAAc,IAAIvD,YAAY,WAAY,CAAEC,OAAQ1F,EAAMpE,SAAS,EAAMC,YAAY,MAEzF4F,EAAAA,MAAMC,cAAc6N,KACA,iBAAVA,EAEP8+B,EAAS9+B,GAGL,YAAaA,IAAU9N,EAAAA,MAAMC,cAAc6N,EAAMlS,SAEjDoE,EAAAA,MAAM6sC,SAAS7sC,QAAM8sC,cAAc,oCAAsCh/B,EAAMlS,SAAUkS,EAAMvP,KAAMuP,EAAMlQ,MAEtG,SAAUkQ,IACX,SAAUA,GACS,SAAfA,EAAMm9B,KACNn9B,EAAMo9B,UAAUlkC,KAAKsW,IACjBtd,EAAAA,MAAM6sC,SAASvvB,EAAMA,EAAK/e,KAAM+e,EAAK1f,QAS7CgvC,EAAS9+B,EAAMvP,OAKnC,CACA,KAAAmH,GACIxL,MAAMwL,QACN3K,KAAKyxC,YAAc,KACnBzxC,KAAK+wC,aAAc,CACvB,CACA,YAAAiB,GACI,MAAMjC,EAAQ/vC,KAAK0xC,OACb1e,EAAOhzB,KAAK+3B,QAClB,OAAI/E,EAAO,GAAKA,EAAO+c,EAAM/c,MACzBhzB,KAAK+wC,aAAc,GACZ,IAGX/wC,KAAK+wC,aAAc,GACZ,EACX,CACA,mBAAAkB,CAAoB1vB,EAAOviB,KAAKoxC,YAAYx0B,MAAM,GAAIob,GAC9CzV,aAAgB2vB,OAChBla,EAAWzV,EAAK/e,MAEpBw0B,EAAWA,EAASma,UAAUna,EAASoa,YAAY,MAAQ,GAE3D,MAAMpf,EAAOhzB,KAAK+3B,QAClB,GAAI/E,EAAO,GAAKA,EAAOzQ,EAAKyQ,KAExB,OADAhzB,KAAK+wC,aAAc,GACZ,EAGX,MAAM3Z,EAAUp3B,KAAKo3B,QACrB,OAAIA,IAAa,IAAIC,OAAOD,EAAS,KAAKpW,KAAKgX,IAC3Ch4B,KAAK+wC,aAAc,GACZ,IAGX/wC,KAAK+wC,aAAc,GACZ,EACX,CACA,MAAAsB,CAAO9vB,EAAMyV,EAAUtmB,GACnB,GAAI1R,KAAKiyC,oBAAoB1vB,EAAMyV,GAC/B,OAAOh4B,KAAKsyC,QAAQ/vB,EAAMyV,EAAUtmB,EAE5C,CACA,aAAM4gC,CAAQ/vB,EAAMyV,EAAUtmB,GAC1B,IAAI6gC,EAAWvyC,KAAMiQ,EAASsiC,EAAS5lC,QACvC,IAAK4V,EACD,QACCyV,GAAYzV,aAAgB2vB,OAC7Bla,EAAWzV,EAAK/e,MAEpB+uC,EAASzB,QAAS,EAClB7gC,EAAOkhC,QAAS,EAChBlhC,EAAO+gC,QAAU,EACjB,MAAM1vB,EAAOiB,EAAMyQ,EAAOuf,EAASvf,KAAO1R,EAAK0R,KAC/CgF,EAAWA,EAASma,UAAUna,EAASoa,YAAY,MAAQ,GAC3DG,EAAS3B,WAAa,EACtB2B,EAAS1B,UAAW,EAEpB,IAAIrY,EAAU,CACVR,WAAUp3B,OAAQoyB,EAAM5hB,OAAQ,QAASM,QAAO7O,KAAM0f,EAAK1f,MAG/D0vC,EAAS5B,WAAY,EACrB,IACI,IAAI3qC,QAAUusC,EAASja,OAAOE,GAC9B,GAAIxyB,EAAEhC,GAAI,CACN,IAAIjE,QAAaiG,EAAEjG,OACnBkQ,EAAOihC,UAAY,EACnBjhC,EAAOqR,KAAOA,EACdrR,EAAO3B,IAAMvO,EAAKuO,IAClBikC,EAASC,SACb,MAEID,EAAS5B,WAAY,EAEzB,OAAO3qC,CACX,CACA,MAAO9F,GACHqyC,EAAS5B,WAAY,CACzB,CAGJ,CACA,mBAAM8B,CAAcnxB,GAChB,MAAM5R,QAAezK,QAAMsc,cAAcD,GACzC,OAAO5R,EAAOyiC,UAAUziC,EAAOsC,QAAQ,WAAa,EACxD,CACA,eAAM0gC,CAAUpxB,EAAMqxB,GAClB,IAAIJ,EAAWvyC,KAAMiQ,EAASsiC,EAAS5lC,QACvCsD,EAAO+gC,UAGP,IAAIxY,EAAU,CACVoa,YAFgB5yC,KAAKyyC,cAAcnxB,GAGnChT,IAAK2B,EAAO3B,IAAKusB,SAAU8X,EAC3BvhC,OAAQ,MAEZ,IACI,MAAMpL,QAAUusC,EAASja,OAAOE,GAChC,GAAIxyB,EAAEhC,GAAI,CAEN,GADAiM,EAAO+gC,UACD/gC,EAAOkhC,OACT,OACJ,MACMzhC,QADa1J,EAAEjG,OAGjB2P,EAAOkhC,WAAa5wC,KAAK4wC,kBACnB2B,EAASM,iBAAiBvE,KAAKwE,MAAMxE,KAAK7Y,IAAI,EAAG/lB,EAAOkhC,aAAc,KAE5E2B,EAAS1B,UAAYnhC,EAAOmhC,WAC5B0B,EAAS1B,SAAWnhC,EAAOmhC,UACD,IAAtB0B,EAAS1B,WACT0B,EAAS5B,WAAY,EACrB4B,EAAS38B,cAAc,IAAI85B,GAAgBhgC,KAGvD,MAGIO,EAAOihC,UAAYyB,EACnBJ,EAASzB,QAAS,EAClByB,EAAS5B,WAAY,CAE7B,CACA,MAAOvkC,GAEH6D,EAAOihC,UAAYyB,EACnBJ,EAASzB,QAAS,EAClByB,EAAS5B,WAAY,CACzB,CACJ,CACA,OAAA6B,GACI,MAAMviC,EAASjQ,KAAK2M,QAASqmB,EAAOhzB,KAAKgzB,KAAM1R,EAAOrR,EAAOqR,KAAM4e,EAAYlgC,KAAKkgC,WAAajwB,EAAOiwB,UACxG,IAAI92B,EAAQ6G,EAAOihC,UACf6B,EAAM3pC,EAAQ82B,EAElBjwB,EAAOghC,SAAW+B,YAAY,KAC1B,GAAI5pC,EAAQ4pB,IAAShzB,KAAK8wC,OAAQ,CAC9B,MAAM7Q,EAAcjgC,KAAKigC,aAAehwB,EAAOgwB,YAC/C,GAAIhwB,EAAO+gC,SAAW/Q,EAClB,OACJjgC,KAAK0yC,UAAUpxB,EAAKoR,MAAMtpB,EAAO2pC,GAAM3pC,GAEvC2pC,GADA3pC,EAAQ2pC,GACM7S,CAClB,KACK,CACWlgC,KAAKoxC,YACXr+B,MAAQ,GACdoO,OAAO8xB,cAAchjC,EAAOghC,SAChC,GACD,IACP,CACA,sBAAMiC,CAAiB3wB,EAAMyV,EAAWzV,EAAK/e,KAAM8d,EAAOiB,GACtD,OAAOviB,KAAKyxC,YAAc,CACtBjuC,KAAMw0B,EACNhF,KAAM1R,EAAK0R,KACXnwB,KAAM0f,EAAK1f,KACXswC,aAAcluC,EAAAA,MAAM2mB,UAAUrJ,EAAK4wB,cAAcpX,cACjDl7B,cAAeb,KAAKyyC,cAAcnxB,GAE1C,CACA,QAAA8xB,CAASC,GACL,MAAO,wBAAyBA,GAC5B,MACI,IACI,OAAOA,EAAEC,OAASD,EAAEnlB,GACxB,CACA,MACI,OAAO,CACX,CACH,EAPD,EAQR,CACA,iBAAAqlB,GACSvzC,KAAKozC,SAASjyB,SAGnBA,OAAOqyB,oBAAoB,CAAE3zC,KAAM,SAAUoM,KAAKwnC,IAC9CzzC,KAAK4V,cAAc,IAAI65B,GAAiBgE,KAEhD,CACA,aAAAC,CAAcC,EAA+B,oBAApB3zC,KAAKsxC,WAAkCla,EAAUp3B,KAAKo3B,SACtEp3B,KAAKozC,SAASjyB,SAGnBA,OAAOyyB,mBAAmB,CAAED,aAAY1nC,KAAK2Q,IACzC5c,KAAK4V,cAAc,IAAI65B,GAAiB7yB,KAEhD,CAKA,aAAAi3B,CAAc7qC,GAEV,GADA6C,EAAAA,aAAa7C,IACThJ,KAAKkX,SAGT,OAAQlX,KAAKsxC,YACT,IAAK,mBACDtxC,KAAKuzC,oBACL,MACJ,IAAK,cACL,IAAK,kBACDvzC,KAAK0zC,gBAGjB,CACA,mBAAMI,GAEF9zC,KAAK2wC,WAAY,EACZ1rC,EAAAA,MAAMC,cAAclF,KAAK+S,aAKpB9N,EAAAA,MAAM8uC,KAAK,MAJjB/zC,KAAK4wC,WAAa,QACZ3rC,QAAM+uC,oBAAoBh0C,KAAKi0C,eAKnCj0C,KAAKqwC,SAAS6D,IAAI,EAAG,IAAK,IAAK,EAAG5D,EAAAA,WAAW6D,QAAQC,UAAW,CAAC9qC,EAAGwJ,KACtE9S,KAAK4wC,WAAa99B,IAGtB9S,KAAK4wC,WAAa,EAClB5wC,KAAK2wC,WAAY,CACrB,CACA,QAAA96B,CAAS7M,GACL,OAAO,IAAI8C,QAAQ8jC,MAAOrgC,EAASC,KAC/B,GAAIgP,mBAAiBC,aAAazV,EAAK0mC,IAAkB,CAErD,MAAMntB,EAAOviB,KAAK+S,MAAQ/J,EAAIE,OAAO8uB,SACrCh4B,KAAKwM,cAAcxD,GACnBuG,EAAQgT,EACZ,MACK,GAAI/D,mBAAiBC,aAAazV,EAAKymC,IAAmB,CAE3D,IACIgE,EAAWlxB,EAAM3F,EADjB9O,EAAM9E,EAAIE,OAEd,OAAQlJ,KAAKsxC,YACT,IAAK,mBACDmC,EAAY3lC,EACZ9N,KAAK0xC,aAAe7B,GAAgB4D,GACpC,MACJ,IAAK,kBACL,IAAK,cACD72B,EAAQ9O,EACa,IAAjB8O,EAAMhc,SACNkN,EAAM8O,EAAM,IAEhB5c,KAAK0xC,aAjb7B9B,eAAgChzB,GAC5B,MAAMmzB,EAAQ,CAAEnzB,MAAO,EAAGozB,YAAa,EAAGhd,KAAM,GAChD,IAAK,IAAI7mB,KAAKyQ,EAAO,CACjB,MAAM2F,QAAapW,EAAEgkC,UACrBJ,EAAMnzB,QACNmzB,EAAM/c,MAAQzQ,EAAKyQ,IACvB,CACA,OAAO+c,CACX,CAya4CsE,CAAiBz3B,GACrC,MACJ,QAEI5c,KAAK0xC,OAAS,CAAE1B,YAAa,EAAGpzB,MAAO,EAAGoW,KAAM,GAGxDzjB,EAAQvP,KAAK+S,MAAQ/S,KAAKyxC,YAAc3jC,GACxC,MAAML,EAAQzN,KAAKgyC,eACnBhyC,KAAKwM,cAAc,IAAImjC,GAAgB,CAAE8D,YAAWlxB,OAAM3F,QAAOnP,UACrE,KACK,CAED,IAAIyhB,EAAQlvB,KAAKoxC,YACjB,GAA2B,IAAvBliB,EAAMtS,MAAMhc,OAEZZ,KAAK0xC,OAAS,CAAE1B,YAAa,EAAGpzB,MAAO,EAAGoW,KAAM,GAChDzjB,EAAQvP,KAAK+S,MAAQ,UAEpB,CACD,MAAM6J,EAAQsS,EAAMtS,MAAMhc,OAE1B,GADAZ,KAAK0xC,OAAS,CAAE1B,YAAa,EAAGpzB,QAAOoW,KAAMvgB,MAAMoM,KAAKqQ,EAAMtS,OAAOsvB,OAAO,CAAC6B,EAAKxrB,EAAMnW,IAAM2hC,EAAOxrB,EAAKyQ,KAAM,IAC5GpW,EAAQ,EAAG,CAEX,MAAM03B,EAAgB7hC,MAAMoM,KAAKqQ,EAAMtS,OACvCrN,EAAQvP,KAAK+S,MAAQ/S,KAAKyxC,YAAc6C,GACxC,MAAM7mC,EAAQzN,KAAKgyC,eACnBhyC,KAAKwM,cAAc,IAAImjC,GAAgB,CAAE/yB,MAAO03B,EAAe7mC,UACnE,KACK,CACD,MAAM8U,EAAO2M,EAAMtS,MAAM,GAAIob,EAAWzV,EAAK/e,KAC7C,IAAI8d,EAAOiB,EAENviB,KAAKiyC,oBAAoB1vB,IAAUtd,EAAAA,MAAMC,cAAclF,KAAKP,MAKzD,kBAAkBuhB,KAAKgX,IAAah4B,KAAKmgC,cAAgB,GAAKngC,KAAKogC,eAAiB,IACpF9e,QAAarc,EAAAA,MAAMsvC,OAAOC,OAAOlzB,EAAMthB,KAAKmgC,cAAengC,KAAKogC,eAAgB,CAAEzB,QAAS,YAEzF3+B,KAAKkzC,iBAAiB3wB,EAAMyV,EAAU1W,GACxCrc,QAAMC,cAAclF,KAAKP,YAEnBO,KAAK8zC,gBAEXvkC,EAAQvP,KAAK+S,MAAQ/S,KAAKyxC,eAI1BzxC,KAAKsyC,QAAQhxB,EAAM4N,EAAMnc,OACzBxD,EAAQvP,KAAK+S,SAhBjBxD,EAAQvP,KAAK+S,YAAc/S,KAAKkzC,iBAAiB3wB,IAoBrDviB,KAAKwM,cAAc,IAAImjC,GAAgB,CAAEliC,OAAQzN,KAAK+wC,YAAaxuB,SACvE,CACJ,CACJ,GAER,CACA,MAAA+V,CAAOE,GACH,OAAO54B,MAAMI,KAAKP,IAAK,CACnBqC,OAAQ,OAAQhC,YAAaE,KAAKy0C,iBAAkB/0C,QAASuF,EAAAA,MAAMqC,OAAO,CAAEotC,OAAU,mBAAoB,eAAgB,oBAAsB10C,KAAK20C,cAAgB,CAAA,GAAKxlB,KAAMpuB,KAAKyyB,UAAUgF,IAEvM,CACA,WAAMoc,CAAM10C,GACRA,EAAEyc,iBACFzc,EAAEm2B,kBACF,IAAIwe,EAAW70C,KAAMiQ,EAAS4kC,EAASloC,QAASuiB,EAAQ2lB,EAASzD,YACjE6B,cAAchjC,EAAOghC,UACrB,IAAIzY,EAAU,CACVpnB,OAAQ,OAAQ9C,IAAK2B,EAAO3B,KAEhC,IACI,IAAItI,QAAU6uC,EAASvc,OAAOE,GAM9B,OALIxyB,EAAEhC,KACFiM,EAAOkhC,QAAS,EAChB0D,EAAS7hB,KAAO,EAChB6hB,EAAShC,iBAAiB,EAAI,MAE3B7sC,CACX,CACA,MAAO9F,GACP,CACR,QAIY,OAFAgvB,EAAMnc,MAAQ,GACd8hC,EAASlE,WAAY,EACd3qC,CACX,CACJ,CACA,gBAAA6sC,CAAiBiC,EAAKC,EAAW,KAC7B,MAAMl2B,EAAO7e,KAAK4wC,WAClB,OAAO5wC,KAAKqwC,SAAS6D,IAAIr1B,EAAMi2B,EAAKC,EAAU,EAAGzE,EAAAA,WAAW6D,QAAQC,UAAW,CAAC9qC,EAAGwJ,KAC/E9S,KAAK4wC,WAAa99B,GAE1B,CACA,MAAAkiC,CAAO90C,GACHA,EAAEyc,iBACFzc,EAAEm2B,kBACFr2B,KAAK8wC,QAAS,EACd9wC,KAAKwyC,SACT,CACA,MAAAyC,CAAO/0C,GACHA,EAAEyc,iBACFzc,EAAEm2B,kBACFr2B,KAAK+wC,aAAc,EACnB,MAAM7hB,EAAQlvB,KAAKwW,YAAY,GAE/B0Y,EAAMnc,MAAQ,GACT,UAAUiO,KAAKk0B,UAAUC,aAC1BjmB,EAAMrsB,KAAO,GACbqsB,EAAMrsB,KAAO,QAEjB7C,KAAK4V,cAAc,KACvB,GAEJpQ,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpDu8B,GAAmB9lC,UAAW,2BACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpDitC,GAAmB9lC,UAAW,uBACjC9E,GAAW,CACPka,EAAAA,UAAU,qBACX0wB,GAAmB9lC,UAAW,sBACjC9E,GAAW,CACPka,YAAU,GAAGpU,EAAAA,YACd8kC,GAAmB9lC,UAAW,iBACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCitC,GAAmB9lC,UAAW,sBACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCitC,GAAmB9lC,UAAW,uBACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCitC,GAAmB9lC,UAAW,uBACjC9E,GAAW,CACP0E,QAAM,CAAE0J,MAAM,EAAOE,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBjH,UACvEitC,GAAmB9lC,UAAW,kBACjC9E,GAAW,CACP0E,QAAM,CAAE0J,MAAM,EAAOE,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBjH,UACvEitC,GAAmB9lC,UAAW,cACjC9E,GAAW,CACP0E,QAAM,CAAE0J,MAAM,EAAOE,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBrH,UACvEqtC,GAAmB9lC,UAAW,wBACjC9E,GAAW,CACP0E,QAAM,CAAE0J,MAAM,EAAOE,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBrH,UACvEqtC,GAAmB9lC,UAAW,sBACjC9E,GAAW,CACP0E,QAAM,CAAE0J,MAAM,EAAOE,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBrH,UACvEqtC,GAAmB9lC,UAAW,oBACjC9E,GAAW,CACP0E,QAAM,CAAE0J,MAAM,EAAOE,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBrH,UACvEqtC,GAAmB9lC,UAAW,yBACjC9E,GAAW,CACP0E,QAAM,CAAE0J,MAAM,EAAOE,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBrH,UACvEqtC,GAAmB9lC,UAAW,kBACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE4J,aAAa,EAAM3J,UAAWC,EAAAA,mBAAmBjH,UAC1DitC,GAAmB9lC,UAAW,qBACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCotC,GAAmB9lC,UAAW,oBACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvCqtC,GAAmB9lC,UAAW,eACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvCqtC,GAAmB9lC,UAAW,qBACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCotC,GAAmB9lC,UAAW,mBACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCotC,GAAmB9lC,UAAW,iBACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCotC,GAAmB9lC,UAAW,sBACjC8lC,GAAqB5qC,GAAW,CAC5BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,UAAWsP,OAAQC,EAAAA,SAASC,gBACzCC,SAAU,IAAIzP,EAAAA,8DAA8DsD,EAAAA,eAAeA,EAAAA,8QAE5FtD,iIACIA,oiBAKmBsD,0RACUA,EAAAA,oBAAoBA,0GAChDtD,sBACJA,oBACDA,yEACIA,kJACmEA,EAAAA,4CAA4CA,cAAYA,EAAAA,oBAC9HA,oBACDA,+GACIA,mJACmCA,EAAAA,2CAA2CA,cAAYA,EAAAA,oBAC7FA,sBAEDA,oLACkIsD,EAAAA,qCAAqCA,0DAAwDtD,EAAAA,mBAE/NA,iJACIA,EAAAA,0JAA0JA,qBAC7JA,sBAEDA,EAAAA,qNAAqNA,4BAExNA,EAAAA,eAED8kC,ICjrBH,IAAI5qC,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,IAAIovC,GAA0B,cAAsC1H,GAChE,WAAAzuC,GACIE,OACJ,CACA,kBAAAwX,CAAmBO,GAAY,CAC/B,eAAIV,GACA,MAAO,CAACxW,KAAKkvB,MACjB,GAEJ1pB,GAAW,CACPka,EAAAA,UAAU,uBACX01B,GAAwB9qC,UAAW,gBACtC8qC,GAA0B5vC,GAAW,CACjCwO,gBAAc,CAAEC,QAAS3I,EAAAA,EAAI,gBAAiByP,SAAU,0BAA2BH,OAAQC,EAAAA,SAASC,mBACrGs6B,ICvBH,IAAI5vC,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,MAAMqvC,GAAwBpwC,EAAAA,MAAMowC,wBAC7B,IAAIC,IACX,SAAWA,GACPA,EAAoB,MAAI,QACxBA,EAAqB,OAAI,SACzBA,EAAsB,QAAI,SAC7B,CAJD,CAIGA,KAAiBA,GAAe,CAAA,IACnC,MAAMC,WAA6BC,EAAAA,cAC/B,WAAAv2C,CAAYw2C,GACRt2C,MAAM,kBAAmB,CAAEs2C,UAC/B,EAEJ,IAAIC,GAAuB,cAAmCtgC,EAC1D,WAAAnW,GACIE,SAAS4G,WACT/F,KAAK21C,eAAkB3sC,IACnBhJ,KAAK41C,gBAET51C,KAAK2gC,KAAO2U,GAAathB,MACfh0B,KAAK61C,cAAgBR,GAAsBz0C,OAAS,EAC9DZ,KAAK81C,WAAa,EAClB91C,KAAK+1C,oBAAqB,EAC1B/1C,KAAKg2C,sBAAyB91C,IAC1B,MAAMgvB,EAAQlvB,KAAKi2C,SACf/mB,EAAMtS,MAAMhc,OAAS,GACrBqE,EAAAA,MAAMsc,cAAc2N,EAAMtS,MAAM,IAAI3Q,KAAKxM,IACrCwF,EAAAA,MAAMuc,UAAU/hB,GAAKwM,KAAKwV,IACtBzhB,KAAKk2C,SAASz0B,QAK9BzhB,KAAKm2C,yBAA4Bj2C,IAC7B2L,EAAAA,aAAa3L,GACbF,KAAK2gC,KAAO2U,GAAac,QAE7Bp2C,KAAKq2C,oBAAuBn2C,IACxB2L,EAAAA,aAAa3L,GACbF,KAAKi2C,SAASvqC,SAElB1L,KAAKs2C,mBAAsBp2C,IACvB2L,EAAAA,aAAa3L,GACbF,KAAK81C,WAAa,EAClB91C,KAAKk2C,YAETl2C,KAAKu2C,mBAAsBr2C,IACvB2L,EAAAA,aAAa3L,GACbF,KAAK81C,WAAa,EAClB91C,KAAKk2C,YAETl2C,KAAKw2C,uBAA0Bt2C,IAC3B2L,EAAAA,aAAa3L,GACbF,KAAK4V,cAAc,IAAI2/B,GAAqBv1C,KAAKy2C,UAEzD,CACA,eAAIjgC,GACA,MAAO,EACX,CACA,kBAAAG,CAAmBO,GAEnB,CACA,QAAArB,CAAS7M,GACL,OAAO,IAAI8C,QAAQ,CAACyD,EAASnD,KACrBoS,mBAAiBC,aAAazV,EAAKusC,KACnChmC,EAAQvP,KAAK+S,MAAQ/J,EAAIE,OAAOusC,QAChCz1C,KAAK2gC,KAAO2U,GAAathB,OAGzBzkB,EAAQvP,KAAK+S,QAGzB,CACA,WAAA2D,CAAY5I,GACR9N,KAAK41C,aAAa9nC,EACtB,CACA,YAAA2G,CAAa1B,GACT,OAAOA,CACX,CACA,+BAAAkC,CAAgCF,GAC5B,OAAO3K,EAAAA,mBAAmBjH,OAAO2R,QAAQC,EAAM/U,KACnD,CACA,iBAAI02C,GACA,OAAO12C,KAAK61C,eAAiBR,GAAsB,EACvD,CACA,uBAAAznC,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,OACD,OAAQsK,GACJ,KAAKwnC,GAAathB,MACdh0B,KAAKy2C,QAAU,KACf,MAAMvnB,EAAQlvB,KAAKi2C,SAEnB/mB,EAAMnc,MAAQ,GACT,UAAUiO,KAAKk0B,UAAUC,aAC1BjmB,EAAMrsB,KAAO,GACbqsB,EAAMrsB,KAAO,QAEjB,MACJ,KAAKyyC,GAAac,OACdp2C,KAAK22C,uBAGb,MACJ,IAAK,UACD32C,KAAK41C,aAAa9nC,GAAO9N,KAAK+S,OAC9B,MACJ,IAAK,QACL,IAAK,SACD/S,KAAK42C,YAGjB,CACA,qBAAA/sC,GACI1K,MAAM0K,wBACN7J,KAAK42C,YACL52C,KAAK62C,QAAQttC,iBAAiB,QAASvJ,KAAKq2C,qBAAqB,GACjEr2C,KAAK82C,aAAavtC,iBAAiB,QAASvJ,KAAKm2C,0BAA0B,GAC3En2C,KAAK+2C,OAAOxtC,iBAAiB,QAASvJ,KAAKs2C,oBAAoB,GAC/Dt2C,KAAKg3C,OAAOztC,iBAAiB,QAASvJ,KAAKu2C,oBAAoB,GAC/Dv2C,KAAKi3C,WAAW1tC,iBAAiB,QAASvJ,KAAKw2C,wBAAwB,GACvEx2C,KAAKi2C,SAAS1sC,iBAAiB,SAAUvJ,KAAKg2C,uBAAuB,EACzE,CACA,oBAAA7nC,GACQnO,KAAKqwB,UACLrwB,KAAK62C,QAAQptC,oBAAoB,QAASzJ,KAAKq2C,qBAAqB,GACpEr2C,KAAK82C,aAAartC,oBAAoB,QAASzJ,KAAKm2C,0BAA0B,GAC9En2C,KAAK+2C,OAAOttC,oBAAoB,QAASzJ,KAAKs2C,oBAAoB,GAClEt2C,KAAKg3C,OAAOvtC,oBAAoB,QAASzJ,KAAKu2C,oBAAoB,GAClEv2C,KAAKi3C,WAAWxtC,oBAAoB,QAASzJ,KAAKw2C,wBAAwB,GAC1Ex2C,KAAKi2C,SAASxsC,oBAAoB,SAAUzJ,KAAKg2C,uBAAuB,IAE5E72C,MAAMgP,sBACV,CACA,SAAAyoC,GACI,MAAMM,EAASl3C,KAAKm3C,OAAQC,EAAQp3C,KAAKq3C,QACpCpyC,EAAAA,MAAMsG,OAAO2rC,IAAYjyC,QAAMsG,OAAO6rC,KACvCF,EAAOt0B,MAAMC,MAAQu0B,EAAMx0B,MAAMC,MAAS7iB,KAAK6iB,OAAS7iB,KAAK6iB,MAAQ,MAAS,GAC1Eq0B,EAAOt0B,MAAME,OAASs0B,EAAMx0B,MAAME,OAAU9iB,KAAK8iB,QAAU9iB,KAAK8iB,OAAS,MAAS,GACtF9iB,KAAK41C,aAAa51C,KAAKy2C,SAAWz2C,KAAK+S,OAE/C,CACA,QAAAmjC,CAAS7yB,GACL,MAAM9H,EAAKvb,KAAMo3C,EAAQp3C,KAAKq3C,QAASH,EAASl3C,KAAKm3C,OAKrD,IAAIG,EAAUC,EASd,GAbAh8B,EAAG07B,WAAWxrC,UAAW,EACrBxG,EAAAA,MAAMsG,OAAO8X,KACbA,EAAK9H,EAAG87B,SAGRh0B,aAAcm0B,kBACdF,EAAWj0B,EAAGo0B,WACdF,EAAYl0B,EAAGq0B,cAGfJ,EAAWj0B,EAAGs0B,aACdJ,EAAYl0B,EAAGu0B,eAEfr8B,EAAGu6B,YAAc,EAAG,CACpB,IAAI+B,EAAMppC,SAASC,cAAc,UACjCmpC,EAAIh1B,MAAQ7iB,KAAK6iB,OAASq0B,EAAOY,YACjCD,EAAI/0B,OAAS9iB,KAAK8iB,QAAUo0B,EAAOa,aACnC,IAAIC,EAAMH,EAAII,WAAW,MACzBhzC,EAAAA,MAAMizC,oBAAoB70B,EAAI20B,EAAKV,EAAUC,GAC7C,IAAI1vB,EAAOtM,EAAG48B,MACdtwB,EAAKgD,aAAagtB,EAAKT,GACvBS,EAAIlpC,UAAY,qBAChBqqB,WAAW,WACPnR,EAAKuwB,YAAYP,EACrB,EAAG,KACHt8B,EAAG88B,eAAeR,EAAIS,aAAarsC,KAAMkG,IACrCoJ,EAAGg9B,kBAAkBpmC,GACrBoJ,EAAG07B,WAAWxrC,UAAW,GAEjC,MAEIutB,WAAW,KAAQzd,EAAGu6B,aAAc91C,KAAKk2C,YAAe,IAChE,CACA,YAAAN,CAAa9nC,EAAM9N,KAAK+S,OACpB,IAAI8kC,EAAM73C,KAAKm3C,OACf,IAAKlyC,EAAAA,MAAMsG,OAAOssC,GAAM,CACpBA,EAAIh1B,MAAQg1B,EAAIC,YAChBD,EAAI/0B,OAAS+0B,EAAIE,aACjB,IAAIC,EAAMH,EAAII,WAAW,MACrBhzC,EAAAA,MAAMC,cAAc4I,GACpBkqC,EAAIQ,UAAU,EAAG,EAAGX,EAAIh1B,MAAOg1B,EAAI/0B,QAGnC7d,EAAAA,MAAMuc,UAAU1T,GAAK7B,KAAKwV,IACtBxc,EAAAA,MAAMizC,oBAAoBz2B,EAAKu2B,EAAKv2B,EAAIoB,MAAOpB,EAAIqB,SAG/D,CACJ,CACA,iBAAAy1B,CAAkB9C,GACdz1C,KAAK2gC,KAAO2U,GAAamD,QACzBz4C,KAAKy2C,QAAUhB,CACnB,CACA,cAAA4C,CAAe5C,GACX,IAAIoC,EAAM73C,KAAKm3C,OAGf,IAAIxY,EAIJ,OANAkZ,EAAIh1B,MAA0Bg1B,EAAIC,YAClCD,EAAI/0B,OAA4B+0B,EAAIE,aAEhC/3C,KAAK2+B,QAAU,IACfA,EAAU2P,KAAK9Y,IAAI,EAAG8Y,KAAK7Y,IAAI,EAAGz1B,KAAK2+B,WAEpC15B,EAAAA,MAAMyzC,UAAUjD,EAAQoC,EAAIh1B,MAAOg1B,EAAI/0B,OAAQ6b,EAC1D,CACA,oBAAAgY,GACI,GAAI32C,KAAK61C,gBAAkB71C,KAAK+1C,mBAAoB,CAChD,IAAIx6B,EAAKvb,KACTub,EAAGw6B,oBAAqB,EACxBx6B,EAAGm7B,cAAcjlC,MAAMyjC,UAAW,CAAC,CAAEkC,OAAO,GAC1B,SAAUuB,GACRp9B,EAAG87B,QAITuB,UAAYD,CACtB,EAAc,SAAUz4C,GACpBqb,EAAG7I,IAAIC,EAAAA,QAAQC,SAAS4rB,OAAQt+B,GAAKA,EAAE24C,SAAS1jC,WACpD,GACR,CACJ,GAEJ3P,GAAW,CACPka,YAAU,IAAM9Q,EAAAA,KAAO,cACxB8mC,GAAqBprC,UAAW,gBACnC9E,GAAW,CACPka,EAAAA,UAAU,WACXg2B,GAAqBprC,UAAW,iBACnC9E,GAAW,CACPka,EAAAA,UAAU,qBACXg2B,GAAqBprC,UAAW,mBACnC9E,GAAW,CACPka,EAAAA,UAAU,UACXg2B,GAAqBprC,UAAW,kBACnC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,mCACfoqC,GAAqBprC,UAAW,kBACnC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,mCACfoqC,GAAqBprC,UAAW,uBACnC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,iCACfoqC,GAAqBprC,UAAW,iBACnC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,oCACfoqC,GAAqBprC,UAAW,iBACnC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,oCACfoqC,GAAqBprC,UAAW,qBACnC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCuyC,GAAqBprC,UAAW,eACnC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpD2yC,GAAqBprC,UAAW,gBACnC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpD2yC,GAAqBprC,UAAW,iBACnC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpD2yC,GAAqBprC,UAAW,kBACnC9E,GAAW,CACP0E,EAAAA,SACDwrC,GAAqBprC,UAAW,qBACnC9E,GAAW,CACP0E,QAAM,CAAE0J,MAAM,KACf8hC,GAAqBprC,UAAW,kBACnCorC,GAAuBlwC,GAAW,CAC9BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,YACbsP,OAAQC,EAAAA,SAASC,gBACjBC,SAAU,IAAIzP,oBAAkBsD,EAAAA,wEAEJ0mC,GAAathB,+CACZshB,GAAac,kDACZd,GAAamD,2BAE5CntC,EAAAA,+EAA+EA,qCAEjEsD,4IAMHA,qGAEHtD,EAAAA,iEAAiEA,6BACjEA,EAAAA,uEAAuEA,0EAIpEsD,sGAEHtD,EAAAA,mFAAmFgqC,GAAathB,aAAa1oB,EAAAA,2BAC7GA,EAAAA,+DAA+DA,6BAC/DA,EAAAA,mEAAmEA,8DAIhEsD,uGAEHtD,EAAAA,mFAAmFgqC,GAAathB,aAAa1oB,EAAAA,2BAC7GA,EAAAA,gEAAgEA,mDAIxEA,EAAAA,4FAA4FgqC,GAAac,4CAA4C9qC,EAAAA,iBACrJA,EAAAA,4CAA4CA,EAAAA,eAAeA,EAAAA,eAAeA,kBAE7EA,EAAAA,cAEDoqC,ICnUH,IAAIlwC,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EASO,MAAM8yC,GAA6B,oBACnC,MAAMC,WAA+B/5C,EAAAA,iBACxC,WAAAC,CAAYC,GACRC,MAAM25C,GAA4B55C,EAAM,CAAEE,SAAS,GACvD,EAEJ,IAAI45C,GAAwB,cAAoCrvC,EAAAA,WAAWC,aACvE,WAAA3K,GACIE,SAAS4G,WACT/F,KAAKi5C,OAAS,EACdj5C,KAAKigB,KAAO,EAChB,CACA,gCAAAi5B,CAAiClwC,GAC7B,MAAM8E,EAAM9E,EAAIE,OAAOkG,aACvB,OAAQpG,EAAIE,OAAO+D,cACf,IAAK,aACDjN,KAAKm5C,aAAavI,WAAmB,IAAN9iC,EAC/B,MACJ,IAAK,YACGA,GACA9N,KAAKo5C,OAAM,GAG3B,CACA,yCAAAC,CAA0CrwC,GACtC,MAAM8E,EAAM9E,EAAIE,OAAOkG,aACvB,OAAQpG,EAAIE,OAAO+D,cACf,IAAK,aACDjN,KAAKm5C,aAAavI,WAAmB,IAAN9iC,EAC/B,MACJ,IAAK,YACD9N,KAAKo5C,MAAMtrC,GAGvB,CACA,2BAAAwrC,CAA4BtwC,GACxB,MAAMupC,EAAWvyC,KAAKu5C,UAChBC,EAAgBx5C,KAAKy5C,eAAgBpG,EAAImG,EAAcrZ,cAAe9hB,EAAIm7B,EAAcpZ,eAC9F,GAAIiT,EAAI,GAAKh1B,EAAI,EAAG,CAChB,IAAIiD,EAAOixB,EAASjxB,KACpB,MAAMhT,EAAMtF,EAAIE,OAAOoF,IACvBrJ,EAAAA,MAAMy0C,YAAYp4B,EAAM+xB,EAAGh1B,GAAGpS,KAAK0tC,IAC3BA,GAASr4B,EAMTthB,KAAKo5C,OAAM,GALXI,EAAcnH,OAAOsH,EAAO,gBAAiBrrC,IAOzD,MAGItO,KAAKo5C,OAAM,EACnB,CACA,KAAAA,CAAMzI,GACGA,GACD3wC,KAAK45C,YAAY,GAErB55C,KAAKiyB,UAAU1T,OAASoyB,EACxB3wC,KAAKm5C,aAAa56B,QAAUoyB,CAChC,CACA,gCAAAkJ,CAAiC7wC,GAC7B,GACS,UADDA,EAAIE,OAAO+D,aACf,CACI,MAAMqU,EAAOrc,EAAAA,MAAM8sC,cAAc/oC,EAAIE,OAAOkG,cAC5CpP,KAAKu5C,UAAUlH,OAAO/wB,EAAM,eAC5B,CAEZ,CACA,KAAA3W,GACI3K,KAAK85C,UAAUnZ,KAAO2U,GAAathB,KACvC,CACA,uBAAApmB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,WACD,IAAIwB,EAAM8I,GAAO,CAAE6kC,KAAM,EAAG3tC,IAAK,IAC7BC,EAAAA,MAAMC,cAAclF,KAAK+5C,UAAyB,IAAb/0C,EAAI2tC,KACzC3yC,KAAK+5C,QAAU/0C,EAAIA,IACbC,EAAAA,MAAMsG,OAAOvL,KAAK+5C,UACxBtnC,MAAMnI,UAAU4I,OAAOzB,MAAMzR,KAAK+5C,QAAS,CAAC/0C,EAAI2tC,KAAM3yC,KAAK+5C,QAAQn5C,OAASoE,EAAI2tC,MAAMrG,OAAOtnC,EAAIA,MACrGhF,KAAKg6C,WAAY,EACjB,MACJ,IAAK,OACIjsC,GACD/N,KAAK45C,YAAY,GAGjC,CACA,mBAAAK,CAAoBhnC,GAChBjT,KAAKg6C,WAAY,EACjBh6C,KAAK45C,YAAY3mC,EACrB,CACA,WAAA2mC,CAAY3mC,GACFA,GAAO,IACTA,EAAOjT,KAAK+5C,SAAW/5C,KAAK+5C,QAAQn5C,QAAW,GACnDZ,KAAKwM,cAAc,IAAIusC,GAAuB,CAAE94B,KAAMjgB,KAAKigB,KAAM0yB,KAAM1/B,EAAKinC,KAAM,KACtF,GAEJ10C,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC61C,GAAsB1uC,UAAW,oBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC61C,GAAsB1uC,UAAW,eACpC9E,GAAW,CACP0E,EAAAA,SACD8uC,GAAsB1uC,UAAW,mBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC61C,GAAsB1uC,UAAW,gBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvCi2C,GAAsB1uC,UAAW,mBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvCi2C,GAAsB1uC,UAAW,oBACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvCi2C,GAAsB1uC,UAAW,4BACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvCi2C,GAAsB1uC,UAAW,6BACpC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCg2C,GAAsB1uC,UAAW,wBACpC9E,GAAW,CACP0E,EAAAA,SACD8uC,GAAsB1uC,UAAW,oBACpC9E,GAAW,CACP0E,EAAAA,SACD8uC,GAAsB1uC,UAAW,kBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,cACf0tC,GAAsB1uC,UAAW,oBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,kBACf0tC,GAAsB1uC,UAAW,oBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,mBACf0tC,GAAsB1uC,UAAW,yBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,cACf0tC,GAAsB1uC,UAAW,oBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,iBACf0tC,GAAsB1uC,UAAW,uBACpC9E,GAAW,CACPuO,EAAAA,SAAS,MACVilC,GAAsB1uC,UAAW,cAAe,MACnD0uC,GAAwBxzC,GAAW,CAC/BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,cAAesP,OAAQC,EAAAA,SAASC,gBAC7CC,SAAU,IAAIzP,oBAAkBsD,EAAAA,6CACdA,0CAAwC0mC,GAAathB,YAAYplB,EAAAA,4CAA4CA,EAAAA,uEAAuEA,mIAE/LtD,EAAAA,qDAAqDA,mCACrDA,8MAEUikC,0EACAp+B,EAAAA,oKAAoK7F,6BAC9KA,2QAEU6F,EAAAA,uFAAuF7F,6BACjGA,EAAAA,mBAAmBsD,8EAA4E0mC,GAAac,8FAA8F9qC,6BAC1MA,EAAAA,qMAAqMA,wCACrMA,oGAEQA,EAAAA,yBAAyBsD,kIAAgItD,EAAAA,sDAEhKA,+BACDA,EAAAA,+IAA+IA,iEAG/IA,EAAAA,mDAAmD6F,gFAA8E7F,EAAAA,sCAExIA,EAAAA,cAEL0tC,IAEH,IAAImB,GAAyB,cAAqC/kC,EAC9D,WAAAnW,GACIE,SAAS4G,WACT/F,KAAKo6C,gCAAmCpxC,IACpChJ,KAAKwM,cAAc,IAAIusC,GAAuB/vC,EAAIE,UAEtDlJ,KAAKq6C,0BAA6BrxC,IACE,UAA5BA,EAAIE,OAAO+D,cAA6BhI,QAAMsG,OAAOvL,KAAKs6C,WAC1Dt6C,KAAKs6C,QAAQ5oC,MAAQ1I,EAAIE,OAAOkG,cAG5C,CACA,+BAAA6F,CAAgCF,GAC5B,OAAOA,CACX,CACA,YAAAN,CAAa1B,GACT,OAAOA,CACX,CACA,eAAIyD,GACA,MAAO,EACX,CACA,MAAAy+B,CAAOjsC,GACHhJ,KAAK4V,cAAc5M,EACvB,CACA,QAAA6M,CAAS7M,GACL,IAAI+J,EAAQ/S,KAAK+S,MAQjB,OAPIyL,EAAAA,iBAAiBC,aAAazV,EAAKkjB,EAAAA,WAAaC,GAAGouB,oBAChDvxC,EAAIE,OAAOk9B,SAAWla,EAAAA,WAAaC,GAAGquB,aAAaC,GACtD1nC,EAAQ/S,KAAK+S,MAAQ/J,EAAIE,OAAOwI,MAC3B1I,EAAItD,SAAW1F,KAAKguB,OACzBjb,EAAQ/S,KAAK+S,MAAQ/S,KAAKguB,OAAOjb,MAC5B/J,EAAItD,SAAW1F,KAAK06C,YACzB3nC,EAAQ/S,KAAK+S,WAAQrI,GAClBzF,EAAAA,MAAM0sB,WAAW5e,EAC5B,CACA,kBAAA4D,CAAmBO,GACflX,KAAKguB,OAAOzP,OAASve,KAAK26C,SAASnqB,KAAOxwB,KAAK06C,UAAUlqB,KAAOtZ,CACpE,CACA,UAAA0jC,GACI,IAAIC,EAASpsC,SAASC,cAAcpD,EAAAA,EAAI,WAMxC,OALAuvC,EAAOC,QAAU5uB,EAAAA,WAAaC,GAAG4uB,cAAcC,SAC/CH,EAAOtxC,iBAAiB2iB,aAAaC,GAAG8uB,sBAAuBj7C,KAAK4V,eAAe,GACnFilC,EAAO7rC,YAAYhP,KAAKk7C,iBACxBzsC,SAAS0gB,KAAKngB,YAAY6rC,GAEnB76C,KAAKs6C,QAAUO,CAC1B,CACA,aAAAM,GACIn7C,KAAKo7C,mBACAn2C,EAAAA,MAAMsG,OAAOvL,KAAKs6C,WACnBt6C,KAAKs6C,QAAQ7wC,oBAAoByiB,EAAAA,WAAaC,GAAG8uB,sBAAuBj7C,KAAK4V,eAAe,GAC5F5V,KAAKs6C,QAAQjjC,SAErB,CACA,aAAA6jC,GACI,IAAIG,EAAY5sC,SAASC,cAAcpD,EAAAA,EAAI,eAU3C,OATA+vC,EAAU5vC,UAAW,EACrB4vC,EAAU9xC,iBAAiB4H,EAAAA,wBAAyBnR,KAAKq6C,2BAA2B,GACpFgB,EAAU9xC,iBAAiBuvC,GAA4B94C,KAAKo6C,iCAAiC,GAC7FiB,EAAUrb,UAAYhgC,KAAKggC,UAC3Bqb,EAAUC,cAAgBt7C,KAAKs7C,cAC/BD,EAAUE,SAAWv7C,KAAKu7C,SAC1BF,EAAUG,UAAYx7C,KAAKw7C,UAC3BH,EAAUI,mBAAqBz7C,KAAKy7C,mBACpCJ,EAAUK,kBAAoB17C,KAAK07C,kBAC5B17C,KAAK27C,WAAaN,CAC7B,CACA,gBAAAD,GACSn2C,EAAAA,MAAMsG,OAAOvL,KAAK27C,cACnB37C,KAAK27C,WAAWlyC,oBAAoB0H,EAAAA,wBAAyBnR,KAAKq6C,2BAA2B,GAC7Fr6C,KAAK27C,WAAWlyC,oBAAoBqvC,GAA4B94C,KAAKo6C,iCAAiC,GAE9G,CACA,iBAAA5+B,GACIrc,MAAMqc,oBACNxb,KAAK46C,YACT,CACA,oBAAAzsC,GACInO,KAAKm7C,gBACLh8C,MAAMgP,sBACV,CACA,uBAAAP,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,YACIyB,EAAAA,MAAMsG,OAAOvL,KAAK27C,cACnB37C,KAAK27C,WAAW3b,UAAYlyB,GAChC,MACJ,IAAK,gBACI7I,EAAAA,MAAMsG,OAAOvL,KAAK27C,cACnB37C,KAAK27C,WAAWL,cAAgBxtC,GACpC,MACJ,IAAK,WACI7I,EAAAA,MAAMsG,OAAOvL,KAAK27C,cACnB37C,KAAK27C,WAAWC,SAAW9tC,GAC/B,MACJ,IAAK,qBACI7I,EAAAA,MAAMsG,OAAOvL,KAAK27C,cACnB37C,KAAK27C,WAAWF,mBAAqB3tC,GACzC,MACJ,IAAK,oBACI7I,EAAAA,MAAMsG,OAAOvL,KAAK27C,cACnB37C,KAAK27C,WAAWD,kBAAoB5tC,GACxC,MACJ,IAAK,YACI7I,EAAAA,MAAMsG,OAAOvL,KAAK27C,cACnB37C,KAAK27C,WAAWH,UAAY1tC,GAChC,MACJ,IAAK,WACI7I,EAAAA,MAAMsG,OAAOvL,KAAK27C,cACnB37C,KAAK27C,WAAWJ,SAAWztC,GAG3C,CACA,WAAA4I,CAAY5I,GACH7I,EAAAA,MAAMsG,OAAOvL,KAAK27C,cACnB37C,KAAK27C,WAAW5oC,MAAQjF,EAChC,CACA,OAAA+tC,CAAQ/tC,GACJ9N,KAAK87C,OAAOj6C,IAAMiM,CACtB,CACA,SAAAiuC,GACI,OAAO/7C,KAAK+S,KAChB,CACA,KAAAipC,CAAMhzC,GACF6C,EAAAA,aAAa7C,GACb,IAAIqyC,EAAYr7C,KAAK27C,WAAYjqC,EAAQ1R,KAAK+S,MAC9CsoC,EAAU5vC,UAAW,EACrB4vC,EAAU1wC,QACV0wC,EAAUtoC,MAAQrB,EAClB1R,KAAKs6C,QAAQ2B,KAAKvqC,GAAOzF,KAAK/M,IAC1B,OAAQA,EAAKknC,QACT,KAAKla,EAAAA,WAAaC,GAAGquB,aAAa0B,OAE9Bl8C,KAAK67C,QAAQ77C,KAAK+S,OAClB,MACJ,KAAKmZ,EAAAA,WAAaC,GAAGquB,aAAaC,GAE9Bz6C,KAAK67C,QAAQ38C,EAAKwS,OAG1B1R,KAAK27C,WAAWlwC,UAAW,GAEnC,GAEJjG,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,SACf6uC,GAAuB7vC,UAAW,iBACrC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,WAAasD,EAAAA,KAAO,UACnCurC,GAAuB7vC,UAAW,mBACrC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,WAAasD,EAAAA,KAAO,WACnCurC,GAAuB7vC,UAAW,oBACrC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,eACf6uC,GAAuB7vC,UAAW,iBACrC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpDg3C,GAAuB7vC,UAAW,oBACrC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpDsmC,GAAuB7vC,UAAW,mBACrC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDo3C,GAAuB7vC,UAAW,mBACrC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDo3C,GAAuB7vC,UAAW,oBACrC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDo3C,GAAuB7vC,UAAW,4BACrC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDo3C,GAAuB7vC,UAAW,6BACrC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBpH,WACpDm3C,GAAuB7vC,UAAW,wBACrC6vC,GAAyB30C,GAAW,CAChCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,eAAgBsP,OAAQC,EAAAA,SAASC,gBAC9CC,SAAU,eAAenM,EAAAA,sBAAsBtD,EAAAA,mDAAmDA,EAAAA,qBAAqBsD,wCACxHtD,EAAAA,8EAA8EsD,sBAAoBtD,EAAAA,mBAClGA,EAAAA,+EAA+EsD,wBAAsBtD,EAAAA,qBACnGA,EAAAA,yHAAyHA,0BAE3HA,kFACUsD,kEACkBtD,EAAAA,wEAAwEA,8CAC9EA,EAAAA,2DAA2DA,8BAC3EA,0BAIV6uC,ICrYH,IAAI30C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,IAAIm2C,GAA0B,cAAsC1O,GAChE,kBAAA92B,CAAmBO,GACflX,KAAKuwB,MAAMhS,QAAUrH,EACrBlX,KAAKguB,OAAOzP,OAASrH,CACzB,CACA,eAAIV,GACA,MAAO,CAACxW,KAAKguB,OACjB,CACA,YAAAvZ,CAAa3G,GACT,OAAqB,MAAd9N,KAAK+S,MAAgB/S,KAAKo8C,QAAQp8C,KAAK+S,YAASrI,CAC3D,CACA,OAAA0xC,CAAQtpC,EAAI9S,KAAK+S,OACb,MAAM2tB,EAAO1gC,KAAK8C,OAClB,OAAKmC,EAAAA,MAAMC,cAAcw7B,GAGlB5tB,EAAEqC,WAFE,IAAIknC,KAAKC,aAAar3C,QAAMqmB,KAAKtrB,MAAO0gC,GAAM59B,OAAOgQ,EAGpE,CACA,QAAAs6B,CAASt/B,GAEL,MAAMgF,EAAI9S,KAAKuW,WAAWu4B,eAAiB72B,WAAWjY,KAAKuW,WAAWxD,OACtE,OAAOmF,MAAMpF,QAAKpI,EAAYoI,CAClC,CACA,qBAAAjJ,GACI1K,MAAM0K,wBAEN7J,KAAKguB,OAAOzkB,iBAAiB,QAASvJ,KAAKu8C,YAD7B,CAAEvlC,SAAS,EAAOD,SAAS,GAE7C,CACA,oBAAA5I,GACI,IAAKlJ,EAAAA,MAAMsG,OAAOvL,KAAKguB,QAAS,CAE5BhuB,KAAKguB,OAAOvkB,oBAAoB,QAASzJ,KAAKu8C,YADhC,CAAEvlC,SAAS,EAAOD,SAAS,GAE7C,CACA5X,MAAMgP,sBACV,GAEJ3I,GAAW,CACPka,EAAAA,UAAU,uBACXy8B,GAAwB7xC,UAAW,iBACtC9E,GAAW,CACPka,EAAAA,UAAU,QAAQ9Q,EAAAA,kBACnButC,GAAwB7xC,UAAW,gBACtC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpDsoC,GAAwB7xC,UAAW,iBACtC6xC,GAA0B32C,GAAW,CACjCwO,gBAAc,CAAEC,QAAS3I,EAAAA,EAAI,gBAAiByP,SAAU,+BAA+BnM,gBAAcA,EAAAA,mCAAmCA,qBAAmBtD,EAAAA,yCAAyCA,EAAAA,iBAAkBsP,OAAQC,EAAAA,SAASC,mBACxOqhC,ICxDH,IAAI32C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,IAAIw2C,GAA4B,cAAwC9O,GACpE,WAAAzuC,GACIE,QACAa,KAAKy8C,yBAA4BzzC,IACX,GAAdA,EAAIo9B,SACJv6B,EAAAA,aAAa7C,GACbhJ,KAAK08C,oBAGjB,CACA,eAAIlmC,GACA,MAAO,CAACxW,KAAKguB,OACjB,CACA,qBAAAnkB,GACI1K,MAAM0K,wBACN,MAAM8yC,EAAS38C,KAAKuO,IAAM,IAAMtJ,EAAAA,MAAMoJ,aAChCuuC,EAAU58C,KAAKguB,OAAOzf,GAAKouC,EAAS,QAC1C38C,KAAK68C,SAAShuC,aAAa,gBAAiB+tC,GAC5C58C,KAAK68C,SAAShuC,aAAa,OAAQ,UACnC7O,KAAK88C,eACL98C,KAAK68C,SAAStzC,iBAAiB,YAAavJ,KAAKy8C,0BAA0B,EAC/E,CACA,oBAAAtuC,GACSlJ,EAAAA,MAAMsG,OAAOvL,KAAK68C,WACnB78C,KAAK68C,SAASpzC,oBAAoB,YAAazJ,KAAKy8C,0BAA0B,EAEtF,CACA,gBAAAC,GACI,MAAMlpC,EAAUxT,KAAKguB,OAAOnrB,KAC5B7C,KAAKguB,OAAOnrB,KAAmB,aAAZ2Q,EAAyB,OAAS,WACrDxT,KAAK88C,cACT,CACA,YAAAA,GACI,MAAM95B,EAAiC,aAArBhjB,KAAKguB,OAAOnrB,KAC9B7C,KAAK68C,SAASziB,UAAYpX,EAAY,iBAAmB,aACzDhjB,KAAK68C,SAAShuC,aAAa,kBAAmBmU,GAAW7N,WAC7D,CACA,kBAAAwB,CAAmBO,GACflX,KAAKguB,OAAOzP,OAASve,KAAK68C,SAASt+B,OAASrH,EAC5ClX,KAAKuwB,MAAMhS,QAAUrH,CACzB,CACA,YAAAzC,CAAa3G,GACT,OAAO7I,QAAMywB,QAAQ,GAAI4Y,KAAKyO,MAAM,EAAI,EAAIzO,KAAK0O,UAAW,IAChE,GAEJx3C,GAAW,CACPka,EAAAA,UAAU,yBACX88B,GAA0BlyC,UAAW,iBACxC9E,GAAW,CACPka,EAAAA,UAAU,QAAQ9Q,EAAAA,kBACnB4tC,GAA0BlyC,UAAW,gBACxC9E,GAAW,CACPka,EAAAA,UAAU,KAAK9Q,EAAAA,aAAaA,EAAAA,mBAC7B4tC,GAA0BlyC,UAAW,mBACxCkyC,GAA4Bh3C,GAAW,CACnCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,kBAAmByP,SAAU,iCAAiCnM,EAAAA,cAAcA,EAAAA,gCAAgCA,eAAaA,EAAAA,yBAC5IwL,iBAAkCxL,qBAAmBtD,EAAAA,yCAAyCA,EAAAA,iBAAkBsP,OAAQC,WAASC,mBAEhI0hC,ICrEH,IAAIh3C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,IAAIi3C,GAA0B,cAAsCvP,GAChE,WAAAzuC,GACIE,OACJ,CACA,eAAIqX,GACA,MAAO,CAACxW,KAAKkvB,MACjB,CACA,kBAAAvY,CAAmBO,GAEnB,GAEJ1R,GAAW,CACPka,EAAAA,UAAU,uBACXu9B,GAAwB3yC,UAAW,gBACtC2yC,GAA0Bz3C,GAAW,CACjCwO,EAAAA,cAAc,CAAEC,QAAS3I,EAAAA,EAAI,gBAAiByP,SAAU,+BAAiCnM,EAAAA,KAAO,aAAcgM,OAAQC,EAAAA,SAASC,mBAChImiC,ICzBH,IAAIz3C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,IAAIk3C,GAAuB,cAAmCxP,GAC1D,WAAAzuC,GACIE,OACJ,CACA,kBAAAwX,CAAmBO,GACflX,KAAKkvB,MAAM3Q,OAASrH,EACpBlX,KAAKsvC,OAAO/wB,QAAUrH,CAC1B,CACA,eAAIV,GACA,MAAO,CAACxW,KAAKkvB,MACjB,GAEJ1pB,GAAW,CACPka,EAAAA,UAAU,oBACXw9B,GAAqB5yC,UAAW,gBACnC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,OACf4xC,GAAqB5yC,UAAW,iBACnC4yC,GAAuB13C,GAAW,CAC9BwO,EAAAA,cAAc,CAAEC,QAAS3I,EAAAA,EAAI,aAAcyP,SAAU,4BAA4BnM,EAAAA,kBAAkBtD,EAAAA,cAAcsD,yGAAuGtD,EAAAA,yCAAyCA,EAAAA,YAAYA,SAAQsP,OAAQC,EAAAA,SAASC,mBACvSoiC,IC7BH,IAAI13C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,IAAIm3C,GAAwB,cAAoCzP,GAC5D,WAAAzuC,GACIE,OACJ,CACA,kBAAAwX,CAAmBO,GACflX,KAAKuwB,MAAMhS,QAAUrH,EACrBlX,KAAKguB,OAAOzP,OAASrH,CACzB,CACA,eAAIV,GACA,MAAO,CAACxW,KAAKguB,OACjB,GAEJxoB,GAAW,CACPka,EAAAA,UAAU,qBACXy9B,GAAsB7yC,UAAW,iBACpC9E,GAAW,CACPka,YAAU,QAAU9Q,EAAAA,KAAO,cAC5BuuC,GAAsB7yC,UAAW,gBACpC6yC,GAAwB33C,GAAW,CAC/BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,cACbyP,SAAU,6BAA6BnM,mBAAiBwL,iBAAkCxL,EAAAA,mBAAmBtD,EAAAA,yCAAyCA,EAAAA,iBACtJsP,OAAQC,EAAAA,SAASC,mBAEtBqiC,IClCH,IAAI33C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,IAAIo3C,GAAuB,cAAmC1P,GAC1D,WAAAzuC,GACIE,OACJ,CACA,kBAAAwX,CAAmBO,GACflX,KAAKkvB,MAAM3Q,OAASrH,EACpBlX,KAAKsvC,OAAO/wB,QAAUrH,CAC1B,CACA,eAAIV,GACA,MAAO,CAACxW,KAAKkvB,MACjB,GAEJ1pB,GAAW,CACPka,EAAAA,UAAU,oBACX09B,GAAqB9yC,UAAW,gBACnC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,OACf8xC,GAAqB9yC,UAAW,iBACnC8yC,GAAuB53C,GAAW,CAC9BwO,EAAAA,cAAc,CAAEC,QAAS3I,EAAAA,EAAI,aAAcyP,SAAU,4BAA4BnM,mBAAiBwL,KAAsB9O,EAAAA,cAAcsD,EAAAA,+GAA+GtD,2CAAyCA,EAAAA,YAAYA,EAAAA,OAAQsP,OAAQC,EAAAA,SAASC,mBACpUsiC,IC9BH,IAAI53C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAUA,IAAIq3C,GAAqB,cAAiCjoC,EACtD,+BAAAH,CAAgCF,GAC5B,MAAMuoC,EAAa,mDAAmD38C,KAAKoU,GAC3E,GAAIuoC,GAAoC,IAAtBA,EAAW18C,OACzB,MAAO,CAAE28C,IAAKtlC,WAAWqlC,EAAW,IAAKE,IAAKvlC,WAAWqlC,EAAW,KAExE,KAAM,mCAAmCvoC,IAC7C,CACA,0BAAAe,CAA2BjI,EAAKC,GAC5B,SAAID,GAA0B,iBAAZA,EAAI0vC,KAAuC,iBAAZ1vC,EAAI2vC,MAC9C1vC,GAA0B,iBAAZA,EAAIyvC,KAAuC,iBAAZzvC,EAAI0vC,OAC7C3vC,EAAI0vC,MAAQzvC,EAAIyvC,KAAO1vC,EAAI2vC,MAAQ1vC,EAAI0vC,IAGtD,CACA,YAAA/oC,CAAa1B,GACT,OAAO/S,KAAKy9C,cAAc1qC,EAC9B,CACA,aAAA0qC,CAAc1qC,EAAOwhB,EAAY,GAC7B,OAAOxhB,GAA8B,iBAAdA,EAAMwqC,KAAyC,iBAAdxqC,EAAMyqC,KAAoBzqC,EAAMwqC,IAAIG,QAAQnpB,GAAa,IAAMxhB,EAAMyqC,IAAIE,QAAQnpB,IAAc,EAC3J,CACA,eAAI/d,GACA,MAAO,CAACxW,KAAK29C,UAAW39C,KAAK49C,UACjC,CACA,kBAAAjnC,CAAmBO,GACflX,KAAK69C,gBAAgBt/B,OAEjBrH,CACR,CAEA,WAAAR,CAAY5I,GACR,IAAIgwC,EAAQ99C,KAAK+9C,aAAajwC,GAC9B9N,KAAKg+C,KAAOF,EAAMP,IAClBv9C,KAAKi+C,KAAOH,EAAMN,GACtB,CACA,YAAAO,CAAajwC,GACT,OAAQA,GAA0B,iBAAZA,EAAIyvC,KAAuC,iBAAZzvC,EAAI0vC,IAAoB1vC,EAAM+2B,EAAAA,WAAezB,KAAK8a,UAAUC,cACrH,CACA,QAAAtoC,CAAS7M,GACL,GAAIA,GAAoB,YAAbA,EAAInG,KAAoB,CAC/B,IAAIu7C,EAAOp1C,EAEXhJ,KAAKg+C,KAAOI,EAAKl1C,OAAO2xB,SAAS0iB,IACjCv9C,KAAKi+C,KAAOG,EAAKl1C,OAAO2xB,SAAS2iB,GACrC,CACA,MAAMD,EAAMv9C,KAAKg+C,KACXR,EAAMx9C,KAAKi+C,KACjB,OAAIh5C,EAAAA,MAAMsG,OAAOgyC,IAAQt4C,EAAAA,MAAMsG,OAAOiyC,GAC3Bv4C,QAAM0sB,WAAW3xB,KAAK+S,OAC1B9N,EAAAA,MAAM0sB,WAAW3xB,KAAK+S,MAAQ,CAAEwqC,IAAKA,EAAKC,IAAKA,GAC1D,CACA,uBAAA5vC,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACjC,YAATvK,IAAuBuK,EAAO,CAC9B,MAAMswC,EAAOp5C,EAAAA,MAAM4uB,MAAO/lB,GAAO,CAAEwwC,SAAU,QAC7Ct+C,KAAKu+C,oBAAoBF,EAC7B,CACJ,CACA,qBAAAx0C,GACI1K,MAAM0K,wBACN7J,KAAKu+C,qBACT,CACA,mBAAAA,CAAoBF,EAAOr+C,KAAKmH,SAAW,CAAEm3C,SAAU,QACnD,MAAMtb,EAAShjC,KAAKw+C,QAASn7C,EAAMrD,KAAKy+C,KAExC,OADAzb,EAAOviB,KAAO49B,EAAK59B,KACX49B,GAAQA,EAAKC,UACjB,IAAK,QACDt+C,KAAK0+C,cAAcC,gBAAkBN,EAAKO,OAC1Cv7C,EAAIkhC,QAAUvkC,KAAK0+C,cACnB,MACJ,IAAK,SACL,IAAK,QACD1+C,KAAK6+C,eAAeD,OAASP,EAAKO,OAClCv7C,EAAIkhC,QAAUvkC,KAAK6+C,eACnB,MACJ,QACS55C,EAAAA,MAAMC,cAAcm5C,EAAKS,eAC1B9+C,KAAK++C,gBAAgBD,YAAcT,EAAKS,aAEvC75C,EAAAA,MAAMC,cAAcm5C,EAAKW,SAC1Bh/C,KAAK++C,gBAAgBC,MAAQX,EAAKW,OAEtC37C,EAAIkhC,QAAUvkC,KAAK++C,uBAGpBV,EAAe,gBACfA,EAAW,YACXA,EAAa,cACbA,EAAkB,mBAClBA,EAAY,MACnB,IAAK,IAAI53C,KAAQ43C,EACT53C,KAAQpD,IACRA,EAAIoD,GAAQ43C,EAAK53C,GAG7B,GAEJjB,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,yBACf+xC,GAAmB/yC,UAAW,0BACjC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,uBACf+xC,GAAmB/yC,UAAW,wBACjC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,wBACf+xC,GAAmB/yC,UAAW,yBACjC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,SACf+xC,GAAmB/yC,UAAW,eACjC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,gBACf+xC,GAAmB/yC,UAAW,kBACjC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,+BACf+xC,GAAmB/yC,UAAW,oBACjC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,+BACf+xC,GAAmB/yC,UAAW,oBACjC9E,GAAW,CACPka,EAAAA,UAAU,IAAI9Q,EAAAA,uBACfyuC,GAAmB/yC,UAAW,0BACjC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,WACf+xC,GAAmB/yC,UAAW,mBACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmByJ,KAAMD,MAAM,KACnDypC,GAAmB/yC,UAAW,kBACjC9E,GAAW,CACP0E,EAAAA,SACDmzC,GAAmB/yC,UAAW,eACjC9E,GAAW,CACP0E,EAAAA,SACDmzC,GAAmB/yC,UAAW,eACjC+yC,GAAqB73C,GAAW,CAC5BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,UAAWsP,OAAQC,EAAAA,SAASC,gBACzCC,SAAU,eAAenM,oCACfA,EAAAA,sBAAsBA,iCAC7BtD,EAAAA,yBAAyBsD,wFAAsFtD,EAAAA,6BAC/GA,EAAAA,yBAAyBsD,0FAAwFtD,EAAAA,qCAErHA,6FACUsD,2DACgBtD,EAAAA,8DAA8DA,iDAC/DA,EAAAA,+DAA+DA,iDAC/DA,EAAAA,0BAA0BsD,EAAAA,qCAAqCA,EAAAA,gGAAgGtD,wBACpLA,EAAAA,0BAA0BsD,EAAAA,oCAAoCA,EAAAA,+FAA+FtD,oCAEhKA,oBACDA,EAAAA,iBAAiBsD,4MAA0MtD,EAAAA,mBAE3NA,EAAAA,2BAA2BA,kCAC3BA,EAAAA,yBAAyBA,gCACzBA,EAAAA,0BAA0BA,mCAE1BA,iDACIA,EAAAA,8IAA8IA,0BACjJA,kBACDA,EAAAA,mLAA8JA,EAAAA,sBAGlK+xC,IChLH,IAAI73C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,MAAMi5C,GAAgB,kBAAkBtS,GAAaQ,wCACrD,SAAS18B,GAAQyuC,GACb,OAAOj6C,EAAAA,MAAMC,cAAcg6C,GAAOA,EAAI17C,KAC1C,CAIA,IAAI27C,GAA4B,cAAwC/pC,EACpE,WAAAnW,GACIE,SAAS4G,WACT/F,KAAKwW,YAAc,GACnBxW,KAAKo/C,KAAO,EAChB,CACA,kBAAAzoC,CAAmBO,GAEnB,CACA,QAAArB,CAAS7M,GACL,OAAO,IAAI8C,QAAQ,CAACyD,EAASC,KACzB,IAAI1B,EAAM9N,KAAKq/C,YAAYr/C,KAAKo/C,MAC3Bp/C,KAAK8V,2BAA2BhI,EAAK9N,KAAK+S,OAI3CvD,IAHAD,EAAQvP,KAAK+S,MAAQjF,IAMjC,CACA,WAAA4I,CAAY5I,GACR9N,KAAKo/C,KAAOp/C,KAAKs/C,YAAYxxC,EACjC,CACA,YAAA2G,CAAa1B,GACT,MAAO,EACX,CACA,0BAAA+C,CAA2BjI,EAAKC,GAC5B,OAAO7I,EAAAA,MAAM4O,KAAK2f,UAAU3lB,KAAS5I,QAAM4O,KAAK2f,UAAU1lB,EAC9D,CACA,+BAAAmH,CAAgCF,GAC5B,OAAO3K,qBAAmByJ,KAAKiB,QAAQC,EAC3C,CACA,uBAAAnH,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACjC,eAATvK,GAA0BuK,IAC1B/N,KAAK+S,MAAQ/S,KAAKq/C,cAE1B,CACA,WAAAA,CAAYE,EAAMv/C,KAAKo/C,MACnB,IAAKp/C,KAAK0G,WAAY,CAGlB,IAAIyL,EAAI,GACR,IAAK,IAAI0F,KAAQ0nC,GAAO,GAChB9uC,GAAQoH,IAGR1F,EAAEkH,KAAKjT,GAAKA,EAAE5C,OAASqU,EAAKrU,MAAQ4C,EAAE2M,QAAU8E,EAAK9E,QAGzDZ,EAAE5P,KAAKsV,GAEX,OAAO1F,CACX,CAGA,IAAIW,EAAI,CAAA,EACR,IAAK,IAAI0sC,KAAOD,GAAO,GACfC,EAAIh8C,QAAQsP,IAIhBA,EAAE0sC,EAAIh8C,MAAQg8C,EAAIzsC,OAEtB,OAAOD,CACX,CACA,WAAAwsC,CAAYxxC,EAAM9N,KAAK+S,OACnB,MAAMwsC,EAAM,GACZ,IAAKt6C,EAAAA,MAAMC,cAAc4I,IAAuB,iBAARA,EACpC,GAAI9N,KAAK0G,aAAezB,EAAAA,MAAMuC,QAAQsG,GAClC,IAAK,IAAIrH,KAAQqH,EACbyxC,EAAIh9C,KAAK,CAAEiB,KAAMiD,EAAMsM,MAAOjF,EAAIrH,UAGhCzG,KAAK0G,YAAczB,EAAAA,MAAMuC,QAAQsG,IACvC2E,MAAMnI,UAAU4I,OAAOzB,MAAM8tC,EAAK,CAAC,EAAG,GAAGjT,OAAOx+B,EAAIzK,IAAI+C,GAAKnB,EAAAA,MAAM4uB,MAAMztB,MAGjF,OAAQnB,EAAAA,MAAMC,cAAcq6C,GAAa,CAhFtC,CAAE/7C,KAAM,GAAIuP,MAAO,KAgFawsC,CACvC,CACA,SAAA9rB,CAAUzqB,GACNhJ,KAAKo/C,KAAKlsC,OAAOlK,EAAIE,OAAQ,GAC7BlJ,KAAK4V,cAAc5M,EACvB,CACA,QAAA2qB,CAAS3qB,GACL,MAAMu2C,EAAMv/C,KAAKo/C,KAAMK,EAAWz/C,KAAKo/C,KAAKp/C,KAAKo/C,KAAKx+C,OAAS,IAC3DqE,EAAAA,MAAMwL,QAAQ8uC,IAAS9uC,GAAQgvC,IAC/BF,EAAIh9C,KAzFL,CAAEiB,KAAM,GAAIuP,MAAO,IA2F1B,GAEJvN,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBpH,WACpDm8C,GAA0B70C,UAAW,qBACxC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmByJ,QACvCsrC,GAA0B70C,UAAW,eACxC60C,GAA4B35C,GAAW,CACnCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,kBAAmBsP,OAAQC,EAAAA,SAASC,gBACjDC,SAAU,IAAIzP,4HAEAsD,EAAAA,iBAAiBA,yGAETA,6CACPtD,EAAAA,gBAAgB2zC,iFAA4F3zC,EAAAA,kIAGrGsD,6CACPtD,EAAAA,gBAAgB2zC,kFAA6F3zC,EAAAA,gGAEzGA,EAAAA,mBAAmBsD,uHAAqHtD,EAAAA,4HAM5JA,EAAAA,6FAA6FA,kBAChGA,EAAAA,iBAED6zC,ICzIH,IAAI35C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,IAAI05C,GAA6B,cAAyCtqC,EACtE,eAAIoB,GACA,MAAO,CAACxW,KAAK2/C,QACjB,CACA,kBAAAhpC,CAAmBO,GACflX,KAAK2/C,QAAQzoC,SAAWA,CAC5B,CACA,QAAArB,CAAS7M,GACL,OAAO/D,EAAAA,MAAM0sB,WAAW3xB,KAAK+S,MAAQ/S,KAAK2/C,QAAQ5sC,MACtD,CACA,WAAA2D,CAAY5I,GACR9N,KAAK2/C,QAAQ5sC,MAAQjF,CACzB,CACA,YAAA2G,CAAa1B,GACT,OAAO/S,KAAK2/C,QAAQnrC,SACxB,CACA,+BAAAS,CAAgCF,GAC5B,OAAO3K,qBAAmBC,QAAQyK,QAAQC,EAC9C,CACA,qBAAAlL,GACI1K,MAAM0K,wBACN7J,KAAKgoC,WACT,CACA,uBAAAp6B,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,IACzCA,GAEQ,WADDvK,EAEAxD,KAAKgoC,WAIrB,CACA,SAAAA,GACI,MAAMzgC,EAAQ,GAEdq4C,EAAQ,CAACxsC,EAAW3M,EAAMjD,KACtB,MAAMsK,EAAMsF,EAAU3M,GACtB,GAAmB,iBAARqH,GAA2B,MAAPA,IAAgB7I,EAAAA,MAAMuC,QAAQsG,GACzD,IAAK,IAAInI,KAAO/B,OAAOojC,KAAKl5B,GAAM,CAC9B,MAAM+xC,EAAWr8C,EAAO,IAAMmC,EAE9B4B,EAAMhF,KAAKs9C,GAEXD,EAAM9xC,EAAKnI,EAAKk6C,EACpB,GAGR,IAAIh+C,EAAM7B,KAAK0F,OACf,IAAKT,EAAAA,MAAMsG,OAAO1J,GAAM,CACpB,IAAIi+C,EAAW/1C,EAAAA,mBAAmBg2C,qBAAqBl+C,GACvD,IAAK,IAAIm+C,KAAOF,EAAU,CACtB,IAAIt8C,EAAOw8C,EAAIx8C,KAEf+D,EAAMhF,KAAKiB,GAEXo8C,EAAM/9C,EAAK2B,EAAMA,EACrB,CACJ,CACAxD,KAAK2/C,QAAQ/mC,WAAarR,EAAM27B,MACpC,GAEJ19B,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,YACfo0C,GAA2Bp1C,UAAW,kBACzC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBC,WACvCq1C,GAA2Bp1C,UAAW,iBACzCo1C,GAA6Bl6C,GAAW,CACpCwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,mBAAoBsP,OAAQC,EAAAA,SAASC,gBAClDC,SAAU,IAAIzP,EAAAA,cAAcA,EAAAA,eAEjCo0C,IClFH,IAAIl6C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,IAAIi6C,GAAoB,cAAgC7qC,EACpD,+BAAAH,CAAgCF,GAC5B,OAAOA,CACX,CACA,WAAA9V,GACIE,QACAa,KAAKmxB,KAAO,IAAMlsB,EAAAA,MAAMoJ,YAC5B,CACA,kBAAAsI,CAAmBO,GACflX,KAAKsxB,KAAK/S,QAAUrH,EACpBlX,KAAKkgD,OAAO3hC,OAAiCrH,CACjD,CACA,eAAIV,GACA,MAAO,CAACxW,KAAKkgD,OACjB,CACA,QAAArqC,CAAS7M,GACLhJ,KAAKyxB,SAAWzxB,KAAKkgD,OAAOxuB,QAC5B,MAAM3e,EAAQ/S,KAAKyxB,SAAWzxB,KAAKkgD,OAAOntC,WAAQrI,EAClD,OAAOzF,EAAAA,MAAM0sB,WAAW5e,EAC5B,CACA,qBAAAlJ,GACI1K,MAAM0K,wBACN7J,KAAKkgD,OAAO3xC,GAAKvO,KAAKwxB,OAAOI,QAAU5xB,KAAKmxB,IAChD,CACA,uBAAAvjB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,OACDxD,KAAKkgD,OAAO18C,KAAOsK,EACnB,MACJ,IAAK,YACA9N,KAAKkgD,OAAOxuB,QAAU5jB,GACnB7I,EAAAA,MAAMgM,SAASjR,KAAM4O,EAAAA,KAAO,aAExB3J,EAAAA,MAAMiM,YAAYlR,KAAM4O,EAAAA,KAAO,aAGnD,CACA,WAAA8H,CAAY5I,GACR9N,KAAKkgD,OAAOntC,MAAQ9N,EAAAA,MAAMC,cAAc4I,GAAO,GAAKA,CACxD,CACA,YAAA2G,CAAa3G,GACT,OAAK7I,EAAAA,MAAMsG,OAAOuC,GAEX,GADI9N,KAAKkxB,OAEpB,GAEJ1rB,GAAW,CACPka,EAAAA,UAAU,sBACXugC,GAAkB31C,UAAW,iBAChC9E,GAAW,CACPka,EAAAA,UAAU,UACXugC,GAAkB31C,UAAW,iBAChC9E,GAAW,CACPka,EAAAA,UAAU,IAAI9Q,EAAAA,kBACfqxC,GAAkB31C,UAAW,eAChC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC88C,GAAkB31C,UAAW,kBAChC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCi9C,GAAkB31C,UAAW,mBAChC21C,GAAoBz6C,GAAW,CAC3BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,SACbyP,SAAU,IAAIzP,EAAAA,iBAAiBsD,EAAAA,iBAAiBA,8CAA4CtD,EAAAA,qCAAqCsD,EAAAA,+BAA+BA,gBAAcA,EAAAA,cAAcA,EAAAA,qBAAqBtD,yCAAuCA,EAAAA,kBACxPsP,OAAQC,EAAAA,SAASC,mBAEtBmlC,IC7EH,IAAIz6C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,IAAIm6C,GAAwB,cAAoC7nC,EAC5D,WAAA5B,CAAY5I,GAEZ,CACA,WAAA7O,GACIE,QACAa,KAAU,IAAI,IAAMiF,EAAAA,MAAMoJ,YAC9B,CACA,eAAImI,GACA,MAAO,EACX,CACA,uBAAA5I,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACjC,aAATvK,IACAxD,KAAKgyB,SAAS9kB,MAAQY,EAE9B,CACA,qBAAAjE,GACI1K,MAAM0K,wBACN7J,KAAKgyB,SAAS9kB,MAAQlN,KAAKyL,QAC/B,CACA,kBAAAkL,CAAmBO,GACflX,KAAKiyB,UAAU1T,OAASrH,EACxBlX,KAAKuwB,MAAMhS,QAAUrH,CACzB,CACA,iBAAAgb,CAAkBlpB,EAAKf,EAAO4P,GACM,aAA5B7O,EAAIE,OAAO+D,eAA2D,IAA5BjE,EAAIE,OAAOkG,eACrDpP,KAAKogD,eAAiBpgD,KAAKmZ,iBAAiBnZ,KAAK4Y,WAAW3Q,IAC5DjI,KAAK4V,cAAc5M,GAE3B,CACA,QAAA6M,CAAS7M,GAGL,OAFAhJ,KAAK+S,MAAQ/S,KAAKogD,eAClBpgD,KAAKyY,WACExT,QAAM0sB,WAAW3xB,KAAKogD,eACjC,GAEJ56C,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,cACf60C,GAAsB71C,UAAW,oBACpC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,UACf60C,GAAsB71C,UAAW,mBACpC9E,GAAW,CACPka,EAAAA,UAAU,QAAQ9Q,EAAAA,kBACnBuxC,GAAsB71C,UAAW,gBACpC61C,GAAwB36C,GAAW,CAC/BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,cAAeyP,SAAU,IAAIzP,EAAAA,0EACjCsD,EAAAA,mBAAmBA,mEAEjBtD,2TAEd6F,EAAAA,8EAA8E7F,sDAG/EA,EAAAA,2BAA2BsD,mBAAiBA,EAAAA,gBAAgBtD,EAAAA,yCAAyCA,EAAAA,kBAAkBA,EAAAA,YAAYA,aAAWA,EAAAA,eAAeA,EAAAA,aACzJsP,OAAQC,EAAAA,SAASC,mBAEtBqlC,ICpEH,IAAI36C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,IAAIq6C,GAAqB,cAAiC/nC,EACtD,WAAArZ,GACIE,SAAS4G,WACT/F,KAAKsgD,aAAc,CACvB,CACA,kBAAA3pC,CAAmBO,GACflX,KAAKiyB,UAAU1T,OAASrH,EACxBlX,KAAKuwB,MAAMhS,QAAUrH,CACzB,CAGA,eAAIV,GACA,MAAO,CAACxW,KAAK2/C,QACjB,CACA,UAAAY,CAAWv3C,GACP,MAAM9J,EAAO8J,EAAIE,OAAQ2O,EAAO3Y,EAAK2Y,KACrC,IAAI2oC,EAASthD,EAAKsvB,IAAInV,KAAKonC,GAAKA,aAAaC,mBAC7CF,EAAOztC,MAAQ8E,EAAK9E,MACpBytC,EAAOppC,YAAcS,EAAKrD,UAC1BgsC,EAAO/0C,SAAWoM,EAAKpM,SACvB+0C,EAAO/uB,SAAWzxB,KAAKgZ,yBAAyBnB,IAC/C5S,EAAAA,MAAMC,cAAcs7C,EAAOztC,OAAS9N,EAAAA,MAAMgM,SAAWhM,EAAAA,MAAMiM,aAAaO,MAAMzR,KAAM,CAACwgD,EAAQ5xC,EAAAA,KAAO,cACzG,CACA,QAAAiH,CAAS7M,GACL,IAA8J+J,EAAnI4tC,EAAd3gD,KAAK2/C,QAAgCgB,cAAe/nC,EAAa5Y,KAAK8Y,kBAAmBjB,EAAO8oC,GAAiB,GAAK/nC,EAAW+nC,GAM9I,OAJI5tC,EADQ,MAAR8E,EACQA,EAAK9E,WAGLrI,EACLzF,EAAAA,MAAM0sB,WAAW3xB,KAAK+S,MAAQA,EACzC,CACA,uBAAAnF,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GAEJ,IAAK,cACL,IAAK,cACDxD,KAAKyY,WAGjB,CACA,sBAAAC,CAAuBC,EAAK3Y,KAAK4Y,YAC7B,IAAIgoC,EAAUzhD,MAAMuZ,uBAAuBC,GAI3C,OAHIioC,GAAW5gD,KAAKsgD,aAChBM,EAAQ1tC,OAAO,EAAG,EAAG,CAAEsB,UAAWxU,KAAK6pB,aAAe,GAAI9W,WAAOrI,EAAWgP,UAAMhP,IAE/Ek2C,CACX,CACA,wBAAA3nC,CAAyBN,GACjB3Y,KAAKsgD,YACLnhD,MAAM8Z,yBAAyBN,GAI3B1T,EAAAA,MAAMC,cAAcyT,GACpB3Y,KAAK+S,WAAQ,EAGb/S,KAAK+S,MAAQ4F,EAAG,GAAG5F,KAI/B,CAEA,WAAA2D,CAAY5I,GACR,MAAM6K,EAAK3Y,KAAK8Y,kBAAmBjB,EAAOc,GAAMA,EAAGI,OAAO3S,GAAKpG,KAAKgZ,yBAAyB5S,EAAG0H,IAEhG,GAAI+J,GAAuB,GAAfA,EAAKjX,OACbZ,KAAK2/C,QAAQgB,cAAgBhoC,EAAG3G,QAAQ6F,EAAK,QAC5C,CACD7X,KAAK2/C,QAAQ5sC,WAAQrI,EACrB,IAAI2zC,EAAOr+C,KAAK2/C,QAAQx4C,QACpBk3C,EAAKz9C,OAAS,GAAKqE,EAAAA,MAAMC,cAAcm5C,EAAK,GAAGtrC,SAC/C/S,KAAK2/C,QAAQgB,cAAgB,EAErC,CACJ,CACA,qBAAA92C,GACI1K,MAAM0K,wBAGN7J,KAAK2/C,QAAQp2C,iBAAiB,QAASvJ,KAAKu8C,YAD9B,CAAEvlC,SAAS,EAAOD,SAAS,GAE7C,CACA,oBAAA5I,GACI,IAAKlJ,EAAAA,MAAMsG,OAAOvL,KAAK2/C,SAAU,CAG7B3/C,KAAK2/C,QAAQl2C,oBAAoB,QAASzJ,KAAKu8C,YADjC,CAAEvlC,SAAS,EAAOD,SAAS,GAE7C,CACA5X,MAAMgP,sBACV,GAEJ3I,GAAW,CACPka,EAAAA,UAAU,WACX2gC,GAAmB/1C,UAAW,kBACjC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,cACf+0C,GAAmB/1C,UAAW,oBACjC9E,GAAW,CACPka,EAAAA,UAAU,QAAQ9Q,EAAAA,kBACnByxC,GAAmB/1C,UAAW,gBACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBpH,WACpDq9C,GAAmB/1C,UAAW,sBACjC+1C,GAAqB76C,GAAW,CAC5BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,UAAWyP,SAAU,IAAIzP,8DAA4D3B,EAAAA,WAAWmqB,+EAChGllB,EAAAA,eAAeA,iHAKhCtD,EAAAA,2BAA2BsD,EAAAA,mBAAmBtD,EAAAA,yCAAyCA,EAAAA,kBAAkBA,EAAAA,eAAeA,EAAAA,aAAcsP,OAAQC,WAASC,mBAExJulC,IC5HH,IAAI76C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAMA,IAAI66C,GAAqB,cAAiCzrC,EACtD,WAAAnW,GACIE,SAAS4G,WACT/F,KAAKwW,YAAc,GACnBxW,KAAKqnC,aAAgBr+B,IACjBA,EAAI2T,iBACJ3c,KAAK8gD,uBAAuB93C,EAAIE,OAAOo+B,gBAAgBb,EAAyB,QAAtBzmC,KAAK+sC,eAEnE/sC,KAAK+gD,YAAe/3C,IAChBA,EAAI2T,iBACJ3c,KAAK8gD,uBAAuB93C,EAAIE,OAAOo+B,gBAAgBb,EAAyB,QAAtBzmC,KAAK+sC,eAEnE/sC,KAAKghD,cAAiBh4C,IAClBhJ,KAAKihD,OAAO3pC,SAEhBtX,KAAKkhD,aAAgBl4C,IACjB,MAAMy9B,EAAIz9B,aAAem4C,WAAan4C,EAAIo4C,QAAUp4C,EAAIq4C,SAAWr4C,EAAIq4C,QAAQzgD,QAAUoI,EAAIq4C,QAAQ,GAAGD,QAASE,EAAYthD,KAAKuhD,WAC7Ht8C,EAAAA,MAAMC,cAAco8C,IACrBthD,KAAK8gD,uBAAuBra,GAAG,IAGvCzmC,KAAKwhD,gBAAmBx4C,IACpB,OAAQA,EAAI8B,SACR,KAAK,GACL,KAAK,GACDe,EAAAA,aAAa7C,GACb,IAAIy4C,EAA0B,KAAhBz4C,EAAI8B,QACd61B,GAA6B,iBAAd3gC,KAAK2gC,KAAoB,EAAM3gC,KAAK2gC,OAAS8gB,EAAU,GAAI,GAC1EC,GAAQ,EACRC,EAAW34C,IACX04C,GAAQ,EACRvgC,OAAO1X,oBAAoB,QAASk4C,GAAS,GAC7C18C,QAAMiM,YAAYlR,KAAM,mBAE5BmhB,OAAO5X,iBAAiB,QAASo4C,GAAS,GAC1C18C,QAAMgM,SAASjR,KAAM,kBACrBiF,EAAAA,MAAM28C,mBAAmBC,KACfA,EAAMC,OAASJ,IACjB1hD,KAAK+hD,UAAU/hD,KAAK+S,MAAQ4tB,MAMpD,CACA,QAAA9qB,CAAS7M,GACL,OAAO,IAAI8C,QAAQ,CAACyD,EAASC,KACR,UAAbxG,EAAInG,MACJ0M,EAAQvP,KAAK+S,MAAQ/J,EAAIE,QAE7BqG,EAAQvP,KAAK+S,QAErB,CACA,KAAAivC,CAAMl0C,EAAM9N,KAAK+S,OACb,MAAMuuC,EAAYthD,KAAKuhD,WACvB,GAAIt8C,EAAAA,MAAMsG,OAAO+1C,GACb,OAEJ,MAAMxuC,EAAI7N,EAAAA,MAAMC,cAAc4I,GAAO9N,KAAKw1B,IAAMvd,WAAWnK,GACrD8iC,EAAatC,KAAK9Y,IAAI,EAAG8Y,KAAK7Y,IAAI,GAAI3iB,EAAI9S,KAAKw1B,MAAQx1B,KAAKy1B,IAAMz1B,KAAKw1B,OAC7Ex1B,KAAKiiD,UAAUr/B,MAAMs/B,UAAY,SAAO,QACxCliD,KAAKihD,OAAOr+B,MAAMs/B,UAAY,cAAc5T,KAAKwE,MAAMlC,EAAa0Q,EAAUz+B,WAClF,CACA,OAAAu5B,CAAQtpC,GACJ,MAAM4tB,EAAO1gC,KAAK8C,OAClB,IAAKmC,EAAAA,MAAMC,cAAcw7B,GACrB,OAAO,IAAI2b,KAAKC,aAAar3C,QAAMqmB,KAAKtrB,MAAO0gC,GAAM59B,OAAOgQ,GAGhE,IAAIqvC,EAAK,IACJl9C,EAAAA,MAAMsG,OAAOuH,KACdqvC,EAAKrvC,EAAEuY,kBAEX,IAAIriB,EAAM,IAAIC,YAAY,cAAe,CAAEC,OAAQ,CAAE6J,MAAOD,KAE5D,OADA9S,KAAKwM,cAAcxD,GACZ/D,EAAAA,MAAMsG,OAAOvC,EAAIE,OAAOvE,QAAUw9C,EAAKn5C,EAAIE,OAAOvE,MAC7D,CACA,WAAA+R,CAAY5I,GACR9N,KAAKgiD,MAAMl0C,EACf,CACA,YAAA2G,CAAa1B,GACT,OAAO/S,KAAKo8C,QAAQrpC,EACxB,CACA,+BAAAkC,CAAgCF,GAC5B,OAAOkD,WAAWlD,EACtB,CACA,kBAAA4B,CAAmBO,GACflX,KAAKihD,OAAO1iC,OAASrH,EACrB,MAAMqkB,EAAM,iBACRrkB,GACAjS,EAAAA,MAAMiM,YAAYlR,KAAKoiD,KAAM7mB,GAC7Bt2B,EAAAA,MAAMiM,YAAYlR,KAAKqiD,KAAM9mB,KAG7Bt2B,EAAAA,MAAMgM,SAASjR,KAAKoiD,KAAM7mB,GAC1Bt2B,EAAAA,MAAMgM,SAASjR,KAAKqiD,KAAM9mB,GAElC,CACA,aAAA+mB,CAAct5C,GACV,MAAMgqB,EAAOhqB,EAAIE,OACjBlJ,KAAKuhD,WAAa,CAAE9a,EAAGzT,EAAK7E,KAAM7B,EAAG0G,EAAK9E,IAAKrL,MAAOmQ,EAAKnQ,MAAOC,OAAQkQ,EAAKlQ,QAC/E9iB,KAAKgiD,MAAMhiD,KAAK+S,MACpB,CACA,sBAAA+tC,CAAuBra,EAAG8b,GACtB,GAAIviD,KAAKkX,UAAYlX,KAAKyL,SACtB,OAGJ,MAAM+2C,EAAaxiD,KAAKuhD,WAAY5gB,EAAO3gC,KAAK2gC,KAChD,IAAI8hB,GAAQhc,EAAI+b,EAAW/b,GAAK+b,EAAW3/B,MACvC/P,GAAK9S,KAAKy1B,IAAMz1B,KAAKw1B,KAAOitB,EAAOziD,KAAKw1B,IACxB,iBAATmL,IACP7tB,EAAIw7B,KAAKwE,MAAMhgC,EAAI6tB,GAAQA,GAE3B4hB,EACAviD,KAAK+hD,UAAUjvC,GAGf9S,KAAKgiD,MAAMlvC,EAEnB,CACA,SAAAivC,CAAUjvC,GACFoF,MAAMpF,IAAM7N,EAAAA,MAAMsG,OAAOuH,GAGzBA,OAAIpI,IAGCwN,MAAMlY,KAAKw1B,MAAQ1iB,EAAI9S,KAAKw1B,MAC7B1iB,EAAI9S,KAAKw1B,MAERtd,MAAMlY,KAAKy1B,MAAQ3iB,EAAI9S,KAAKy1B,MAC7B3iB,EAAI9S,KAAKy1B,MAGjBz1B,KAAK4V,cAAc,IAAI3M,YAAY,QAAS,CAAEC,OAAQ4J,IAC1D,CACA,iBAAA0I,GACIrc,MAAMqc,oBACNxb,KAAKuJ,iBAAiB,YAAavJ,KAAKkhD,cAAc,GACtDlhD,KAAKuJ,iBAAiB,aAAcvJ,KAAKkhD,aAAc,CAAEnqC,SAAS,EAAOC,SAAS,GACtF,CACA,qBAAAnN,GACI1K,MAAM0K,wBACN7J,KAAK+mC,SAASx9B,iBAAiB4iB,EAAAA,GAAG4H,kBAAkBuX,KAAMtrC,KAAKghD,eAAe,GAC9EhhD,KAAK+mC,SAASx9B,iBAAiB4iB,EAAAA,GAAG4H,kBAAkBsX,KAAMrrC,KAAKqnC,cAAc,GAC7ErnC,KAAK+mC,SAASx9B,iBAAiB4iB,EAAAA,GAAG4H,kBAAkBE,IAAKj0B,KAAK+gD,aAAa,GAC3E/gD,KAAKihD,OAAO13C,iBAAiB,UAAWvJ,KAAKwhD,iBAAiB,GAC9DxhD,KAAKqiD,KAAKnyB,KAAOlwB,KAAKo8C,QAAQp8C,KAAKw1B,KACnCx1B,KAAKoiD,KAAKlyB,KAAOlwB,KAAKo8C,QAAQp8C,KAAKy1B,KAEnC,MAAM6E,EAAUt6B,KAAK2rC,YAAYnd,IAAI,GAChCvpB,EAAAA,MAAMsG,OAAO+uB,KACdA,EAAQ50B,OAAS1F,KAAKihD,OACtB3mB,EAAQnzB,QAAU,CACduzB,QAASxO,EAAAA,WAAaC,GAAGwO,eAAe+nB,MACxCC,eAAe,EACf9nB,SAAU3O,EAAAA,WAAaC,GAAG2O,gBAAgBC,IAC1C9T,MAAOiF,EAAAA,WAAaC,GAAG+O,iBAAiB0nB,OACxCroB,SAAUrO,EAAAA,WAAaC,GAAGqO,gBAAgBC,QAC1CO,WAAY,EAAGC,aAAc,GAEjCj7B,KAAK6iD,mBAGT7iD,KAAKihD,OAAOt/B,SAAW,CAC3B,CACA,eAAAkhC,CAAgBC,EAAa9iD,KAAK8iD,YAC9B,MAAMxoB,EAAUt6B,KAAK2rC,YAAYnd,IAAI,IACpCs0B,EAAa79C,EAAAA,MAAMgM,SAAWhM,QAAMiM,aAAaO,MAAMzR,KAAM,CAACA,KAAM,sBACrEs6B,EAAQ7uB,UAAYq3C,CACxB,CACA,oBAAA30C,GACInO,KAAKyJ,oBAAoB,YAAazJ,KAAKkhD,cAAc,GACzDlhD,KAAKyJ,oBAAoB,aAAczJ,KAAKkhD,aAAc,CAAElqC,SAAS,IAChE/R,EAAAA,MAAMsG,OAAOvL,KAAK+mC,YACnB/mC,KAAK+mC,SAASt9B,oBAAoB0iB,EAAAA,GAAG4H,kBAAkBE,IAAKj0B,KAAK+gD,aAAa,GAC9E/gD,KAAK+mC,SAASt9B,oBAAoB0iB,EAAAA,GAAG4H,kBAAkBsX,KAAMrrC,KAAKqnC,cAAc,GAChFrnC,KAAK+mC,SAASt9B,oBAAoB0iB,EAAAA,GAAG4H,kBAAkBuX,KAAMtrC,KAAKghD,eAAe,IAEhF/7C,EAAAA,MAAMsG,OAAOvL,KAAKihD,SACnBjhD,KAAKihD,OAAOx3C,oBAAoB,UAAWzJ,KAAKwhD,iBAAiB,GAErEriD,MAAMgP,sBACV,CACA,uBAAAP,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,IAC1CA,EAGJ,OAAQvK,GACJ,IAAK,aACDxD,KAAK6iD,gBAAgB/0C,GACrB,MACJ,IAAK,MACL,IAAK,MACI7I,EAAAA,MAAMsG,OAAOvL,KAAKoiD,OAAUn9C,EAAAA,MAAMsG,OAAOvL,KAAKqiD,QAC/CriD,KAAKqiD,KAAKnyB,KAAOlwB,KAAKo8C,QAAQp8C,KAAKw1B,KACnCx1B,KAAKoiD,KAAKlyB,KAAOlwB,KAAKo8C,QAAQp8C,KAAKy1B,MAEvCz1B,KAAK+hD,UAAU/hD,KAAK+S,OACpB/S,KAAKgiD,QAGjB,GAEJx8C,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpD89C,GAAmBv2C,UAAW,cACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpD89C,GAAmBv2C,UAAW,cACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBpH,WACpD69C,GAAmBv2C,UAAW,qBACjC9E,GAAW,CACP0E,QAAM,CACF0J,MAAM,EAAOzJ,UAAW,CACpB2K,QAAUC,IACN,IAAIjC,EAAImF,WAAWlD,GACnB,OAAImD,MAAMpF,GACC,MAEJA,GACRoC,YAAcpC,IAAOA,GAAK,IAAIqC,eAG1C0rC,GAAmBv2C,UAAW,eACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBjH,UACpD09C,GAAmBv2C,UAAW,uBACjC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmByJ,QACpDgtC,GAAmBv2C,UAAW,iBACjC9E,GAAW,CACPka,EAAAA,UAAU,kBACXmhC,GAAmBv2C,UAAW,iBACjC9E,GAAW,CACPka,EAAAA,UAAU,qBACXmhC,GAAmBv2C,UAAW,oBACjC9E,GAAW,CACPka,EAAAA,UAAU,kBACXmhC,GAAmBv2C,UAAW,iBACjC9E,GAAW,CACPka,YAAU,GAAGpU,EAAAA,gBACdu1C,GAAmBv2C,UAAW,eACjC9E,GAAW,CACPka,YAAU,GAAGpU,EAAAA,gBACdu1C,GAAmBv2C,UAAW,eACjC9E,GAAW,CACPka,YAAU,GAAGpU,EAAAA,gBACdu1C,GAAmBv2C,UAAW,mBACjC9E,GAAW,CACPka,YAAU,GAAGpU,EAAAA,kBACdu1C,GAAmBv2C,UAAW,sBACjCu2C,GAAqBr7C,GAAW,CAC5BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,UACbyP,SAAU,eAAenM,EAAAA,mBAAmBA,EAAAA,iBAAiBtD,EAAAA,sDAAsDA,4FAEpHA,EAAAA,kBAAkBsD,kHAEjBtD,oBACDA,EAAAA,sDAAsDA,8CAC3BA,EAAAA,yCAAyCA,iCAExEA,oCAAkCA,EAAAA,gBAAgBA,EAAAA,qCAAqC3B,aAAWo5C,2EAA2Ez3C,iBAC7KA,oBAAkBA,EAAAA,kCAAkCA,EAAAA,yCAAyCA,EAAAA,YAAYA,iBAAeA,EAAAA,mBAEnHsP,OAAQC,EAAAA,SAASC,mBAEtB+lC,IC1RH,IAAIr7C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,MAAMg9C,WAA8BhkD,EAAAA,iBAChC,WAAAC,CAAY8T,GACR5T,MAAM,mBAAoB,CAAE8jD,cAAelwC,GAC/C,EAIJ,IAAImwC,GAAsB,cAAkC5qC,EACxD,WAAArZ,GACIE,SAAS4G,WACT/F,KAAKmjD,kBAAqBn6C,IACtBA,EAAI2T,iBACC3c,KAAKyL,UACNzL,KAAKi6B,SAASmpB,UAGtBpjD,KAAKqtB,iBAAoBrkB,IACrBA,EAAI2T,iBACJ3c,KAAKigB,KAAOjgB,KAAKguB,OAAOjb,MAAQ,GAChC/S,KAAK+S,WAAQ,EACb/S,KAAKqjD,OAAO,MACZrjD,KAAK4V,cAAc,IAAIotC,GAAsB,QAEjDhjD,KAAKsjD,qBAAwBt6C,IACzB/D,EAAAA,MAAMgM,SAASjR,KAAKujD,UAAW,eAEnCvjD,KAAKwjD,sBAAyBx6C,IAC1B/D,EAAAA,MAAMiM,YAAYlR,KAAKujD,UAAW,eAEtCvjD,KAAKwd,cAAiBxU,IAClB,OAAQA,EAAI8B,SACR,KAAK,EACL,KAAK,GACD,MACJ,QACI9K,KAAKqjD,OAAO,MACZrjD,KAAKigB,KAAOjgB,KAAKguB,OAAOjb,MACxB/S,KAAK4V,cAAc,IAAIotC,GAAsB,SAIzDhjD,KAAK6K,cAAiB7B,IACdhJ,MAAKyjD,IACL53C,EAAAA,aAAa7C,GACbhJ,MAAKyjD,GAAgB,IAG7BzjD,KAAKoc,cAAiBpT,IAClB,GAAIhJ,KAAK0jD,aAAc,CAEnB16C,EAAI2T,iBACY3c,KAAKi6B,SACR0pB,QAIT3jD,KAAKmqB,SAHLnqB,KAAK4mC,OAKb,CACA,MAAMgd,EAAa5jD,KAAKguB,OAAOjb,MAC3B/S,KAAKwU,WAAaovC,GAClB5jD,KAAKgoC,aAIbhoC,KAAKsc,aAAgBtT,IACjBhJ,KAAK40C,SAET50C,MAAKyjD,GAAgB,EACrBzjD,KAAKwhD,gBAAmBx4C,IACpB,IAAI66C,GAAU,EACd,GAAI5+C,QAAMsG,OAAOvL,MAAK8jD,GAAgB,CAClC,MAAMzgC,EAAKrjB,KAAK+jD,8BAChB,IAAK9+C,EAAAA,MAAMsG,OAAO8X,GACd,OAAQra,EAAI8B,SACR,KAAK,GAGDe,EAAAA,aAAa7C,GACbhJ,KAAKqjD,OAAOhgC,GACZ,MACJ,KAAK,GACDxX,EAAAA,aAAa7C,GACb66C,GAAU,EACsB,IAA5B7jD,MAAK4Y,EAAYhY,OACjBZ,KAAK2/C,QAAQt8B,GAGbrjB,KAAKqjD,OAAOhgC,GAKhC,KACK,CACD,IAA0C3d,EAAtCs+C,EAAKhkD,MAAK8jD,EAAeG,EAASD,EACtC,MAAME,EAAiBhkD,IAAO+E,EAAAA,MAAMsG,OAAOrL,IAAsB,OAAhBA,EAAEozB,WAAqD,SAA/BpzB,EAAEyoC,QAAuB,cAAcwb,EAAkBjkD,IAAO+E,EAAAA,MAAMsG,OAAOrL,IAAsB,OAAhBA,EAAEozB,WAAqD,SAA/BpzB,EAAEyoC,QAAuB,cAC7M,OAAQ3/B,EAAI8B,SACR,KAAK,GACDe,EAAAA,aAAa7C,GACb,GAEI,GAAIm7C,EADJF,EAASA,EAAOG,wBACY,CACxB1+C,EAASu+C,EACT,KACJ,QACKC,EAAcD,IACvBv+C,IAAWs+C,EACX,MACJ,KAAK,GACDn4C,EAAAA,aAAa7C,GACb,GAEI,GAAIm7C,EADJF,EAAUA,EAAyB,oBACP,CACxBv+C,EAASu+C,EACT,KACJ,QACKC,EAAcD,IACvBv+C,IAAWs+C,EACX,MACJ,KAAK,GACDn4C,EAAAA,aAAa7C,GACbhJ,KAAK40C,QACL50C,KAAKmqB,SACL,MACJ,KAAK,EACL,KAAK,GAEDte,EAAAA,aAAa7C,GACb66C,GAAU,EACV7jD,KAAK2/C,UAGb3/C,KAAKqjD,OAAO39C,GACZ1F,MAAKyjD,EAAgBI,CACzB,GAEJ7jD,KAAKqkD,eAAkBr7C,IACnB6C,EAAAA,aAAa7C,GACbhJ,KAAK2/C,QAAQ32C,EAAIoC,eAEzB,CACA,eAAIoL,GACA,MAAO,CAACxW,KAAKguB,OACjB,CACA,WAAAtX,CAAY5I,2BACqB9N,KAAKo/B,UAAan6B,EAAAA,MAAMC,cAAclF,KAAK4Y,cACpE5Y,KAAKguB,OAAOjb,MAAQ/S,KAAKyU,aAAa3G,KAAS9N,KAAKskD,UAAYtkD,KAAKguB,OAAOjb,MAAQ,IAE5F,CACA,YAAA0B,CAAa3G,GACT,IAAIy2C,EAAaplD,MAAMsV,aAAa3G,GAIpC,OAHI7I,EAAAA,MAAMC,cAAcq/C,IAAevkD,KAAKo/B,WAAan6B,EAAAA,MAAMC,cAAc4I,KACzEy2C,EAAavkD,KAAKwZ,qBAAqB1L,IAEpCy2C,CACX,CACA,QAAA1uC,CAAS7M,GACL,OAAO,IAAI8C,QAAQ,CAACyD,EAASC,KAEzB,GAAiB,qBAAbxG,EAAInG,KAA6B,CACjC,MAAMiL,EAAM9E,EAAIE,OAAO+5C,cACvBjjD,KAAK+S,MAAQjF,EACTA,GACA9N,KAAKmqB,SAET5a,EAAQzB,EACZ,MAGIyB,EAAQvP,KAAK+S,QAGzB,CACA,qBAAAlJ,GACI1K,MAAM0K,wBACN7J,KAAKwkD,mBACLxkD,KAAKioC,qBACL,IAAI3N,EAAUt6B,KAAKykD,iBACnBnqB,EAAQtrB,YAAYhP,KAAKiyB,WACzBjyB,KAAK0kD,cAAcpqB,GACLvwB,EAAAA,mBAAmBylB,kBAAkBxvB,MAC7CgP,YAAYsrB,GAClBt6B,KAAKi6B,SAAWK,EAChBt6B,KAAKguB,OAAOzkB,iBAAiB,YAAavJ,KAAKoc,eAAe,GAC9Dpc,KAAKguB,OAAOzkB,iBAAiB,UAAWvJ,KAAKwhD,iBAAiB,GAC9DxhD,KAAKguB,OAAOzkB,iBAAiB,QAASvJ,KAAK6K,eAAe,GAC1D7K,KAAKguB,OAAOzkB,iBAAiB,QAASvJ,KAAKoc,eAAe,GAC1Dpc,KAAKguB,OAAOzkB,iBAAiB,OAAQvJ,KAAKsc,cAAc,GACxDtc,KAAKguB,OAAOzkB,iBAAiB,QAASvJ,KAAKwd,eAAe,GAC1Dxd,KAAK2kD,UAAUp7C,iBAAiB,YAAavJ,KAAKqtB,kBAAkB,GACpErtB,KAAKujD,UAAUh6C,iBAAiB,YAAavJ,KAAKmjD,mBAAmB,GACrEnjD,KAAKgoC,YACLhoC,KAAK4kD,cACT,CACA,uBAAAh3C,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,GADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GAC1C9I,QAAMsG,OAAOvL,KAAKi6B,UAClB,OAEJ,MAAM4qB,EAAS7kD,KAAKskD,UACpB,OAAQ9gD,GACJ,IAAK,oBACIyB,EAAAA,MAAMC,cAAc4I,GASrB9N,KAAKmqB,SARA06B,EAID7kD,KAAK4mC,QAHL5mC,KAAKguB,OAAOjb,MAAQ/S,KAAKyU,aAAazU,KAAK+S,OASnD,MACJ,IAAK,OACI8xC,GAAU/2C,IAAQ9N,KAAKguB,OAAOjb,QAC/B/S,KAAKguB,OAAOjb,MAAQjF,EACpB9N,MAAK8jD,EAAgB,MAEzB,MACJ,IAAK,WAED9jD,KAAKwkD,mBAET,IAAK,WACL,IAAK,QACDxkD,KAAK0kD,gBACL,MACJ,IAAK,eACI32C,GACD/N,KAAKioC,qBAET,MACJ,IAAK,cACIl6B,GACD/N,KAAKwkD,mBAIb,CAAC,oBAAqB,OAAQ,SAASxyC,QAAQxO,IAAS,GACxDxD,KAAKgoC,YAEL,CAAC,cAAe,QAAS,QAAQh2B,QAAQxO,IAAS,GAClDxD,KAAK4kD,cAEb,CACA,oBAAAz2C,GACSlJ,EAAAA,MAAMsG,OAAOvL,KAAKi6B,YACnBj6B,KAAKi6B,SAASxwB,oBAAoB,QAASzJ,KAAKsjD,sBAAsB,GACtEtjD,KAAKi6B,SAASxwB,oBAAoB,SAAUzJ,KAAKwjD,uBAAuB,GACxExjD,KAAKi6B,SAAS5iB,UAEbpS,EAAAA,MAAMsG,OAAOvL,KAAKguB,UACnBhuB,KAAKguB,OAAOvkB,oBAAoB,YAAazJ,KAAKoc,eAAe,GACjEpc,KAAKguB,OAAOvkB,oBAAoB,QAASzJ,KAAKoc,eAAe,GAC7Dpc,KAAKguB,OAAOvkB,oBAAoB,OAAQzJ,KAAKsc,cAAc,GAC3Dtc,KAAKguB,OAAOvkB,oBAAoB,UAAWzJ,KAAKwhD,iBAAiB,GACjExhD,KAAKguB,OAAOvkB,oBAAoB,QAASzJ,KAAK6K,eAAe,GAC7D7K,KAAKguB,OAAOvkB,oBAAoB,QAASzJ,KAAKwd,eAAe,IAE5DvY,EAAAA,MAAMsG,OAAOvL,KAAK2kD,YACnB3kD,KAAK2kD,UAAUl7C,oBAAoB,YAAazJ,KAAKqtB,kBAAkB,GAEtEpoB,EAAAA,MAAMsG,OAAOvL,KAAKujD,YACnBvjD,KAAKujD,UAAUh6C,iBAAiB,YAAavJ,KAAKmjD,mBAAmB,GAEzEhkD,MAAMgP,sBACV,CACAyK,GACA,SAAAovB,GACI,IAAK/iC,EAAAA,MAAMsG,OAAOvL,KAAKiyB,WAAY,CAC/B,MAAMtZ,EAAK3Y,MAAK4Y,EAAc5Y,KAAK8kD,QAAQ9kD,KAAK8Y,kBAAmB9Y,KAAKguB,OAAOjb,OAC/E/S,KAAKiyB,UAAUrZ,WAAaD,CAChC,CACJ,CACA,YAAAisC,GACS3/C,EAAAA,MAAMsG,OAAOvL,KAAKujD,aAEnBvjD,KAAKujD,UAAU/yB,MAA4B,IAArBxwB,KAAK+kD,cAA0B9/C,QAAMC,cAAclF,KAAKguB,OAAOjb,OAAS/S,KAAK+S,QAElG9N,EAAAA,MAAMsG,OAAOvL,KAAK2kD,aAEnB3kD,KAAK2kD,UAAUn0B,KAAOxwB,KAAKkX,UAAYjS,EAAAA,MAAMC,cAAclF,KAAKguB,OAAOjb,OAAS/S,KAAK+S,OAE7F,CACA,aAAIuxC,GACA,OAAOr/C,EAAAA,MAAM+/C,GAAGhlD,KAAKguB,OAAQ,SACjC,CACA,KAAA4mB,GACI50C,KAAKqjD,OAAO,MACZrjD,KAAKigB,KAAOjgB,KAAKguB,OAAOjb,MAAQ/S,KAAKyU,aAAazU,KAAK+S,QAAU,EACrE,CACA,2BAAAgxC,GACI,IAAI1gC,EACJ,IAA8B,IAA1BrjB,KAAKi6B,SAAS0pB,UAAqB1+C,EAAAA,MAAMsG,OAAO8X,EAAKrjB,KAAKiyB,UAAU5mB,cAAc,YAClF,MAAQpG,EAAAA,MAAMsG,OAAO8X,IAAuC,SAAhCA,EAAGslB,QAAuB,eAAiC,OAAjBtlB,EAAGiQ,WACrEjQ,EAAKA,EAAGkF,mBAGhB,OAAOlF,CACX,CACAogC,GACA,gBAAAe,CAAiBO,EAAc/kD,KAAK+kD,aAChC/kD,KAAKguB,OAAOsC,WAAay0B,GAAe,EAC5C,CACA,kBAAA9c,GACI,GAAIjoC,KAAKs/B,wBAAwBuK,oBAAqB,CAClD,MAAM1sB,EAAOnd,KAAKs/B,aAAawK,WAAU,GAAMjpC,QACzCkpC,EAAOt7B,SAASC,cAAc,YAC9Bs1C,EAAKv1C,SAASC,cAAc,MAClCs1C,EAAGt/B,OAAOvH,GACV4sB,EAAKlpC,QAAQmO,YAAYg1C,GACzBhkD,KAAKilD,WAAWv/C,OAASqkC,CAC7B,MAEI/pC,KAAKilD,WAAWv/C,OAAS1F,KAAKmqC,gBAEtC,CACA2Z,GACA,MAAAT,CAAOhgC,GACH,GAAIrjB,KAAK0jD,aACL,OAEJ,GAAIz+C,EAAAA,MAAMsG,OAAO8X,GAEb,YADArjB,MAAK8jD,EAAgB,MAGzB,MAAMoB,EAAW7hC,EAAG5N,cAAcuS,SAClC,IAAK,IAAIlnB,EAAI,EAAGA,EAAIokD,EAAStkD,OAAQE,IAAK,CACtC,MAAM+W,EAAOqtC,EAASrtC,KAAK/W,GAC3B,GAAI+W,IAASwL,EAAI,CACbxL,EAAK8wB,QAAsB,aAAI,OAC/B3oC,MAAK8jD,EAAgBjsC,EACrB,MAAMqX,EAAQlvB,KAAKguB,OAAQxZ,EAAY0a,EAAMnc,MAAQhS,KAAKd,MAAM4X,EAAK8wB,QAAwB,gBAC7FzZ,EAAMi2B,kBAAkB3wC,EAAU5T,OAAQ4T,EAAU5T,OACxD,aAEWiX,EAAK8wB,QAAsB,YAE1C,CACJ,CACA,OAAAgX,CAAQt8B,EAAKrjB,MAAK8jD,GACd,MAAM/wC,EAAQhS,KAAKd,MAAMojB,EAAGslB,QAAoB,YAA+C,SAAhCtlB,EAAGslB,QAAuB,eAErF3oC,KAAK4V,cAAc,IAAIotC,GAAsBjwC,GAErD,CACA,OAAA+xC,CAAQnsC,EAAIsH,EAAMlN,EAAQ/S,KAAK+S,OAC3B,IAAI6F,EAAaD,GAAM,GAIvB,IAAK1T,EAAAA,MAAMC,cAAc+a,GAAQA,EAAK9F,QAAS,CAC3C,MAAMirC,EAAanlC,EAAK7d,cAAc8X,MAAM,KAC5C,IAAImrC,EAAWzsC,EAAWG,OAAO3S,IAC7B,IAAK,IAAIk/C,KAAaF,EAAY,CAC9B,GAAIh/C,EAAEoO,WAAWpS,cAAc4P,QAAQszC,IAAc,EACjD,OAAO,EAGX,MAAMlhC,EAAUpkB,KAAKy/B,aACrB,IAAKx6B,EAAAA,MAAMC,cAAckf,GAAU,CAC/B,MAAMmhC,EAAQn/C,EAAEsT,KAChB,GAAqB,iBAAV6rC,IAAuBtgD,EAAAA,MAAMC,cAAcqgD,GAClD,IAAK,IAAIxsC,KAAUqL,EAAS,CACxB,MAAMohC,EAAezsC,EAAOmB,MAAM,KAClC,IAAIpZ,EAAI,EACJiS,EAAQwyC,EACZ,MAAQtgD,EAAAA,MAAMsG,OAAOwH,IAAUjS,EAAI0kD,EAAa5kD,QAC5CmS,EAAQA,EAAMyyC,EAAa1kD,IAC3BA,IAEJ,IAAImE,EAAAA,MAAMC,cAAc6N,IAGpBA,EAAMoC,WAAW/S,cAAc4P,QAAQszC,IAAc,EACrD,OAAO,CAEf,CAER,CACJ,CACA,OAAO,IAQX1sC,EANoB5Y,KAAKo/B,UAElBn6B,QAAMC,cAAclF,KAAKuZ,gBACzBtU,QAAMC,cAAclF,KAAKyZ,gBAExBxU,EAAAA,MAAMC,cAAcmgD,IAAapgD,EAAAA,MAAMsG,OAAO85C,EAAShsC,KAAKjT,GAAKA,EAAEoO,YAAcyL,KAC9D,CAAC,CAAElN,MAAOkN,EAAMzL,UAAWyL,EAAMvG,KAAMuG,IAAQqsB,OAAO+Y,GAAYA,CACjG,CACA,IAAI5jD,EAASmX,EAWb,OAVyB,IAArB5Y,KAAK+kD,cAELtjD,EAASmX,EAAW8Z,MAAM,EAAG1yB,KAAK2/B,gBAAkB,KAGpD3/B,KAAKskD,WACLtkD,KAAK4mC,QAET5mC,KAAKi6B,SAASrX,MAAM6iC,QAAUxgD,EAAAA,MAAMC,cAAczD,GAAU,IAAM,GAClEzB,KAAK0S,IAAIC,EAAAA,QAAQC,SAASC,IAAK,GAAGpR,EAAOb,8CAA8Cqf,WAActH,GAAM,IAAI/X,2BACxGa,CACX,CACA,WAAA2xB,CAAYpqB,GACR,MAAMg7C,EAAKh7C,EAAIE,OAAOslB,IAAInV,KAAKjT,GAAKA,aAAas/C,eAC3C7tC,EAAO7O,EAAIE,OAAO2O,KACV7O,EAAIE,OAAOjB,MACzB,MAAMwD,GAA6B,IAAlBoM,EAAKpM,SACtBu4C,EAAGriC,SAAWlW,GAAW,EAAK,EAC9Bu4C,EAAGrb,QAAoB,WAAI5nC,KAAKyyB,UAAU3b,EAAK9E,OAC/CixC,EAAGrb,QAAwB,eAAI5nC,KAAKyyB,UAAU3b,EAAKrD,WACnDwvC,EAAGrb,QAAuB,cAAIl9B,EAAS0J,WACvC6uC,EAAGz6C,iBAAiB,YAAavJ,KAAKqkD,gBAAgB,EAC1D,CACA,WAAA1a,CAAY3gC,GACGA,EAAIE,OAAOslB,IAAInV,KAAKjT,GAAKA,aAAas/C,eAC9Cj8C,oBAAoB,YAAazJ,KAAKqkD,gBAAgB,EAC7D,CACA,kBAAA1tC,CAAmBO,GACflX,KAAKsxB,KAAK/S,QAAUrH,EACpBlX,KAAKguB,OAAOzP,OAASrH,EACjBA,EACAlX,KAAK2kD,UAAUn0B,KAAOxwB,KAAKujD,UAAU/yB,MAAO,EAG5CxwB,KAAK4kD,cAEb,CAIA,KAAAhe,CAAM+e,EA7akB,MA8af1gD,EAAAA,MAAMC,cAAclF,KAAK8Y,oBAAsB7T,EAAAA,MAAMuG,UAAUxL,OAEhEA,KAAKi6B,UAAU2M,MAAM+e,EAE7B,CACA,MAAAx7B,CAAOw7B,EAlbkB,GAmbrB3lD,MAAK8jD,EAAgB,KACrB9jD,KAAKi6B,UAAU9P,OAAOw7B,EAC1B,CACA,aAAAjB,CAAcpqB,EAAUt6B,KAAKi6B,UACzB,IAAKh1B,EAAAA,MAAMsG,OAAO+uB,GAAU,CACxB,MAAMiX,GAAYtsC,QAAMC,cAAclF,KAAK+S,SAAW9N,EAAAA,MAAMC,cAAclF,KAAKguB,OAAOjb,OACtFunB,EAAQ7uB,SAAW8lC,GAAYvxC,KAAKkX,UAAYlX,KAAKyL,WAAiD,CAC1G,CACJ,CACA,cAAAg5C,GAGI,MAAMnqB,EAAU7rB,SAASC,cAAcpD,EAAAA,EAAI,YAc3C,OAbArG,QAAMgM,SAASqpB,EAAS,oBACxBA,EAAQnzB,QAAU,CACdw7C,eAAe,EACfjoB,QAASxO,EAAAA,WAAaC,GAAGwO,eAAe+nB,MACxC7nB,SAAU3O,EAAAA,WAAaC,GAAG2O,gBAAgB8qB,aAC1C5yB,KAAM9G,EAAAA,WAAaC,GAAG05B,cAAcC,MACpC7+B,MAAOiF,EAAAA,WAAaC,GAAG+O,iBAAiBlH,MACxCuG,SAAUrO,EAAAA,WAAaC,GAAGqO,gBAAgBurB,KAC1C/qB,WAzcgB,IAyciBC,aAxchB,GA0crBX,EAAQ/wB,iBAAiB,QAASvJ,KAAKsjD,sBAAsB,GAC7DhpB,EAAQ/wB,iBAAiB,SAAUvJ,KAAKwjD,uBAAuB,GAC/DlpB,EAAQ50B,OAAS1F,KAAKguB,OACfsM,CACX,GAEJ90B,GAAW,CACPka,EAAAA,UAAU,qBACXwjC,GAAoB54C,UAAW,iBAClC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,cACf43C,GAAoB54C,UAAW,oBAClC9E,GAAW,CACPka,EAAAA,UAAU,QAAQ9Q,EAAAA,kBACnBs0C,GAAoB54C,UAAW,eAClC9E,GAAW,CACPka,EAAAA,UAAU,aACXwjC,GAAoB54C,UAAW,2BAClC9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,oBACf43C,GAAoB54C,UAAW,qBAClC9E,GAAW,CACPka,YAAU,GAAGpU,EAAAA,qBACd43C,GAAoB54C,UAAW,oBAClC9E,GAAW,CACPka,YAAU,GAAGpU,EAAAA,oBACd43C,GAAoB54C,UAAW,oBAClC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvC+/C,GAAoB54C,UAAW,eAClC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDmgD,GAAoB54C,UAAW,yBAClC9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCkgD,GAAoB54C,UAAW,sBAClC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBpH,WACpDkgD,GAAoB54C,UAAW,uBAClC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBC,WACpD64C,GAAoB54C,UAAW,uBAClC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmB47C,eACpD9C,GAAoB54C,UAAW,uBAClC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBpH,WACpDkgD,GAAoB54C,UAAW,mBAClC44C,GAAsB19C,GAAW,CAC7BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,WAAYsP,OAAQC,EAAAA,SAASC,gBAC1CC,SAAU,eAAenM,8CAA4CA,EAAAA,oBAC1EtD,uDACkBsD,EAAAA,oGAAoGA,8DACtFtD,iBAChCA,+CAC8BsD,EAAAA,oGAAoGA,sFAC1EtD,qCAE5CsD,EAAAA,mBAAmBtD,2CAAyCA,EAAAA,oBACxEA,EAAAA,iBAAiB3B,EAAAA,WAAWmqB,8DAA8DnqB,EAAAA,WAAW+iC,gFAE7FphC,EAAAA,sBAAsBA,qCAE7BA,EAAAA,eAAeA,iBAAeA,EAAAA,oCAEvBA,EAAAA,0EAA0EA,iCAGlF43C,IC/hBH,IAAI19C,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAIA,MAAMigD,WAAuBjnD,EAAAA,iBACzB,WAAAC,CAAY8T,GACR5T,MAAM,YAAa,CAAE8I,MAAO8K,GAChC,EAEJ,MAAMmzC,WAAoBlnD,EAAAA,iBACtB,WAAAC,CAAY8T,GACR5T,MAAM,SAAU,CAAE4T,MAAOA,GAC7B,EAEJ,IAAIozC,GAAkB,cAA8Bx8C,EAAAA,WAAWC,aAC3D,uBAAAgE,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,WACD,IAAI0T,IAAapJ,GAChBoJ,EAAWjS,EAAAA,MAAMgM,SAAWhM,EAAAA,MAAMiM,aAAalR,KAAM,gBACtDA,KAAKomD,KAAK36C,SAAWzL,KAAKomD,KAAK51B,KAAOtZ,EACtC,MACJ,IAAK,MACDjS,QAAMiM,YAAYlR,KAAM,WAGpC,CACA,OAAAqmD,GAEIphD,QAAMgM,SADMjR,KACQ,WACpBiF,QAAMmrB,wBAFMpwB,KAEuB,KAC/BA,KAAKwM,cAAc,IAAIhE,MAAM,YAErC,GAEJhD,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCgjD,GAAgB77C,UAAW,cAC9B9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBpH,WACpDmjD,GAAgB77C,UAAW,mBAC9B9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,YACf66C,GAAgB77C,UAAW,eAC9B67C,GAAkB3gD,GAAW,CACzBwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,OAAQsP,OAAQC,EAAAA,SAASC,gBACtCC,SAAU,IAAIzP,qCAAmCA,EAAAA,6BACtCA,EAAAA,yCAAyCA,EAAAA,eAEzD66C,IAEH,IAAIG,GAAmB,cAA+BhuC,EAClD,WAAArZ,GACIE,OAAM,GACNa,KAAKwW,YAAc,EACvB,CACA,kBAAAG,CAAmBO,GACflX,KAAKwjC,SAAStsB,SAAWA,EACzBlX,KAAKqL,cAAc,YAAYkT,OAASrH,CAC5C,CACA,UAAAqvC,CAAWtzC,GACPjT,KAAK4V,cAAc,IAAIqwC,GAAehzC,GAC1C,CACA,OAAAuzC,CAAQ1zC,GACJ9S,KAAK4V,cAAc,IAAIswC,GAAYpzC,GAEvC,CACA,wBAAAmG,GAEA,CACA,uBAAArL,CAAwBpK,EAAMqK,EAAKC,EAAKC,GAEpC,OADA5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACtCvK,GACJ,IAAK,aACL,IAAK,eACDxD,KAAKwjC,SAAShgC,GAAQsK,EACtB,MACJ,IAAK,gBAED,IAAK7I,EAAAA,MAAMC,cAAc4I,GACrB,KAAM,iCAAiC9N,KAAKf,YAAYuE,SAE5D,MACJ,IAAK,QACDxD,KAAKymD,MAAM7tC,WAAa9K,EAGpC,CACA,QAAA+H,CAAS7M,GACL,OAAO,IAAI8C,QAAQ,CAACyD,EAASC,KACzB,OAAQxG,EAAInG,MACR,IAAK,YACD7C,KAAK0mD,iBAAkB,EACvB,MAAkBC,EAAL39C,EAAmBE,OAAOjB,MAEvC2+C,EAAS3hD,EAAAA,MAAM4uB,MAAM7zB,KAAK+S,OACpB8zC,EAASD,EAAO1zC,OAAOyzC,EAAS,GAAIG,EAASF,EAAO1zC,OAAO,EAAGyzC,GACpEp3C,EAAQvP,KAAK+S,MAAQ+zC,EAAOxa,OAAOua,IACnC,MACJ,IAAK,SACD,MAAM9zC,EAAQ/J,EAAIE,OAAO6J,MAEzBg0C,EAAS9hD,EAAAA,MAAM4uB,MAAM7zB,KAAK+S,OAC1B,IACC9N,EAAAA,MAAMC,cAAc6N,KAEb/S,KAAKq/B,iBAAmBp6B,QAAMC,cAAc6hD,GAAUA,EAAO1tC,KAAKjT,GAAKpG,KAAKwZ,qBAAqBpT,IAAMpG,KAAKwZ,qBAAqBzG,MAAW,CAChJ,IAAIi0C,GAAYD,GAAU,IAAIza,OAAO,CAACv5B,IACtCxD,EAAQvP,KAAK+S,MAAQi0C,GACrBhnD,KAAK0mD,gBAAkB1mD,KAAK+S,MAAMnS,OAAS,EAC3Co4B,WAAW,KACPh5B,KAAKwjC,SAASlsB,SACf,KAEHtX,KAAKwjC,SAASptB,OACdpW,KAAKwjC,SAASvjB,KAAO,GACrBjgB,KAAKwjC,SAAS74B,OAClB,CACA,MACJ,QACI4E,EAAQvP,KAAK+S,SAI7B,CACA,WAAA2D,CAAY5I,GAEZ,GAEJtI,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBjH,UACvCmjD,GAAiBh8C,UAAW,eAC/B9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBpH,WACpDsjD,GAAiBh8C,UAAW,0BAC/B9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBpH,WACvCsjD,GAAiBh8C,UAAW,mBAC/B9E,GAAW,CACP0E,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBrH,UACvCujD,GAAiBh8C,UAAW,0BAC/B9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,aACfg7C,GAAiBh8C,UAAW,mBAC/B9E,GAAW,CACPka,EAAAA,UAAUpU,EAAAA,EAAI,aAAesD,EAAAA,KAAO,UACrC03C,GAAiBh8C,UAAW,gBAC/Bg8C,GAAmB9gD,GAAW,CAC1BwO,gBAAc,CACVC,QAAS3I,EAAAA,EAAI,QAASsP,OAAQC,EAAAA,SAASC,gBACvCC,SAAU,IAAIzP,uBAAqBsD,EAAAA,+BAC1BA,EAAAA,aAAaA,qBAAmBA,EAAAA,qFAExBA,kCACNtD,EAAAA,+LAA+LA,gGAInMA,EAAAA,uHAAuHsD,0GACnHtD,EAAAA,eAAeA,+BAClBA,6CAGZA,EAAAA,iBAEDg7C,IC5KH,IAAI9gD,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAKA,IAAIihD,GAAuB,cAAmCvZ,GAC1D,WAAAzuC,GACIE,SAAS4G,WACT/F,KAAKknD,KAAO,EACZlnD,KAAKmnD,KAAO,EAChB,CAEA,yBAAI9wC,GACA,OAAO,CACX,CACA,kBAAAM,CAAmBO,GACflX,KAAKuwB,MAAMhS,QAAUrH,EACrBlX,KAAKguB,OAAOzP,OAASrH,CACzB,CACA,eAAIV,GACA,MAAO,CAACxW,KAAKguB,OACjB,CACA,uBAAApgB,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACjC,SAATvK,GACY,SAATA,GACHxD,KAAKuW,WAAW1H,aAAarL,EAAMsK,EAE3C,GAEJtI,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDkkD,GAAqB38C,UAAW,eACnC9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDkkD,GAAqB38C,UAAW,eACnC9E,GAAW,CACPka,EAAAA,UAAU,aACXunC,GAAqB38C,UAAW,iBACnC9E,GAAW,CACPka,EAAAA,UAAU,QAAQ9Q,EAAAA,kBACnBq4C,GAAqB38C,UAAW,gBACnC28C,GAAuBzhD,GAAW,CAC9BwO,gBAAc,CAAEC,QAAS3I,EAAAA,EAAI,YAAayP,SAAU,oBAAoBnM,kCAAgCwL,iBAAkCxL,qBAAmBtD,EAAAA,yCAAyCA,EAAAA,iBAAkBsP,OAAQC,EAAAA,SAASC,mBAC1OmsC,ICjDH,IAAIzhD,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUnF,OAAQoF,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOhC,OAAOqC,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAW7E,OAAS,EAAGwF,GAAK,EAAGA,KAASP,EAAIJ,EAAWW,MAAIJ,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKpC,OAAOyC,eAAeX,EAAQC,EAAKK,GAAIA,CAChE,EAMA,IAAIohD,GAA+B,cAA2C1Z,GAC1E,WAAAzuC,CAAYq6B,EAAM,IAAI3vB,EAAAA,WAAWwiB,GAAGoN,iBAChCp6B,QACAa,KAAKs5B,IAAMA,EACXt5B,KAAKknD,KAAO,EACZlnD,KAAKmnD,KAAO,GACZnnD,KAAKwhD,gBAAmBx4C,IACpB,GAAoB,IAAhBA,EAAI8B,QAAyB,CAC7B,MAAMokB,EAAQlvB,KAAKkvB,MAAOnc,EAAQmc,EAAMnc,MACxC,IAAIE,EAAMic,EAAMm4B,eAChBn4B,EAAMnc,MAAQA,EAAMgR,OAAO,EAAG9Q,GAAO,OAASF,EAAMgR,OAAO9Q,GAC3Dq0C,EAAAA,sBAAsBt+C,EAC1B,EAER,CACA,kBAAA2N,CAAmBO,GACflX,KAAKkvB,MAAM3Q,OAASrH,CACxB,CAEA,yBAAIb,GACA,OAAO,CACX,CACA,eAAIG,GACA,MAAO,CAACxW,KAAKkvB,MACjB,CACA,YAAAza,CAAa3G,GACT,OAAO9N,KAAKs5B,IAAI8B,OAAOttB,EAC3B,CACA,uBAAAF,CAAwBpK,EAAMqK,EAAKC,EAAKC,GACpC5O,MAAMyO,wBAAwBpK,EAAMqK,EAAKC,EAAKC,GACjC,SAATvK,GACY,SAATA,EACHxD,KAAKuW,WAAW1H,aAAarL,EAAMsK,GAEtB,aAARtK,IACLxD,KAAKunD,UAAUx4C,UAAYjB,EAEnC,CACA,qBAAAjE,GACI1K,MAAM0K,wBACN7J,KAAKkvB,MAAM3lB,iBAAiB,UAAWvJ,KAAKwhD,iBAAiB,EACjE,CACA,oBAAArzC,GACInO,KAAKkvB,OACDlvB,KAAKkvB,MAAMzlB,oBAAoB,UAAWzJ,KAAKwhD,iBAAiB,GACpEriD,MAAMgP,sBACV,GAEJ3I,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDqkD,GAA6B98C,UAAW,eAC3C9E,GAAW,CACP0E,EAAAA,MAAM,CAAE0J,MAAM,EAAOzJ,UAAWC,EAAAA,mBAAmBrH,UACpDqkD,GAA6B98C,UAAW,eAC3C9E,GAAW,CACPka,EAAAA,UAAU,aACX0nC,GAA6B98C,UAAW,gBAC3C9E,GAAW,CACPka,EAAAA,UAAU,OAAO9Q,EAAAA,kBAClBw4C,GAA6B98C,UAAW,oBAC3C88C,GAA+B5hD,GAAW,CACtCwO,gBAAc,CAAEC,QAAS3I,IAAI,qBAAsByP,SAAU,oBAAoBnM,EAAAA,gCAAgCwL,gBAAiCxL,EAAAA,iBAAiBA,EAAAA,wBAAyBgM,OAAQC,EAAAA,SAASC,mBAC9MssC,uQV9DgC,iBADN,27FPEtB,yJkBVPI,EAAAA,WAAWC,MAAMC"}
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, '&lt;').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 &copy; <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","OpenApiParser","_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","Picture","DeepMerger","merge","Output"],"mappings":"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"}